Unix文本处理工具之sed

和上文提到的awk一样,sed也是Unix的文本处理工具。sed是Stream Editor(流式编辑器)的缩写,它能够基于模式匹配过滤(所谓过滤就是在文件中找到符合某些条件的行)修改文本(就是对找到的符合条件的内容进行一些修改操作)。

1、sed命令格式

1.1 sed命令的基本格式

sed命令主要有三种使用形式:

  • sed ‘编辑指令’ 文件1 文件2 ……:用于将处理后的结果输出
  • sed -n ‘编辑指令’ 文件1 文件2 ……:用于只输出编辑指令影响的行
  • sed -i ‘编辑指令’ 文件1 文件2 ……:用于直接在文本文件上修改文本内容(在物理磁盘上修改文件)
1.2 编辑指令

编辑指令主要由两部分组成:前面是逗号隔开的两个地址(或者没有逗号,只有一个地址),代表要处理文本的起始位置到结束位置;后面是要进行的操作类型。格式如下:

[起始地址[,结束地址]]操作类型

如果在一条sed命令中要用到多条编辑指令,那么各个编辑指令之间要用;隔开,也可以将多条编辑指令放在多个单引号中,但是这样的话,要在每个单引号的前面加一个-e。下面是一个简单的例子:

$cat sed_test.txt
1 apple a,b,d,f
2 boy alsdjf,apple,kdjf
3 cat 163.2.201.1
4 dog www.google.com
5 eat http://blog.csdn.net/xia7139

$sed -n '2,5p' sed_test.txt 
2 boy alsdjf,apple,kdjf
3 cat 163.2.201.1
4 dog www.google.com
5 eat http://blog.csdn.net/xia7139

$sed -n '5p' sed_test.txt 
5 eat http://blog.csdn.net/xia7139

$sed -n -e '2p' -e'5p' sed_test.txt 
2 boy alsdjf,apple,kdjf
5 eat http://blog.csdn.net/xia7139
1.3 操作类型

sed常用的操作类型如下:

操作 作用
p 打印文本行(print)
n 取下一行(next)
d 删除(delete)
s 字符串替换(substitude)
a 追加新的文本(append)
2、例子

下面的例子都是对文提到的文件sed_test.txt的操作:

使用正则表达式:
(1)输出从第一个包含kdjf的行到最后一行($代表最后一行)
$sed -n '/kdjf/,$p' sed_test.txt
2 boy alsdjf,appleapple,kdjf
3 cat 163.2.201.1
4 dog www.google.com
5 eat http://blog.csdn.net/xia7139
(2)输出包含单词apple的行
(shell中单词是指一个字符串前后有空格或其它标点符号。正则表达式中用一个<>来界定一个单词,在sed中用该符号要进行转义。)
$sed -n '/\/p' sed_test.txt
1 apple a,b,d,f

删除指定行(这里没有-i,不对原文件进行操作,只是将处理后的结果输出。):
(1)删除第2到4行
$sed '2,4d' sed_test.txt
1 apple a,b,d,f
5 eat http://blog.csdn.net/xia7139
(2)删除包含appleapple的行和最后一行($)
$sed '/appleapple/d;$d' sed_test.txt
1 apple a,b,d,f
3 cat 163.2.201.1
4 dog www.google.com
(3)删除不包含(!表示反选,选中不符合条件的行)apple的行(这样就只剩下了包含apple的行了)
$sed '/apple/!d' sed_test.txt
1 apple a,b,d,f
2 boy alsdjf,appleapple,kdjf

