mysql    2016-05-18 23:46:16    1318    0    0
[TOC] ## 数字类型 ### 整形 在整数类型中,按照取值范围和存储方式不同,分为tinyint、smallint、mediumint、int和bigint这 5个类型。 ![title](https://leanote.com/api/file/getImage?fileId=59882687ab64411f3900133c) > + MySQL可以为整形指定宽度,例如int
golang    2016-04-28 10:42:54    3819    1    0
文章主要是参考雨痕学堂(微信订阅号)及其他网友的博客然后根据自己的理解整理而成。 string与[]byte相互转换 在写程序的过程中经常遇到string与[]byte的相互转换,但是这种转换是有代价的,string与[]byte并不共享底层内存空间,所以每次转换都伴随着内存的分配与底层字节的拷贝。 我们可以借助unsafe完成指针类型转换,避开内存分配与复制,从而提升性能。属于黑魔法,尽量不要用。 /* struct string{ uint8 *str; int len; } struct []uint8{ uint8 *array;
golang    2016-01-13 17:02:37    1346    0    0
golang错误处理方式一直是很多人诟病的地方,很多人都吐槽说一半的代码是 if err != nil { /* 错误处理 */ },严重影响正常的处理逻辑,我最开启也反感这种错误处理机制,每调用完一个函数都需要check一下,自定义函数也都要增加一个error类型的返回值,但是查了很多资料慢慢理解这种错误机制的好处。因为调用每一个函数都可能发生错误,及时在错误发生的地方做处理更容易构建复杂的大型系统。 异常与错误 错误与异常是很容易混淆的地方,错误指的是可能出现问题的地方出现了问题,比如打开一个文件时失败,这种情况在人们的意料之中;而异常指的是不应该出现问题的地方出现了问题,这
redis    2015-11-30 23:45:09    1785    0    0
Redis是一个内存数据库,也就是说存储数据的容量不能超过主机内存大小。普通主机服务器的内存一般几十G,但是我们需要存储大容量的数据(比如上百G的数据)怎么办? redis3.0版本以上开始支持cluster,他可以把多个redis实例整合在一起,形成一个集群,也就是将数据分散到集群的多台机器上。但是该怎么分散呢,一个Key只能被分配到一台机器上,我们在查询数据时,数据可能存在集群中的任意一台机器上,又该怎么查询呢? 槽指派 集群的整个数据库被分为1638
golang    2015-11-28 16:15:37    4344    1    4
NSQ简介 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。 NSQ 由 3 个守护进程组成: nsqd 是接收、保存和传送消息到客户端的守护进程。 nsqlookupd 是管理的拓扑信息,维护着所有nsqd的状态,并提供了最终一致发现服务的守护进程。 nsqadmin 是一个 Web UI 来实时监控集群和执行各种管理任务。 这篇文章介绍主要介绍nsqd的实现。 T
nginx    2015-11-08 23:27:50    4946    1    1
使用go语言开发过图片处理服务,但是原生的image库的效率不理想,有些png、gif格式图片也不能正常处理。然后搜索解决办法时发现了nginx+lua+graphicmagick这一套解决方案,甚为满意,目前已应用到线上项目,运行稳定。 nginx做web服务器,对于需要缩放的图片交给lua脚本,lua脚本调用外部的graphicmagick程序来处理图片,然后将处理后的图片返回,由于直接调用graphicmagick所以可能实现各种强大的功能,加文字加水印都是很简单的
redis    2015-11-08 21:16:44    1863    1    0
redis是一个内存数据库,也就是说它的所有的数据都是保存在内存中的,而内存中的数据当程序结束时就会消失,所以我们要想办法把内存中的数据写到磁盘中。当程序异常退出或者正常退出后,重新启动时就可以从磁盘文件中读取保存的数据,这就是redis的持久化。redis有两种持久化机制RDB与AOF,来了解下这两种机制的实现原理和区别。 RDB RDB可以理解为redis状态的镜像,其实就是遍历redis所有数据库中的所有键值对,将未过期的数据写到RDB磁盘文件中。有两个R
redis    2015-11-06 01:15:09    372    0    0
SDS与C字符串 redis是一个性能优越的k-v键值对内存数据库,值可以为字符串,列表,哈希,无序集合,有序集合这五种类型。我们从最简单的字符串对象来看redis底层的实现。 redis> SET number “123456” OK redis是如何保存”number” “123456” 这两个字符串对象的呢?我们当然可以使用最简单的c字符串表示方式 char *k = “number”; char *v = “
golang    2015-10-29 21:16:25    6299    0    5
channel的用法 channel是golang中很重要的概念,配合goroutine是golang能够方便实现并发编程的关键。channel其实就是传统语言的阻塞消息队列,可以用来做不同goroutine之间的消息传递,由于goroutine是轻量级的线程能够在语言层面调度,所以channel在golang中也常被用来同步goroutine。 一般channel的声明形式为:var chanName chan ElementType ElementType指定这个channel所能传递的元素类型。 定义一个channel也很简单,直接使用内置的函数make()即可: ch :
golang    2015-10-29 04:36:02    1278    0    1
go语言中处理信号很简单,并且不会中断程序的正常运行逻辑。 想监听一个信号只需要调用Notify函数 func Notify(c chan<- os.Signal, sig …os.Signal) sig 表示你希望监听的信号,如果不设置表示监听所有的信号。 c 表示当信号发生时,系统会往该channel中写入发生的信号。 如果不想监听信号则可以调用stop func Stop(c chan<- os.Signal) 实例解析
3/4