- 博客(15)
- 收藏
- 关注
原创 C++对象模型读书笔记-- 虚表 virtual table
摘录侯杰《深度探索C++对象模型》 第一章---关于对象 P13 函数定义X foobar(){ X xx; X* px = new X; //foo() 是一个virtual function xx.foo(); px->foo(); delete px; delete xx;} 这个函数在内部的转化
2015-08-31 16:44:22
525
原创 重构---代码的坏味道
Duplicated Code (重复代码)Long Method (过长函数)Large Class (过大的类)Long Parameter List(过长参数列)Divergent Change ( 发散式变更)---一个类受多种变化的影响。Shotgun Surgery ---- 一个变化引发多个类的修改。Feature Envy (依恋情结),一个类的方法,大量依赖另一个类的数据。Da
2015-08-24 22:58:58
398
2
原创 重构读书笔记
在一个基础系统上进行增量开发是比较常见的。增量开发的过程中,一方面会因为系统的初始框架有部分不适应新需求而变更,另一方面是维护开发人员更换,编程习惯及能力的差异,对系统的框架理解不一致,在进度的压力下破坏了系统的框架。 无论是哪一种,都有必要阶段性的进行重构,以偿还技术债务。技术债务不断累加的后果,是修改越来越复杂,当适当的修改点越来越难找,犯错的机会越来越大。 读《大话设计模式》时,
2015-08-22 10:58:08
453
原创 数据结构--赫夫曼树(最优二叉村)
赫夫曼树,也称最优二叉树。树的带权路径长度为树中所有叶子节点的带权路径长度之和最短。书上举例多if条件嵌套判断,但由于各个条件出现的概率不一样,优化条件排布的先生顺序,程序运行的总路径长度也不一样,将高概率的条件放在前面,就使总长度最小。 赫夫曼树的原理就是这样, 在程序优化时,可以使用这个原理。 发散:一个if,就可以理解是一次二叉树的分支。运用:使用不等长的码,的确可以减少码流
2015-08-17 21:49:45
631
原创 数据结构——线索二叉树
二叉树的遍历没有线性表快。线索二叉树,利用最末层的子节点左右子节点域为空,用来填充前、后驱。 个人理解, 1) 其实就是把遍历的结果存储起来, 可以节约后续的只读遍历。对于新插入节点,就要重新更新线索二叉树。2) 网上查询了一下线索二叉树的应用,如汽车零部件的拆解。 应用不是很广。
2015-08-15 21:45:47
426
3
原创 数据结构--建立词索引
维护书的基本信息,同时维护书的关键字索引,方便快速查询。用数组维护书的基本信息,有用关键字队列维护书的索引信息。个人理解: 对于实际的应用当中, 一般都会使用数据库来维护信息。 建立两张表,一张主表,这是个横表,记录书的基本信息。 另一种是索引表,这是一个竖表, 记录书的索引信息,在索引字段上建立表的查询索引。 一条横表记录,在竖表中会存在多种索引记录。
2015-08-15 07:07:44
602
原创 数据结构--队列
真的是开卷有益。翻开大学教材——数据结构,温故而知新。银行有四个窗口营业,从早上到晚上不断有顾客。如果窗口空闲,顾客一到就能办理,不然就选择最短的排队,计算一天中顾客在银行逗留的平均时间。 如上图所示,使用数组来维护队列头尾信息,使用双向链表维护请求信息。联想应用:1) 一个请求的统一接入端,使用消息队列来来分发请求到多个处理端。 即接入端维护一
2015-08-15 06:08:24
284
原创 mysql 视图
创建视图的两种方法:1)合并表算法(Merger)2)临时表算法(Temtable)区别在于,临时算法会把结果保存临时表,再返回结果。只要无法在原表记录和视图中建立一一映射,MySql使用临时表。1)视图不能建触发器,不能建索引2)视图性能大多数比表差。
2015-08-12 20:31:41
288
原创 DataTable表的批量插入及自定义导出的使用
场景一:有一数据表,数据量在亿级别,200台终端会插入数据,每次插入数据量在100到800条之间。优化插入数据的性能,采用了DataTable的批量插入SqlBulkCopy。具体步骤:1)动态创建与目标表结构一样的DataTable2)填充数据3)使用SqlBulkCopy类,调用WriteToServer()批量插入场景二:批量导数据工具
2015-08-07 20:30:20
616
转载 Jenkins hash算法
Jenkins hash算法, memcached使用了此算法Jenkins hash,可能是目前能看到的最好的hash算法之一,可以产生很好的分布,缺点是相比其他常见的hash算法更耗时。可以考虑用于hash表的open addressing实现上。如果想了解细节的话,可以去Bob Jenkins的站点看一看。#define hashsize(n) ( 1U #define hash
2015-08-06 20:46:52
4806
原创 六西格玛游戏
游戏一:测量纸块的大小游戏规则:老师分发每桌一把毫米尺,5张大小不一的小纸片(编号)。要求每个人测3次。人和纸片都随机打乱顺序。最后对测量值使用mintab做GR&R分析。结果:我们犯了不少错误。由于纸片的形状不规则,我们没有约定测试点,所以测的不对。毫米尺的精度分辨率不够。 游戏二:投骰子TOC游戏规则: 老师给了一盒棉签和五颗骰子。我们组六个人。第
2015-08-05 21:28:16
1395
1
原创 读书笔记--大话设计模式
《大话设计模式》的确写的很不错。 把晦涩解懂的设计模式,讲的通俗易懂。 边读边用Evernote做笔记,把印象深刻的整理了一下。 先补习一下UML的图示法:继承,接口,组合,依赖,关联 策略模式(Strategy)定义一系列算法,所有算法完成的都是相同的工作,只是实现不同。减少算法与使用类之间的藕合。计费策略会用到很多。工厂模式(Factory Mode)
2015-08-05 20:21:50
558
原创 读书笔记 TCP滑动窗口
以下一个滑动窗口满的例子滑动窗口是接收端用来流量控制的。拥塞窗口是发送端用来流量控制的。1)发送端发了数据包,接收端的滑动窗口满了。2)接收端发零窗口,告诉发送端,暂停发数据。3)发送端接到这个零窗口后,启动一个坚持定时器。4)发送端不确定接收端是不是崩溃了,发送保活报文。查询接收端的状态。5)接收端仍然没有处理完,回零窗口确认。6)接收端数据处理完,给发送端发
2015-08-02 16:18:14
433
原创 读书笔记--TCP连接建立与终止
连接三次握手终止连接四次握手SYN 同步序号FIN 数据发送完成RST 复位连接,回到监听状态PSH 尽可能快将数据送给应用层. 四个标志置零URG 紧急指针ACK 确认序号有效 RST复位报文无论何时“基准连接”(IP与端口指名的连接)出现异常,发RSTTCP半关闭发送与接收,两个方向。都要关闭。 UNIX是
2015-08-02 13:17:07
345
原创 读书笔记--TCP传输的可靠性的体现
TCP的可靠性1 应用数据被分割成最适合发送的数据块。 1.1 MTU(链路层最大传输单元)与网络直接关联。以太网1500. 1.2 分片。 广域网整个传输管道,通常由管道的最狭窄处决定IP不分片报文的大小。 1.3 MSS 在TCP链接建立时,就会互相通知对方自己的MSS, 协商各自的报文大小 1.4 缓冲区的大小,会通过滑动窗口的win l
2015-07-26 16:44:13
382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人