MySQL中int(10)和int(11)的区别+示例

我们都知道MySQL中的int(10)和int(11)在宽度上是不一样的,但是其实区别真不大,因为都是占用4个字节,所以范围都是一样的,那么主要的区别在哪儿呢?

今天忽然想到这个问题,因此做了一下测试:

1、创建一个测试用的表test,里面只有两个字段,一个int10,一个int11

 

2、往表中插入一条数据,sql如下:

这个时候int11字段报warning了,因为都是4个字节,10000000000已经超过4字节范围上限了,但是只是一个warning,因为MySQL底层已经做了截断处理。

Continue reading “MySQL中int(10)和int(11)的区别+示例”

LevelDB架构与原理

一、LevelDB入门

LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,关于LSM,本文在后面也会简单提及。

 

根据Leveldb官方网站的描述,LevelDB的特点和限制如下:

特点:
1、key和value都是任意长度的字节数组;
2、entry(即一条K-V记录)默认是按照key的字典顺序存储的,当然开发者也可以重载这个排序函数;
3、提供的基本操作接口:Put()、Delete()、Get()、Batch();
4、支持批量操作以原子操作进行;
5、可以创建数据全景的snapshot(快照),并允许在快照中查找数据;
6、可以通过前向(或后向)迭代器遍历数据(迭代器会隐含的创建一个snapshot);
7、自动使用Snappy压缩数据;
8、可移植性;

限制:
1、非关系型数据模型(NoSQL),不支持sql语句,也不支持索引;
2、一次只允许一个进程访问一个特定的数据库;
3、没有内置的C/S架构,但开发者可以使用LevelDB库自己封装一个server;

Continue reading “LevelDB架构与原理”

讨论问题:团队绩效考核如何制定?如何设置奖惩?

从企业、组织角度来看,团队绩效是以团队的项目绩效作为基础。而确定项目绩效,要在项目开始之前先确定项目绩效目标,待项目结束时来评估是否达成了既定的绩效目标。首先,企业应该建立完备的组织级绩效考核体系,从项目立项开始如何预评估,在面对项目过程中各种情况是否需要奖惩,以及在结项时的最终评价,都是需要针对不同行业、不同企业文化进行客制化分析。举个例子,某甲方企业的项目绩效管理方式是这样的:在立项阶段会按照项目需求的战略意义、技术实现难度、工作量等条件因素,由专家组进行匿名评价,确定项目积分;在项目进行过程中,根据项目是否按规定按时交付产品、代码质量、测试缺陷率、上线运行质量等多种因素进行考评,在项目结项时依据项目的CPI、客户满意度等进行最终评估,得到项目最终绩效积分。到年底的时候团队绩效就是把当年所有项目的积分累加,按照排名转化为绩效奖金。这样的绩效考核机制能够激励团队既能保证多劳多得,又有对过程质量的要求,是一种正向的引导方式。 Continue reading “讨论问题:团队绩效考核如何制定?如何设置奖惩?”

Go语言slice基本操作

 

Go使用mmap的例子

 

Go之strings、buffers、bytes、binary包

strings包

strings包的使用举例:

Continue reading “Go之strings、buffers、bytes、binary包”

Go语言实现的常用哈希函数,并提供对应的64位方法

以下是使用Go语言实现的常用哈希函数(BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash),并提供每个哈希对应的64位方法。经测试,64位的哈希函数基本不会出现碰撞(测试数据为十亿随机字符串数据量)。

哈希函数代码库地址:https://gitee.com/johng/gf/tree/master/src/g/encoding/ghash

 

Go语言/位操作/取反/异或/左移/右移

 

常用HASH算法 代码 & 比较

  • 常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。
  • 常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。

Continue reading “常用HASH算法 代码 & 比较”

B树和B+树的总结

B树

为什么要B树

磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大于电子运动的时间。当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是我们可以通过B树进行优化,提高磁盘读取时定位的效率。

为什么B类树可以进行优化呢?我们可以根据B类树的特点,构造一个多阶的B类树,然后在尽量多的在结点上存储相关的信息,保证层数尽量的少,以便后面我们可以更快的找到信息,磁盘的I/O操作也少一些,而且B类树是平衡树,每个结点到叶子结点的高度都是相同,这也保证了每个查询是稳定的。 Continue reading “B树和B+树的总结”