自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

转载 expect一些资料

在expect中通过exec cmd 来执行系统命令。12345% exec date2014年 04月 22日 星期二 16:00:39 CST% exec date > date.txt% exec cat  date.txt2014年 04月 22日 星期二 16:00

2016-04-29 15:28:50 547

转载 CMake 学习

CMake PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR区别看了好多网上的文章,都说PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR是等价的。实际不然。一般来说,都是这样用 cmake ./这样PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR是等价的。也就是当前源码的目录。

2015-08-17 20:05:42 499

转载 逻辑地址、线性地址、物理地址和虚拟地址

一、概念  物理地址(physical address)  用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。  ——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内

2014-12-25 00:55:49 686

转载 Python使用struct处理二进制(pack和unpack用法)

转载自:http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html这篇文章写的很好,所以无耻的转了。。有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.struct模块中最重要的三个函数是p

2014-12-24 14:41:15 790

转载 Linux 信号

最常见的一句话就是“信号是中断机制的一种模拟”。中断和异常 l  中 断(也称硬件中断)定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。分类 : 可屏蔽中断非可屏蔽中断来源: 间隔定时器和I/O l  异 常(也称软件中断)定义 :当指令执行时由 CPU控制单元 产生的,异常也称为“异步中断”是因为

2014-12-24 10:50:18 483

原创 day3

