我自己的一些小小经验
文章平均质量分 52
xxxbigbug
计算机科学与技术、云计算、CDN和DNS、大数据等
展开
-
使用dpdk的程序换机器运行报invalid cpu的错误
dpdk换cpu核数不同机器运行时启动失败原创 2023-01-29 18:03:22 · 266 阅读 · 0 评论 -
git submodule 如何同步更新
git submodule 更新后,在父仓库里如何同步更新,其实只需要在一个地方(modules)调用一个命令(git pull origin master)即可原创 2022-04-27 11:52:26 · 12303 阅读 · 0 评论 -
程序员的出路在哪
马太效应在程序员的世界里依然奏效、具体就是、越牛逼的程序员越吃香、职位、待遇和机会也越好。至于其他的程序员、请祈祷互联网浪潮持续、不要发生泡沫破灭的危机。程序员的世界里拿到没有办公室斗争?错,严重的错,程序员也是人、也要和别人打交道、程序员中为啥觉得斗争少,其实是因为,程序员可以无节制的换工作,此处不留爷,自有留爷处,所以一看情况不妙,立马跳槽。程序员也是拉帮结派的、也有一人得道,鸡犬升天的现象,所原创 2017-05-04 19:48:24 · 2682 阅读 · 0 评论 -
编译安装openssl-1.0.2e时遇到的问题的解决办法
openssl1.0.2e动态编译原创 2016-12-13 23:59:15 · 3628 阅读 · 0 评论 -
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 · 12604 阅读 · 2 评论 -
通过lua-resty-upload实现文件上传的例子
基于openresty的lua-resty-upload实现文件上传的例子原创 2016-11-14 14:26:23 · 8871 阅读 · 0 评论 -
nginx-upload-module文件上传模块问题处理
git地址:git@github.com: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 · 4470 阅读 · 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 · 2909 阅读 · 0 评论 -
一种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 · 12669 阅读 · 1 评论 -
redis del命令支持正则删除(pattern)
1、redis的del命令不像keys命令一样可以支持正则,所以有时候,想要删除一些无用的key的时候,只能用管道和linux命令组合起来达到目的,使用的例子见最下面。 2、redis的作者antirez说过不想del 支持正则匹配的原因,因为正则匹配是个耗费时间的操作,删除key的写操作和keys*命令的读操作又不同,所以删除操作可能导致线上服务受到影响。原创 2016-05-22 18:31:37 · 46621 阅读 · 0 评论 -
安装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 · 9173 阅读 · 0 评论 -
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 · 754 阅读 · 0 评论 -
go实现ketama哈希
ketama-hashimplement ketama hash in golangIntroduction闲来无事,用go语言实现ketama思想的一致性哈希,测试服务器节点增加和减少时命中率能有多少。原创 2017-05-04 13:41:53 · 1062 阅读 · 0 评论 -
控制远程服务器的工具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 · 711 阅读 · 0 评论 -
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 · 89840 阅读 · 6 评论 -
抓取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 · 2667 阅读 · 0 评论 -
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 · 992 阅读 · 0 评论 -
go-map的并发问题
go 语言的map是引用传递的、如果多个goroutine同时读写,必然导致冲突,所以一般我们在并发操作map的时候,一定要加锁,但是如果map里的value是还是map,那么并发操作这个value- map是不是也一样回引起冲突呢?答案是:是的,go里所有map的并发操作都需要加锁,这样才不会引起冲突,见如下代码。我对map td操作加了锁,对得到的value-map进行了写操作,没有加锁,通过原创 2017-05-08 22:00:36 · 4025 阅读 · 1 评论 -
开发nginx模块时对普通文件的操作
序言开发nginx http模块时,有时候需要从指定的文件读取信息,这个时候,如果是新手,则肯定用操作系统文件系统函数来操作文件,比如用fopen打开文件,用fseek,fread等读取文件信息,最后用fclose关闭文件。这样操作文件也是可以工作的,但是如果代码中间有return的时候,我们需要确保打开的文件关闭,否则会造成文件句柄没有关闭,资源浪费,而且这种方式和nginx的异步回调风格有点不符原创 2017-05-09 21:24:29 · 2454 阅读 · 0 评论 -
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 · 10879 阅读 · 6 评论 -
bind9支持edns-client-subnet
基于bind9的edns-client-subnet, 服务器和dig都已经实现,同时提供了测试配置和结果。原创 2015-10-06 11:55:52 · 8148 阅读 · 5 评论 -
vim实用的命令
基础篇•k向上• j向下• h向左• l向右• d删除,y拷⻉贝,p粘贴,v选中,w保存• w filename 保存为原创 2015-09-29 22:45:57 · 385 阅读 · 0 评论 -
strcpy和strncpy的区别
1 strcpy(dest, src) ,将src所指字符串拷贝到dest中,直到src中找到 '\0' 为止,实际情况中如果dest所指空间小于src长度,也直接覆盖,所以可能导致段错误。2 strncpy(dest, src, num), 将src所指的内容的前num个拷贝到dest中,不会自动添加'\0'。 如果src长度小于num,则全拷贝,并将剩余的num-strlen(src)以’原创 2013-05-23 16:52:52 · 727 阅读 · 1 评论 -
求从1到n的正整数中1出现的次数
题目:输入一个数字n,求从1到n的正整数出现的次数。例如:输入13,则包含1的数字有 1 10 11 12 13 这5个数,但是1出现的次数为6次。再比如输入29,则1出现1 10-19 21 这些数字,1共出现可知为13个。本题目据说是google的一到面试题,刚开始思路有了,到最后完整实现用了一定时间。最容易想到的方法:遍历,将所有1到n的数字都拿来遍历一边,计数1出现的次数。如果原创 2012-09-06 13:31:28 · 1367 阅读 · 0 评论 -
rsyslog 写入到 redis
最近由于项目需求,如要将syslog中的日志写入到redis数据库,以便实时分析,在网上找了一下,发现github上有一个项目https://github.com/sami-bouafif/rsyslog-redis/blob/master/README.markdown 实现了syslog日志写入到redis中,按照DEADME中的步骤,进行了安装和编译。期间发现了一些问题,并将最后原创 2012-09-03 10:09:14 · 4299 阅读 · 2 评论 -
查找最小的k个整数
输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字, 则最小的4个数字为1,2,3和4。 solution:采用最有k个元素的大顶堆来实现,先请列表的前k个元素调整为大顶堆,然后依次插入其余n-k个元素,最后前k个元素即为最小的n个元素。原创 2012-08-20 10:44:06 · 1349 阅读 · 1 评论 -
设计一个包含pop,push,min在内的栈,并且各个函数的时间复杂度均为o(1)
q 设计一个包含pop,push,min在内的栈,并且各个函数的时间复杂度均为o(1)?a pop 和push不用特别说明,正常实现即可。 min 可以用另外一个栈,存储当前已知的最小的序列,(不需要包含全部数据,只需要包含在push时发现最小的为止) 比如入栈顺序为3,2,5,4, min栈为0,1,即当前最小的元素为S(1), 次小为S(0), 如继续入栈1,则min栈为0,1,4原创 2012-08-20 10:25:11 · 1265 阅读 · 0 评论 -
一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好等于输入的那个数字
输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好等于输入的那个数字。 要求时间复杂度是O(n)。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 solution:题目主要难度在于时间复杂度限制在O(n)内,即最多遍历一遍,即求得解。想法如下:假设数据元素为a1, a2, ...ai, aj ...原创 2012-08-21 13:46:13 · 1201 阅读 · 0 评论 -
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。solution: 1 将整个句子先反转一次 2 按照 空格将句子分隔,并将分隔的每个单词再反转一次,最后可得结果。上面的例子第一步之后为:.tnedu原创 2012-08-20 11:15:38 · 731 阅读 · 1 评论 -
解决TCP出现大量TIME_WAIT的方法
修改/etc/sysctl.conf文件增加net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1然后/sbin/syscntl -p原创 2012-06-11 18:51:27 · 624 阅读 · 0 评论 -
一道百度最新面试题的实现
面试题为:现在有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来。解答如下:思路:如果采用最容易想到的方法,那就是双重寻找,一个一个比较,时间复杂度也是0(N的二次方), 不可取。而如果采用bitset,那么首先空间上多花一部分 , 但是空间复杂度降到了 0(N),速度快了太多采用bitset。直接上代码。#inclu原创 2012-06-07 17:25:52 · 888 阅读 · 0 评论 -
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 · 4221 阅读 · 0 评论 -
zeromq(ZMQ)开篇学习小记
1 zmq支持的通信协议 tcp/ipc/原创 2014-07-23 00:58:45 · 4396 阅读 · 0 评论 -
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 · 794 阅读 · 0 评论 -
python线程join的正解
几个事实1 python 默认参数创建线程后,不管主线程是否执行完毕,都会等待子线程执行完毕才一起退出,有无join结果一样 2 如果创建线程,并且设置了daemon为true,即thread.setDaemon(True), 则主线程执行完毕后自动退出,不会等待子线程的执行结果。而且随着主线程退出,子线程也消亡。3 join方法的作用是阻塞,等待子线程结束,join方法有一个参数是原创 2015-09-29 16:29:58 · 25054 阅读 · 7 评论 -
虚拟机迁移或者克隆后没有网卡的问题
之前采用vmware的时候,克隆了几个虚拟机,可以启动, 就是没有网卡,不能上网。当时在网上查找了一个解决办法给搞定了。现在采用parallels的时候,pvm从一台mac 迁移到另一台上,还是能开机,不能联网。又上网找了一下, 解决方法和之前是一样的。解决办法:主要是修改 /etc/udev/rules.d/70-persistent-net.rules即可一般,系统会自原创 2015-09-10 16:24:15 · 4850 阅读 · 0 评论 -
nginx学习(一)
最近开始做CDN相关的业务,后台全部是nginx相关的知识,比如所有网站的缓存都是架构在nginx服务器上,各种转发,代理,缓存,负载均衡等功能全部由nginx支持。很多的访问控制策略需要采用nginx内嵌lua来做,另外,关于CDN还有大量的逻辑和业务需要在nginx上进行定制开发,所以掌握nginx是深入开展CDN业务的基础。所以打算用一段时间,一边学习,一边开发业务,把整体学习心得都原创 2015-06-09 20:32:29 · 524 阅读 · 0 评论 -
字符串相邻去重的实现
题目:给定字符串要求去除相邻的相同字符。 比如 abbccd 最后结果是abcd,要求时间复杂度o(n), 空间复杂度o(1)思路:遍历过程中,记录相同字符的长度,如果出现字符不相等时,将不相等字符移动到第一次重复的字符位置,如此,一遍遍历完成后,即可实现。 1 #include 2 #include 3 #include 4 void removedup(cha原创 2013-03-25 20:01:47 · 5674 阅读 · 7 评论 -
C++实现一个类并包含构造函数,拷贝构造函数,赋值函数,析构函数
前言,在c++面试过程中,最能考察类的基础知识的莫过于写一个具有类的必要函数的类。这个面试题是一些面试官非常喜欢的,不但要写出来,还有很多知识点可以考察。定义一个类如下class String { public: String(const char *str=NULL); ~String(); String(const String &others);原创 2015-04-18 15:51:42 · 2047 阅读 · 0 评论 -
百度面试经历,包括问的问题和我的答案
百度一面也是一个面试官面的,面的很详细,有项目的问题,有具体的问题,还有一些在电脑上直接编码的问题,这些题目有些作对了,也有做的不全面的,但是面试官很好,给我较好的评价,让我准备下二面。下面就直接说说二面,稍有点难受,题目和回答如下,最后的结果是没有通过。二面是另一个面试官主面,开始面试官就说今天很忙,事多,让我等他一会,我当然没有问题了,因为我专门请假来面试。一会,面试官打开电脑,查看了我的原创 2015-04-22 14:10:26 · 1697 阅读 · 1 评论