- 博客(27)
- 资源 (20)
- 收藏
- 关注
转载 Linux网络编程socket错误码分析
http://blog.csdn.net/nellson/article/details/5669935
2015-03-25 14:34:36 2027 1
转载 必须在类初始化列表中初始化的几种情况
1. 类成员为const类型2. 类成员为引用类型3.类成员为没有默认构造函数的类类型4. 如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数参考资料:http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.htmlhttp://www.cnblogs.com/k
2015-03-25 13:39:20 1211
转载 全局变量和局部变量初始化问题
如果定义为全局变量,系统会自动把变量初始化为默认值(内置类型初始化为系统默认值,自定义类型调用相应的初始化函数进行初始化)定义为局部变量时,系统不会自动初始化变量,我们必须手动对变量进行初始化(无论是内置类型还是自定义类型),否则得到的结果可能和我们预期的不一致,甚至导致程序出错。参考资料:http://blog.csdn.net/ygc87/article/details/68621
2015-03-25 13:31:44 1444
原创 多线程访问数据库
待深入研究,包括c++访问数据库的模型参考资料:http://www.cnblogs.com/therock/articles/2379299.htmlhttp://blog.csdn.net/yaoxy/article/details/4357199
2015-03-25 13:27:26 1534
原创 mysql索引
对于任何DBMS,索引都是进行优化的最主要的因素。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。例如:假设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句s
2015-03-18 19:09:33 492
原创 线程的栈空间
线程栈空间的大小http://blog.csdn.net/cyblueboy83/article/details/7645331设置堆栈大小http://www.cnblogs.com/nsnow/archive/2010/08/06/1794490.html
2015-03-18 11:32:16 1470
转载 void* memcpy(void* dst, const void* src, int size)
#include void *memcpy(void *to, const void *from, size_t count)函数memcpy()从from指向的数组向to指向的数组复制count个字符。如果两数组重叠,不定义函数的行为。在C99中,to和from由restrict修饰。先来看看微软的实现:void * __cdecl memcpy (
2015-03-18 10:12:54 5500
转载 mysql引擎
MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。 MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。 InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差
2015-03-18 10:00:30 436
转载 贪心算法
把一个复杂问题分解为一系列较为简单的局部最优选择,每一个选择都是对当前解的一个扩展,知道获得问题的完整解。在解决问题的策略上目光短浅,只根据当前已有的信息做出选择,而且一旦做出了选择,不管将来有什么结果这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解.参考
2015-03-13 15:09:11 515
转载 背包算法
背包问题(Knapsackproblem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。这个问题涉及到了两个条件:一是物品总的大小小于或等于背包的大小,二是物品总的价值要尽量大。参照资料:http://blog.csdn.net/zs234/article/details/7487
2015-03-13 14:56:45 545
转载 桶排序
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响参考资料:htt
2015-03-13 10:51:13 5444
原创 boost operation
operation也分为两大系:IOCP Enable和Disable系列所有IOCP Enable的operation,其基类都是struct OVERLAPPED结构参照资料:http://blog.csdn.net/henan_lujun/article/details/8965044
2015-03-11 11:02:54 606
转载 Boost::asio io_service
io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列参照资料:http://www.cnblogs.com/zhiranok/
2015-03-09 11:51:02 712
转载 win_iocp_io_service
win_iocp_io_service实现完成端口的具体过程:1.io_service 的构造函数调用 win_iocp_io_service::init(),这个过程创建一个完成端口句柄.2.用户创建若干线程,在线程函数里调用io_service::run,...,它们都会最终调用win_iocp_io_service::do_one();3.do_one里会做一次完成端口状
2015-03-09 11:45:32 1141
转载 asio体系结构
asio体系划分为三层:io object层,basic_模版类层,服务层。第一层:io object层,作为应用程序直接使用的对象,是各种basic_模版类的typedef实例类。第二层:basic_模版类层,提供对外操作的接口,并把具体操作转发给服务类。第三层:服务层。提供具体操作的底层实现,这一层又分为两层:操作接收层平台适配层基本的体系结构关
2015-03-09 11:27:58 784
原创 同步,异步,阻塞,非阻塞
同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回非阻塞:非阻塞和阻塞的概念相对应,指在
2015-03-06 17:50:30 433
原创 多线程,并行,异步
线程:是进程中某个单一顺序的控制流。也被称为轻量进程(lightweight processes).计算机科学术语,指运行中的程序的调度单位.并行:一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中.异步:与同步相对应,异步指的是让CPU暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到
2015-03-06 17:27:57 562
原创 asnyc_read,async_read_some, async_receive
asnyc_read:1>是一个全局函数2>读满指定长度的缓冲区或出错才返回函数内部启动一个read_op,该op内部,多次调用stream.async_read_some,直到缓冲区填满,或者操作结束async_read_some:1>ip::tcp::socket的成员个函数 2>读取到数据或出错就返回,不一定读完了整个包。async_receive:
2015-03-06 14:04:00 3102
原创 粘包问题
1.关闭Nagle算法,以及把发送端的SEND_BUF设为02.boost提供了多个异步接受的重载实现,其中async_read可以指定只有刚好填满提供的接受缓冲区,才会回调处理接受的函数。(目前引擎采用此方法)参考资料:http://www.uchar.cn/using-the-asio-elegant-stick-for-processing-received-data-p
2015-03-06 14:02:30 511
转载 delete this
1.在delete this之后进行的其他任何函数调用,只要不涉及到this指针的内容,都能够正常运行。一旦涉及到this指针,如操作数据成员,调用虚函数等,就会出现不可预期的问题。2.如果在类的析构函数中调用delete this,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢出,系统崩溃。note:根本原因在于
2015-03-06 10:00:18 1857
原创 linux epoll
补充研究中。。LT(level triggered)是epoll缺省的工作方式,并且同时支持block和no-block socket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能性要小一点。传统的select/poll都是这种模型的代表. ET (ed
2015-03-04 19:28:36 375
原创 IOCP的一些笔记
本文只是记录下笔记,主要是参考资料的一些点,辅助个人理解,对其他人多半无用OVERLAPPED(重叠结构)CompletionPort(完成端口):暂时只用把它大体理解为一个容纳网络通信操作的队列完成端口中1.重叠结构要用几个2.绑定完成端口的时候传入单句柄参数,即_PER_SOCKET_CONTEXTif( NULL== CreateIoCompletio
2015-03-04 15:21:17 746
原创 游戏服务器笔记
1.为了游戏主逻辑循环的流畅运行,所有比较耗时的IO操作都会分享到单独的线程中去做,如网络IO,数据库IO和日志IO2.服务器公共组件实现1>服务器公共组件实现 -- 消息队列2>服务器公共组件实现 -- 环形缓冲区按照严格的先进先出顺序进行处理环形缓冲区是一项很好的技术,不用频繁的分配内存,而且在大多数情况下,内存的反复使用也使得我们能用更少的内存块做更多的事
2015-03-03 16:39:11 565
原创 变量的声明和定义
变量的声明有2种情况:1>建立存储空间(声明,定义):int a;2>不必建立存储空间(声明):extern int a;参考资料:http://www.360doc.com/content/11/1105/21/4083881_162098853.shtml
2015-03-01 17:59:19 535
redis5.0.4集群
2020-11-02
erlang安装包.zip
2020-01-10
peb-0.20b.tar.gz
2020-01-10
glibc-2.14.zip
2019-06-14
学生成绩管理系统(供教师使用)
2009-12-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人