读书笔记
文章平均质量分 63
whitejava2
这个作者很懒,什么都没留下…
展开
-
《简单的逻辑学》读书笔记
读了《简单的逻辑学》Being Logical: A Guide to Good Thinking 作者D.Q.麦克伦尼。译者赵明燕。逻辑学是哲学里的一个分支,系统性地研究如何正确做出推理。参考维基百科。提高信息处理能力:在日常生活中我们每天都会收到很多的信息,这些信息里面包括错误的信息以及少量正确的信息。对于一个没有逻辑思维习惯的人来说,不会去思考这些信息和脑子里已经存在的信息有什么样的联系,甚至不去思考这些信息是否真实,也不思考观点是否正确,就直接接收这些信息。长此以往大脑中充满了知识散点以及错误信息,原创 2022-06-19 08:27:12 · 1123 阅读 · 0 评论 -
【读书笔记】代码大全30章:开发工具
设计工具UML源代码工具IDE好处编辑的时候能检测出编译错误集成源代码控制、构建、测试和调试工具能查看整个项目的轮廓跳转到指定的类、方法或变量跳转到使用某个类、方法、变量的地方支持语言格式交互的编辑方式,有助于提高效率括号匹配通用语言模板智能缩进重构工具可以运行/录制宏查找时自动显示常用词语正则查找/替换可以同时编辑多个文件左右两边的可视化diff工具多级撤销原创 2014-05-02 21:24:28 · 827 阅读 · 0 评论 -
读书笔记:计算机网络第二章:物理层
这是我在Coursera上的学习笔记。课程名称为《Computer Networks》,出自University of Washington。由于计算机网络才诞生不久,目前正在以高速在发展,所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比较新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得非常仔细。学完这门课程之后对计算机网络会有比较深刻的了解。本章详细讲解了物理层,讲解了比特流如何通过各种介质进行传播。原创 2014-05-13 23:29:25 · 1625 阅读 · 0 评论 -
《HBase权威指南》读书笔记:第一章 简介
传统的关系型数据库无法存放海量数据,因此HBase诞生,解决海量数据存取难题。当然除了HBase,还有很多其他类型的数据库解决不同的问题。HBase的诞生参考了谷歌的这两篇论文,值得阅读:The Google File SystemMapReduce: Simplified Data Processing on Large ClustersHBase应用逻辑的基本概念有:表:表有表名,其含有原创 2017-05-29 16:00:49 · 766 阅读 · 0 评论 -
《HBase权威指南》读书笔记:第二章 安装
基本操作首先确保已经安装Java。通过java -version命令查看,要求版本1.7以上。下载hbase: http://www.apache.org/dyn/closer.cgi/hbase/将下载来的压缩包解压配上数据储存目录,编辑文件conf/hbase-site.xml<configuration> <property> <name>hbase.rootdir</na原创 2017-06-01 19:49:31 · 461 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第三章:客户端API基础知识
基本操作HTable提供了操作接口。建议应用程序初始化的2时候创建多个HTable,每个线程要有一个,或者使用HTablePool连接池。所有的修改只保证行级别的原子性。以下是Java中操作HBase的例子,书中提供的代码已经deprecated,因此笔者用了最新的连接方式。这段代码运行一次要1分钟左右,主要耗时在连接部分,有配置可以跳过某些步骤没必要的步骤加快连接速度。import org.apa原创 2017-06-04 12:02:26 · 907 阅读 · 1 评论 -
《HBase权威指南》读书笔记 第四章:客户端API高级特性
前面提到的scan操作支持设置过滤器,筛选需要返回的结果。下面看一个简单的例子:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoo原创 2017-06-10 17:31:36 · 608 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,LSM树
LSM树LSM的英文名是 log-structured merge-tree。它适合写入量很大的数据库。执行写入操作时,先把数据写在C0层级,通常C0放在内存中。当C0层级的数据达到设定的阈值时,将数据合并到C1层级。当C1层级达到阈值时,合并到C2层级。这样层层合并,文件数量越来越少,文件变得越来越大。每个层级的数据都是排序的,合并的时候通过类似归并排序的算法实现快速排序。对于删除操作,仅仅将数据原创 2017-08-19 17:51:20 · 420 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,B+树
B+树先说红黑树。红黑树是平衡二叉查找树。它通常用于Map结构的实现,可以根据Key快速找到Value。Java中的TreeMap就是通过红黑树实现的。它是一种二叉树,一个节点最多只能有两个子节点。当BST的存储结构放在硬盘上时,就出现问题了。因为二叉树的高度比较大,寻找一个叶子节点需要较多次数访问硬盘。我们知道访问硬盘的速度是非常慢的,所以BST不太适合用在硬盘上。然而B+树可以解决这个问题。B+原创 2017-08-13 07:50:47 · 871 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,存储
存储HBase架构图如下:从图中可以看到HBase主要处理两种文件,WAL和实际的数据文件。这两种文件最终都存在HDFS中。首次请求所需的步骤如下:从zk中取得hbase:meta表所在的节点,路径为/hbase/meta-region-server。从hbase:meta表中读取元数据,根据元数据推测出数据所在的节点。连接实际的数据节点取得数据。其中步骤2的元数据会在客户端进行缓存,下次不原创 2017-08-27 19:29:41 · 508 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,WAL预写日志
WAL预写日志WAL的目的是为了容灾。一个Region Server会将本节点上所有的region的修改记录都记到同一个HLog文件中。当一次操作成功记录到WAL中时才会返回成功。这种机制保证了断电不会丢失数据。当region打开时,HBase会读取每个HFile中的序列号。根据最大的序列号判断应该从HLog的哪个位置开始恢复数据。HLogKey中包含了KeyValue以及region、表名、序列号原创 2017-09-24 15:16:19 · 575 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,HFile格式
HFile文件格式文件结构如上图。主要有以下部分:Data-block:数据块,每个块中存放多个KeyValue对象。默认每个块64KB。但不是严格意义上的64KB,大致维持在64KB左右。Meta-block:储存元数据信息File Info:储存HFile文件信息Trailer:包含指向其他块的指针。Trailer写完了才能算一个完整的HFile文件。通过以下工具可以手动解析HFile原创 2017-09-17 20:23:43 · 564 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,Compaction合并
compaction合并操作compaction操作将小文件合并成大文件,加快查询速度,减少文件数量,减少资源占用。compaction分为两种:minor compaction:将一个region中一部分小文件合并到一个新的文件中major compaction:将一个region中所有文件都合并到一个文件中。在这个过程中剔除已删除的数据、剔除多于的多版本数据。HBase会在以下几种情况下检原创 2017-09-10 15:19:19 · 781 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构,region拆分
region拆分region拆分的条件满足以下任何一条时做split拆分操作:当region储存文件大于配置项hbase.hregion.max.filesize当region储存文件大于列族层面配置的大小拆分过程非常迅速。其大致过程为:HBase创建两个引用文件,然后在后台执行compaction操作替换掉被引用的文件。假设要拆分的region文件路径为/hbase/testtable/b0原创 2017-09-02 14:46:15 · 476 阅读 · 0 评论 -
《HBase权威指南》读书笔记 第八章:架构:读取数据、region生命周期、ZK数据结构
读取数据读取数据的难点在于,有可能一行数据储存在多个文件中,也有可能在memstore中。例如,同一个row key在不同的时间写入不同列的数据,那么取这个row key所有列的时候就需要扫描多个文件。get操作从实现上来说,和scan操作是一样的。get或者scan操作内部实现机制步骤如下:根据时间戳、布隆过滤器快速排除一些文件,这些文件中绝不可能包含需要取的KeyValue。从最新的stor原创 2017-10-02 13:32:25 · 846 阅读 · 0 评论 -
【读书笔记】代码大全28章:项目管理
鼓励良好的编码习惯制定编码规范使用灵活的编码规范鼓励良好编码规范项目的每个部分都分配两个人审查每一行代码做好代码验收工作将好的代码用来审查强调“代码属于大家”程序员写了良好的代码要给予奖励给程序员想要的东西“良好”指的是特别好,大家都认可的“好”制定单个简单的标准比如:我必须能读懂项目中的一切代码本书的目标:提供良好的编码规范配置管理原创 2014-04-28 21:06:02 · 862 阅读 · 1 评论 -
【读书笔记】代码大全22章:开发者测试
测试种类单元测试组件测试集成测试回归测试系统测试测试的重要性测试的目标是找出错误,编码的目标是避免错误测试永远都无法证明软件完全没有错误测试本身是无法提高软件质量的,要提高质量还要靠提高编码水平测试意味着你期望在代码中找到错误推荐的测试方法按照每条需求做测试按照每条设计原则做测试采用基准测试记录每次犯下的错误,防止以后再次发生测试最好放在编码之前测试背包悖论原创 2014-04-22 20:51:59 · 796 阅读 · 0 评论 -
【读书笔记】代码大全26章:代码优化技术
代码优化其实就是反向重构逻辑优化当你知道答案后就不要再继续判断了(C++,Java)将判定列表按顺序排列(VB+7%)不要盲目听从优化建议将case转换成if-then-else(C#,Java,VB)比较类似的逻辑结构(case和if-then-else)Java适合if-then-elseC# VB适合case将复杂的表达式替换成简单的查表(C++,VB)循原创 2014-04-26 21:27:36 · 1136 阅读 · 0 评论 -
【读书笔记】设计模式第6章:行为型模式2
本文主要分析了中介者模式、观察者模式、备忘录模式、访问者模式、状态模式、解释器模式,介绍它们的定义、优缺点、使用场景,以及实例代码。为了深刻地理解设计模式,最重要的还是动手编写代码。我参照书中的例程重新构想了一些更加生动、易于理解的例子,希望大家喜欢。代码可以通过以下链接进行浏览:http://git.oschina.net/caipeichao/java-design-pattern这些代码都经过编译运行,保证没有错误。原创 2014-05-11 20:59:35 · 839 阅读 · 0 评论 -
读书笔记:计算机网路6章:传输层
这是我在Coursera上的学习笔记。课程名称为《Computer Networks》,出自University of Washington。由于计算机网络才诞生不久,目前正在以高速在发展,所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比较新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得非常仔细。学完这门课程之后对计算机网络会有比较深刻的了解原创 2014-05-17 21:20:53 · 1128 阅读 · 0 评论 -
【读书笔记】代码大全31章:布局和风格
主要将了关于编程方面的美学。布局的基本概念布局的好坏极其糟糕:public class Main{public static void main(String[] argv){System.out.println("test");}}一般糟糕良好格式的基本理论好的格式能展示程序的逻辑结构人看到的代码和计算机看到的代码是完全不一样的好布局能带来多少原创 2014-05-02 21:26:45 · 803 阅读 · 0 评论 -
设计模式中使用了哪些原则?【读书笔记】设计模式原则
SRP 单一职责原则一个类应该只能有一个职责优点:降低类的复杂性提高类的可读性提高代码的可维护性和复用性降低因变更引起的风险LSP 里氏替换原则继承的优点代码共享,减少创建类的工作量提高代码的可重用性提高代码的可扩展性提高产品或项目的开放性继承的缺点继承是入侵式的:只要继承,就必须拥有父类所有的属性和方法降低代码的灵活性增强了耦合性为了增强继原创 2014-05-08 20:33:43 · 719 阅读 · 0 评论 -
【读书笔记】代码大全24章:重构
什么时候该重构重复代码函数太长循环太长或嵌套太深低耦合的类接口的抽象级别不一致参数列表太长修改不知道在哪个类中进行,好像两个类中都可以改变一个地方要同时改变多个类改变一个类的继承要同时改变多个类case语句要同时改变多个地方有联系的数据没有放在同一个类中类中的一个方法调用其他类的次数比自己的类还多原始数据类型被重载一个类几乎什么都没做一个变量通过一条长长的函数链进行传递什么都没做的中介类一原创 2014-04-24 21:09:58 · 752 阅读 · 0 评论 -
【读书笔记】代码大全27章:项目大小如何影响开发
随着项目规模的增大,项目成本并不是随着规模线性增长的。项目规模增加10倍,成本可能要增加15倍,甚至更多。项目大小与沟通团队人数越多,沟通成本越大项目大小项目规模统计:1-3人占%25,4-10人占30%,11-25人占20%,26-50人占15%,50人以上占10%人员分布:1-3人占5%,4-10人占10%,11-25人占15%,26-50人占20%,5原创 2014-04-27 21:02:46 · 699 阅读 · 0 评论 -
读书笔记:计算机网络4章:网络层
这是我在Coursera上的学习笔记。课程名称为《Computer Networks》,出自University of Washington。由于计算机网络才诞生不久,目前正在以高速在发展,所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比较新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得非常仔细。学完这门课程之后对计算机网络会有比较深刻的了解原创 2014-05-17 12:39:12 · 1568 阅读 · 0 评论 -
【读书笔记】代码大全29章:集成
集成就是将软件的各个部件组合到一起成为系统集成的重要性华盛顿体育馆坍塌就是因为集成没有做好好处能更方便地诊断错误能减少缺陷能减少“脚手架”能更快地发布第一个版本能缩短开发周期能有更好的客户关系能增强团队信心能提高项目完成的几率(译者注:或者说减少项目风险)能提高进度估算的准确性能增加项目进度报告的准确性能增强代码质量能减少文档数量多久集成一次——分阶段集成还是增量集成?原创 2014-04-29 21:16:03 · 709 阅读 · 0 评论 -
【读书笔记】代码大全32章:自文档技术
外部文档大项目的文档往往放在源代码之外单元开发文件:是一种非正式的文件,给开发人员在开发的时候查看详细设计文档:描述类/方法级别的设计细节,是一种正式文档良好的编程风格可以作为文档到底要不要注释呢?良好的注释是很有价值的,但是不好的注释不但浪费时间,而且影响代码质量良好注释的关键注释的种类重复代码的意思:完全没用解释代码:说明代码太复杂了,需要改进作为记号:原创 2014-05-02 21:28:18 · 719 阅读 · 0 评论 -
哪种性格最适合IT行业?【读书笔记】代码大全33章:性格在软件领域中的作用
在软件开发中,性格可以决定一个人的能力。虽然我们不能提升自己的智商,但是性格方面我们是可以作出一些改变的。从某种程度上说,一个人的性格决定了他能不能成为软件方面的专家。所以我们应该对自己负责,让自己变得更好。聪明、谦虚我们不需要非常聪明,但是只要按照一定的原则,降低程序的复杂度,减少大脑的负荷,就能够在软件开发方面有深刻的造诣。越谦虚,进步越快软件工程很多程度都是在原创 2014-05-04 09:18:42 · 1374 阅读 · 1 评论 -
【读书笔记】代码大全21章:团队编程
作者:蔡培超 代码审查能减少设计、开发、维护等成本能减少开发时间能减少缺陷结对编程注意事项协商编码风格一个人编码,另一个人不要光看要灵活,简单的功能就不要结对编程了经常换队友(推荐1天1换)确保两个人的思路能同步确保两个人都能看得清代码不要强制让两个关系不好的人结对编程两个人之中最好有一个人有过结对编程的经验好处减少压力,防止烂代码的原创 2014-04-21 19:07:46 · 709 阅读 · 0 评论 -
【读书笔记】代码大全23章:调试
调试的基本问题BUG就是缺陷、错误、谬误调试不能提高软件质量调试速度差异好的程序员和差的程序员速度能相差20倍将缺陷看成机遇调试的时候能让你了解整个程序让你知道你犯下的是哪种错误让你知道别人眼中的代码质量是怎样的让你知道你是如何解决问题的让你指导你是如何修复缺陷的总之调试能让你进步低效的调试方法Devil的调试建议(低效)猜测缺陷的位置不花时间完全理原创 2014-04-24 08:23:42 · 757 阅读 · 0 评论 -
【读书笔记】代码大全25章:代码调优
代码调优就是性能优化什么是性能性能和代码速度没有必然的联系,操作的便捷性也是性能的一种。哪些地方可以优化软件需求软件设计类和方法的设计操作系统交互编译硬件代码调优介绍性能优化最神奇的地方在于改变少量代码可以让性能大幅提升八二原则:80%的运行时间集中在20%的代码上误区减少代码数量就能提高性能,减少程序大小(错误)某个操作一定比另一个操作快或慢(错误,和开发原创 2014-04-25 20:59:45 · 653 阅读 · 0 评论 -
【读书笔记】设计模式第五章:行为型模式
本文主要分析了模板方法模式、命令模式、责任链模式、策略模式、迭代器模式,介绍它们的定义、优缺点、使用场景,以及实例代码。为了深刻地理解设计模式,最重要的还是动手编写代码。我参照书中的例程重新构想了一些更加生动、易于理解的例子,希望大家喜欢。代码可以通过以下链接进行浏览:http://git.oschina.net/caipeichao/java-design-pattern这些代码都经过编译运行,保证没有错误。原创 2014-05-10 19:16:19 · 911 阅读 · 0 评论