自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (5)
  • 收藏
  • 关注

原创 使用dpdk的程序换机器运行报invalid cpu的错误

dpdk换cpu核数不同机器运行时启动失败

2023-01-29 18:03:22 199

原创 git submodule 如何同步更新

git submodule 更新后,在父仓库里如何同步更新,其实只需要在一个地方(modules)调用一个命令(git pull origin master)即可

2022-04-27 11:52:26 11584

原创 高性能测试工具WRK的高级使用方法

WRKgithub地址:https://github.com/wg/wrk 简介:基于事件机制的高性能http压力测试工具,除了能针对单个url进行测试外,最重要的就是能够构造不同的url,不同的参数进行测试。或者发送携带body的POST请求,在有些场景下不要太帅。说明wrk高级的地方就是使用了luajit,在不同阶段抛出来几个回调函数,只需要针对这些函数操作即可构造想要请求。典型的回调函数有以

2017-10-27 20:57:33 15611 1

原创 nginx中开启keepalive后应答反而为close的原因

nginx中开启keepalive后应答反而为close的原因现象和原因采用nginx作为服务器向用户提供查询服务,由于业务原因,只需要应答header就可以,不需要响应body。 在header_filter_by_lua中ngx.header["Content-Length"] = nil, 在body_filter_by_lua中设置ngx.arg[1] = nil。 通过以上两个简单

2017-10-12 15:50:56 15072

原创 探测站点是否正在使用指定的CDN

前言一般来说,CDN厂商都会给客户提供一个接入域名,让客户在域名托管处修改业务域名的CNAME到接入域名就可以实现CDN的启用。 比如:域名未xxxx.yy 那么: 阿里云接入域名为:xxxx.yy.kunlunca.com. 百度云接入域名为:xxxx.yy.bdydns.com. 360的接入域名为:xxxx.yy.open.360cdn.cn. 等等,还有网宿,蓝讯,腾讯,金山云等

2017-06-16 18:46:28 1722

原创 指向指针数组的指针数组-4个*指针

