14_Python正则表达式与re模块_全栈开发学习笔记

1. 正则表达式的引出

范例1:
你怎么判断这个phone_number是合法的呢?
根据手机号码一共11位并且是只以13、14、15、18开头的数字这些特点,我们用python写了如下代码:

while True:
    phone_number = input('please input your phone number : ')
    if len(phone_number) == 11 \
            and phone_number.isdigit()\
            and (phone_number.startswith('13') \
            or phone_number.startswith('14') \
            or phone_number.startswith('15') \
            or phone_number.startswith('18')):
        print('是合法的手机号码')
    else:
        print('不是合法的手机号码')

执行结果:

please input your phone number : 1923
不是合法的手机号码
please input your phone number : 18123456789
是合法的手机号码


范例2:
运用正则表达式的写法

import re
phone_number = input('please input your phone number : ')
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
        print('是合法的手机号码')
else:
        print('不是合法的手机号码')

执行结果:

please input your phone number : 139
不是合法的手机号码

please input your phone number : 18123456789
是合法的手机号码


1.1 正则表达式在线工具

正则表达式在线测试工具


1.2 正则表达式使用规范表

正则表达式使用规范表


2. RE模块

2.1 findall(重要)

想找到所有结果
范例:

import re

ret = re.findall('a', 'eva egon yuan')  # 返回所有满足匹配条件的结果,放在列表里
print(ret)

ret = re.findall('[a-z]+', 'eva egon yuan')  # 返回所有满足匹配条件的结果,放在列表里
print(ret)

执行结果:

['a', 'a']
['eva', 'egon', 'yuan']


2.2 search(重要)

想只找到一个结果

import re

ret = re.search('a', 'eva egon yuan')
if ret:
    print(ret.group())

ret = re.search('j', 'eva egon yuan')
if ret:
    print(ret.group())
#从前往后,找到一个就返回,返回的变量需要调用group才能拿到结果
#如果没有找到,那么返回None,调用group会报错

执行结果:

a



2.3 match(重要)

想在开头就匹配上

import re

ret = re.match('e', 'eva egon yuan')
if ret:
    print(ret.group())

ret = re.match('ev', 'eva egon yuan')
if ret:
    print(ret.group())

ret = re.match('[a-z]+', 'eva egon yuan')
if ret:
    print(ret.group())
# match是从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个变量。
# 匹配的内容需要用group才能显示
# 如果没匹配上,就返回None,调用group会报错

执行结果:

e
ev
eva


2.4 split

当要分割一个字符串的时候

ret = re.split('[ab]', 'abcd')
# # 先按'a'分割得到''和'bcd',再对''和'bcd'分别按'b'分割
print(ret)

执行结果:

['', '', 'cd']


2.5 sub(常用)

当要替换一个字符串的时候

import re

ret = re.sub('\d', 'H', 'eva3egon4yuan4',1)
#将数字替换成'H',参数1表示只替换1个
print(ret)

ret = re.sub('\d', 'H', 'eva3egon4yuan4')
#将数字替换成'H',无参数1表示替换所有
print(ret)

执行结果:

evaHegon4yuan4
evaHegonHyuanH


2.6 subn

import re

ret = re.subn('\d', 'H', 'eva3egon4yuan49alex8')
#将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)

执行结果:

('evaHegonHyuanHHalexH', 5)


2.7 compile

当正则反复使用且正则较长的时候

import re

obj = re.compile('\d{3}')
#将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())

ret = obj.search('abcashgjgsdghkash456eeee3wr2') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())

执行结果:

123
456


2.8 finditer

要找的东西特别多的时候