替换指定文本:
(1)将1-4行的apple换成AMAZON。s代表替换,g代表如果一行出现两个apple则全部替换。
$sed '1,4s/apple/AMAZON/g' sed_test.txt
1 AMAZON a,b,d,f
2 boy alsdjf,AMAZONAMAZON,kdjf
3 cat 163.2.201.1
4 dog www.google.com
5 eat http://blog.csdn.net/xia7139
(2)注释shell脚本(在行首插入#)
$sed '1,3s/^/#/g' sed_test.txt
#1 apple a,b,d,f
#2 boy alsdjf,appleapple,kdjf
#3 cat 163.2.201.1
4 dog www.google.com
5 eat http://blog.csdn.net/xia7139
(3)删除字符串apple(如果不写起始地址和结束地址,则默认为所有行。)
$sed 's/apple//g' sed_test.txt
1  a,b,d,f
2 boy alsdjf,,kdjf
3 cat 163.2.201.1
4 dog www.google.com
5 eat http://blog.csdn.net/xia7139

以上两篇文章介绍了Unix两个文本处理工具awk和sed,希望对大家有所帮助。

3、sed和正则表达式

利用正则表达式结合sed能极大地帮助我们处理文本。比如下面的例子:

例1:正则表达式初步使用。
$ cat poem.txt 
  The choice
            By William Butler Yeats
  The intellect of man is forced to choose
  Perfection of life ,or of the work,
  And if take the second must refuse
  A heavenly mansion ,raging in the dark.
  When all that story 's finished ,what's the news?
  In luck or out the toil has left its mark:
  That old perplexity an empty purse,
  Or the day's vanity ,the night's remorse.
(1)用命令删掉文本行首的空格。
$ sed 's/^\s*//g' poem.txt 
The choice
By William Butler Yeats
The intellect of man is forced to choose
Perfection of life ,or of the work,
And if take the second must refuse
A heavenly mansion ,raging in the dark.
When all that story 's finished ,what's the news?
In luck or out the toil has left its mark:
That old perplexity an empty purse,
Or the day's vanity ,the night's remorse.
也可以这样(注意,这里+是要被转义的,而上面的*不用转义。):
$ sed 's/^\s\+//g' poem.txt 
The choice
By William Butler Yeats
The intellect of man is forced to choose
Perfection of life ,or of the work,
And if take the second must refuse
A heavenly mansion ,raging in the dark.
When all that story 's finished ,what's the news?
In luck or out the toil has left its mark:
That old perplexity an empty purse,
Or the day's vanity ,the night's remorse.

(2)删掉文中所有的空格
$ sed 's/\s*//g' poem.txt 
Thechoice
ByWilliamButlerYeats
Theintellectofmanisforcedtochoose
Perfectionoflife,orofthework,
Andiftakethesecondmustrefuse
Aheavenlymansion,raginginthedark.
Whenallthatstory'sfinished,what'sthenews?
Inluckoroutthetoilhasleftitsmark:
Thatoldperplexityanemptypurse,
Ortheday'svanity,thenight'sremorse.
如下也可以达到同样的效果:
$ sed 's/\s\+//g' poem.txt 
Thechoice
ByWilliamButlerYeats
Theintellectofmanisforcedtochoose
Perfectionoflife,orofthework,
Andiftakethesecondmustrefuse
Aheavenlymansion,raginginthedark.
Whenallthatstory'sfinished,what'sthenews?
Inluckoroutthetoilhasleftitsmark:
Thatoldperplexityanemptypurse,
Ortheday'svanity,thenight'sremorse.

也可以使用如下命令实现相关功能:
$ sed 's/^[[:space:]]*//g' poem.txt(删除行开头的空格)
$ sed 's/^[ ]*//g' poem.txt(删除行开头的空格)
$ sed 's/^ *//g' poem.txt(删除行开头的空格)
$ sed 's/^[[:space:]]*//g' poem.txt(删除行开头的空格)
$ sed '/^$/d' poem.txt(删除空行)
$ sed '/^[ ]*$/d' poem.txt(删除空行和只有空格的行)



4、初步体会sed的威力

4.1 去掉不想要的标签

比如你有一个文件内容如下:

test.txt:
{'books/daglib/0015113': 'Scale-isometric polytopal graphs in hypercubes and Z<sub>n</sub>.\n',
 'books/daglib/0097705': 'Discrete total l<sub>p</sub>-norm approximation problem for the function.\n',
 'books/daglib/p/AveneauCFM11': 'A Framework for <i>n</i>-Dimensional Visibility Computations.\n',
 'books/daglib/p/Carter11': 'Using <i>Dungeons and Dragons</i> to Integrate Curricula in Classroom.\n',
 'books/daglib/p/CasolaLRV11': 'Access Control in Cloud-on-Grid Systems: The <i>PerfCloud</i> Case Study.\n',
 'books/daglib/p/ChunKZDMZ11': 'Reverse Engineer of Gene Networks with Application <i>in silico</i> Network.\n',
 'books/daglib/p/ChungK11': 'eQTL Mapping for Functional Classes of <i>Saccharomyces cerevisiae</i> Genes wssion.\n',
 'books/daglib/p/Goldman11': 'A Model for Computer Graphics Based on Algebra for \xe2\x84\x9d<sup>3</sup>.\n',
 'books/daglib/p/LiZ11': 'Line Geometry over \xe2\x84\x9d<sup>3, 3</sup>, and Stewart Platforms.\n',
 'books/daglib/p/Liestol11': '<i>Situated Simulations</i> Between Reality and Designing a Narrative Space.\n'}
现在你要将其中的各行中的类似于标签之类的东西去掉,只需用一条sed命令:

$sed -e 's///g;s/<\/title>//g' -e 's/<i>//g;s/<\/i>//g' -e 's/<sub>//g;s/<\/sub>//g' -e 's/<sup>//g;s/<\/sup>//g' test.txt 
{'books/daglib/0015113': 'Scale-isometric polytopal graphs in hypercubes and Zn.\n',
 'books/daglib/0097705': 'Discrete total lp-norm approximation problem for the function.\n',
 'books/daglib/p/AveneauCFM11': 'A Framework for n-Dimensional Visibility Computations.\n',
 'books/daglib/p/Carter11': 'Using Dungeons and Dragons to Integrate Curricula in Classroom.\n',
 'books/daglib/p/CasolaLRV11': 'Access Control in Cloud-on-Grid Systems: The PerfCloud Case Study.\n',
 'books/daglib/p/ChunKZDMZ11': 'Reverse Engineer of Gene Networks with Application in silico Network.\n',
 'books/daglib/p/ChungK11': 'eQTL Mapping for Functional Classes of Saccharomyces cerevisiae Genes wssion.\n',
 'books/daglib/p/Goldman11': 'A Model for Computer Graphics Based on Algebra for \xe2\x84\x9d3.\n',
 'books/daglib/p/LiZ11': 'Line Geometry over \xe2\x84\x9d3, 3, and Stewart Platforms.\n',
 'books/daglib/p/Liestol11': 'Situated Simulations Between Reality and Designing a Narrative Space.\n'}</code></pre>如果要在原文件中修改,只需加-i参数。 
  <br> 
  <p>4.2 多文件中的替换</p> 
  <p>temp目录下有t1.txt、t2.txt和t3.txt等三个文件,其内容分别如下:</p> 
  <p></p> 
  <pre><code class="language-plain">$ cat t1.txt 
StevenJobs mac
i like
mill fuck
$ cat t2.txt 
you  i
 life 
 love 
 lol
 StevenJobs 
 sex
 friend
 one night stand
 for one night
$ cat t3.txt 
good night
nigtmare
fuck
StevenJobs StevenJobs
StevenJobsStevenJobs
mac</code></pre>下面想要将上面三个文件中的“StevenJobs”换成“Apple”,一一替换的话太麻烦,这里用一个稍微简单的方法,一条命令完成所有文件的替换。 
  <p>预备知识</p> 
  <p>(1)反引号</p> 
  <p>反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。这样,可以实现用一个命令的执行输出作为另一条命令参数的结果。在bash shell中,$()也会有相同的效果,下面是一个例子。</p> 
  <p></p> 
  <pre><code class="language-plain">$ echo `ls`
t1.txt t2.txt t3.txt
$ echo $(ls)
t1.txt t2.txt t3.txt</code></pre>(2)grep命令的r和l选项 
  <p>grep -r: Read all files under each directory, recursively。</p> 
  <p>也是就是说,会递归逐层向下查找目录和目录子目录下的文件,如果没有-r选项grep只会查找当前目录下的文件,不会查找子目录。</p> 
  <p>grep -l: Suppress normal output; instead print the name of each input file from  which  output  would  normally  have  been  printed.   The scanning will stop on the first match.</p> 
  <p>这个选项的man手册读起来稍显晦涩,简单地说,-l选项只会打印出包含我们要查找内容的文件名称,下面是grep的例子。</p> 
  <p></p> 
  <pre><code class="language-plain">$ grep -r "Steven" .
./t1.txt:StevenJobs mac
./t2.txt: StevenJobs 
./t3.txt:StevenJobs StevenJobs
./t3.txt:StevenJobsStevenJobs
$ grep "Steven" .
$ grep -r "Steven" .
./t1.txt:StevenJobs mac
./t2.txt: StevenJobs 
./t3.txt:StevenJobs StevenJobs
./t3.txt:StevenJobsStevenJobs
//下面的命令和上面的命令效果相同
$ grep  "Steven" *
t1.txt:StevenJobs mac
t2.txt: StevenJobs 
t3.txt:StevenJobs StevenJobs
t3.txt:StevenJobsStevenJobs
$ grep -rl "Steven" .
./t1.txt
./t2.txt
./t3.txt</code></pre>用上上面的命令,不难得出下面的解决办法,效果如下: 
  <p></p> 
  <pre><code class="language-plain">$ sed -i 's/StevenJobs/apple/g' `grep -rl StevenJobs .`
$ cat t*
apple mac
i like
mill fuck
you  i
 life 
 love 
 lol
 apple 
 sex
 friend
 one night stand
 for one night
good night
nigtmare
fuck
apple apple
appleapple
mac</code></pre>>.< Over! 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1297534364623642624"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Unix)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1943962135029673984.htm"
                           title="UNIX域套接字" target="_blank">UNIX域套接字</a>
                        <span class="text-muted"></span>

                        <div>1、UNIX域套接字的定义UNIX域套接字是进程间通信(IPC)的一种方式,不涉及网络协议栈,因此在同一台主机上的通信中,它比基于TCP/IP协议的网络套接字更快速、更高效。2、UNIX域套接字的分类字节流套接字(SOCK_STREAM):提供面向连接的、可靠的数据传输服务。数据报套接字(SOCK_DGRAM):提供无连接的数据传输服务,数据以独立的数据报形式传输。3、UNIX套接字与TCP/IP</div>
                    </li>
                    <li><a href="/article/1943860652200226816.htm"
                           title="mit6.s081lab" target="_blank">mit6.s081lab</a>
                        <span class="text-muted"></span>

                        <div>临近毕业季,回想自己本科四年学到了哪些东西,想到自己专业课都是为了卷绩点、应付考试,去背书、被概念,并没有十分深刻的理解和动手实践。现在想重新温习一下这部分知识,同时也加深一下对这部分内容的动手实践。那么就从大名鼎鼎的os课6.s081开始吧~~~lab1:Unixutilitieslab2:Systemcalls</div>
                    </li>
                    <li><a href="/article/1943695752891002880.htm"
                           title="Linux常用命令" target="_blank">Linux常用命令</a>
                        <span class="text-muted"></span>

                        <div>今天开始介绍Linux的常用命令,通过学习了解Shell命令的基本格式,可以掌握常用的Shell基础命令、命名历史、名称补全的方法,及联机帮助命令的使用方法;理解文件操作命令、目录及其操作的方法;熟练运用Linux常用命令完成对系统的基本操作。全长近两万字,欢迎关注、点赞、收藏本文足够严谨,非常适合学习与回顾Linux的常用命令一、shell与shell命令在Linux和Unix系统中,Shell</div>
                    </li>
                    <li><a href="/article/1943691469047001088.htm"
                           title="2024软件测试面试题-linux" target="_blank">2024软件测试面试题-linux</a>
                        <span class="text-muted">好事花生了</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a><a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a><a class="tag" taget="_blank" href="/search/%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">功能测试</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>1.linux和unix有哪些区别?Linux作为一个开源操作系统,具有更高的灵活性和可定制性,而Unix则更多地用于商业环境。无论是Unix还是Linux,它们都为用户提供了强大的功能和稳定的性能,满足了不同用户的需求。(1)开源性:Unix是一个封闭的商业操作系统,它使用的内核是专有的,只有少数人可以访问和修改其源代码。而Linux是一个开源操作系统,他的内核是免费开放的,任何人都可以自由地访</div>
                    </li>
                    <li><a href="/article/1943646593416753152.htm"
                           title="linux shell if字符串比较大小,linux中shell if 判断总结" target="_blank">linux shell if字符串比较大小,linux中shell if 判断总结</a>
                        <span class="text-muted">玩皮的兔子</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/if%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83%E5%A4%A7%E5%B0%8F/1.htm">if字符串比较大小</a>
                        <div>UNIXShell里面比较字符写法-eq等于;-ne不等于;-gt大于;-lt小于;-le小于等于;-ge大于等于;-z空串;-n非空串;=两个字符相等;!=两个字符不等无论什么编程语言都离不开条件判断。SHELL也不例外。大体的格式如下:iflistthendosomethinghereeliflistthendoanotherthinghereelsedosomethingelseherefi</div>
                    </li>
                    <li><a href="/article/1943602344604266496.htm"
                           title="深入理解Unix进程控制与网络通信机制" target="_blank">深入理解Unix进程控制与网络通信机制</a>
                        <span class="text-muted"></span>

                        <div>背景简介Unix系统是计算机历史上重要的操作系统之一,其设计哲学和实现细节对现代操作系统产生了深远的影响。Unix系统中的进程控制和网络通信机制是其核心功能之一。通过阅读和理解相关的系统调用和编程实践,我们可以深入探索Unix的内部工作机制。标题1:进程控制的核心——fork()和setsid()Unix系统中,每个进程都由另一个进程创建,这通常是通过fork()系统调用来完成的。fork()调用</div>
                    </li>
                    <li><a href="/article/1943602345082417152.htm"
                           title="深入理解计算机系统:原理与实践" target="_blank">深入理解计算机系统:原理与实践</a>
                        <span class="text-muted">又可乐</span>

                        <div>本文还有配套的精品资源,点击获取简介:本书是计算机科学的经典之作,分为第三版英文版和第二版中英双语版,深入讲解了计算机系统的运作原理,包括操作系统、计算机架构、编译器设计等,特别强调Linux和Unix操作系统的相关知识。读者将通过本书获得从硬件到软件的全面理解,包括CPU、内存、I/O设备、指令集、寻址模式、进程管理、内存管理、文件系统、C语言编程、编译器设计、网络基础、TCP/IP协议栈、套接</div>
                    </li>
                    <li><a href="/article/1943593764035555328.htm"
                           title="Linux 进程创建探秘:为什么 strace 看不到 fork 调用?" target="_blank">Linux 进程创建探秘:为什么 strace 看不到 fork 调用?</a>
                        <span class="text-muted">x.van</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>在学习Linux系统编程时,很多初学者会对进程创建机制感到困惑。当使用strace跟踪程序执行时,明明代码中调用了fork(),却在输出中找不到fork系统调用的踪迹,反而看到了clone()。这背后隐藏着Linux进程创建的重要机制,本文将逐步揭开这个谜团。一、Unix进程模型基础:fork与execve的黄金组合1.1进程创建的核心概念在Unix/Linux系统中,进程创建遵循一个经典模型:先</div>
                    </li>
                    <li><a href="/article/1943546864531992576.htm"
                           title="python tkinter入门详解教程_python GUI编程(Tkinter)" target="_blank">python tkinter入门详解教程_python GUI编程(Tkinter)</a>
                        <span class="text-muted">处黑</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/tkinter%E5%85%A5%E9%97%A8%E8%AF%A6%E8%A7%A3%E6%95%99%E7%A8%8B/1.htm">tkinter入门详解教程</a>
                        <div>python提供了多个图形开发界面的库,几个常用PythonGUI库如下:Tkinter:Tkinter模块("Tk接口")是Python的标准TkGUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。wxPython:wxPython是一款开源软件</div>
                    </li>
                    <li><a href="/article/1943458987982778368.htm"
                           title="Linux网络设置" target="_blank">Linux网络设置</a>
                        <span class="text-muted">ZZH1120KQ</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1Linux查看网络1.1查看网络接口配置ifconfig是一个常用的命令,用于显示或配置网络接口的参数。在某些新的Linux发行版中,ifconfig命令默认不安装,已被ip命令所取代。如果需要使用ifconfig,可以在系统中安装net-tools包。1.2ip命令IP命令是一个网络工具,用于配置和管理网络接口和路由表。它是从早期的Unix系统中的ifconfig命令发展而来的。ifconfi</div>
                    </li>
                    <li><a href="/article/1943425718482432000.htm"
                           title="【Linux系统】vim编辑器 | 编译器gcc/g++ | make/Makefile" target="_blank">【Linux系统】vim编辑器 | 编译器gcc/g++ | make/Makefile</a>
                        <span class="text-muted">Ronin305</span>
<a class="tag" taget="_blank" href="/search/Linux%E7%B3%BB%E7%BB%9F/1.htm">Linux系统</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a>
                        <div>1.vim编辑器一、历史发展与VimvsVi的区别起源与演进Vi(1976年):由BillJoy开发,嵌入BSDUnix系统,是首个面向屏幕的文本编辑器,但功能有限(如无多级撤销)。Vim(1991年):BramMoolenaar基于Amiga系统的Stevie编辑器重写,命名为"ViIMproved"(Vim),1992年发布首个公开版本。关键升级:多级撤销(Vi仅支持单次撤销)跨平台支持(Wi</div>
                    </li>
                    <li><a href="/article/1943286160004542464.htm"
                           title="Redis 客户端连接" target="_blank">Redis 客户端连接</a>
                        <span class="text-muted">wjs2024</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Redis客户端连接引言Redis作为一款高性能的内存数据库,在当今的互联网应用中扮演着重要的角色。Redis提供了多种客户端连接方式,以满足不同场景下的使用需求。本文将详细介绍Redis客户端连接的相关知识,包括连接协议、连接方式、连接配置以及连接管理等方面。Redis连接协议Redis支持多种连接协议,包括TCP/IP、Unix域套接字和SSL/TLS。以下是这些协议的简要介绍:1.TCP/I</div>
                    </li>
                    <li><a href="/article/1943065821316182016.htm"
                           title="容器和 Kubernetes 中的退出码" target="_blank">容器和 Kubernetes 中的退出码</a>
                        <span class="text-muted">riverz1227</span>
<a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>在Kubernetes中,Pod中容器的退出状态(exitCode)表示容器进程退出时的状态码。这个exitCode通常是应用程序或shell返回的标准UNIX/Linux退出码。理解常见的exitCode有助于我们快速定位容器异常退出的原因。一、常见exitCode及含义(基础类)exitCode含义说明常见原因0成功退出(正常)容器程序已完成任务或被优雅终止1一般性错误(GeneralErro</div>
                    </li>
                    <li><a href="/article/1943061788287365120.htm"
                           title="Linux/Unix 套接字Socket编程(socket基本概念,流程,流式/数据报socket,Unix domain socket示例)" target="_blank">Linux/Unix 套接字Socket编程(socket基本概念,流程,流式/数据报socket,Unix domain socket示例)</a>
                        <span class="text-muted"></span>

                        <div>套接字文章目录套接字Isocket基础1、通信domain2、通用socket地址结构体3、socket类型4、创建和关闭socket5、将socket绑定到地址6、流socket(1)流socket服务端-客户端模型(2)系统调用listen()(3)系统调用accept()(4)系统调用connect()(5)系统调用recv()(6)系统调用send()7、数据报socket(1)数据报so</div>
                    </li>
                    <li><a href="/article/1943056486137655296.htm"
                           title="Linux/Unix线程及其同步(create、wait、exit、互斥锁、条件变量、多线程)" target="_blank">Linux/Unix线程及其同步(create、wait、exit、互斥锁、条件变量、多线程)</a>
                        <span class="text-muted">JeffersonZU</span>
<a class="tag" taget="_blank" href="/search/Unix%2FLinux%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B/1.htm">Unix/Linux系统编程</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/gnu/1.htm">gnu</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>线程文章目录线程I线程基本概念1、为什么引入线程2、PthreadsII线程基本操作1、创建线程2、终止线程3、线程ID4、连接已终止线程5、线程基本操作示例III通过互斥量同步线程1、基本概念2、互斥量(Mutex)3、静态分配互斥量4、互斥量锁定与解锁5、互斥量的死锁6、互斥量类型7、动态初始化互斥量IV通过条件变量同步线程1、条件变量2、静态分配的条件变量3、初始化动态分配的条件变量4、通知</div>
                    </li>
                    <li><a href="/article/1943000145029296128.htm"
                           title="【阿里巴巴JAVA开发手册】IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用Windows格式。" target="_blank">【阿里巴巴JAVA开发手册】IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用Windows格式。</a>
                        <span class="text-muted">SunTecTec</span>
<a class="tag" taget="_blank" href="/search/Seatunnel/1.htm">Seatunnel</a><a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/seatunnel/1.htm">seatunnel</a>
                        <div>问题:当使用IDEASSH远程开发时,SFTP同步的Windows本地编辑的config/plugin_config文件文本内容中“换行符”与Unix、Linux的文件文本内容换行符字符集不一致,导致docker容器中自定义/opt/seatunnel/bin/install_plugin在执行以Windows下编辑的config/plugin_config时,遍历行读该文件内容格式提供给mvnw</div>
                    </li>
                    <li><a href="/article/1942660405440606208.htm"
                           title="【初阶学习Linux】初识Linux" target="_blank">【初阶学习Linux】初识Linux</a>
                        <span class="text-muted">鳄鱼皮坡</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.Linux背景介绍发展史:本门课程学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linuxs的发展史。要说Linux,还得从UNIX说起。UNIX发展的历史:1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。1969-1970年,AT&</div>
                    </li>
                    <li><a href="/article/1942598026824577024.htm"
                           title="探秘Linux进程间通信:ipcdump 工具" target="_blank">探秘Linux进程间通信:ipcdump 工具</a>
                        <span class="text-muted">高慈鹃Faye</span>

                        <div>探秘Linux进程间通信:ipcdump工具IPCDump项目地址:https://gitcode.com/gh_mirrors/ip/IPCDumpipcdump是一个强大的开源工具,专门用于追踪Linux系统中的进程间通信(IPC)。这个工具涵盖了管道、FIFO、信号、Unix套接字、回环网络和伪终端等多种常见的IPC机制。无论是调试多进程应用程序还是理解系统中各个组件之间的交互方式,ipcd</div>
                    </li>
                    <li><a href="/article/1942595379979677696.htm"
                           title="我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言" target="_blank">我与C语言二周目邂逅vlog—1.熟悉而又陌生-初识C语言</a>
                        <span class="text-muted">hope kc</span>
<a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>如题,在下是一名大二学生,希望改过自新,重新学习C语言(同时也在学习数据结构,希望各位大佬多多指教)1.C语言的历史C语言最初作为Unix系统的开发工具而发明的。如今成为一种高级语言,可谓C生万物2.编译与链接C语言代码是放在.c为后缀的文件里,.c为后缀的文件称为源文件,.c本身就是文本文件,无法直接运行,所以要得到最终运行的可执行程序,中间要经过编译和链接两个过程。3.VS项目的创建打开VS时</div>
                    </li>
                    <li><a href="/article/1942520870547288064.htm"
                           title="Shell脚本编程完全指南:从基础到自动化项目实战" target="_blank">Shell脚本编程完全指南:从基础到自动化项目实战</a>
                        <span class="text-muted"></span>

                        <div>一、Shell脚本基础概念Shell脚本(ShellScript)是通过文本文件编写的命令集合,由Shell命令解释器逐行解析执行。作为Unix/Linux系统的核心自动化工具,它能完成:系统管理任务自动化复杂命令序列的封装文件批量处理服务状态监控等典型应用场景:#!/bin/bash#自动备份网站目录并删除7天前的备份tar-czf/backup/web_$(date+%Y%m%d).tar.g</div>
                    </li>
                    <li><a href="/article/1942517590463148032.htm"
                           title="Unix/Linux系统上用于构建图形用户界面的核心协议和架构标准" target="_blank">Unix/Linux系统上用于构建图形用户界面的核心协议和架构标准</a>
                        <span class="text-muted">行之文</span>
<a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>目录前言一、X11/Wayland是什么?‌X11(XWindowSystem)‌Wayland‌关键差异总结‌:二、如何使用?‌1.查看当前使用的协议‌2.切换X11/Wayland(Ubuntu示例)‌3.开发适配(Qt等)‌三、3个常见用例‌四、总结建议‌前言本文介绍下Unix/Linux系统上用于构建图形用户界面的核心协议和架构标准X11和Wayland一、X11/Wayland是什么?‌</div>
                    </li>
                    <li><a href="/article/1942414490167472128.htm"
                           title="supervisord:使用RPC管理进程资源实战指南" target="_blank">supervisord:使用RPC管理进程资源实战指南</a>
                        <span class="text-muted">京脉圈</span>

                        <div>本文还有配套的精品资源,点击获取简介:supervisord是一个用于管理Unix环境下进程的开源工具,支持进程的启动、停止、重启和异常恢复。本文深入探讨supervisord及其与RPC的结合使用,涉及JAVA、MAVEN和Spring在进程管理中的应用。通过配置文件和XML-RPC接口,实现远程管理进程的便捷性,尤其适用于分布式系统和微服务架构,提高开发者对后台服务的监控和控制效率。1.sup</div>
                    </li>
                    <li><a href="/article/1942278534361837568.htm"
                           title="docker 配置" target="_blank">docker 配置</a>
                        <span class="text-muted">hitsz_syl</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>根据错误日志,关键问题是Docker无法通过systemd的socket激活机制找到监听套接字。以下是针对性解决方案:1.修改Docker服务配置cat>/etc/systemd/system/docker.service/etc/docker/daemon.json<<EOF{"hosts":["unix:///var/run/docker.sock","tcp://0.0.0.0:2375"]</div>
                    </li>
                    <li><a href="/article/1941864658256326656.htm"
                           title="ELF 文件结构详解" target="_blank">ELF 文件结构详解</a>
                        <span class="text-muted"></span>

                        <div>ELF(ExecutableandLinkableFormat)是类Unix系统(如Linux)广泛使用的一种可执行文件格式。它用于存储可执行文件、目标代码、共享库和核心转储(coredump)。本篇文档将详细介绍ELF文件的整体结构、各个部分的作用,以及如何解析ELF文件。一、ELF文件类型ELF文件按照用途可分为:可重定位文件(Relocatable):例如.o目标文件。可执行文件(Execu</div>
                    </li>
                    <li><a href="/article/1941728563023638528.htm"
                           title="docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the d" target="_blank">docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the d</a>
                        <span class="text-muted"></span>

                        <div>问题描述:docker报错CannotconnecttotheDockerdaemonatunix:///var/run/docker.sock.Isthed问题解析:报错`CannotconnecttotheDockerdaemonatunix:///var/run/docker.sock`是因为Docker客户端无法连接到Docker守护进程。这可能是由于守护进程未启动或者未正确加载所需的配置</div>
                    </li>
                    <li><a href="/article/1941724142978002944.htm"
                           title="linux/ubuntu日志管理--/dev/log 的本质与作用" target="_blank">linux/ubuntu日志管理--/dev/log 的本质与作用</a>
                        <span class="text-muted">奇妙之二进制</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%2FLinux/1.htm">嵌入式/Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>文章目录**一、基本概念****二、技术细节:UNIX域套接字****三、在不同日志系统中的角色****四、应用程序如何使用`dev/log`****五、查看和验证`/dev/log`****六、总结`/dev/log`的核心作用**一、基本概念/dev/log是一个UNIX域套接字(UnixDomainSocket),是Linux系统中实现进程间通信(IPC)的一种特殊文件。它为应用程序提供了向</div>
                    </li>
                    <li><a href="/article/1941707105136340992.htm"
                           title="Dockerfile设置时区alpine" target="_blank">Dockerfile设置时区alpine</a>
                        <span class="text-muted"></span>

                        <div>背景:最近在写golang相关代码。其中用到了时间操作的相关函数,如下:nowTime:=time.Now()nUnixEndTime:=nowTime.Unix()nHour,nMin,nSec:=nowTime.Clock()但代码跑在docker容器中,时间就取不对了。原因为容器中的时区与本机时区不一致。处理:设置docker容器的时区,Dockerfile如下设置:FROMalpineLA</div>
                    </li>
                    <li><a href="/article/1941631447911690240.htm"
                           title="java进程间通信rpc_进程间通信知识" target="_blank">java进程间通信rpc_进程间通信知识</a>
                        <span class="text-muted">文笔二杨医生</span>
<a class="tag" taget="_blank" href="/search/java%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1rpc/1.htm">java进程间通信rpc</a>
                        <div>v同主机进程间的数据交互机制:无名管道(pipe)、有名管道(fifo)、消息队列(messagqueue)、共享内存(sharememory)v同主机进程间的同步机制:信号量(semaphore)v同主机进程间的异步机制:信号(signal)v网络主机间数据交互机制:套接口(socket)5.1同一主机间的进程通信5.1.1、Unix进程通信方式5.1.1.1、无名管道无名管道是一种专门用来实现</div>
                    </li>
                    <li><a href="/article/1941218839907856384.htm"
                           title="AIX 6.1系统下Bash包的获取与安装指南" target="_blank">AIX 6.1系统下Bash包的获取与安装指南</a>
                        <span class="text-muted">十除以十等于一</span>

                        <div>本文还有配套的精品资源,点击获取简介:AIX是IBM开发的企业级Unix系统,在此环境下,Bash作为一种命令行解释器,为用户提供传统及增强的命令行操作功能。文章将详细介绍如何在AIX6.1版本中安装Bash包,包括获取软件包、验证文件、准备安装环境、执行安装命令、解决依赖、配置Bash以及测试更新等步骤。文章还强调了在更新后进行测试以及定期维护软件包的重要性。1.AIX系统介绍AIX简介AIX系</div>
                    </li>
                    <li><a href="/article/1941187084815495168.htm"
                           title="2025系统架构师---管道/过滤器架构风格" target="_blank">2025系统架构师---管道/过滤器架构风格</a>
                        <span class="text-muted">喜欢猪猪</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>引言在分布式系统与数据密集型应用主导技术演进的今天,‌管道/过滤器架构风格‌(PipesandFiltersArchitectureStyle)凭借其‌数据流驱动‌、‌组件解耦‌与‌并行处理能力‌,成为处理复杂数据转换任务的核心范式。从Unix命令行工具到实时金融交易引擎,从图像处理流水线到物联网边缘计算,管道/过滤器架构通过将系统拆分为独立处理单元(过滤器)与数据传递通道(管道),实现了功能模块</div>
                    </li>
                                <li><a href="/article/43.htm"
                                       title="集合框架" target="_blank">集合框架</a>
                                    <span class="text-muted">天子之骄</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/1.htm">集合框架</a>
                                    <div>   集合框架 
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。 
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。 
  
简单介绍: 
  
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi</div>
                                </li>
                                <li><a href="/article/170.htm"
                                       title="Table Driven(表驱动)方法实例" target="_blank">Table Driven(表驱动)方法实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/Table+Driven/1.htm">Table Driven</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E9%A9%B1%E5%8A%A8/1.htm">表驱动</a>
                                    <div>实例一:   
/**
 * 驾驶人年龄段
 * 保险行业,会对驾驶人的年龄做年龄段的区分判断
 * 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
 */
public class AgePeriodTest {

    //if...el</div>
                                </li>
                                <li><a href="/article/297.htm"
                                       title="Jquery 总结" target="_blank">Jquery 总结</a>
                                    <span class="text-muted">cuishikuan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/jquery%E6%96%B9%E6%B3%95/1.htm">jquery方法</a>
                                    <div>1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim('   Hello   ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$</div>
                                </li>
                                <li><a href="/article/424.htm"
                                       title="面向对象概念的提出" target="_blank">面向对象概念的提出</a>
                                    <span class="text-muted">麦田的设计者</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/1.htm">面向对象</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E8%BF%87%E7%A8%8B/1.htm">面向过程</a>
                                    <div>   
     面向对象中,一切都是由对象展开的,组织代码,封装数据。 
  在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。 
  
    下面就结合编程语言的发展史,聊一聊面向过程和面向对象。 
     c语言由贝尔实</div>
                                </li>
                                <li><a href="/article/551.htm"
                                       title="linux网口绑定" target="_blank">linux网口绑定</a>
                                    <span class="text-muted">被触发</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。 
 
一、环境描述 
我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。 
 
二、双网卡绑定步骤: 
2.1 修改/etc/sysconfig/network</div>
                                </li>
                                <li><a href="/article/678.htm"
                                       title="XML基础语法" target="_blank">XML基础语法</a>
                                    <span class="text-muted">肆无忌惮_</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>一、什么是XML? 
XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。 
  
二、为什么学习XML? 
用来解决程序间数据传输的格式问题 
做配置文件 
充当小型数据库 
  
三、XML与HTM</div>
                                </li>
                                <li><a href="/article/805.htm"
                                       title="为网页添加自己喜欢的字体" target="_blank">为网页添加自己喜欢的字体</a>
                                    <span class="text-muted">知了ing</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%97%E4%BD%93+%E7%A7%92%E8%A1%A8+css/1.htm">字体 秒表 css</a>
                                    <div>@font-face {
			font-family: miaobiao;//定义字体名字
			font-style:  normal;
		    font-weight: 400;
			src: url('font/DS-DIGI-e.eot');//字体文件
		} 
使用: 
 
<label style="font-size:18px;font-famil</div>
                                </li>
                                <li><a href="/article/932.htm"
                                       title="redis范围查询应用-查找IP所在城市" target="_blank">redis范围查询应用-查找IP所在城市</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>原文地址: 
http://www.tuicool.com/articles/BrURbqV 
需求 
 
根据IP找到对应的城市 
 
原来的解决方案 
 
oracle表(ip_country): 
 
 
查询IP对应的城市: 
 
1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994 
 
2. select city from ip_</div>
                                </li>
                                <li><a href="/article/1059.htm"
                                       title="输入两个整数, 计算百分比" target="_blank">输入两个整数, 计算百分比</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>	public static String getPercent(int x, int total){
		 
		double result=(x*1.0)/(total*1.0);
		System.out.println(result);
		
		
		DecimalFormat df1=new DecimalFormat("0.0000%");
		
</div>
                                </li>
                                <li><a href="/article/1186.htm"
                                       title="百合——————>怎么学习计算机语言" target="_blank">百合——————>怎么学习计算机语言</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/java+%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">java 移动开发</a>
                                    <div>    对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和</div>
                                </li>
                                <li><a href="/article/1313.htm"
                                       title="linux下tomcat开机自启动" target="_blank">linux下tomcat开机自启动</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>方法一: 
修改Tomcat/bin/startup.sh 为: 
export JAVA_HOME=/home/java1.6.0_27
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_H</div>
                                </li>
                                <li><a href="/article/1440.htm"
                                       title="spring aop实例" target="_blank">spring aop实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a>
                                    <div>1.AdviceMethods.java 
package com.bijian.study.spring.aop.schema;

public class AdviceMethods {

	public void preGreeting() {
		System.out.println("--how are you!--");
	}
} 
2.beans.x</div>
                                </li>
                                <li><a href="/article/1567.htm"
                                       title="[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization" target="_blank">[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/serialization/1.htm">serialization</a>
                                    <div>enableComplexMapKeySerialization配置项的含义 
 Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。 
  
GsonBuilder用于</div>
                                </li>
                                <li><a href="/article/1694.htm"
                                       title="【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题" target="_blank">【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a>
                                    <div>包括Spark Streaming在内的实时计算数据可靠性指的是三种级别: 
1. At most once,数据最多只能接受一次,有可能接收不到 
2. At least once, 数据至少接受一次,有可能重复接收 
3. Exactly once  数据保证被处理并且只被处理一次, 
  
具体的多读几遍http://spark.apache.org/docs/lates</div>
                                </li>
                                <li><a href="/article/1821.htm"
                                       title="shell脚本批量检测端口是否被占用脚本" target="_blank">shell脚本批量检测端口是否被占用脚本</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>#!/bin/bash
cat ports   |while read line
do#nc -z  -w 10  $line

nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then
echo $line:ok
else
echo $line:fail
fi

done

这里的ports 既可以是文件</div>
                                </li>
                                <li><a href="/article/1948.htm"
                                       title="java-2.设计包含min函数的栈" target="_blank">java-2.设计包含min函数的栈</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/ 
 

import java.util.ArrayList;
import java.util.List;


public class MinStack {

	//maybe we can use origin array rathe</div>
                                </li>
                                <li><a href="/article/2075.htm"
                                       title="Netty源码学习-ChannelHandler" target="_blank">Netty源码学习-ChannelHandler</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a>
                                    <div> 
一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享” 
例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是 
因为每一次调用decode方法时,可能数据未接收完全(incomplete), 
它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的 
 
 

p</div>
                                </li>
                                <li><a href="/article/2202.htm"
                                       title="java生成随机数" target="_blank">java生成随机数</a>
                                    <span class="text-muted">cngolon</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>方法一: 
/** 
* 生成随机数 
* @author cngolon@126.com 
* @return 
*/ 
public synchronized static String getChargeSequenceNum(String pre){ 
StringBuffer sequenceNum = new StringBuffer(); 
Date dateTime = new D</div>
                                </li>
                                <li><a href="/article/2329.htm"
                                       title="POI读写海量数据" target="_blank">POI读写海量数据</a>
                                    <span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%B7%E9%87%8F%E6%95%B0%E6%8D%AE/1.htm">海量数据</a>
                                    <div>import java.io.FileOutputStream; 
import java.io.OutputStream; 
 
import org.apache.poi.xssf.streaming.SXSSFRow; 
import org.apache.poi.xssf.streaming.SXSSFSheet; 
import org.apache.poi.xssf.streaming</div>
                                </li>
                                <li><a href="/article/2456.htm"
                                       title="mysql 日期格式化date_format详细使用" target="_blank">mysql 日期格式化date_format详细使用</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/date_format/1.htm">date_format</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2/1.htm">日期格式转换</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E5%8C%96/1.htm">日期格式化</a>
                                    <div> 
 日期转换函数的详细使用说明 
   DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n</div>
                                </li>
                                <li><a href="/article/2583.htm"
                                       title="一个程序员分享8年的开发经验" target="_blank">一个程序员分享8年的开发经验</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                                    <div>  
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。 
明确入行的目的 
很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容</div>
                                </li>
                                <li><a href="/article/2710.htm"
                                       title="android欢迎界面淡入淡出效果" target="_blank">android欢迎界面淡入淡出效果</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。 
主要代码如下: 
package com.myaibang.activity; 
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown</div>
                                </li>
                                <li><a href="/article/2837.htm"
                                       title="linux 复习笔记之常见压缩命令" target="_blank">linux 复习笔记之常见压缩命令</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/tar%E8%A7%A3%E5%8E%8B/1.htm">tar解压</a><a class="tag" taget="_blank" href="/search/linux%E7%B3%BB%E7%BB%9F%E5%B8%B8%E8%A7%81%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4/1.htm">linux系统常见压缩命令</a><a class="tag" taget="_blank" href="/search/linux%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4/1.htm">linux压缩命令</a><a class="tag" taget="_blank" href="/search/tar%E5%8E%8B%E7%BC%A9/1.htm">tar压缩</a>
                                    <div>转载请出自出处:http://eksliang.iteye.com/blog/2109693 
linux中常见压缩文件的拓展名 
*.gz   gzip程序压缩的文件
*.bz2  bzip程序压缩的文件
*.tar  tar程序打包的数据,没有经过压缩
*.tar.gz  tar程序打包后,并经过gzip程序压缩
*.tar.bz2 tar程序打包后,并经过bzip程序压缩
*.zi</div>
                                </li>
                                <li><a href="/article/2964.htm"
                                       title="Android 应用程序发送shell命令" target="_blank">Android 应用程序发送shell命令</a>
                                    <span class="text-muted">gqdy365</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!! 
 
发就发吧! 
 
一、关于shell指令: 
我们知道,shell指令是Linux里面带的</div>
                                </li>
                                <li><a href="/article/3091.htm"
                                       title="java 无损读取文本文件" target="_blank">java 无损读取文本文件</a>
                                    <span class="text-muted">hw1287789687</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6/1.htm">读取文件</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E6%8D%9F%E8%AF%BB%E5%8F%96/1.htm">无损读取</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6/1.htm">读取文本文件</a><a class="tag" taget="_blank" href="/search/charset/1.htm">charset</a>
                                    <div>java 如何无损读取文本文件呢? 
以下是有损的 
@Deprecated
	public static String getFullContent(File file, String charset) {
		BufferedReader reader = null;
		if (!file.exists()) {
			System.out.println("getFull</div>
                                </li>
                                <li><a href="/article/3218.htm"
                                       title="Firebase 相关文章索引" target="_blank">Firebase 相关文章索引</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/firebase/1.htm">firebase</a>
                                    <div>Awesome Firebase 
最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。 
Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。 
开发者只需引用一个 API 库文件就可以使用标准 RE</div>
                                </li>
                                <li><a href="/article/3345.htm"
                                       title="C++学习重点" target="_blank">C++学习重点</a>
                                    <span class="text-muted">lx.asymmetric</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                                    <div>1.c++面向对象的三个特性:封装性,继承性以及多态性。 
  
2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。 
  
3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。 
  
4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。 
&n</div>
                                </li>
                                <li><a href="/article/3472.htm"
                                       title="java bean和xml相互转换" target="_blank">java bean和xml相互转换</a>
                                    <span class="text-muted">q821424508</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/xml%E5%92%8Cbean%E8%BD%AC%E6%8D%A2/1.htm">xml和bean转换</a><a class="tag" taget="_blank" href="/search/java+bean%E5%92%8Cxml%E8%BD%AC%E6%8D%A2/1.htm">java bean和xml转换</a>
                                    <div>这几天在做微信公众号 
做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题, 
然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 , 
还是贴出来记录一下  
  
  
顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。 
  
packag</div>
                                </li>
                                <li><a href="/article/3599.htm"
                                       title="C 语言初级 位运算" target="_blank">C 语言初级 位运算</a>
                                    <span class="text-muted">1140566087</span>
<a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>  第十章 位运算    1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节    2、位运算符:  运算符 作用  ~ 按位求反  << 左移  >> 右移  & 按位与  ^ 按位异或  | 按位或   他们的优先级从高到低;    3、位运算符的运算功能:  a、按位取反:  ~01001101 = 101</div>
                                </li>
                                <li><a href="/article/3726.htm"
                                       title="14点睛Spring4.1-脚本编程" target="_blank">14点睛Spring4.1-脚本编程</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a>
                                    <div>14.1 Scripting脚本编程 
 
 脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行; 
 如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦; 
 如果我们的应用不允许重启,这在现实的情况中也是很常见的; 
 在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean; 
 spring支持脚本</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>