自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一缕阳光的博客

在通向成功的道路上勇往直前

  • 博客(40)
  • 收藏
  • 关注

转载 Python之OS模块进程管理介绍--os.fork()

转自:http://davidbj.blog.51cto.com/4159484/1240586有两种方式来实现并发性,一种方式是让每个“任务"或“进程”在单独的内在空间中工作,每个都有自已的工作内存区域。不过,虽然进程可在单独的内存空间中执行,但除非这些进程在单独的处理器上执行,否则,实际并不是“同时”运行的。是由操作系统把处理器的时间片分配给一个进程,用完时间片后就需退出处理器等待

2017-07-11 18:35:37 356

转载 SSL和HTTPS

SSL说明:  1)简介  SSL (Secure Socket Layer)为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

2017-07-11 15:04:34 310

转载 STL中的multimap---顺便说说如何查找同一关键字对应的所有值

转载:http://blog.csdn.net/stpeace/article/details/44984639我个人感觉哈, map的应用场景比multimap更多, 不过, 我们还是来学一下multimap。 我们知道, multimap中, 一个关键字可能对应多个不同的值, 怎么获取呢?我们来看程序, 接招(介绍三种方法):      结果为:

2017-07-08 18:06:55 1020

原创 STL Vector没有find()成员函数,只能用泛型find()

#include   #include   #include   using namespace std;    int main()  {      vectorint> v;      v.push_back(10);      v.push_back(23);      v.push_back(35);             if(find(

2017-07-08 16:36:47 1798

转载 火眼睛睛查coredump(stl sort)------永远让比较函数对相同元素返回false

转载:http://blog.csdn.net/stpeace/article/details/51040218#cpp看看如下代码的一个非常隐晦的错误, 虽然不会每次core dump, 但类似代码迟早会core dump, 好多人遇到过。 此问题极难定位, 看一下吧:[cpp] view plain copy#include   

2017-07-08 16:33:46 635

原创 人生感言

马云说的一些话,还是值得思考的:(1)、细节好的人格局一般比较差(2)、态度比能力重要,选择同样也比能力重要(3)、领导比员工多什么?领导永远不要跟下属比技能,下属肯定比你强;如果不比你强,说明你请错人了。①要比眼光:比他看得远;②要比胸怀:领导的胸怀是委屈撑大的,要能容人所不容;③要比实力:抗失败的能力比他强;一个优秀的

2017-07-08 14:10:00 391

原创 pthread_join()函数理解

 pthread_t tid;使用方式:pthread_join(tid,NULL); 为什么要使用pthread_join()?在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到pthread_jo...

2017-07-08 13:13:26 3451

转载 两个栈来实现一个队列的C++代码

转载:http://blog.csdn.net/stpeace/article/details/46765343利用两个栈来实现一个队列, 这个问题很常见。  最关键的是要有好的思路, 至于实现, 那是很简单的事情了。 在本文中, 也想说说自己的思路, 但是, 我觉得用代码来表述思路更符合我的习惯, 也是我的菜, 所以, 仅仅给出代码。 如有需要, 大家可以根据代码来理解思路。

2017-07-07 20:39:31 441

原创 C++中string.find()的误用

下面的结果是什么?#include   #include   using namespace std;    int main()  {      string s = "abc";      if(s.find("x"))      {          cout "yes"     }      else      {  

2017-07-07 20:17:07 538

原创 STL中empty()函数的误用

今日在一个项目上排查问题时,找到一个关于empty()函数误写为empty,导致出现了错误#include   #include   using namespace std;    int main()  {      string s = "abc";      if(s.empty)      {          cout "it

2017-07-07 19:53:12 2703

原创 STL中vector<type>的复制

STL vector的复制#include   #include   using namespace std;    int main()  {      vectorint> v1, v2;      v1.push_back(11);      v1.push_back(44);            v2 = v1;      co

2017-07-07 15:43:29 320

原创 C++ string assign()赋值常用方法

C++ string assign()赋值常用方法函数assign()常用在给string类变量赋值.常用方法有:1,直接用另一个字符串赋值.如str2.assign(str1);即用str1给str2赋值.2,用另一个字符串的一个子串赋值如str3.assign(str1, 2, 3);3,用一个字符串的前一段子串赋值;如str4.

2017-07-07 11:45:10 863

原创 STL中map的使用要点

我们都知道, 当map不存在某key时, 如果用下标操作, 便会产生新key。 因此, 要特别注意#include #include #include using namespace std; int main() { map m; m["k1"] = "good"; if(m["k3"] == "") {

2017-07-07 10:48:02 267

原创 STL中的map集合扩展字段比较方便

扩展字段map真是个好东西, 在定各种协议时很常用,便于扩展#include #include #include using namespace std; void fun(const map &mp) { } int main() { return 0; }

