Fork me on GitHub

连接数管理

连接池 show variables like "thread%"; +-------------------+---------------------------+ | Variable_name | Value | +-------------------+---------------------------+ | thread_cache_size | 9 | | thread_handling | one-thread-per-connection | | thread_stack | 286720 | +-------------------+---------------------------+ 3 rows in set (0.01 sec) 全局设置 -- 查看全局连接 show variables like "%connections%"; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 151 | | max_user_connections | 0 | | mysqlx_max_connections | 100 | +------------------------+-------+ -- 超级用户连接 show variables like "admin_%"; +------------------------+-------------------------------+ | Variable_name | Value | +------------------------+-------------------------------+ | admin_address | 127.0.0.1 | | admin_port | 33062 | -- 运行状态 show status like "thread%"; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_cached | 0 | | Threads_connected | 1 | | Threads_created | 1 | | Threads_running | 2 | +-------------------+-------+ user……

阅读全文

发布订阅

发布订阅 消息多播,一个发布消息可以同时被多个订阅者收听 常用命令 发布 PUBLISH channel message 订阅 SUBSCRIBE channel [channel ...] PSUBSCRIBE pattern [pattern ...] python demo #!/usr/bin/env python import redis import time redis_pool = redis.ConnectionPool(host="192.168.6.14",port="6379") redis_client = redis.Redis(connection_pool=redis_pool) #生产者 def publishMessages(): while True: redis_client.publish("channel.shenyang","hello news "+time.asctime(time.localtime(time.time()))) time.sleep(2) #消费者 def subscibeMessages(): p = redis_client.pubsub() p.subscribe("channel.shenyang") while True: message = p.get_message() if message: print(message) else: time.sleep(1) ##加入超时时间堵塞读 def subscibeMessages(): p = redis_client.pubsub() p.subscribe("channel.shenyang") while True: message = p.get_message(timeout=10) # 10秒等待 if message: print(message) #阻塞消费者 def subscibeBlockMessages(): p = redis_client.pubsub() p.subscribe("channel.shenyang") for item in p.listen(): print(item['type'])……

阅读全文

基于Redis 的分布式锁实现

分布式锁场景 秒杀抢购茅台,车票 提前预约抢订车位,共享单车 特点,多个用户同一时间对同一个资源进行申请,并且只能允许一个用户申请成功。 分布式锁必要条件 布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行; 高可用的获取锁与释放锁; 高性能的获取锁与释放锁; 具备可重入特性; 具备锁……

阅读全文

客户端故障转移

多主机连接 PostgreSQL libpq 是数据库的一个连接驱动,支持多主机配置,同时支持target_session_attrs 主机角色判断配置。 当配置了多个主机时,会按顺序尝试连接,之道获取到成功的连接为止。 利用libpq的这个特性,结合数据库自动HA的一些软件,可以实现在不引入VIP以及中间路由节点的……

阅读全文

使用prepare预编译SQL

使用预编译优势介绍 在执行一个SQL时,首先生成执行计划(进行语义分析、词法解析、逻辑优化、物理优化)、执行、结果传输等操作。 如果一个SQL在应用中反复使用,我们可以将此SQL参数化,只做一次prepare,后面执行时就不需要进行前面执行计划的生成操作,直接使用prepare好的执……

阅读全文

物化视图

物化视图 物化视图与普通视图的区别在于,物化视图是物理上真实存在的表。 物化视图的创建 \h create materialized view Command: CREATE MATERIALIZED VIEW Description: define a new materialized view Syntax: CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name [ (column_name [, ...] ) ] [ USING method ] [ WITH ( storage_parameter [= value] [, ... ] ) ] [ TABLESPACE tablespace_name ] AS query [ WITH [ NO ] DATA ] 与creat table as 基本相同,但是物化视图不同于table 的是物化时候中的数据内容可以……

阅读全文

Requests

requests 模块 HTTP 协议接口的请求调用 安装, 引用 pip install requests import requests 测试URL https://httpbin.org/post GET 请求 发送数据: 以下为postman 请求示例 { "args": { "arg1": "arg_1" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", "Content-Length": "24", "Content-Type": "application/json", "Host": "httpbin.org", "Postman-Token": "187197c1-effa-4b4b-a499-7c3d66bc9049", "User-Agent": "PostmanRuntime/7.26.8", "X-Amzn-Trace-Id": "Root=1-60efdcf5-2c52d3eb46a1e19520fe108c" }, "origin": "113.232.142.231", "url": "http://httpbin.org/get?arg1=arg_1" } POST 请求 发送数据 以下为postman 请求示例 { "args": { "p ": "1" }, "data": "{\n \"json\": \"123456\"\n}", "files": {}, "form": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate, br", "Content-Length": "24", "Content-Type": "application/json", "Host": "httpbin.org", "Postman-Token": "187879a8-fe0f-45a0-a94e-cf0b1d8e5184", "User-Agent": "PostmanRuntime/7.26.8", "X-Amzn-Trace-Id": "Root=1-60eff356-44291b474115a4e2111fbec4" },……

阅读全文

C 语言环境

Centos7 cmake 版本升级(由 v2.8.12.2 升级至 v3.14.5) #cmake -version cmake version 2.8.12.2 安装基础工具 yum install -y gcc gcc-c++ mkdir /opt/cmake cd /opt/cmake/ wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz tar zxvf cmake-3.14.5.tar.gz 安装 yum remove cmake -y ./configure --prefix=/usr/local/cmake make && make install 查看版本 #/usr/local/cmake/bin/cmake --version cmake version 3.14.5 CMake suite maintained and supported by Kitware (kitware.com/cmake). 设置环境 ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake Clion 中使用MakeFile 默认在Clion中使用CMakeList.txt,但是有些项目提供的是Makefile cmake_minimum_required(VERSION 3.12) project(test)……

阅读全文

动态库

centos中运行程序出现’GLIBCXX_3.4.21' not found 查看动态库依赖 #ldd ./**.so **.so: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found #strings /usr/lib64/libstdc++.so.6 |grep ^GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_DEBUG_MESSAGE_LENGTH centos7 中的gcc 版本太老,需要升级 gcc 升级 centos7 中的gcc 版本太老,需要升级 yum groupinstall "Development Tools" yum install glibc-static libstdc++-static 下载gcc http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/ 安装 tar -xvf gcc-5.4.0.tar.bz2 cd gcc-5.4.0 ./contrib/download_prerequisits mkdir build cd build ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib……

阅读全文