August 1, 2018
Redis中的锁
"单Redis实例锁: http://www.redis.cn/commands/setnx.html\n分布式锁: http://redis.cn/topics/distlock.html(提供各种开发语言提供的库)"
July 30, 2018
MYSQL之ICP、MRR、BKA
"Index Condition Pushdown(ICP) Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式。\nICP原理 禁用ICP,存储引擎会通过遍历索引定位基表中的行,然后返回给MySQL Server层,再去为这些数据行进行WHERE后的条件的过滤。\n开启ICP,如果部分WHERE条件能使用索引中的字段,MySQL Server 会把这部分下推到存储引擎层,存储引擎通过索引过滤,把满足的行从表中读取出。ICP能减少引擎层访问基表的次数和MySQL Server 访问存储引擎的次数。\nICP的目标是减少从基表中全纪录读取操作的数量,从而降低IO操作\n对于InnoDB表,ICP只适用于辅助索引。\nICP标识 当使用ICP优化时,执行计划的Extra列显示Using indexcondition提示\n相关参数 optimizer_switch=\u0026#34;index_condition_pushdown=on”; 适用场景 #辅助索引INDEX (zipcode, lastname, firstname).\nSELECT * …"
July 10, 2018
PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknown to”的解决办法
"错误信息\nSQLSTATE[HY000] [2054] The server requested authentication method unknown to…\n这个错可能是mysql默认使用 caching_sha2_password 作为默认的身份验证插件,而不再是 mysql_native_password,但是客户端暂时不支持这个插件导致的。 官方文档说明\nIn MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password. For information about the implications of this change for server operation and compatibility of the server with clients and connectors, see caching_sha2_password as the Preferred Authentication Plugin.\n …"
July 10, 2018
使用Dockerfile构建Swoole+php7环境
"FROM php:7.2.7-cli RUN apt-get update \u0026amp;\u0026amp; apt-get install -y libmemcached-dev zlib1g-dev RUN pecl install redis-4.0.1 \u0026amp;\u0026amp; pecl install swoole-4.0.1 \u0026amp;\u0026amp; pecl install memcached-3.0.4 \u0026amp;\u0026amp; pecl install xdebug-2.6.0 \u0026amp;\u0026amp; docker-php-ext- enable redis swoole memcached xdebug COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ \u0026#34;php\u0026#34;, \u0026#34;-m\u0026#34; ] 构建完环境后,使用方法见: https://blog.haohtml.com/archives/17925 …"
July 6, 2018
MySQL中的查询开销查看方法
"MySQL使用基于 成本的优化器,它尝试预测一个查询使用某种执行计划时的成本,并选择其中成本最小的一个。在MySQL可以通过查询当前会话的 last_query_cost 的值来得到其计算当前查询的成本。\nmysql\u0026gt; select * from t_message limit 10; ...省略结果集 mysql\u0026gt; show status like \u0026#39;last_query_cost\u0026#39; +-----------------+-------------+ | Variable_name | Value | +-----------------+-------------+ | Last_query_cost| 6391.799000 | +-----------------+-------------+ 示例中的结果表示优化器认为大概需要做6391个数据页的随机查找才能完成上面的查询。这个结果是根据一些列的统计信息计算得来的,这些统计信息包括: 每张表或者索引的页面个数、 索引的基数、 索引 和 数据行的长度、 索引的分布 情况等等。\n有非常多的原因会导 …"
July 5, 2018
一个docker-compose微服务脚本,自用
"容器为swoole+php7\ndocker-compose.yml\nversion: \u0026#39;3.6\u0026#39; services: redis: image: redis web: image: cfanbo/swoole4_php7:v1 depends_on: - redis links: - redis volumes: - /Users/sxf/sites/msgserve:/usr/src/myapp command: \u0026#34;php /usr/src/myapp/src/wx_push_server.php start\u0026#34; 对于 wx_push_server.php文件里redis的主机地址应该写成docker-compose配置文件里的容器服务名(redis)"
July 2, 2018
Go中复制文件的3种方式
"https://opensource.com/article/18/6/copying-files-go\n更多: https://opensource.com/tags/go"
June 15, 2018
服务发现:Zookeeper vs etcd vs Consul vs Eureka
"https://studygolang.com/articles/4837 https://blog.csdn.net/dengyisheng/article/details/71215234"
June 14, 2018
时间复杂度:O(1)、O(n)、O(n²)、O(nlogn)等
"https://blog.csdn.net/qq_27093465/article/details/70690749"
June 13, 2018
分布式事务XA解决方案之两阶段提交(2PC)
"对于三阶段提交请参考:\nhttps://www.cnblogs.com/binyue/p/3678390.html\nhttps://www.cnblogs.com/charlesblc/p/6289348.html\n在 计算机网络 以及 数据库 领域内, 二阶段提交(英语:Two-phase Commit)是指,为了使基于 分布式系统 架构下的所有节点在进行 事务 提交时保持一致性而设计的一种 算法(Algorithm)。通常, 二阶段提交 也被称为是一种 协议(Protocol)。在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的 ACID 特性,需要引入一个作为 协调者 的组件来统一掌控所有节点(称作 参与者)的操作结果并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等)。因此,二阶段提交的算法思路可以概括为: 参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈情报决定各参与者是否要提交操作还是中止操作。\n需要注意的是, 二阶段提交(英文缩写: 2PC)不 …"