tcpdump ip host 192.168.119.131 -vc10    host主机  -v显示详细信息 -c统计多少条后停止tcpdump -i eth0  -vc10    -i指定网卡的数据tcpdump tcp port 23  tcp协议,port端口号 否定操作 (`!' 或 `not') 与操作(`&&' 或 `and') 或操作(`||' 或

2014-12-22 14:39:51 596

转载 排序算法的稳定性

//////////////////////////////////////////////稳定性分析////////////////////////////////////////////////排序算法的稳定性,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。稳定性的好处:若排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键

2014-12-19 17:34:16 472

原创 dayreading2

udp connect:标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,实际上,udp发送数据有两种方法供大家选用的:方法一: socket----->sendto()或recvfrom() 方法二: socket----->connect()----->send()或recv().(此时sendto,recvfrom仍可用)从定义可以看

2014-12-19 16:59:34 524

转载 内存分配的原理__进程分配内存有两种方式

如何查看进程发生缺页中断的次数?         用ps -o majflt,minflt -C program命令查看。          majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误。          这两个数值表示一个进程自启动以来所发生的缺页中断的次数。发成缺页中断后,执行了那些操作?

2014-12-18 18:21:23 3245

转载 对libevent+多线程服务器模型的C++封装类

原文http://blog.csdn.net/aaa20090987/article/details/8595499http://www.tuicool.com/articles/QBj2ma最近在看memcached的源码,觉得它那种libevent+多线程的服务器模型真的很不错,我将这个模型封装成一个C++类,根据我的简单测试,这个模型的效率真的很不错,欢迎大家试用。

2014-12-11 22:07:39 1039

转载 虚析构函数和protected析构函数

一、虚析构函数类型需要虚析构函数的另外一个特征 是该类型具有指针成员或引用成员。如果有指针成员和引用成员,则该类型通常需要实现析构函数以及拷贝操作。 通常,一个实现了析构函数的类型同时也需要实现拷贝构造函数与拷贝复制函数。 作为一个经验法则:如果你有一个带有虚函数功能的类,则它需要一个虚析构函数,原因如下: 1. 如果一个类有虚函数功能,它经常作为一个基类使用。

2014-10-10 16:38:05 528

原创 SVN 操作不当

随意修改了subversion 中 xx/db/revprops/里面的一个日志信息内容,结果导致svn版本报错,不能下载和

2014-07-08 18:13:31 626

转载 “惊群”,看看nginx是怎么解决它的

在说nginx前,先来看看什么是“惊群”?简单说来,多线程/多进程(linux下线程进程也没多大区别)等待同一个socket事件,当这个事件发生时,这些线程/进程被同时唤醒,就是惊群。可以想见,效率很低下,许多进程被内核重新调度唤醒,同时去响应这一个事件,当然只有一个进程能处理事件成功,其他的进程在处理该事件失败后重新休眠(也有其他选择)。这种性能浪费现象就是惊群。惊群通常发生

2014-05-08 17:43:30 605

转载 vi编辑器中的匹配搜索操作

玩转VIM编辑器-强力搜索搜索导航导航键描述/向前搜索,前向?向后搜索,反向n跳转到下一个搜索词所在位置N跳转到前一个搜索词所在位置//或??重复前面的搜索或反向搜索

2014-02-26 17:11:42 1497

转载 关于socket阻塞与非阻塞情况下的recv、send、read

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区 别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,

2013-11-08 11:06:30 714

转载 redis

Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章:1.Redis简介 Redis是一个key-value存储系统。和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/p

2013-09-03 10:41:09 1626

转载 memcheck

常用选项: valgrind --tool=memcheck --leak-check=full --xml=yes --xml-file=test.xml yourprog--leak-check=:如果设为yes或full,在被调程序结束后,valgrind会详细叙述每一个内存泄露情况,默认是summary,只报道发生了几次内存泄露。--show-possibly-lost=:默认

2013-08-15 11:47:19 734

原创 keepalive总结

服务器端和客户端的Socket都设定了keepalive属性。服务器端设定了探测次数等参数,客户端、服务器只是打开了keepalive机能服务器端起了一个监视线程,利用select来检测socket是否被关闭。。。下面这是我的一点肤浅理解。1.关于keep alive无论windows,还是linux,keepalive就三个参数:sk->keepali

2013-07-18 22:27:09 1209

转载 内存管理

首先介绍概念:页框:通俗的说就是物理内存上的单元。请注意与“页”的区别。页有两重意思,不过最多的用法是指线性地址的单元。所以一个是实际物理内存的单元,一个是线性地址/虚拟内存的单元。在大多数情况下,页框大小等于页的大小,为4KB,使得一个页框恰好可以容纳一个页的数据。(1)为什么要进行内存管理?内存管理的目的总体上说无非是两点:提高时间效率和提高空间效率。时间效率也就是尽量使寻找到空闲

2013-07-18 10:54:59 775

转载 共享内存

共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域

2013-07-17 10:59:43 9160

原创 daily reading

linux 进入和退出系统调用:  1. 执行int $0x80汇编指令 .  iret退出2. 执行sysenter汇编指令.  2.6以后内核开始支持,   sysexit退出信号有2个阶段 :1,信号产生,内核修改目标进程的信号数据结构。2,信号传递,内核强迫目标进程对信号做出反应,或改变目标进程的执行状态 或执行信号调用,或者2者都有。

2013-06-04 10:43:59 725

转载 面向对象概念

抽象:使我们更接近于事物的本质。抽象的过程就是一个提炼存在于事物之间共同拥有的元素,而这些事务之间共同拥有的元素往往是这一事物区别于其他事物关键的东西,这些元素就构成了事物的本质。封装:Encapsulation   是指隐藏属性,方法或实现细节的过程.仅对外公开接口.   封装的最大优点是:          1.便于使用者正确.方便地理解和使用.防止使用者错

2013-06-03 12:12:13 526

转载 C++虚函数及虚函数表解析

虚函数的定义:  虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式:  virtual 函数返回值类型 虚函数名(形参表)  { 函数体 }  虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合

2013-05-24 17:51:43 547

转载 利用backtrace和backtrace_symbols打印函数的调用关系

源程序如下#include #include #include typedef uint32_t UINT32;void fun3(void){  void* array[10] = {0};  UINT32 size = 0;  char **strframe = NULL;  UINT32 i = 0, j = 0;    size

2013-05-22 17:12:52 805

原创 Netstat

简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto

2013-05-21 18:09:17 796

转载 linux查看CPU性能及工作状态的指令vmstat,mpstat,iostat,sar,top

衡量CPU性能的指标:1,用户使用CPU的情况;CPU运行常规用户进程CPU运行niced processCPU运行实时进程2,系统使用CPU情况;用于I/O管理:中断和驱动用于内存管理:页面交换用户进程管理:进程开始和上下文切换3,WIO:用于进程等待磁盘I/O而使CPU处于空闲状态的比率。4,CPU的空闲率,除了上面的WIO以外的空闲时间

2013-05-20 16:52:52 5279

转载 取模和求余的区别

通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算。在这里要提醒大家要十分注意当前环境下'%'运算符的具体意义,因为在有负数存在的情况下,两者的结果是不一样的。对于整型数a,b来说,取模运算或者求余运算的方法都是:1.求 整数商: c = a/b;2.计算模或者余数: r = a - c*b.

2013-04-09 15:28:25 23733 1

转载 linux信号

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方 法、如何使用信号,以及有关信号的几个系统调用。信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统 调用。信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的

2013-04-02 21:49:06 528

转载 系统调用和库函数的关系

1、系统调用和库函数的关系系统调用通过软中断int 0x80从用户态进入内核态。函数库中的某些函数调用了系统调用。函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。编程人员可以通过函数库调用系统调用。高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。如果是在核心编程,也可以通过int 0x80进入系统调用,此时不能使用函数库。因为函数库

2013-04-02 21:45:42 1034

转载 用distcc和dmucs在ubuntu 10.04上搭建分布式编译环境

首先需要三台PC,如PC ABC,在三台机器上都要安装distcc 和 dmucssudo apt-get install distcc dmucs 假设三台PC的ip地址如: A:192.168.0.1 B:192.168.0.2 C: 192.168.0.3我用A做server(用于分发编译任务),B和C做client在三台机器的/etc/hosts文件

2013-03-11 14:59:03 2941

转载 UDP客户端调用connect的问题

如果不调用bind,则客户端在向外发包时,会由系统自己决定使用的接口的源端口,而调用bind则可以指定相应的参数。另外有个哥们提到“果是udp,使用bind以后,可以不使用sendto/recvform函数,而直接用write/read函数了,少去了写一个参数。”,这应该是调用connect后的效果。关于UDP中客户端调用connect的好处,还有一个作用是

2013-03-01 10:32:52 2444

转载 计算机启动过程

http://www.ruanyifeng.com/blog/2013/02/booting.html

2013-02-19 10:50:33 459

转载 LOG4CXX

1. 首先下载相关软件包1) log4cxx: http://logging.apache.org/log4cxx/2) apr: http://apr.apache.org/download.cgi3) apr-util: http://apr.apache.org/download.cgi2. 安装apr tar xjf apr-1.3.3.tar.bz2  或者 tar

