摘要: Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。 如果你花时间学习这门语言,阅读官方说明、wiki、邮件列表讨论、大量的优秀博文和Rob 阅读全文
posted @ 2016-08-22 11:56 borey 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序。下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 阅读全文
posted @ 2016-07-28 17:34 borey 阅读(22081) 评论(0) 推荐(1) 编辑
摘要: 摘要 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 冒泡排序 1 func BubbleSort(vector []int) { 2 fmt.Println("BubbleSort") 3 fmt. 阅读全文
posted @ 2016-06-29 11:17 borey 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 思路:初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看更多的例子 我们会发现要使表达式等于0,n-1必须使得n的n-1都向高位 阅读全文
posted @ 2016-06-29 11:14 borey 阅读(1904) 评论(0) 推荐(0) 编辑
摘要: 思路一: 计算出n!= nValue,然后 nValue % 10 == 0 则nCount自增1,nValue /= 10 直到条件为否,最后nCount就是我们想要的结果,代码如下: 代码简洁易懂,看上去还不赖,但是这里要考虑一个问题就是在求n!整数溢出了怎么办? 显然我们使用_int64也同样 阅读全文
posted @ 2016-06-29 11:12 borey 阅读(2675) 评论(0) 推荐(0) 编辑
摘要: 思路: 递归思想。我们有n张牌,不妨先假设有一个洗牌函数shuffle(....),能完美的洗出n-1张牌 。拿第n张牌来打乱前面n-1的洗牌顺序,从而得到n张牌的最终结果。 代码如下: 输出结果: 从结果来看上去很完美,剩下就是要在随机函数上做文章了,如果有一个完美的随机数发生器,那么这就是一个完 阅读全文
posted @ 2016-06-29 11:07 borey 阅读(9726) 评论(0) 推荐(0) 编辑
摘要: tcp关闭连接不区分客户端和服务端,哪一端口可以主动发起关闭连接请求。所以为了描述方便,描述中的“主动方”表示主动发起关闭连接一方,“被动方”表示被动关闭连接一方。 1. tcp关闭连接状态转换 上图是tcp连接主动关闭端的状态转换图: (1)应用层调用close函数发起关闭连接请求 (2)发送FI 阅读全文
posted @ 2016-06-29 11:04 borey 阅读(14269) 评论(1) 推荐(0) 编辑
摘要: 1,原子操作 通常cpu的最小执行单元是一条指令,是不会被打断的。我们把单条指令的操作成为是原子的,但是像自增或自减这样的操作由几条指令组成,是非原子操作。window提供了一些专门的原子操作的API: 2,同步与锁 a,二元信号量(线程间共享) b,互斥量(mutex) c,临界区(Critica 阅读全文
posted @ 2016-06-29 10:54 borey 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 函数: (1)int shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。 (2)void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。当使 阅读全文
posted @ 2016-06-29 10:48 borey 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 前言: 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息 函数: 1.创建新消息队列或取得已存在消息队列 原型: 参数: key:可以认为是一个端口号,也 阅读全文
posted @ 2016-06-29 10:45 borey 阅读(468) 评论(0) 推荐(0) 编辑