自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 ET还是LT?

出处:https://zhuanlan.zhihu.com/p/21374980?refer=yedongfuEPOLL事件的两种模型:Level Triggered (LT) 水平触发.socket接收缓冲区不为空 有数据可读 读事件一直触发.socket发送缓冲区不满 可以继续写入数据 写事件一直触发符合思维习惯,epoll_wait返回的事件就是socket的状态Edge Triggered

2018-01-02 14:00:51 866

原创 给 libevent 提交的pullrequest

https://github.com/nmathewson/Libevent/commit/6cce7458d0f94e320f201eb5be94866e6918d66c

2017-12-28 13:26:30 209

转载 linux-线程/进程通信eventfd

eventfd 在内核版本,2.6.22以后有效。查看内核版本可以用命令 uname -r 在看muduo源码时,项目中使用eventfd机制实现线程间的唤醒(通知)。觉得效率比较高,所以拿来学习下。其也可以实现父子进程间的通信。 首先使用: man eventfd name:eventfd–创建一个用于事件通知的描述符SYNOPSIS:#include int event

2017-12-19 07:54:17 728

转载 网络编程释疑之:TCP半开连接的处理

熟悉基于TCP协议进行linux高性能、高并发服务端编程的朋友肯定应该知道每个文件描述符及其所占的资源对并发量的影响。在这种7*24甚至*365不间断运行的服务器上,一个描述符被浪费,两个被浪费...如果被浪费的多了,那还何谈高并发,高性能。除去文件描述被正常占用的情况外,是什么导致了我们可用的文件描述符越来越少呢?什么是半开连接?当客户端与服务器建立起正常的TCP连接后,如果客户主机掉线

2017-12-16 15:14:26 238

转载 socket读写返回值的处理

在调用socket读写函数read(),write()时,都会有返回值。如果没有正确处理返回值,就可能引入一些问题总结了以下几点1当read()或者write()函数返回值大于0时,表示实际从缓冲区读取或者写入的字节数目2当read()函数返回值为0时,表示对端已经关闭了 socket,这时候也要关闭这个socket,否则会导致socket泄露。netstat命令查看下,如果有clos

2017-12-16 14:58:14 1650

转载 epoll检测对端关闭

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

2017-12-16 14:34:43 7253 1

转载 socket可读,可写的条件

socket可读可写条件,经常做为面试题被问,因为它考察被面试者对网络编程的基础了解的是不是够深入。要了解socket可读可写条件,我们先了解几个概念:1.接收缓存区低水位标记(用于读)和发送缓存区低水位标记(用于写):每个套接字有一个接收低水位和一个发送低水位。他们由select函数使用。接收低水位标记是让select返回"可读"时套接字接收缓冲区中所需的数据量。对于TCP,其默

2017-12-16 13:39:19 867

转载 libevent----标志信息

出处:http://blog.csdn.net/beitiandijun/article/details/72772899一、事件类型  event-internal.h[cpp] view plain copy /**  * @name event flags  *  * Flags to pass to event_new(), even

2017-12-16 10:26:30 477

转载 struct event

对事件处理流程有了高层的认识后,本节将详细介绍libevent的核心结构event,以及libevent对event的管理。1 libevent的核心-event      Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。event就是Reactor框架中的事件处理程序组件;它提供了函数接口,供Reactor在事件发生时调用,以执行相

2017-12-16 09:24:47 476

原创 libevent evutil_gettime_monotonic_

