自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(224)
  • 资源 (3)
  • 收藏
  • 关注

原创 gdb小结

最近频繁用到一些GDB看上比较高大上的点,总结一下以作备忘。1、gdb脚本调试过程中,经常会用到需要频繁的设置相同的断点,每次在gdb启动之后重新设置一遍,会让人无比的蛋疼,这个时候采用gdb脚本无意会减轻点淡淡的忧伤。使用gdb脚本主要有两种方式:1)gdb启动时把gdb的调试命令全部写入到.gdbinit文件中。在gdb启动时,会自动读取.gdbinit文件的内容,执行对应的g

2014-07-27 09:54:09 2086 1

原创 Android手机tcpdump抓包

最近一直在开发基于微信公众帐号的应用,在开发过程中遇到问题时,无法非常方便的获取到数据包,导致分析解决问题比较麻烦。这里介绍如何在Android手机上实现tcpdump抓包。1、root机器 在用tcpdump抓包过程中,需要使用到root权限。当前可以进行root的方法有很多,个人推荐http://root.baidu.com/,安装使用挺方便的。2、准备adb工具   

2014-04-04 16:17:26 15814 1

原创 实现网站二维码扫描登录

在尝试使用网页版微信时,发现微信的登录方式比较酷。区别与常用的用户名和密码的登录方式,网页微信登录只需要轻轻一扫,即可方便的实现登录功能。下面尝试根据个人的理解对其可能的架构猜测一番。总体来看,扫描二维码实现网站的登录并不是太困难的事情。首先来看一下二维码登录的整体架构:在整个架构中,主要包含了几个模块:手机App、浏览器、Web服务器以及存储服务(session服务)。整个方

2014-03-31 10:33:50 75470 38

原创 一种高效的负载均衡调度的软件架构

负载均衡策略是互联网开发运营过程中经常遇到的一类问题。负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡策略分为两类:一类是硬件负载均衡,比较常见的硬件负载均衡软件,例如F5等昂贵的商用软件。商用负载均衡软件,业务处理效率比较高,有专业的团队提供咨询与维护服务,毕竟术业有专攻,而且从底层

2014-03-09 11:29:47 2767 1

原创 获取Core时函数栈的方法

在Linux服务开发过程中,经常会遇到各种问题,其中一种快速高效解决问题的策略就是:当服务处理异常时,操作系统自动产生Core文件,通过GDB调试工具分析Core文件,还原异常发生时服务的函数栈调用层次,继而快速的分析出导致异常发生的逻辑代码。Core文件,本质就是服务发生异常时的内存映像,如果服务占用的内存空间非常大,尤其是在64位操作系统下,例如占用20G的内存,写入磁盘Core文件的耗时会比

2014-03-01 14:36:17 1765

转载 京东云实践:浅谈Redis主从复制

转自:http://cloud.chinabyte.com/tech/105/12731105.shtml    Redis是一个开源的,遵守BSD许可协议的key/value缓存系统,并由其高效的响应速度以及丰富的数据结构而闻名。Redis在京东的使用也是非常普遍的,包括很多关键业务上的使用,由于Redis官方集群还未发布,在使用Redis的过程中需要面对Redis的单点 问题,京东采用

2014-02-22 11:24:04 2974

原创 浅析网络开发框架——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 11474 2

原创 获取网络包到达网卡的时间

为啥要获取数据包到达网卡的时间?       在回答这个问题之前,我们先看一下网卡消息队列。如下图所示,对端发送的网络数据包被网卡设备接收到之后,会存放到网卡消息队列中,由应用程序调用recv系列函数从网卡队列中获取网络消息。       现在假设:消息处理服务处理网络消息包的平均时间为1s,请求方等待回包的时间为1s,网卡消息队列的长度为10,在应用程序正常处理的情况

2014-02-10 16:22:56 6036 1

原创 从12306谈起验证码的架构

验证码库,应该采用那种数据结构?Mysql还是其他的数据结构。在这里,可以尝试采用Redis的list结构来当作消息队列来使用或者其他的可用的消息队列。需要获取验证码时,从消息队列中Pop出一个值即可。每个记录中至少需要存储的字段为:图片编号、图片地址、验证码等信息。消息队列中的记录 < 50%时,可以出发验证码生成逻辑来定时插入新的验证码。面对更并发的验证码请求量,可以在集群中多部署几套Redis消息队列以及验证码生成系统来应对;

2014-01-14 22:58:46 18363 58

原创 Linux 获取随机数

- 伪随机法          伪随机法就是通过一个确定性的算法来获取看似随机或者乱序,在计算伪随机序列时,如果使用的开始值不变化的,实际上获取到的随机序列的值顺序是保持不变。例如在C中比较常用的随机函数rand(),是比较典型的伪随机法。          在调用rand()函数时,没有显示的调用srand()函数来设置随机序列开始种子的话,默认随机序列的种子即为1,此时的随机序列为

2014-01-12 10:54:04 7146

转载 频繁分配释放内存导致的性能问题的分析

现象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 1158 1

原创 Linux文件锁flock

在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程

2014-01-04 21:01:35 15204

转载 深入分析 Linux 内核链表

转载地址:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时

2013-12-28 16:37:45 1055

转载 如何使用strace+pstack利器分析程序性能

引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用耗时;p

