自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mumumuwudi的博客

mumumuwudi的博客

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

原创 博客迁移至github~~~~~~~~~~~~~

我的Github博客地址

2015-07-23 13:29:33 1300

原创 利用vmtouch管理文件的page cache

利用vmtouch管理文件的page cache,   vmtouch主页和使用说明:https://hoytech.com/vmtouch/源码也比较简单 https://github.com/hoytech/vmtouch/blob/master/vmtouch.cvoid usage() { //使用说明 printf("\n"); .... printf("

2016-02-15 02:17:54 1073

原创 nginx_lua 扩展让 nginx 拥有可编程能力

公司使用 lighttpd 的比较多, 主要是接入层的一些工作,而且增加了一些很多自己的模块防火墙等等. 后来nginx开始流行起来因为 lighttpd 和 nginx整体是实现方式比较类似(个人感觉nginx 借鉴了 lighttpd的实现方式),都使用了多进程异步非阻塞处理请求I/O和timer,对于静态文件服务使用sendfile系统调用.  作为静态文件server 和接

2016-01-26 08:56:45 3060

原创 Epoll 新增 EPOLLEXCLUSIVE 选项解决了新建连接的’惊群‘问题

epoll最终和accept一样解决了新建连接的惊群问题 patch地址: https://github.com/torvalds/linux/commit/df0108c5da561c66c333bb46bfe3c1fc65905898patch比较简单, 下面摘录了一部分关键修改~~在加入listen socket的sk_sleep队列 的唤醒队列里使用了 add_wait

2016-01-25 08:09:02 7550 4

原创 Nginx 工作进程运行示意图

Nginx 工作进程运行示意图

2016-01-25 07:59:47 1548

原创 Thrift 的TNonblockingServer运行原理分析

1.   server 创建 多一个 iothread 和 mange thread2.传递listened 给 iothread 的 number 为0的 ,监听listen的accept事件3.  当0号thread io 监听到事件时, 创建connect  并交给相应的iothread处理数据收发(通过管道方式)

2016-01-25 07:56:37 4601 12

原创 go(golang) dns 解析源码 go/src/net/dnsclient_unix.go 分析

