自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stone-jin

个人网站:520stone.com github: http://www.github.com/stone-jin

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

转载 \r,\n,\r\n的区别

\n是换行,英文是New line,表示使光标到行首。\r是回车,英文是Carriage return,表示使光标下移一格。\r\n表示回车换行我们再平时使用电脑时,已经习惯了回车和换行一次搞定,敲一格回车键,即是回车,又是换行。1.\n 软回车在Windows中表示换行且回到下一行的最开始位置。相当于Mac OS里的\r的效果。在Linux,unix中只表

2015-12-31 10:51:39 1099

原创 关于Windows下做动态插件,需要用到的LoadLibrary的代码

有时候,代码中并不需要提前加载所有的dll,这时候可以选择使用LoadLibrary,GetProcAddress,FreeLibrary这三个函数来加载插件,而对应的插件部分编译成动态库。适用场景:如各厂商的插件的时候下面给出例子:main函数部分,负责获取路径,并通过LoadLibrary加载,然后GetProcAddress获取函数地址,然后FreeLibrary

2015-12-31 10:33:52 1773

原创 获取字符串中最后出现的一个字符的位置

#include #include using namespace std;int main(int argc, char** argv){ const char* pcExePath = argv[0]; cout << pcExePath << endl; const char* pcLast = strrchr(pcExePath, '\\');

2015-12-31 09:38:40 7580

原创 时间转换代码

#include #include #include using namespace std;int main(int argc, char** argv){ time_t current_time = {0}; current_time = time(NULL); tm* data = localtime(¤t_time); char buf[64

2015-12-31 09:21:00 1494

原创 查看LInux内核版本的命令

方法一:命令:uname -a作用:查看系统内核版本号及系统名称方法二:命令:cat /proc/version作用:查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称补充说明:/proc文件系统,它不是普通的文件系统,而是系统内核的映射,也就是说,该目录中的文件是存放系统内存之中的,它以文件系统的方式为访问系统内核数据的操作提供接口

2015-12-31 00:53:48 553

转载 EPOLL事件之EPOLLRDHUP

在对系统问题进行排查时,我发现了一个奇怪的现象:明明是对方断开连接,系统却报告一个查询失败的错误,但从用户角度来看请求的结果正常返回,没有任何问题。对这个现象深入分析后发现,这是一个基于epoll的连接池实现上的问题,或者说是特性。首先解释一下导致这个现象的原因。在使用epoll时,对端正常断开连接(调用close()),在服务器端会触发一个epoll事件。在低于2.6.17版本的内核

2015-12-31 00:31:55 5751

转载 PostgresSQL学习手册(索引)

一、索引的类型:PostgreSQL提供了多种索引类型:B-Tree,Hash,GiST和GIN,由于他们使用了不同的算法,因此每种索引类型都有其适合的查询类型,缺省时,CREATE INDEX命令将创建B-Tree索引。1.B-Tree:CREATE TABLE test(     id integer,     content varchar);CREATE IND

2015-12-30 10:29:36 853

转载 网络编程socket之listen函数

listen函数使用主动连接套接口变成被连接套接口,使得一个进程可以接受其他进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变成被动连接。listen函数在一般在调用bind之后--调用accept之前调用,它的函数原型是:#include int listen(int sockfd, int backlog)返回:0

2015-12-29 19:14:49 608

转载 TCP连接中的TIME_WAI状态

1. TIME_WAIT状态的必要性上述四次握手描述的是客户端主动关闭,服务器被动关闭的流程,其一般过程如下:1)客户端发送FIN保文,进入FIN_WAIT_1状态2)服务器端收到FIN报文段,发送ACK表示确定,进入CLOSE_WAIT状态。3)客户端收到FIN的确认保文端,进入FIN_WAIT_2状态。4)服务器端发送FIN保文段,进入LAST_ACK状态。5)客户端收

2015-12-29 13:26:32 909

转载 Linux协议栈accept和syn队列问题

环境:Client 通过tcp连接server,server端只是listen,但是不调用accept。通过netstat -ant查看两端的连接情况。server端listen,不调用accept。client一直去connect server。问题:运行一段时间后,为什么server端ESTABLISHED连接的个数基本是固定的129个,但是client端的ESTABLIS

2015-12-29 11:29:15 629

转载 从缓冲上看阻塞与非阻塞socket在发送接收上的区别

首先socket在默认情况下是阻塞状态的,这就使得发送以及接收操作处于阻塞的状态,即调用不会立即返回,而是进入睡眠等待操作完成。1.发送选用send(这里特指TCP)以及sendto(这里特指UDP)描述首先需要说明的是,不管阻塞还是非阻塞,在发送时都会将数据从应用缓冲区拷贝到内核缓冲区(SO_RCVBUF选项声明,除非缓冲区大小为0)。在阻塞模式下send操作将会等待所有数据均被拷贝

2015-12-29 10:46:40 326

转载 socket选项总结(setsocketopt)

功能描述:获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,他们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议号TCP。用法:int getsockopt(int

2015-12-28 17:44:38 14686 1

转载 Socket描述符选项[SOL_SOCKET]

Socket描述符选项[SOL_SOCKET]#include      int setsockopt( int socket, int level, int option_name,                         const void *option_value, size_t option_len);第一个参数socket是套接字描述符。第二个

2015-12-28 17:10:12 728

原创 RocketMQ使用方法

1.开源路径:https://github.com/alibaba/RocketMQ2.网友使用方式博客:http://blog.csdn.net/a19881029/article/details/344466293.RocketMQ个人理解:1)首先是一个消息队列,并且是持久化的消息队列。        2)Produer生产者   连接  nameserver, namese

2015-12-28 15:02:24 1577

转载 setsockopt中参数之SO_REUSEADDR的意义(转)

1.一般来说,一个端口释放后会等待两分钟之后才能被使用,因为此时处于TIME_WAIT状态,SO_REUSEADDR是让端口释放后立即就可以被再次使用。SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应该在调用bind()之前set_socketopt设置SO_REUSEADDR套接字选项。TCP,先调用clos

2015-12-28 13:39:15 1016

转载 windows的select函数

select的大概思想:将多个套接字放在一个集合里,然后统一检查这些套接字的状态(可读、可写、异常等),调用select后,会更新这些套接字的状态,然后做判断,如果套接字可读,就执行read操作。这样就巧妙地避免了阻塞,达到同时处理多个连接的目的。当然如果没有事件发生,select会一直阻塞,如果不想一直让它等待,想去处理其它事情,可以设置一个最大的等待时间。int sel

2015-12-23 11:02:01 6426

原创 I/O复用套接字编程

1.当前文章的目的是让自己熟练使用select poll epoll2.select

2015-12-23 10:56:40 509

原创 Teamtalk简介

Teamtalk是 蘑菇街 IM团队开源的一个IM的软件。github地址:  https://github.com/mogujie/TeamTalk官方网址:      http://tt.mogu.io/官方团队的博客地址:http://mogu.io/架构:开发环境搭建:Windows版本:  Visual Studio 2013Linux服务器代码:

2015-12-06 21:10:49 1544

空空如也

空空如也

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

TA关注的人

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