Python 正则表达式完整示例教程

正则表达式一般用来在文本中查找和替换字符串,再简单的文本中我们可以直接使用字符串查找,但是在大量数据和复杂结构中查找指定字符串不方便并且效率低,因此学习正则表达式显得非常有必要。

文章目录

  • 正则表达式
    • 元字符
      • 基本元字符:
      • 预定义字符
    • 使用量词
    • 贪婪量词
    • 字符分组
    • 反向引用分组
    • 非捕获分组
  • re模块介绍
    • search()和match()函数
    • match对象的方法
    • findall()和finditer()
    • 字符串分割和替换
    • 编译正则表达式

正则表达式

元字符

正则表达式字符串是有普通字符和元字符组成。
· 普通字符,是指按照字面意义表示的字符,比如abcd。
· 元字符,是预先定义好的一些特定字符,比如下面正则表达式中的 \w 以及 . ,都属于元字符。

rep = r'\w+@mail2\.sysu\.edu\.cn' # 匹配域名为mail2.sysu.edu.cn的邮箱

元字符是用来描述其他字符的特殊字符,它是由基本元字符+普通元字符构成。

基本元字符:

字符 说明
\ 转义字符
. 表示任意一个字符
+ 表示重复一次或多次
* 表示出现零次或多次
| 表示或关系,比如A
{ } 定义量词
[ ] 定义字符类
( ) 定义分组
^ 表示取反,或匹配一行的开始
$ 匹配一行的结束
- 表示区间

\ 转义符: 比如上面的 \. ,实际上是为了匹配单个 . 符号,但是 . 本身又作为元字符表示任意一个字符,因此遇到这种情况需要转义。
^ 和 $: 这个时候不仅要求匹配字符串,而且要求字符串出现在文本的开始或者结尾,例如:

text = 'My email address is [email protected]'
rep1 = r'\w+@mail2\.sysu\.edu\.cn' # r表示原始字符,避免在正则表达式中输入转义
rep2 = r'^\w+@mail2\.sysu\.edu\.cn$' # 添加了^和$,对开头结尾有要求
# \w表示任意一个字母或数字  +表示出现一次或多次

像上面这段文本,需要将邮箱提取出来的话,只能使用rep1,因为rep2要求匹配的字符串是一行的开头和结尾,只有在邮箱是单独一行才能提取出来。
字符类:字符类用中括号括起来,只要其中一个字符满足条件即可,例如:

text1 = 'I like MATLAB and Python.'
text2 = 'I like MATLAB and python.'
rep = r'[Pp]ython'  # 等效于 python1|Python
# 上述两个文本中的python都可以用下面的正则表达式匹配出来。

^,取反符:有时候,就不需要某些字符出现,可以用取反符,例如我们需要找到非数字的字符:rep = r'^[0123456789]',这个正则表达式就可以匹配一个非数字的字符。
-,表示区间:比如上面的[0123456789],可以直接写成[0-9],这个区间可以是分段的,比如[0-35-9],这个就表示除4以外的数字。

预定义字符

字符 说明
\. 匹配 .
\ 匹配\
\n 匹配换行
\r 匹配回车
\f 匹配翻页符
\t 匹配水平制表符
\v 匹配垂直制表符
\s 匹配一个空格符,等价于[\t\n\r\f\v]
\S 匹配一个非空格符,等价于[^\s]
\d 匹配一个数字,等价于[0-9]
\D 匹配一个非数字,等价于[^\d]
\w 匹配任何语言单词字符、数字、下划线等,编码为ASCII的时候只能是英语
\W 等价于[^\w]

使用量词

字符 说明
出现零次或一次
* 出现零次或多次\
+ 出现一次或多次
{n} 出现n次
{n , } 至少出现n次
{n , m} 出现n次到m次之间

贪婪量词

默认情况都是匹配的字符串越多越好,有时候要尽可能少的匹配,就需要在后面加?,表示懒惰匹配,我们具体写一个例子:

import re
text = '123456789'
rep1 = r'\d{5,8}' # 匹配12345678
m = re.search(rep1,text)
print(m)
rep2 = r'\d{5,8}?' # 匹配12345
m = re.search(rep2,text)
print(m)

Python 正则表达式完整示例教程_第1张图片

字符分组

字符分组就是将一个子字符串可看成一个整体,进行匹配,举个例子:

import re
text = '12312311aa'
rep = r'(123)+'  # 123出现一次或多次
rep1 = r'123+'  # 3出现一次或多次
m = re.search(rep1,text)
print(m)
m = re.search(rep2,text)
print(m)

Python 正则表达式完整示例教程_第2张图片
这样有什么好处呢?我们举一个具体的例子,提取一个电话号码的区号和号码:

import re
tel = '0715-53566663'
rep = r'(\d{3,5})-(\d{6,9})'
m = re.search(rep,tel)
print(m)
print(m.group()) # 返回匹配的所有字符串
print(m.groups()) # 返回匹配所有字符串,用元组装起来

Python 正则表达式完整示例教程_第3张图片
这样,可以将区号和电话号码有效分开,除此之外还可以给分组命名:

import re
tel = '0715-53566663'
rep = r'(?P\d{3,5})-(?P\d{6,9})'
m = re.search(rep,tel)
print(m)
print(m.group()) # 返回匹配的所有字符串
print(m.groups()) # 返回匹配所有字符串,用元组装起来
print(m.group('area_code'))  # 通过分组名称来引用
print(m.group('Phone_Number'))

Python 正则表达式完整示例教程_第4张图片

反向引用分组

我们在爬取网页的时候,常常会出现标签,标签的开始和结束应该是一致的,下面举例:

import re

