![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络通讯
fengge8ylf
这个作者很懒,什么都没留下…
展开
-
高并发IM系统架构优化实践
https://yq.aliyun.com/articles/66461?utm_campaign=wenzhang&utm_medium=article&utm_source=QQ-qun&utm_content=m_8744转载 2017-06-06 14:30:17 · 552 阅读 · 0 评论 -
从code::blocks导出makefile文件
1,使用cbp2make工具2,使用cbmakegen插件请参考http://forums.codeblocks.org/index.php/topic,13675.0.html原创 2011-12-02 17:25:46 · 7368 阅读 · 0 评论 -
内存泄露
有一种内存泄露 就是使用链表(vector list map等 且存的是指针)的时候没有及时的清空 不断的放里面放数据 逐渐的吃内存 并且在程序关闭的时候又正确的释放了 这种情况有时不好查原创 2013-01-22 14:23:20 · 492 阅读 · 0 评论 -
编程注意事项个人总结
1,流程多考虑异常情况,非法操作。2,多做一些错误判断和检查。并输出相关LOG3,在插入操作时( vector list map)要先判断是否已经存在。4,内存容易出错的原因 使用了空指针或者已经被删除的指针。 内存溢出,在往内存拷贝数据的时候要判断长度。 开辟了很大的内存。(解析出来的值过大)5,服务器要检验客户端传来的值的有效性。尤其和开内存 拷贝内存 或循环原创 2011-12-18 20:08:24 · 683 阅读 · 0 评论 -
coredump设置方法
关于内核转储的设置方法 1. 内核转储作用 (1) 内核转储的最大好处是能够保存问题发生时的状态。(2) 只要有可执行文件和内核转储,就可以知道进程当时的状态。(3) 只要获取内核转储,那么即使没有复现环境,也能调试。 2. 启用内核转储1.1 查看内核转储是否有效在终端中输入以下命令,查看内核转储是否有效。#转载 2013-08-13 09:09:14 · 966 阅读 · 0 评论 -
centos下mysql++的编译安装
1,yum install mysql-devel2,./configuremakemake install原创 2016-06-12 14:25:20 · 1092 阅读 · 0 评论 -
mysql Connector C++在centos上的编译
一,编译需要两个库的支持:boost和mysql开发库。Mysql的开发库通过 yum installmysql-devel安装。二,进行编译:1, 执行: cmake(Connector所在的路径)如果没有cmake,通过yum install cmake进行安装。运行命令后会生成makefile。2, 执行: make3, 执行: makeinstall原创 2013-10-16 13:50:20 · 2600 阅读 · 0 评论 -
一致性哈希算法应用与分析
转载:http://www.cnblogs.com/xudong-bupt/p/3185194.html一致性哈希算法应用与分析 一致性哈希算法主要使用在分布式数据存储系统中,按照一定的策略将数据尽可能均匀分布到所有的存储节点上去,使得系统具有良好的负载均衡性能和扩展性。感觉一致性哈希与数据结构中的“循环队列”还是有一点联系的。1.简单哈希算法 哈希(h转载 2016-05-04 14:49:09 · 455 阅读 · 0 评论 -
一个 Linux 上分析死锁的简单方法
转载:http://www.ibm.com/developerworks/cn/linux/l-cn-deadlock/本文主要介绍一种在 Linux 上分析死锁问题的简单方法。主要介绍死锁的基本概念,以及如何使用 pstack 和 gdb 对死锁问题进行分析。2 评论于 东海, 软件工程师, IBM宋 波, 软件工程师, IBM转载 2016-03-31 14:37:53 · 1603 阅读 · 0 评论 -
100万并发连接服务器笔记之1M并发连接目标达成
转载:http://www.blogjava.net/yongboy/archive/2013/04/11/397677.html100万并发连接服务器笔记之1M并发连接目标达成第四个遇到的问题:tcp_mem在服务端,连接达到一定数量,诸如50W时,有些隐藏很深的问题,就不断的抛出来。 通过查看dmesg命令查看,发现大量TCP: too many of orphaned转载 2016-03-30 10:58:40 · 1870 阅读 · 0 评论 -
从 0 到 1:微信后台系统的演进之路
编者按:2 个月的开发时间,微信后台系统经历了从 0 到 1 的过程。从小步慢跑到快速成长,经历了平台化到走出国门,微信交出的这份优异答卷,解题思路是怎样的?本文由张文瑞,微信后台团队出品。本文由 36 氪转载自微信公众号infoQ(微信号:infoqchina)。从无到有2011.1.21 微信正式发布。这一天距离微信项目启动日约为 2 个月。就在这 2 个月里,微信从无到有,大转载 2016-02-02 15:11:04 · 750 阅读 · 0 评论 -
Linux动态库相关知识整理
Linux动态库相关知识整理动态库和静态库在C/C++开发中很常见,相比静态库直接被编译到可执行程序, 动态库运行时加载使得可执行程序的体积更小,更新动态库可以不用重新编译可执 行程序等诸多好处。作者是一个Linux后台开发,这些知识经常用到,所以 整理了一下这方面的知识。静态库相对简单,本文只关心Linux平台下的动态库。创建动态库这里我把一个短小却很有用的哈希函数编译成转载 2015-11-11 10:35:47 · 529 阅读 · 0 评论 -
boost的递归锁
引用之前发表过的文章: http://lajabs.blog.cd/?p=342针对如下错误:terminate called after throwing an instance of 'boost::exception_detail::clone_impl'wha转载 2011-09-20 10:40:49 · 7926 阅读 · 0 评论 -
linux epoll模型
转载自:http://www.cppblog.com/Khan/archive/2008/04/02/46013.htmlhttp://www.xmailserver.org/linux-patches/nio-improve.html Linux I/O多路复用技转载 2011-08-19 22:28:52 · 825 阅读 · 0 评论 -
对“关于boost::condition的用法”文章的个人的分析
首先我们看只有一个reader/一个writer的情形#include #include #include #include #include int number;boost::mutex m;boost::condition not_f原创 2011-08-13 08:34:52 · 4359 阅读 · 0 评论 -
利用mysql++对数据库插入汉字
数据库字段设置成gbk程序也设置成gbk mysqlpp::Connection conn(false); conn.set_option(new mysqlpp::SetCharsetNameOption("gbk"));原创 2011-08-03 16:34:04 · 691 阅读 · 0 评论 -
封包和拆包
对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.自从我从事网络通讯编程工作以来(大概有三年的时间了),我一直在思索和改进封包和拆包的方法.下面就针对这个问题谈谈我的想法,抛砖引玉.若有不对,不妥之处,恳求大家指正.在此先谢过大家了.一.为什么基于TCP的通讯程序需要进行封包和拆包.TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是原创 2006-06-13 10:08:00 · 16827 阅读 · 11 评论 -
解决io_service::run在没有任务就返回的问题
当有任务的时候,run函数会一直阻塞;但当没有任务了,run函数会返回,所有异步操作终止。在一个客户端程序中,如果我想连接断开后重连,由于连接断开了,run会返回,当再次重连的时候,由于run返回了,即使连接成功了,也不会调用aysnc_connect绑定的回调函数。有两原创 2011-09-21 10:32:52 · 11320 阅读 · 2 评论 -
使用boost::asio需要注意的一个地方
用ASIO写了一个客户端和服务器。但在测试的时候发现客户端的async_connect所绑定的函数有时不返回。后来经过一番思考,发现是io_service的run调用时机不对。run必须在async_connect后者async_accept后调用,不然不会阻塞在run上原创 2011-09-20 11:54:57 · 1653 阅读 · 0 评论 -
Linux下,多线程程序死循环问题调试
当你的软件在某个时刻停止服务,CPU占用达到100%+,这种问题一个可能的原因是产生了死循环,假设程序某处存在潜在的死循环,并在某种条件下会引发,本文以一个示例来定位出现死循环的位置。当程序某处存在死循环,通常定位问题及缩小范围的方法是,在可疑的代码处加log,或者注释掉可疑代码,这对于容易重现问题的程序来说还好,但对于“偶尔”才会产生问题程序却很难调试,因为我们很难重现程序故障。本文所述的调转载 2011-12-02 15:27:18 · 2107 阅读 · 0 评论 -
shared_from_this 几个值得注意的地方
shared_from_this()是enable_shared_from_this的成员 函数,返回shared_ptr。首先需要注意的是,这个函数仅在shared_ptr的构造函数被调用之后才能使 用。原因是enable_shared_from_this::weak_ptr并不在构造函数中设置,而是在shared_ptr的 构造函数中设置。如下代码是错误的:clas转载 2011-10-21 20:52:00 · 3171 阅读 · 0 评论 -
对条件变量(condition variable)的讨论
作者:王东 1.1 什么是条件变量和条件等待?简单的说:条件变量(condition variable)是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待某个条件为真,而将自己挂起;另一个线程使的条件成立,并通知等待的线程继续。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 Wiki中的定义如下:Conceptually转载 2011-10-22 14:59:22 · 15068 阅读 · 0 评论 -
ubuntu下让崩溃的程序产生core dump文件
用下面的命令运行程序sudo sh -c "ulimit -c ulimited;./HelloWorld"也可以先ulimit -c unlimitedulimit unlimited然后每次运行程序前要ulimit -c unlimited然后运行原创 2011-08-08 14:34:45 · 4909 阅读 · 0 评论 -
利用读写锁和智能指针来实现多线程下对资源的多个地方读和多个地方写的实现。
比如对于一个list,我们有时需要在多个线程里对它进行访问(读操作),但在其他的线程有可能对他进行删除和添加操作(写操作)。所以要对list进行保护。有以下几种处理方法1,直接对list进行加锁方式,不管是读操作还是写操作。但这样一来效率就低了。因为在只有读操作的原创 2011-10-05 10:05:18 · 1393 阅读 · 0 评论 -
boost::asio要注意的一个地方
asio是在多线程环境里运行的,他所绑定的用户所传递的回调函数也是在多线程里运行。在asio线程外对asio里函数的调用(比如close) 要放到asio线程里调用,方法就是用post。原创 2011-10-03 10:57:13 · 1324 阅读 · 0 评论