2017-07-07 10:36:41 307

转载 几种常用加密算法比较

由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。几种常用加密算法比较DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是

2017-07-06 23:11:32 1238

转载 如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?

转载:http://blog.csdn.net/stpeace/article/details/41922115openssl的库的用法, 前面已经介绍了, 所以不再啰嗦, 直接给出代码:[cpp] view plain copy// openssl的库的用法, 前面已经介绍了, 所以不再啰嗦, 直接给出代码    

2017-07-06 22:45:36 2260

转载 利用openssl来计算sha256哈希值

先配置openssl, 我就不再赘述了, 直接给出代码:[cpp] view plain copy#include   #include  // 如果你直接拷贝我的程序运行, 那注定找不到sha.h  #pragma comment(lib, "libeay32.lib")  #pragma comment(lib, "sslea

2017-07-06 22:36:47 10857

转载 利用openssl来计算sha1, sha224, sha256, sha384, sha512

转载:http://blog.csdn.net/stpeace/article/details/42371079利用openssl来计算sha1, sha224, sha256, sha384, sha512,前提是已经配置了openssl的环境:代码如下:[cpp] view plain copy#inclu

2017-07-06 22:22:36 3077

原创 如何利用openSsl来计算一个文件的md5值?

openssl环境的配置, 我就不再说了。在本文中, 我们来讨论一个文件的md5值, 废话少说, 直接给大家代码, 上点干货:[cpp] view plain copy#include   #include  // 如果你直接拷贝我的程序运行, 那注定找不到md5.h  #pragma comment(lib, "libeay32.l

2017-07-06 20:31:27 1484

转载 基于boost asio实现的支持ssl的通用socket框架