intevutil_gettime_monotonic_(struct evutil_monotonic_timer*base,struct timeval*tp){    struct timespec ts;// base->monotonic_clock // monotonic_clock的设置在evutil_configure_monotonic_ti

2017-12-15 07:11:55 557

转载 关于sql 查询时的 字段拼接

今天在做数据库的数据迁移时,因用到的新库和原有库字段都不匹配,因此使用查询插入的方式来批量移动数据,但再操作过程中遇到存path(/父id/上级父Id.../id/)问题,故查询了网上的查询字段拼接方式。sql 中采用 + 号的形式可以拼接但有局限性,可能会把你想要的id拼接相加,比如想拼接 1和11,本身想要的结果是111,然而变成了12。解决这种问题那就得采用CONCAT和CONCAT_W

2017-12-12 10:42:46 2693

原创 检测是否支持monotonic

intevutil_configure_monotonic_time_(struct evutil_monotonic_timer*base,int flags){    /* CLOCK_MONOTONIC exists on FreeBSD, Linux, and Solaris. You need to     * check for it at runtime, b

2017-12-12 07:22:16 852

转载 POSIX Clock

出处:http://www.wowotech.net/basic_tech/tech_discuss/timer_subsystem/posix-clock.html一、前言clock是timer的基础,任何一个timer都需要运作在一个指定的clock上来。内核中维护了若干的clock,本文第二章描述了clock的基本概念和一些静态定义的posix clock。根据计时的特点,clo

2017-12-12 07:21:14 477

转载 为什么函数可以返回unique_ptr

从智能指针说起对高手而言,指针是上天入地的神器;对新手而言,那简直是灾难的源泉。高级语言如Java,C#都自动管理内存,你只管new,不必操心内存释放问题。Bjarne StroustrupC认为++加入垃圾回收机制将做不适合系统底层的开发,为此C++提倡使用RAII来管理资源。auto_ptr就是根据这种理念而诞生的智能指针,本意是想编写个效率接近原生指针,但具有资源所有权安全的智能指针。当

2017-12-10 15:14:08 8361 4

转载 event_base02

出处:http://m.blog.csdn.net/huangjh2017/article/details/780459851. 简介上一节中,我们学习了如何创建一个默认的event_base。但是在实际的应用中,默认的event_base是远远满足不了需求的。更多的时候我们是需要根据具体的使用情况,来建立一个复杂的event_base。关于如何建立复杂的event_base,其实在上

2017-12-09 13:59:09 240

转载 event_base01

出处:http://m.blog.csdn.net/huangjh2017/article/details/780452991. 简介在使用libevent函数之前需要分配一个或者多个event_base结构体。每个event_base结构体持有一个事件集合,可以检查以确认哪个事件是激活的。如果设置event_base使用锁,则可以安全的在多个线程中访问它。然而,其事件循环只能运行在一

2017-12-09 13:57:21 130

转载 SO_REUSEADDR

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

2017-12-09 09:50:31 123

转载 SO_REUSEPORT

以前就在国外的论坛接触过SO_REUSEPORT,这两天朋友群又在传播nginx 1.9 reuseport多进程监听参数。那咱们简单说下SO_REUSEPORT的应用场景, 为什么会用他? 然而在讲解SO_REUSEPORT之前,需要先说下我们常用的网络模型。文章写得不太严谨, 请砖家拍砖,另外标注下原文地址,  http://xiaorui.cc/?p=2413在

2017-12-09 09:49:28 517

转载 sql查询结果以逗号隔开

出处:https://www.cnblogs.com/shockerli/p/mysql-group_concat.html函数返回带有来自一个组的连接的非NULL值的字符串结果。该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数。语法结构: GROUP_CONCAT([DISTINCT] expr [,expr

2017-12-08 10:29:33 19283

原创 设置O_NONBLOCK

intevutil_make_socket_nonblocking(evutil_socket_t fd){#ifdef _WIN32    {        unsigned long nonblocking = 1;        if (ioctlsocket(fd, FIONBIO, &nonblocking) == SOCKET_ERROR) {      

2017-12-08 07:13:51 6783

原创 拆分字符窜函数

StrVec Split(const string &s, char c, bool inclue_empty_value) {    return Split(s.c_str(), s.length(), c, include_empty_value);}StrVec Split(const char *s, size_t len, char c, bool include_em

2017-12-06 18:44:29 204

原创 ubuntu 编译ActiveMQ-CPP

ActiveMQ-CPP依赖apr,apr-util,apr-iconv,cppunit.如果你还想使用ssl,你还要安装OpenSSLapr,apr-util,apr-iconv可以到apache官网--http://apr.apache.org/download.cgi下载ActiveMQ-CPP可以到:http://activemq.apache.org/cms/active

2017-12-06 17:55:36 320

转载 linux静态库和动态库编译及使用

1 代码样例[cpp] view plain copy /**************************************************************************/  /*add.c*/  int add(int x, int y)  {  return x + y;    return 0;  }  /*********

2017-12-06 08:17:40 216

转载 linux下so动态库一些不为人知的秘密(中)

我们知道linux链接so有两种途径:显示和隐式。所谓显示就是程序主动调用dlopen打开相关so;这里需要补充的是,如果使用显示链接,上篇文章讨论的那些问题都不存在。首先,dlopen的so使用ldd是查看不到的。其次,使用dlopen打开的so并不是在进程启动时候加载映射的,而是当进程运行到调用dlopen代码地方才加载该so,也就是说,如果每个进程显示链接a.so;但是如果发布该程序时候忘记

2017-12-06 08:13:30 580

转载 linux下so动态库一些不为人知的秘密(上)

出处: http://blog.chinaunix.net/uid-27105712-id-3313293.htmllinux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。      基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /b

2017-12-06 08:06:53 583

转载 gcc中的-Wl,rpath=<your_lib_dir>选项

gcc编译链接动态库时,很有可能编译通过,但是执行时,找不到动态链接库,那是因为-L选项指定的路径只在编译时有效,编译出来的可执行文件不知道-L选项后面的值,当然找不到。可以用ldd 看看是不有 ‘not found’在你链接的库后面,解决方法是通过-Wl,rpath=,使得execute记住链接库的位置

2017-12-06 07:14:17 380

转载 Linux动态链接库搜索路径问题

动态库的搜索路径搜索的先后顺序是:(1).编译目标代码时指定的动态库搜索路径(-Wl,-rpath 指定);(2).环境变量LD_LIBRARY_PATH指定的动态库搜索路径;(3).配置文档/etc/ld.so.conf中指定的动态库搜索路径;(4).默认的动态库搜索路径/lib;(5).默认的动态库搜索路径/usr/lib.

2017-12-06 07:11:44 435

原创 makefile 命令前-

通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止,不再执行后续命令,但如果命令前面加了-号,即使这条命令出错,make也会继续执行后续命令。通常rm命令和mkdir命令前面要加-号,因为rm要删除的文件可能不存在,mkdir要创建的目录可能已存在,这两个命令都有可能出错,但这种错误是应该忽略的。

2017-12-04 18:58:51 476

转载 makefile中命令前@

通常,make会把其要执行的命令行在命令执行前输出到屏幕上。当我们用“@”字符在命令行前,那么,这个命令将不被make显示出来,最具代表性的例子是,我们用这个功能来像屏幕显示一些信息。如:@echo 正在编译XXX模块......当make执行时,会输出“正在编译XXX模块......”字串,但不会输出命令,如果没有“@”,那么,make将输出:echo 正在编译XXX模块

2017-12-04 18:55:05 11391

原创 samba最简单实用

找到smb.conf在最后加上[mdl_dev]path=/home/yongqing.jiao/sharewriteable=yesbrowseable=yesguest ok=yeschmod 777 /home/yongqing.jiao/share重启samba

2017-12-04 09:16:57 136

空空如也

空空如也

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

TA关注的人

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