自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 资源 (13)
  • 收藏
  • 关注

转载 Linux的Core文件设置与调试

连接地址:http://pppboy.blog.163.com/blog/static/30203796201231011715932一、运行时错误任何人写程序都会出错,正如《C++编程规范》所说,真正可怕的错误不是编译时的错误,而是运行时错误。有的程序可以通过编译, 但在运行时会出现Segment fault(段错误)这通常都是指针错误(一般就是空

2014-12-04 15:17:19 2023

原创 TCP协议网络连接状态详解

CLOSED: 表示初始状态。LISTEN: 表示服务器端的某个SOCKET处于监听状态,可以接受连接。SYN_SENT:在服务端监听后,客户端SOCKET执行CONNECT连接时,客户端发送SYN报文,此时客户端就进入SYN_SENT状态,等待服务端的确认SYN_RCVD: 表示服务端接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连

2014-12-04 13:48:47 1713

转载 Base64加密解密原理以及代码实现

1. Base64使用A--Z,a--z,0--9,+,/ 这64个字符.    2. 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了.    3. 解码原理:将4个字节转换成3个字节.先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位.这样就还原了.

2014-01-21 14:43:19 7799

转载 清空std::stringstream,联系到stream的clear()和清空

stringstream是个好东西,网上有不少文章,讨论如何用它实现各种数据类型的转换(比如把double或int转换为string类型)。但如 果stringstream使用不当,当心内存出问题(我就吃过亏^_^)。    试试下面的代码,运行程序前打开任务管理器,过不了几十秒,所有的内存都将被耗尽!#include #include #include using

2014-01-11 14:42:57 1198

原创 std::stringstream 数据转换

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。    istringstream类用于执行C++风格的串流的输入操作。   ostringstream类用于执行C风格的串流的输出操作。   strstream类同时可以支持C风格的串流的输入输出操作。     istringstre

2014-01-11 14:08:58 1367

原创 ubuntu linux 加载当前目录的动态库

linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是

2013-12-10 22:19:26 3358

原创 gcc 链接参数 解释

-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-lte

2013-12-09 19:42:22 1816

翻译 最牛B的编码套路

最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已:与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。我认识很多杰出的程序员——这是在

2013-12-03 08:55:49 789

原创 Ubuntu 12.10安装低版本gcc和g++编译器

Ubuntu12.10默认安装gcc编译器为最新的编译器,实际中常常需降低编译器版本,现列举较为简单实用的方法如下:sudo apt-get install gcc-4.6sudo apt-get install g++-4.6查看g++和gcc两个软件包安装的文件的路径如下:  /usr/bin  ls -al /usr/bin/g++ /  结果:  /usr/bin/

2013-11-17 16:10:58 3584

转载 这是毕业生们唯一的信念;我所看到最好的毕业纪念文

余杰《毕业生》一  北大的夏天,只有记忆是潮湿的。我们不是植物,不能在这块土地上生生不息。青春在窗边的风中飘逝 了。玻璃做的风铃摔下来,发出最后短暂的呼救声。谁来救我们呢?水瓶躺在床脚,布满灰尘。大四了,没有人像以前那样勤劳,跑到水房去打水。宁可渴着,要么 喝凉水。床头女明星的笑容已经苍白,像一朵枯萎的忘忧草。录音机里还是那首令人心恼意乱的老歌,劣质的磁带,快要转不动了。  

2013-10-20 22:33:33 1054

原创 mapreduce原理【应整理到一起】

理解mapReduce从可以理解的角度来谈MapReduce。 Wiki给出的定义:"Map" step: The master node takes the input, partitions it up into smaller sub-problems, and distributes them to worker nodes. A worker node may do

2013-08-01 19:31:19 611

转载 Step By Step(Lua调用C函数)

Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作

2013-07-29 17:56:41 473

原创 Lua调用C函数

Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作

2013-07-29 17:27:54 1613

原创 LUA函数和C函数的相互调用

