linux
文章平均质量分 56
timegoesby_001
技术改变生活
展开
-
awk多行日志排序输出
今天一同事问一个日志排序问题 , 结果和过程可能比较简单,如果对函数不熟悉的话,只想提一下可以另解的思路test.data内容如下a "t=15" 333 bbba1 xy jfdf 298a2 zz jfdf 298b "t=13" uv mnnnb1 0z asdf aaab2 wif wfinwlk slsc "t=14" sl sldfjdslfc1原创 2013-11-15 12:36:10 · 2094 阅读 · 0 评论 -
到底什么是inode?
到底什么是inode呢 ? 这个和我们程序开发到底有多大的关系?首先,必须共识的两点: 1,数据是存放在磁盘中; 2,对于存放位置与其它对应的描述信息亦放在磁盘中; (1,2会在不同的区域)其次,既然是存在磁盘中,我们常说按块存取,这个块是怎么来的呢,大小又是多大? 其实按块存取目的就是尽量多读数据,比如你一个扇区一个扇区的读效率要低些(要多次进行磁盘i/o)所以一次要多读几个扇区原创 2013-11-27 17:37:40 · 1410 阅读 · 0 评论 -
c/c++ 实现curl http地址
其实如果这种实现,个人还是推荐脚本来搞,毕竟脚本方便些, 这里用c/c++,只是代码较方便,从之前写的项目中涉及到的一个curl部分有管用什么实现,写出来只是希望大家需要注意: 业务层,通信层, 协议层(这里我先这么区别,为的是和下面的代码对应方便来说)例如下面的代码中,标红色的地方表示针对业务层上的通信已完成(仅是通信完成,这里并不代表成功与否)而绿色我把这描述成协议层,即通原创 2013-11-28 18:35:58 · 1195 阅读 · 0 评论 -
linux下如何判断elf文件是32位还是64位?
例如一个可执行文件messy,我想知道这个是32位还是64位的,可以用readelf 这个命令,参数为-h在得到的ELF Header中有一项Magic, 这个其实包含很多信息,而这个32位学是64位就对应这个Magic中的第五个值,当为02时即为64位,01即为32位有兴趣的可以试一下readelf -h messyELF Header: Magic:原创 2013-11-28 18:45:58 · 8203 阅读 · 0 评论 -
多线程的程序是否真的需要锁?
常需要c/c++程序多线程处理需求,提到多线程就离不开锁的概念,那是不是只要是多线程就需要锁呢? 针对这个多线程使用环境,描述一下涉及到的需求(为方便仅以单机为例说事儿)需求:一个目录下定期会生成日志,例如 /logs/info.2013110101.log ...... 需要对这些日志进行某种处理(处理逻辑可能较复杂)方案一:方式: 采用单进程程序,程序读原创 2013-11-08 15:28:46 · 1044 阅读 · 0 评论 -
内存分配的buddy算法
buddy算法是用来做内存管理的经典算法,目的是为了解决内存的外碎片。例子 buddy算法将所有空闲页框分组为10个块链表,每个块链表的每个块元素分别包含1,2,4,8,16,32,64,128,256,512个连续的页框,每个块的第一个页框的物理地址是该块大小的整数倍。如,大小为16个页框的块,其起始地址是16*2^12(一个页框的大小为4k,16个页框的大小为16*4K,原创 2013-11-29 09:52:35 · 1223 阅读 · 0 评论 -
清理脚本滑动窗口方式清理日志文件
程序一般都会生成日志文件,同时也有一个对应的清理脚本,大部分清理脚本都就是crontab中定时启动但如果每分钟一个日志文件,然后需要保持一分钟的滑动窗口进行清理应该怎么办呢?我测试的清理脚本如下示:cat clear.sh#!/bin/shdate=$(date -v -1d +%Y-%m-%d)root=/rootpath/input=$root/data原创 2013-11-29 18:57:36 · 1063 阅读 · 0 评论 -
网络的几种模型概图
网络模型一共有这么几种, loop , fork, select, poll, epoll ..我个人理解它们间的关系与演变过程的原因由下图所示,原创 2013-11-29 10:08:38 · 960 阅读 · 0 评论 -
kill 掉进程的脚本 stop.sh
有时会启动多个进程,其实kill all也可以,但个人习惯了stop.sh循环方式,一个一个的kill -9 与大家分享一下cat stop.sh#!/bin/shprocess=$1while true docnt=$(ps -wwwwaux | grep $process | wc -l)if [ 1 -eq $cnt ]then原创 2013-11-29 19:01:18 · 1745 阅读 · 0 评论 -
如何对程序进行rpm打包发布
正如之前提到的,一般项目(程序)的目录包含pkg文件夹这个中应该编写与打包对应的例程,例如我目录下结构为[clouduser@blog /home/clouduser/ZK_Serviced]$ ls AUTHORS bin data include libs logs Makefile pkg README scripts srcpkg目录下原创 2013-12-02 14:05:02 · 2187 阅读 · 0 评论 -
重复的mysql_init导致日志Can't create a new thread (errno 11)
日志内容形如:E1113 11:08:27.761541 19599 ServiceKV_server.skeleton.cpp:258] MYSQL ERROR: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possib原创 2013-11-13 12:17:32 · 1178 阅读 · 0 评论 -
c++中使用string代替new
对于在函数内申请空间常用的就是new一个区域,然后使用,问题是释放的时机,其实习惯使用智能指针来说这个也都不是问题个人常使用的就是用string,例如return_type func(***){ std::string buf(lensrc, 0); Byte * pbyte = (Byte*)&原创 2013-11-12 14:35:17 · 1283 阅读 · 0 评论 -
类的成员函数作为回调函数的方法
“类中的成员” 函数不能作为本身的回调,如果非要这样弄可以有几个办法,例如静态方式声明,提供this指针等,针对static的话我想失去了回调在类中使用的意义,网上可以搜索下提供this指针方式,之前搜索时候看到过另外就是间接将类中成员变成回调,其过程就是利用间接的一个方法调用这个回调,然后设置回调函数的地方使用这个中间的方法(在此谢过给过帮助的同学)如下我以使原创 2013-11-12 13:24:36 · 3044 阅读 · 0 评论 -
google gflag简单的使用方法
google开源的gflags是很好的可配置参数选项,不但可以代替传统的getopt ,个人觉得最好的地方在于定义一次参数选项,其它需要使用gflags的程序模块可以直接引用,而引用的方式只需要声明一下对应的参数即可简单的例子如下,其中标红的就是程序使用某个参数变量的引用方法(a.cpp)#include #include .......DEFINE_str原创 2013-11-08 14:06:10 · 1480 阅读 · 0 评论 -
google glog在程序中使用方法与注意事项
大部分程序其实是使用封装后的log4jcpp等进行日志处理,对于单机来说可以用glog来打点日志,但需要预先指定日志的输出目录否则均写到/tmp目录下将磁盘写满,需要注意的一点是,高级别的日志向低级别日志扩展,这样输出的日志其实会冗余很大,另外,要将所有的级别日志设置输出目录否则未设置的仍会写到/tmp目录下,以下为本人程序中的写会,供参考(也可能有更好的方法,比如不用全写上所有的级别原创 2013-11-08 11:58:19 · 2242 阅读 · 0 评论 -
c/c++ 简单的解析ini配置文件程序
现在基本使用gflags,所以不怎么使用这个读取ini对应的程序或库了,由于ini一般比较方便,所以程序中涉及到的配置文件一般都用conf.ini 针对ini的解析网上也有很多,其实只要你会写程序,完全可以自己定制一个(如果你认为有必要的话,不过我建议不要重复造轮子的好)下面这个是本地编译可用的一个例子,是不是不是那么麻烦?conf.ini[s1]原创 2013-11-08 15:49:49 · 1544 阅读 · 0 评论 -
tar 命令打压缩包
拷数据时多个文件不方便,需要tar打个压缩包,我常用的就是这个tar cvfzP PKG-20120530.tgz --exclude=".svn" *原创 2013-11-10 12:23:05 · 887 阅读 · 0 评论 -
利用百度应用引擎(BAE)抓取百度信息过程
每个大网站都会限制蜘蛛的访问频率,一旦发现那么对应蜘蛛所在IP就会被封锁一段时间如何应对这种问题发生呢?有几个方法1,程序中使用代理,即使被封仍可让服务使用其它代理抓取内容,目前基本都采用这种方法,毕竟网上可以找好多代理,唯一需要调整的策略就是代理的选择与更新2,使用对应网站提供的接口抓取,例如用百度的BAE来部署抓取百度自身内容程序,因为程序是对集群操作,所以可以当成天然的代原创 2013-11-25 16:00:00 · 1505 阅读 · 0 评论 -
没有core文件定位bug的可能位置
有时写c/c++程序,运行后出现core, 如果有core文件则可以gdb方便的定位问题,可是,当core文件找不到(或被删除)时如何定位?刚做了个测试,在没有core文件的情况下对程序bug进行定位cat core.cpp 1 #include 2 3 int main(int argc, char** argv){ 4 5原创 2013-11-25 17:08:41 · 2167 阅读 · 0 评论 -
c/c++目标文件中_ZN****符号是什么意思
c/c++目标文件中符号生成规则 , 常看到形如T _Z4funcidcPc等符号而不知这个是什么意思,其实这个是根据对应函数生成的符号名称,其生成规则为:以_Z开始,如果在命名空间(类中)中的后面加个N,然后是函数名称长度,后面是函数名,后面跟参数类型,如i=int d=double..... char* = P所以下面这个例如可以描述/*symbol.cpp */原创 2013-11-12 15:11:00 · 5196 阅读 · 0 评论 -
shell 判断文件更新是否超过阀值的报警小程序
因为一个程序定期crontab运行来更新文件,有一天这个程序未运行从而对应的文件未更新,发现时已晚了一小时,所以针对这个情况简单的写了下对应的shell监控小程序;无非就是读文件修改时间然后和当前时间比较,当超过阀值threshhold时进行短信或邮件报警时间差distance上可以用t2-t1保证结果大于0,这里用了一个自定义abs函数得到distance结果然后判断是否触发报警原创 2014-01-22 15:22:42 · 2606 阅读 · 0 评论