- 博客(224)
- 资源 (3)
- 收藏
- 关注
原创 gdb小结
最近频繁用到一些GDB看上比较高大上的点,总结一下以作备忘。1、gdb脚本调试过程中,经常会用到需要频繁的设置相同的断点,每次在gdb启动之后重新设置一遍,会让人无比的蛋疼,这个时候采用gdb脚本无意会减轻点淡淡的忧伤。使用gdb脚本主要有两种方式:1)gdb启动时把gdb的调试命令全部写入到.gdbinit文件中。在gdb启动时,会自动读取.gdbinit文件的内容,执行对应的g
2014-07-27 09:54:09
2172
原创 Android手机tcpdump抓包
最近一直在开发基于微信公众帐号的应用,在开发过程中遇到问题时,无法非常方便的获取到数据包,导致分析解决问题比较麻烦。这里介绍如何在Android手机上实现tcpdump抓包。1、root机器 在用tcpdump抓包过程中,需要使用到root权限。当前可以进行root的方法有很多,个人推荐http://root.baidu.com/,安装使用挺方便的。2、准备adb工具
2014-04-04 16:17:26
16128
原创 实现网站二维码扫描登录
在尝试使用网页版微信时,发现微信的登录方式比较酷。区别与常用的用户名和密码的登录方式,网页微信登录只需要轻轻一扫,即可方便的实现登录功能。下面尝试根据个人的理解对其可能的架构猜测一番。总体来看,扫描二维码实现网站的登录并不是太困难的事情。首先来看一下二维码登录的整体架构:在整个架构中,主要包含了几个模块:手机App、浏览器、Web服务器以及存储服务(session服务)。整个方
2014-03-31 10:33:50
75703
38
原创 一种高效的负载均衡调度的软件架构
负载均衡策略是互联网开发运营过程中经常遇到的一类问题。负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡策略分为两类:一类是硬件负载均衡,比较常见的硬件负载均衡软件,例如F5等昂贵的商用软件。商用负载均衡软件,业务处理效率比较高,有专业的团队提供咨询与维护服务,毕竟术业有专攻,而且从底层
2014-03-09 11:29:47
2808
原创 获取Core时函数栈的方法
在Linux服务开发过程中,经常会遇到各种问题,其中一种快速高效解决问题的策略就是:当服务处理异常时,操作系统自动产生Core文件,通过GDB调试工具分析Core文件,还原异常发生时服务的函数栈调用层次,继而快速的分析出导致异常发生的逻辑代码。Core文件,本质就是服务发生异常时的内存映像,如果服务占用的内存空间非常大,尤其是在64位操作系统下,例如占用20G的内存,写入磁盘Core文件的耗时会比
2014-03-01 14:36:17
1821
转载 京东云实践:浅谈Redis主从复制
转自:http://cloud.chinabyte.com/tech/105/12731105.shtml Redis是一个开源的,遵守BSD许可协议的key/value缓存系统,并由其高效的响应速度以及丰富的数据结构而闻名。Redis在京东的使用也是非常普遍的,包括很多关键业务上的使用,由于Redis官方集群还未发布,在使用Redis的过程中需要面对Redis的单点 问题,京东采用
2014-02-22 11:24:04
3033
原创 浅析网络开发框架——ZeroMQ
据官方文档介绍,ZeroMQ是一个可伸缩的分布式或者高并发的异步网络消息库。不同于其他的服务,例如RabbitMQ等消息队列服务,是以一种可独立运营的服务存在,ZeroMQ更像是一套socket library,是对BSD socket进行的上层封装。在传统的BSD网络开发模型中,采用的是socket与socket之间的消息传输,即1:1的消息传输链接,在ZeroMQ中是node与node之间的消息传输,node之间存在多条数据链接,即N: M的消息传输链接。ZeroMQ在底层实现了关于进程通信、网络通信、
2014-02-22 08:42:22
11595
原创 获取网络包到达网卡的时间
为啥要获取数据包到达网卡的时间? 在回答这个问题之前,我们先看一下网卡消息队列。如下图所示,对端发送的网络数据包被网卡设备接收到之后,会存放到网卡消息队列中,由应用程序调用recv系列函数从网卡队列中获取网络消息。 现在假设:消息处理服务处理网络消息包的平均时间为1s,请求方等待回包的时间为1s,网卡消息队列的长度为10,在应用程序正常处理的情况
2014-02-10 16:22:56
6213
1
原创 从12306谈起验证码的架构
验证码库,应该采用那种数据结构?Mysql还是其他的数据结构。在这里,可以尝试采用Redis的list结构来当作消息队列来使用或者其他的可用的消息队列。需要获取验证码时,从消息队列中Pop出一个值即可。每个记录中至少需要存储的字段为:图片编号、图片地址、验证码等信息。消息队列中的记录 < 50%时,可以出发验证码生成逻辑来定时插入新的验证码。面对更并发的验证码请求量,可以在集群中多部署几套Redis消息队列以及验证码生成系统来应对;
2014-01-14 22:58:46
18434
6
原创 Linux 获取随机数
- 伪随机法 伪随机法就是通过一个确定性的算法来获取看似随机或者乱序,在计算伪随机序列时,如果使用的开始值不变化的,实际上获取到的随机序列的值顺序是保持不变。例如在C中比较常用的随机函数rand(),是比较典型的伪随机法。 在调用rand()函数时,没有显示的调用srand()函数来设置随机序列开始种子的话,默认随机序列的种子即为1,此时的随机序列为
2014-01-12 10:54:04
7200
转载 频繁分配释放内存导致的性能问题的分析
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。初步分析majflt代表major fault,中文名叫大错误,minflt代表minor fa
2014-01-04 21:35:21
1217
原创 Linux文件锁flock
在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程
2014-01-04 21:01:35
15298
转载 深入分析 Linux 内核链表
转载地址:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时
2013-12-28 16:37:45
1091
转载 如何使用strace+pstack利器分析程序性能
引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用耗时;p
2013-12-25 16:39:33
1230
原创 高性能服务器设计——模块间通信
在同一台机器上,不同进程之间的,数据通信方式主要有:socket、unix socket、消息队列、管道、共享内存等多种手段,各个通信方式均存在比较合适的使用场景。先做一个简要的介绍与分析:1) socket,主要用于机器之间的网络数据传输,当然也可以用在同一台机器不同进程之间,优点在于可以不做任何的修改,就可以做到跨机器之间的数据传输;2) unix socket,是对网络socket的
2013-12-21 23:45:47
7294
原创 高性能服务器设计——总体框架介绍
针对高性能服务器存在一些最基本的要求,现总结如下: 服务器基本要求 1) 满足大量请求并发的使用场景; 2) 业务逻辑需要与网络操作解除耦合关系; 3)自保护的能力,发生大量请求,导致已经超出服务框架的处理能力时,仍然能够坚强的提供服务; 4) 服务自调整的能力,框架能够更具当前系统的请求量,能够拉起更多业务处理进程(
2013-12-21 20:24:05
4557
原创 高性能服务器设计——常用网络服务器设计模型
在业务服务开发过程中,一个优秀的开发框架,往往能够起到事半功倍的效果。现介绍总结一种在服务器开发过程中,比较常用的一种服务器开发模型。在介绍之前,先总结一下目前比较常用的一些服务器开发模型。 1) 迭代性服务器 迭代性服务器,在开源社区的代表之作是Apache Web服务器。该模型中,存在唯一的侦听进程,侦听进程accept新的链接之后,通过fork的
2013-12-21 20:12:26
4807
原创 HMAC-SHA1各语言版本实现
在各大开放平台大行其道的互联网开发潮流中,调用各平台的API接口过程中,无一例外都会用到计算签名值(sig值)。而在各种计算签名的方法中,经常被采用的就是HMAC-SHA1,现对HMAC-SHA1做一个简单的介绍: HMAC,散列消息鉴别码,基于密钥的Hash算法认证协议。实现原理为:利用已经公开的Hash函数和私有的密钥,来生成固定长度的消息鉴别码; SHA1
2013-12-14 14:01:02
30346
原创 GCC——分支预测(likely和unlikey)
最近在拜读一个项目源代码的过程中,发现了一个有意思的GCC特性,现将这个特性总结如下: 开发人员在开发服务的过程中,可以根据业务逻辑的特性来判断当前的条件语句被执行的概率情况,经常被执行到的代码片段可以紧邻顺序执行的代码片段后边,偶尔被执行到的条件代码片段被放到其他代码片段,从而减少代码在顺序执行过程中的代码上下文的跳转次数,达到提高程序执行效率的目的。这种方式的优化,需要严重的依
2013-12-14 13:11:41
3517
原创 Linux系统的默认编码设置
首先检查SecureCRT,设置Options->Global options->General->Default session->Edit Default Settings->Terminal->Appearance->Character encoding,选
2011-08-07 23:57:03
23060
原创 C++ 类回调函数
#include using namespace std;class MyTpl{public:virtual ~MyTpl(){};virtual void Run(){};protected:MyTpl(){};};
2011-08-04 23:28:24
1105
原创 php 测试连接mysql
$host="10.129.135.98"; $user="php"; $pwd="php@98"; $db = "rss"; $linkID = mysql_connect($host,$user,$pwd); if (!$linkID){
2011-07-14 21:12:00
703
原创 )Name or service not known: mod_unique_id: unable to find IPv4 addr ess of "wb_three_cgi20"
[Sun Dec 27 11:28:26 2009] [alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of “wb_three_cgi20″Configura
2011-07-13 20:15:01
3244
原创 /usr/local/apache2/modules/libphp5.so cannot restore segment prot after reloc: Permission denied
原来这是SELinux搞的鬼,解决办法有两个 1. 使用chcon 命令 示例: chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
2011-07-09 21:50:04
1487
原创 修改共享内存的最大值限制
cd /proc/sys/kernelvi shmmax也可以直接用echo size > /proc/sys/kernel/shmmax修改 例如:echo 2147483648 > cat /proc/sys/kernel/shmmax
2011-07-06 19:45:46
3746
原创 You don't have permission to access /cgi-bin/ on this server
在使用apache cgi-bin的时候,出现这种问题。 在virtualhost 中配置了虚拟主机的配置信息之后,也需要对cgi-bin 声明的访问权限; AllowOverride None Options None Or
2011-07-06 18:31:12
13973
原创 cgi模式安装php
tar zxvf php-5.2.14.tar.gzgzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1cd php-5.2.14/./configure --prefix=/usr/
2011-07-04 00:06:43
1298
原创 apache 设置默认页面
Apache 设置默认页面: 设置apache安装目录下的Apache Software Foundation\Apache2.2\conf配置文件: 添加默认页面项:DirectoryIndex index.html
2011-07-03 16:20:11
1061
原创 Nignx 重启加载配置文件
Kill -HUP Nginx父进程ID 例如: kill -HUP 13185 或者kil -1 13185 PID可以在ngix.pid文件中进行查看。 cat /usr/local/nginx/logs/nginx.
2011-07-03 16:11:41
838
转载 iostat来对linux硬盘IO性能进行了解
本文链接: http://www.php-oa.com/2009/02/03/iostat.html以前一直不太会用这个参数。现在认真研究了一下iostat,因为刚好有台重要的服务器压力高,所以放上来分析一下.下面这台就是IO有压力过大的服务器 $iostat -x 1Linux 2.6.33-fukai (fukai-laptop) _i686_
2011-06-30 21:21:00
701
转载 nginx编译出错 bin/sh: line 2: ./configure: No such file or directory
安装使用的是nginx-0.8.54 稳定版。一开始按常规的指定编译参数:./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_ssl_module –with-http_sub_module –with-http_gzip_static_module –with-http_stub_sta
2011-06-30 00:07:00
36990
6
原创 查看linux操作系统位数
getconf LONG_BIT(32位的系统中int类型和long类型一般都是4字节,64位的系统中int类型还是4字节的,但是long已变成了8字节inux系统中可用"getconf WORD_BIT"和"getconf LONG_BIT"获得word和long的位数。64位系统中应该分别得到32和64。)
2011-06-23 11:32:00
1094
原创 linux 查看打开的端口
netstat -natpl,显示tcp的侦听端口; netstat -naupl,显示udp的侦听端口; lsof,显示所有已经打开的文件,lsof -i:11001,显示端口 11001的信息;
2011-06-21 15:43:00
4871
原创 iptables-save iptables-restone
iptables-save > xxx,将防火墙规则存放到文件中去 iptables-restone xxx,从该文件中启用防火墙规则
2011-06-20 10:40:00
1009
转载 内网、外网IP地址
公网、内网是两种Internet的接入方式 内网接入方式:上网的计算机得到的IP地址是Inetnet上的保留地址,保留地址有如下3种形式: 10.x.x.x 172.16.x.x至172.31.x.x 192.168.x.x 内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。内网的计算机可向Internet上的其他计算机发送连接请求,但
2011-06-20 10:20:00
1804
原创 设置so搜索路径
1、修改/etc/ld.so.conf文件,同时ldconfig2、动态添加 export LD_BIRARY_PATH=/usr/local/mysql/lib/mysql echo $LD_BIRARY_PATH
2011-06-16 19:06:00
862
原创 php 安装错误 cannot restore segment prot after reloc: Permission denied
解决方案1: # setenforce 0 # chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so # service httpd restart # setenforce 1
2011-06-08 17:23:00
641
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人