import re
ret = re.finditer('\d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
print(ret)  # 
print(next(ret).group())  #查看第一个结果
print(next(ret).group())  #查看第二个结果
print(next(ret).group()) 
print([i.group() for i in ret])  #查看剩余的左右结果

ret = re.finditer('\d', 'ds3sy4784a')
for i in ret:
    print(i.group())

执行结果:


3
4
7
['8', '4']

3
4
7
8
4


2.9 其他注意事项:优先级查询

  1. search的分组优先
import re

ret = re.search('^[1-9](\d{14})(\d{2}[0-9x])?$','110105199912122277')
print(ret.group())
print(ret.group(1))    # 取第一个分组内的内容
print(ret.group(2))    # 取第二个分组内的内容

执行结果:

110105199912122277
10105199912122
277


  1. findall取消分组优先
import re

ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['oldboy']     这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可

ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')    # 使用?:用来取消分组优先
print(ret)  # ['www.oldboy.com']

执行结果:

['oldboy']
['www.oldboy.com']


  1. split的优先级查询
import re

ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']

ret=re.split("(\d+)","eva3egon4yuan")
print(ret) #结果 : ['eva', '3', 'egon', '4', 'yuan']

#在匹配部分加上()之后所切出的结果是不同的,
#没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
#这个在某些需要保留匹配部分的使用过程是非常重要的。

执行结果:

['eva', 'egon', 'yuan']
['eva', '3', 'egon', '4', 'yuan']


2.10 爬虫例子1

import re
from urllib.request import urlopen

def getPage(url):
    response = urlopen(url)
    return response.read().decode('utf-8')

def parsePage(s):
    com = re.compile(
        '
.*?
.*?(?P\d+).*?(?P.*?)</span>' '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S) ret = com.finditer(s) for i in ret: yield { "id": i.group("id"), "title": i.group("title"), "rating_num": i.group("rating_num"), "comment_num": i.group("comment_num"), } def main(num): url = 'https://movie.douban.com/top250?start=%s&filter=' % num response_html = getPage(url) ret = parsePage(response_html) print(ret) f = open("move_info7", "a", encoding="utf8") for obj in ret: print(obj) data = str(obj) f.write(data + "\n") f.close() count = 0 for i in range(10): # 10页 main(count) count += 25 # url从网页上把代码搞下来 # bytes decode ——> utf-8 网页内容就是我的待匹配字符串 # ret = re.findall(正则,带匹配的字符串) #ret是所有匹配到的内容组成的列表 </code></pre> <p>执行结果:<br> 生成一个move_info7的文件</p> <pre><code>{'id': '1', 'title': '肖申克的救赎', 'rating_num': '9.6', 'comment_num': '1283490人'} {'id': '2', 'title': '霸王别姬', 'rating_num': '9.6', 'comment_num': '947284人'} {'id': '3', 'title': '这个杀手不太冷', 'rating_num': '9.4', 'comment_num': '1177716人'} {'id': '4', 'title': '阿甘正传', 'rating_num': '9.4', 'comment_num': '1011706人'} {'id': '5', 'title': '美丽人生', 'rating_num': '9.5', 'comment_num': '592034人'} ... {'id': '246', 'title': '荒岛余生', 'rating_num': '8.5', 'comment_num': '163691人'} {'id': '247', 'title': '勇士', 'rating_num': '8.9', 'comment_num': '100117人'} {'id': '248', 'title': '枪火', 'rating_num': '8.7', 'comment_num': '119054人'} {'id': '249', 'title': '迁徙的鸟', 'rating_num': '9.1', 'comment_num': '57898人'} {'id': '250', 'title': '攻壳机动队', 'rating_num': '8.9', 'comment_num': '72306人'} </code></pre> <p><br></p> <h2>2.11 爬虫简易例子2(不生成文件)</h2> <pre><code class="python">import re from urllib.request import urlopen def getPage(url): response = urlopen(url) return response.read().decode('utf-8') def parsePage(s): ret = re.findall( '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>' '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',s,re.S) return ret def main(num): url = 'https://movie.douban.com/top250?start=%s&filter=' % num response_html = getPage(url) ret = parsePage(response_html) print(ret) count = 0 for i in range(10): # 10页 main(count) count += 25 </code></pre> <p>执行结果:</p> <pre><code>[('1', '肖申克的救赎', '9.6', '1283490人'), ('2', '霸王别姬', '9.6', '947284人'), ('3', '这个杀手不太冷', '9.4', '1177716人'), ('4', '阿甘正传', '9.4', '1011706人'), ('5', '美丽人生', '9.5', '592034人'), ('6', '泰坦尼克号', '9.3', '947372人'), ('7', '千与千寻', '9.3', '940412人'), ('8', '辛德勒的名单', '9.5', '530119人'), ('9', '盗梦空间', '9.3', '1023257人'), ('10', '机器人总动员', '9.3', '680657人'), ('11', '忠犬八公的故事', '9.3', '668630人'), ('12', '三傻大闹宝莱坞', '9.2', '917833人'), ('13', '海上钢琴师', '9.2', '763056人'), ('14', '放牛班的春天', '9.3', '633150人'), ('15', '大话西游之大圣娶亲', '9.2', '704012人'), ('16', '楚门的世界', '9.2', '687852人'), ('17', '龙猫', '9.2', '620786人'), ('18', '星际穿越', '9.2', '698752人'), ('19', '教父', '9.2', '463326人'), ('20', '熔炉', '9.3', '401050人'), ('21', '无间道', '9.1', '578870人'), ('22', '当幸福来敲门', '9.0', '742183人'), ('23', '疯狂动物城', '9.2', '776574人'), ('24', '触不可及', '9.2', '489976人'), ('25', '怦然心动', '9.0', '806397人')] ... </code></pre> <p><br></p> <h2>2.12 flags</h2> <p>flags有很多可选值:</p> <pre><code>re.I(IGNORECASE)忽略大小写,括号内是完整的写法 re.M(MULTILINE)多行模式,改变^和$的行为 re.S(DOTALL)点可以匹配任意字符,包括换行符 re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境,不推荐使用 re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释 </code></pre> <p>使用方法:</p> <pre><code class="python">import re re.findall('\d','awir17948jsdc',re.S) # 返回值:列表 列表中是所有匹配到的项 </code></pre> <hr> <h1>3. 练习</h1> <h2>3.1 匹配标签</h2> <pre><code class="python">import re ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>") #还可以在分组中利用?<name>的形式给分组起名字 #获取的匹配结果可以直接用group('名字')拿到对应的值 print(ret.group('tag_name')) #结果 :h1 print(ret.group()) #结果 :<h1>hello</h1> ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>") #如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致 #获取的匹配结果可以直接用group(序号)拿到对应的值 print(ret.group(1)) print(ret.group()) #结果 :<h1>hello</h1> </code></pre> <p>执行结果:</p> <pre><code>h1 <h1>hello</h1> h1 <h1>hello</h1> </code></pre> <p><br></p> <h2>3.2 匹配整数</h2> <pre><code class="python">import re ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))") print(ret) #['1', '2', '60', '40', '35', '5', '4', '3'] ret.remove('') print(ret) ret=re.findall(r"-?\d+\.\d*|(-?\d+)","1-2*(60+(-40.35/5)-(-4*3))") print(ret) #['1', '-2', '60', '', '5', '-4', '3'] ret.remove("") print(ret) #['1', '-2', '60', '5', '-4', '3'] </code></pre> <p>执行结果:</p> <pre><code>['1', '2', '60', '', '5', '4', '3'] ['1', '2', '60', '5', '4', '3'] ['1', '-2', '60', '', '5', '-4', '3'] ['1', '-2', '60', '5', '-4', '3'] </code></pre> <p><br></p> <h2>3.3 数字匹配</h2> <pre><code class="python">1、 匹配一段文本中的每行的邮箱 http://blog.csdn.net/make164492212/article/details/51656638 2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’; 分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、 一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 3、 匹配qq号。(腾讯QQ号从10000开始) [1,9][0,9]{4,} 4、 匹配一个浮点数。 ^(-?\d+)(\.\d+)?$ 或者 -?\d+\.?\d* 5、 匹配汉字。 ^[\u4e00-\u9fa5]{0,}$ 6、 匹配出所有整数 </code></pre> <hr> <h1>4. 复习正则与re模块</h1> <pre><code># 正则表达式 # 字符组 [字符] # 元字符 # \w \d \s # \W \D \S # . 除了换行符以外的任意字符 # \n \t # \b # ^ $ 匹配字符串的开始和结束 # () 分组 是对多个字符组整体量词约束的时候用的 #re模块:分组是有优先的 # findall # split # | 从左到右匹配,只要匹配上就不继续匹配了。所以应该把长的放前面 # [^] 除了字符组内的其他都匹配 # 量词 # * 0~ # + 1~ # ? 0~1 # {n} n # {n,} n~ # {n,m} n~m # 转义的问题 # import re # re.findall(r'\\s',r'\s') # 惰性匹配 # 量词后面加问号 # .*?abc 一直取遇到abc就停 # re模块 # import re # re.findall('\d','awir17948jsdc',re.S) # 返回值:列表 列表中是所有匹配到的项 # ret = search('\d(\w)+','awir17948jsdc') # ret = search('\d(?P<name>\w)+','awir17948jsdc') # 找整个字符串,遇到匹配上的就返回,遇不到就None # 如果有返回值ret.group()就可以取到值 # 取分组中的内容 : ret.group(1) / ret.group('name') # match # 从头开始匹配,匹配上了就返回,匹配不上就是None # 如果匹配上了 .group取值 # 分割 split # 替换 sub 和 subn # finditer 返回迭代器 # compile 编译 :正则表达式很长且要多次使用 </code></pre> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1491715174481027072"></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">你可能感兴趣的:(14_Python正则表达式与re模块_全栈开发学习笔记)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1946457369261174784.htm" title="【电脑】电源供应器(PSU)的基础知识" target="_blank">【电脑】电源供应器(PSU)的基础知识</a> <span class="text-muted">Mike_Wuzy</span> <a class="tag" taget="_blank" href="/search/%E7%94%B5%E8%84%91/1.htm">电脑</a> <div>电源供应器(PowerSupplyUnit,PSU)是计算机和其他电子设备的核心组件之一,负责将外部电能转换成设备所需的稳定电压输出,以供主板、硬盘、风扇等各个部件使用。以下是关于电源供应器的一些详细知识:1.主要功能转换与稳压:将交流电(AC)转换为适合计算机内部各组件的直流电(DC),并保持电压稳定。分配电力:通过不同的连接线缆和插座,将不同类型的输出电压输送至各个部件。2.核心元件电源供应器</div> </li> <li><a href="/article/1946457181469601792.htm" title="2023-07-12" target="_blank">2023-07-12</a> <span class="text-muted">chener_33f3</span> <div>山理学子三下乡:砼心探盐渍,聚力惠民生中国青年网滨州7月11电(通讯员李鹤展)为进一步加强合作交流,拓展更加广阔和深入的学生实践空间,7月11上午,山东理工大学建筑工程与空间信息学院团委委员王凯旋、辅导员李聪、曹修磊以及“‘砼’生共长,‘建’行黄河”实践团全体成员赴滨州市沾化区自然资源局进行共建大学生社会实践基地签约暨揭牌仪式。国土空间生态修复中心主任刘燕霞、行政综合办主任李志勇、自然资源监管综合</div> </li> <li><a href="/article/1946456109929787392.htm" title="PromptX 核心架构深度解析:从革命性理念到工程实践的全景解读" target="_blank">PromptX 核心架构深度解析:从革命性理念到工程实践的全景解读</a> <span class="text-muted">步子哥</span> <a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E6%B6%8C%E7%8E%B0/1.htm">智能涌现</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>核心理念:AIuseCLIgetpromptforAI-让AI通过命令行获取专业提示词,从通用助手进化为专业专家团队引言:一场关于AI认知的革命当我们深入研究PromptX项目的核心架构文档时,会发现这不仅仅是一个技术框架,而是一套完整的AI认知重构理论。这些文档展现了从哲学思考到工程实践的完整链条,重新定义了人类与AI的协作模式。今天,让我们从这些核心文档开始,深度解析PromptX如何重塑AI</div> </li> <li><a href="/article/1946456110437298176.htm" title="Navicat操作指南:MySQL数据库配置与Todo应用部署" target="_blank">Navicat操作指南:MySQL数据库配置与Todo应用部署</a> <span class="text-muted">像风一样自由2020</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/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a> <div>Navicat操作指南:MySQL数据库配置与Todo应用部署前言本文档详细记录了使用Navicat管理MySQL数据库,并配置Todo应用的完整操作步骤。适用于使用Navicat作为MySQL管理工具的开发者。操作目标启动MySQL服务使用Navicat连接MySQL数据库创建todoapp数据库配置Todo应用环境变量验证应用正常运行步骤一:启动MySQL服务Windows用户方法1:通过Wi</div> </li> <li><a href="/article/1946455731649703936.htm" title="编程语言与API函数库速查字典大全" target="_blank">编程语言与API函数库速查字典大全</a> <span class="text-muted">一一MIO一一</span> <div>本文还有配套的精品资源,点击获取简介:《Delphi、VB、TC、API函数库速查字典1.0》提供了一个全面的编程语言参考资源,涵盖了Delphi、VB、TurboC以及WindowsAPI的函数库。它包括一个名为"lib"的文件,用于快速查询和理解不同编程语言和API的相关函数。Delphi以其组件库和面向对象的特性受到青睐,VB则因其易用性而广受欢迎,而TC作为经典的C编译器,API函数库则提</div> </li> <li><a href="/article/1946454899705311232.htm" title="高效休息法(二)" target="_blank">高效休息法(二)</a> <span class="text-muted">GAI2012</span> <div>正念呼吸法1、采取基本坐姿,坐在座椅上(稍微挺直背部,背部离开椅背)。腹部放松,双手放在大腿上,双腿不交叉,闭上眼睛(如果采用睁着眼睛的方式,则双眼不聚焦地望向前方2米左右的位置)2、有意识地关注身体的感觉,感受与周围环境的接触(脚底与地板,臀部与座椅,手与大腿等)、身体被重力吸引的感觉。3、关注呼吸,关注与呼吸相关的感觉(通过鼻腔的空气,因空气出入而引起的胸部和腹部的起伏,呼吸与呼吸之间的停顿,</div> </li> <li><a href="/article/1946454723905253376.htm" title="AI 人工智能与 Copilot 碰撞出的火花" target="_blank">AI 人工智能与 Copilot 碰撞出的火花</a> <span class="text-muted">AI天才研究院</span> <a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型企业级应用开发实战</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/copilot/1.htm">copilot</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a> <div>AI人工智能与Copilot碰撞出的火花关键词:AI人工智能、Copilot、代码辅助、智能编程、人机协作、软件开发、技术创新摘要:本文深入探讨了AI人工智能与Copilot碰撞所产生的一系列效应。首先介绍了相关背景,包括目的、预期读者、文档结构和术语表。接着阐述了核心概念与联系,展示了其原理和架构的示意图及流程图。详细讲解了核心算法原理和具体操作步骤,并通过Python代码进行说明。同时给出了数</div> </li> <li><a href="/article/1946453841834733568.htm" title="分布式系统中优化ELK日志采集性能" target="_blank">分布式系统中优化ELK日志采集性能</a> <span class="text-muted">Alex艾力的IT数字空间</span> <a class="tag" taget="_blank" href="/search/elk/1.htm">elk</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/ux/1.htm">ux</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%80%A7%E6%B5%8B%E8%AF%95/1.htm">安全性测试</a><a class="tag" taget="_blank" href="/search/%E5%8F%AF%E7%94%A8%E6%80%A7%E6%B5%8B%E8%AF%95/1.htm">可用性测试</a> <div>架构设计、组件调优、资源分配等多维度入手一、架构优化:分布式与解耦设计分层采集与缓冲Filebeat轻量级采集:在每台服务器部署Filebeat替代Logstash作为日志收集器,降低资源占用(CPU/内存减少70%以上)。引入缓冲队列:通过Redis或Kafka作为日志缓冲池,缓解Logstash或Elasticsearch的突发流量压力,避免数据丢失(如Logstash异常时Redis暂存数据</div> </li> <li><a href="/article/1946453714604716032.htm" title="临时节点授权方案实际应用中可能面临的安全问题和对应的防范策略" target="_blank">临时节点授权方案实际应用中可能面临的安全问题和对应的防范策略</a> <span class="text-muted">Alex艾力的IT数字空间</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/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%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">功能测试</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%9E%B6%E6%9E%84/1.htm">安全架构</a> <div>一、核心安全风险与防御方案1.重放攻击(ReplayAttack)风险场景:攻击者截获有效授权令牌后重复发送请求,导致权限被恶意复用防御措施:动态令牌机制:在授权节点ID中嵌入时间戳(timestamp)和随机数(nonce),服务端校验时间差(如±5分钟)并记录已使用nonce值签名验证:使用HMAC-SHA256对nodeId+timestamp+secretKey生成签名,防止参数篡改示例代</div> </li> <li><a href="/article/1946453248156168192.htm" title="表态发言" target="_blank">表态发言</a> <span class="text-muted">可爱婷好</span> <div>何烊:.严格要求自己,强化教研,提高课堂效果黄磊:对领导,各科老师的肯定,英语老师课间抽几个学生进行指导,共同努力的结果。王康:讲故事,向敬佩的班主任学习脚踏实地,做好自己的事情,对学生真心负出,与学生关系好,创造一个舒适的学习环境,饭要一口一口的吃,事要一件一件的做,路要一步一步的走,踏实平稳地坚持下去,成功的把握好每"一步"的大小是成功的关键。李亦非:慈善之心太强赵件兵:对学生估计过高,重落实</div> </li> <li><a href="/article/1946453208113147904.htm" title="硬件预取的几个问题 1" target="_blank">硬件预取的几个问题 1</a> <span class="text-muted"></span> <div>1.硬件预取的定义和目标是什么?答案:硬件预取是CPU在程序执行前自动预测并加载可能使用的数据到缓存中的技术,目标是减少缓存未命中带来的延迟,提升指令吞吐量。2.硬件预取与软件预取的核心区别?答案:硬件预取由CPU内部逻辑自动触发,透明且通用;软件预取需程序员显式插入指令(如prefetch),可针对特定场景优化,但依赖代码适配。3.预取算法的主要分类?答案:分为规则驱动型(如顺序、步长预取)和机</div> </li> <li><a href="/article/1946452577054945280.htm" title="Linux 系统进阶操作实践:目录管理与系统信息查看指南" target="_blank">Linux 系统进阶操作实践:目录管理与系统信息查看指南</a> <span class="text-muted">小任今晚几点睡</span> <a class="tag" taget="_blank" href="/search/RHCSA/1.htm">RHCSA</a><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>文章摘要本文详细记录了Linux系统中通过Xshell远程管理的核心操作,包括系统信息查询、复杂目录结构创建与树形展示、多级目录快速生成、文件创建与删除、大文件制作等实践步骤。通过命令示例与输出解析,清晰呈现每一步操作的逻辑与效果,帮助读者掌握目录管理、系统信息查看及文件操作的实用技巧,适合Linux实操学习者参考。一、通过Xshell远程登录及系统信息查询使用Xshell通过root账户登录Li</div> </li> <li><a href="/article/1946452479126335488.htm" title="对生命说是" target="_blank">对生命说是</a> <span class="text-muted">255b13afce2f</span> <div>对可能结束的关系说是有时候就是分不清自我,才想去改变别人,也让他人受影响,世界上有两件事是最难的,一个是让别人接受你的思想,一个是从别人口袋里掏钱出来。没有完美的人存在,只有你看人时候的心态不同,显现的人物个性不同,是温柔的,善解人意的,完美的,都是自己的看法,其实演绎的都是自己想要的而已,与他人无关。</div> </li> <li><a href="/article/1946451317790666752.htm" title="ThreadLocal 在 Spring 与数据库交互中的应用笔记" target="_blank">ThreadLocal 在 Spring 与数据库交互中的应用笔记</a> <span class="text-muted">笑衬人心。</span> <a class="tag" taget="_blank" href="/search/JAVA%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">JAVA学习笔记</a><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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>一、基本概念1.1什么是ThreadLocal?ThreadLocal是Java提供的一个线程本地存储工具类。每个线程访问ThreadLocal时,都只能看到自己线程范围内的变量副本,线程之间互不影响。常用于保存线程上下文信息,如用户登录信息、事务状态、数据库连接等。ThreadLocalthreadLocal=newThreadLocal>resources=newNamedThreadLoca</div> </li> <li><a href="/article/1946451080900571136.htm" title="魏晋士人的双向人生" target="_blank">魏晋士人的双向人生</a> <span class="text-muted">笑春风ma</span> <div>自古以来,人们都在追求“学成文武艺,货与帝王家”。货与帝王家,能实现自己的人生价值,于是各路人马争先恐后的打扮好自己,以求得君王的宠爱,从而形成了几大官僚集团——文官集团、武官集团、宦官集团、外戚集团。而历史上治理得好的时期,往往也是文官集团掌权的时期,他们饱读经书、史书,知道历史的盛衰兴亡,从而形成自己的治国理政逻辑,尽力将国家带向稳定繁荣。汉朝的萧曹,唐朝的房杜、姚宋,宋朝的赵普,明朝的于谦、</div> </li> <li><a href="/article/1946448924223008768.htm" title="React响应式组件范式:从类组件到Hooks" target="_blank">React响应式组件范式:从类组件到Hooks</a> <span class="text-muted">止观止</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/React/1.htm">React</a><a class="tag" taget="_blank" href="/search/%E6%A0%B8%E5%BF%83%E5%8E%9F%E7%90%86%E6%B7%B1%E5%BA%A6%E5%89%96%E6%9E%90/1.htm">核心原理深度剖析</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>引言在UI开发中,"状态变化自动触发UI更新"的响应式机制是构建动态界面的核心。React通过独特的单向数据流和虚拟DOM(VirtualDOM)实现这一目标,但类组件(ClassComponents)与Hooks分别代表了两种截然不同的实现范式:类组件时代:以生命周期方法作为响应式调度器,需手动管理状态与副作用(SideEffects)的同步Hooks时代:以状态为驱动核心,通过声明式副作用(D</div> </li> <li><a href="/article/1946448166735900672.htm" title="C 语言字符大小写互转:tolower / toupper 详解与实战" target="_blank">C 语言字符大小写互转:tolower / toupper 详解与实战</a> <span class="text-muted">BabyZZの秘密日记</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/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>个人主页:BabyZZの秘密日记收入专栏:C语言文章目入一、函数原型二、实现原理(glibc2.39源码节选)三、常见陷阱与最佳实践四、完整示例:大小写不敏感查找子串五、性能扩展:批量转换的SIMD思路六、小结在文本处理、协议解析、命令行解析等场景中,“大小写不敏感”是十分常见的需求。C标准库提供了两个最常用的工具函数:inttolower(intc);——大写→小写inttoupper(intc</div> </li> <li><a href="/article/1946448156585684992.htm" title="《历史》与《春秋》札记(二十五)" target="_blank">《历史》与《春秋》札记(二十五)</a> <span class="text-muted">刘子曰_b08e</span> <div>十年春王正月,庚申,曹伯終生卒。夏五月,葬曹桓公。秋,公會衛侯於桃丘,弗遇。冬十有二月丙午,齊侯、衛侯、鄭伯來戰於郎。鲁桓公十年春季周王历正月,庚申这一天,曹国君终生死了。这里用了周王历,不知何意?夏季五月,曹国安葬国君终生,谥号曹桓公。秋季,鲁桓公想在桃丘和卫国国君会面,没有遇见卫君。冬季十二月丙午这天,齐国君、卫国君、郑国国君带着军队在郎这个地方跟鲁国交战。这是因为鲁桓公不守礼法得罪了郑国国君</div> </li> <li><a href="/article/1946446653024169984.htm" title="在Java中String类为什么不可以修改?" target="_blank">在Java中String类为什么不可以修改?</a> <span class="text-muted"></span> <div>目录一、语言设计与实现层面的原因二、设计目标与优势三、如何绕过限制?(异常情况)四、替代方案:可变字符串总结在Java中,String类的不可变性(Immutable)是其核心设计之一,这种设计源于多方面的技术考量和实际需求。以下从多个角度解析String为什么不可以修改:一、语言设计与实现层面的原因final修饰类:String类被声明为final,意味着它不能被继承。这避免了子类通过重写方法或</div> </li> <li><a href="/article/1946445265313525760.htm" title="【C# in .NET】17. 探秘类成员-构造函数与析构函数:对象生命周期管理" target="_blank">【C# in .NET】17. 探秘类成员-构造函数与析构函数:对象生命周期管理</a> <span class="text-muted">阿蒙Armon</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/in/1.htm">in</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>探秘类成员-构造函数与析构函数:对象生命周期管理在C#的类成员体系中,构造函数与析构函数承担着对象生命周期管理的核心职责。它们看似简单,却蕴含着与.NET运行时(CLR)深度交互的底层逻辑。本文将从IL代码解析、内存操作机制、CLR调度原理三个维度,全面揭秘这对特殊成员的工作原理,并结合实战场景提炼最佳实践。一、构造函数:对象诞生的幕后推手构造函数是类实例化过程中执行初始化操作的特殊方法,它的底层</div> </li> <li><a href="/article/1946445138901397504.htm" title="【C# in .NET】9. 探秘委托:函数抽象的底层机制" target="_blank">【C# in .NET】9. 探秘委托:函数抽象的底层机制</a> <span class="text-muted">阿蒙Armon</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/in/1.htm">in</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>探秘委托:函数抽象的底层机制在C#的类型系统中,委托(Delegate)作为函数的抽象容器,架起了面向对象与函数式编程的桥梁。它不仅是事件驱动编程的核心,更是LINQ、异步编程等现代C#特性的基础。与类和结构体相比,委托的底层实现融合了引用类型的内存管理与函数指针的调用特性,涉及CLR对方法调度的深度优化。本文将从IL指令解析到JIT编译细节,全面揭示委托的本质机制,带你理解这一特殊类型如何在.N</div> </li> <li><a href="/article/1946445011893678080.htm" title="【C# in .NET】2. 探秘数据类型:构建程序的基石" target="_blank">【C# in .NET】2. 探秘数据类型:构建程序的基石</a> <span class="text-muted">阿蒙Armon</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/in/1.htm">in</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>探秘数据类型:构建程序的基石在C#编程中,数据类型是构建程序的基石。无论是简单的整数计算还是复杂的对象交互,都离不开对数据类型的精准运用。然而,大多数开发者对数据类型的理解往往停留在表面语法层面,忽视了其在.NET框架底层的运行机制。本文将从CLR(公共语言运行时)的视角,深入剖析C#数据类型的本质、内存布局与核心机制,带你看透数据类型背后的底层逻辑。一、数据类型的本质:CLR类型系统的双轨制.N</div> </li> <li><a href="/article/1946443625214832640.htm" title="#Datawhale组队学习#7月-强化学习Task1" target="_blank">#Datawhale组队学习#7月-强化学习Task1</a> <span class="text-muted">fzyz123</span> <a class="tag" taget="_blank" href="/search/Datawhale%E7%BB%84%E9%98%9F%E5%AD%A6%E4%B9%A0/1.htm">Datawhale组队学习</a><a class="tag" taget="_blank" href="/search/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/1.htm">强化学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a> <div>这里是Datawhale组织的组队学习《强化学习入门202507》,Datawhale是一个开源的社区。第一章绪论1.1为什么要学习强化学习?强化学习(ReinforcementLearning,RL)是机器学习中专注于智能体(Agent)如何通过与环境交互学习最优决策策略的分支。与监督学习依赖静态数据集、无监督学习聚焦数据内在结构不同,强化学习的核心在于序贯决策:智能体通过试错探索环境,根据行动</div> </li> <li><a href="/article/1946443625781063680.htm" title="AUTOSAR汽车电子嵌入式编程精讲300篇-基于 FPGA 的 CAN 控制器设计与验证(续)" target="_blank">AUTOSAR汽车电子嵌入式编程精讲300篇-基于 FPGA 的 CAN 控制器设计与验证(续)</a> <span class="text-muted">格图素书</span> <a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6/1.htm">汽车</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a> <div>目录3CAN控制器的设计3.1CAN的模块构成3.2CPI模块3.2.1CPI模块总设计3.2.2位时序设计3.2.3发送模块设计3.2.4接收模块设计3.2.5错误处理模块设计3.2.6过载帧模块设计3.3CAN控制器的操作模式4CAN控制器的验证4.1基于Vivado软件的CAN控制器仿真4.1.1CAN控制器配置及地址打包4.1.2其余端口配置说明4.1.3Testbench编写说明4.1.</div> </li> <li><a href="/article/1946443461943160832.htm" title="那个情人节送Harry Winston钻戒的土豪程序猿" target="_blank">那个情人节送Harry Winston钻戒的土豪程序猿</a> <span class="text-muted">程序员1024故事集</span> <div>情人节那天A在群里发了张F君的朋友圈,大呼这是今天见过的朋友圈里最土豪的礼物了!只见在法拉利的车里,娇艳的红玫瑰簇拥着一个HarryWinston的心形钻戒!原本只知道F君有钱,可没想到这么有钱。以前看GossipGirls里一众名媛的唯一选择就是HarryWinston,据说号称是钻石之王。以下是HarryWinston的百科资料:享誉全球超过百年的超级珠宝品牌,在切割钻石上的精湛工艺与周密谨慎</div> </li> <li><a href="/article/1946441358256435200.htm" title="平板可以用来办公吗?从文档处理到创意创作的全面测评" target="_blank">平板可以用来办公吗?从文档处理到创意创作的全面测评</a> <span class="text-muted">华一精品Adreamer</span> <a class="tag" taget="_blank" href="/search/%E5%B9%B3%E6%9D%BF/1.htm">平板</a> <div>在快节奏的现代职场,一个核心疑问始终萦绕在追求效率的职场人心中:平板电脑,这个轻薄便携的设备,真的能替代笔记本电脑,成为值得信赖的办公伙伴吗?答案并非简单的“是”或“否”,而是一个充满潜力与现实的探索过程。今天,小编就一一剖析平板电脑在办公领域的真实表现,并盘点其广受欢迎的日常应用场景,为您提供清晰的认知。一、平板电脑能办公吗平板电脑自诞生以来,一直被贴上“内容消费”的标签。然而,随着硬件性能的飞</div> </li> <li><a href="/article/1946441309896110080.htm" title="网易云音乐会员优惠大揭秘,网友:太值了!" target="_blank">网易云音乐会员优惠大揭秘,网友:太值了!</a> <span class="text-muted">氧惠佣金真的高</span> <div>在数字音乐时代,拥有一款高品质的音乐APP是音乐爱好者的必备之选。作为中国音乐市场的佼佼者,网易云音乐凭借其丰富的曲库、出色的推荐算法以及浓厚的社区氛围,吸引了大量用户。近日,网易云音乐推出了一系列会员优惠活动,让我们一起来了解一下吧!大家好,我是氧惠联合创始人七言导师,给大家推荐一款省钱更加赚钱的app——氧惠。氧惠是与以往完全不同的抖客+淘客app!2023全新模式,我的直推也会放到你下面。主</div> </li> <li><a href="/article/1946440285194088448.htm" title="《道德经》第七十三章的疑问与猜想" target="_blank">《道德经》第七十三章的疑问与猜想</a> <span class="text-muted">旭日老师</span> <div>我们先看《道德经》第73章的原文:勇于敢则杀,勇于不敢则活。此两者,或利或害。天之所恶,孰知其故?是以圣人犹难之。天之道,不争而善胜,不言而善应,不召而自来,繟然而善谋。天网恢恢,疏而不失。对于这一章的翻译,比较通行的是这样翻译的:勇于坚强就会死,勇于柔弱就可以活,这两种勇的结果,有的得利,有的受害。天所厌恶的,谁知道是什么缘故?有道的圣人也难以解说明白。自然的规律是,不斗争而善于取胜;不言语而善</div> </li> <li><a href="/article/1946440096458797056.htm" title="# 百万级OpenID自动化获取:高并发架构设计与微信生态实战" target="_blank"># 百万级OpenID自动化获取:高并发架构设计与微信生态实战</a> <span class="text-muted">Loving_enjoy</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%AD%A6%E7%A7%91%E8%AE%BA%E6%96%87%E5%88%9B%E6%96%B0%E7%82%B9/1.htm">计算机学科论文创新点</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/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/facebook/1.htm">facebook</a> <div>>当你的小程序日活突破10万+,如何安全高效地管理海量用户身份?OpenID作为微信生态的"用户身份证",其获取效率直接影响业务增长!在微信生态开发中,OpenID是用户身份识别的核心密钥。然而传统获取方式存在三大痛点:1.**效率瓶颈**:单线程获取10万OpenID需27小时+2.**稳定性风险**:网络波动导致数据丢失3.**开发成本高**:需重复实现授权逻辑本文将揭秘百万级OpenID自动</div> </li> <li><a href="/article/1946440098333650944.htm" title="大数据时代下的时序数据库选型指南:基于工业场景的IoTDB技术优势与适用性研究" target="_blank">大数据时代下的时序数据库选型指南:基于工业场景的IoTDB技术优势与适用性研究</a> <span class="text-muted">Loving_enjoy</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%AD%A6%E7%A7%91%E8%AE%BA%E6%96%87%E5%88%9B%E6%96%B0%E7%82%B9/1.htm">计算机学科论文创新点</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/facebook/1.htm">facebook</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/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a> <div>>在宝钢集团的智能工厂里,5万多个传感器每秒产生150万+数据点,传统数据库系统每天积压3TB未处理数据——这揭示了工业4.0时代的核心矛盾:**海量时序数据处理能力已成为智能制造的关键瓶颈**。###工业时序数据的四大特殊性工业场景下的时序数据与传统互联网数据存在本质差异:1.**高精度时间要求**-数控机床振动监测需微秒级时间戳-电网故障定位要求时间同步精度≤1μs2.**多源异构性**```</div> </li> <li><a href="/article/6.htm" title="[黑洞与暗粒子]没有光的世界" target="_blank">[黑洞与暗粒子]没有光的世界</a> <span class="text-muted">comsci</span> <div>     无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算      但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....      那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的 &nbs</div> </li> <li><a href="/article/133.htm" title="jQuery Lazy Load 图片延迟加载" target="_blank">jQuery Lazy Load 图片延迟加载</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a> <div>基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。 对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。 版本: jQuery v1.4.4+ jQuery Lazy Load v1.7.2 注意事项: 需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src</div> </li> <li><a href="/article/260.htm" title="使用Jodd的优点" target="_blank">使用Jodd的优点</a> <span class="text-muted">Kai_Ge</span> <a class="tag" taget="_blank" href="/search/jodd/1.htm">jodd</a> <div>1.  简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。 2.  简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。 3.  对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。   使用方法简介</div> </li> <li><a href="/article/387.htm" title="jpa Query转hibernate Query" target="_blank">jpa Query转hibernate Query</a> <span class="text-muted">120153216</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>public List<Map> getMapList(String hql, Map map) { org.hibernate.Query jpaQuery = entityManager.createQuery(hql); if (null != map) { for (String parameter : map.keySet()) { jp</div> </li> <li><a href="/article/514.htm" title="Django_Python3添加MySQL/MariaDB支持" target="_blank">Django_Python3添加MySQL/MariaDB支持</a> <span class="text-muted">2002wmj</span> <a class="tag" taget="_blank" href="/search/mariaDB/1.htm">mariaDB</a> <div>现状 首先,Django@Python2.x 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案 首先据MySQL文档[3]说,自从MySQL</div> </li> <li><a href="/article/641.htm" title="在SQLSERVER中查找消耗IO最多的SQL" target="_blank">在SQLSERVER中查找消耗IO最多的SQL</a> <span class="text-muted">357029540</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>返回做IO数目最多的50条语句以及它们的执行计划。 select top 50   (total_logical_reads/execution_count) as avg_logical_reads,  (total_logical_writes/execution_count) as avg_logical_writes,  (tot</div> </li> <li><a href="/article/768.htm" title="spring UnChecked 异常 官方定义!" target="_blank">spring UnChecked 异常 官方定义!</a> <span class="text-muted">7454103</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>  如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!! public static boolean isCheckedException(Throwable ex) { return !(ex instanceof RuntimeExcep</div> </li> <li><a href="/article/895.htm" title="mongoDB 入门指南、示例" target="_blank">mongoDB 入门指南、示例</a> <span class="text-muted">adminjun</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C/1.htm">操作</a> <div>一、准备工作 1、 下载mongoDB 下载地址:http://www.mongodb.org/downloads 选择合适你的版本 相关文档:http://www.mongodb.org/display/DOCS/Tutorial 2、 安装mongoDB A、 不解压模式: 将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默</div> </li> <li><a href="/article/1022.htm" title="CUDA 5 Release Candidate Now Available" target="_blank">CUDA 5 Release Candidate Now Available</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/CUDA/1.htm">CUDA</a> <div>The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe</div> </li> <li><a href="/article/1149.htm" title="Essential Studio for WinRT网格控件测评" target="_blank">Essential Studio for WinRT网格控件测评</a> <span class="text-muted">Axiba</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。 网格控件功能 1、</div> </li> <li><a href="/article/1276.htm" title="java 获取windows系统安装的证书或证书链" target="_blank">java 获取windows系统安装的证书或证书链</a> <span class="text-muted">bewithme</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>      有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库  。 有关证书链的解释可以查看此处 。   public static void main(String[] args) { SunMSCAPI providerMSCAPI = new SunMSCAPI(); S</div> </li> <li><a href="/article/1403.htm" title="NoSQL数据库之Redis数据库管理(set类型和zset类型)" target="_blank">NoSQL数据库之Redis数据库管理(set类型和zset类型)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><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/NoSQL/1.htm">NoSQL</a> <div>4.sets类型         Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。         sadd:向名称为key的set中添加元</div> </li> <li><a href="/article/1530.htm" title="异常捕获何时用Exception,何时用Throwable" target="_blank">异常捕获何时用Exception,何时用Throwable</a> <span class="text-muted">bingyingao</span> <div>用Exception的情况 try {        //可能发生空指针、数组溢出等异常         } catch (Exception e) {          </div> </li> <li><a href="/article/1657.htm" title="【Kafka四】Kakfa伪分布式安装" target="_blank">【Kafka四】Kakfa伪分布式安装</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证   1. 安装步骤   Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不</div> </li> <li><a href="/article/1784.htm" title="Project Euler" target="_blank">Project Euler</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a> <div>Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。     看看problem 1吧: Add all the natural num</div> </li> <li><a href="/article/1911.htm" title="Java-Collections Framework学习与总结-ArrayDeque" target="_blank">Java-Collections Framework学习与总结-ArrayDeque</a> <span class="text-muted">BrokenDreams</span> <a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a> <div>        表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。         这篇要看一下java.util.ArrayDeque。从命名上看</div> </li> <li><a href="/article/2038.htm" title="读《研磨设计模式》-代码笔记-装饰模式-Decorator" target="_blank">读《研磨设计模式》-代码笔记-装饰模式-Decorator</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ import java.io.BufferedOutputStream; import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.Fi</div> </li> <li><a href="/article/2165.htm" title="Maven学习(一)" target="_blank">Maven学习(一)</a> <span class="text-muted">chenyu19891124</span> <a class="tag" taget="_blank" href="/search/Maven%E7%A7%81%E6%9C%8D/1.htm">Maven私服</a> <div>    学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功</div> </li> <li><a href="/article/2292.htm" title="[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充" target="_blank">[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a> <div>本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点 节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法) 需要解决的问题:已知分支</div> </li> <li><a href="/article/2419.htm" title="Linux中用shell获取昨天、明天或多天前的日期" target="_blank">Linux中用shell获取昨天、明天或多天前的日期</a> <span class="text-muted">daizj</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/%E4%B8%8A%E5%87%A0%E5%B9%B4/1.htm">上几年</a><a class="tag" taget="_blank" href="/search/%E6%98%A8%E5%A4%A9/1.htm">昨天</a><a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96%E4%B8%8A%E5%87%A0%E4%B8%AA%E6%9C%88/1.htm">获取上几个月</a> <div>在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年 # 获取昨天 date -d 'yesterday'  # 或 date -d 'last day' # 获取明天 date -d 'tomorrow'   # 或 date -d 'next day' # 获取上个月 date -d 'last month' # </div> </li> <li><a href="/article/2546.htm" title="我所理解的云计算" target="_blank">我所理解的云计算</a> <span class="text-muted">dongwei_6688</span> <a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a> <div>      在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:        Cloud computing is a phrase used to describe a variety of computing co</div> </li> <li><a href="/article/2673.htm" title="YII CMenu配置" target="_blank">YII CMenu配置</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>Adding id and class names to CMenu We use the id and htmlOptions to accomplish this. Watch. //in your view $this->widget('zii.widgets.CMenu', array( 'id'=>'myMenu', 'items'=>$this-&g</div> </li> <li><a href="/article/2800.htm" title="设计模式之静态代理与动态代理" target="_blank">设计模式之静态代理与动态代理</a> <span class="text-muted">come_for_dream</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>静态代理与动态代理        代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务</div> </li> <li><a href="/article/2927.htm" title="【转】理解Javascript 系列" target="_blank">【转】理解Javascript 系列</a> <span class="text-muted">gcc2ge</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>理解Javascript_13_执行模型详解 摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个</div> </li> <li><a href="/article/3054.htm" title="Subsets II" target="_blank">Subsets II</a> <span class="text-muted">hcx2013</span> <a class="tag" taget="_blank" href="/search/set/1.htm">set</a> <div>Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not conta</div> </li> <li><a href="/article/3181.htm" title="Spring4.1新特性——Spring缓存框架增强" target="_blank">Spring4.1新特性——Spring缓存框架增强</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a> <div>目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC T</div> </li> <li><a href="/article/3308.htm" title="shell嵌套expect执行命令" target="_blank">shell嵌套expect执行命令</a> <span class="text-muted">liyonghui160com</span> <div>    一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.   系统:centos 5.x   1.先安装expect yum -y install expect   2.脚本内容: cat auto_svn.sh   #!/bin/bash </div> </li> <li><a href="/article/3435.htm" title="Linux实用命令整理" target="_blank">Linux实用命令整理</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>0. 基本命令   linux 基本命令整理    1. 压缩 解压   tar -zcvf a.tar.gz a   #把a压缩成a.tar.gz   tar -zxvf a.tar.gz     #把a.tar.gz解压成a    2. vim小结   2.1 vim替换   :m,ns/word_1/word_2/gc  </div> </li> <li><a href="/article/3562.htm" title="独立开发人员通向成功的29个小贴士" target="_blank">独立开发人员通向成功的29个小贴士</a> <span class="text-muted">shoothao</span> <a class="tag" taget="_blank" href="/search/%E7%8B%AC%E7%AB%8B%E5%BC%80%E5%8F%91/1.htm">独立开发</a> <div> 概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。 明白你从事独立开发的原因和目的。 保持坚持制定计划的好习惯。 万事开头难,第一份订单是关键。 培养多元化业务技能。 提供卓越的服务和品质。 谨小慎微。 营销是必备技能。 学会组织,有条理的工作才是最有效率的。 “独立</div> </li> <li><a href="/article/3689.htm" title="JAVA中堆栈和内存分配原理" target="_blank">JAVA中堆栈和内存分配原理</a> <span class="text-muted">uule</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1、栈、堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f</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>