go dns 解析 源码在go/src/net/dnsclient_unix.go, lookupHost函数调用关系如下:lookupHost()->goLookupHostOrder()-->goLookupIPOrder()--->tryOneName()---->exchange()func exchange(server, name string, qty

2015-09-24 23:55:37 3493

原创 go (golang) DNS域名解析实现

之前使用过GO语言写了一个实时图片下载程序,主要考虑到GO语言的DNS解析对协程支持友好, 即DNS解析时不会阻塞执行线程,只会阻塞当前协程,顺便研究了一下GO的net.LookupHost实现方式。下面一段描述翻译自go语言的官方文档 https://golang.org/pkg/net/域名解析:        域名解析函数,Dial函数会间接调用到,而LokupHost和Look

2015-09-04 00:03:48 23428

原创 ub 网络框架的几种线程模型

ub是公司不错的网络框架, 使用C语言开发,清晰易懂,不像sofa-rpc使用c++ 开发,语言层面的技巧较多.个人还是喜欢ub的简单. 本文通过ub框架介绍一下server端开发的常见的几种线程模型.ub包含5种线程模型,我们挑选了三个比较典型和简单的来讲解一下xpool   \\ 最简单同步模型cpool    \\ 生产者消费者模型appool  \\ 异步模型

2015-08-27 00:21:39 3952

原创 线程间使用条件变量同步正确方式

线程间同步标准的使用方式如下:thread 1: pthread_mutex_lock(&mutex); while (!condition) pthread_cond_wait(&cond, &mutex); func_1();/* do something that requires holding the mutex and condi

2015-08-26 08:28:28 2035

原创 父进程waitpid子进程的一般实现

父进程waitpid子进程的一般流程

2015-08-26 07:43:56 2208

原创 简单测试一下go(golang) 和libtask 协程的切换效率

简单测试一下go(golang)和lib task协程的切换效率, libtask一个C语言的协程库,是go语言的前身很早期的原型,测试机器是我的mac air 安装的centos虚拟机(只有一个核)代码没有采用任何优化,只是使用默认配置测试结论:golang 切换100w次 需要 295mslibtask 切换100w次 需要1446mspackage mainim

2015-08-13 22:58:48 2969

原创 linux 内存中buffer 和cache 的区别

page cahce 缓存了页面用来优化文件I/O, buffer cache 缓存了磁盘块用来优化 block I/O.在linux kernel 2.4之前,这两个缓存是不同的: 文件在page cache里, 磁盘块在buffer cache里. 这样某些系统调用(mmap)数据需要在两层cache中都保存了一份. 许多unix系统都遵循类似的模式. 这样很容易实现, 但是看起来很不

2015-08-04 11:37:42 1991

原创 Tokyo Cabinet Hash数据库存储和索引结构

先看图:head:                  数据库头文件.bucket Array:      hash索引数组,存放对key进行hash之后得到的hash值所对应的第一个                           元素在数据库文件中的偏移量.  比如当第一个数据来的时候请求存储,这时计算到该key的

2015-07-31 22:50:36 1699

原创 c-ares 一个C语言的异步DNS解析库

c-ares是一个C语言的异步DNS解析库,可以很方便的和使用者的事件循环统一起来,实现DNS的非阻塞异步解析,libcurl, libevent, gevent, nodejs都在使用。下面摘自Stack Overflow的一个例子,#include #include #include #include #include void dns_callback (void

2015-07-31 08:10:16 12565 2

原创 FreeBSD Kqueue的实现原理

kqueue/epoll 是两个网上出现频率比较高的关键字,epoll实现原理及源码网上已经有很多blog分析,关于select/poll/epoll、kqueque的优缺点也不再解释。kqueue实现原理的文章网上资料比较少, 基本上就JonathanLemon的一篇论文, Jonathan Lemon也是Kqueue的发明者。文章链接: Kqueue: A generi

2015-07-30 10:19:10 7283

翻译 LINUX程序(进程)在内存中的布局

翻译自: http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/ 感谢作者, 尤其一些图很漂亮,建议读者亲自读一遍英文.内存管理是操作系统的核心; 是编程和系统管理的关键部分,在接下来的几篇文章中会从实际应用和内部角度对内存管理模块进行分析. 内存管理的相关概念都是通用的,我们依照32位的linux和wi

2015-07-30 02:00:33 5880

翻译 linux 内核如何管理内存

翻译自 ttp://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/ 感觉作者的精美图片建议读者对一遍英文原文    在介绍完了进程虚拟地址空间的布局后, 我们来看一下内核是如何管理内存的:    linux的进程在内核中是由一个task_struct结构体描述的, 其中task_struct里面

2015-07-30 01:51:46 6698

原创 python基于协程的网络库gevent、eventlet

python网络库也有了基于协程的实现,比较著名的是 gevent、eventlet 它两之间的关系可以参照Comparing gevent to eventlet, 本文主要简单介绍一下eventlet一个例子#! /usr/bin/env python"""\Simple server that listens on port 6000 and echos back e

2015-07-29 00:44:15 7456

原创 LVS RS节点健康检查

LVS RS健康节点检查一般交由keepalived来做. 当然也可以自己写一个脚本来检查,通过tcp_connnect或者curl get 方式定期检测RS节点,如果检测失败则在LVS上删除该RS节点.        下面介绍一下百度内部的LVS(又叫做BVS) RS默认健康检测方式.        服务上线到BVS后,BVS会维护一份VIP-RS对应关系的配置,通过健康检查的机制来

2015-07-28 07:42:42 6510

原创 lvs 负载均衡fullnat 模式clientip 怎样传递给 realserver

关于LVS和FULLNAT的介绍可以看一下 淘宝吴佳明(普空)的视频  http://blog.aliyun.com/1750 ,FULLNAT模式很大简化了LVS的配置和部署,目前淘宝和百度基本上都在使用FULLNAT模式来作为接入侧的负载均衡模式.        百度的LVS叫做BVS, Baidu Virtual Server, 是在LVS基础上修改的增加了L3 Though 和 S

2015-07-26 03:21:11 15406

原创 google linux kernel tcp reuseport patch

This patch implements so_reuseport (SO_REUSEPORT socket option) forTCP and UDP. For TCP,so_reuseport allows multiple listener socketsto be bound to the same port.  In thecase of UDP, so_reusepor

2015-07-25 08:57:46 2159

原创 NGINX最新版正式增加了对reuseport (SO_REUSEPORT) 的支持,正式补丁代码分析

NGINX release 1.9.1 introduces a new feature that enables use of the SO_REUSEPORT https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/http://forum.nginx.org/read.php?29,252762,25340

2015-07-25 02:38:45 13904

原创 一个nginx_reuseport 简单补丁实现

补丁的diff文件在这里http://leaf.dragonflybsd.org/~sephe/ngx_soreuseport.diff该补丁只是一个简单实现演示,很多东西没有考虑到,作者也只是简单验证了使用REUSEPOORT后的效果The basic idea of the above patch is:- Defer the listen socket creation un

2015-07-25 01:26:19 17726 1

原创 OCR文字识别HTTP restapi接口设计

OCR文字识别需要做成HTTP接口对外使用, 该接口功能非常简单, 用户传递过来一幅图片后端解析完成后将识别出的文字返回. 恩  吃的是图片返回的是文字. 因为HTTP协议是基于文本的,图片的POST需要做对图片的内容做一些处理例如 腾讯开放的一个APIPOST /photo/upload_pic HTTP/1.1Accept-Language: zh-cn

2015-07-24 11:27:15 3170

原创 Tokyo Cabinet 的一个bug

Tokyo Cabinet 的代码......真是草泥马啊.... 跟LevelDB简直没发比啊...手机某些机型中Tokyo Cabinet Lib出现了好几次crash报告, 出问题的地方在  2145行 通过google breakpad 抓到了每次crash是都同一个非法地址0X0000021, 这个地址太小了肯定非法这个地址的值恰巧是 HDFLAGSO

2015-07-24 04:55:07 731

原创 linux中mmap文件到内存中,该进程发生错误被挂掉后mmap映射的内存能否写回到文件中的问题

在Tokyo Cabinet中hashDB中的hash索引是通过mmap将数据库文件的一部分映射到内存中的,之前把Tokyo Cabinet移植到手机淘宝客户端当做一个通用的KV数据库来使用,因为各种手机的环境千差万别,手淘某些机型中得crash率很高. Tokyo Cabinet数据库文件总是不完整.因为是手机客户端又不方便像在server端一样使用一个单独的线程定时同步

2015-07-24 02:37:45 3757

原创 LEVELDB(SSDB)关于读操作两种CACHE的作用和配置

SSDB及LEVELDB的用来优化查找Cache分为两种,分别是table_cache和block_cache。     table_cache用来缓存的是sstable的索引数据,也可以理解为mysql中得二级索引在内存中得缓存, 及通常所说的元数据的缓存;     bloom_fileter就放在table_cache,来快速定位一个key是否在该table中;     blo

2015-07-24 01:40:09 3307

原创 关于SSDB的网络模型

SSDB 是 完整的LevelDB实现, 因为google的LevelDB并没有实现网络功能, 只封装了数据库的基本操作SSDB地址和介绍 详见: https://github.com/ideawu/ssdbSSDB作者代码更新的还是比较快的.. 最新的版本比以前的改动好大从网络模型上说 SSDB跟 Memcache比较像,但是还有一些 细微的差别,如下图所示Netwo

2015-07-23 13:47:04 8352

空空如也

空空如也

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

TA关注的人

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