前言C语言中,一般在项目中,指针非常常见,即*p, 表示指向一个变量的地址;也很常见两个指针的变量,即**p , 这表明此指针指向一个元素为指针的数组。 但是在nginx中,有一个指针定义为:void ****conf_ctx这实际上表示此指针指向一个元素为指针数组的指针数组。 所以写一个小程序来实现一个指向指针数组的指针数组的指针。内存布局代码/*默认认为m

2017-05-24 11:19:36 871

原创 我的VIM配置

近来,键盘敲的手疼,所以贴出VIM配置,看看是什么原因导致的手疼,是键盘太差了,还是vim配置有问题。set nuset ts=4set expandtabset autoindentset shiftwidth=4set encoding=utf-8set termencoding=utf-8set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2

2017-05-23 19:37:05 397

原创 nginx的指令开发时变量处理二

前言上一博 nginx指令开发时变量处理一 介绍了一种指令中出现变量的处理方法,今天再介绍一种方法。步骤假设命令如下: my_test_var $arg_channel 意思是:通过url的请求参数中channel来确定做某件事。 模块名为:ngx_http_my_test_var_module 1. 配置结构体如下typedef struct { ngx_array_t *v

2017-05-12 00:19:03 380

原创 nginx指令开发时变量处理一

nginx 指令中变量处理指令参数都是常量对于nginx的指令来说,如果指令的参数都是常量,解析这些参数就比较容易了,使用nginx自带的ngx_conf_set_xxx_slot函数,或者自定义解析函数都很容易解析配置。随便举两个例子如下:ngx_conf_set_off_slotngx_conf_set_size_slotngx_conf_set_msec_slot指令参数是变量但是如果指令

2017-05-11 00:08:38 687

原创 开发nginx模块时对普通文件的操作

序言开发nginx http模块时,有时候需要从指定的文件读取信息,这个时候,如果是新手,则肯定用操作系统文件系统函数来操作文件,比如用fopen打开文件,用fseek,fread等读取文件信息,最后用fclose关闭文件。这样操作文件也是可以工作的,但是如果代码中间有return的时候,我们需要确保打开的文件关闭,否则会造成文件句柄没有关闭,资源浪费,而且这种方式和nginx的异步回调风格有点不符

2017-05-09 21:24:29 2415

原创 go-map的并发问题

go 语言的map是引用传递的、如果多个goroutine同时读写,必然导致冲突,所以一般我们在并发操作map的时候,一定要加锁,但是如果map里的value是还是map,那么并发操作这个value- map是不是也一样回引起冲突呢?答案是:是的,go里所有map的并发操作都需要加锁,这样才不会引起冲突,见如下代码。我对map td操作加了锁,对得到的value-map进行了写操作,没有加锁,通过

2017-05-08 22:00:36 3944 1

原创 nginx字符串和redis字符串比较

nginx 字符串结构体1、ngx_str_t { u_char *data; size_t len;}redis的字符串结构体struct sdshdr { unsigned int len; unsigned int free; char buf[];};可以看出,redis的字符串比nginx字符串多了一个free字段,用来表示当

2017-05-07 23:21:39 970

原创 抓取taobao的IP库

目的和地理位置相关的应用、和智能调度相关的应用、都离开一个准确的IP库,如果是单个ip库查询,我们可以去ip138或者ip.taobao.com或者ipip.net或者其他站长工具查询,但是需要我们需要一个完整的ip库,则可能需要自己去抓取一份、或者购买商业的ip库。 最近试着用go语言写一份抓取完整ip库的程序、数据源是ip.taobao.com。从各大州ip地址中心获取最初的ip分段、依次对各

2017-05-06 23:02:54 2601

原创 nginx stream模块初探

前言nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。这完全就是抢HAproxy份额的节奏,鉴于nginx在7层负载均衡和web service上的成功,和nginx良好的框架,stream模块前景一片光明。stream 模块编译stream模块默认没有编译到nginx, 编译nginx时候 ./configure –with-stream 即可官

2017-05-05 19:38:59 89047 6

原创 程序员的出路在哪

马太效应在程序员的世界里依然奏效、具体就是、越牛逼的程序员越吃香、职位、待遇和机会也越好。至于其他的程序员、请祈祷互联网浪潮持续、不要发生泡沫破灭的危机。程序员的世界里拿到没有办公室斗争?错,严重的错,程序员也是人、也要和别人打交道、程序员中为啥觉得斗争少,其实是因为,程序员可以无节制的换工作,此处不留爷,自有留爷处,所以一看情况不妙,立马跳槽。程序员也是拉帮结派的、也有一人得道,鸡犬升天的现象,所

2017-05-04 19:48:24 2640

原创 控制远程服务器的工具anyhost

说明如果想同时控制多个远程服务器,又不想安装重量级的puppet,salt等运维级别的工具,可以使用此工具,需要的环境是python2.6和paramiko包。代码位置:https://github.com/zhiyuan2007/anyhost依赖 python 2.6 or higher paramkio (yum install python-dev && easy_install

2017-05-04 16:40:50 654

原创 go实现ketama哈希

ketama-hashimplement ketama hash in golangIntroduction闲来无事,用go语言实现ketama思想的一致性哈希,测试服务器节点增加和减少时命中率能有多少。

2017-05-04 13:41:53 1021

原创 安装go最新版本go1.8

最近想学习下go语言,把安装环境过程记录如下:假定要把go安装到/home/xxx/golang目录下:1. 安装go 编译器cd  /home/xxx/golang下载:wget https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz解压:tar zxvf go1.4-bootstrap-

2017-03-16 16:04:41 9137

原创 openssl源码安装后,编译nginx-1.9.7或者openresty找不到OpenSSL的解决办法

问题:nginx编译找不到openssl现象:源码安装openssl的目录是/usr/local/ssl/就算把/usr/local/ssl/lib 添加到 /etc/ld.so.conf内,并且ldconfig -v,发现nginx编译时依然报找不到openssl的错误,如下#./configure --with-http_ssl_modul-----------------

2016-12-14 20:02:08 12462 2

原创 编译安装openssl-1.0.2e时遇到的问题的解决办法

openssl1.0.2e动态编译

2016-12-13 23:59:15 3558

原创 通过lua-resty-upload实现文件上传的例子

基于openresty的lua-resty-upload实现文件上传的例子

2016-11-14 14:26:23 8803

原创 nginx-upload-module文件上传模块问题处理

git地址:[email protected]:vkholodkov/nginx-upload-module.git下载地址:https://github.com/vkholodkov/nginx-upload-module/archive/2.2.0.tar.gz编译问题: 错误:‘ngx_http_request_body_t’没有名为‘to_write’的成员解决方法:参照此博客htt

2016-10-26 16:42:50 4448 1

原创 nginx-rtmp的点播系统搭建

基于:和nginx-rtmp的点播系统步骤如下: 1. 安装openresty和nginx-rtmp模块 2. 下载视频播放器jwplayers(免费版)并配置 3. 配置nginx.conf 和访问页面 4. 运行并解决问题安装openresty和nginx-rtmp模块 openresty官网:http://openresty.org/en/ nginx-rtmp下载:h

2016-07-23 13:06:18 2859

原创 一种openresty在init_by_lua_file阶段读取redis到共享内存的方法

前提:        关于 openresty 或者 ngx_lua 请参考:http://openresty.org/en/问题:        使用openresty读取redis内的数据时,在init_by_lua_file中是不能连接redis的,所以有时候只能在rewrite或者access阶段读取redis数据,用什么办法在初始化阶段读取呢?解决办法:采用在init

2016-07-08 13:28:08 12602 1

原创 redis del命令支持正则删除(pattern)

1、redis的del命令不像keys命令一样可以支持正则,所以有时候,想要删除一些无用的key的时候,只能用管道和linux命令组合起来达到目的,使用的例子见最下面。 2、redis的作者antirez说过不想del 支持正则匹配的原因,因为正则匹配是个耗费时间的操作,删除key的写操作和keys*命令的读操作又不同,所以删除操作可能导致线上服务受到影响。

2016-05-22 18:31:37 46215

原创 bind9支持edns-client-subnet

基于bind9的edns-client-subnet, 服务器和dig都已经实现,同时提供了测试配置和结果。

2015-10-06 11:55:52 7969 5

原创 vim实用的命令

基础篇•k向上• j向下• h向左• l向右• d删除,y拷⻉贝,p粘贴,v选中,w保存• w filename 保存为

2015-09-29 22:45:57 374

原创 python线程join的正解

几个事实1 python 默认参数创建线程后,不管主线程是否执行完毕,都会等待子线程执行完毕才一起退出,有无join结果一样  2 如果创建线程,并且设置了daemon为true,即thread.setDaemon(True), 则主线程执行完毕后自动退出,不会等待子线程的执行结果。而且随着主线程退出,子线程也消亡。3 join方法的作用是阻塞,等待子线程结束,join方法有一个参数是

2015-09-29 16:29:58 24910 7

原创 虚拟机迁移或者克隆后没有网卡的问题

之前采用vmware的时候,克隆了几个虚拟机,可以启动, 就是没有网卡,不能上网。当时在网上查找了一个解决办法给搞定了。现在采用parallels的时候,pvm从一台mac 迁移到另一台上,还是能开机,不能联网。又上网找了一下, 解决方法和之前是一样的。解决办法:主要是修改 /etc/udev/rules.d/70-persistent-net.rules即可一般,系统会自

2015-09-10 16:24:15 4744

原创 nginx学习(一)

最近开始做CDN相关的业务,后台全部是nginx相关的知识,比如所有网站的缓存都是架构在nginx服务器上,各种转发,代理,缓存,负载均衡等功能全部由nginx支持。很多的访问控制策略需要采用nginx内嵌lua来做,另外,关于CDN还有大量的逻辑和业务需要在nginx上进行定制开发,所以掌握nginx是深入开展CDN业务的基础。所以打算用一段时间,一边学习,一边开发业务,把整体学习心得都

2015-06-09 20:32:29 506

原创 百度面试经历,包括问的问题和我的答案

百度一面也是一个面试官面的,面的很详细,有项目的问题,有具体的问题,还有一些在电脑上直接编码的问题,这些题目有些作对了,也有做的不全面的,但是面试官很好,给我较好的评价,让我准备下二面。下面就直接说说二面,稍有点难受,题目和回答如下,最后的结果是没有通过。二面是另一个面试官主面,开始面试官就说今天很忙,事多,让我等他一会,我当然没有问题了,因为我专门请假来面试。一会,面试官打开电脑,查看了我的

2015-04-22 14:10:26 1648 1

原创 C++实现一个类并包含构造函数,拷贝构造函数,赋值函数,析构函数

前言,在c++面试过程中,最能考察类的基础知识的莫过于写一个具有类的必要函数的类。这个面试题是一些面试官非常喜欢的,不但要写出来,还有很多知识点可以考察。定义一个类如下class String { public: String(const char *str=NULL); ~String(); String(const String &others);

2015-04-18 15:51:42 1978

原创 修改bind源码,提供qps等更丰富的统计信息

让开源DNS服务器BIND提供几个更有用的统计信息

2015-03-28 01:33:04 2620

转载 跳台阶面试题

之前一直不会思考这类型的题,正好看到july的博客有此题的解法,描述和解题思路很清楚,拷贝过来加深印象原文 http://blog.csdn.net/v_july_v/article/details/6126444跳台阶问题题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。首先我们考虑最简单的情况。如果只有1

2015-03-26 11:22:04 519

原创 linux下进程间通信IPC几种方式性能比较

在项目中,经常会遇到单机上进程间的通信,常用的进程间通信方式一般有以下几种1 socket 2 unixsocket3 共享内存(share-memory)4 管道(pipe)5 消息队列(message-queue)6 文件(file)7 消息总线(比如zeromq)8 其他中间件(比如redis, memchache, 数据库等)如果项目仅仅是消息的传递,对

2014-09-24 16:57:19 10658 6

原创 zeromq(ZMQ)开篇学习小记

1 zmq支持的通信协议  tcp/ipc/

2014-07-23 00:58:45 4357

原创 redis源码修改之zincrby,hincrby命令

在项目中大量使用zincrby命令,原因就是要统计日志中某个指标的计数值,且需要按顺序返回topn。正常来说,一个指标调用一次zincrby(zincrby default:type 1 typeA) 就可以正常工作。实际情况是由于日志生成的太快,redis cpu利用率经常100%,而且还丢数据。是否可以一次性增加多次指标的累计值,比如zincrby default:type 1 t

2014-07-16 14:08:31 4187

原创 Ruby 元编程

Ruby 元编程 小例一则

2014-06-18 16:49:40 989

原创 redis高级命令

sort 命令1 修饰符  desc  降序排列2 允许元素按照字段序列排序  alpha ,此时的排序相当于字符串排序, 数字转化为字符 12 排在 2 的前面3 可以指定避开某些元素,然后开始排序,并返回前n个, 语法为 sort key skip count  。    比如 sort list 3 10 表示大于3 的元素的10个。4 sort list limit 0

2014-06-18 15:33:47 504

原创 redis基本操作命令(一)

version: 2.61 string 普通命令: set get incr incrby mset mget append getrange setrange(相当于substr) setrange(一次设置一个字符)                   decr  decrby incrbyfloat  strlen  mset 和msetnx 都是批量操作k v, 都是原子操作

2014-06-18 15:29:38 780

dns性能测试工具dnsperf

dnsperf一款比bind自带的queryperf性能更好的dns服务器测试工具。 由于源站下载较慢,所以提供出来供网络不好的人下载使用

2016-07-28

一个强大的K短路径算法

采用自己的命名空间,定义了许多新的结构和函数,实现的功能是K短路径算法,如果是有向图,那么直接可以得出结果,如果是无向图,自己揣摩一下一样可得结果。

2011-01-12

编码的奥秘--很好很强大

本书用大量的篇幅讲述了与计算机原理相关的各种编码方法,并通过数字逻辑电路以及存储器,微处理器的形成,组织及发展阐述了编码的实现。本书还涉及到计算机系统,编程语言的发展,甚至对计算机图形化的相关技术也给了一个全面的描述。阅读本书,相信您会从它图文并茂的编排组织,通俗风趣的语言文字,广泛丰富的背景知识中体会到作者超凡的智慧和深邃的学问

2011-01-12

more effective c++ 电子书

当然了,如果你很熟悉effective c++ 了那么,这一本就是下一步要阅读的书籍,这些都是提高c++程序设计的思想与技巧。本书是简体中文,非pdf格式。阅读更方便

2011-01-12

effective c++ 的电子书

超经典的c++提高教材,以前下载好多都是繁体的,这个是简体的,而且不是pdf 看的比较舒服。

2011-01-12

空空如也

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

TA关注的人

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