1. 简介LUA和C之间的函数调用也是基于上一节提到的栈。1.1 从C程序调用LUA函数LUA的函数和普通变量一样也是First Class Variable类型,可以看作函数指针变量参与栈操作。因此调用过程分为如下几个步骤:请求LUA函数(指针)入(GLOBAL)栈。 将函数需要的参数入栈,入栈顺序按照参数被声明的顺序。 告知LUA虚拟机入栈参数的个数、函数返回值的个数,并调

2013-07-29 10:56:09 749

转载 ubuntu 挂载u 盘

转自:http://blog.csdn.net/ghj1976/article/details/6164833第一步:查看U盘信息 首先使用 sudo fdisk -l 命令查看一下U盘在那里, 这个信息查看后,可能会类似看到下面信息: Disk /dev/sdb: 4007 MB, 4007657472 bytes 255 heads, 63 sectors/tr

2013-07-23 15:25:01 4030

原创 C语言宏定义##连接符和#符的使用

C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)

2013-07-15 20:21:00 441

原创 提高程序运行效率的简单方法

对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题。但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本人积累的一些简单实用的提高程序运行效率的方法,希望对大家有所帮助。注:以C/C++程序为例一、尽量减

2013-07-05 09:59:10 566

原创 Ice 线程与并发 C++

线程1.Thread类    1.1概述          Ice中的基础线程是由ThreadControl类和Thread类来提供的(在IceUtil/IceUtil.h中定义):          Thread类是一个抽象基类,拥有一个纯虚方法run。要创建线程,必须特化Thread类,并实现run方法。      1.2 其成员函数           1)id:该函

2013-05-30 09:55:03 804

原创 assert()函数用法总结

assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression );  assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.

2013-05-27 21:13:05 447

原创 char *和char [] 区别

在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。 程序演示:测试环境VS2010代码#include using namespace std;main(){   char *c1 = "abc";   char c2[] = "abc";   cha

2013-05-25 11:42:06 461

原创 VS2010使用Dll文件搜索顺序

1. 首先,我用VS2010创建了一个Dll工程。编译连接后,便在Debug目录下得到了.lib,.dll文件。 2. 然后,我再创建了一个win32控制台程序,使用这个dll文件,我使用的方式是装载时调用,所以我需要.h,.lib,.dll文件。2.1 我将这3个文件复制到这个程序的目录下,然后在程序中就可以直接使用了。2.2 在运行的过程中,我发现运行时,使用的dl

2013-05-24 15:45:59 2546

原创 匈牙利命名法规范

