自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chenycbbc0101的博客

奔跑的猪

  • 博客(34)
  • 收藏
  • 关注

原创 使用GatewayWorker框架,多个workerman进程(businessworker)负载不均衡的问题解决过程

公司搭建一套智慧社区、智能对讲管控云平台时,使用GatewayWorker框架搭建app端外推送的服务。发现性能比预期的低。也就是GatewayWorker(https://github.com/walkor/GatewayWorker/)中的workerman组件往google fcm 服务和ios apns服务推送消息的性能不及预期。经过netstat -lanp后发现只有其中一个worker...

2018-08-09 16:07:59 4382

原创 结合freeswitch,分析voip中sip信令与音视频rtp传输的流程

freeswitch(下面用fs指代)作为sip server转发rtp包时,sip通话的整体流程大致如下:1、主叫发送invite给fs,并在sdp中携带主叫方接下来节将发送rtp包给fs的端口port1;2、fs转发invite信令给被叫放,其中已经修改过主叫方sdp中的IP&port2为fs服务端接收rtp包的地址信息(因为fs需要转流,所以fs要告诉需要修改sdp中描述rtp包目的...

2018-05-08 16:22:04 5069

原创 ipv6/ipv4双栈应用服务器开发细节

公司的楼宇对讲云平台项目需要为北美客户部署一套,美国T-mobile运营商的4G网络已经是纯ipv6的环境了,所以必须让平台支持ipv4/ipv6双栈网络模式。让平台支持双栈,只按照以下几个步骤来处理即可:1、主机保证有ipv4、ipv6两个网路地址。(国内实验室测试的时候,ipv6地址可以通过隧道临时配置);2、让服务监听在ipv6的模式下(这样既可以接收ipv4客户端,也可以接收ipv6客户端...

2018-05-07 17:55:40 6549 1

原创 aliyun ubuntu pstack无法使用的问题解决 crawl: Input/output error

好久没写博客了。

2017-11-14 16:43:37 9314

原创 thrift安装过程报错处理

1、make过程中总是: src/generate/thrift-t_c_glib_generator.o: file not recognized: File truncated     /var/log/message查看了内核日志:发现 localhost kernel: Out of memory    怀疑是内存不足导致,看了下虚拟机内存分配只有1g,增加到2g后,make,一切

2017-05-03 11:08:35 3928

转载 使用 /proc 文件系统来访问 Linux 内核的内容

本文转自:https://www.ibm.com/developerworks/cn/linux/l-proc.html

2017-04-10 11:54:54 619

转载 Linux动态库(.so)搜索路径设置方法

众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法

2017-02-06 14:55:28 2789

原创 mysql5.6启动失败的一般解决方法

本文针对mysql5.6而言:        MySQL server PID file could not be found!   Starting MySQL...The server quit without updating PID file (/var/lib/mysql/mysql.pid).---------------------------------------

2017-01-20 12:36:14 6756

原创 nginx支持thinkphp

最近在搭建lnmp服务框架支持thinkphp,碰到一些问题,记录一下:   1、php7不兼容Thinkphp5以下的版本   2、nginx配置文件怎样支持Thinkphp的重写:server { listen 80; server_name localhost; root /home/web/nginx/

2017-01-13 18:29:11 430

原创 libxml2 解析xml字符串

最近在封装一个sdk接口给内部使用的时候,原来项目都是用c++开发的,xml解析工具用的是:Tinyxml,挺不错,至少不用考虑内存释放问题。这也是c++资源管理的好处。。。因为提供的是c的接口,所以tinyxml显然不能用了。后面就想到用libxml2,因为他用C语言开发的。网上想找现成的,结果发现都是解析文件的,记录一下解析xml字符串的过程吧,主要是内存的管理小心一点就OK了:

2017-01-11 20:07:35 2305

转载 linux性能分析的前60秒

转载自:http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.htmlLinux Performance Analysis in 60,000 MillisecondsYou login to a Linux server with a performance issue: w

2016-11-20 12:58:39 1007

转载 流媒体学习好地方

http://www.wisestudy.cn/opentech/darwin-serverArchitecture.html

2016-09-22 20:22:14 384

原创 std::list<>在结构体中占用的内存大小

#include#include#include#include#includetypedef struct tagTest{ char name[200]; int year;}Test;#define NUM 1typedef struct tagInfo{ //int count; char c; //会对齐到8字节,无论是count

2016-09-14 16:44:03 2696

转载 makefile三个常见变量:$@,$^,$<

转载自:http://my.oschina.net/u/1413984/blog/199029Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是: $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。 如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为: # 这是简化后的Makefile main:ma

2016-09-09 10:30:17 576

原创 epoll中的data联合体怎样使用的问题

1、epoll结构体的成员data其实是一个结构体,具体如下:typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64;} epoll_data_t; struct epoll_event{ uint32_t events; /* Epoll events */ epoll_

2016-09-08 15:16:32 5700 1

转载 使用reuseport和recvmmsg优化UDP服务器_应用服务器

地址:http://www.shangxueba.com/jingyan/2216074.html最近刚好完成了一个DNS服务器的开发,因此积累一点对高性能UDP服务器的开发经验。如果你也遇到UDP服务器的性能不佳,远不如你的预期,也许你也可以采用本文的手段去优化一下试试。    udp不像tcp是有连接的,因此udp不能通过建立多个连接来提高对服务器的并发访问,然后我

2016-09-08 11:44:02 4687

原创 wireshark ts流分析--简明步骤

1、先过滤出:pat包,2、具体上面已经说明。

2016-09-07 19:43:18 4754

转载 rtsp 客户端怎样保活

1、 Q: 各位老大,小弟有个问题,就是RTSP客户端与服务器之间是如何保活的? 就是当client与server建立好session后,是如何保证该session正在使用,不被删掉了噶?        A1:  RTSP服务器与客户端之间的保活,有几种不同的做法。    1. 首先,RTSP服务器对于每个客户端,都应该有一个超时定时器,一旦客户端超时,就将对应的会话删除。如果会话还活

2016-09-05 11:36:24 2793

原创 boost_foreach

#include#include#include#include#include:wq#include int main(){//typedef std::pair IdSizePair_t;std::map mmap; mmap[1] = 1;mmap[2] = 2;mmap[3] = 3;//BOOST_FOREACH( IdSizePair_t i, mma

2016-08-30 20:16:54 449

原创 线程池

#include #include#include#includeusing namespace std;static pthread_mutex_t m_pthreadMutex = PTHREAD_MUTEX_INITIALIZER; /** 线程同步锁 */static pthread_cond_t m_pthreadCond = PTHREAD_COND_INITIAL

2016-08-30 14:11:26 303

原创 list-erase

#include#include#include#include#includetypedef std::list CList_int;void deleteAllList(){ CList_int::iterator it, it1; if( m_list.empty() ) { return; } for( it =

2016-08-29 16:12:48 435

转载 c++ string类的实现

#include#include#includeusing namespace std;class String{ friend ostream& operator<< (ostream&,String&);//重载<<运算符 friend istream& operator>> (istream&,String&);//重载>>运算符public: Strin

2016-08-25 19:08:18 351

转载 c++ string类的内部实现

#include#include#includeusing namespace std;class String{    friend ostream& operatorfriend istream& operator>> (istream&,String&);//重载>>运算符public:    String(const char* str=NULL);

2016-08-25 19:07:01 1427

原创 sql语句

1、查询某个日期接下来的几天:    select '2016-02-0'::date + i;2、确定某个表是否存在:SELECT COUNT(*) FROM pg_class WHERE relname = ‘表名’3、做除数时需要的判断: case when sum(count)=0 hen 0 else sum(h.speed * h.count)/sum(h.co

2016-08-23 14:10:54 311

原创 派生类的构造函数中,可以将基类作为成员变量进行初始化

#include#include#includeusing namespace std;class A{public: A():m_year(0){} A(int n){m_year = n;}public: int m_year ;};class B : public A{public: B(){} B(int n):A(n)

2016-08-19 17:46:00 3027

原创 malloc了多个结构体长度的内存后,怎样操作每个结构体

#include #include#include#include using namespace std;typedef struct tagtest{ int ID; char name[24];}TEST;int main(){ int num = 10; int ulmemsize = sizeof(TEST) * num; TEST *pstrfid =

2016-08-15 15:33:40 2068

原创 自己实现简单的智能指针

#include#includeusing namespace std;templateclass share{ public: share():point(0){} share(T* p1) { point = p1; } ~share() { cout << "begin to delete share" << endl; if

2016-08-04 19:40:35 2211

转载 libevent的evbuffer跟bufferevent的区别

libevent源码分析–evbuffer和bufferevent的关系2014年08月29日 ⁄ 综合 ⁄ 共 2853字 ⁄ 字号 小 中 大 ⁄ 评论关闭在libevent中还有一个很重要的部分。evbuffer和bufferevent。evbuffer是一个缓冲区,用户可以向evbuffer添加数据,evbuffer和bufferev

2016-08-02 08:56:31 1779

转载 三种 工厂模式

连接如下http://www.cnblogs.com/cxjchen/p/3143633.html

2016-08-01 16:42:01 407

原创 论assert(0)的作用

一般在代码中用assert(0)的作用:在认为不可能执行到的地方前加上这个断言,如果程序走到这里,那么一定是逻辑错误。其实就是一种预防性的错误检查。

2016-07-29 19:59:23 755

转载 类之间的权限(转载)

private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。注:友元函数包括3种:设为友元的普通的非成员函数;设为友

2016-07-29 18:55:37 296

原创 socket选项--SO_LINGER,SO_REUSEADDR(SO_REUSEPORT)

SO_LINGER:当TCP连接的一段主动close()连接时,一般情况下,系统会马上返回,但是当有数据残留在发送缓冲区时,系统会现将这些数据发送出去再返回,这样可以优雅地关闭掉连接。这就可能使close()阻塞在系统调用中。    这种情况下,我们可以使用套接字选项SO_LINGER来改变这种默认设置。该选项会在用户空间与内核间传递如下结构体:struct linger{

2016-07-29 18:54:51 632

转载 c++ 虚析构函数的作用分析

c++ 的虚析构函数的作用

2016-05-29 16:14:10 467

转载 hash函数

1、hash函数广泛用于密码学中,比如银行客户的密码通过函数函数转换得到一个加密过的新密码,把这个信息密码保存在数据库中,每次客户登录时,都会将密码经过hash算法转换后,再次与数据库中的密码进行比较。由于hash算法是不可逆的,所以可以保证即使得到了数据库中的密码,也无法破解得到原先的密码。2、hash还可以用来搜索,即用生成的hash值来表示所存储内容的存储器中的位置,这样可以将搜索的时间

2016-04-17 11:25:53 424

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除