读书笔记
文章平均质量分 88
记录读书笔记
白夜行515
世界上有两样东西不能直视:一是太阳,二是人心!
展开
-
《高性能MySQL》读书笔记
第一章 MySQL架构与历史MySQL逻辑架构并发控制:读写锁、锁粒度、表锁。行锁事务:ACID、四种隔离级别多版本并发控制(MVCC):通过保存数据在某个时间点的快照实现。分为乐观与悲观MVCC。InnoDB的MVCC是通过在每行记录后面保存两个隐藏列实现的。一个保存行的创建时间,一个保存行的过期(删除)时间。存储的并不是实际的时间值,而是系统版本号,每开始一个新的事务,版本号会自动自增。MVCC只在RR和RC隔离级别下生效,因为RU总是读取最新的数据行,seriali原创 2021-01-16 22:57:04 · 230 阅读 · 2 评论 -
《Redis开发运维实践指南》读书笔记
第1章 数据操作keys * 命令会一次性遍历整个数据库来获取所有与给定模式相匹配的键,键值对越多执行速度越慢,线上禁止使用该命令,使用SCAN命令替代。SCAN命令以渐进的方式分多次遍历整个数据库。scan遍历顺序采用高位进位加法来遍历,进位的方向是从高位到低位,原因是考虑到字典的扩容和缩容时避免槽位的遍历重复和遗漏。分类keysscan遍历方式一次性遍历整个数据库并返回所有结果每次遍历数据库的一部分键并返回一部分结果阻塞服务器可能会不会出现重复值不会原创 2020-12-30 21:45:48 · 242 阅读 · 0 评论 -
《clean-code-php》读书笔记
第1章 变量使用见字知意的变量名同一个实体使用相同的变量名使用便于搜索的名称,避免出现魔数(使用常量替换)变量命名尽量做到自解释性避免多层ifelse嵌套,尽早返回少用无意义的变量名变量名不冗余,可从上下文中获取就不用体现在变量名中合理使用参数默认值第2章 表达式当变量类型不同并需要区分时使用恒等式替代等式3. 函数函数参数最好少于两个一个函数只有一个功能函数名应该做到见名知意函数应该只有一层抽象不要用boolean作为函数参数避免函数带来的副作用不要写全局函数原创 2020-12-30 20:24:57 · 116 阅读 · 0 评论 -
《细说PHP》读书笔记
第1-5章 略第6章 PHP基本语法6.1 PHP的应用收集表单数据生成动态网页字符串处理动态输出图像处理服务器端文件系统编写数据库支持的网页会话跟踪控制处理XML文件支持利用大量的网络协议服务器端的其他相关操作6.2 PHP语言标记标准风格:开始标记是<?php,结束标记是?>指令分隔符:分号程序注释:多行注释/* */,单行注释//或#空白的处理:使用两个空行:一个源文件的两个代码片段之间、两个类的声明之间使用一个空行:两个函数声明之间、注释之前原创 2020-12-28 09:54:14 · 397 阅读 · 0 评论 -
《代码整洁之道》读书笔记
第一章 整洁代码糟糕的代码产生混乱的影响。保持代码整洁不但有关效率,还有关生存。整洁的代码只做好一件事简单代码的规则:能通过所有测试;没有重复的代码;体现系统中的全部设计理念;包含尽量少的实体,如类、方法、函数等第二章 有意义的命名名副其实:如果名称需要注释来补充,就不算名副其实。避免出现魔数。避免误导:避免使用小写字母l和大写字母O作为变量名做有意义的区分:避免使用a1、a2作为变量名。废话都是冗余,variable不应该出现在变量名中table也不应该出现在表名中。如:NameS原创 2020-12-23 20:56:47 · 305 阅读 · 2 评论 -
《RabbitMQ实战》读书笔记
第一章 天降神兵RabbitMQ是一个开源的AMQP实现,用Erlang语言编写,支持多种开发语言,用于在分布式系统中存储转发消息。第二章 理解消息通信生产者:创建消息并设置标签消费者:接收并消费消息信道:生产者。消费者与RabbitMQ建立连接,即创建一条AMQP信道,每个信道有唯一的Id,一个TCP连接可以创建多个信道AMQP消息路由必须包含三部分:交换器、队列和绑定。消费者接收消息,单个消息:basic.get命令,持续接收:basic.consume命令,消息到达队列自动接收。.原创 2020-12-06 22:39:30 · 245 阅读 · 0 评论 -
《RabbitMQ实战指南》读书笔记
读书笔记第一章 RabbitMQ简介第二章 RabbitMQ入门第三章 客户端开发向导第一章 RabbitMQ简介消息队列中间件:利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。分为点对点和发布订阅的传递模式。消息中间件的作用:解耦、冗余(存储)、扩展性、削峰、可恢复性、顺序保证、缓冲、异步通信。RabbitMQ的特点:可靠性:持久化、传输确认及发布确认等;灵活的路由:消息进入队列之前,通过交换器来路由消息;扩展性:多个节点可组成集群;高可用性原创 2020-11-29 23:36:04 · 292 阅读 · 0 评论 -
《Effective java 第2版》读书笔记--异常、并发与序列化
第九章 异常 第五十七条:只针对异常的情况才使用异常1.异常应该只用在异常的情形下。他们永远不应该用在正常的控制流中。 第五十八条: 对可恢复的情况使用受检异常,对编程错误使用运行时异常1.Java语言有三种可抛出的结构:受检异常、错误和运行时异常(1)决定使用何种异常时主要原则是:如果期望调用者能够从异常中适当的恢复,那么就使用受检异常强迫用户处理或者再抛出。运行时异常属于不可恢复的情形(2)原创 2017-05-06 12:18:05 · 740 阅读 · 0 评论 -
《Effective java 第2版》读书笔记--通用程序设计
第七章 方法 第三十八条:检查参数的有效性1.注意(1)必须在文档中指明所有的限制,并且在方法体的开头检查限制。(2)如果传递了无效的参数,那么方法应该很快失败并且抛出适当的异常(3)对于公有的方法,要用JavaDoc的@throws标签在文档中说明违反参数限制会抛出的异常;对于未导出的方法,应该抛出断言(4)如果方法并没有使用到参数,而是保存了参数,那么参数检查格外重要。例子:构造器,这样可以避原创 2017-05-06 09:16:02 · 382 阅读 · 0 评论 -
《Effective java 第2版》读书笔记--泛型与枚举
第五章 泛型 第二十三条:不要在新代码中使用原生态类型1.泛型的原生态类型:List对应的是不带任何实际参数类型的List2.泛型的优点:(1)插入元素时自带类型检查(2)删除元素是不需要进行手工转换(3)可以使用for-each循环,两种方法3.缺点(1)使用原生态类型,会失掉泛型在安全性和表述性方面所有的优势(2)List与List的区别:前者可以接受List,但是后者不行(3)不确定类型的时原创 2017-05-05 21:20:30 · 436 阅读 · 0 评论 -
《Effective java 第2版》读书笔记--类与接口
第三章 对于所有对象都通用的方法 第八条:覆盖equals时请遵守通用约定1.确定应不应该覆盖equals方法的情况(1)类的每个实例本质上是唯一的(2)不关心类是否提供了“逻辑相等“的测试功能。(3)超类已经覆盖了equals,并且从超类继承过来的子类也是合适的 例如:从AbstractSet继承equals(4)类是私有的或者包级私有的:此时应该覆盖并抛出异常。2.Equals的通用约定(1原创 2017-05-05 16:51:04 · 748 阅读 · 0 评论 -
《Effective java 第2版》读书笔记--创建/销毁对象
第一章 引言1.本书共78个条目2.本书大部分内容不是讨论性能的,而是关心如何编写出清晰、正确、可用、健壮、灵活和可维护的代码。第二章 创建/销毁对象 第一条:用静态工厂方法代替构造器1.静态工厂方法比起构造器的优势(1)它们有名称:如果构造器的参数不能正确描述正被返回的对象,具有适当名称的静态方法更容易使用。当一个类需要多个带有相同签名的构造器时,就可以用静态工厂代替构造器 例:BigIn原创 2017-05-05 15:23:35 · 449 阅读 · 0 评论