自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (4)
  • 收藏
  • 关注

原创 分离opensips错误日志

修改OpenSIPS日志保存路径OpenSIPS可以设置写入的设施,设施配置对应的log文件路径。默认配置的是log_facility=LOG_LOCAL0。如下配置:vim /etc/rsyslog.conf增加两行:local0.* /opt/opensips/logs/opensips.loglocal0.err /var/log/opensips/opensips_err.log然后重启rsyslog服务:/etc/init.d/rsyslog restart(如果删...

2021-08-16 16:53:26 304

原创 OPENSIPS系列之拉黑IP,防无效请求攻击

安装fail2banapt install -y fail2ban sendmail mailutils/etc/init.d/sendmail start配置fail2ban增加以下内容到配置文件/etc/fail2ban/jail.conf :[opensips]enabled = truefilter = opensipsaction = iptables-allports[name=opensips, protocol=all] sen..

2021-04-21 17:23:53 605

原创 opensips系列之共享内存,进程个数配置

共享内存配置修改/usr/local/opensips/etc/opensips/opensipsctlrc增加STARTOPTIONS="-m 512",表示修改共享内存的大小为512MOpenSIPS有自己的内存分配器,服务器内存分配及管理有以下几个特点:1.限制最大使用的内存范围;2.内存管理优于系统分配API;3.通过编译选项,可以选择多个内存分配器。OpenSIPS采用多进程应用设计方式,服务器通过共享内存屏蔽进程间通信的复杂问题,对外给用户提供了用于内存管理的API.

2021-04-21 11:09:10 972

原创 Freeswitch的一个内存泄漏分析

发现问题在平常开发过程中,要做一个细心的人,不轻易放过任何一个问题。这次发现Freeswitch的内存泄漏,是因为经常有关注测试环境的Freeswitch内存占用。发现在测试环境升级的第二天Freeswitch内存就升到了200-300M,非常异常!观察问题使用脚本定时统计Freeswitch的内存占用,同时打开Freeswitch的调试开关。export TPORT_DUMP=/usr/local/freeswitch/log/tport_sip.log输出Freeswi.

2021-04-16 18:29:32 1743 2

原创 在win10 arc diff提交后,phabricator界面显示context not available

解决方法:1、下载GNU diff工具,注意安装依赖包。1.1 Install GNU diff (http://gnuwin32.sourceforge.net/packages/diffutils.htm).1.2 create a bat file (mydiff.bat) with the following content:@echo off<full path of the diff.exe installed in step 1> -U9999999 -L %

2021-03-23 17:48:57 278

原创 如何分析TCP连接的内存占用情况

1、先查看服务器 PAGESIZE 设置,单位是 Byte,查出来是4096getconf PAGESIZE2、查看 tcp 连接分配的缓冲区内存大小设置,单位是 Bytecat /proc/sys/net/ipv4/tcp_rmem # TCP套接字的接收缓冲区大小cat /proc/sys/net/ipv4/tcp_wmem # TCP套接字的发送缓冲区大小查询结果:root@Develop02:~# cat /proc/sys/net/ipv4/tcp_rme

2021-03-10 10:14:17 3203

原创 360的evpp库的一处内存泄漏分析,shared_ptr的循环引用

场景使用evpp的evnsq的代码连接nsqlookupd进行Http查询,然后连接nsq,存在内存泄漏。类似于这样的代码:#include <evnsq/exp.h>#include <evnsq/consumer.h>#include <evpp/event_loop.h>int OnMessage(const evnsq::Message* msg) { LOG_INFO << "Received a message, i

2021-03-09 17:08:31 519 1

原创 arc Undefined index: Repository UUID 解决

问题:执行arc diff --trace后,碰到错误。No unit test engine is configured for this project.>>> [10] (+11,571) <exec> $ svn diff --depth empty --diff-cmd /Users/mac-mini2/Repository/phabricator/arcanist/scripts/repository/binary_safe_diff.sh -x -U3

2021-03-08 15:33:47 533

原创 Phabricator结合SVN的使用流程

术语phabricator怎么念http://www.howtopronounce.cc/phabricator安装安装mysqldocker search mysql 搜索docker pull mysql:5.6 下载docker images |grep mysql 查看docker run -p 3306:3306 --name mysql_docker -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs...

2021-03-01 16:41:27 789

原创 requests的get类型请求params参数中存在百分号‘%’的解决办法

比如这样的请求:curl http://172.18.41.220:8181?cmd=regipv6\&local_inner_ip=fe80::5484:7aff:fefe:9799服务端实际上收到的是:DEBUG: doGet param:{'cmd': 'regipv6', 'local_inner_ip': '%5Bfe80%3A%3A5484%3A7aff%3Afefe%3A9799%5D'}如何解决?网上给的办法是>>> import reques..

2021-01-06 20:50:18 1998

原创 docker系列之日常问题记录

日常问题问题1Unable to find image ' :latest' locallyFATA[0000] Invalid repository name ( ), only [a-z0-9-_.] are allowedrun.sh: line 4: -v: command not found解决方法:去掉 run.sh 的换行符\ 后面的多余空格docker run --name nginx --privileged=true --restart=always --net=.

2020-11-27 17:24:48 642

原创 FreeSwitch系列之监控

如何安装1、git clonehttps://gitee.com/chenvv0417/freeswitch-monitor.git2、效果图

2020-11-27 15:53:13 1155 4

原创 Opensips系列之使用自己的账号系统过滤非法请求

配置修改修改opensips.cfg,判断sip的from header的user在不在指定sip_register_table里面 else if (is_method("REGISTER")) { # auth_db模块中配置的数据库中的用户表 $var(auth_code) = fs_authorize("$fU", "sip_register_table"); if ( $var(auth_code) <= 0)

2020-11-23 13:44:38 396

原创 FreeSwitch系列之认证算法

直接看最后认证的源代码(sofia_reg.c:sofia_reg_parse_auth):for_the_sake_of_interop: if ((input = switch_mprintf("%s:%q", regstr, uri))) { switch_md5_string(uridigest, (void *) input, strlen(input)); } if (nc && cnonce && qop) {

2020-11-20 16:40:39 853

原创 FreeSwitch系列之注册流程处理

业务流程终端向服务器发送REGISTER请求sip消息示例: REGISTER sip:39.108.105.163 SIP/2.0 Max-Forwards: 10 Record-Route: <sip:39.108.105.163:5070;r2=on;lr> Record-Route: <sip:39.108.105.163:5070;transport=tcp;r2=on;lr> Via: SIP/2.0/UDP 39.10.

2020-11-12 17:27:45 1583

原创 FREESWITCH系列之内存泄漏排查总结

心路历程1.懵逼状态在接到这个任务的时候,对FreeSwitch处于一问三不知的情况,不了解FreeSwitch的业务,不了解流程,更要不要说代码了。但是还是硬着头皮上了,原本以为是个短期接触战,没想到被自己搞成了持久战。回过来头看,一开始对任务的难度还是低估了,没有做好持久战的准备。2.无头苍蝇状态在接到任务后,在没有先去了解业务的情况下,就开始了各种尝试。工具1:valgrind,跑了一段时间后,除了输出一堆无用的垃圾外,没什么用工具2:fmpool,开源的工具,使用该工具后,性

2020-11-12 09:08:40 2249

原创 FREESWITCH系列之调试技巧

打开日志开关export SOFIA_DEBUG=9export NUA_DEBUG=9export NTA_DEBUG=9export NEA_DEBUG=9export TPORT_DEBUG=9export TPORT_LOG=1export TPORT_DUMP=/usr/local/freeswitch/log/tport_sip.logexport SOA_DEBUG=9export IPTSEC_DEBUG=9export SU_DEBUG=9修改su的日志打印

2020-11-12 08:58:15 608

原创 FreeSwitch系列之接收消息处理流程

接收消息处理流程tport_wakeup_pri在profile clone线程中被触发。1、接收消息2、解析消息成结构体msg3、找到leg去处理请求4、创建irq5、执行leg的回调函数,转到nua_handle层去处理。6、找到method。7、执行三部曲:init-->preprocess-->reporttport_wakeup_pri =>tport_recv_event =>tport_recv_data(self);

2020-11-11 17:59:19 664 1

原创 FreeSwitch系列之mod_sofia启动流程

模块加载过程启动事件处理线程池启动事件处理线程池 :SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) => sofia_msg_thread_start(0); => sofia_msg_thread_run => sofia_process_dispatch_event => our_sofia_event_callback : 处理消息这个线程的

2020-11-11 16:38:41 916

原创 FREESWITCH系列之学习资料汇总

FreeSwitch架构篇FreeSwitch的架构https://blog.youkuaiyun.com/yetyongjin/article/details/96838256https://blog.youkuaiyun.com/hello_zyg/article/details/79125052FreeSwitch总体架构https://www.cnblogs.com/Braveliu/p/11325031.htmlSofia-Sip辅助文档Sofia-SIP辅助文档一 – Sofia-SIP源代

2020-11-11 16:30:53 402 1

原创 FREESWITCH系列之代码技巧

FreeSwitch是一款优秀的开源软件,里面很多代码技巧值得大家学习。1.条件判断转化成函数比如nta.c:2768,tport_is_stream把复杂的条件判断提取成一个函数,利用函数命名tport_is_stream让代码清晰易读。 stream = tport_is_stream(tport); /* Try to use compression on reverse direction if @Via has comp=sigcomp */ if (s

2020-11-06 18:06:28 475

原创 FreeSwitch系列之内存管理

1.sofia-sip库的内存管理home-based 内存管理机制,在需要分配许多内存块的情况下非常有用。分配器是通过分配中心保存各个分配内存块的引用来实现的。当分配中心释放,所有它保持引用的内存块都会被释放。为一个给定任务分配大量的内存块时基于home的内存管理将非常高效。分配将通过home内存来执行,home内存保留着每个分配内存块的地址。当home内存被释放时,它也将释放那些它跟踪的内存块。这大大简化了应用代码逻辑,不再需要维护每块分配的内存空间,不需要保留他们的地址也不再需要一个个单独释放

2020-11-02 19:27:02 1154 1

原创 使用GPERFOOLS排查内存泄漏

什么是gperftools一个优化的内存管理算法—tcmalloc性能优于malloc。一个用于CPU profile的工具,用于检测程序的性能热点,这个功能和gprof类似。一个用于堆检查工具,用于检测程序在是够有内存泄露,这个功能和valgrind类似。一个用于Heap profile的工具,用于监控程序在执行过程的内存使用情况。如何安装代码:https://github.com/gperftools/gperftoolsgit clone https://githu.

2020-10-27 17:57:04 687

原创 C++常见编译WARNING小结

首先要说的是大家不要对Warning视而不见,有时候通过Warning确实可以找到一些隐患。其次,未来新增代码应不允许Warning出现,有Warning需要修改掉。以下是常见的Warning小结。常见十大Warning1.warning: comparison between signed and unsigned integer expressions [-Wsign-compare]常见错误写法:std::vector<int> photo_id;for (int i

2020-10-09 09:41:38 7297

原创 PHP解压ZIP乱码问题

php版本:PHP 5.6.28原来的解压代码: $zip = new ZipArchive(); $flag = $zip->open($filePath); if ($flag !== true) { return $retJson; } $zip->extractTo($extractPath); $zip->close();如果zip文件含有文件名是B1+1231+伊利.jpg类似的文件,解压出来是B1+1

2020-09-18 16:07:18 614

原创 Timing Wheel的c++实现

必须的知识储备1、boost的circular_buffer。2、c++的shared_ptr和weak_ptr。3、Timing wheel,可以学习志伟的服务器网络框架设计.ppt。csmain的代码实现主要数据结构1、Entry结构持有连接(TCPConn)的弱引用。2、Entry的析构函数实现了连接的主动关闭。本质上就是把连接的管理交给了Entry结构。typedef std::weak_ptr<evpp::TCPConn> WeakTCPConnPtr

2020-07-02 09:52:51 464

原创 批量转换c++中非utf-8编码的文件

首先是查找非utf-8编码的文件:find . ! -iregex '.*\.svn.*' -type f -regextype posix-extended -regex ".*\.(cpp|cc|c|h)" -exec bash -c "enca -L zh_CN {}|grep GB2312 > /dev/null && echo {}" \;其次是批量转换:find . ! -iregex '.*\.svn.*' -type f -regextype posix

2020-06-18 11:15:32 395

原创 使用ASTYLE统一C++代码风格

如何统一使用统一的astyle配置:astyle --style=ansi --indent=spaces=4 -k1 -W1 -p -j -H -c -U -w -S -M -z2 -n下面详细解释一下各个参数的含义:1、指针对齐,我们选择k1。--align-pointer=type OR -k1 比如char* p--align-pointer=middle OR -k2 比如char * p--align-pointer=name OR -k3

2020-06-17 17:17:51 672

原创 如何展示XML,利用XSLT展示CATCH2单元测试报告的一次实践

在网上搜索只能找到将gtest单元测试的报告转换为HTML,没有catch2的模板。所以只能参考gtest的xslt模板。参考链接:https://blog.youkuaiyun.com/Neil4/article/details/104484792整理后相应的catch2的xslt模板如下:<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/

2020-06-16 20:15:59 661 3

csgate.apk

可以gate,ParseAppReportStatusMsg szText=<Msg> <Type>ReportStatus</Type> <Protocal>2.0</Protocal> <Params> <ModuleID>4</ModuleID> <User>sarena76@naver.com</User> <Passwd></Passwd> <MsgSeq>0000000001</MsgSeq> <DeviceToken></DeviceToken> <VoipToken></VoipToken> <FcmToken>fgFEl367nCg:APA91bFMguX-4dCelKCSjpaMeBYYRjk1HGRM3earJjchdSiEyEDm7kMdZpKe5ZAq6aeJu3aEwtN9YqcuhVb7wp7Iq9rB3bWkpj6g5GTQ8q3BAyyx5lFAOzAhp6sS9kn2sXC2Q2SGIE5U</FcmToken> <AppToken>8bd333e2qBEdvodhJieijelck5CE9jrK</AppToken> <Version>5200</Version> <AppVersion>3.0.6.40</AppVersion> <Language>ko-KR</Language> </Params> </Msg>

2020-06-19

C In Depth( ppt,C深度)

非常适合初学者,有兴趣的也可以瞧瞧。 是PPT格式的。 可以先看看这几个问题,能不能回答的出来?如果不能的话,嘿嘿,那还是有用的。 What happened before a function is called? What do a called function do? What happened after a function is called?

2009-02-12

正则表达式(regular expression)

DEELX 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎。是 RegExLab 开展的一个研究开发项目。 基本特点: 支持与 Perl 兼容的正则表达式语法。 支持 IGNORECASE, SINGLELINE, MULTILINE 等常见匹配模式。 兼容性强,能在 vc6, vc7, vc8, gcc, Turbo C++ 等大多数 C++ 环境编译。 支持命名分组,条件表达式,递归表达式等多种高级特性。(1.2版本新特点) 与 GRETA、boost 相比,DEELX 独到之处: 完全使用模版库编写,支持 char, wchar_t, int 等以及其他基类型版本。 全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便。 支持从右向左匹配模式,可从文本结束位置向前搜索匹配。 可防止零长度子匹配循环无限次而产生的死循环。(1.2版本新特点) DEELX 不足之处: DEELX 是完全免费的实验室产品。 为弥补实验室产品的不足,本站同步推出了与本引擎完全兼容的调试工具:Match Tracer。

2009-02-12

空空如也

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

TA关注的人

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