用C语言实现一个循环队列并不难。关键点在于对队列 "空" 和 "满" 状态的判断。

正如《C和指针》中所描写的,有两种方法来实现对队列空和满状态的判断。

在数组中空一个元素不填,起始时, 置tail为0, front为1, 这样一来, 实现要浪费queue buffer中两个元素空间:
队列空:  (tail+1) % queue_size == front
队列满:  (tail+2) % queue_size == front
定义一个变量来记录队列中元素的个数, 判断队列的空和满直接看变量的值即可


本文中使用的是第2种:


来自:http://blog.csdn.net/huangkangying/article/details/44066729
在 .vimrc里添加:


按一下 f 键就能显示函数名字。

来自:http://blog.csdn.net/caspiansea/article/details/42570311


vim里一个函数很长(几百行),光标在函数中间的某个位置,怎么快速跳到函数头?
[]
是跳到函数头。[ 是 p 右侧那个键。
正常模式
跳到头
[[
跳到尾
][
跳到下一个函数
]]
调到上一个函数
[]
调到上一层大括号
[{


ctrl + o 回到光标回到上次位置:
ESC下面那个按两下也可以实现


命令模式下跳转到某行:
比如开始在第n行,然后用mG后,跳到了m行,
背景:尽管登录vps会发邮件,但是会偶出现,登录了又发了一邮件,于是想此时看到底有多少个终端在登录态,还是阿里的alikid触发,还是真有黑客,怎么办,w查看,w tux。
LINUX是个多用户系统,一旦连接到网络中,它可以同时为多个登录用户提供服务。系统管理员可以随时了解系统中有那些用户,用户都在进行什么操作。
查看用户的操作
系统管理员若想知道某一时刻用户的行为,只需要输入命令w即可,在SHELL终端中输入如下命令:
tux@tux-desktop:~$ w
21:13:14 up 7:08, 2 users, load average: 0.22, 0.32, 0.20
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
tux      tty7     :0               14:05     ?    37:55   0.33s x-session-manag
tux      pts/1    :0.0             21:13    0.00s 0.13s 0.00s w

可以看到执行W命令及显示结果。
命令信息含义
上述显示的信息分别表示如下:
第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登陆哟内用户总数及系统平均负载信息。对于上述势力中的几个显示数据意义为:
21:13:14 表示执行W的时间是在晚上9点13分。
7:08 表示系统运行7小时8分。
2 users 表示当前系统登陆用户总数为2。
load average与后面的数字一起表示系统在过去1,5,10分钟内的负载程度,数值越小,系统负载越轻。
从第二行开始构成一个表格,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资料。
USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
TTY:用户登陆所用的终端。
FROM:显示用户在何处登陆系统。
LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后,开会记时。
JCPU:一终端代号来区分,表示在摸段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后耗费的CPU时间。
WHAT:表示当前执行的任务。

查看某用户
当登陆系统用户很多的时候,可以在W后面加上某个用户名,则会查看该用户执行任务的情况。
tux@tux-desktop:~$ w tux
21:19:01 up 7:14, 2 users, load average: 0.25, 0.21, 0.18
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
tux      tty7     :0               14:05     ?    38:05   0.33s x-session-manag
tux      pts/1    :0.0             21:13    0.00s 0.13s 0.00s w tux

默认情况下,系统会显示上述所有的信息,如果只关心某一方面,可以只使用相关的选项。
linux svn工作空间锁定无法更新的解决方法(Working copy ‘.’ locked)
背景:有人在linux上直接修改文件(可能是debug),但没有提交成功。产生这种情况大多是因为上次svn更新命令执行失败且被自动锁定了。
于是会出现如下情况:
[root@localhost justwinit_devel]# /usr/bin/svn  update --username xiangdong --password xiangdong
svn: Working copy '.' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
怎么办?

两步解决:
步骤1:
写个脚本批量清,cleanuplocked.sh:
#!/bin/sh
for lk in `find /data/htdocs/justwinit_devel -name "lock"`
do
`rm $lk`
done
exit


步骤二:运行命令svn cleanup:
[root@localhost justwinit_devel]# svn cleanup
[root@localhost justwinit_devel]# /usr/bin/svn  update --username xiangdong --password xiangdong

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <http://svn.jackxiang.com:80> Authorization Realm

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
At revision 2736.


参考:http://www.xuebuyuan.com/1112787.html
背景:vim打开代码时候发现空格显示后发现行尾有一堆空格...得删除,在vim配置下可以高亮这些空格,看到后方便删除掉。
让vim显示行尾的空格的配置办法,在/etc/vimrc文件添加如下两行 :
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
摘自:http://www.codeweblog.com/%E8%AE%A9vim%E6%98%BE%E7%A4%BA%E7%A9%BA%E6%A0%BC-%E5%8F%8Atab%E5%AD%97%E7%AC%A6-vim-%E5%A4%9A%E8%A1%8C%E6%B3%A8%E9%87%8A/

方法一:vi 删除行尾空格以替换解决掉删除行尾空格,实践OK如下:
行末:$
行首:^
空格:\s

行末空格:\s\+$
行首空格:^\+\s

删除行尾空格:
:%s/\s\+$//

:%s/\s\+$//g   #也成,别少个$就成,否则所有空格全给去了。
http://blog.itpub.net/22661144/viewspace-1433706/

方法二:用插件实现,实践OK,共两步
(1)安装插件到指定目录:
cd /tmp
git clone https://github.com/dongweiming/vary.vim  
mkdir -p /root/.vim/plugin
cd /root/.vim/plugin
mv /tmp/vary.vim/plugin/vary.vim /root/.vim/plugin/
ls /root/.vim/plugin/vary.vim
备注:特别注意,直接wget是不行的,wget https://github.com/dongweiming/vary.vim/blob/master/plugin/vary.vim,这个是网页,不全是源码,得git clone,里面的doc里的内容没有啥实际的功能性用处,不放也行,并不影响使用。
(2)让插件在vim 里配置并生效:
vim /root/.vimrc


最后两行介绍,在/root/.vimrc下面加两行实现后,实践发现,打开时就自动去行尾空格,在写入前有行尾空格也给自动去了写入:
autocmd BufReadPost * :call StripTrailingWhite()
autocmd BufReadPost * :call RetabIndents()
表示打开文件之前就修改,把修改后的结果呈现给你
成功实践来自网址:http://www.tuicool.com/articles/aQfqUv


三、实践OK之Editplus删除行尾空格:
Editplus的替换查找: \s+$
[V]正则表达式
全部替换


四、RegexBuddy调试之多行尾测试之Whole file改为Line by line:
Match:
\s+$

Test:
psql \  
   --host=127.0.0.1 \  
   --port=5432 \  
   --username kong \  
   --password \  
   --dbname=kongdb

发现只被替换了kongdb后面的空格,怎么办?
在Test下面一行有一个:Whole file改为Line by line即可按多行,也就能看到上面这个六行的行尾给变黄了,也就是被标记成行尾空格了。


四、sublime去行尾空格:
\s+$

(1)具体步骤:
CTRL+H打开replace功能,勾选上左侧的regular expression,并填写
find what栏 : \s+$
replace with栏 : (这行留空)
接着点replace all即可

(2)配置法去行尾空格:
点击菜单栏上的“Preferences”,找到“Setting-Default”,搜索“trim_trailing_white_space_on_save:"trim_trailing_white_space_on_save": true,
http://blog.chinaunix.net/uid-24830931-id-3376798.html
被复制的文件情况:
[root@iZ25dcp92ckZ multepoolserver]# stat seven.mp4
  文件:"seven.mp4"
  大小:8573191         块:16752      IO 块:4096   普通文件
设备:ca01h/51713d      Inode:7878        硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2015-06-22 17:31:45.913756498 +0800
最近更改:2015-06-16 16:58:26.000000000 +0800
最近改动:2015-06-16 17:17:17.910047316 +0800

根据上面的大小8573191 编写代码,writeTest.c:

编译此文件:
[root@iZ25dcp92ckZ multepoolserver]# gcc writeTest.c  -g -o writeTest
[root@iZ25dcp92ckZ multepoolserver]# ./writeTest
对写入的文件进行md5比对:
[root@iZ25dcp92ckZ multepoolserver]# md5sum  sevenCopy.mp4
cf9dc79b01388037577e0a13e261cbe6  sevenCopy.mp4
[root@iZ25dcp92ckZ multepoolserver]# md5sum seven.mp4
cf9dc79b01388037577e0a13e261cbe6  seven.mp4

[root@iZ25dcp92ckZ multepoolserver]# stat seven.mp4
  文件:"seven.mp4"
  大小:8573191         块:16752      IO 块:4096   普通文件
设备:ca01h/51713d      Inode:7878        硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2015-06-22 17:31:45.913756498 +0800
最近更改:2015-06-16 16:58:26.000000000 +0800
最近改动:2015-06-16 17:17:17.910047316 +0800
创建时间:-
[root@iZ25dcp92ckZ multepoolserver]# stat sevenCopy.mp4
  文件:"sevenCopy.mp4"
  大小:8573191         块:16752      IO 块:4096   普通文件
设备:ca01h/51713d      Inode:9791        硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2015-06-22 17:31:56.458192181 +0800
最近更改:2015-06-22 17:31:45.919756746 +0800
最近改动:2015-06-22 17:31:45.919756746 +0800
创建时间:-


阅读全文
背景:有时看个bin-log的sql语句时间,想看文件的中间,怎么看,文件还挺大的,这儿有个办法,太大上G的这个命令还是有些玄乎,看不了。
Linux查看文件中间行:
从第3000行开始,显示1000行。即显示3000~3999行:
【一】cat filename | tail -n +3000 | head -n 1000
【二】cat filename| head -n 3999 | tail -n +3000
*注意两种方法的顺序
【三】用sed命令
sed -n '3000,3999'p filename 可以只查看文件的第3000行到第3999行。

知识点:
1,tail -n 1000:显示最后1000行
     tail -n +1000:从1000行开始显示,显示1000行以后的
     head -n 1000:显示前面1000行
2,Sed命令是linux下的一个非常有用的命令,
sed -n '2'p filename  打印文件的第二行。
sed -n '1,3'p filename 打印文件的1到3行。
sed -n '/Neave/'p filename 打印匹配Neave的行(模糊匹配)
sed -n '4,/The/'p filename  在第4行查询模式The  
sed -n '1,$'p filename 打印整个文件,$表示最后一行。

摘自 :http://blog.163.com/nancainvmao_bq/blog/static/1065737420131084545205/
背景:从windows上用editplus编写一个文件rz上去后,在make时,出现make: 警告:检测到时钟错误。您的创建可能是不完整的。后面make clean;问题依旧。
引起原因:是因为windows上的文件可以时间比较旧,需要给touch一个新时间,让make认为是很新的文件,即可。
解决办法:
touch multepoolser.c
于是编译就没提示这个问题了。
——————————————————————————————————————————————————————
我在make的时候也出现了同样的问题,不过不是什么大问题,这个不影响编译结果

分析原因可能是:
服务器上的文件最后修改时间比当前时钟要晚

解决办法:
用touch 命令把源程序的时间戳改一下
find . -type f -exec touch {} \;

或者

touch *一下再重新编译

From:http://blog.csdn.net/maopig/article/details/6599660
用Linux下的dd命令拷贝整张磁盘的方法:
fdisk -l 能看到两块盘,不是分区,如下:
dd if=/dev/sda of=/dev/sdb bs=4096k
fdisk -l
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
iostat -x 1或 iostat -d 2 -m ,    来自:https://jackxiang.com/post/5671/
有120M左右的写入速度,1T = 1000G = 1000000M
1000000/100/3600=2.77小时,实际上不会时刻在100M以上,估计得3个小时。
用orico硬件拷贝可能要快一点, 但感觉不出来快多少,dd命令运行中可以Ctrl+C中断的。



背景:有vps到期后想换一台vps时,其旧的vps的数据是怎么样实现完全删除的哩? 或是怎么处理的,我现在把vps搬到淘宝vps了,有这个问题。兄弟们是怎么使用的dd。如果我想删除: /data/htdocs 是要dd多少次?d27就可以了。

销毁数据:
利用随机的数据填充硬盘:dd if=/dev/urandom of=/dev/hda1,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作,dd if=/dev/zero  of=/tmp/test bs=1M count=2048。
比如我的vps:
[root@jackxiang data]# df -h
Filesystem      Size    Used  Avail Use% Mounted on
/dev/sdb         94G  1.2G   88G   2%       /data
还是害怕给dd删除这个/dev/sdb给人家磁盘弄环了,还是算了吧。
灌入点数据得了:
[root@jackxiang data]# dd if=/dev/zero of=hello.txt bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,18.5093 秒,56.7 MB/秒

[root@jackxiang data]# du -sh hello.txt
1001M   hello.txt
阅读全文
printf格式输出:%[flags][width][.perc][F|N|h|l]type

用到了flags中的 0 (注意是零不是欧) ,其百科描述为:将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)

width 即表示需要输出的位数。


int a = 4;
printf("%03d",a);
输出:004

也可以用 * 代替位数,在后面的参数列表中用变量控制输出位数;


int a = 4;
int n = 3;
printf("%0*d",n,a);
输出:004

来自:http://blog.chinaunix.net/uid-26295753-id-2981750.html
背景:试着在centos7里调试一下c程序,出现,Missing separate debuginfos, use: debuginfo-install cyrus-sasl-lib-2.1.26-17.el7.x86_64 glibc-2.17-78.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.12.2-14.el7.x86_64 libcom_err-1.42.9-7.el7.x86_64 libgcc-4.8.3-9.el7.x86_64 libselinux-2.2.2-6.el7.x86_64 libstdc++-4.8.3-9.el7.x86_64 nss-softokn-freebl-3.16.2.3-9.el7.x86_64 openssl-libs-1.0.1e-42.el7.4.x86_64 xz-libs-5.1.2-9alpha.el7.x86_64

问题:
Missing separate debuginfos, use: debuginfo-install glib
解决方法:
在CentOS6.5上用gdb调试时提示Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686

实践如下过程:
uname -rsp
Linux 3.10.0-229.1.2.el7.x86_64 x86_64

http://debuginfo.centos.org/7/x86_64/
(例如本机uname -r 3.10.0-229.1.2 只能选 kernel-debuginfo-3.10.0-229.1.2.el7.x86_64.rpm kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64.rpm


安装debuginfo
rpm -ivh kernel-debuginfo-3.10.0-229.1.2.el7.x86_64.rpm
rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64.rpm

配置yum源
or this to work, you need to have the debuginfo repository defined. For CentOS 5, put the following in /etc/yum.repos.d/CentOS-Base-debuginfo.repo:
[base-debuginfo] name=CentOS-$releasever - DebugInfo baseurl=http://debuginfo.centos.org/$releasever/$basearch/ gpgcheck=0
enabled=0
protect=1
priority=1

利用debuginfo-install安装glibc
debuginfo-install glibc

注意事项
安装debuginfo 去http://debuginfo.centos.org寻找和你内核完全匹配的rpm包。


详细:http://jingyan.baidu.com/article/37bce2be1839ca1003f3a253.html

————————————————————————————————————
自己实践如下:
rpm -ihv kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64.rpm
警告:kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID b6792c39: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:kernel-debuginfo-common-x86_64-3.################################# [100%]

rpm -ihv   kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64.rpm  
警告:kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID b6792c39: NOKEY
准备中...                          ################################# [100%]
        软件包 kernel-debuginfo-common-x86_64-3.10.0-229.1.2.el7.x86_64 已经安装

再安装:
debuginfo-install cyrus-sasl-lib-2.1.26-17.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.12.2-14.el7.x86_64 libcom_err-1.42.9-7.el7.x86_64 libgcc-4.8.3-9.el7.x86_64 libselinux-2.2.2-6.el7.x86_64 libstdc++-4.8.3-9.el7.x86_64 openssl-libs-1.0.1e-42.el7.4.x86_64 xz-libs-5.1.2-9alpha.el7.x86_64
背景:多个文件时设置断点时,可以在断点后指定文件名加函数,也可指定文件名加行号,还可以断点后跟偏移量,摘录下其他网站的。
设置断点:

——————————————————————————————————————————————————————————
     (gdb) break 断点

     程序运行后,到达断点就会自动暂停运行。此时就可以查看该时刻的变量值,显示栈针,重新设置断点或者重新运行等。

     断点可以通过函数名,文件内的行号来设置,也可以先指定文件名再指定行号,还可以指定与暂停位置的偏移量,或者用地址来设置。

     (gdb) break 函数名

     (gdb) break 行号

     (gdb) break 文件名:行号

     (gdb) break 文件名:函数名

     (gdb) break +偏移量

     (gdb) break -偏移量

     (gdb) break *地址

     在设置断点的时候,如果不指定断点位置,就在下一行代码上设置断点。    


     条件断点

     (gdb) break 断点 if 条件

     仅在特定条件下中断。对于已存在的断点,可使用condition为其添加条件。

     (gdb) break 断点编号 条件

     而删除指定编号断点的触发条件同样使用condition。

     (gdb) condition 断点编号

阅读全文
每次在电脑上安装支付宝安全控件时,默认都会强行安装与运行TaobaoProtect这个进程(如图)。电脑上装了这个程序以后,在我玩游戏时它总是会令我正在运行的程序自动跳出,使游戏最小化到任务栏上。令我感觉特别烦人!特别受骚扰!可是在淘宝上购物不安装支付宝又不行。最可恶的是购物以后我将支付宝安全控件卸载了然而这个该死的TaobaoProtect进程依然存在。阿里旺旺怎么净干这磋事啊?谁有办法禁用这个该死的进程啊?

1)首先删除C:\Users\“用户名”\AppData\Roaming\TaobaoProtect下的TaobaoProtect.exe和TaobaoProtectSE.dll。然后新建一个txt文件,重命名为TaobaoProtect.exe,右键属性设置只读打勾。目前最完美的解决方案了。

2)如果删除不掉有程序在使用怎么办,unlock来解锁:
http://www.anxz.com/down/1600.html
Git分支模型及版本控制:
https://github.com/wmzhai/advanced-git-topic/blob/master/branching-model.md
extensions.firebug.console.logLimit 配置的。

Firebug's log limit has been reached. %S entries not shown. Firebug 的日志已达上限。 %S 条目没有显示。 建议: Firebug 的日志已达上限。
一)他怎么知道缓存在那个目录呢?
You can add a line in wp-config.php like below:
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/var/run/nginx-cache');

root@101.200.228.135:/data/htdocs/jackxiang.com# grep -r "RT_WP_NGINX_HELPER_CACHE_PATH" ./
./wp-content/plugins/nginx-helper/nginx-helper.php:        define('RT_WP_NGINX_HELPER_CACHE_PATH', '/var/run/nginx-cache');
./wp-content/plugins/nginx-helper/purger.php:                   if (!defined('RT_WP_NGINX_HELPER_CACHE_PATH')) {
./wp-content/plugins/nginx-helper/readme.txt:`define('RT_WP_NGINX_HELPER_CACHE_PATH','/var/run/nginx-cache/');`

vim打开上面文件替换:
%s/\/var\/run\/nginx-cache/\/data\/cache\/ngx_fcgi_cache2/g
二)总配置:/conf/nginx.conf


三)分配置:/conf/vhost/jackxiang.conf 阅读全文
分页: 17/32 第一页 上页 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 下页 最后页 [ 显示模式: 摘要 | 列表 ]