浅析JavaScript正则表达式

1.正则表达式的定义

  正则表达式是一个描述字符模式的对象。JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能,JavaScript的正则表达式语法是Perl5的正则表达式语法的大型子集

1.直接量定义(perl风格,本人较习惯用直接量):var reg = /exp/attributes

  var pattern = /ccy$/;//匹配以ccy结尾的字符串;

注:同一段代码所表示的正则表达式每次运行时直接量会转换成不同的RegExp对象
2.RegExp对象定义(js风格):var reg = new RegExp(exp, attributes);

  var pattern = new RegExp("ccy$");;//匹配以ccy结尾的字符串;

2.直接量字符

  正则表达式中的所有字母和数字都是按照字面含义进行匹配的。JavaScript正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜杠作为前缀进行转义。

 

字母和数字字符 自身
\o NUL字符
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车符
\xnn 由十六进制nn指定的拉丁字符
\uxxxx 由十六进制xxxx指定的Unicode字符
\cX 控制符^X

        demo:
        /\n/.test('\nccy');//true        匹配    \nccy
        /\n/.test('\\nccy');//false     不匹配    \ccy
        /\n/.test('\\\nccy');//true        匹配    \\nccy

3.字符匹配

字符 匹配
[...] 方括号内的任意字符
[^...] 不在方括号内的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W 任何非ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符
\d 任何ASCII数字,等价于[0-9]
\D 任何非ASCII数字,等价于[^0-9]
[\b] 退格直接量

demo:

/\w\w\d\d\d/.test('lt666');//true    匹配两个字母或者数字加三个数字的字符串

4.重复字符匹配

字符 匹配
{n,m} 前一项至少n次,但不超过m次
{n,} 前一项n次或者更多次
{n} 前一项n次
? 前一项0次或者1次,等价于{0,1}
0 前一项至少1次或者更多次,等价于{1,}
* 前一项0次或者更多次,等价于{0,}

demo:

