自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 每个计算机工程师都应该知道的数字列表

L1 cache reference: 0.5 ns Branch mispredict: 5 ns L2 cache reference: 7 ns Mutex lock/unlock: 100 ns Main memory reference: 100 ns Compress 1K bytes with Zippy: 10,000 ns Send 2K bytes over 1 Gb

2016-12-23 16:04:49 469

原创 epoll的多线程安全性问题

最近在尝试模仿muduo网络库封装自己的mini网络库,陈硕老师推荐使用one loop per thread + 非阻塞IO的编程模型。于是准备采用一个主事件循环专门读取处理新的连接,而用数个(根据CPU核心数确定)从线程处理各个连接的业务的方式来实现新的服务器,这里就牵涉到一个问题,如果读取连接的主线程向从线程添加新的监听事件的时候会不会存在线程安全性的问题?epoll_ctl是线程安全的,但是

2016-07-22 19:32:36 7392

原创 Mudoo网络库中封装的互斥量与条件变量

Mudoo网络库中使用RAII的方式封装了同步原语,自己实现了互斥锁和条件变量,这里记录一下方便自己理解。   其中最主要的几个类有:MutexLock、MutexLockGuard、Condition以及CountDownLatch。其中MutexLock和Condtion是对于posix线程库中的互斥锁和条件变量的封装,MutexLockGuard和CountDownLatch则是对他们的封装

2016-06-13 18:06:34 735

转载 文章标题

转自:http://bg.biedalian.com/2013/08/09/nginx-hello-world.htmlnginx模块开发并不是那么容易, 从行数上来讲, 淘宝给出的tengine给出的那个所谓hello模块的长度也到了245行, 要想真正独立写出这么多代码, 对于我来说是非常难的.245行, 如果是nodejs, 已经可以写一个比较完善的文件服务器了. 要想完全理解这个hello模

2016-06-12 21:29:54 222

转载 [转]观察者模式的C++范例

原文:http://www.cnblogs.com/jiese/archive/2013/07/11/3183635.htmlObserver观察者模式 作用:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己UML图: Subject类,可翻译为主题或抽象通知者,一般用一个抽象类或者一个借口实

2016-06-09 18:38:13 254

原创 Nginx安装遇到的问题

拖了好久终于开始Nginx的任务,话说Nginx的安装几乎都是傻瓜式的,按照官方教程,一切顺利的话就是几行指令的事。 下载好源码解压后进入源码目录       ./configturemakemake install当然,是在一切顺利的情况下。。。。        执行完安装脚本后,由于虚拟机上之前安装过apache并未卸载,即使在关闭apache服务后,通过浏览访问本机依然出现的apach

2016-06-01 15:50:20 388

转载 TCP协议的send与recv以及链接的阻塞与关闭问题

Tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存中不能容纳的那部分

2016-05-12 10:34:14 5079

转载 单例模式与复制、赋值、析构

原文地址:http://www.cnblogs.com/loveis715/archive/2012/07/18/2598409.html“请写一个Singleton。”面试官微笑着和我说。  “这可真简单。”我心里想着,并在白板上写下了下面的Singleton实现:复制代码 1 class Singleton 2 { 3 public: 4 static Singleton

2016-03-07 11:15:59 2631

转载 【转】使用gdb和core dump迅速定位段错误

使用gdb和core dump迅速定位段错误关键字:gdb、段错误、core dump一、什么是core dumpcore:内存、核心的意思;dump:抛出,扔出;core dump:前提:当某程序崩溃的一瞬间,内核会抛出当时该程序进程的内存详细情况,存储在一个名叫core.xxx(xxx为一个数字,比如core.699)的文件中。二、更改生成的core文件的大小限制可见,core文件是内核生成的

2016-02-05 21:25:22 392

转载 GDB多线程调试方法

一、多线程调试 多线程调试重要就是下面几个命令:info thread 查看当前进程的线程。 thread 切换调试的线程为指定ID的线程。 break file.c:100 thread all  在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler-locking off|on|step,这个是问得最多的。在使用step或者continue命令调试

2016-02-05 21:15:06 322

转载 【转】getopt()和getopt_long()

int getopt(int argc, char * const argv[], const char *optstring); #include 该函数用来解析命令行参数。前两个参数设为main函数的两个参数。optstring设为由该命令要处理的各个选项组成的字符串。选项后面带有冒号':'时,该选项是一个带参数的选项。例如:make -f filename -n-

2016-01-04 21:10:49 241

转载 文章标题

1.什么是可重入性重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。可重入的函数必须满足以下三个条件:(1)可以在执行的过程中可以被打断;(2)被打断之后,在该函数一次调用执行完之前,可以再次被调用(或进入,reentered)。(3)再次调用执行完之后,被打断的上次调用可以继续恢复执行,并正确执行。可重入函数可以在任意时刻被中

2015-12-05 20:04:52 245

转载 Linux分离式线程

在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况下,原有的线程等待

2015-12-01 19:52:39 416

转载 Linux后台开发的要求

Linux后台开发应该具备技能一、linux和os:1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握3、awk sed需掌握4、共享内存的使用实现原理、然后共享内存段被映射进进程空

2015-11-25 21:35:50 381

转载 netstat命令

Netstat 编辑 在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统

2015-11-23 13:36:58 314

转载 文章标题

转载自:http://my.oschina.net/renhc/blog/35116标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。popen函数还创建一个管道用于父子进程间通信。子进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。下在给出pope

2015-11-22 17:54:41 243

转载 inux中c语言errno的使用

inux中c语言errno的使用Sep252013作者:信海龙   发布:2013-09-25 10:17  分类:c&c++, 编程语言     暂无评论  在linux中使用c语言编程时,errno是个很有用的动动。他可以把最后一次调用c的方法的错误代码保留。但是如果最后一次成功的调用c的方法,errno不会改变。因此,只有在c语言函数返回值异常时,再检测errno。e

2015-11-22 17:39:52 533

原创 Longest Palindromic Substring

在LeetCode上遇到了Longest Palindromic Substring问题,求最长回文子字符串,所谓回文就是左右对称的一串连续字符如“asdfdsa” 或者“asddsa”。如前面所述,回文有两种,一种是奇数个字符组成的回文(“asdfdsa”),这种回文以中间的某个字符作为对称轴。另一种回文为偶数个(“asddsa”)。,可以认为对称轴在中间两个相同字符的间隔中。      采用的

2015-10-23 11:08:25 329

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2015-10-23 10:52:43 239

空空如也

空空如也

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

TA关注的人

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