用Bollger记录技术之路的点滴...

关注高性能linux网络编程,NoSQL, c/c++/java ~~~ weibo @语_行 http://weibo.com/201281062~~~ twitter @JerryVector https://twitter.com/JerryVector
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C++

摘要:关闭socket-close我们知道,tcp是一种支持全双工(full-duplex)通信的的协议,也就是说建立连接的两端可以在同一个时刻发送、接受数据。在需要关闭套接字的时候,我们一般调用:int close(int fd) 调用close后,这个套接字描述符将不再指向任何文件继而可以被重复使用。同时调用close后,tcp连接断开,client端和server段都不能再发送/接受数据.....更多内容请移步:深入分析tcp close与shutdown 阅读全文

posted @ 2013-11-16 16:20 语行 阅读(1428) 评论(0) 推荐(0)

摘要:用C++编程的都知道,C++提供了一个非常强大的操作符重载机制,利用操作符重载,我们可以为我们自定义的类增加更多非常有用的功能。不过,C++也有限制,就是当我们为自定义的类重载操作符时,重载操作符的含义应该跟内置类型一样,比如,你不能通过重载+号操作符来实现两个数相乘的运算,实现需要是两个数相加的运算。本篇,我重点介绍下重载前置++和后置++的区别(前置--跟后置--类似)。 我们知道,写for循环年的时候,可以用下面这两种方式: for(int i=0; i<10; i++) { //do something }for(int j=0; j<10; ++j) { //d... 阅读全文

posted @ 2013-08-14 23:39 语行 阅读(13817) 评论(5) 推荐(1)

摘要:SGI STL考虑到小型内存区块的碎片问题,设计了双层级配置器,第一级配置直接使用malloc()和free();第二级配置器则视情况采用不同的策略,当配置区大于128bytes时,直接调用第一级配置器;当配置区块小于128bytes时,遍不借助第一级配置器,而使用一个memory pool来实现。究竟是使用第一级配置器还是第二级配置器,由一个宏定义来控制。SGI中默认使用第二级配置器。 第一级配置器实现的比较简单,调用malloc()申请内存,申请失败的时候,将抛出bad_alloc异常。下边我着重介绍下二级配置器的实现思路。 上边提到了第二级配置器视情况不同而采用不同的策略;其主要目... 阅读全文

posted @ 2013-07-30 21:09 语行 阅读(2125) 评论(0) 推荐(0)

摘要:1、 符合STL标准的空间配器接口STL是c++中使用非常广泛的一个标准库,它包含各种有用的容器。而空间配置器作为STL各种容器的背后的核心,负责容器内部内存的分配和释放。不过空间配置器可以分配的也不只是内存,因为空间也意味着可以是磁盘或者其他存储介质。下边是一个符合STL规范的空间配置器的必要接口:allocator::value_typeallocator::pointerallocator::const_pointerallocator::referenceallocator::const_referenceallocator::size_typeallocator::differenc 阅读全文

posted @ 2013-07-30 18:54 语行 阅读(1443) 评论(0) 推荐(0)

摘要:Linux下,当我们用mysql c api 去操作mysqldb的时候,默认情况下,程序会以Latin1这种字符集去进行sql操作,这种情况,很可能就会出现乱码,比如,数据库设置的字符集是utf8, 然后我们通过程序向其中插入一条记录,然后我们去查询的时候,就会出现乱码。为了解决这个问题,我们可以调用int mysql_set_character_set(MYSQL *mysql, const char *csname) 这个函数,去对每一个到mysql的连接设置对应字符集,就可以解决乱码问题。例如下代码:MYSQL mysql;mysql_init(&mysql);if (!mys 阅读全文

posted @ 2013-03-01 22:50 语行 阅读(5237) 评论(0) 推荐(0)

摘要:最近在基于redis的c客户端hiredis做扩展的时候, 其中一个函数需要接受一个const char **的二级指针作为参数: void *redisCommandArgv(redisContext *c, int argc, const char **argv, const size_t *argvlen);这个函数主要是用于 需要传递多个string值的场景,类似于 lpush, del key1 key2..., zadd key score1 member1 score2 member2...这类命令, 其中 argc是传递参数的个数, argv主要用于传递的string的v... 阅读全文

posted @ 2012-11-17 14:07 语行 阅读(4683) 评论(3) 推荐(1)