/\d{4,9}/.test(1314);//true        匹配4到9个数字
//下面的例子稍微有点复杂,仔细分析也很简单
/\w{3}\s?\w{2,4}\s+javascript+\s+[^(]*/.test('ccy is javascript coder');//true        匹配3个字母或数字加0个或1个空格加2到4个字母或数字加至少1个空格加javascript加至少1个空格加0个或多个左反圆括号字符


        

重复匹配还种模式:非贪婪模式(尽可能的少匹配),只需在待匹配的字符后跟随一个?

??、+?、*?、{1,5}?

/\d{4,9}/.exec(131414131);//131414131
/\d{4,9}?/.exec(131414131);//1314
下面这种情况贪婪和非贪婪是一样的效果
/c+y/.exec('ccy');//ccy
/c+?y/.exec('ccy');//ccy
这是因为正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置

5.选择、分组和引用

javascript正则语法还包括指定选择项、子表达式分组和引用前一子表达式的特殊字符。

字符 含义
| 选择,匹配的是该符号左边的子表达式或者右边的子表达式
(…) 组合,将几个项组合为一个单元,这个单元可通过* + ? | 等符号加以修饰,而且记住和这个组合相匹配的字符串以供此后的引用使用
(?:...) 只组合,把项组合到一个单元,但不记忆与改组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也可能是嵌套的),组索引是从左到右的左括号数,(?: 形式的分组不编码

1.选择

字符 | 用于分隔供选择的字符,选择项的尝试匹配是从左至右,直到发现了匹配项。

注:如果左边的选择项匹配就会忽略右边的匹配项,即使它产生更好的匹配

2.组合引用

正则表达式中的圆括号 () 有多中作用:

a.一个是把单独的项组合成子表达式;

b.一个是在完整的模式中定义子模式;

c.允许在同一正则表达式的后部引用前面的子表达式,引用的是实例而非匹配模式

注:perl风格的\n,RegExp对象则$n,以左圆括号为子表达式索引,从1开始

'AA Am 99'.match(/(\w)\1/g);//["AA","99"]

/(A+)((B|C|D)+)(E+)/.exec('ABCDE');//["ABCDE","A","BCD","D","E"];

6.指定匹配位置

正则表达式中匹配位置是一个难点

锚字符与断言

字符 含义
^ 匹配字符串的开头,在多行检索中匹配一行的开头
$ 匹配字符串的结尾,在多行检索中匹配一行的结尾
\b 匹配一个单词的边界,就是位于\w与\W之间的位置
\b 匹配非单词边界的位置
(?=x) 零宽度正先行断言。仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,/w+(?=/d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
(?!=x) 零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,例如,/w+(?!/d) 与后不跟数字的单词匹配,而不与该数字匹配 。
(?<=X) 零宽度正后发断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(? 零宽度负后发断言。仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。例如,(?

demo:

要匹配javascript中的javascript,此时用断言最合适

/(?<=).*(?=<\/title>)/.exec('<span style="color: #000000;"><title>javascript');//javascript

(?<=)零宽度正后发断言,断言<title>在当前位置左侧;</span></p> <p><span style="color: #000000;">(?=<\/title>)零宽度正先行断言,断言在当前位置的右侧,/ 需要加 \ 转义

细心体会一下

不用断言截取如下

'javascript'.match(/^(.*)<\/title>$/)[1];//javascript</p> <p><img src="data:image/png;base64,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" alt=""></p> <h2>7.修饰符</h2> <table border="0"> <colgroup> <col width="105"> <col width="690"> </colgroup> <tbody> <tr> <td align="CENTER" width="105" height="24"><span style="font-size: large;">字符</span></td> <td align="CENTER" width="690"><span style="font-size: large;">含义</span></td> </tr> <tr> <td align="CENTER" height="29"><span style="font-family: Arial; font-size: large;">I</span></td> <td align="CENTER"><span style="font-size: large;">不区分大小写 </span></td> </tr> <tr> <td align="CENTER" height="25"><span style="font-family: Arial; font-size: large;">g</span></td> <td align="CENTER"><span style="font-size: large;">全局匹配 </span></td> </tr> <tr> <td align="CENTER" height="27"><span style="font-family: Arial; font-size: large;">m</span></td> <td align="CENTER"><span style="font-size: large;">多行匹配模式 </span></td> </tr> </tbody> </table> <h2>8.用于匹配模式的String方法</h2> <p>1.search(reg)</p> <p>参数reg为正则表达式,返回第一个与之匹配的子串的起始位置,如找不到则返回-1<br> "javascript".search(/script/i); //4</p> <p><span style="color: #ff0000;">注:search方法不支持全局检索,因为它会忽略正则表达式中的修饰符g</span><br> 2.replace(reg,str)</p> <p>用以执行检索与替换操作,注意出现$n则说明匹配子表达式<br> "javascript".replace(/javascript/gi,"JavaScript");<br> 3.match(reg)</p> <p>返回一个由匹配结果组成的数组,如果reg中设置了修饰符g,则返回的数组包含字符串中的所有匹配结果,若没有g,就不会进行全局检索,只会检索第一个匹配。<br> "1 plus 2 equals 3".match(/\d+/g); 返回["1","2","3"]<br> 4.split(param)</p> <p>参数可以为字符串也可以为正则表达式<br> "1,2,3,4,5".split(/<em>,</em>/);返回["1","2","3","4","5"]</p> <p><img src="data:image/png;base64,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" alt=""></p> <p>我们经常会匹配浏览器中cookie值</p> <p>document.cookie="name=ccy;age=18";</p> <p>/(^|;| )age=([^;]*)(;|$)/g.exec(document.cookie)[2];//18</p> <p><img src="data:image/png;base64,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" alt=""></p> <h2>9.RegExp对象</h2> <p>RegExp第一个参数包含正则表达式的主体部分,也就是直接量中两条斜线之间的文本,不论是字符串直接量还是正则表达式都使用 \ 字符作为转义字符的前缀,<br> 因此当给RegExp()传入一个字符串表述正则表达式时,必须将 \ 替换成 \\<br> 第二个参数是可选的,只能传 g i m,或者它们的组合<br> var zipcode = new RegExp("\d{5}","g"); </p> <p>1.RegExp属性<br> source:是一个只读字符串,包含正则表达式的文本<br> global:是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g<br> ignoreCase:是一个只读的布尔值,用以说明正则表达式是否带有修饰符i<br> multiline:是一个只读的布尔值,用以说明正则表达式是否带有修饰符m<br> lastIndex:是一个可读/写的整数,如果匹配模式带有g修饰符,这个属性存储在整个字符串的下一次检索的开始位置,会被exec(),test()方法用到</p> <p>2.RegExp方法<br> exec()<br> 执行字符串的匹配检索,类似String.match(),都会返回一个数组<br> test()<br> 当调用exec方法返回不为null则调用test方法返回为true</p> <p> </p> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1177268899406737408"></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">你可能感兴趣的:(浅析JavaScript正则表达式)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835509897106649088.htm" title="Long类型前后端数据不一致" target="_blank">Long类型前后端数据不一致</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问</div> </li> <li><a href="/article/1835498925755297792.htm" title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a> <span class="text-muted">STU学生网页设计</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a> <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div> </li> <li><a href="/article/1835496149843275776.htm" title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a> <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div> </li> <li><a href="/article/1835496148601761792.htm" title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div> </li> <li><a href="/article/1835492740536823808.htm" title="node.js学习" target="_blank">node.js学习</a> <span class="text-muted">小猿L</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行</div> </li> <li><a href="/article/1835448239864770560.htm" title="JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)" target="_blank">JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是用于复制对象或数组的两种不同方法。了解它们的区别和应用场景对于避免潜在的bugs和高效地处理数据非常重要。以下是对深拷贝和浅拷贝的详细解释,包括它们的概念、用途、优缺点以及实现方式。1.浅拷贝(ShallowCopy)概念定义:浅拷贝是指创建一个新的对象或数组,其中包含了原对象或数组的基本数据类型的值和对引用数</div> </li> <li><a href="/article/1835428948339683328.htm" title="JavaScript `Map` 和 `WeakMap`详细解释" target="_blank">JavaScript `Map` 和 `WeakMap`详细解释</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E7%94%9F%E6%96%B9%E6%B3%95/1.htm">原生方法</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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>在JavaScript中,Map和WeakMap都是用于存储键值对的数据结构,但它们有一些关键的不同之处。MapMap是一种可以存储任意类型的键值对的集合。它保持了键值对的插入顺序,并且可以通过键快速查找对应的值。Map提供了一些非常有用的方法和属性来操作这些数据对:set(key,value):将一个键值对添加到Map中。如果键已经存在,则更新其对应的值。get(key):获取指定键的值。如果键</div> </li> <li><a href="/article/1835419870070665216.htm" title="切换淘宝最新npm镜像源是" target="_blank">切换淘宝最新npm镜像源是</a> <span class="text-muted">hai40587</span> <a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>切换淘宝最新npm镜像源是一个相对简单的过程,但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新,镜像源的具体地址可能会发生变化,因此,我将基于当前可获取的信息,提供一个通用的切换步骤,并附上最新的镜像地址(截至回答时)。一、了解npm镜像源npm(NodePackageManager)是JavaScript的包管理器,用于安装、更新和管理项目依赖。由于npm官方仓库</div> </li> <li><a href="/article/1835400967986704384.htm" title="内存保护学习(一):tc27x的内存保护MPU设置浅析(个人理解)" target="_blank">内存保护学习(一):tc27x的内存保护MPU设置浅析(个人理解)</a> <span class="text-muted">剑从东方起</span> <a class="tag" taget="_blank" href="/search/%E9%93%BE%E6%8E%A5%E6%96%87%E4%BB%B6%E5%8F%8A%E5%8A%9F%E8%83%BD%E5%AE%89%E5%85%A8/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><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>目录一、背景二、Tc27x相关寄存器1、注意点2、注意几个强相关寄存器1)、数据保护范围寄存器2)、代码保护范围寄存器3)、保护集启用寄存器命名约定4)、PSW(每个核都有一个)5)、SYSCON三、使用方法1、内存方面2、在ECUM里面初始化MPU3、OS回调CBK检查4、机理5、补充点一、背景根据低ASIL等级开发的软件组件可能会错误地访问具有较高ASIL等级的软件组件的内存区域,从而产生干扰</div> </li> <li><a href="/article/1835399831535841280.htm" title="python实现规则引擎_规则引擎python" target="_blank">python实现规则引擎_规则引擎python</a> <span class="text-muted">weixin_39601511</span> <a class="tag" taget="_blank" href="/search/python%E5%AE%9E%E7%8E%B0%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E/1.htm">python实现规则引擎</a> <div>广告关闭回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你!我正在用python编写日志收集分析应用程序,我需要编写一个“规则引擎”来匹配和处理日志消息。它需要具有以下特点:正则表达式匹配消息本身消息严重性优先级的算术比较布尔运算符我设想一个例子规则可能是这样的:(message~program:messageandseverity>=h</div> </li> <li><a href="/article/1835392896531001344.htm" title="Regular Expression 正则表达式" target="_blank">Regular Expression 正则表达式</a> <span class="text-muted">Aimyon_36</span> <a class="tag" taget="_blank" href="/search/Data/1.htm">Data</a><a class="tag" taget="_blank" href="/search/Development/1.htm">Development</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><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> <div>RegularExpression前言1.基本匹配2.元字符2.1点运算符.2.2字符集2.2.1否定字符集2.3重复次数2.3.1*号2.3.2+号2.3.3?号2.4{}号2.5(...)特征标群2.6|或运算符2.7转码特殊字符2.8锚点2.8.1^号2.8.2$号3.简写字符集4.零宽度断言(前后预查)4.1?=...正先行断言4.2?!...负先行断言4.3?Thefatcatsaton</div> </li> <li><a href="/article/1835383919906746368.htm" title="高性能javascript--算法和流程控制" target="_blank">高性能javascript--算法和流程控制</a> <span class="text-muted">海淀萌狗</span> <div>-for,while和do-while性能相当-避免使用for-in循环,==除非遍历一个属性量未知的对象==es5:for-in遍历的对象便不局限于数组,还可以遍历对象。原因:for-in每次迭代操作会同时搜索实例或者原型属性,for-in循环的每次迭代都会产生更多开销,因此要比其他循环类型慢,一般速度为其他类型循环的1/7。因此,除非明确需要迭代一个属性数量未知的对象,否则应避免使用for-i</div> </li> <li><a href="/article/1835373236217540608.htm" title="360前端星计划-动画可以这么玩" target="_blank">360前端星计划-动画可以这么玩</a> <span class="text-muted">马小蜗</span> <div>动画的基本原理定时器改变对象的属性根据新的属性重新渲染动画functionupdate(context){//更新属性}constticker=newTicker();ticker.tick(update,context);动画的种类1、JavaScript动画操作DOMCanvas2、CSS动画transitionanimation3、SVG动画SMILJS动画的优缺点优点:灵活度、可控性、性能</div> </li> <li><a href="/article/1835360244646113280.htm" title="JavaScript中秋快乐!" target="_blank">JavaScript中秋快乐!</a> <span class="text-muted">Q_w7742</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>我们来实现一个简单的祝福网页~主要的难度在于使用canvas绘图当点击canvas时候,跳出“中秋节快乐”字样,需要注册鼠标单击事件和计时器。首先定义主要函数:初始化当点击canvas之后转到onCanvasClick函数,绘图生成灯笼。functiononCanvasClick(){//事件处理函数context.clearRect(0,0,canvas1.width,canvas1.heigh</div> </li> <li><a href="/article/1835359727924637696.htm" title="Nginx从入门到实践(三)" target="_blank">Nginx从入门到实践(三)</a> <span class="text-muted">听你讲故事啊</span> <div>动静分离动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。rewrite规则Rewrite规则常见正则表达式Rewrite主要的功能就是实现URL的重写,Ngin</div> </li> <li><a href="/article/1835354700392787968.htm" title="Nginx的使用场景:构建高效、可扩展的Web架构" target="_blank">Nginx的使用场景:构建高效、可扩展的Web架构</a> <span class="text-muted">张某布响丸辣</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>Nginx,作为当今最流行的Web服务器和反向代理软件之一,凭借其高性能、稳定性和灵活性,在众多Web项目中扮演着核心角色。无论是个人博客、中小型网站,还是大型企业级应用,Nginx都能提供强大的支持。本文将探讨Nginx的几个主要使用场景,帮助读者理解如何在实际项目中充分利用Nginx的优势。1.静态文件服务对于包含大量静态文件(如HTML、CSS、JavaScript、图片等)的网站,Ngin</div> </li> <li><a href="/article/1835354447627251712.htm" title="前端知识点" target="_blank">前端知识点</a> <span class="text-muted">ZhangTao_zata</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>下面是一个最基本的html代码body{font-family:Arial,sans-serif;margin:20px;}//JavaScriptfunctionthatdisplaysanalertwhencalledfunctionshowMessage(){alert("Hello!Youclickedthebutton.");}MyFirstHTMLPageWelcometoMyPage</div> </li> <li><a href="/article/1835353347578753024.htm" title="Scanpy源码浅析之pp.normalize_total" target="_blank">Scanpy源码浅析之pp.normalize_total</a> <span class="text-muted">何物昂</span> <div>版本导入Scanpy,其版本为'1.9.1',如果你看到的源码和下文有差异,其可能是由于版本差异。importscanpyasscsc.__version__#'1.9.1'例子函数pp.normalize_total用于Normalizecountspercell,其源代码在scanpy/preprocessing/_normalization.py我们通过一个简单例子来了解该函数主要功能:将一</div> </li> <li><a href="/article/1835333268375957504.htm" title="爬虫技术抓取网站数据" target="_blank">爬虫技术抓取网站数据</a> <span class="text-muted">Bearjumpingcandy</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>爬虫技术是一种自动化获取网站数据的技术,它可以模拟人类浏览器的行为,访问网页并提取所需的信息。以下是爬虫技术抓取网站数据的一般步骤:发起HTTP请求:爬虫首先会发送HTTP请求到目标网站,获取网页的内容。解析HTML:获取到网页内容后,爬虫会使用HTML解析器解析HTML代码,提取出需要的数据。数据提取:通过使用XPath、CSS选择器或正则表达式等工具,爬虫可以从HTML中提取出所需的数据,如文</div> </li> <li><a href="/article/1835331376895848448.htm" title="【JS】前端文件读取FileReader操作总结" target="_blank">【JS】前端文件读取FileReader操作总结</a> <span class="text-muted">程序员-张师傅</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>前端文件读取FileReader操作总结FileReader是JavaScript中的一个WebAPI,它允许web应用程序异步读取用户计算机上的文件(或原始数据缓冲区)的内容,例如读取文件以获取其内容,并在不将文件发送到服务器的情况下在客户端使用它。这对于处理图片、文本文件等非常有用,尤其是当你想要在用户界面中即时显示文件内容或进行文件预览时。创建FileReader对象首先,你需要创建一个Fi</div> </li> <li><a href="/article/1835298981362626560.htm" title="webstorm报错TypeError: this.cliEngine is not a constructor" target="_blank">webstorm报错TypeError: this.cliEngine is not a constructor</a> <span class="text-muted">Blue_Color</span> <div>点击Details在控制台会显示报错的位置TypeError:this.cliEngineisnotaconstructoratESLintPlugin.invokeESLint(/Applications/RubyMine.app/Contents/plugins/JavaScriptLanguage/languageService/eslint/bin/eslint-plugin.js:97:</div> </li> <li><a href="/article/1835296397365178368.htm" title="创建一个完整的购物商城系统是一个复杂的项目,涉及前端(用户界面)、后端(服务器逻辑)、数据库等多个部分。由于篇幅限制,我无法在这里提供一个完整的系统代码,但我可以分别给出一些关键部分的示例代码,涵盖几" target="_blank">创建一个完整的购物商城系统是一个复杂的项目,涉及前端(用户界面)、后端(服务器逻辑)、数据库等多个部分。由于篇幅限制,我无法在这里提供一个完整的系统代码,但我可以分别给出一些关键部分的示例代码,涵盖几</a> <span class="text-muted">uthRaman</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>前端(HTML/CSS/JavaScript)grsyzp.cnHTML页面结构(index.html)html购物商城欢迎来到购物商城JavaScript(Ajax请求商品数据,app.js)javascriptdocument.addEventListener('DOMContentLoaded',function(){fetch('/api/products').then(response=</div> </li> <li><a href="/article/1835293121953492992.htm" title="了解 UNPKG:前端开发者的包管理利器" target="_blank">了解 UNPKG:前端开发者的包管理利器</a> <span class="text-muted">小于负无穷</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>在现代前端开发中,JavaScript包管理和模块化是至关重要的,而npm则是最流行的JavaScript包管理器之一。不过,随着前端项目复杂性的增加,有时候我们希望快速引入外部依赖,而无需本地安装和构建。此时,CDN(内容分发网络)成为了一种方便快捷的解决方案,而UNPKG就是这种方式中的佼佼者。什么是UNPKG?UNPKG是一个基于npm的内容分发网络(CDN),它允许开发者直接通过URL从n</div> </li> <li><a href="/article/1835247344719851520.htm" title="2019-05-29 vue-router的两种模式的区别" target="_blank">2019-05-29 vue-router的两种模式的区别</a> <span class="text-muted">Kason晨</span> <div>1、大家都知道vue是一种单页应用,单页应用就是仅在页面初始化的时候加载相应的html/css/js一单页面加载完成,不会因为用户的操作而进行页面的重新加载或者跳转,用javascript动态的变化html的内容优点:良好的交互体验,用户不需要刷新页面,页面显示流畅,良好的前后端工作分离模式,减轻服务器压力,缺点:不利于SEO,初次加载耗时比较多2、hash模式vue-router默认的是hash</div> </li> <li><a href="/article/1835216109297561600.htm" title="electron多标签页模式更像客户端" target="_blank">electron多标签页模式更像客户端</a> <span class="text-muted">diygwcom</span> <a class="tag" taget="_blank" href="/search/electron/1.htm">electron</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Electron多标签页模式是指在Electron框架中实现的类似Web浏览器的多标签页功能。Electron是一个使用Web技术(HTML、CSS和JavaScript)来创建跨平台桌面应用程序的框架。在Electron中实现多标签页模式,通常需要借助一些特定的库或组件,如BrowserView或electron-tabs,或者通过自定义实现。实现方式1.使用BrowserViewBrowser</div> </li> <li><a href="/article/1835194426499100672.htm" title="外卖霸王餐返利外卖会员卡小程序开发" target="_blank">外卖霸王餐返利外卖会员卡小程序开发</a> <span class="text-muted">闹小艾</span> <a class="tag" taget="_blank" href="/search/good506070/1.htm">good506070</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a> <div>外卖霸王餐返利外卖会员卡小程序开发"社交电商赋能下的外卖返利小程序"是专为商家与用户双赢而设计的创新平台。以下是其开发方案的详细步骤:一、需求梳理:首先,我们需要明确小程序的核心功能和特色。包括设定活动类型、返利策略,以及用户体验友好的界面设计。二、技术决策:技术选型是关键。我们采用小程序的开发框架,利用JavaScript作为前端开发语言,并结合微信提供的API进行后端接口调用与数据处理。三、账</div> </li> <li><a href="/article/1835192531881652224.htm" title="Axure设计之全屏与退出全屏交互实现" target="_blank">Axure设计之全屏与退出全屏交互实现</a> <span class="text-muted">招风的黑耳</span> <a class="tag" taget="_blank" href="/search/Axure/1.htm">Axure</a><a class="tag" taget="_blank" href="/search/axure/1.htm">axure</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a> <div>在AxureRP中,设计全屏与退出全屏的交互功能可以极大地提升用户体验,尤其是在展示产品原型或进行演示时。本文将详细介绍如何在AxureRP中通过结合JavaScript代码实现全屏与退出全屏的交互效果。Axure原型设计web端交互元件库:https://1zvcwx.axshare.com一、设计思路全屏与退出全屏的交互设计主要依赖于JavaScript代码来控制浏览器的全屏模式。在Axure</div> </li> <li><a href="/article/1835162742533746688.htm" title="全面指南:用户行为从前端数据采集到实时处理的最佳实践" target="_blank">全面指南:用户行为从前端数据采集到实时处理的最佳实践</a> <span class="text-muted">数字沉思</span> <a class="tag" taget="_blank" href="/search/%E8%90%A5%E9%94%80/1.htm">营销</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E9%87%8F%E8%BF%90%E8%90%A5/1.htm">流量运营</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AE%B9%E8%BF%90%E8%90%A5/1.htm">内容运营</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>引言在当今的数据驱动世界,实时数据采集和处理已经成为企业做出及时决策的重要手段。本文将详细介绍如何通过前端JavaScript代码采集用户行为数据、利用API和Kafka进行数据传输、通过Flink实时处理数据的完整流程。无论你是想提升产品体验还是做用户行为分析,这篇文章都将为你提供全面的解决方案。设计一个通用的ClickHouse表来存储用户事件时,需要考虑多种因素,包括事件类型、时间戳、用户信</div> </li> <li><a href="/article/1835154546289111040.htm" title="EcmaScript和JavaScript的区别" target="_blank">EcmaScript和JavaScript的区别</a> <span class="text-muted">每天吃八顿</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>ECMAScript和JavaScript是经常被混淆的两个术语,但实际上它们之间存在一些区别:ECMAScript:ECMAScript(通常缩写为ES,并且有版本号如ES5,ES6和ES7等)是由ECMA国际(EuropeanComputerManufacturersAssociation)制定的一种脚本语言的规范。这个规范定义了语法、命令、数据类型等基本元素。ECMAScript是一种规范,</div> </li> <li><a href="/article/1835137656992919552.htm" title="javascript添加p元素,html添加文字,appendChild" target="_blank">javascript添加p元素,html添加文字,appendChild</a> <span class="text-muted">游勇一</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html%E6%B7%BB%E5%8A%A0p/1.htm">html添加p</a><a class="tag" taget="_blank" href="/search/appendChild/1.htm">appendChild</a> <div>javascript添加p元素,html添加文字,appendChild。网页添加p元素效果截图。个人签名:游志勇,预制板,南托岭预制场。文字展示#wordsadd{font-size:70px;word-break:break-all;}#wordsaddp{margin:002px0;padding:002px0;line-height:93%;}.btn_width{width:90px;}</div> </li> <li><a href="/article/69.htm" title="对股票分析时要注意哪些主要因素?" target="_blank">对股票分析时要注意哪些主要因素?</a> <span class="text-muted">会飞的奇葩猪</span> <a class="tag" taget="_blank" href="/search/%E8%82%A1%E7%A5%A8+%E5%88%86%E6%9E%90+%E4%BA%91%E6%8E%8C%E8%82%A1%E5%90%A7/1.htm">股票 分析 云掌股吧</a> <div>   众所周知,对散户投资者来说,股票技术分析是应战股市的核心武器,想学好股票的技术分析一定要知道哪些是重点学习的,其实非常简单,我们只要记住三个要素:成交量、价格趋势、振荡指标。     一、成交量   大盘的成交量状态。成交量大说明市场的获利机会较多,成交量小说明市场的获利机会较少。当沪市的成交量超过150亿时是强市市场状态,运用技术找综合买点较准;</div> </li> <li><a href="/article/196.htm" title="【Scala十八】视图界定与上下文界定" target="_blank">【Scala十八】视图界定与上下文界定</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>Context Bound,上下文界定,是Scala为隐式参数引入的一种语法糖,使得隐式转换的编码更加简洁。   隐式参数 首先引入一个泛型函数max,用于取a和b的最大值 def max[T](a: T, b: T) = { if (a > b) a else b }  因为T是未知类型,只有运行时才会代入真正的类型,因此调用a > </div> </li> <li><a href="/article/323.htm" title="C语言的分支——Object-C程序设计阅读有感" target="_blank">C语言的分支——Object-C程序设计阅读有感</a> <span class="text-muted">darkblue086</span> <a class="tag" taget="_blank" href="/search/apple/1.htm">apple</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/cocoa/1.htm">cocoa</a> <div>自从1972年贝尔实验室Dennis Ritchie开发了C语言,C语言已经有了很多版本和实现,从Borland到microsoft还是GNU、Apple都提供了不同时代的多种选择,我们知道C语言是基于Thompson开发的B语言的,Object-C是以SmallTalk-80为基础的。和C++不同的是,Object C并不是C的超集,因为有很多特性与C是不同的。 Object-C程序设计这本书</div> </li> <li><a href="/article/450.htm" title="去除浏览器对表单值的记忆" target="_blank">去除浏览器对表单值的记忆</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E5%BF%86/1.htm">记忆</a><a class="tag" taget="_blank" href="/search/autocomplete/1.htm">autocomplete</a><a class="tag" taget="_blank" href="/search/form/1.htm">form</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88/1.htm">浏览</a> <div>                                   &n</div> </li> <li><a href="/article/577.htm" title="java的树形通讯录" target="_blank">java的树形通讯录</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近用到企业通讯录,虽然以前也开发过,但是用的是jsf,拼成的树形,及其笨重和难维护。后来就想到直接生成json格式字符串,页面上也好展现。 // 首先取出每个部门的联系人 for (int i = 0; i < depList.size(); i++) { List<Contacts> list = getContactList(depList.get(i</div> </li> <li><a href="/article/704.htm" title="Nginx安装部署" target="_blank">Nginx安装部署</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源</div> </li> <li><a href="/article/831.htm" title="java servelet异步处理请求" target="_blank">java servelet异步处理请求</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/%EF%BD%8A%EF%BD%81%EF%BD%96%EF%BD%81/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%AD%A5%E8%BF%94%E5%9B%9E/1.htm">异步返回</a><a class="tag" taget="_blank" href="/search/%EF%BD%93%EF%BD%85%EF%BD%92%EF%BD%96%EF%BD%8C%EF%BD%85%EF%BD%94/1.htm">servlet</a> <div>servlet3.0以后支持异步处理请求,具体是使用AsyncContext ,包装httpservletRequest以及httpservletResponse具有异步的功能,        final AsyncContext ac = request.startAsync(request, response);   ac.s</div> </li> <li><a href="/article/958.htm" title="我的spring学习笔记8-Spring中Bean的实例化" target="_blank">我的spring学习笔记8-Spring中Bean的实例化</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Spring+3/1.htm">Spring 3</a> <div>在Spring中要实例化一个Bean有几种方法: 1、最常用的(普通方法) <bean id="myBean" class="www.6e6.org.MyBean" /> 使用这样方法,按Spring就会使用Bean的默认构造方法,也就是把没有参数的构造方法来建立Bean实例。 (有构造方法的下个文细说) 2、还</div> </li> <li><a href="/article/1085.htm" title="为Mysql创建最优的索引" target="_blank">为Mysql创建最优的索引</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E7%B4%A2%E5%BC%95/1.htm">索引</a> <div> 索引对于良好的性能非常关键,尤其是当数据规模越来越大的时候,索引的对性能的影响越发重要。 索引经常会被误解甚至忽略,而且经常被糟糕的设计。 索引优化应该是对查询性能优化最有效的手段了,索引能够轻易将查询性能提高几个数量级,最优的索引会比 较好的索引性能要好2个数量级。 1 索引的类型 (1) B-Tree 不出意外,这里提到的索引都是指 B-</div> </li> <li><a href="/article/1212.htm" title="日期函数" target="_blank">日期函数</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E5%87%BD%E6%95%B0/1.htm">日期函数</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2/1.htm">查询</a> <div>  ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 </div> </li> <li><a href="/article/1339.htm" title="线程优先级" target="_blank">线程优先级</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/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a> <div>多线程运行时需要定义线程运行的先后顺序。 线程优先级是用数字表示,数字越大线程优先级越高,取值在1到10,默认优先级为5。 实例: package com.bijian.study; /** * 因为在代码段当中把线程B的优先级设置高于线程A,所以运行结果先执行线程B的run()方法后再执行线程A的run()方法 * 但在实际中,JAVA的优先级不准,强烈不建议用此方法来控制执</div> </li> <li><a href="/article/1466.htm" title="适配器模式和代理模式的区别" target="_blank">适配器模式和代理模式的区别</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>一.简介        适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。      &nbs</div> </li> <li><a href="/article/1593.htm" title="【持久化框架MyBatis3三】MyBatis3 SQL映射配置文件" target="_blank">【持久化框架MyBatis3三】MyBatis3 SQL映射配置文件</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Mybatis3/1.htm">Mybatis3</a> <div> SQL映射配置文件一方面类似于Hibernate的映射配置文件,通过定义实体与关系表的列之间的对应关系。另一方面使用<select>,<insert>,<delete>,<update>元素定义增删改查的SQL语句, 这些元素包含三方面内容 1. 要执行的SQL语句 2. SQL语句的入参,比如查询条件 3. SQL语句的返回结果</div> </li> <li><a href="/article/1720.htm" title="oracle大数据表复制备份个人经验" target="_blank">oracle大数据表复制备份个人经验</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%A1%A8%E5%A4%87%E4%BB%BD/1.htm">大表备份</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%A1%A8%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6/1.htm">大表数据复制</a> <div>前提:    数据库仓库A(就拿oracle11g为例)中有两个用户user1和user2,现在有user1中有表ldm_table1,且表ldm_table1有数据5千万以上,ldm_table1中的数据是从其他库B(数据源)中抽取过来的,前期业务理解不够或者需求有变,数据有变动需要重新从B中抽取数据到A库表ldm_table1中。     </div> </li> <li><a href="/article/1847.htm" title="HTTP加速器varnish安装小记" target="_blank">HTTP加速器varnish安装小记</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/http+varnish+%E5%8A%A0%E9%80%9F/1.htm">http varnish 加速</a> <div>上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩! 苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了! Varnish 3.0.4下载地址: http://repo.varnish-cache.org/</div> </li> <li><a href="/article/1974.htm" title="java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度" target="_blank">java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class LongestSymmtricalLength { /* * Q75题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。 * 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 */ public static void main(String[] args) { Str</div> </li> <li><a href="/article/2101.htm" title="学习编程的一点感想" target="_blank">学习编程的一点感想</a> <span class="text-muted">Cb123456</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%83%B3/1.htm">感想</a><a class="tag" taget="_blank" href="/search/Gis/1.htm">Gis</a> <div>       写点感想,总结一些,也顺便激励一些自己.现在就是复习阶段,也做做项目.      本专业是GIS专业,当初觉得本专业太水,靠这个会活不下去的,所以就报了培训班。学习的时候,进入状态很慢,而且当初进去的时候,已经上到Java高级阶段了,所以.....,呵呵,之后有点感觉了,不过,还是不好好写代码,还眼高手低的,有</div> </li> <li><a href="/article/2228.htm" title="[能源与安全]美国与中国" target="_blank">[能源与安全]美国与中国</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%83%BD%E6%BA%90/1.htm">能源</a> <div>      现在有一个局面:地球上的石油只剩下N桶,这些油只够让中国和美国这两个国家中的一个顺利过渡到宇宙时代,但是如果这两个国家为争夺这些石油而发生战争,其结果是两个国家都无法平稳过渡到宇宙时代。。。。而且在战争中,剩下的石油也会被快速消耗在战争中,结果是两败俱伤。。。       在这个大</div> </li> <li><a href="/article/2355.htm" title="SEMI-JOIN执行计划突然变成HASH JOIN了 的原因分析" target="_blank">SEMI-JOIN执行计划突然变成HASH JOIN了 的原因分析</a> <span class="text-muted">cwqcwqmax9</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>甲说: A B两个表总数据量都很大,在百万以上。 idx1  idx2字段表示是索引字段 A B 两表上都有 col1字段表示普通字段 select xxx from A where A.idx1 between mmm and nnn      and exists (select 1 from B where B.idx2 =</div> </li> <li><a href="/article/2482.htm" title="SpringMVC-ajax返回值乱码解决方案" target="_blank">SpringMVC-ajax返回值乱码解决方案</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a><a class="tag" taget="_blank" href="/search/response/1.htm">response</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/1.htm">中文乱码</a> <div>  SpringMVC-ajax返回值乱码解决方案   一:(自己总结,测试过可行) ajax返回如果含有中文汉字,则使用:(如下例:) @RequestMapping(value="/xxx.do")       public @ResponseBody void getPunishReasonB</div> </li> <li><a href="/article/2609.htm" title="Linux系统中查看日志的常用命令" target="_blank">Linux系统中查看日志的常用命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a> <div>因为在日常的工作中,出问题的时候查看日志是每个管理员的习惯,作为初学者,为了以后的需要,我今天将下面这些查看命令共享给各位 cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信</div> </li> <li><a href="/article/2736.htm" title="[应用结构]应用" target="_blank">[应用结构]应用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>应用主体 应用主体是管理 Yii 应用系统整体结构和生命周期的对象。 每个Yii应用系统只能包含一个应用主体,应用主体在 入口脚本中创建并能通过表达式 \Yii::$app 全局范围内访问。 补充: 当我们说"一个应用",它可能是一个应用主体对象,也可能是一个应用系统,是根据上下文来决定[译:中文为避免歧义,Application翻译为应</div> </li> <li><a href="/article/2863.htm" title="assertThat用法" target="_blank">assertThat用法</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/assertThat/1.htm">assertThat</a> <div>junit4.0  assertThat用法 一般匹配符1、assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) ); 注释: allOf匹配符表明如果接下来的所有条件必须都成立测试才通过,相当于“与”(&&) 2、assertThat( testedNumber, anyOf( g</div> </li> <li><a href="/article/2990.htm" title="android点滴2" target="_blank">android点滴2</a> <span class="text-muted">gundumw100</span> <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/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8/1.htm">网络应用</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a><a class="tag" taget="_blank" href="/search/HTC/1.htm">HTC</a> <div>如何让Drawable绕着中心旋转? Animation a = new RotateAnimation(0.0f, 360.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f); a.setRepeatCount(-1); a.setDuration(1000); 如何控制Andro</div> </li> <li><a href="/article/3117.htm" title="超简洁的CSS下拉菜单" target="_blank">超简洁的CSS下拉菜单</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>效果体验:http://hovertree.com/texiao/css/3.htmHTML文件: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>简洁的HTML+CSS下拉菜单-HoverTree</title></div> </li> <li><a href="/article/3244.htm" title="kafka consumer防止数据丢失" target="_blank">kafka consumer防止数据丢失</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/offset+commit/1.htm">offset commit</a> <div>kafka最初是被LinkedIn设计用来处理log的分布式消息系统,因此它的着眼点不在数据的安全性(log偶尔丢几条无所谓),换句话说kafka并不能完全保证数据不丢失。   尽管kafka官网声称能够保证at-least-once,但如果consumer进程数小于partition_num,这个结论不一定成立。   考虑这样一个case,partiton_num=2</div> </li> <li><a href="/article/3371.htm" title="@Repository、@Service、@Controller 和 @Component" target="_blank">@Repository、@Service、@Controller 和 @Component</a> <span class="text-muted">mhtbbx</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a> <div>@Repository、@Service、@Controller 和 @Component 将类标识为Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类</div> </li> <li><a href="/article/3498.htm" title="java 多线程高并发读写控制 误区" target="_blank">java 多线程高并发读写控制 误区</a> <span class="text-muted">qifeifei</span> <a class="tag" taget="_blank" href="/search/java+thread/1.htm">java thread</a> <div>先看一下下面的错误代码,对写加了synchronized控制,保证了写的安全,但是问题在哪里呢? public class testTh7 { private String data; public String read(){ System.out.println(Thread.currentThread().getName() + "read data " </div> </li> <li><a href="/article/3625.htm" title="mongodb replica set(副本集)设置步骤" target="_blank">mongodb replica set(副本集)设置步骤</a> <span class="text-muted">tcrct</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> <div>网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz tar -zxvf mongodb-linux-x86_64-2.6.0.t</div> </li> <li><a href="/article/3752.htm" title="rust学习笔记" target="_blank">rust学习笔记</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">学习笔记</a> <div>1.rust里绑定变量是let,默认绑定了的变量是不可更改的,所以如果想让变量可变就要加上mut。 let x = 1; let mut y = 2; 2.match 相当于erlang中的case,但是case的每一项后都是分号,但是rust的match却是逗号。 3.match 的每一项最后都要加逗号,但是最后一项不加也不会报错,所有结尾加逗号的用法都是类似。 4.每个语句结尾都要加分</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>