- 博客(81)
- 资源 (16)
- 收藏
- 关注
原创 编译时遇到的问题记录
BOOST_BUILD_PATH指定错误 BOOST_BUILD_PATH为Boost.Build根目录的绝对路径,bjam运行是会查找该绝对路径下的一些文件。在下载得到源代码解压之后,源码目录 ROOT/boost_1_55_0/,构建Boost.Build,进入ROOT/boost_1_55_0/,构建Boost.Build,进入ROOT/boost_1_55_0/tools/build/v2
2015-06-18 12:49:43
12418
原创 boost学习笔录-III
如何生成静态库、动态库?如何使用静态库、动态库?lib bar : bar.cpp : <link>static ;//指定静态库lib foo : foo.cpp ;//默认生成动态库use-project /library-example/foo : . ;//id替代exe app : app.cpp /library-example/foo//bar/<link>static .//f
2015-06-18 11:11:30
1081
原创 boost学习笔录-II
如何一次构建debug和release版本? bjam默认构建debug版本,当通过下面的命令一次性的构建debug和release版本bjam debug release结果如下:|-- config.log`-- gcc-4.7 |-- debug | |-- hello | `-- hello.o `-- release
2015-06-17 14:26:08
911
原创 boost学习笔录-I
写了一个脚本,用来测试jam,结果遇到了问题,可能也有其他同学在第一次使用bjam时也碰到了这样的问题,所以,我就记录了下来,//hello.cppint main(){ return 0;}最简单的jam文件exe hello : hello.cpp ;运行bjam的时候,出现错误:config-cache.jam: No such file or directory/h
2015-06-16 22:22:27
601
原创 CPP学习笔记-4
static两种不同的职责,一是其持久存储的,二是访问性受到局限,一个是在哪里,另一个是谁能看到你,在C中基本是这样的。static in C++static 本地变量是持久存储的,但是,只有在本地域的范围内才能访问,下面只能在f()中访问static本地变量xint f(){ static int x; x++; return x;}int main(
2015-05-09 16:24:15
469
原创 CPP学习笔记-3
拷贝用一个存在的object创建一个新的object 下面程序中两次调用拷贝构造#include <iostream>#include <string>using namespace std;static int objectCount = 0;class HowMany{ public: HowMany(){ objectCount++;
2015-05-09 09:36:42
526
翻译 如何写Asterisk模块(3)
在该部分你将看到如何实现Asterisk CLI命令。对Asterisk来说,CLI是尤为重要的,无论是在进行配置、显示状态以及调试都会用到。该部分将对如何写Asterisk模块(2)的基础上进行添加代码。 首先我们需要包含定义CLI命令接口的头文件。 #include “asterisk/cli.h” 我们要实现的命令是echo,用于回显,不过
2015-05-08 23:44:57
549
原创 CPP学习笔记-2
引用作为class成员-reference作为类成员变量,可以没有初始值 -reference作为类成员变量,必须在构造函数列表中初始化,如果是在构造函数中赋值,那么,将发生reference未初始化错误,正确代码如下:class X{ public: int& m_y; X(int &a);};X::X(int &a):m_y(a){}
2015-05-08 23:21:30
601
原创 CPP学习笔记-1
前端时间使用erlang,这段时间使用python,为了项目快速开发,都和脚本干上了,底层部分用C++,比较稳定,基本上不用动。之前在通信行业一直用CPP,现在手生疏了很多,感觉基础的东西还是不能丢,CPP是我的本,不能忘本啊。网上一些视频学习的还是不错的,帮组自己复习,下载了翁恺老师的培训视频课程,深入浅出,又有实践手操。个人感觉当学某个东西的时候,只是从脑中过一遍,效果来的差,不如将所想的写下
2015-05-06 22:09:42
842
原创 关于移动客户端token过期问题
* 移动客户端游戏登陆SDK时,向渠道认证完成之后,拿到认证信息,其中之一为token或称之为sessionid;* token有一定的时效,过期之后需要重新向登陆认证,拿到新的token;* 移动客户端向游戏服务器登陆时,需要提供包含token的认证,游戏服务器需要向渠道认证包含token的认证信息,如果渠道返回有效,则认为移动客户端为合法;* 游戏过程中经常会断线重连,
2015-01-31 13:30:02
18238
转载 Linux服务器性能评估
Linux服务器性能评估 一、影响Linux服务器性能的因素 1. 操作系统级CPU内存磁盘I/O带宽网络I/O带宽 2. 程序应用级 二、系统性能评估标准 影响性能因素影响性能因素评判标准好坏糟糕CPUuser% + sys%user% + sys%= 8
2013-08-11 00:33:54
863
转载 程序员不爱读书,但这很不明智——想看就看《高效能程序员的修炼》
英文原文:http://www.codinghorror.com/blog/2008/04/programmers-dont-read-books----but-you-should.html作者:Jeff AtwoodCoding Horror精华文章现已收入新书《高效能程序员的修炼》,各大书店有售!StackOverflow.com的主旋律之一,就是软件开发者不再照着书本学习编
2013-07-22 20:16:49
1088
转载 关于 Cookie-free Domains(为什么将静态图片,js,css存放到单独的域名?)
本文主要描述使用裸域名做网站主域名时,如何用子域名做 cookie-free domains。看站点优化的文章,很多建议将站点的静态文件(如图片、js、css 等)放在一个专门的域名下访问,由于该域名与主站域名不同,所以浏览器就不会把主域名下的 Cookie 传给该域,减少了网络开销,一定程度提高了页面加载速度,特别是细碎静态文件特别多的情况下效果显著。大概这个域就叫着 cookie-fr
2013-07-16 14:18:33
13524
翻译 Simple-One-For-One Supervisors
当一个监控进程(supervisor)将对其子进程的重启策略指定为simple_one_for_one的时候,实际上所有子进程是一样的。simple_one_for_one是对one_for_one的简化,one_for_one的意思是监控进程对子进程终止的重启策略为直接重启子进程,而且不影响其他子进程。指定为simple_one_for_one策略的子进程都是相同的,而且可以动态增加。这一点有些
2013-07-11 22:22:04
1634
转载 名词解释“缓存穿透”和“缓存雪崩”
1. 缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。2.缓存失效:如果缓存集中在一段时间内失效,DB的压力凸显。这个没有完美解决办法,但可以分析用户行为,尽量让失效时间点均匀分布。当发生大量的缓存穿透,例如
2013-07-03 14:40:51
1800
转载 Erlang并发机制 – 消息传递
Erlang系统中,进程之间的通信是通过消息传递来完成的。消息使用Pid ! Message的形式发送,通过receive语句获取。每个Erlang进程都有用来存储传入消息的信箱。当一个消息发送的时候,它会从发送进程中拷贝到接收进程的信箱,并以它们到达的时间次序存储。消息的传递是异步的,一个发送进程不会在发送消息后被暂停。 上面提到发送消息时,会在两个进程之间存在消息复制
2013-06-23 19:34:39
2443
转载 InnoDB和MyISAM区别总结
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。MyIASM是IASM表的新版本,有如下扩展:·二进
2013-06-23 16:38:12
620
原创 一些读书笔记(4)
1. UDP是面向无连接的,那么,我为什么要在它的socket上建立连接呢?UDP调用connect会有三次捂手过程吗?UDP调用sendto后,返回成功,并没有意味着数据发送到对端,而是仅仅表示接口输出队列具有存放sendto导致的数据包的空间,即使不可达对端。不可达到对端的ICMP错误,并不是sendto返回,而是为一个异步错误。为了解决这个问题,解决的办法是,只有在一个已经connect的U
2013-06-17 23:23:13
764
转载 ps查看进程的stat状态
These are indeed the process states. Processes states that ps indicate are:D Uninterruptible sleep (usually IO)R Running or runnable (on run queue)S Interruptible sleep (waiting for an event to co
2013-06-17 14:18:26
1600
原创 一些读书随笔(2)
1. 多个人做一件事情的时候,可能需要同步。如果不考虑执行顺序的情况下,每次得到的结果一样的,那么无需同步,但是,如果按照不同的执行顺序,得到不同的结果,而且其中只有部分结果是正确的,那么需要同步。如食堂排队,打饭员每次只能为一个人打饭打菜,如果一次为多个人打饭打菜可能会乱,这是不希望看到的,所以同步的办法是排队。从程序的角度分析,打饭员是临界资源,每次只能为一个人服务。在多线程环境下,用互斥锁实
2013-06-15 15:54:03
611
原创 一些读书随笔(1)
1. 看了进程之间通信,想消息队列与共享内存区别在哪里?因解决什么问题而共同需要他们,而不能合并为一,因之前缺少这方面的经验,问的问题可能比较简单?但不妨碍对于问题入口的思考。他们都可以用于进程之间通信,但是我要区别我读到了主要表现在这几个方面:a. 效率,共享内存读写效率要高于消息队列,共享内存主要是节省来内存的数据交换,减少通过内核传递数据的次数。b. 同步,消息队列具有固有的同步开销,共享内
2013-06-15 09:19:55
794
原创 一些复习笔记
1. sigsetjmp,siglongjmp出现是因为setjmp,longjmp对信号的支持不明确。当进程捕捉到一个信号的时候,进入信号处理程序,那么这个时候如果再次发生这个信号,那么该信号将会自动加到信号屏蔽字中。这样处理的原因是,阻止了后来产生的信号,中断该信号的处理程序。那么这个时候,如果longjmp跳出来信号处理程序,那么进程的信号屏蔽字将会发生什么呢?书中并未给出答案,而且说明每个
2013-06-14 16:49:37
779
原创 设置用户ID的程序调用system危险
system函数实现调用了fork, exec和waitpid。如果调用system的程序设置了用户ID,那么在fork,exec后的进程,保存了父进程的权限。当一个进程执行某个程序时,如果程序设置来用户ID,那么进程的有效用户ID将被设置为程序文件的实际用户ID,那么进程将拥有该文件拥有者的权限。这个权限在调用system后,被子进程继承来下来。例如:systest.cint main(
2013-06-11 20:37:25
1155
原创 几个容易混淆的重定向
进程预定义了三个文件描述符,分别是STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO。分别是标准输入,标准输出,标准错误输出。例如:$cat file1 默认输出是标准输出$tee 默认从标准输入读入$noexistcommand现在我们不想对上面三个输入输出走默认的途径,例如我要输出到文件中去;我要从文件中读取,而不是标准输入;
2013-06-10 21:53:46
826
转载 Linux重定向
1. 什么是标准文件 shell为每个命令打开三个文件(流),用于 读取输入——标准输入——键盘 输出结果——标准输出——显示屏(控制台) 输出错误消息——标准错误——显示屏(控制台) 当shell发现命令行中存在特殊字符(,|)时,shell就把流从它的默认设备上断开,连接到磁盘文件或另一
2013-06-10 17:30:50
884
原创 文件共享
书中提到内核用三种结构描述打开的文件,一是打开的文件描述符表,二是文件表,三是v节点。三者之间的关系具体见书中描述,他们三者通过指针相连接。1. 同个文件打开多次:open 每打开一次生成新的文件fd和文件表,因具有不同的文件表,文件状态和偏移是分开的。对于下面情况,第二次写入将对第一次写入产生影响。main(){ int fd1, fd2; fd1 = open("f
2013-06-10 17:00:07
878
转载 Linux多线程,线程的分离与结合
2)线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了线
2013-06-03 16:13:52
718
翻译 Erlang中的错误处理
1.定义2.当进程终止的时候退出信号被送出3.进程退出信号通过链接(进程之间的关系)传播4.进程能够捕捉退出信号5.复杂的退出信号传播6.通过分层构建健壮系统7.用于信号处理的基本概念8.构建一个健壮的服务器9.带有错误恢复的分配器10.分配器
2011-10-17 19:24:34
971
翻译 Erlang中的并行编程
Erlang中的并行编程:定义:Process :并发执行的活动的个体,是个完整的虚拟机,系统当中可以同时存在多个并发的进程。Message:进程之间通信的方法。Timeout:用于等待指定一段时间的,然后决定完成某个动作的机制。Registered Proc
2011-10-13 18:45:56
1228
1
原创 需要体验的游戏知识
1. 现在做网页游戏如何“糅合”,纵观游戏的发展,任何一款新的游戏的出现,都有糅合的思想。2. 游戏如何能给玩家体验简单又不简单?3. 网页游戏的过去“简单、粗暴、留下买路钱”。4. 回合制游戏和即时游戏本质的区别在哪里?5. 永远把不丢用户作为信条。
2011-10-13 09:33:24
759
原创 erlang中pg2模块使用
pg2这个模块实现了进程组的功能。这个模块之前有个模块为pg,pg模块的进行组中消息将被发送到组内的每个进程,但是pg2却不同,它可以选择性地将消息发送给单个、某些或全部组内成员。通过进程组的名称可以访问组内的进程,例如进程组的名称为foobar,而且有一系列进程位于组内,可能这
2011-10-13 09:22:10
4442
原创 Magnus Ahltorp的Mysql Driver
Magnus Ahltorp编写了Erlang访问Mysql数据库的Driver,其中我分析下存在以下的问题: 1. 数据库连接池选择算法使用循环,无加锁,那么连接池中一个连接可以被多个进程同时访问,这种情况下对处理事务是不可取的,事务的回滚可能导致其它进程操作数据的不一致。
2011-09-08 11:52:53
1132
转载 GDT详解
<br /><br />在Protected Mode下,一个重要的必不可少的数据结构就是GDT(GlobalDescriptor Table)。 <br />为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型: <br />在Real Mode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的Base Address,一个Segment的最大长度是64 KB,这是16-bit系统所能表示的最大长度。而Offset则是相对于此S
2011-03-26 10:11:00
912
转载 操作系统启动过程——硬件自检+系统引导+系统加载+系统登录
<br /><br />电脑及操作系统的启动过程<br />从按下机箱电源键开始,直到用户进入操作系统,操作系统正常启动,整个过程可分为以下几个部分。<br /><br /><br />1. 预引导(Pre-Boot)阶段<br />2. 引导阶段 <br />3. 加载内核阶段 <br />4. 初始化内核阶段 <br />5. 用户登录阶段<br />一、<br />QUOTE:<br />预引导阶段<br /> 首先让我们来了解一些基本概念。第一个是大家非常熟悉的BIOS(基本输入输出系统),BIO
2011-03-17 13:57:00
4554
原创 I/O复用简述
<br /> 当应用程序打开文件成功时,内核向应用程序返回一个fd,称之为文件描述符,那么应用程序通过文件描述符通过内核来访问这个文件,对文件进行I/O操作。那么有种场景是一个进程需要同时处理多个文件描述符,每个文件描述符对应一个I/O处理,那么进行需要知道那个I/O是否满足条件,或称之为准备好,例如某个fd已经准备准备好被读,某个fd已经准备好接收写入。没有IO复用之前,进程会堵塞在单个I/O操作上,但是有了I/O复用之后,通过select调用监听多个文件描述符,当前其中一个或多个文件描述符对应的
2011-03-08 09:45:00
696
转载 C/C++程序内存中数据存储区分类
<br />C/C++中,内存中数据存储分成4个区,分别是堆、栈、全局/静态存储区和常量存储区。<br /> 栈(stack),就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。<br /> 堆(heap),一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。<br /> 全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的(DATA段)和未初始化的(BSS段)
2010-11-01 09:00:00
1033
转载 Asterisk Originate 内部执行流程
<br />来自:http://blog.youkuaiyun.com/austingao/archive/2010/07/29/5774635.aspx
2010-10-27 19:40:00
924
Erlang入门手册.
2011-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人