2012-12-26 17:54:33 3349 1

转载 linux设置时区

时间以及时区设置首先确认使用utc还是local time. UTC(Universal Time Coordinated)=GMT(Greenwich Mean Time) Local time 是你手表上的时间传统的POSIX计算机(Solaris,bsd,unix)使用UTC格式 linux可以处理UTC时间和蹩脚的Windows所使用的local time到

2012-12-25 14:32:41 553

转载 笔记本变WIFI

将win7电脑变身WiFi热点,让手机、笔记本共享上网用win7建立无线局域网,可以共享上网可以局域网游戏。开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器购买费。宏碁、惠普笔记本和诺基亚N97mini亲测通过。以操作系统为win7的笔记本或装有无线网卡的台式机作为主机。主机设置如下:1、

2012-09-23 00:03:20 674 1

转载 技能系统相关

本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖讨论 技能其实是战斗系统的一个组成部分,战斗基本上都可以由技能触发,技能系统实际上就是一套完整的逻辑,我们用表格来设计,将技能的逻辑用属性字段抽象出来,然后依据属性字段来控制逻辑,策划人员可以通过更改属性字段来配置出不同的逻辑属性 1

2012-09-09 22:13:08 743

转载 用户态和内核态

1. 用户态和内核态的概念区别究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子void testfork(){if(0 = = fork()){printf(“create new process succe

2012-07-23 22:39:02 733

转载 线程私有数据

一个标准的线程由 线程ID 当前指令指针(PC) 寄存器集合 和 堆栈组成见--码农自我修养 线程部分1.为什么需要线程私有数据:原因一:有时候需要维护基于每个线程的数据,用线程ID作为索引。因为线程ID不能保证是小而连续的整数,所以不能简单的分配一个线程数据数组,用线程ID作为数组的索引。即使线程ID确实是小而连续的整数,可能还希望有一些额外的保护,以防止某个线程的数据和其它线程

2012-07-23 20:37:15 2218 1

转载 一个误解: 单个服务器程序可承受最大连接数“理论”上是“65535”

请注意,这里有两个词分别被我标记上了引号,一个是“理论”,一个是“65535”。强调“理论”这个词,是想特别明确误解者的意思:就是说,这个值是不可能被打破的,是铁板钉丁的。而65535这个数字的由来,很多人想当然地将它与port最大值联系起来。的确,TCP的端口数,最大值确实为65535。但是,这并不代表一个服务器可以接受的连接数就是这个值,很多人之所以把这两个概念搞混淆是因为对socket和po

2012-06-27 20:11:26 1973

转载 一些关于网游服务器的东东

拼包函数及网络封包的异常处理(含代码)本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载、复制、传播,但任何对本文的引用都请保留作者、出处及本声明信息。谢谢!常见的网络服务器,基本上是7*24小时运转的,对于网游来说,至少要求服务器要能连续工作一周以上的时间并保证不出现服务器崩溃这样的灾难性事件。事 实上,要

2012-06-19 09:16:24 6640

空空如也

空空如也

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

TA关注的人

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