匈牙利命名法是电脑程序设计中的一种变量命名规则,此命名法又可细分为:系统匈牙利命名法和匈牙利应用命名法。系统命名法与应用命名法的区别在于前缀的目的。在系统匈牙利命名法中,前缀代表了变量的实际数据类型。例如:lAccountNum:变量是一个长整数("l");arru8NumberList:变量是一个无符号8位整型数组("arru8");szName:变量是一个零结束字符串("sz"

2013-05-24 10:25:28 2851

原创 const在函数声明中的应用

1.在一个函数声明中,const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法:        A& operator=(const A& a);                 void fun0(const A* a );                 void fun1( ) const; // fun1( ) 为类

2013-05-24 08:43:29 656

原创 DLL 中 .def文件的使用

DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。            首先创建 一个DLL程序,.cpp中int __stdcall Add(int numa, int numb)

2013-05-23 10:50:52 605

原创 vs2010快捷键

VS2010版快捷键Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIF

2013-05-09 17:06:29 398

原创 外星人计算Pi的程序

一、源程序本文分析下面这个很流行的计算PI的小程序。下面这个程序初看起来似乎摸不到头脑,不过不用担心,当你读完本文的时候就能够基本读懂它了。程序一:很牛的计算Pi的程序int a=10000,b,c=2800,d,e,f[2801],g;main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c -=14,printf("%.4d",e+

2013-04-29 19:09:16 654

转载 c++ 统计英文文本中每个单词的词频并且按照词频对每行排序

前几天写了Apriori算法之后效率很差,在网上查了很多资料,另外的最大模式挖掘算法一般有FP-Growth 和 Ecalt 算法,这两种效率比较高而FP-Growth算法构建FP-Tree的过程非常复杂,后来在网上找到了另外一种效率更优化且结构更简单的算法,那就是北大邓志鸿老师的PPV算法,看了论文以后觉得这确实是一个好的算法,因此打算加以实现。在实现的第一步就卡住了。在构造PPV-TREE/

2013-04-29 11:48:34 2123

转载 一个博士生学位论文致谢部分(挺感人的)

我出生的时候是一个下雪的深夜,我的父亲在床边生了一堆柴火,我的母亲躺在四周漏风的那间破屋角落的床上,咬紧牙关,生下了我。27年后,也是在一个下雪的深夜,我完成了我的博士论文。当我打完最后一个字的时候,我站起来,拉开窗帘,打开窗户,白天还吵吵闹闹、喧嚣的世界变成一片洁白,让人顿感清净。我从进入大学到博士毕业整整十年。在这十年中,我过得浑浑愕额。十年前,我身高170cm,十年后,我身高还是17

2013-04-13 16:10:43 1252

转载 LUA TABLE 遍历数组的应用

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbte

2013-02-21 13:40:03 9974

转载 Lua语言教程2

Lua 语言的简单介绍 文章来源于http://www.lupaworld.com1. Lua的特点Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它的主页是 www.lua.org。Lua最著名的应用是在暴雪公司的网络游戏WOW中。Lua脚本可以很容易的被

2013-02-20 14:35:30 595

原创 哈希表学习

我们知道:哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果Key一样,则在一起,如果Key不一样,则不在一起。哈希表的查询是飞快的。因为它不需要从头搜索,它利用Key的“哈希算法”直接定位,查找非常快,各种数据库中的数据结构基本都是它。但带来的问题是,哈希表的尺寸、哈希算法。        哈希表的数组是定长的,如果太大,则浪费,如果太小,体现不出效率。合适的数

2013-02-15 22:02:09 674

转载 《Windows核心编程系列》十一谈谈Windows线程池

Windows线程池      上一篇博文我们介绍了IO完成端口。得知IO完成端口可以非常智能的分派线程。但是IO完成端口仅对等待它的线程进行分派,创建和销毁线程的工作仍然需要我们自己来做。      我们自己也可以创建线程,但是涉及到线程的编码操作比较复杂,容易出现差错。为了简化程序员的工作,Windows提供了一个线程池机制来简化线程的创建、销毁以及日常管理。这个新线程池可能不

2013-02-05 11:45:12 573

转载 用ICE开发分布式程序

本文是摘自http://www.cppprog.com 上的一位牛人毛毛写的文章,想想自己用了Ice那么久,还是不如别人造诣深刻,真是自叹不如啊!   ICE是ZeroC公司开发的一款高效的开源中间件平台,全称是Internet Communications Engine。它的主要设计目标是:• 提供适用于异种环境的面向对象中间件平台。• 提供一组完整的特性,支持广泛的

2013-02-05 11:09:40 505

原创 ICE的属性配置

本文介绍了如何通过命令行参数或配置文件设置ICE的行为在前一篇 文章中,大家可能都注意到了一个细节,Ice的初始化函数initialize 的输入参数正好是主函数的输入参数,也就是命令行参数(注:辅助类Ice::Application也调用了initialize函数 )。Ice的初始化函数得到命令行参数后,抽取出Ice专有参数 ,并把分析后的配置存入到Ice的属性表中。假设命令行为

2013-02-05 11:07:41 1389

原创 Ice的主要细节

ICE的整体架构服务器端:服务器端通常只有一个通信器(Ice::Communicator),通信器包含了一系列的资源:如线程池、配置属性、对象工厂、日志记录、统计对象、路由器、定位器、插件管理器、对象适配器在通信器内,包含有一个或更多的对象适配器(Ice::ObjectAdapter),对象适配器负责提供一个或多个传输端点,并且把进入的请求分派到对应的servant中去执行。

2013-02-05 10:54:09 3462

转载 ICE的异步方法调用

异步方法调用(Asynchronous Method Invocation,简称AMI)下面这种情况就是AMI调用:“斧头帮”大哥(客户端)叫小弟(服务器端)去干收租的活(远程调用),并且给小弟一把烟花炮竹(回调类)。嘱咐说: “我还有其它事情要打扫打扫,如果你的事情办完了,就放'OK'烟花;如果遇到反抗,就放'斧头'烟花!”(服务器答复)。说完,这位大哥就可以放心的做其它事去了,直到看到天上

2013-02-05 10:34:17 1238

原创 Ice笔记---异步程序设计demo

最近学习了异步通信这一章:异步包括服务端的异步分派(AMD)以及客户端的异步调用(AMI)。下面介绍一下如何实现简单的异步通信(主要实现了客户端的异步调用,AMD暂未体现):  1.首先编写Ice文件:Demo.iceview plainmodule Demo{       interface Employee{             ["amd"]void

2013-02-05 08:56:14 618

转载 C++中智能指针的设计和使用

智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷

2013-01-29 19:31:18 328

原创 ICE编程中的 Nonmutating 和 Idempotent

Nonmutating 操作     有一些操作,例如上面代码中的getTime操作,这个操作不会修改所操作的对象的值。它们在概念上等效于C plus plus的const 成员函数。你可以如下的指出这样的操作:  interface Clock { nonmutating TimeOfDay getTime();

2013-01-29 17:30:46 855

原创 关于C++的指针与对象

指针与对象不管是类还是结构(其实结构是一种特殊的类),它们在创建时还是要创建内存的,但是,创建类的对象也有两种方式,直接声明和用指针来分配新实例。[cpp] view plaincopyprint?#include    using namespace std;    class Test  {  public:      Test();      ~Test();

2013-01-16 16:42:21 394

Google 大数据三论文 Bigtable GFS MapReduce

Bigtable:一个分布式的结构化数据存储系统; The Google File System; MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现

2013-02-15

ICE 中文学习教程

ICE分布式程序设计:适用于异种环境的面向对象中间件平台;完整的特性,支持广泛的领域中的实际的分布式应用开发;平台更易于学习和使用;在网络带宽、内存使用和CPU开销方面都很高效的实现;内建安全性的实现,适用于不安全的公共网络。

2013-02-05

算法导论第二版中文

《算法导论(原书第2版)》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,《算法导论(原书第2版)》也是一本案头必备的参考书或工程实践手册

2013-01-12

软件建模设计

软件建模技术,面向对象技术与UML教程,设计模式

2013-01-06

图像处理与识别

图像处理 识别

2012-12-01

空间坐标转换

空间坐标转换;

2012-12-01

网络通信程序

该网络socket通信测试如QQ聊天程序,IP地址写入127.0.0.1回路地址,可以测试通信是否成功。

2012-08-30

C++ 笔试题面试大全(含答案)

单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。

2012-08-30

线程同步机制解决多线程资源访问冲突

为了解决多线程访问公共资源的冲突,开发人员需要采用线程同步机制,来避免同一时刻多个线程访问公共资源;该程序使用事件对象进行线程同步;事件对象分为人工重置事件对象和自动重置事件对象。

2012-06-19

不同进制转换方法

在日常的生活中,人们最常用的是十进制的数据,但是在计算机中,有时需要使用二进制、八进制和十六进制等不同进制的数据;该程序实现不同进制的数据之间的相互转换。

2012-06-18

哈希查找算法

哈希函数的构造方法常用:数字分析法、平均取中法、分段叠加、伪随机数法、余数法;构造好的哈希函数可以减少冲突。

2012-06-18

快速排序算法

快速排序基本思想是通过一趟排序将待排序的数据分割成独立的两个部分。其中一部分的所有数据都比另一部分的所有数据都要小,然后再按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个序列变成有序序列;该程序简单易懂

2012-06-18

嵌入式系统的构建

嵌入式系统构建适用教材,讲述详细,适用于初学者入门和高级研发人员参考;实例透彻

2012-06-08

空空如也

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

TA关注的人

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