情景分析   现已存在一个可用稳定的异步客户端类http_client_base,该类基于boost asio实现了连接服务器,发送请求,获取响应和解析http数据等操作,该类的大致实现框架如下  1class http_client_base  2{  3public:  4    http_client_base(boost::asio::io_service& i

2017-07-06 19:56:58 1889

转载 boost.asio防止恶意空连接的方法

转载:http://blog.csdn.net/educast/article/details/13167847网络服务器通常要应对一些意外情况,如空连接行为,指在遇到客户端连接后不进行任何操作,并很可能在大量空连接情况下导致服务器资源耗尽而无法工作。以下代码主要工作在连接后首次接收客户端消息的环节添加一个timer,并在指定时间后检测是否已接收到消息(验证

2017-07-06 19:43:20 473

转载 Linux下的基本常用命令解析

1.查进程    ps命令查找与进程相关的PID号:    ps a 显示现行终端机下的所有程序,包括其他用户的程序。    ps -A 显示所有程序。    ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。    ps -e 此参数的效果和指定"A"参数相同。    ps e 列出程序时,显示每个程序所使用的环境变量。    ps

2017-07-06 13:39:28 236

原创 判断输入的IP地址是否合法

判断输入的IP地址是否合法,ip地址的值在0~255之间,先把输入的IP的地址转换为一个字符串。#define LEN (sizeof(xx)/sizeof(xx[0]))const char *xx[] = {"192.168.1.1", "10.0.0.1", "127.256.0.1", "iugerjiogjioe", "172.16,0.1", "4", "0"};c

2017-07-06 11:36:00 3905

原创 C++中默认构造函数使用时的要点

最近写代码的时候发现一个奇怪的现象:当我声明一个无参构造函数时,如果后面加上括号,声明出的对象就不能显示。比如下面的代码:[cpp] view plain copy#include     class Test {  public:      Test()  {          printf("Test construc

2017-07-05 11:46:32 263

原创 C++ 多重继承之内存存储

C++ 之多重继承1. C++中class与struct。在C++里面,class与struct没有本质的区别,只是class的默认权限是private,而struct则是public。这个概念也揭示了一点:class和struct在内部存储结构上是一致的。所以我们可以利用这一点来探讨class的实现原理。我们可以将class转换成对应的struct对象,通过struct的简单

2017-07-04 20:29:25 695

原创 boost::function的用法(二)

boost function是一组类和模板组合,用于包装各种函数。从功能上,它类似于函数指针,但是比函数指针的功能更强大。使用boost function,必须包含头文件[cpp] view plain copy#include   除了头文件外,不需要额外的库。注意,boost function有两种形式

2017-07-04 19:37:28 744

原创 boost中bind的使用

最近对boost的bind部分比较感兴趣,对其背后的机制进行了简单的分析,和大家分享一下。注,我所看的代码是boost_1_64_0, 想来各个版本的差异不大。定义函数[cpp] view plain copyint f(int a, int b)  {      return a + b;  }  

2017-07-04 17:34:05 2425

原创 boost::function的用法(一)

boost::function的用法本片文章主要介绍boost::function的用法。 boost::function 就是一个函数的包装器(function wrapper),用来定义函数对象。1.  介绍    Boost.Function 库包含了一个类族的函数对象的包装。它的概念很像广义上的回调函数。其有着和函数指针相同的特性但是又包含了一个调用的接口。一个

2017-07-04 16:14:03 1561

原创 boost库在ubuntu下的安装

系统是ubuntu虚拟机,安装的是boost_1_60_0。(1)首先去下载最新的boost代码包,网址www.boost.org。(2)进入到自己的目录,解压:bzip2 -d boost_1_60_0.tar.bz2tar xvf boost_1_60_0.tar(3)之后进入boost目录cd boost_1_60_0/./bootstrap.sh之后会产生bja

2017-07-03 18:00:15 625

原创 boost库学习入门篇

学习及使用Boost库已经有一段时间了,Boost为我的日常开发中带来了极大的方便,也使得我越来越依赖于boost库了。但boost功能太多,每次使用还是得翻看以前的资料,所以为了以后可以更方便的使用,在此对常用的功能作一个总结,也希望以此与大家共勉。boost库下载,Svn地址: http://svn.boost.org/svn/boost/trunk编译源码编译boos

2017-07-03 16:33:26 1750

原创 UDT源码剖析(六):UDT::socket()过程代码注释

调用路线UDT::socket()->CUDT::socket()->CUDTUnited::newSocket()1UDTSOCKET CUDT::socket(int af, int type, int)2{3   // 如果垃圾收集没启动

2017-07-02 19:00:03 475

原创 UDT源码剖析(五):UDT::cleanup()过程代码注释

调用路线UDT::cleanup()->CUDT::cleanup()->CUDTUnited::cleanup()1int CUDTUnited::cleanup()2{3   // 锁保护4   

2017-07-02 18:55:13 524

原创 UDT源码剖析(四):UDT的GC线程相关过程代码注释

着UDT::Startup()的启动,GC线程也随之运行了。GC主要关注的就是UDTSocket的释放,下面我们来看看这个GC线程是怎么实现的。查看源代码打印帮助1#ifndef WIN322   void* CUDTUnited::garbageCollect(

2017-07-02 18:49:18 363

原创 UDT源码剖析(三):UDT::startup()过程代码注释

调用路线UDT::startup()->CUDT::startup()->CUDTUnited::startup()1int startup()2{3   return CUDT::startup();4

2017-07-02 18:39:08 478

原创 UDT源码剖析(二):UDT自带例程recvfile注释

这几天学习了UDT自带的例子,结合源码进行了测试如下:#ifndef WIN32   #include    #include #else   #include    #include #endif#include #include #include #include #include using namespace std;

2017-07-02 18:24:17 752

原创 UDT源码剖析(一):UDT自带例程sendfile注释

#ifndef WIN32   #include    #include #else   #include    #include #endif#include #include #include #include using namespace std;#ifndef WIN32void* sendfile(void*);#

2017-07-02 18:16:32 821

原创 UDT源代码下载链接

对UDT有兴趣的可以下载UDT对应的源码进行研究,下面给出了一个开源中国的连接:UDT最新源码下载地址:http://sourceforge.net/projects/udt/files/latest/download?source=directory.

2017-07-02 17:53:16 1117

转载 UDT中select异常

转载:http://blog.csdn.net/seebit/article/details/6050428select, selectEx的参数采用了stl的容器,在DLL方式下,会发生异常。select传入的容器内的对象在DLL内部发生释放操作时,会抛出异常,因为主程序和DLL申请的内存不能互相传递释放。同样的问题是selectEx传出的容器对象是在DLL内

2017-07-02 17:50:31 268

原创 RCF的优势--分布式应用

RCF(远程调用框架)是一个可以移植的C++进程间通信框架,使用C++语言特性,提供了一个简单高效的编写分布式C++软件的途径。RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORBA,DCOM,.NETRemoting,WCF,WS-*,等所支持的面向对象方式不一样,RCF提供了一种面向接口的方式。RCF让你明确指定接口和数据,而不是产生复杂的对象模型和不透明的串行化代码,这样

2017-07-02 17:47:58 1265

原创 UDT内部代码分析

一. 报文发送1.CSndQueue::worker中调用CChannel::sendto发送数据报文。2.CSndQueue::sendto中调用CChannel::sendto发送其他报文, 种类较多主要有:1)CUDT::connect中调用CSndQueue::sendto发送建立连接请求。2) CUDT::sendCtrl中调用CSndQueue::sendto发送控制报

2017-07-02 17:31:26 539

空空如也

空空如也

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

TA关注的人

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