text1 = 'Python Code'
text2 = 'Python Code</text>'</span>  <span class="token comment"># 这种情况是我们不想要的</span>
rep1 <span class="token operator">=</span> r<span class="token string">'<(\w+)>.*</(\w+)>'</span>
m <span class="token operator">=</span> re.search<span class="token punctuation">(</span>rep1,text1<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span>
m <span class="token operator">=</span> re.search<span class="token punctuation">(</span>rep1,text2<span class="token punctuation">)</span> <span class="token comment"># 同样匹配了</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/d6fe51ffddda450db5e5455102b9203b.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第5张图片" src="http://img.e-com-net.com/image/info8/d6fe51ffddda450db5e5455102b9203b.png" width="722" height="159" style="border:1px solid black;"></a><br> 对上面的代码进行改进:</p> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re

text1 <span class="token operator">=</span> <span class="token string">'<title>Python Code'
text2 = 'Python Code</text>'</span>
rep1 <span class="token operator">=</span> r<span class="token string">'<(\w+)>.*</\1>'</span> <span class="token comment"># 反向引用在这里,用 \1 代替了(\w+)这个分组,表示要和前面匹配的分组相同,1代表的是分组序号</span>
m <span class="token operator">=</span> re.search<span class="token punctuation">(</span>rep1,text1<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span>
m <span class="token operator">=</span> re.search<span class="token punctuation">(</span>rep1,text2<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/f38e0027d6a34432b3c684f79a2afb11.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第6张图片" src="http://img.e-com-net.com/image/info8/f38e0027d6a34432b3c684f79a2afb11.png" width="775" height="164" style="border:1px solid black;"></a></p> 
  <h2>非捕获分组</h2> 
  <p>前面讲都是捕获分组,这些匹配的结果都被暂时存放在内存中,但是有时候我们只需要一些分组进行辅助匹配,但是不想保存,就可以使用非捕获分组,举一个例子,匹配.jpg文件名:</p> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re

text <span class="token operator">=</span> <span class="token string">'im1.jpg,im2.jpg,im3.png'</span>
rep <span class="token operator">=</span> r<span class="token string">'\w+(.jpg)'</span>  <span class="token punctuation">(</span>.jpg<span class="token punctuation">)</span>为捕获分组
m <span class="token operator">=</span> re.findall<span class="token punctuation">(</span>rep,text<span class="token punctuation">)</span>  <span class="token comment"># 找出所有匹配的结果</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span>
rep <span class="token operator">=</span> r<span class="token string">'\w+(?:.jpg)'</span>  <span class="token punctuation">(</span>?:.jpg<span class="token punctuation">)</span>为非捕获分组
m <span class="token operator">=</span> re.findall<span class="token punctuation">(</span>rep,text<span class="token punctuation">)</span>  
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/81a3b94b036d4235893a9dcbd2e7b741.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第7张图片" src="http://img.e-com-net.com/image/info8/81a3b94b036d4235893a9dcbd2e7b741.png" width="496" height="129" style="border:1px solid black;"></a><br> 使用捕获分组的时候,只会讲捕获分组里面的打印出来,这并不是我们所希望的。</p> 
  <h1>re模块介绍</h1> 
  <p>re 模块是python提供的关于正则表达式的模块,可以直接使用,下面介绍里面的主要函数。</p> 
  <h2>search()和match()函数</h2> 
  <p>search()和match()函数在使用上非常相似,区别如下:</p> 
  <ul> 
   <li>search从字符串中查找,返回第一个匹配对象</li> 
   <li>match从字符串开头开始匹配内容,返回匹配对象</li> 
  </ul> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re

text <span class="token operator">=</span> <span class="token string">'My email address is sishiwu@mail2.sysu.edu.cn.'</span>
rep <span class="token operator">=</span> r<span class="token string">'\w+@mail2\.sysu\.edu\.cn'</span> <span class="token comment"># 匹配域名为mail2.sysu.edu.cn的邮箱</span>
m <span class="token operator">=</span> re.search<span class="token punctuation">(</span>rep,text<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span>
m <span class="token operator">=</span> re.match<span class="token punctuation">(</span>rep,text<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/0cd8565a982d450390d9080db7ceec5b.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第8张图片" src="http://img.e-com-net.com/image/info8/0cd8565a982d450390d9080db7ceec5b.png" width="693" height="160" style="border:1px solid black;"></a><br> match与我们之前提到的 ^ 和 $ 的作用相似,一般用于验证结果。</p> 
  <h2>match对象的方法</h2> 
  <p>匹配结果返回的都是一个match对象,它常用的方法包括:group(),groups(),start(),end(),span().</p> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re

text <span class="token operator">=</span> <span class="token string">'My email address is sishiwu@mail2.sysu.edu.cn.'</span>
rep <span class="token operator">=</span> r<span class="token string">'(\w+@mail2\.sysu\.edu\.cn)'</span> <span class="token comment"># 匹配域名为mail2.sysu.edu.cn的邮箱</span>
m <span class="token operator">=</span> re.search<span class="token punctuation">(</span>rep,text<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m.groups<span class="token punctuation">(</span><span class="token punctuation">))</span>
print<span class="token punctuation">(</span>m.group<span class="token punctuation">(</span><span class="token punctuation">))</span>
print<span class="token punctuation">(</span>m.start<span class="token punctuation">(</span><span class="token punctuation">))</span>
print<span class="token punctuation">(</span>m.end<span class="token punctuation">(</span><span class="token punctuation">))</span>
print<span class="token punctuation">(</span>m.span<span class="token punctuation">(</span><span class="token punctuation">))</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/26a3918c4a444b76997008a382c7fcf3.jpg" target="_blank"><img alt="Python 正则表达式完整示例教程_第9张图片" src="http://img.e-com-net.com/image/info8/26a3918c4a444b76997008a382c7fcf3.jpg" width="650" height="237" style="border:1px solid black;"></a></p> 
  <h2>findall()和finditer()</h2> 
  <h2>字符串分割和替换</h2> 
  <p>分割 split()<br> re.split(pattern, string, count(可选) , flags (可选))<br> pattern是正则表达式 , string是字符串, count是最大分割次数, flags是编译标志</p> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re
p <span class="token operator">=</span> r<span class="token string">'\d+'</span> <span class="token comment"># 表示至少一个数字</span>
text <span class="token operator">=</span> <span class="token string">'AB12CD23EF'</span>
m <span class="token operator">=</span> re.split<span class="token punctuation">(</span>p,text<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/b469468c6af141a1b84292bdb8489eec.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第10张图片" src="http://img.e-com-net.com/image/info8/b469468c6af141a1b84292bdb8489eec.png" width="326" height="120" style="border:1px solid black;"></a><br> 替换 sub()<br> re.sub(pattern, sym, text, count, flags)<br> pattern是正则表达式, sym是替换的字符串, text是查找的文本, count替换的次数, flags编译标志</p> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re
p <span class="token operator">=</span> r<span class="token string">'\d+'</span> <span class="token comment"># 表示至少一个数字</span>
text <span class="token operator">=</span> <span class="token string">'AB12CD23EF'</span>
m <span class="token operator">=</span> re.sub<span class="token punctuation">(</span>p, <span class="token string">'#'</span>, text<span class="token punctuation">)</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/ad634b306a5e48129a9884da448e4716.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第11张图片" src="http://img.e-com-net.com/image/info8/ad634b306a5e48129a9884da448e4716.png" width="404" height="158" style="border:1px solid black;"></a></p> 
  <h2>编译正则表达式</h2> 
  <p>为了能够重复使用正则表达式,并且提高程序运行速度,可以使用编译后正则表达式,返回一个regex对象。</p> 
  <pre><code class="prism language-bash"><span class="token function">import</span> re
p <span class="token operator">=</span> r<span class="token string">'\d+'</span> <span class="token comment"># 表示至少一个数字</span>
rep <span class="token operator">=</span> re.compile<span class="token punctuation">(</span>p<span class="token punctuation">)</span>  <span class="token comment"># 注意</span>
text <span class="token operator">=</span> <span class="token string">'AB12CD23EF'</span>
m <span class="token operator">=</span> rep.sub<span class="token punctuation">(</span><span class="token string">'#'</span>, text<span class="token punctuation">)</span>  <span class="token comment"># 注意,虽然函数名一样,但是一个是rep对象的方法,一个是re模块中的函数</span>
<span class="token comment"># 输入参数也变化了</span>
print<span class="token punctuation">(</span>m<span class="token punctuation">)</span></code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/46c6ff71fe344891beb6f580bf90eb2b.png" target="_blank"><img alt="Python 正则表达式完整示例教程_第12张图片" src="http://img.e-com-net.com/image/info8/46c6ff71fe344891beb6f580bf90eb2b.png" width="506" height="179" style="border:1px solid black;"></a><br> 其使用方法都是一样的,效果也相同。</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1276205044642889728"></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">你可能感兴趣的:(Python笔记)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1893004292609077248.htm"
                           title="python笔记:高级特性-迭代" target="_blank">python笔记:高级特性-迭代</a>
                        <span class="text-muted">zyckhuntoria</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/foundation/1.htm">foundation</a>
                        <div>目录一、判断是否为迭代对象二、对dict进行迭代的三种情况2.1对dict中的key进行迭代2.2对dict中的value进行迭代2.3对dict中的key,value进行迭代三、对字符串进行迭代四、对list进行迭代五、练习迭代iterable(顺便一提..iterature文学)一、判断是否为迭代对象使用collections模块的Ierable类型进行判断,方法如下fromcollectio</div>
                    </li>
                    <li><a href="/article/1891891171597283328.htm"
                           title="Python----数据结构----链表----双向链表" target="_blank">Python----数据结构----链表----双向链表</a>
                        <span class="text-muted">一盏偏灯</span>
<a class="tag" taget="_blank" href="/search/Python%E5%AD%A6%E4%B9%A0/1.htm">Python学习</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%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>Python学习之路,点击有全套Python笔记双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。步骤:is_empty()链表是否为空length()链表长度travel()遍历链表add(item)链表头部添加append(item)链表尾部添加insert</div>
                    </li>
                    <li><a href="/article/1887846372099551232.htm"
                           title="attrs学习" target="_blank">attrs学习</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%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>转载自:Python面向对象编程OOP(四)写类神器:attrs-阿尔法的Python笔记-SegmentFault思否使用attrs解放双手大家好,这一期我想和大家分享一个OOP编程的高效神器:attrs库首先我们来介绍下attrs这个库,其官方的介绍如下:attrs是这样的一个Python工具包,它能将你从繁综复杂的实现上解脱出来,享受编写Python类的快乐。它的目标就是在不减慢你编程速度的</div>
                    </li>
                    <li><a href="/article/1886950230511906816.htm"
                           title="pythontkinter键盘_Python笔记之Tkinter(Key键盘事件)" target="_blank">pythontkinter键盘_Python笔记之Tkinter(Key键盘事件)</a>
                        <span class="text-muted">weixin_39787594</span>
<a class="tag" taget="_blank" href="/search/pythontkinter%E9%94%AE%E7%9B%98/1.htm">pythontkinter键盘</a>
                        <div>一、目标学习Tkinter制作窗体软件的基础,触发键盘事件。响应特殊按键事件左shift按键响应右shift按键响应F2按键相应,F3,F4.....回车按键相应退格删除键相应二、试验平台windows7,python3.7三、直接上代码importtkinterfromtkinterimportttkdefxFunc1(event):print(f"事件触发键盘输入:{event.char},对</div>
                    </li>
                    <li><a href="/article/1886816476640374784.htm"
                           title="python笔记:format output" target="_blank">python笔记:format output</a>
                        <span class="text-muted">鬼上身的秋天</span>

                        <div>#printstringprint('thisiswhat:%s'%('Nicetest'))#printintegerprint('thefruitis%dyuan'%(100))#printfloatprint('thefruitis%.3fyuan'%(100))#printplacehoderprint('thefruitnameis%10s,weightis%5dkg,priceis%5</div>
                    </li>
                    <li><a href="/article/1886671723525369856.htm"
                           title="蓝桥杯算法之排序算法" target="_blank">蓝桥杯算法之排序算法</a>
                        <span class="text-muted">炼丹代师</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E4%B8%93%E6%A0%8F/1.htm">算法专栏</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a>
                        <div>提示:本系列博客是对bilibili算法课程《算法很美》的python笔记总结,其中吸收不少优秀博主的原创博客,由于本人总结未附上对应的博客地址,若发现本文博客内容与您发表的博客内容吻合,请您联系作者,给您添加引用地址。bilibili课程地址蓝桥杯算法之排序前言1.冒泡排序1)原理介绍2)代码实例2.选择排序1)原理介绍2)代码实例总结前言排序算法虽然已经内置在python函数,但其排序原理的学</div>
                    </li>
                    <li><a href="/article/1885643895958728704.htm"
                           title="Python笔记 之 collections.deque双端队列" target="_blank">Python笔记 之 collections.deque双端队列</a>
                        <span class="text-muted">一起种梧桐吧</span>
<a class="tag" taget="_blank" href="/search/Python%E7%AC%94%E8%AE%B0/1.htm">Python笔记</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E8%A1%A8/1.htm">列表</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>deque简介deque是一个双端列表,如果要经常从两端操作数据,选择deque就比较好,如果要实现随机访问,还是建议使用列表list.collections.deque官方说明文档操作简介append()append(x)Addxtotherightsideofthedeque.importcollectionsmydeque=collections.deque(range(3),maxlen=</div>
                    </li>
                    <li><a href="/article/1885429990082801664.htm"
                           title="python入门教程jupyter_Jupyter Notebooks的安装和使用介绍" target="_blank">python入门教程jupyter_Jupyter Notebooks的安装和使用介绍</a>
                        <span class="text-muted">weixin_39953618</span>

                        <div>最近又开始重新学习Python,学习中使用到了一款编辑器JupyterNotebooks,非常想安利给初学python的同学。注:本文内容仅针对windows环境下安装和配置JupyterNotebooks。1.JupyterNotebooks简介国际惯例还是来一段官方的介绍:Notebooks其实就像是你的python笔记本一样,不仅可以运行书写的python代码,同时还支持markdown格式</div>
                    </li>
                    <li><a href="/article/1882779152684216320.htm"
                           title="python笔记(3)(re库和pandas库)" target="_blank">python笔记(3)(re库和pandas库)</a>
                        <span class="text-muted">Techer_Y</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>参考链接:Python正则表达式|菜鸟教程(runoob.com)1、re库,python正则表达式正则表达式是一个特殊的字符序列它能帮助你检查一个字符串是否与某种模式匹配。re模块使python语言拥有全部的正则表达式功能。re.match尝试从字符串起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。re.match(pattern,string,flags=0)</div>
                    </li>
                    <li><a href="/article/1882505108797845504.htm"
                           title="Python笔记" target="_blank">Python笔记</a>
                        <span class="text-muted">Lucky_1129</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>Python笔记1.Python数组和列表的区别1.创建方式不同列表可以直接创建,数组需要引用numpy包2.存储对象不同列表可以存储任何的对象,包括数字,字符串,数组,字典等等数组只能存储单一的数据类型3.运算方式不同数组可以进行四则运算,列表只能使用加号进行拼接,拼接之后形成一个新的列表4.运算效率不同array数组是为了精确便捷的处理庞大的类似的数据而产生的,他的存储效率要比列表快着很多2.</div>
                    </li>
                    <li><a href="/article/1882423403881754624.htm"
                           title="Python笔记1.2(open、logging、os、shutil、glob、decode、encode、pickle、tqdm)" target="_blank">Python笔记1.2(open、logging、os、shutil、glob、decode、encode、pickle、tqdm)</a>
                        <span class="text-muted">qq742234984</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>Python笔记1.1(datetime、argparse、sys、overwrite、eval、json、os、zfill、endswith、traceback、深浅拷贝)Python笔记2(函数参数、面向对象、装饰器、高级函数、捕获异常、dir)Python笔记1.214、withopen()asfile和open()参数详解15、logging日志的等级logging.basicConfig</div>
                    </li>
                    <li><a href="/article/1882132380400021504.htm"
                           title="Python笔记#边学边记笔记#文件和异常" target="_blank">Python笔记#边学边记笔记#文件和异常</a>
                        <span class="text-muted">月吟荧静</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>一、从文件读取数据1.1读取整个文件pi.digits.txt3.141592653589793238462643383279file_reader.pywithopen("pi_digit.txt")asfile_0:contents=file_0.read()print(contents)3.141592653589793238462643383279withopen("pi_digit.tx</div>
                    </li>
                    <li><a href="/article/1881616971884195840.htm"
                           title="python笔记(一)获取当前目录路径和文件(抄录)" target="_blank">python笔记(一)获取当前目录路径和文件(抄录)</a>
                        <span class="text-muted">z-pan</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>一、获取当前路径1、使用sys.argv[0]importsysprintsys.argv[0]#输出#本地路径2、os模块importosprintos.getcwd()#获取当前工作目录路径printos.path.abspath('.')#获取当前工作目录路径printos.path.abspath('test.txt')#获取当前目录文件下的工作目录路径printos.path.abspa</div>
                    </li>
                    <li><a href="/article/1880260499887681536.htm"
                           title="Python笔记#边学边记笔记#字典" target="_blank">Python笔记#边学边记笔记#字典</a>
                        <span class="text-muted">姜姜465</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>一、使用字典1.1访问字典中的值字典使用花括号;键与值之间用冒号连接;各个键-值对之间用逗号分隔。alien_0={"color":"green","point":5}print(alien_0["color"])print(alien_0["point"])green51.2添加键-值对alien_0={"color":"green","point":5}print(alien_0)alien_</div>
                    </li>
                    <li><a href="/article/1834872645812842496.htm"
                           title="Python笔记6----数组" target="_blank">Python笔记6----数组</a>
                        <span class="text-muted">weixin_34293911</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/c%2Fc%2B%2B/1.htm">c/c++</a>
                        <div>1、Python中的数组形式:用list和tuple等数据结构表示数组一维数组:list=[1,2,3,4]二维数组:list=[[1,2,3],[4,5,6],[7,8,9]]用array模块:array模块需要加载,而且运用的较少通过array函数创建数组(数组中的元素可以不是同一种类型),array.array('B',range(5))>>array('B',[1,2,3,4,5])提供a</div>
                    </li>
                    <li><a href="/article/1834670070010310656.htm"
                           title="【代码随想录python笔记整理】第一课 · A+B 问题1" target="_blank">【代码随想录python笔记整理】第一课 · A+B 问题1</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/%E5%88%B7%E9%A2%98%E7%AC%94%E8%AE%B0/1.htm">刷题笔记</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。一、数据类型Python中有一些常见数据类型,包括数字类型,布尔类型,字符串类型。其中,数字类型又分为整数类型和浮点数类型。整数类型-1、0、1浮点数类型3.14布尔类型True=1;False=0字符串类型'Hello'、"Helllo"二、输入输出1、输入:输入采用input()函数,再将变量与其建立联系。在inp</div>
                    </li>
                    <li><a href="/article/1833480808011231232.htm"
                           title="【Python笔记】向量:@classmethod与 @staticmethod。零基础" target="_blank">【Python笔记】向量:@classmethod与 @staticmethod。零基础</a>
                        <span class="text-muted">万物皆可.C</span>
<a class="tag" taget="_blank" href="/search/Python%E7%AC%94%E8%AE%B0/1.htm">Python笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>类成员比较@classmethod与@staticmethod共同点:两个都是装饰器,装饰的成员函数可以通过类名.方法名(…)来调用区别:最显著的特点是classmethod需要传递一个参数cls,而staticmethod不需要。因此可以访问、修改类的属性,类的方法,实例化对象等,避免硬编码;而staticmethod不行,classmethod可以判断出自己是通过基类被调用,还是通过某个子类被</div>
                    </li>
                    <li><a href="/article/1833348868046155776.htm"
                           title="python学习笔记08_赋值运算、逻辑运算、表达式、短路原则" target="_blank">python学习笔记08_赋值运算、逻辑运算、表达式、短路原则</a>
                        <span class="text-muted">flamingocc</span>

                        <div>python笔记081.赋值运算符num+=1等价于num=num+1num-=1等价于num=num-1num*=1等价于num=num*1num/=1等价于num=num/1num//2等价于num=num//2num%=2等价于num/2的余数num**2等价于num=num*num2.逻辑运算符逻辑运算符包含:not、and、or2.1and的用法:(且、并且)写法:条件1and条件2eg</div>
                    </li>
                    <li><a href="/article/1764314377588137984.htm"
                           title="2.25python笔记 高阶编程" target="_blank">2.25python笔记 高阶编程</a>
                        <span class="text-muted">13351</span>

                        <div>@[TOC](2.25学堂在线python学习笔记高阶编程)#高阶编程1.利用二分法查找一个字符是否在某个字符串当中基线条件:当s=''时,返回False当len(s)=1且s==char时返回True当len(s)>1且s[mid]>char时,返回isIn(char,s[:mid])否则当s[mid]1:ifs[mid]>char:print(s)returnisIn(char,s[:mid]</div>
                    </li>
                    <li><a href="/article/1761739643272912896.htm"
                           title="Python笔记五之正则表达式" target="_blank">Python笔记五之正则表达式</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFpython%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">后端python正则表达式</a>
                        <div>本文首发于公众号:Hunter后端原文链接:Python笔记五之正则表达式这一篇笔记介绍在Python里使用正则表达式。正则表达式,RegularExpression,可用于在一个目标字符串里对于指定模式的字符进行查找、替换、分割等操作。比如,判断某个字符串里是否都是数字,或者是否包含指定字符串,又或者更直接的例子是判断电话号码或者邮箱是否合法等。这一篇笔记里,我们将先介绍一个正则表达式的函数,并</div>
                    </li>
                    <li><a href="/article/1757562555796045824.htm"
                           title="python笔记——jieba库" target="_blank">python笔记——jieba库</a>
                        <span class="text-muted">Toby不写代码</span>
<a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0/1.htm">python学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>文章目录一.概述二.jieba库使用三.实例一.概述1.jieba库概述jieba库是一个重要的第三方中文分词函数库,不是安装包自带的,需要通过pip指令安装pip3installjieba二.jieba库使用1.库函数jieba.cut(s)——精确模式,返回一个可迭代数据类型jieba.cut(s,cut_all=True)——全模式,输出文本s中可能的单词jieba.cut_for_sear</div>
                    </li>
                    <li><a href="/article/1757023973977112576.htm"
                           title="[韩顺平]python笔记" target="_blank">[韩顺平]python笔记</a>
                        <span class="text-muted">超级用户 root</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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>AI工程师、运维工程师python排名逐年上升,为什么?python对大数据分析、人工智能中关键的机器学习、深度学习都提供有力的支持Python支持最庞大的代码库,功能超强数据分析:numpy/pandas/os机器学习:tensorflow/scikit-learn/theano爬虫:urllib/reques/bs4/scrapy网页开发:Django/falsk/web运维:saltstac</div>
                    </li>
                    <li><a href="/article/1756946275527311360.htm"
                           title="一文教会你,Python数据如何存储" target="_blank">一文教会你,Python数据如何存储</a>
                        <span class="text-muted">学Python的小瑜</span>

                        <div>转载自志斌的Python笔记3月28日今天呢,小瑜专门写一篇关于数据存储的文章,让大家清楚的了解数据存储的方式,以及在什么情况下,使用什么存储方式。本文将分三个方面来介绍数据存储:1.文件存储、2.关系型数据库存储、3.非关系型数据库存储。废话少说,让我们直接来看正文吧!一、文件存储1.1TXT文本将数据存储到TXT文本的操作十分简单,在之前文章已经简单介绍过,而且TXT文本基本兼容任何平台,但是</div>
                    </li>
                    <li><a href="/article/1756730246423396352.htm"
                           title="Python笔记——绘制雷达图" target="_blank">Python笔记——绘制雷达图</a>
                        <span class="text-muted">没昔</span>

                        <div>代码#雷达图frompyechartsimportoptionsasoptsfrompyecharts.chartsimportPage,Radar#两组数据的对比v1=[[4300,10000,28000,35000,50000,19000]]v2=[[5000,14000,28000,31000,42000,21000]]#返回Radar图表对象数据处理完整之后通过雷达对象进行转换defrad</div>
                    </li>
                    <li><a href="/article/1756481301470265344.htm"
                           title="Delphi 程序直接调用 Python 的函数" target="_blank">Delphi 程序直接调用 Python 的函数</a>
                        <span class="text-muted">pcplayer</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在本系列的第一篇博客文章:Delphi程序员初学Python笔记-CSDN博客在这篇文章里面,我提到,一个Python的函数,我用Delphi无法直接调用它,所以我对它做了一个Python的包装。原因是,那是我第一次学习使用Python4Delphi这个控件。那时候要执行Python代码,我只会使用PythonEngine1.ExecStrings(Python代码)这样的方式。这样做,就是在De</div>
                    </li>
                    <li><a href="/article/1756233138775801856.htm"
                           title="python小结" target="_blank">python小结</a>
                        <span class="text-muted">张叁疯_</span>

                        <div>本周整理了python学习笔记复习旧的,顺便整理新的,笔记分享在了有道云链接如下阿龙的python笔记都是基础知识,希望在今后能成体系,根据案例学python</div>
                    </li>
                    <li><a href="/article/1755794917600280576.htm"
                           title="大学python笔记整理_python 笔记整理" target="_blank">大学python笔记整理_python 笔记整理</a>
                        <span class="text-muted">余虹的眼</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%AD%A6python%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86/1.htm">大学python笔记整理</a>
                        <div>Pythonisdigit()方法检测字符串是否只由数字组成。Pythonint()函数用于将一个字符串或数字转换为整型。判断字符、列表、元组等的长度或项目个数:Pythonlen()。enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。(把下标取出来)python中单引号和双引号使用完全相同。文件操作:内</div>
                    </li>
                    <li><a href="/article/1755794533733384192.htm"
                           title="Python笔记(十)" target="_blank">Python笔记(十)</a>
                        <span class="text-muted">Lzehui</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>文件编码概念编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑编码有许多种,我们最常用的是UTF—8编码文件的读取对文件进行操作的基本步骤,大概可以分为三步1、打开文件2、读写文件3、关闭文件注意:可以只打开和关闭文件,不进行任何读写open()打开函数在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下open(name,mode,encoding</div>
                    </li>
                    <li><a href="/article/1755794533297176576.htm"
                           title="Python笔记(八)" target="_blank">Python笔记(八)</a>
                        <span class="text-muted">Lzehui</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>数据容器:dict(字典、映射)字典的定义字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法: #定义字典字面量 {key:value,key:value,……,key:value} #定义字典字面量 mt_dict={key:value,key:value,……,key:value} #定义空字典 my_dict={}   #空字典定义方式1 my_dict={}   #空字典</div>
                    </li>
                    <li><a href="/article/1755794405907775488.htm"
                           title="Python笔记(三)" target="_blank">Python笔记(三)</a>
                        <span class="text-muted">Lzehui</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>while循环的基础应用语法:while条件:条件满足时,做的事情 i=0 whilei<100:  print("循环100次")  i+=11.while的条件需要得到布尔类型,True表示继续循环,False表示结束循环2.需要设置循环终止的条件,如i+=1配合i<100,就能保证100次后停止,否则将无限循环3.空格缩进,冒号和if判断一样,都需要设置while循环的嵌套使用基础语法:wh</div>
                    </li>
                                <li><a href="/article/24.htm"
                                       title="tomcat基础与部署发布" target="_blank">tomcat基础与部署发布</a>
                                    <span class="text-muted">暗黑小菠萝</span>
<a class="tag" taget="_blank" href="/search/Tomcat+java+web/1.htm">Tomcat java web</a>
                                    <div>从51cto搬家了,以后会更新在这里方便自己查看。 
做项目一直用tomcat,都是配置到eclipse中使用,这几天有时间整理一下使用心得,有一些自己配置遇到的细节问题。 
Tomcat:一个Servlets和JSP页面的容器,以提供网站服务。 
一、Tomcat安装 
    安装方式:①运行.exe安装包 
     &n</div>
                                </li>
                                <li><a href="/article/151.htm"
                                       title="网站架构发展的过程" target="_blank">网站架构发展的过程</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E6%9E%B6%E6%9E%84/1.htm">网站架构</a>
                                    <div>1.初始阶段网站架构:应用程序、数据库、文件等资源在同一个服务器上 
2.应用服务和数据服务分离:应用服务器、数据库服务器、文件服务器 
3.使用缓存改善网站性能:为应用服务器提供本地缓存,但受限于应用服务器的内存容量,可以使用专门的缓存服务器,提供分布式缓存服务器架构 
4.使用应用服务器集群改善网站的并发处理能力:使用负载均衡调度服务器,将来自客户端浏览器的访问请求分发到应用服务器集群中的任何</div>
                                </li>
                                <li><a href="/article/278.htm"
                                       title="[信息与安全]数据库的备份问题" target="_blank">[信息与安全]数据库的备份问题</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                                    <div> 
 
      如果你们建设的信息系统是采用中心-分支的模式,那么这里有一个问题 
  
 如果你的数据来自中心数据库,那么中心数据库如果出现故障,你的分支机构的数据如何保证安全呢? 
 
   是否应该在这种信息系统结构的基础上进行改造,容许分支机构的信息系统也备份一个中心数据库的文件呢? 
 
 &n</div>
                                </li>
                                <li><a href="/article/405.htm"
                                       title="使用maven tomcat plugin插件debug关联源代码" target="_blank">使用maven tomcat plugin插件debug关联源代码</a>
                                    <span class="text-muted">商人shang</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/debug/1.htm">debug</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E7%9C%8B%E6%BA%90%E7%A0%81/1.htm">查看源码</a><a class="tag" taget="_blank" href="/search/tomcat-plugin/1.htm">tomcat-plugin</a>
                                    <div>*首先需要配置好'''maven-tomcat7-plugin''',参见[[Maven开发Web项目]]的'''Tomcat'''部分。 
*配置好后,在[[Eclipse]]中打开'''Debug Configurations'''界面,在'''Maven Build'''项下新建当前工程的调试。在'''Main'''选项卡中点击'''Browse Workspace...'''选择需要开发的</div>
                                </li>
                                <li><a href="/article/532.htm"
                                       title="大访问量高并发" target="_blank">大访问量高并发</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%AE%BF%E9%97%AE%E9%87%8F%E9%AB%98%E5%B9%B6%E5%8F%91/1.htm">大访问量高并发</a>
                                    <div>大访问量高并发的网站主要压力还是在于数据库的操作上,尽量避免频繁的请求数据库。下面简 
 
要列出几点解决方案: 
 
01、优化你的代码和查询语句,合理使用索引 
 
02、使用缓存技术例如memcache、ecache将不经常变化的数据放入缓存之中 
 
03、采用服务器集群、负载均衡分担大访问量高并发压力 
 
04、数据读写分离 
 
05、合理选用框架,合理架构(推荐分布式架构)。 
 </div>
                                </li>
                                <li><a href="/article/659.htm"
                                       title="cache 服务器" target="_blank">cache 服务器</a>
                                    <span class="text-muted">小猪猪08</span>
<a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a>
                                    <div>Cache   即高速缓存.那么cache是怎么样提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期开发的项目中有所体会,写下来当作总结也希望能跟大家一起探讨探讨,有错误的地方希望大家批评指正。 
  1.Cache   是怎么样工作的? 
  Cache   是分配在服务器上</div>
                                </li>
                                <li><a href="/article/786.htm"
                                       title="mysql存储过程" target="_blank">mysql存储过程</a>
                                    <span class="text-muted">香水浓</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>Description:插入大量测试数据 
 
use xmpl;

drop procedure if exists mockup_test_data_sp;

create procedure mockup_test_data_sp(
	in number_of_records int
)
begin
	declare cnt int;
	declare name varch</div>
                                </li>
                                <li><a href="/article/913.htm"
                                       title="CSS的class、id、css文件名的常用命名规则" target="_blank">CSS的class、id、css文件名的常用命名规则</a>
                                    <span class="text-muted">agevs</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>  CSS的class、id、css文件名的常用命名规则 
    (一)常用的CSS命名规则 
  头:header 
  内容:content/container 
  尾:footer 
  导航:nav 
  侧栏:sidebar 
  栏目:column 
  页面外围控制整体布局宽度:wrapper 
  左右中:left right </div>
                                </li>
                                <li><a href="/article/1040.htm"
                                       title="全局数据源" target="_blank">全局数据源</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/jdbc/1.htm">jdbc</a><a class="tag" taget="_blank" href="/search/JNDI/1.htm">JNDI</a>
                                    <div>实验目的:为了研究两个项目同时访问一个全局数据源的时候是创建了一个数据源对象,还是创建了两个数据源对象。 
1:将diuid和mysql驱动包(druid-1.0.2.jar和mysql-connector-java-5.1.15.jar)copy至%TOMCAT_HOME%/lib下;2:配置数据源,将JNDI在%TOMCAT_HOME%/conf/context.xml中配置好,格式如下:&l</div>
                                </li>
                                <li><a href="/article/1167.htm"
                                       title="MYSQL的随机查询的实现方法" target="_blank">MYSQL的随机查询的实现方法</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,</div>
                                </li>
                                <li><a href="/article/1294.htm"
                                       title="JAVA的getBytes()方法" target="_blank">JAVA的getBytes()方法</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/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a>
                                    <div>    在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同OS下,返回的东西不一样!  
    String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如: 
    byte[] b_gbk = "</div>
                                </li>
                                <li><a href="/article/1421.htm"
                                       title="AngularJS中操作Cookies" target="_blank">AngularJS中操作Cookies</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Cookies/1.htm">Cookies</a>
                                    <div>        如果你的应用足够大、足够复杂,那么你很快就会遇到这样一咱种情况:你需要在客户端存储一些状态信息,这些状态信息是跨session(会话)的。你可能还记得利用document.cookie接口直接操作纯文本cookie的痛苦经历。 
        幸运的是,这种方式已经一去不复返了,在所有现代浏览器中几乎</div>
                                </li>
                                <li><a href="/article/1548.htm"
                                       title="[Maven学习笔记五]Maven聚合和继承特性" target="_blank">[Maven学习笔记五]Maven聚合和继承特性</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>Maven聚合 
  
在实际的项目中,一个项目通常会划分为多个模块,为了说明问题,以用户登陆这个小web应用为例。通常一个web应用分为三个模块:   
1. 模型和数据持久化层user-core, 
2. 业务逻辑层user-service以 
3. web展现层user-web, 
user-service依赖于user-core 
user-web依赖于user-core和use</div>
                                </li>
                                <li><a href="/article/1675.htm"
                                       title="【JVM七】JVM知识点总结" target="_blank">【JVM七】JVM知识点总结</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                                    <div>  1. JVM运行模式 
1.1 JVM运行时分为-server和-client两种模式,在32位机器上只有client模式的JVM。通常,64位的JVM默认都是使用server模式,因为server模式的JVM虽然启动慢点,但是,在运行过程,JVM会尽可能的进行优化 
1.2 JVM分为三种字节码解释执行方式:mixed mode, interpret mode以及compiler </div>
                                </li>
                                <li><a href="/article/1802.htm"
                                       title="linux下查看nginx、apache、mysql、php的编译参数" target="_blank">linux下查看nginx、apache、mysql、php的编译参数</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>在linux平台下的应用,最流行的莫过于nginx、apache、mysql、php几个。而这几个常用的应用,在手工编译完以后,在其他一些情况下(如:新增模块),往往想要查看当初都使用了那些参数进行的编译。这时候就可以利用以下方法查看。 
1、nginx 
[root@361way ~]# /App/nginx/sbin/nginx -V
nginx: nginx version: nginx/</div>
                                </li>
                                <li><a href="/article/1929.htm"
                                       title="unity中运用Resources.Load的方法?" target="_blank">unity中运用Resources.Load的方法?</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a>
                                    <div>问:unity中运用Resources.Load的方法? 
答:Resources.Load是unity本地动态加载资本所用的方法,也即是你想动态加载的时分才用到它,比方枪弹,特效,某些实时替换的图像什么的,主张此文件夹不要放太多东西,在打包的时分,它会独自把里边的一切东西都会集打包到一同,不论里边有没有你用的东西,所以大多数资本应该是自个建文件放置 
1、unity实时替换的物体即是依据环境条件</div>
                                </li>
                                <li><a href="/article/2056.htm"
                                       title="线段树-入门" target="_blank">线段树-入门</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/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%AE%B5%E6%A0%91/1.htm">线段树</a>
                                    <div>


/**
 * 线段树入门
 * 问题:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次
 * 以下代码建立的线段树用链表来保存,且树的叶子结点类似[i,i]
 * 
 * 参考链接:http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18
 * @author lijinna</div>
                                </li>
                                <li><a href="/article/2183.htm"
                                       title="全选与反选" target="_blank">全选与反选</a>
                                    <span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/%E5%85%A8%E9%80%89/1.htm">全选</a>
                                    <div>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>全选与反选</title>
</div>
                                </li>
                                <li><a href="/article/2310.htm"
                                       title="vim一些简单记录" target="_blank">vim一些简单记录</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a>
                                    <div>mac在/usr/share/vim/vimrc linux在/etc/vimrc 
  
1、问:后退键不能删除数据,不能往后退怎么办? 
      答:在vimrc中加入set backspace=2 
  
2、问:如何控制tab键的缩进? 
      答:在vimrc中加入set tabstop=4 (任何</div>
                                </li>
                                <li><a href="/article/2437.htm"
                                       title="Sublime Text 快捷键" target="_blank">Sublime Text 快捷键</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/%E5%BF%AB%E6%8D%B7%E9%94%AE/1.htm">快捷键</a><a class="tag" taget="_blank" href="/search/sublime/1.htm">sublime</a>
                                    <div>[size=large][/size]Sublime Text快捷键:Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Shift+V:粘贴并格式化Ctrl+D:选择单词,重复可增加选择下一个相同的单词Ctrl+L:选择行,重复可依次增加选择下一行Ctrl+Shift+L:</div>
                                </li>
                                <li><a href="/article/2564.htm"
                                       title="php 引用(&)详解" target="_blank">php 引用(&)详解</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容   复制代码代码如下:   
<?  
$a="ABC";  
$b =&$a;  
echo</div>
                                </li>
                                <li><a href="/article/2691.htm"
                                       title="SVN中trunk,branches,tags用法详解" target="_blank">SVN中trunk,branches,tags用法详解</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a>
                                    <div>Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。</div>
                                </li>
                                <li><a href="/article/2818.htm"
                                       title="对软件设计的思考" target="_blank">对软件设计的思考</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</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/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a>
                                    <div>软件设计的宏观与微观  
 
   软件开发是一种高智商的开发活动。一个优秀的软件设计人员不仅要从宏观上把握软件之间的开发,也要从微观上把握软件之间的开发。宏观上,可以应用面向对象设计,采用流行的SSH架构,采用web层,业务逻辑层,持久层分层架构。采用设计模式提供系统的健壮性和可维护性。微观上,对于一个类,甚至方法的调用,从计算机的角度模拟程序的运行情况。了解内存分配,参数传</div>
                                </li>
                                <li><a href="/article/2945.htm"
                                       title="同步、异步、阻塞、非阻塞" target="_blank">同步、异步、阻塞、非阻塞</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%9E%E9%98%BB%E5%A1%9E/1.htm">非阻塞</a>
                                    <div>同步、异步、阻塞、非阻塞这几个概念有时有点混淆,在此文试图解释一下。 
  
同步:发出方法调用后,当没有返回结果,当前线程会一直在等待(阻塞)状态。 
场景:打电话,营业厅窗口办业务、B/S架构的http请求-响应模式。 
  
异步:方法调用后不立即返回结果,调用结果通过状态、通知或回调通知方法调用者或接收者。异步方法调用后,当前线程不会阻塞,会继续执行其他任务。 
实现:</div>
                                </li>
                                <li><a href="/article/3072.htm"
                                       title="Reverse SSH Tunnel 反向打洞實錄" target="_blank">Reverse SSH Tunnel 反向打洞實錄</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a>
                                    <div>實際的操作步驟:  
# 首先,在客戶那理的機器下指令連回我們自己的 Server,並設定自己 Server 上的 12345 port 會對應到幾器上的 SSH port
ssh -NfR 12345:localhost:22 fred@myhost.com

# 然後在 myhost 的機器上連自己的 12345 port,就可以連回在客戶那的機器
ssh localhost -p 1</div>
                                </li>
                                <li><a href="/article/3199.htm"
                                       title="Hibernate中的缓存" target="_blank">Hibernate中的缓存</a>
                                    <span class="text-muted">Josh_Persistence</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%80%E7%BA%A7%E7%BC%93%E5%AD%98/1.htm">一级缓存</a><a class="tag" taget="_blank" href="/search/Hiberante%E7%BC%93%E5%AD%98/1.htm">Hiberante缓存</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2%E7%BC%93%E5%AD%98/1.htm">查询缓存</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BA%A7%E7%BC%93%E5%AD%98/1.htm">二级缓存</a>
                                    <div>Hibernate中的缓存 
  
一、Hiberante中常见的三大缓存:一级缓存,二级缓存和查询缓存。 
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存是由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存</div>
                                </li>
                                <li><a href="/article/3326.htm"
                                       title="对象关系行为模式之延迟加载" target="_blank">对象关系行为模式之延迟加载</a>
                                    <span class="text-muted">home198979</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BB%B6%E8%BF%9F%E5%8A%A0%E8%BD%BD/1.htm">延迟加载</a>
                                    <div>形象化设计模式实战     HELLO!架构 
  
一、概念 
Lazy Load:一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。 
延迟加载貌似很简单,就是在数据需要时再从数据库获取,减少数据库的消耗。但这其中还是有不少技巧的。 
  
  
二、实现延迟加载 
实现Lazy Load主要有四种方法:延迟初始化、虚</div>
                                </li>
                                <li><a href="/article/3453.htm"
                                       title="xml 验证" target="_blank">xml 验证</a>
                                    <span class="text-muted">pengfeicao521</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/xml%E8%A7%A3%E6%9E%90/1.htm">xml解析</a>
                                    <div>有些字符,xml不能识别,用jdom或者dom4j解析的时候就报错 
 
public static void testPattern() { 
 
 // 含有非法字符的串 
 String str =       "Jamey&#52828;&#01;&#02;&#209;&#1282</div>
                                </li>
                                <li><a href="/article/3580.htm"
                                       title="div设置半透明效果" target="_blank">div设置半透明效果</a>
                                    <span class="text-muted">spjich</span>
<a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%8D%8A%E9%80%8F%E6%98%8E/1.htm">半透明</a>
                                    <div>为div设置如下样式: 
  
div{filter:alpha(Opacity=80);-moz-opacity:0.5;opacity: 0.5;}  
  
  
  
 说明: 
1、filter:对win IE设置半透明滤镜效果,filter:alpha(Opacity=80)代表该对象80%半透明,火狐浏览器不认2、-moz-opaci</div>
                                </li>
                                <li><a href="/article/3707.htm"
                                       title="你真的了解单例模式么?" target="_blank">你真的了解单例模式么?</a>
                                    <span class="text-muted">w574240966</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                                    <div>    单例模式,很多初学者认为单例模式很简单,并且认为自己已经掌握了这种设计模式。但事实上,你真的了解单例模式了么。 
  
一,单例模式的5中写法。(回字的四种写法,哈哈。) 
    1,懒汉式 
          (1)线程不安全的懒汉式 
    public cla</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><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>