自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Int 与 AtomicInteger在线程安全方面的差异

1 int为什么不支持线程安全?而AtomicInteger可以?   int 作为基本类型,直接存储在内存栈,且对其进行+,-操作以及++,--操作都不是原子操作,都有可能被其他线程抢断,所以不是线程安全,(注:如果是>则是原子操作)  AtomicInteger在实现增减的时候是通过getAndAdd(int delta)   public final int getAndAdd(

2014-07-23 11:42:47 6659 1

转载 epoll模型

开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?先简单回顾下如何使用C库封装的3个epoll系统调用吧。

2014-03-30 17:02:21 430

转载 malloc与free

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强

2014-03-30 13:55:01 400

转载 MessageBox

从Windows 1.0到Windows 3.1的16位Windows中,MessageBox函数位于动态链接库USER.EXE。在Windows 3.1软件开发套件的WINDOWS.H中,MessageBox函数定义如下:int WINAPI MessageBox (HWND, LPCSTR, LPCSTR, UINT) ; 注意,函数的第二个、第三个参数是指向常数

2014-02-24 10:52:11 588

转载 /dev/urandom /dev/andom

Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。他们产生随机数的原理是利用当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境

2014-02-21 15:45:46 819

转载 select机制

select系统调用是用来让我们的程序监视多个文件描述符(file descrīptor)的状态变化的。程序会停在select这里等待,直到被监视的文件描述符有某一个或多个发生了状态改变。select()的机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件描述符(不管是Socket描述符,还是其他文件或命名管道或设备描述符)建立联系,建立

2014-02-20 22:03:30 549

转载 关于volatile的使用

就 像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码

2014-02-20 12:16:47 362

转载 找不到openssl/md5.h

出现:error: openssl/md5.h: No such file or directory原因是libssl-dev 没有安装,执行:sudo apt-get install libssl-dev 就可以了如果还报错:MD5.cpp:(.text+0xd): undefined reference to `MD5_Init'MD5.cpp:(.text

2014-02-16 18:32:35 3005

转载 HTTP请求报文和HTTP响应报文

HTTP请求报文和HTTP响应报文HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。HTTP请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。or<request-line><

2014-01-09 16:11:55 486

原创 字符串数组与字符串指针的区别

字符串数组与字符串指针的区别主要有以下几点:                    1  单独定义 char * p,是不会给分配内存空间的,这时候只能给其赋指针值,而不能赋需要空间存储的值,如:*p="hello,world",会出现错误                    2  定义字符串常量指针之后不能对其进行修改,ANSI C认为字符串常量指针是只读的           

2014-01-07 15:02:11 484

转载 getaddrinfo()函数详解

getaddrinfo()函数详解getaddrinfo()函数详解 1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv

2014-01-04 16:02:37 394

原创 关于C++中string::npos

发现这个问题是在这段代码中:                                            size_t pos=urls.find_first_of('/',7);                                            if(pos!=string::npos)                                 

2013-12-30 21:35:44 3744

原创 Uva11464 - Even Parity

水题一道    题目大意:给你一个n*n的01矩阵,你的任务是将最少的0变成1之后,使整个矩阵每个元素的上下左右值相加之和为偶数。    解题:将给出的矩阵的第一行枚举,无需将每一个元素枚举,由第一行就可以推算出矩阵其他元素,再进行判断就行。    代码:           #include#include#includeusing namespace std;i

2013-09-26 22:25:47 374

空空如也

空空如也

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

TA关注的人

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