自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go语言通道channel使用总结

1.广播当一个通道关闭时, 所有此通道的读取都会退出阻塞. 利用此特性可以实现广播功能package mainimport ( "fmt" "time")func main() { c := make(chan bool) for i := 0; i < 5; i++ { go func(n int) { <-c //读取到数据

2017-04-03 21:09:02 12254 2

原创 匹配json字符串的正则表达式

大家感觉正则表达式难写吗? 反正我感觉挺难的, 语法晦涩,难以阅读,不方便调试. 需求:一个字符串里可能包含一个或多个json格式的子串以及一些普通格式的子串, 希望用正则把json格式的子串都匹配出来. 正则:(?(?:\{\s*"(?:\\"|[^"])+"\s*:\s*(?:(?P>json)|"(?:\\"|[^"])+"|[-+]?(0|[1-9]\d*)(?:\.[-+]?(0|

2017-03-24 20:40:10 46460 7

原创 mac osx 下安装lisp环境sbcl,并解决方向键不能用问题

首先假设你的系统已经安装好homebrew, 若没有安装可参看我之前的博客: mac osx 下的apt-get,yum的代替工具 ----homebrew安装sbcl$brew install sbclsbcl交互模式下, 输入代码时不支持左右箭头移动光标,比较崩溃. 如下图$ sbclThis is SBCL 1.3.14, an implementation of ANSI Common

2017-03-22 11:09:58 1585

原创 打造xhprof调试环境

XHProf是一个分层PHP性能分析工具. 其扩展只有4个函数, 常用的只有两个,见php手册. 使用起来并不复杂, 但返回的报告数据是一个大数组, 阅读很不方便, 所以还需要一个优化显示的工具, 例如xhprof的pecl包. php扩展和pecl的安装这里不详细讲解, 网上有很多教程. 下面介绍一个比较酸爽的配置方式 — 不修改项目代码,以入侵的方式实现get参数控制是否打开xhprof调试.下

2016-12-03 21:12:16 825

原创 使用nc命令监听端口编写git的web hooks

需求: git 服务器可以配置 web hooks 希望git服务器能在提交代码后通知开发机更新代码解决方案: 1.使用nc命令监听5001端口(service.sh) 2.当nc命令接收到请求后, 数据使用管道传给run.php进行处理 3.因为web hooks是http协议请求, run.php解析出path, 然后分类处理service.sh#/bin/bashdir=`dirna

2015-07-17 18:01:57 1659

原创 php解析crontab时间格式

crontab 时间格式: 配置 说明 “* * * * * *” 分 时 日 月 周 “0 3 * * * *” 数字精确配置, 星号为任意.(每天凌晨3点整) “15,30 3 * * *” 逗号表示枚举 (每天3点15分和3点30分) “15-30 3 * * *” 短线表示范围 (每天的3点15分到30分) “*/10 3 * * *” 斜杠表

2015-04-14 21:49:33 5008 1

原创 mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据

我经常使用order by和limit来做数据分页显示并排序,一直也没发现过什么问题。但这两天缺遇到一个严重的问题,在按时间戳升序排列并用limit分批读取数据时,却发现在某些记录丢失了,表中明明有的记录确死活读取不到。研究了大半天终于发现了问题所在,记录一下以防忘记,也是给大家提个醒。

2015-04-11 14:07:26 38515 11

原创 判断用户权限后,如何高效的提供文件下载

问题:某些文件只希望特定用户可以下载,那么下载之前必须进行权限判断。判断通过时,跳转到被下载文件的真实地址肯定不行,这相当于没有做权限限制了。一般的做法是读取被下载的文件然后输出给用户。在这个过程中动态语言干了一件吃力不讨好的事情,转了一个弯读取数据然后在交给web服务器输出,多消耗了资源还可能降低下载速度。对于此问题,我曾一度纠结,后来才发现web服务器有一个X-Sendfile的特

2015-02-27 16:46:09 1156

原创 阿里云linux系统 centos 安装svn服务器

一、安装svn

2014-09-16 15:35:57 3398

原创 c/c++ 获取命令行参数示例

# a.out -d /data/ -i /tmp/a.txt -c 1int main(int argc, char* argv[]) { //参数变量初始化 string type; string db_path; string in_file; string out_file; string sep("\t"); int col = -1; //get查询的列索引0

2013-12-12 14:50:09 20783

原创 chrome扩展下载地址 --- url模版

https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D{id}%26uc用扩展的id替换以上路径中的"{id}", 就是扩展的下载地址了。然后你就可以请别人帮忙下载或者用其它程序下载都行,把下载好的文件拖入到chrome即可安装了。扩展的id示例:如下url的红色部分https:

2013-11-26 19:26:55 2271

原创 判断python 列表/字典深层key是否存在的方法

从接口获取的json数据,有时会非常复杂,有很多层,可能还是列表和字典嵌套的。这个时候若要判断深层次的一个是否存在。则比较麻烦了特把这些判断封装为一个通用的方法,以后备用import typesdef json_get(json, l_key, default): ret = json for k in l_key: if t

2013-11-14 18:36:38 10724

原创 mac osx  下的apt-get,yum的代替工具 ----homebrew

linux下有很方便的包管理器如:apt-get、yum,mac下也有类似的工具:Homebrew 和 Fink、MacPort。Flink是直接编译好的二进制包,MacPorts是下载所有依赖库的源代码,本地编译安装所有依赖,Homebrew是尽量查找本地依赖库,然后下载包源代码编译安装。 Flink容易出现依赖库问题,MacPorts相当于自己独立构建一套,下载和编译的东西

2013-11-12 12:37:38 76220 1

原创 用于“实时”读取文件数据的小工具 ----- dread

/* * File: dread.cpp * Author: 肖武 * * Created on 2013年10月31日, 上午10:02 * * 延时读取(delayed read)文件 */#include #include #include #include using namespace std;/* * */int main(int argc,

2013-10-31 12:39:27 1989 1

原创 c++ 编写管道命令的技巧

shell里的管道非常方便和好用,但不是所有命令都可以直接放在管道符("|")后面接收管道输出的数据。能接收管道输出的数据并正确处理的命令称之为管道命令,这需要命令本身支持,如ls就不是管道命令。下面以c++为例说一下怎么编写管道命令.

2013-10-24 16:56:28 4611

原创 ubuntu 13.04 普通用户丢失sudo权限后的恢复办法

起因:虚拟机的usb功能启用,说需要把当前用户加入到“vboxusers”用户组,结果直接执行了以下命令$ usermod -G vboxusers xw悲剧就这么产生了,这时一条错误的命令,它会让当前用户退出原来所有的组,当然包括“sudo”用户组,所以没有sudo权限了。。。。而root帐号是默认的,没有密码;并且也没有其它帐号有sudo权限解决:网

2013-09-29 15:04:37 3875 1

原创 使用shell巧妙高效的批量删除历史文件或目录

背景:有实时产生的数据按小时分文件保存,如“/data/2013/09/18/14.txt”。现需要保留30天的最新数据,而删除所有其它的历史数据。注意“保留30天的最新数据”,可能不是连续的30天,中间若某一天数据缺失,也必须把最新的30天的数据保留下来。思路:获取所有数据路径列表,去除最新30天的数据路径,然后遍历删除。若是使用脚本语言来开发(如php,python),循环获取路径

2013-09-25 17:55:09 6500 1

原创 c++ 实现“实时”读取不断有增量写入的文本文件

啥也别说,先上代码/* * File: readuntil.cpp * Author: @肖武 * * Created on 2013年8月30日, 上午10:44 */#include #include #include #include #include #include using namespace std;int main(int argc,

2013-09-25 14:36:34 8201 1

原创 c/c++编译时,指定程序运行时查找的动态链接库路径

g++ -Wl,-rpath,/usr/local/lib/ -oevh libevent_http.cpp -levent-Wl,-rpath,  用于指定程序运行时查找动态链接库的路径,多个路径是使用冒号隔开。这样就不用添加路径到 /etc/ld.so.conf 文件中了,在需要多个so版本共存时很有用

2013-08-23 14:04:58 11884

原创 python和php的文本处理速度对比

运行环境:PHP 5.4.17Python 2.6.6linux 64位一、逐行读取数据文件,用tab键做分隔处理split.py #!/usr/bin/python#coding=utf-8import sysif len(sys.argv) != 2: print sys.argv[0]+" [in_file]\n逐行读取数据,做'

2013-08-12 17:05:45 4011

转载 linux 解压命令大全

解压命令大全gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName ---------------------------------------

2013-07-17 17:43:39 663

原创 shell 采集数据

使用一条命令抓取一本小说,努力两天,终于成功了curl "http://www.23hh.com/book/1/1019/"|iconv -c -f gbk -t utf8 |sed 's/"/\n/g'|grep -P '^\d+\.html'|awk '{if(NR>0){print "http://www.23hh.com/book/1/1019/"$0}}'|while read l;do

2013-06-21 19:43:55 1424

原创 g++编译器为什么不报错呢?

以下代码竟然可以顺利编译通过,没有任何报错#includeusing namespace std;int main(int argn, char *argv[]) { int arr1[] = {0,1,2,3,4,5,6,7}; int *arr = &arr[1]; for(size_t i=0;i<4; i++) { cout "<<arr[i]<<endl; }

2013-06-18 13:55:03 1174

原创 查找有特定文件的子目录 --- ls命令的妙用

问题描述 在目录“/data/”下有非常多的子目录(一千个左右),目录名是类型名称,每个小时产生的数据按类型区分写入到对应的子目录中,文件命名方式是“yyyymmddhh”,每个子目录中的文件数平均约500个。一小时内不一定每总类型的数据都有,也就是说有些子目录下没有那个小时的数据文件的。现在的需求是:整点定时出一份上一小时有数据的类型名称列表,一行一个类型名称(子目录名)写入一个文本文件中/

2013-06-18 10:36:33 3565

原创 ubuntu 下第一个php扩展开发记录

今天尝试了我的第一个php扩展开发,记录下过程以及遇到的问题一、环境准备以前我已经用以下命令安装过php了$ sudo apt-get install php5其安装位置是$ whereis phpphp: /usr/bin/php /usr/lib/php /usr/bin/X11/php /usr/share/man/man1/php.1.gz这种方式安装的p

2013-06-03 15:55:42 4187 1

原创 awk学习记录

在文件中查找内容时,一般使用grep命令,感觉它的功能足够强大了,见我另一篇博文 grep 搜索目录中的文件 但近期在处理一些有格式的文件(每行用“\t”分隔成多列,每列有对应的含义,类似表格)时,以下问题用grep不太好解决了:1.打印出第二列等于“XXX”的行;2.数量统计类,如第二列等于“xxx”的数据有多少行;1.打印出第二列等于“XXX”的行这类问题,

2013-05-31 16:15:53 2446

原创 ubuntu下常用好软件记录

记录一些个人感觉不错的软件,随时编辑更新。欢迎大家推荐和指正diadia可以完成viso在windows中所但任的角色。我经常用来画流程图sudo apt-get install diaSciTE一款很好很强大的文本编辑器,速度很快(即使是打开几M大的文本),几乎支持所有编程语言的代码高亮。经过配置完全可以打造成一个IDE.不过没有配置界面,需修改配置文件。全局

2013-05-14 11:30:34 961

原创 查看cmake源码编译的所有配置选项

有的源码包是使用cmake编译安装,cmake时有很多配置选项,使用以下命令,可以查看所有的配置选项cmake . -LH

2013-04-11 16:41:52 10520

原创 解决ssh登录慢的问题记录

vim /etc/ssh/ssh_config把下面这一行的注释去掉# GSSAPIAuthentication no

2013-03-27 14:57:32 671

原创 [c++笔记]main()函数的参数接收

main.cppint main(int argc,char *args[]){ printf("arg_num=%d\n", argc); int i; for(i=0; i<argc; i++){ printf("%i:%s\n", i, args[i]); } return 0;}编译后运行[root@vm120800

2013-03-20 14:25:27 1267

原创 [c++笔记]关于编译

一、编译成目标文件g++ -c main.cpp以上命令会生成mian.o文件若cpp文件中没有main()函数,以上命令则会报错,这时需加上“-fpic”g++ -fpic -c ini.cppg++ -fpic -c ini.cpp若cpp中include了其他目录的头文件,如第三方类库,则可加“-I path”指明包含路径,可以同时加多个,每个“-I pa

2013-03-20 14:22:40 1108

原创 C++ 中使用boost::property_tree读取解析ini文件

boost 官网 http://www.boost.org/下载页面 http://sourceforge.net/projects/boost/files/boost/1.53.0/我下载的是 boost_1_53_0.tar.gz使用系统  ubuntu 12.10一、解压tar -zxvf boost_1_53_0.tar.gz得到一个文件夹 boost_1_5

2013-03-18 19:12:32 9191 1

原创 dia 在Linux(ubuntu)下无法输入中文的解决办法

我是执行一下命令安装的sudo apt-get install dia打开软件后发现不能输入中文,网上搜索一圈后找到以下解决方案sudo vim /usr/bin/dia然后把dia-gnome --integrated "$@"修改成dia-gnome "$@"重新启动dia,输入法选择系统默认(我的系统输入法是ibus),就可以输入中文了不过

2013-02-28 15:58:30 11607 2

原创 升级到ubuntu 12.10 记录

我的机器是thinkpad x201i(2G内存),  原系统是ubuntu 11.04(32位),加了个2G内存后,不能全部使用4G的功能。于是准备升级到64位的12.10。升级过程:1.官方网站下载了iso文件 ubuntu-12.10-desktop-amd64.iso2.用ubuntu系统自带的启动盘创建器,把一个2G优盘创建为一个启动盘;3.插上优盘重

2013-01-22 13:34:24 2083

原创 html5中manifest特性测试(二)

测试方法和环境同 html5中manifest特性测试(一)一、测试内容      1.manifest文件改动后,浏览器在什么时候更新缓存?      2.一个新页面使用已有的manifest文件(其他页面使用的,并且已经创建好缓存),初次访问时,会引起整个缓存更新吗?二、详细测试       1.manifest文件改动后,浏览器在什么时候更新缓存?

2012-12-20 15:50:51 2210

原创 html5中manifest特性测试(一)

测试环境和工具   chromium  18.0.1025.151 (开发编译版 130497 Linux) Ubuntu 11.04一、测试内容         1.A页面manifest缓存的js文件,B页面不设manifest是否能使用缓存的js文件       2.A页面和B页面分别使用两个不同的manifest文件,但都缓存了同一个js文件,两页面更新缓存时,是否会相

2012-12-20 11:37:11 11086

原创 html5 中创建manifest缓存以及更新方法

今天学习了一下manifest的相关知识,整理记录如下,以备将来查阅。一、manifestMIME TYPE:text/cache-manifest需要由你创建的:NAME.manifest作用:主要是配置需要缓存的文件二、实现在服务器上添加MIME TYPE支:比如 Apache 中可在 .htaccess 中添加:AddType te

2012-12-18 18:52:32 32342 3

原创 基于curl的并行请求,实现php中的伪多线程

<?php/** * 基于 curl_multi 的并行处理 * * 使用示例 * Helper_Multicurl::add_curl('url1', Helper_Multicurl::mk_curl('get', $url1)); * Helper_Multicurl::add_curl('url2', Helper_Multicurl::mk_curl('get', $url

2012-09-14 15:35:30 6563

原创 快速配置rsync用于无密码接收文件

1.安装好rsync后,增加文件 /etc/rsyncd.confuid = rootgid = rootuse chroot = nomax connections = 100pid file = /var/run/rsyncd.pidlock file = /var/run/rsyncd.cocklog file = /var/log/rsync.loglist = nos

2012-08-09 19:02:17 5583

原创 grep 搜索目录中的文件

1.在某目录下的所有文件中搜索确定的关键词grep -Fnr class ./ 以上命令的意思是:在当前目录下的所有文件中搜索“class”,并显示文件名、行号和匹配所在行内容2.在某目录下的所有文件中,按使用正则搜索grep -Pnr "\d{3}" ./ -P 是 Perl 正则表达式,经过测试,发现此模式支持的正则最完整,支持正则的完整度由大到小为: -P >

2012-08-06 20:16:27 35450 1

空空如也

空空如也

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

TA关注的人

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