2013-12-25 16:39:33 1189

原创 高性能服务器设计——模块间通信

在同一台机器上,不同进程之间的,数据通信方式主要有:socket、unix socket、消息队列、管道、共享内存等多种手段,各个通信方式均存在比较合适的使用场景。先做一个简要的介绍与分析:1) socket,主要用于机器之间的网络数据传输,当然也可以用在同一台机器不同进程之间,优点在于可以不做任何的修改,就可以做到跨机器之间的数据传输;2) unix socket,是对网络socket的

2013-12-21 23:45:47 7169

原创 高性能服务器设计——总体框架介绍

针对高性能服务器存在一些最基本的要求,现总结如下:       服务器基本要求       1) 满足大量请求并发的使用场景;       2) 业务逻辑需要与网络操作解除耦合关系;       3)自保护的能力,发生大量请求,导致已经超出服务框架的处理能力时,仍然能够坚强的提供服务;       4) 服务自调整的能力,框架能够更具当前系统的请求量,能够拉起更多业务处理进程(

2013-12-21 20:24:05 4479

原创 高性能服务器设计——常用网络服务器设计模型

在业务服务开发过程中,一个优秀的开发框架,往往能够起到事半功倍的效果。现介绍总结一种在服务器开发过程中,比较常用的一种服务器开发模型。在介绍之前,先总结一下目前比较常用的一些服务器开发模型。        1)  迭代性服务器        迭代性服务器,在开源社区的代表之作是Apache Web服务器。该模型中,存在唯一的侦听进程,侦听进程accept新的链接之后,通过fork的

2013-12-21 20:12:26 4745

原创 HMAC-SHA1各语言版本实现

在各大开放平台大行其道的互联网开发潮流中,调用各平台的API接口过程中,无一例外都会用到计算签名值(sig值)。而在各种计算签名的方法中,经常被采用的就是HMAC-SHA1,现对HMAC-SHA1做一个简单的介绍:        HMAC,散列消息鉴别码,基于密钥的Hash算法认证协议。实现原理为:利用已经公开的Hash函数和私有的密钥,来生成固定长度的消息鉴别码;        SHA1

2013-12-14 14:01:02 30210 1

原创 GCC——分支预测(likely和unlikey)

最近在拜读一个项目源代码的过程中,发现了一个有意思的GCC特性,现将这个特性总结如下:       开发人员在开发服务的过程中,可以根据业务逻辑的特性来判断当前的条件语句被执行的概率情况,经常被执行到的代码片段可以紧邻顺序执行的代码片段后边,偶尔被执行到的条件代码片段被放到其他代码片段,从而减少代码在顺序执行过程中的代码上下文的跳转次数,达到提高程序执行效率的目的。这种方式的优化,需要严重的依

2013-12-14 13:11:41 3425

原创 Linux系统的默认编码设置

首先检查SecureCRT,设置Options->Global options->General->Default session->Edit Default Settings->Terminal->Appearance->Character encoding,选

2011-08-07 23:57:03 22924

原创 C++ 类回调函数

#include using namespace std;class MyTpl{public:virtual ~MyTpl(){};virtual void Run(){};protected:MyTpl(){};};

2011-08-04 23:28:24 1068

原创 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 656

原创 )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 3199

原创 /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 1453

原创 php-fpm 编译出错 libmysqlclient_r

建立一个libmysqlclient到libmysqlclient_r的软连接额。

2011-07-09 02:33:23 786

原创 让用户加入到指定的组

usermod -g mygroup myuser     查看用户所属的组:    groups user

2011-07-09 00:50:02 683

原创 修改共享内存的最大值限制

cd /proc/sys/kernelvi shmmax也可以直接用echo size > /proc/sys/kernel/shmmax修改       例如:echo 2147483648 >  cat /proc/sys/kernel/shmmax

2011-07-06 19:45:46 3636

原创 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 13849

原创 SED单行脚本快速参考(Unix 流编辑器)

http://sed.sourceforge.net/sed1line_zh-CN.html

2011-07-05 21:58:15 668

原创 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 1242

原创 apache 设置默认页面

Apache 设置默认页面: 设置apache安装目录下的Apache Software Foundation\Apache2.2\conf配置文件: 添加默认页面项:DirectoryIndex   index.html

2011-07-03 16:20:11 978

原创 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 789

转载 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 653

转载 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 35647 5

原创 查看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 1041

原创 linux 查看打开的端口

netstat -natpl,显示tcp的侦听端口; netstat -naupl,显示udp的侦听端口; lsof,显示所有已经打开的文件,lsof -i:11001,显示端口 11001的信息;

2011-06-21 15:43:00 4805

原创 iptables-save iptables-restone

iptables-save > xxx,将防火墙规则存放到文件中去 iptables-restone xxx,从该文件中启用防火墙规则

2011-06-20 10:40:00 960

转载 内网、外网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 1668

原创 设置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 804

原创 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 598

select nfds为负数情况下的,测试用例

select nfds为负数情况下的,测试用例 是在项目开发过程中,一把鼻涕一把泪总结出来的。希望对大家有用恩。

2010-03-30

矢量图形系统开发与编程_0

陈建春的书,就不用多说了,是介绍GIS开发的好书!!!

2008-08-04

空空如也

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

TA关注的人

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