- 博客(17)
- 资源 (16)
- 收藏
- 关注
原创 window下C++线程池实现
工作当中频繁使用到多线程,网上参考了一份代码,并根据自己需要改进了一下,贴出来做个记录,以后如果有产生问题还会继续改进。大致介绍下每个类的作用:1. CThread 线程基类,线程创建及销毁2. CWorkerThread 工作线程,任务设置获取,池对象设置获取,线程运行及终止3. CThreadPool 任务运行,空闲线程/忙碌线程管理,销毁线程池4. CJob 需要执行
2017-06-28 16:53:35
1822
2
转载 git使用
原博客传送门:http://www.cnblogs.com/tugenhua0707/p/4050072.html一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版
2017-04-20 17:25:18
361
原创 套接字的阻塞和非阻塞send/recv
先理一下阻塞和非阻塞的概念:阻塞就是让当前调用线程一直处于停止等待当中,挂起的状态,线程函数会被卡住。非阻塞则是不管运行结果如何,都会继续往下执行(往往都要处理很多返回结果),线程函数里一般都是一个循环,不停的轮询。再理一下发送接收函数:send/sendto函数,只是把应用层的数据拷贝到内核发送缓冲区,并不保证数据一定会被发送到对端,真正执行发送及什么时候发送是由系统(协
2017-04-10 19:04:29
15986
1
原创 C/C++变长形参
// 普通的C函数变长形参static void MyCPrint(const char *s, ...){ char strBuffer[1024]; va_list ap; va_start(ap, s); vsprintf(strBuffer, s, ap); va_end(ap); printf(strBuffer);}
2017-04-01 15:32:44
479
原创 svn: E200030: SQLite compiled for 3.8.8.3, but running with 3.6.20
centos下源码安装svn的时候遇到一个问题,将sqlite3的源码拖入svn目录下,安装好的svn一直存在问题:Couldn’t perform atomic initialization,sqlite编译的版本要高于现在系统正运行的版本:svn: E200030: SQLite compiled for 3.8.8.3, but running with 3.6.20一直调不通,索性将s
2016-05-05 15:49:17
2859
转载 linux下的网络模型
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不
2016-04-05 21:30:22
356
转载 socket的半包,粘包与分包的问题
首先看两个概念: 短连接: 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 长连接: 连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 长连接指建立SOCKET连接后不管是否使
2015-03-31 10:48:16
543
原创 常用排序算法之快速排序c及lua实现
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为:从数列中挑出一个元素,称为 "基准"(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递
2014-07-08 11:16:36
942
原创 常用排序算法之选择排序c及lua实现
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移
2014-07-08 11:05:46
877
原创 常用排序算法之插入排序c及lua实现
插入排序(Insertion Sort)的算法描述是一种简单直观的排。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
2014-07-08 11:01:48
1373
原创 常用排序算法之冒泡排序c及lua实现
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序对个项目需要O()的比较次数,且可以原地排序。尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有
2014-07-08 10:50:17
1526
原创 lua取不重复随机数
参照如下函数:function RandNum(num) math.randomseed(os.clock() * 1000000) return math.random(1,num)endsha
2014-07-07 16:41:36
3671
转载 浮躁的时候看看这篇文章
越是重要的决定,越要自己去抉择。容不得别人掺和。我是做咨询的,说这话好像违背我的职业原则。很多人找我,就是想知道应该如何决定。然而,我能做的是,告诉你什么样的原则是对的,什么样的策略是具有优势的,而最终究竟是否要应用那原则,是否要采取那策略,我当然无法越俎代庖。如果答案是确定的,未来是可占卜的,那还有什么犹豫?问题不是在于无论如何都有不确定的或未知的因素存在么?
2014-05-24 00:40:15
671
原创 始篇
很久以前就开通了CSDN的博客,却一直没有写下第一篇博客,之前在新浪博客陆陆续续的写了一些文章,却也是一些无病呻吟之类的东西。最近有幸拜读刘未鹏先生的《暗时间》,看过其中一篇,为什么你应该从现在开始就写博客,深感其中道理分析的透彻,因此也产生了自己写博客的想法,希望这个习惯坚持下去,不断学习,不断总结,不断积累。成为一名合格的coder的路还很长,自勉!
2014-05-20 22:51:34
504
MFC实现WiFi管理
2017-12-08
CMFCPropertygridCtrl添加checkbox复选框
2017-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人