c/c++
jazwoo
这个作者很懒,什么都没留下…
展开
-
char 与 unsigned char(BYTE)的区别
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情原创 2012-01-03 11:48:40 · 3452 阅读 · 0 评论 -
使用gdb和core dump迅速定位段错误
一、什么是core dump core:内存、核心的意思; dump:抛出,扔出; core dump:前提:当某程序崩溃的一瞬间,内核会抛出当时该程序进程的内存详细情况,存储在一个名叫core.xxx(xxx为一个数字,比如core.699)的文件中。二、更改生成的core文件的大小限制 可见,core文件是内核生成的,那某一个进程原创 2015-10-01 15:35:01 · 761 阅读 · 0 评论 -
中断和轮询 VS select和epoll
一。 select和epoll首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。不管是文件,还是套接字,还是管道,我们都可以把他们看作流。通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,典型的例子为,客户端要从socket读如数据,但是服务转载 2015-09-02 19:05:43 · 2137 阅读 · 0 评论 -
select函数的并发限制和 poll 函数应用举例
一、用select实现的并发服务器,能达到的并发数,受两方面限制1、一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n来调整或者使用setrlimit函数设置, 但一个系统所能打开的最大数也是有限的,跟内存大小有关,可以通过cat /proc/sys/fs/file-max 查看2、select中的fd_set集合容量的限制(FD转载 2015-09-02 19:30:31 · 576 阅读 · 0 评论 -
boost 中使用 线程池threadpool
Boost的thread库中目前并没有提供线程池,我在sorceforge上找了一个用boost编写的线程池。该线程池和boost结合的比较好,并且提供了多种任务执行策略,使用也非常简单。 下载地址: http://threadpool.sourceforge.net/ 使用threadpool: 这个线程池不需要编译,只要在项目中包含其转载 2014-08-06 10:07:23 · 4065 阅读 · 0 评论 -
C++ Boost Thread 多线程
0 前言标准C++线程即将到来。CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库。 就在几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户界面能够转载 2014-08-05 15:11:07 · 994 阅读 · 0 评论 -
Linux上ClearSilver的使用入门
1. 安装#cd /usr/local/src#tar xzvf clearsilver-0.10.4.tar.gz#cd clearsilver-0.10.4#./configure --disable-apache --enable-gettext#make install注: --disable-apache为不产生apache1.x用的模块,--enable-g转载 2014-07-04 19:57:06 · 2080 阅读 · 0 评论 -
clearsilver 使用
一 模板编程编程综述模板编程在MVC模型的WEB编程中占据着重要的地位,它具有将数据逻辑层次和用户界面层次分离的作用。它的使用能够让程序员能够减少了逻辑思维切换带来的内耗,保持逻辑思维的连贯性,同时有利于代码的模块化以及层次的抽象。但是从我个人观点来看模板编程在一个项目当中不应该成为核心角色,它只是一个辅助角色,也可以将它视作为逻辑层次所要实现的一个特性。模板编程在实现上不是实现了一门转载 2014-07-04 20:00:24 · 2036 阅读 · 0 评论 -
jsoncpp在linux下的配置
1、下载工具JsonCpphttp://sourceforge.net/projects/jsoncpp/files/比如下载的 jsoncpp-src-0.5.0.tar.gz$ tar -zxvf jsoncpp-src-0.5.0 -C jsoncpp说明:① 安装JsonCpp需要下载JsonC转载 2014-06-12 10:27:06 · 709 阅读 · 0 评论 -
linux找不到动态链接库 .so文件的解决方法
如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形。可以通过ldd命名来查看可执行文件依赖的动态链接库,如下(其中D为可执行程序): 其中的libjson_linux-gcc-4.6_libmt.so cannot found。解决这个问题: (1)在系统中查找这个文件(当然要转载 2014-06-11 13:58:48 · 893 阅读 · 0 评论 -
C++ Jsoncpp源代码编译与解析Json
1.Json 数据表示方式介绍 这个可以看之前的一个文章里面有说明:Java解析(读取)Json数据2.C++ Jsoncpp2.1 Jsoncpp介绍 (1)JsonCpp主要包含三种类型的class:Value Reader Writer; Json::Value 是jsoncpp 中最基本、最重要的类,用于表示各种类型的对象,jsoncpp转载 2014-06-11 13:58:28 · 832 阅读 · 0 评论 -
linux 生成和使用动态链接库和静态链接库的Makefile编写
生成和使用动态链接库和静态链接库的Makefile编写1. 概述介绍linux下生成和使用动态链接库和静态链接库的Makefile的编写方法。2. 生成动态链接库的Makefile首先要有一个c或c++等工具编写出来的库函数文件,也就是里面写了一堆可以被别的函数调用的函数。比如:aaa.cpp#include void pf1转载 2014-07-16 17:21:43 · 1089 阅读 · 0 评论 -
解决clearsilver 渲染cs_render慢
在使用 clearsilver去 渲染模板的时候,数据大了之后会明显慢很多,原创 2014-07-17 13:03:48 · 1435 阅读 · 0 评论 -
函数压栈,栈帧ebp,esp怎样移动
函数被调用时: 1) EIP/EBP成为新函数栈的边界 函数被调用时,返回时的EIP首先被压入堆栈;创建栈框架时,上级函数栈的EBP被压入堆栈,与EIP一道行成新函数栈框架的边界 2) EBP成为栈框架指针SFP,用来指示新函数栈的边界 栈框架建立后,EBP指向的栈的内容就是上一级函数栈的EBP,可以想象,通过EBP就可以把层层调用原创 2012-01-02 20:59:51 · 1815 阅读 · 1 评论 -
linux下core文件设置, Core Dump
什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dump又叫核心原创 2015-10-20 10:07:59 · 641 阅读 · 0 评论