- 博客(38)
- 资源 (2)
- 收藏
- 关注
原创 进程端口查看
今天遇到apache的httpd服务开启不了,报错是服务端口地址X被占用。解决步骤为:查看进程的端口。查看的命令为:1,netstat -tuanpt表示tcp协议u表示udp协议a表示显示监听/非监听套接字。n表示以数
2011-09-28 18:46:36
1180
原创 Java正则表达式
最近写字符串处理程序用到了Java正则表达式。其中写了个 \\s*:\\s*|(? 为了写正则表达式,特意查看了JDK帮助文档,其中有一段:Special constructs (non-capturing)(?:X)X, as
2011-09-25 19:52:45
2266
原创 Java 线程局部存储
一,简介和应用Java中对线程局部存储进行支持的类是:public class ThreadLocalextends Object其文档解释为:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其
2011-09-19 23:03:40
4066
原创 Java线程池技术之二 Java自带线程池实现
一,介绍 类视图如下: 自Java 1.5后,Java对线程相关的库做了很大的拓展,线程池就是其中之一。Java线程的新特性多数在java.util.concurrent,其包含众多的接口和类。其中java.util.concurrent.Executor
2011-09-18 21:45:29
7265
原创 Java 线程池技术之一 自实现线程池
尽管自jdk1.5,Java已经自带了线程池实现,了解如何自己实现Java线程池有助于加深对操作系统和Java虚拟机的理解。一,线程池的基本要素线程池一般需要一个线程管理类: ThreadPoolManager,其作用有: 1)提供创建一定数量的线程
2011-09-15 09:15:08
17096
1
原创 Java 基本数据类型和对象类型
基本数据类型在栈中进行分配,而对象类型在堆中进行分配。 所有方法的参数都是在传递引用而非本身的值(基本类型例外)。 对象之间的赋值只是传递引用,基本类型之间的赋值是创建新的拷贝。 例如: String a = "china";
2011-09-07 22:48:28
9105
原创 Java 对象内存细节
与Linux/Windows下的c/c++可执行文件类似,Java程序中的对象的内存存储,也存在如下方式:寄存器、栈、堆、常量池(类似于c/c++的数据段,但作用机制有所不同)、静态域(c/c++没有单独的概念,而是也存储在了数据段)、非RAM存储。 Java中,简
2011-09-07 22:41:57
3486
原创 Nginx源代码分析--基本数据结构--hash
Nginx对内存的使用极其苛刻,达到了令人呕吐的地步。 这里仅仅分析一个hash桶的映射过程中的一小步骤: 计算映射一个数组到hash桶的时候,所需要的桶的多少。 这是图: 源代码:
2011-09-07 16:08:53
1339
原创 Java 空指针异常(java.lang.NullPointerException)
Java 空指针异常(java.lang.NullPointerException),顾名思义,即对象没有进行实例化便进行了使用。实例化的意义,就是将对象实例的地址赋值给对象符号。 比如 String a = new String();即在堆中将String的实例构造后,将
2011-09-07 13:02:29
28058
原创 Java 常量池技术和==比较
Java 形成的class文件中,包含有所谓的“常量池”,其类似于C/C++形成的可执行文件(或者目标文件)中的符号表和数据段。 但是有所区别的是,C/C++的符号表,是符号(比如函数)和地址的对应关系,在最终链接形成的可执行文件中,所有对符号的引用的地址(比如函数调用指令
2011-09-07 12:49:06
1572
原创 LeakDiag的使用和形成的LOG文件的分析方法
一,使用 LeakDiag版本1.25的下载地址为:http://iterzebra.download.youkuaiyun.com/ 微软官方地址: ftp://ftp.microsoft.com/PSS/Tools/Develope
2011-08-19 12:22:25
12760
原创 Nginx源代码分析--基本数据结构--hash
<br />咱们来看这段代码:<br /> <br /> <br />//这段让人欢喜让人忧的宏定义<br /> <br />//先说说有什么需求:<br /> <br /> //桶的大小是有限制的,在ngx_hash_init_t 数据结构中
2011-07-05 10:50:01
1353
原创 Nginx源代码分析--基本数据结构--hash
咱们来继续看found后的处理:found: //小样,找到你了~~ //当前的size,可就是需要的桶大小了。 //老毛子这里将test[0]~test[size-1]的值,重新计算一遍。 //感觉是因为他太高兴了,觉得”终于成功计算出size了“,忘
2011-07-05 10:49:39
1338
原创 Nginx源代码分析--基本数据结构--hash
<br />这次我们来看一下查找函数<br /> <br /> <br /> <br />void *<br />ngx_hash_find(ngx_hash_t *hash, ngx_uint_t key, u_char *name, size_t len
2011-07-05 10:45:23
957
原创 Nginx源代码分析--基本数据结构--hash
<br />我们来看一下wildcard初始化函数。<br /> <br />//函数ngx_int_t<br /> <br />//ngx_array_s结构体<br /> <br /> <br /> <br />//elts是指向内存池中的存储元素的指针。
2011-07-05 10:45:11
1170
原创 Nginx源代码分析--基本数据结构--hash
<br />Nginx的查找函数逻辑相对简单,即根据要查找的key-value的key,计算出其所在的桶,比较该key和桶中所有key-value对的key的长度是否一致,如果一致,则进行继续key的值的比较。如果key的值也一直,则获取该key对应value
2011-07-05 10:44:47
1008
原创 Nginx源代码分析--基本数据结构--hash
//通配查找,匹配以.分隔的最后的字符串//ngx_hash_find_wc_head的处理流程为://1,寻找字符串中,最后一个子串开始的位置//2,计算最后这个子串的key值//3,寻找这个key值对应的值域的指针// 4,如果value值不是NULL,则
2011-07-05 10:43:43
1620
3
原创 用vim打造IDE--分屏
使用分屏命令::new 创建空白分屏:new filename 创建分屏并打开filename文件:split 对当前光标所在窗口进行水平分屏:vsplitt 对当前光标所在窗口进行竖直分屏:only 取消其他分屏,保留当前光标所在窗口
2011-04-08 09:14:00
1999
原创 使用Vim打造IDE--Grep
.在工程中查找 -- 插件: Grep下载地址http://www.vim.org/scripts/script.php?script_id=311版本1.8安装把grep.vim 文件丢到 ~/.vim/plugin 文件夹就好了手册在grep.vim 文件头部下面介绍它的用法:vim有自己的查找功能, 但是跟shell中的grep比起来还是有些差距的, 有时Coding正火急火燎的时候, 真想按下F3, 对光标所在的词来个全工程范围的grep, 不用敲那些繁琐的命令, 现在福音来了, 跟
2011-04-05 22:54:00
7500
原创 使用Vim打造IDE--缓冲区和多个文件编辑
<br />原文地址:<br />http://blog.youkuaiyun.com/wooin/archive/2007/10/31/1858917.aspx<br /> <br /> <br /> <br />MiniBufExplorer<br /> <br />用以解决vim自己本身带的buffer管理工具不直观的问题。<br /> <br />下载地址:<br /> <br />http://www.vim.org/scripts/script.php?script_id=159<br /> <br />安
2011-04-05 22:53:00
2145
原创 使用Vim打造IDE--书签功能
<br />原文如下:<br />http://blog.youkuaiyun.com/wooin/archive/2007/10/31/1858917.aspx<br /> <br />VisualMark<br /> <br />下载地址:<br />http://www.vim.org/scripts/script.php?script_id=1026<br /> <br />安装:<br /> <br />放置于~/.vim/plugin文件夹下。<br /> <br /> <br />vim本身就有Mark功
2011-04-05 22:43:00
3378
原创 使用Vim打造IDE--在头文件和源文件中切换
<br />原文地址:<br />http://blog.youkuaiyun.com/wooin/archive/2007/10/31/1858917.aspx<br />转载无风险。<br /> <br />A.vim可是个简约而不简单的插件。<br /> <br />地址:<br />http://www.vim.org/scripts/script.php?script_id=31<br />安装:<br />将a.vim放到~/.vim/plugin文件夹下<br /> <br />用法:<br /> :A在
2011-04-05 22:34:00
4596
原创 Linux操作系统--自动补全加速
SuperTab用于简化补全功能。地址:http://www.vim.org/scripts/script.php?script_id=1643安装方法:将插件放到 ~/.vim/plugin文件夹中。使用下述命令查看帮助文档::SuperTabHelp在~/.vimrc文件加入以下两行:let g:SuperTabRetainCompletionType=2let g:SuperTabDefaultCompletionType=""这样,直接在需要按CTRL+X和CTRL+O的时候,直接使用tab即可
2011-04-05 22:19:00
1947
原创 使用Vim打造IDE--自动补全
自动补全是一个很重要的功能。实现该功能,vim需要ctags 5.6版以上的支持。查看帮助文档::help new-omni-completion在~/.vimrc中增加如下两行:filetype plugin indent onset completeopt=longest,menu打开文件检测和智能补全,并关闭智能补全时的预览窗口。这样在结构体等,进行insert进行编辑时,将光标放到 "->"后,按下Ctrl+X CTRL-O 会弹出一个下拉菜单,此时有一些快捷键可以用:Ctrl+P向前切换成员Ctr
2011-04-05 18:19:00
5758
原创 使用Vim打造IDE--quickfix窗口
是vim默认的插件。查看帮助文档::help quickfix例如执行make,编译出错::make然后就会有错误信息在quickfix中显示。:cw可以进行quickfix的切换显示。下面的QuickFix窗口中我们可以找到每一个编译错误, 同样可以用鼠标点击每一条记录, 代码会马上自动跳转到错误处。你也可以用下面的命令来跳转: :cn // 切换到下一个结果:cp // 切换到上一个结果如果你经常使用这两个命令, 你还可以给它们设定快捷键。比如在~/.vimrc中增加如
2011-04-05 18:13:00
8104
原创 使用Vim打造IDE--Cscope
可以使用Cscope完成如下功能:查看一个函数在哪里被调用查看变量在哪里被使用查看一个函数调用了哪些函数检查改动,例如增加一个枚举,会产生什么影响检查所有的地方都进行了相应修改,例如给一个函数增加参数在所有文件中对一个全局变量进行改名源文件在目录中的位置哪些文件包含这个头文件Cscope地址: http://cscope.sourceforge.net 解压后编译安装:# ./configure# make# make install 之后,在~/vimrc中增加如下一行: :set csc
2011-04-05 18:07:00
1510
原创 使用Vim打造IDE--WinManager
如果希望对taglist和netrw.vim插件进行合理的组合显示,需要使用WinManager这个插件。地址为:http://www.vim.org/scripts/script.php?script_id=95在 ~/.vim 目录下解压winmanager.zip 使用如下命令查看帮助文档::help winmanager 之后,在~/.vimrc中增加如下两行:let g:winManagerWindowLayout='FileExplorer|TagList'nmap wm :WMToggle
2011-04-05 17:26:00
2291
原创 使用Vim打造IDE--netrw.vim
如果希望在vim中查看到文件的目录结构,可以使用vim的插件netrw.vim。例如如下打开::e /home/zebra/myprogram/src在使用vim打开一个目录的时候,便会显示文件浏览器。其中一些重要的操作如下:显示帮助 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件-返回上级目录c切换vim 当前工作目录正在浏览的目录d创建目录D删除目录或文件i切换显示方式R文件或目录重命名s选择排序方式x定制浏览方式, 使用你指定的程序打开该文件
2011-04-05 17:21:00
9741
原创 使用Vim打造IDE--taglist
如果希望vim中某个窗口可以显示所有的符号,需要使用taglist这个插件。地址如下:http://www.vim.org/scripts/script.php?script_id=273安装后使用如下命令查看帮助文档::help taglist.txttaglist有如下特点: taglist可以在vim的垂直或者水平分屏显示 可以在多个源文件切换的时候进行自动的更新在~/.vimrc文件中添加如下两行: let Tlist_Show_One_File=1let Tlist_Exit_Only
2011-04-05 17:10:00
1219
原创 使用Vim打造IDE--tags
使用独立的程序Ctags来产生标签文件,在vim中可以指定标签文件的目录,这样,vim就可以正确的定位标签的位置了。Ctags程序的地址如下: http://ctags.sourceforge.net 之后,和其他程序一样,可以用下面的命令解压并编译安装:# tar -xzvf ctags-5.6.tar.gz# cd ctags-5.6#./configure#make#make install 之后,需要去源代码目录中产生标签文件。例如到最上层目录,在该目录下运行命令: cta
2011-04-05 16:43:00
790
原创 使用Vim打造IDE--高亮显示
Vim可以使用一个脚本读入语法高亮的规则,编辑任何文件如下:"========================================================" Highlight All Function"========================================================synmatch cFunction "/[^()]*)("me=e-2synmatch cFunction "//s*("me=e-1hi cFunction
2011-04-05 15:52:00
1632
原创 Linux编辑器--vim的tag29.5
<br />29.5查找本地标识符<br /> <br /> [I 查找包含文件。仅仅查看当前文件,并且跳转到第一个在光标下的字符被使用的地方,可以使用:<br /> <br /> gD(即Goto Definition)<br /> <br /> 这个命令对于发现本地声明的变量和函数非常有用。例如c语言中的static。<br /> <br /> 如果要更小的范围,即在当前函数中,使用如下命令:<br /> <br /> gd<br /> <br /> 这会跳转到当前函数的开始,并发现第一个光标下的w
2011-04-05 11:03:00
974
原创 Linux编辑器--vim的tag29.4
<br />29.4查找全局标识符<br /> <br /> 你正在编写C程序,并且想知道一个变量是被声明为int或者unsigned。一个发现这个的快速方法是使用[I命令。<br /> <br /> 假设光标在column这个字上,输入[I,vim会列出匹配的所有行。不仅仅在当前文件,所有包含文件,和包含文件中包含的文件,都会列出。<br /> <br /> 这种方式相对于使用tags和分屏的好处就是包含文件也被搜索。多数情况下,这将会正确的找到声明。即使tags文件过期了,或者你没有对于包含文件
2011-04-05 10:56:00
931
原创 Linux编辑器--vim的tag29.3
由于程序是有结构的,因此vim可以识别其中的项。一些命令可以用于穿梭。 c程序一般具有类似如下的结构: #ifdef USE_POPEN fd=popen("ls","r") #else fd=fopen("tmp","w") #endif但是可能更长,并且有更多嵌套。使得光标在#ifdef然后按下%,vim将跳转到#else,继续按%则跳转到#endif。继续按,则回到#ifdef。 当结构被嵌套,vim能够发现匹配项。这是一个检查你是否忘记#endif的好方法。 当你在#
2011-04-05 00:51:00
1000
原创 Linux编辑器--vim的tag29.2
<br /> <br />29.2 之前的window<br /> <br /> <br />当你编辑包含函数调用的代码的时候,你需要使用正确的参数。知道传递什么样的值,你需要查看函数的定义。tags机制非常适合这个。更好的是定义被显示在另外一个window。这样,之前的window可以使用。打开一个之前的window来显示函数"write_char":<br /> <br /> :ptag write_char<br /> <br />vim将会开一个window并且跳转到tag处。之后它将你带到原来的
2011-04-05 00:25:00
805
原创 Linux编辑器--vim的tag29.1
vim是Linux下一款功能十分强大的编辑器。将vim打造成编程利器,不仅仅需要学习vim的用法,还需要使用一些插件。首先介绍vim中标签的用法。以下是对vim帮助的29章进行的翻译:29.1使用tags tags是定义标识符的地方。例如在c和c++程序中的函数定义。tags的列表在一个tags文件中维护。这个可以被vim用以直接的从任何地方跳转到tag,也就是定义了标识符的地方。 如果要成成所有当前目录下的C文件的tags文件,使用如下命令: ctags *.c ctags是一个独立的
2011-04-04 22:32:00
1192
原创 Linux操作系统--用vim打造开发环境
1,配置显示 开始vim,敲入version,这个时候,vim编辑器会显示版本信息。其中有如下信息: system vimrc file: “/etc/vimrc” user vimrc file: "$HOME/.vimrc" 也就是说vimrc这个vim的配置文件,在/etc/vimrc和$HOME/.vimrc中存在。对此,vim的选择是如果/etc/vimrc存在,则按照该配置文件中的配置进行。 配置中常用的有: syntax on
2011-03-29 23:34:00
950
原创 Linux常用工具--vim的语法高亮和缩进设置
编辑/etc/vimrc文件 1,设置语法高亮生效: syntax on 2,设置制表符(Tab键)的宽度为4: set tabstop=4 set softtabstop=4 3,设置缩进的空格数为4: set shiftwidth=4 4,设置使用 C/C++ 语言的自动缩进方式: set cindent 5,设置C/C++语言的具体缩进
2011-03-29 18:19:00
959
LeakDiag1.25和LDGrapher
2011-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人