
Linux
文章平均质量分 55
caianye
这个作者很懒,什么都没留下…
展开
-
日志中的前缀信息
#define CodeFormat "%s%d,"#define CodeInfo __FILE__ ":",__LINE__在打印日志的时候,在前面加上这两条语句,可以让日志信息的打印和定位更加清晰原创 2011-12-02 14:55:52 · 1827 阅读 · 0 评论 -
查看mysql字符集MySQL 乱码的根源是的 MySQL 字符
注意:从windows下拷贝过来的文件在linux下不能直接加入数据库,因为字符集不一样,这样打开即使显示是中文也不能在数据库中显示,要把文件拷贝进linux的另一个文件中转换字符才可以。MySQL 乱码的根源是的 MySQL 字符集设置不当的问题,本文汇总了有关查看 MySQL 字符集的命令。包括查看 MySQL 数据库服务器字符集、查看 MySQL 数据库字符集,以及数据表和字段的转载 2012-04-07 14:28:44 · 588 阅读 · 0 评论 -
mysql乱码排查
查询当前服务器的字符集:show variables like 'character_set_server';查询当前服务器的校对规则:show variable like 'collation_server';显示当前数据库的字符集:show variables like 'character_set_database';显示当前数据库的校对规则: show variables li原创 2012-04-07 14:31:08 · 585 阅读 · 0 评论 -
malloc的详细解释
glibc中malloc的详细解释 glibc中的malloc实现:The main properties of the algorithms are:* For large (>= 512 bytes) requests, it is a pure best-fit allocator, with ties normally decided via FIFO (i.e.转载 2012-05-11 14:08:34 · 1337 阅读 · 0 评论 -
频繁分配释放内存导致的性能问题的分析
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。初步分析majflt代表major fault,中文名叫大错误,minflt代表minor fa转载 2012-05-11 14:06:52 · 706 阅读 · 0 评论 -
sendfile:Linux中的"零拷贝"
如今几乎每个人都听说过Linux中所谓的"零拷贝"特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,因此有意忽略了复杂的内核实现。什么是”零拷贝”为了更好的理解问题的解决法,我们首先需要理解问题本身。首先我们以一个网络服务守护进程为例,考虑它在将存储在文件转载 2012-05-17 14:08:45 · 19182 阅读 · 2 评论 -
linux环境下的main函数传递参数的问题
对于一个在linux环境下的程序,需要传递字符串的参数,当这样执行的时候: ./test 1 2 key1=value1&key2=value2&key3=value3 发现程序出现如下的结果: 如何解释呢? 这是因为注意看我们的字符串的内容,含有“&”这个特殊的符号,这个符号在linux的shell环境下,是表示在后台运行的意思。所以出现如上的错误原创 2012-06-05 20:44:48 · 4762 阅读 · 1 评论 -
Linux 线程同步---条件变量
1. 相关函数 #include pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond转载 2011-06-05 14:42:00 · 734 阅读 · 0 评论 -
shell中“或”和“与”的符号
我想在[]里做一个判断,如满足a和b才执行,那么中间的符号是什么?-------------------------------------------------------if [ $xxx=a-a $xx=b ]a means and我想在[]里做一个判断,如满足a或b才执行,那么中间的符号是什么?---------------------------------转载 2012-05-22 15:21:35 · 2807 阅读 · 0 评论 -
linux socket编程实现connect超时的一种方法(非阻塞)
一:创建套接字,将其设置成非阻塞状态。二:调用connect连接对端主机,如果失败,判断当时的errno是否为EINPROGRESS,也就是说是不是连接正在进行中,如果是,转到步骤3,如果不是,返回错误。三:用select在指定的超时时间内监听套接字的写就绪事件,如果select有监听到,证明连接成功,否则连接失败。#include #include #include #in转载 2012-03-15 19:43:06 · 2542 阅读 · 0 评论 -
MySQLdb安装
在用python连接mysql数据库的时候,需要安装MySQLdb。听同事说MySQLdb的安装比较困难,笔者在安装的过程中也遇到了一些问题,所以把安装的过程做个归纳,供大家分享。其中的一些信息来源于互联网。 一:安装MySQLdb的前提条件 1:Python 2.3.4or higher 2:setuptools 3:MySQL 3原创 2011-10-27 16:15:03 · 10730 阅读 · 0 评论 -
关于Unix静态库和动态库的分析
基本概念库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 例如:libhello.so libhello.a为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。ln -s libhello.so.1.0 libhel转载 2011-12-03 17:10:05 · 663 阅读 · 0 评论 -
QPS、PV和需要部署机器数量计算公式
术语说明:QPS = req/sec = 请求数/秒【QPS计算PV和机器的方式】QPS统计方式 [一般使用 http_load 进行统计]QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数单台服务器每天PV计算公式1:每天总PV = QPS * 3600 * 6公式2:每天总PV = QPS * 36转载 2011-12-16 10:04:18 · 850 阅读 · 0 评论 -
技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"
简介进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。truss和strace用来 跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来 跟踪进程调用库函数的情况。truss是早期为Syste转载 2012-01-18 11:00:27 · 575 阅读 · 0 评论 -
gdb 多线程调试
http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.html http://hi.baidu.com/litto/blog/item/759389dd198111375882dd1e.html http://blogold.chinaunix.net/u3/94700/showart_2389432.html转载 2012-01-31 23:12:34 · 466 阅读 · 0 评论 -
头文件定义变量的问题
这次又犯了头文件定义变量的错误问题,关键是linux环境下还不报错!例子如下:在common_config.h头文件中定义了如下变量:int CHANNEL_NUM = 1024;后在文件中的一个函数中修改此变量为120,但是退出此函数后,打印出变量的值,竟然依旧是1024。正确的做法是在common_config.h中声明这个变量:extern int CHANN原创 2012-02-01 17:33:44 · 673 阅读 · 0 评论 -
举例网络字节序和主机字节序
主机字节序若是int a = 0x12345678;则转换为网络字节序是:htonl(a)=0x78563412;原创 2012-02-20 19:36:22 · 587 阅读 · 0 评论 -
snprintf函数介绍
#include#includeint main(){ char buf[10]; buf[0]=0; int len = snprintf( buf, sizeof(buf), "%s", "abcdefgaaab"); cout << buf << endl; cout << len << endl; return 0;}这原创 2012-03-02 20:32:43 · 974 阅读 · 0 评论 -
unix时间转换成系统时间
使用如下命令就可以:date -d '1970-01-01 UTC 13379554 seconds' +"%Y-%m-%d %T %z"结果是:2012-03-16 14:32:22 +0800原创 2012-03-16 17:58:16 · 754 阅读 · 0 评论 -
shell取字符串字串的操作
val=”20120406 12:03:45”STAT_DATE="${val:0:4}"STAT_DATE=`echo $datetime | awk '{print substr($1,1,4)}'` 其中:substr最后一个参数指代取多少个字符 if [ "abc" \> "bcd" ]; then 注意比较符号要转义 echo "ok"fi原创 2012-05-13 10:57:40 · 775 阅读 · 0 评论 -
查看TCP keepalive参数
# cat /proc/sys/net/ipv4/tcp_keepalive_time 7200# cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75# cat /proc/sys/net/ipv4/tcp_keepalive_probes 9 前面两个值的单位是秒,最后的那个值是个纯数字。这三个参数的意思是:在开始第一次keepali原创 2012-07-05 21:52:22 · 6135 阅读 · 0 评论 -
Linux TCP 系统参数配置
Linux TCP 系统参数配置我们这里应用的是CentOS5.3,并内核使用的是2.6.18-128.el5PAE #1 SMP 。修改部分TCP ,有的是为了提高性能与负载,但是存在降低稳定性的风险。有的则是安全方面的配置,则有可能牺牲了性能。1.TCP keepalive TCP连接保鲜设置echo 1800 > /proc/sys/net/ipv4/tcp_keepaliv转载 2012-07-08 21:39:14 · 1305 阅读 · 0 评论 -
linux新增用户和密码
Linux新增用户和密码只需要两行命令搞定:1:useradd username 2:passwd username原创 2014-01-14 11:12:12 · 1935 阅读 · 0 评论 -
expect spawn、linux expect 用法小记
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn s转载 2014-04-04 18:30:07 · 1144 阅读 · 0 评论 -
linux socket read函数
int my_read(int fd, void *buffer, int length) { int bytes_left; int bytes_read; char *ptr = NULL; bytes_left = length; while转载 2014-04-21 14:35:13 · 6666 阅读 · 0 评论 -
vim分屏
本篇文章主要教你如何使用 Vim 分屏功能。 分屏启动Vim使用大写的O参数来垂直分屏。vim -On file1 file2 ...使用小写的o参数来水平分屏。vim -on file1 file2 ...注释: n是数字,表示分成几个屏。关闭分屏关闭当前窗口。Ctrl+W c关闭当前窗口,如果只剩最后一个了,则退出转载 2014-04-05 10:07:16 · 773 阅读 · 0 评论 -
Epoll在LT和ET模式下的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂转载 2014-05-23 10:27:23 · 718 阅读 · 0 评论 -
lua相关知识点笔记
require,用于加载文件,会搜索环境变量LUA_PATH设定的路径,同时能判断文件是否已经加载来避免重复加载。比较奇特的是路径的设置,与一般的路径完全不同,其实就是用?当占位符,然后require filename的时候,用filename代替这些文号,比如:?;?.lua;c:\windows\?;/usr/local/lua/?/?.lua当你require 'lili'的时候原创 2014-06-17 16:47:30 · 845 阅读 · 0 评论 -
luamysql 安装
lua版本:lua-5.1.5,下载链接:http://www.lua.org/ftp/lua-5.1.5.tar.gzluamysql版本:luasql-2.1.1,下载链接:http://files.luaforge.net/releases/luasql/luasql/LuaSQL2.1.1/luasql-2.1.1.tar.gz系统:centos 61、下载lua5.1.5转载 2014-08-21 19:38:13 · 694 阅读 · 0 评论 -
Apache: No space left on device: Couldn’t create accept lock
昨天启动内部服务器的apache时,没启动成功,看了下/var/log/httpd/error_log,有如下错误:“[Mon Aug 06 09:32:20 2012] [emerg] (28)No space left on device: Couldn’t create accept lock (/etc/httpd/logs/accept.lock.6399) (5)”开始根据转载 2014-08-13 11:34:28 · 1739 阅读 · 0 评论 -
luamysql 安装
lua版本:lua-5.1.5,下载链接:http://www.lua.org/ftp/lua-5.1.5.tar.gzluamysql版本:luasql-2.1.1,下载链接:http://files.luaforge.net/releases/luasql/luasql/LuaSQL2.1.1/luasql-2.1.1.tar.gz系统:centos 61、下载lua5.1.5转载 2014-05-04 09:15:22 · 8071 阅读 · 1 评论 -
动态库搜索路径
1.编译目标代码时指定的动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;4.默认的动态库搜索路径/lib;5.默认的动态库搜索路径/usr/lib。在编译目标代码时指定程序的动态库搜索路径。这是通过gcc的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之原创 2013-12-11 11:47:20 · 957 阅读 · 0 评论 -
Linux 查看文件修改时间(精确到秒)
Linux 下查看文件时,ls –l 缺省是不显示秒的:$ ls -ltotal 0-rw-r--r-- 1 gps gps 0 2012-06-12 16:21 README.txt-rw-r--r-- 1 gps gps 0 2012-06-12 16:21 test.txt要显示秒(实际更精确),可以用 –full-time 参数:$ ls --full-转载 2012-07-03 15:36:32 · 61587 阅读 · 1 评论 -
几个常用问题总结
Q:如何杀死父进程id=1的子进程?A:kill –9 命令可以强行终止某个进程。killall 程序的名字 Q:如何删除共享内存?A:先ipcs -m 看看那些shmid该删;然后ipcrm -m shmid。 命令是 ipcs -m | grep -i ****** | awk '{print $2;}' |xargs -l ipcrm -m Q:如何在oracl原创 2011-07-19 14:16:24 · 814 阅读 · 0 评论 -
linux全局替换命令
:%s/Word1/Word2/g:setlist vim中显示特殊字符cat unsendStat.log | awk -F'|' '{if($3==0) num=num+1}END{print num}'原创 2013-01-01 12:07:01 · 4298 阅读 · 0 评论 -
Can't make backup file (add ! to override)
If anyone else is having this issue you might have configured your backup directory in your .vimrc.after or .gvimrc.after file. The latest version of Janus sets your backup directory to .vim/_backup b转载 2013-03-21 09:23:43 · 10857 阅读 · 0 评论 -
linux安装boost
linux下安装boost(一). 在Terminal中分别执行以下3步安装boost:1. 下载后进入压缩包所在目录解压: sudo tar -zxvf boost_1_52_0.tar.gz2. 进入./boost_1_52_0,运行: sudo ./bootstrap.sh --prefix=/usr /usr 可替换为任意路径 (事前运行./bootstrap.sh转载 2013-07-10 11:13:25 · 2061 阅读 · 0 评论 -
技术文章收藏
一:Linux 的多线程编程的高效开发经验 http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 二:深入理解可重入与线程安全 http://blog.youkuaiyun.com/feiyinzilgd/article/details/5811157 三: Google Protocol Buffer 的使用和原理 http:/原创 2012-05-20 17:11:44 · 688 阅读 · 0 评论 -
CLOSE_WAIT
最近遇到的一个关于socket.close的问题,在某个应用服务器出现的状况(执行netstat -np | grep tcp): tcp 0 0 10.224.122.16:50158 10.224.112.58:8788 CLOSE_WAITtcp 0 0 10.224.122.16:37655转载 2013-09-20 16:54:57 · 2462 阅读 · 0 评论 -
linux的那些小技巧
1:生成随机16进制数字,n是字符的数量:openssl rand -base64 16v68KIPg+eOyRnIPzxYyhXA== 2:提取字符串的前5个字符: var=abcdefgh;echo ${var:0:5}3:ssh命令用于远程登录上Linux主机 ssh [-l login_name] [-p port] [user@]hostname 打开S原创 2013-12-27 17:30:28 · 720 阅读 · 0 评论