正则表达式括号的作用

本文摘抄自javascript正则表达式迷你书

正则表达式是匹配模式,要么匹配字符,要么匹配位置

1. 分组和分支结构

这二者是括号最直觉的作用,也是最原始的功能,强调括号内的正则是一个整体,即提供子表达式

1.1 分组

我们知道 /a+/ 匹配连续出现的 "a",而要匹配连续出现的 "ab" 时,需要使用 /(ab)+/

其中括号是提供分组功能,使量词 + 作用于 "ab" 这个整体,测试如下:

var regex = /(ab)+/g;
var string = "ababa abbb ababab";
console.log( string.match(regex) );
// => ["abab", "ab", "ababab"]

1.2 分支结构

而在多选分支结构(p1|p2) 中,此处括号的作用也是不言而喻的,提供了分支表达式的所有可能

比如,要匹配如下的字符串:

I love JavaScript
I love Regular Expression

可以使用正则:

var regex = /^I love (JavaScript|Regular Expression)$/;
console.log( regex.test("I love JavaScript") );
console.log( regex.test("I love Regular Expression") );
// => true
// => true

如果去掉正则中的括号,即:

/^I love JavaScript|Regular Expression$/

匹配字符串是 "I love JavaScript""Regular Expression",当然这不是我们想要的


2. 分组引用

这是括号一个重要的作用,有了它,我们就可以进行数据提取,以及更强大的替换操作

而要使用它带来的好处,必须配合使用实现环境的 API

以日期为例。假设格式是 yyyy-mm-dd 的,我们可以先写一个简单的正则:

var regex = /\d{4}-\d{2}-\d{2}/;

其可视化形式是:

然后再修改成括号版的:

var regex = /(\d{4})-(\d{2})-(\d{2})/;

其可视化形式是:

对比这两个可视化图片,我们发现,与前者相比,后者多了分组编号,如 Group #1

其实正则引擎也是这么做的,在匹配过程中,给每一个分组都开辟一个空间,用来存储每一个分组匹配到的
数据。

既然分组可以捕获数据,那么我们就可以使用它们

2.1 提取数据

比如提取出年、月、日,可以这么做:

var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";
console.log( string.match(regex) );
// => ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]

match返回的一个数组,第一个元素是整体匹配结果,然后是各个分组(括号里)匹配的
内容,然后是匹配下标,最后是输入的文本。另外,正则表达式是否有修饰符 gmatch
返回的数组格式是不一样的

另外也可以使用正则实例对象的 exec方法:

var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";
console.log( regex.exec(string) );
// => ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]

同时,也可以使用构造函数的全局属性 $1$9 来获取:

var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";

regex.test(string); // 正则操作即可,例如
// regex.exec(string);
// string.match(regex);

console.log(RegExp.$1); // "2017"
console.log(RegExp.$2); // "06"
console.log(RegExp.$3); // "12"

2.2 替换

比如,想把 yyyy-mm-dd 格式,替换成 mm/dd/yyyy 怎么做?

var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";
var result = string.replace(regex, "$2/$3/$1");
console.log(result);
// => "06/12/2017

其中 replace中的,第二个参数里用 $1$2$3 指代相应的分组。等价于如下的形式:

var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";
var result = string.replace(regex, function () {
  return RegExp.$2 + "/" + RegExp.$3 + "/" + RegExp.$1;
});
console.log(result);
// => "06/12/2017

也等价于:

var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";
var result = string.replace(regex, function (match, year, month, day) {
  return month + "/" + day + "/" + year;
});
console.log(result);
// => "06/12/2017"

3. 反向引用

除了使用相应 API来引用分组,也可以在正则本身里引用分组。但只能引用之前出现的分组,即反向引用

还是以日期为例

比如要写一个正则支持匹配如下三种格式:

2016-06-12
2016/06/12
2016.06.12

最先可能想到的正则是:

var regex = /\d{4}(-|\/|\.)\d{2}(-|\/|\.)\d{2}/;
var string1 = "2017-06-12";
var string2 = "2017/06/12";
var string3 = "2017.06.12";
var string4 = "2016-06/12";
console.log( regex.test(string1) ); // true
console.log( regex.test(string2) ); // true
console.log( regex.test(string3) ); // true
console.log( regex.test(string4) ); // true

其中 /. 需要转义。虽然匹配了要求的情况,但也匹配 "2016-06/12" 这样的数据

假设我们想要求分割符前后一致怎么办?此时需要使用反向引用:

var regex = /\d{4}(-|\/|\.)\d{2}\1\d{2}/;
var string1 = "2017-06-12";
var string2 = "2017/06/12";
var string3 = "2017.06.12";
var string4 = "2016-06/12";
console.log( regex.test(string1) ); // true
console.log( regex.test(string2) ); // true
console.log( regex.test(string3) ); // true
console.log( regex.test(string4) ); // false

其可视化形式是:

注意里面的 \1,表示的引用之前的那个分组 (-|\/|\.)。不管它匹配到什么(比如 -),\1 都匹配那个同样的具体某个字符

我们知道了 \1 的含义后,那么 \2\3 的概念也就理解了,即分别指代第二个和第三个分组

看到这里,此时,恐怕你会有几个问题

3.1 括号嵌套怎么办?

以左括号(开括号)为准。比如:

var regex = /^((\d)(\d(\d)))\1\2\3\4$/;
var string = "1231231233";
console.log( regex.test(string) ); // true
console.log( RegExp.$1 ); // 123
console.log( RegExp.$2 ); // 1
console.log( RegExp.$3 ); // 23
console.log( RegExp.$4 ); // 3

我们可以看看这个正则匹配模式:

  • 第一个字符是数字,比如说 "1"
  • 第二个字符是数字,比如说 "2"
  • 第三个字符是数字,比如说 "3"
  • 接下来的是 \1,是第一个分组内容,那么看第一个开括号对应的分组是什么,是 "123"
  • 接下来的是 \2,找到第2个开括号,对应的分组,匹配的内容是 "1"
  • 接下来的是 \3,找到第3个开括号,对应的分组,匹配的内容是 "23"
  • 最后的是 \4,找到第4个开括号,对应的分组,匹配的内容是 "3

此正则的可视化形式是:

3.2 \10 表示什么呢?

另外一个疑问可能是,即 \10 是表示第 10 个分组,还是 \1 和 0 呢?

答案是前者,虽然一个正则里出现 \10 比较罕见。测试如下:

var regex = /(1)(2)(3)(4)(5)(6)(7)(8)(9)(#) \10+/;
var string = "123456789# ######"
console.log( regex.test(string) );
// => true

如果真要匹配 \1 和 0 的话,请使用 (?:\1)0 或者 \1(?:0)

3.3 引用不存在的分组会怎样?

因为反向引用,是引用前面的分组,但我们在正则里引用了不存在的分组时,此时正则不会报错,只是匹配反向引用的字符本身。例如 \2,就匹配 "\2"。注意 "\2" 表示对 "2" 进行了转义

var regex = /\1\2\3\4\5\6\7\8\9/;
console.log( regex.test("\1\2\3\4\5\6\7\8\9") );
console.log( "\1\2\3\4\5\6\7\8\9".split("") );

Chrome 浏览器打印的结果(不同的浏览器和版本,打印的结果可能不一样):

3.4 分组后面有量词会怎样?

分组后面有量词的话,分组最终捕获到的数据是最后一次的匹配。比如如下的测试案例:

var regex = /(\d)+/;
var string = "12345";
console.log( string.match(regex) );
// => ["12345", "5", index: 0, input: "12345"]

从上面看出,分组(\d) 捕获的数据是 "5"。

同理对于反向引用,也是这样的。测试如下:

var regex = /(\d)+ \1/;
console.log( regex.test("12345 1") );
// => false
console.log( regex.test("12345 5") );
// => true

4. 非捕获括号

之前文中出现的括号,都会捕获它们匹配到的数据,以便后续引用,因此也称它们是捕获型分组和捕获型分
支。

如果只想要括号最原始的功能,但不会引用它,即,既不在 API里引用,也不在正则里反向引用。

此时可以使用非捕获括号 (?:p)(?:p1|p2|p3),例如本章第一个例子可以修改为:

var regex = /(?:ab)+/g;
var string = "ababa abbb ababab";
console.log( string.match(regex) );
// => ["abab", "ab", "ababab"]

同理,第二例子可以修改为:

var regex = /^I love (?:JavaScript|Regular Expression)$/;
console.log( regex.test("I love JavaScript") );
console.log( regex.test("I love Regular Expression") );
// => true
// => true

5. 相关案例

5.1 字符串 trim方法模拟

trim方法是去掉字符串的开头和结尾的空白符。有两种思路去做。

第一种,匹配到开头和结尾的空白符,然后替换成空字符。如:

function trim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}
console.log( trim(" foobar ") );
// => "foobar"

第二种,匹配整个字符串,然后用引用来提取出相应的数据:

function trim (str) {
  return str.replace(/^\s*(.*?)\s*$/g, "$1");
}
console.log( trim(" foobar ") );
// => "foobar"

这里使用了惰性匹配 *?,不然也会匹配最后一个空格之前的所有空格的

当然,前者效率高

5.2 将每个单词的首字母转换为大写

function titleize (str) {
  return str.toLowerCase().replace(/(?:^|\s)\w/g, function (c) {
    return c.toUpperCase();
  });
}
console.log( titleize('my name is epeli') );
// => "My Name Is Epeli"

思路是找到每个单词的首字母,当然这里不使用非捕获匹配也是可以的

5.3 驼峰化

function camelize (str) {
  return str.replace(/[-_\s]+(.)?/g, function (match, c) {
    return c ? c.toUpperCase() : '';
  });
}
console.log( camelize('-moz-transform') );
// => "MozTransform"

其中分组 (.) 表示首字母。单词的界定是,前面的字符可以是多个连字符、下划线以及空白符。正则后面
? 的目的,是为了应对 str尾部的字符可能不是单词字符,比如 str 是 '-moz-transform '

5.4 中划线化

function dasherize(str) {
  return str.replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase();
}
console.log(dasherize('MozTransform'));
// => "-moz-transform"

驼峰化的逆过程

5.5 HTML转义和反转义

// 将HTML特殊字符转换成等值的实体
function escapeHTML(str) {
  var escapeChars = {
    '<': 'lt',
    '>': 'gt',
    '"': 'quot',
    '&': 'amp',
    '\'': '#39'
  };

  return str.replace(new RegExp('[' + Object.keys(escapeChars).join('') + ']', 'g'),
    function (match) {
      return '&' + escapeChars[match] + ';';
    });
}

console.log(escapeHTML('
Blah blah blah
')); // => "<div>Blah blah blah</div>";

其中使用了用构造函数生成的正则,然后替换相应的格式就行了,这个跟本章没多大关系。

倒是它的逆过程,使用了括号,以便提供引用,也很简单,如下

// 实体字符转换为等值的HTML。
function unescapeHTML(str) {
  var htmlEntities = {
    nbsp: ' ',
    lt: '<',
    gt: '>',
    quot: '"',
    amp: '&',
    apos: '\''
  };

  return str.replace(/\&([^;]+);/g, function (match, key) {
    if (key in htmlEntities) {
      return htmlEntities[key];
    }
    return match;
  });
}

console.log(unescapeHTML('<div>Blah blah blah</div>'));
// => "
Blah blah blah

通过 key 获取相应的分组引用,然后作为对象的键。

5.6 匹配成对标签

要求匹配:

regular expression

laoyao bye bye

不匹配:wrong!</p></code></p> <p>匹配一个开标签,可以使用正则 <code><[^>]+></code>,</p> <p>匹配一个闭标签,可以使用 <code><\/[^>]+></code>,</p> <p>但是要求匹配成对标签,那就需要使用反向引用,如:</p> <pre><code class="js">var regex = /<([^>]+)>[\d\D]*<\/\1>/; var string1 = "<title>regular expression"; var string2 = "

laoyao bye bye

"; var string3 = "wrong!</p>"; console.log( regex.test(string1) ); // true console.log( regex.test(string2) ); // true console.log( regex.test(string3) ); // false </code></pre> <p>其中开标签 <code><[\^>]+></code> 改成 <code><([^>]+)></code>,使用括号的目的是为了后面使用反向引用,</p> <p>而提供分组。闭标签使用了反向引用,<code><\/\1></code>。</p> <p>另外,<code>[\d\D]</code>的意思是,这个字符是数字或者不是数字,因此,也就是匹配任意字符的意思。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1708980408927989760"></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">你可能感兴趣的:(正则表达式括号的作用)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1891102487805489152.htm" title="Wiki.js 集成 Artalk 评论系统配置指南" target="_blank">Wiki.js 集成 Artalk 评论系统配置指南</a> <span class="text-muted">运维小弟| srebro.cn</span> <a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%BA%93/1.htm">知识库</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%BA%93/1.htm">知识库</a><a class="tag" taget="_blank" href="/search/wiki.js/1.htm">wiki.js</a><a class="tag" taget="_blank" href="/search/wikijs/1.htm">wikijs</a> <div>Wiki.js集成Artalk评论系统配置指南一、Artalk核心优势开源性质采用MIT许可证的自托管评论系统,支持全平台集成数据控制评论数据存储在自有服务器,避免第三方服务依赖轻量化架构Go语言开发的后端服务,内存占用低于50MB二、DockerCompose部署方案部署文件docker-compose.yamlversion:'3.8'services:artalk:image:artalk/</div> </li> <li><a href="/article/1891101857934274560.htm" title="C语言:强符号和弱符号" target="_blank">C语言:强符号和弱符号</a> <span class="text-muted">Dola_Pan</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/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>我们在编写代码的过程中经常会遇到一种叫做符号重复定义(MultipleDefinition)的错误,这是因为在多个源文件中定义了名字相同的全局变量,并且都将它们初始化了。例如,在a.c中定义了全局变量global:intglobal=10;在b.c中又对global进行了定义:intglobal=20;那么在链接时就会出现下面的错误:b.o:multipledefinitionof`global'</div> </li> <li><a href="/article/1891101856248164352.htm" title="mybatis-plus逆向code generator pgsql实践" target="_blank">mybatis-plus逆向code generator pgsql实践</a> <span class="text-muted">松树戈</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/1.htm">工具使用</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a> <div>mybatis-plus逆向codegeneratorpgsql实践环境准备重要工具的版本供参考pom依赖待逆向的SQL配置文件CodeGenerator配置类配置类说明环境准备重要工具的版本jdk1.8.0_131springboot2.7.6mybatis-plus3.5.7pgsql14.15供参考pom依赖4.0.0com.tghparent-demo0.0.1-SNAPSHOTparen</div> </li> <li><a href="/article/1891101604044664832.htm" title="Vue 2 路由指南:从基础到高级" target="_blank">Vue 2 路由指南:从基础到高级</a> <span class="text-muted">鸡吃丸子</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</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%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a> <div>注意:对于代码看不清的部分,用鼠标选中就能看到了,背景颜色和字体颜色过于接近,我也不知道怎么调,只能这样子先看着了一、VueRouter是什么?VueRouter是Vue.js官方的路由管理器,它允许你在单页面应用中通过不同的URL显示不同的组件。VueRouter与Vue.js核心深度集成,提供了声明式的路由定义、嵌套路由、动态路由、导航守卫等功能,帮助开发者构建复杂的单页面应用。二、安装与配置</div> </li> <li><a href="/article/1891101351841165312.htm" title="Python 自动排班表格(代码分享)" target="_blank">Python 自动排班表格(代码分享)</a> <span class="text-muted">趣享先生</span> <a class="tag" taget="_blank" href="/search/Python%E6%A1%88%E4%BE%8B%E5%88%86%E4%BA%AB%E4%B8%93%E6%A0%8F/1.htm">Python案例分享专栏</a><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>✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。个人主页:JavaFans的博客个人信条:不迁怒,不贰过。小知识,大智慧。当前专栏:Java案例分享专栏✨特色专栏:国学周更-心性养成之路本文内容:Python自动排班表格(代码分享) 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。文章目录前言问题描述解决步骤1</div> </li> <li><a href="/article/1891101099654443008.htm" title="数据守护者:备份文件的重要性及自动化备份实践" target="_blank">数据守护者:备份文件的重要性及自动化备份实践</a> <span class="text-muted">Konkakou</span> <a class="tag" taget="_blank" href="/search/%E7%94%B5%E8%84%91%E6%96%87%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD/1.htm">电脑文件自动备份</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD/1.htm">文件自动备份</a><a class="tag" taget="_blank" href="/search/win10%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD/1.htm">win10自动备份</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E9%94%AE%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6/1.htm">一键备份文件</a><a class="tag" taget="_blank" href="/search/%E5%85%A8%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD/1.htm">全自动备份</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E5%85%A8%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BD/1.htm">文件全自动备份</a> <div>在信息化社会,数据已成为企业运营和个人生活的重要组成部分。无论是企业的核心业务数据,还是个人的珍贵照片、重要文档,数据的丢失或损坏都可能带来无法估量的损失。因此,备份文件的重要性愈发凸显,它不仅是数据安全的最后一道防线,更是确保业务连续性和个人隐私安全的基石。电脑文件自动备份一、备份文件的重要性备份文件,顾名思义,就是将原始数据复制到另一个存储介质或位置,以便在原始数据丢失或损坏时能够恢复。这一简</div> </li> <li><a href="/article/1891100218502475776.htm" title="学习STM32的理由" target="_blank">学习STM32的理由</a> <span class="text-muted">zzxyd_qiao</span> <a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a> <div>为什么要写这篇文章呢?这是一篇关于嵌入式入门的文章,因为我在进入嵌入式这个领域之前,也是遇到过非常多非常多的困难,所以呢,希望写下这篇文章,让大家看看少走弯路。首先,我打算先列举一下大家问得最多的几个问题,然后我们一起由问题切入进行一些讨论。问题1:我是学单片机好还是直接学STM32好???问题2:STM32如何才能快速入门?问题3:为什么是STM32呢?为什么不是ARM9,ARM11呢?下面我将</div> </li> <li><a href="/article/1891100091863855104.htm" title="Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)" target="_blank">Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)</a> <span class="text-muted">Data+Science+Insight</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6%E4%BB%8E0%E5%88%B01/1.htm">数据科学从0到1</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/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>Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)目录Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)#导入需要的包和库、matplotlib和seaborn可视化图像的全局</div> </li> <li><a href="/article/1891099084517863424.htm" title="docker 安装mysql" target="_blank">docker 安装mysql</a> <span class="text-muted">hunter199010</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>1、下载镜像我这里下载的是mysql5.7.82、创建MySQL专用目录mkdir/data/mysql1cd/data/mysql1mkdirconfmkdirdatamkdirlog下面这个是我的启动命令sudodockerrun-d-p3306:3306--restart=always-v/data/mysql1/log:/var/log/mysql-v/data/mysql1/data:/</div> </li> <li><a href="/article/1891098327034949632.htm" title="理论一、大模型—概念" target="_blank">理论一、大模型—概念</a> <span class="text-muted">伯牙碎琴</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a> <div>一、总述大模型通常指的是参数规模庞大、训练难度较高的人工智能模型。随着深度学习技术的发展,研究人员和企业越来越倾向于构建更大的模型,以提高模型的性能和泛化能力。这些大模型往往需要大量的数据和计算资源来训练,并且在实际应用中通常表现出色。大模型全称是大型语言模型(LLM,LargeLanguageModel),这个“大”主要指模型结构容量大,结构中的参数多,用于预训练大模型的数据量大。一个大模型可以</div> </li> <li><a href="/article/1891098328876249088.htm" title="一、大模型微调的前沿技术与应用" target="_blank">一、大模型微调的前沿技术与应用</a> <span class="text-muted">伯牙碎琴</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BE%AE%E8%B0%83/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/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E8%B0%83/1.htm">微调</a><a class="tag" taget="_blank" href="/search/Deepseek/1.htm">Deepseek</a> <div>大模型微调的前沿技术与应用随着大规模预训练模型(如GPT、BERT、T5等)的广泛应用,大模型微调(Fine-Tuning,FT)成为了提升模型在特定任务中性能的关键技术。通过微调,开发者可以根据实际需求调整预训练模型的参数,使其更好地适应特定应用场景。本文将介绍大模型微调技术的前沿发展,分析不同微调方法的特点、适用场景以及优缺点,并对它们进行系统分类。微调技术的重要性大模型微调能够帮助开发者根据</div> </li> <li><a href="/article/1891097445723598848.htm" title="【bug】spacedesk Display Driver has expired!Please download the most recent driver version on https" target="_blank">【bug】spacedesk Display Driver has expired!Please download the most recent driver version on https</a> <span class="text-muted">Java手札</span> <a class="tag" taget="_blank" href="/search/Java%E5%90%8E%E7%AB%AF/1.htm">Java后端</a><a class="tag" taget="_blank" href="/search/bug/1.htm">bug</a> <div>#扩展屏软件出问题#场景:出现扩展屏黑屏解决:重新下载软件,清除设置,重启设备软件:https://allall02.baidupcs.com/file/9其他问题:在主控电脑安装的是控制台在扩展屏安装的是可视屏软件需要设置主屏幕和副屏幕:这个排列代表的是鼠标的移动方向,可以自定义更改。如果副屏幕的分辨率不够也需要更改。看自己使用的是啥。</div> </li> <li><a href="/article/1891095934012551168.htm" title="kamailio中的PV,PV Headers,App Lua,Dialog,UUID,Dianplan等模块的讲解" target="_blank">kamailio中的PV,PV Headers,App Lua,Dialog,UUID,Dianplan等模块的讲解</a> <span class="text-muted">狂爱代码的码农</span> <a class="tag" taget="_blank" href="/search/VOIP%E9%82%A3%E4%BA%9B%E4%BA%8B/1.htm">VOIP那些事</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a><a class="tag" taget="_blank" href="/search/kamailio/1.htm">kamailio</a> <div>课程总结今天的课程围绕Kamailio模块和SIP服务器类型展开,详细讲解了多个核心模块的功能、参数和使用方法,并深入探讨了SIP中B2BUA和ProxyServer的区别与应用场景。以下是今天课程的主要内容总结:今日主题Kamailio模块与SIP服务器类型详解重要知识点总结模块/主题重要知识点备注PV模块-伪变量的定义与使用-pv_isset、pv_unset、is_int等函数的使用伪变量用</div> </li> <li><a href="/article/1891095555027824640.htm" title="2025超全整理!H3C路由交换核心命令宝典,助你轻松玩转网络配置" target="_blank">2025超全整理!H3C路由交换核心命令宝典,助你轻松玩转网络配置</a> <span class="text-muted">wljslmz</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E6%8A%80%E6%9C%AF/1.htm">网络技术</a><a class="tag" taget="_blank" href="/search/H3C/1.htm">H3C</a><a class="tag" taget="_blank" href="/search/%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">路由器</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E6%8D%A2%E6%9C%BA/1.htm">交换机</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E4%BB%A4%E5%A4%A7%E5%85%A8/1.htm">命令大全</a> <div>H3C(新华三)作为国内网络设备的领军品牌,其路由器和交换机广泛应用于企业、数据中心及运营商网络。掌握H3C设备的配置命令,是网络工程师的必备技能!本文结合2025年最新技术文档与实战经验,系统梳理基础配置、VLAN管理、路由协议、IRF堆叠、安全加固等场景的核心命令,助你从“小白”进阶为“大神”!文末还附赠高频踩坑指南,速速收藏⭐!一、基础配置篇:快速上手H3C设备1.设备初始化与视图切换进入系</div> </li> <li><a href="/article/1891094547786690560.htm" title="计算机一级wpsoffice知识点,计算机一级考试WPSOffice考试大纲" target="_blank">计算机一级wpsoffice知识点,计算机一级考试WPSOffice考试大纲</a> <span class="text-muted">weixin_39747293</span> <div>◆基本要求1.具有使用微型计算机的基础知识(包括计算机病毒的防治常识)。2.了解微型计算机系统的组成和各组成部分的功能。3.了解操作系统的基本功能和作用,掌握Windows的基本操作和应用。4.了解文字处理的基本知识,掌握文字处理软件“金山文字2003”的基本操作和应用,熟练掌握一种汉字(键盘)输入方法。5.了解电子表格软件的基本知识,掌握电子表格软件“金山表格2003”的基本操作和应用。6.了解</div> </li> <li><a href="/article/1891094418874757120.htm" title="python如何将数据生成excel_Python如何将数据导出excel的技巧分享" target="_blank">python如何将数据生成excel_Python如何将数据导出excel的技巧分享</a> <span class="text-muted">weixin_39528697</span> <div>本篇文章主要介绍了python技能之导出excel的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧本文介绍了python技能之导出excel的实例代码,正好能用到,写出来分享给大家作为一个数据分析师,下面的需求是经常会遇到的。从数据库或者现有的文本文件中提取符合要求的数据,做一个二次处理,处理完成后的数据最终存储到excel表格中供其他部门的人继续二次分析。在</div> </li> <li><a href="/article/1891094040657588224.htm" title="海康sip服务器地址_一篇文章涵盖-完整SIP协议操作流程" target="_blank">海康sip服务器地址_一篇文章涵盖-完整SIP协议操作流程</a> <span class="text-muted">OZARGPT</span> <a class="tag" taget="_blank" href="/search/%E6%B5%B7%E5%BA%B7sip%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9C%B0%E5%9D%80/1.htm">海康sip服务器地址</a> <div>完整SIP协议操作流程此部分使用一个简单示例介绍了SIP的基本操作。它实际上是一个学习辅导,没有包含任何正式的说明。第一个示例显示了SIP的基本功能:终端定位,希望通信的意愿,创建会话参数的协商和创建会话后会话拆线。图表1显示了一个典型的介于两个用户之间的SIP消息交互,两个用户分别是Alice和Bob。(每个消息都通过一个带字母F的标签来标注,文本号码说明一个标注号码)。在这个例子中,Alice</div> </li> <li><a href="/article/1891093536800043008.htm" title="9 个构建安全 PHP 应用的开发技巧" target="_blank">9 个构建安全 PHP 应用的开发技巧</a> <span class="text-muted">程序员阿凡提</span> <a class="tag" taget="_blank" href="/search/PHP%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B/1.htm">PHP实战教程</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a> <div>在软件开发的征程中,即便是那些身经百战、经验极为丰富的开发人员,也难免会遭遇种种始料未及的棘手挑战。有时,源自第三方API的数据格式混乱不堪,完全偏离预期;又或是用户输入一些稀奇古怪、让人摸不着头脑的字符串,令人防不胜防;还有可能隐藏着悄然引发安全漏洞的故障,在暗处伺机而动,给整个项目带来巨大风险。而在以灵活性著称、广受开发者青睐的PHP语言环境里,将安全性置于首位绝非可有可无的附加项,它实实在在</div> </li> <li><a href="/article/1891093158859698176.htm" title="千里马平台介绍(2)" target="_blank">千里马平台介绍(2)</a> <span class="text-muted">大道不孤,众行致远</span> <a class="tag" taget="_blank" href="/search/%E5%B9%B3%E5%8F%B0%E4%BB%8B%E7%BB%8D/1.htm">平台介绍</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>千里马平台的核心是微服务架构。微服务架构有很多种,我们锁定springCloud。服务注册与发现锁定nacos,网关为springgateway。选型曾经花了很多时间,做了很多比较,我认为这是目前最优组合。不选用这套架构的同学们可以转学了,大家不是一条道上的。版本选择也是个头痛问题,有关版本的问题可见版本说明千里马架构当前选择版本如下:​2.3.2.RELEASEHoxton.SR92.2.6.R</div> </li> <li><a href="/article/1891092906656198656.htm" title="自动驾驶系列—颠覆未来驾驶:深入解析自动驾驶线控转向系统技术" target="_blank">自动驾驶系列—颠覆未来驾驶:深入解析自动驾驶线控转向系统技术</a> <span class="text-muted">学步_技术</span> <a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/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%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%8E%A7%E7%B3%BB%E7%BB%9F/1.htm">线控系统</a> <div>欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。探索专栏:学步_技术的首页——持续学习,不断进步,让学习成为我们共同的习惯,让总结成为我们前进的动力。技术导航:人工智能:深入探讨人工智能领域核心技术。自动驾驶:分享自动</div> </li> <li><a href="/article/1891092276952756224.htm" title="学习计划:第三阶段(第七周)" target="_blank">学习计划:第三阶段(第七周)</a> <span class="text-muted">狐凄</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><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>目录第三阶段:继承与多态第7周:综合运用继承与多态周一:周二:周三:周四:周五:总结一、学习内容回顾(一)多层次类结构设计与实现(二)多态应用场景构建二、问题与解决(一)问题(二)解决方法三、学习成果四、后续学习展望第三阶段:继承与多态第7周:综合运用继承与多态周一:设计复杂类结构:设计一个包含多个层次继承关系的类结构,以“交通工具”为主题。首先设计一个“交通工具”父类,它具有通用属性如name(</div> </li> <li><a href="/article/1891091897930280960.htm" title="玩转代理模式" target="_blank">玩转代理模式</a> <span class="text-muted">清泓y</span> <a class="tag" taget="_blank" href="/search/%E5%85%AD%E5%A4%A7%E5%B8%B8%E8%A7%81%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">六大常见设计模式</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F/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/c%2B%2B/1.htm">c++</a> <div>文章目录什么是代理模式举例:代理模式结构代理模式适用场景实现方式代理模式的优缺点优点:缺点:什么是代理模式代理模式,主要用途就是代理一个某一个所需要的物件,但是我们不直接使用这个物件,我们用一个代理接口来代替我们使用这个物件。举例:信用卡是银行账户的代理,银行账户则是一大捆现金的代理。它们都实现了同样的接口,均可用于进行支付。消费者会非常满意,因为不必随身携带大量现金;商店老板同样会十分高兴,因为</div> </li> <li><a href="/article/1891091898848833536.htm" title="岛屿数量(leetcode200)" target="_blank">岛屿数量(leetcode200)</a> <span class="text-muted">友人yq</span> <a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2/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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>题目给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。思考采用bfs。过程为:在遍历整个图的时候,在遍历到1时,进行广度搜索遍历,搜索遍历所遇到的1全改为0;当这次广度遍历不再遍历到1时,则本次广度遍历结束,岛屿数量加一。遍历完整个图,只需要知道</div> </li> <li><a href="/article/1891091771623010304.htm" title="VS中C/C++的编译流程(非常详细)" target="_blank">VS中C/C++的编译流程(非常详细)</a> <span class="text-muted">清泓y</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>文章目录前言一、.CPP文件和.OBJ文件1..CPP文件2..obj文件二、编译过程三、链接过程四、C/C++中提供的一些特性简要说明编译流程前言编译过程就是将源文件中的源代码翻译成机器语言,保存到目标文件中。如果编译通过,就会把CPP文件转换成OBJ文件一、.CPP文件和.OBJ文件1..CPP文件每个cpp就是一个编译单元,每个编译单元相互之间是独立且相互不知的。一个编译单元是指一个.CPP</div> </li> <li><a href="/article/1891091015947841536.htm" title="根据deepseek模型微调训练自动驾驶模型及数据集的思路" target="_blank">根据deepseek模型微调训练自动驾驶模型及数据集的思路</a> <span class="text-muted">ywfwyht</span> <a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/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%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>以下是使用DeepSeek模型微调训练自动驾驶模型的详细步骤和代码示例。本流程假设你已有自动驾驶领域的数据集(如驾驶指令、传感器数据等),并基于PyTorch框架实现。Step1:环境准备#安装依赖库pipinstalltorchtransformersdatasetsnumpypandasStep2:数据准备假设数据集格式为JSON,包含输入文本(传感器/场景描述)和输出控制指令://data/</div> </li> <li><a href="/article/1891090887568584704.htm" title="Open3D C++系列教程 (七)继承窗口类" target="_blank">Open3D C++系列教程 (七)继承窗口类</a> <span class="text-muted">吉拉尔</span> <a class="tag" taget="_blank" href="/search/Open3D-GUI/1.htm">Open3D-GUI</a><a class="tag" taget="_blank" href="/search/c%2B%2B/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><a class="tag" taget="_blank" href="/search/gui/1.htm">gui</a><a class="tag" taget="_blank" href="/search/open3d/1.htm">open3d</a> <div>Open3DC++系列教程(七)继承窗口类前置:Open3DC++系列教程(一)环境搭建Open3DC++系列教程(二)第一个GUI窗口Open3DC++系列教程(三)关于程序异常退出的探讨Open3DC++系列教程(四)动画Tick事件Open3DC++系列教程(五)创建菜单栏Open3DC++系列教程(六)菜单栏-文件拾取在之前的几节中介绍了直接在main中使用gui::Window和gui:</div> </li> <li><a href="/article/1891090889548296192.htm" title="【kafka系列】Exactly Once语义" target="_blank">【kafka系列】Exactly Once语义</a> <span class="text-muted">漫步者TZ</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>目录1.Exactly-Once语义的定义2.Kafka实现Exactly-Once的机制3.端到端Exactly-Once示例场景描述3.1生产者配置与代码3.2消费者配置与代码4.异常场景与Exactly-Once保障场景1:生产者发送消息后宕机场景2:消费者处理消息后宕机场景3:Broker宕机5.关键实现细节6.总结1.Exactly-Once语义的定义Exactly-Once(精确一次)</div> </li> <li><a href="/article/1891090884112478208.htm" title="Java 实现拖拽列表更新排序" target="_blank">Java 实现拖拽列表更新排序</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>拖拽列表更新排序,接口提供给前端这个功能主要是需要的算法逻辑很多图解:如在前端页面上想把id=5拖拽到id=3上拖拽之后的效果:解析图例:代码示例:DevToCoding|Java面试指南、学习笔记/***拖拽数据更新排序*@paramcurrentId当前数据id*@paramtargetId目标数据id*@return*/@RequestMapping("/sort/{currentId}/{</div> </li> <li><a href="/article/1891090380359790592.htm" title="【C++】STL之string类源码剖析" target="_blank">【C++】STL之string类源码剖析</a> <span class="text-muted">AllinTome</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/STL/1.htm">STL</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%B1%BB%E4%B8%8E%E5%AF%B9%E8%B1%A1/1.htm">类与对象</a><a class="tag" taget="_blank" href="/search/string/1.htm">string</a> <div>目录概述源码MyString.htest.cpp概述string是字符串类,出现早于STL,不过string完全符合STL标准库的语法规则,故将string类也归于STL中string类实现的功能有字符串元素的随机访问、迭代器遍历、字符串追加/删减/查找、字符串随机插入、字符串扩容与修改长度、重载输入/输出运算符算法设计:利用构造临时对象、自定义swap函数,完成string对象的拷贝、赋值构造,</div> </li> <li><a href="/article/1891090002285228032.htm" title="Python数据处理之导入导出Excel数据" target="_blank">Python数据处理之导入导出Excel数据</a> <span class="text-muted">master_chenchengg</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%83%BD%E5%8A%9B%E6%8F%90%E5%8D%87/1.htm">能力提升</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">面试宝典</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a><a class="tag" taget="_blank" href="/search/IT%E4%BF%A1%E6%81%AF%E5%8C%96/1.htm">IT信息化</a> <div>Python数据处理之导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档?准备工作:让Python与Excel握手言欢数据入境:把Excel表格里的宝藏带入Python世界数据出境:将Python分析结果优雅地送回Excel家园玩转数据:用Python对Excel数据进行清洗、转换和分析自动化魔法:编写Python脚本实现Excel数据处理自动化跨界合作:整合其他</div> </li> <li><a href="/article/41.htm" title="html页面js获取参数值" target="_blank">html页面js获取参数值</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>1.js获取参数值js function GetQueryString(name) {      var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");      var r = windo</div> </li> <li><a href="/article/168.htm" title="MongoDB 在多线程高并发下的问题" target="_blank">MongoDB 在多线程高并发下的问题</a> <span class="text-muted">BigCat2013</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/DB/1.htm">DB</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%B9%B6%E5%8F%91/1.htm">高并发</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E5%A4%8D%E6%95%B0%E6%8D%AE/1.htm">重复数据</a> <div>最近项目用到 MongoDB , 主要是一些读取数据及改状态位的操作. 因为是结合了最近流行的 Storm进行大数据的分析处理,并将分析结果插入Vertica数据库,所以在多线程高并发的情境下, 会发现 Vertica 数据库中有部分重复的数据. 这到底是什么原因导致的呢?笔者开始也是一筹莫 展,重复去看 MongoDB 的 API , 终于有了新发现 : com.mongodb.DB 这个类有</div> </li> <li><a href="/article/295.htm" title="c++ 用类模版实现链表(c++语言程序设计第四版示例代码)" target="_blank">c++ 用类模版实现链表(c++语言程序设计第四版示例代码)</a> <span class="text-muted">CrazyMizzz</span> <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/C%2B%2B/1.htm">C++</a> <div>#include<iostream> #include<cassert> using namespace std; template<class T> class Node { private: Node<T> * next; public: T data; </div> </li> <li><a href="/article/422.htm" title="最近情况" target="_blank">最近情况</a> <span class="text-muted">麦田的设计者</span> <a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%85%A8/1.htm">感慨</a><a class="tag" taget="_blank" href="/search/%E8%80%83%E8%AF%95/1.htm">考试</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a> <div>   在五月黄梅天的岁月里,一年两次的软考又要开始了。到目前为止,我已经考了多达三次的软考,最后的结果就是通过了初级考试(程序员)。人啊,就是不满足,考了初级就希望考中级,于是,这学期我就报考了中级,明天就要考试。感觉机会不大,期待奇迹发生吧。这个学期忙于练车,写项目,反正最后是一团糟。后天还要考试科目二。这个星期真的是很艰难的一周,希望能快点度过。   </div> </li> <li><a href="/article/549.htm" title="linux系统中用pkill踢出在线登录用户" target="_blank">linux系统中用pkill踢出在线登录用户</a> <span class="text-muted">被触发</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍所以需要有时踢出指定的用户 1/#who   查出当前有那些终端登录(用 w 命令更详细) # who root     pts/0        2010-10-28 09:36 (192</div> </li> <li><a href="/article/676.htm" title="仿QQ聊天第二版" target="_blank">仿QQ聊天第二版</a> <span class="text-muted">肆无忌惮_</span> <a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a> <div>在第一版之上的改进内容:  第一版链接: http://479001499.iteye.com/admin/blogs/2100893   用map存起来号码对应的聊天窗口对象,解决私聊的时候所有消息发到一个窗口的问题. 增加ViewInfo类,这个是信息预览的窗口,如果是自己的信息,则可以进行编辑.   信息修改后上传至服务器再告诉所有用户,自己的窗口</div> </li> <li><a href="/article/803.htm" title="java读取配置文件" target="_blank">java读取配置文件</a> <span class="text-muted">知了ing</span> <div>1,java读取.properties配置文件 InputStream in; try { in = test.class.getClassLoader().getResourceAsStream("config/ipnetOracle.properties");//配置文件的路径 Properties p = new Properties()</div> </li> <li><a href="/article/930.htm" title="__attribute__ 你知多少?" target="_blank">__attribute__ 你知多少?</a> <span class="text-muted">矮蛋蛋</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/gcc/1.htm">gcc</a> <div>原文地址: http://www.cnblogs.com/astwish/p/3460618.html GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。 __attribute__ 书写特征是:</div> </li> <li><a href="/article/1057.htm" title="jsoup使用笔记" target="_blank">jsoup使用笔记</a> <span class="text-muted">alleni123</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/JSoup/1.htm">JSoup</a> <div><dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.3</version> </dependency> 2014/08/28 今天遇到这种形式, </div> </li> <li><a href="/article/1184.htm" title="JAVA中的集合 Collectio 和Map的简单使用及方法" target="_blank">JAVA中的集合 Collectio 和Map的简单使用及方法</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/map/1.htm">map</a><a class="tag" taget="_blank" href="/search/set/1.htm">set</a> <div>         List ,set ,map的使用方法和区别 java容器类类库的用途是保存对象,并将其分为两个概念:     Collection集合:一个独立的序列,这些序列都服从一条或多条规则;List必须按顺序保存元素  ,set不能重复元素;Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的</div> </li> <li><a href="/article/1311.htm" title="杀LINUX的JOB进程" target="_blank">杀LINUX的JOB进程</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a> <div>今天发现数据库一个JOB一直在执行,都执行了好几个小时还在执行,所以想办法给删除掉   系统环境:    ORACLE 10G    Linux操作系统   操作步骤如下: 第一步.查询出来那个job在运行,找个对应的SID字段 select * from dba_jobs_running--找到job对应的sid &n</div> </li> <li><a href="/article/1438.htm" title="Spring AOP详解" target="_blank">Spring AOP详解</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a> <div>        最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。例如,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智。 1.对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用</div> </li> <li><a href="/article/1565.htm" title="[Gson六]Gson类型适配器(TypeAdapter)" target="_blank">[Gson六]Gson类型适配器(TypeAdapter)</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Adapter/1.htm">Adapter</a> <div>TypeAdapter的使用动机  Gson在序列化和反序列化时,默认情况下,是按照POJO类的字段属性名和JSON串键进行一一映射匹配,然后把JSON串的键对应的值转换成POJO相同字段对应的值,反之亦然,在这个过程中有一个JSON串Key对应的Value和对象之间如何转换(序列化/反序列化)的问题。   以Date为例,在序列化和反序列化时,Gson默认使用java.</div> </li> <li><a href="/article/1692.htm" title="【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行" target="_blank">【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/driver/1.htm">driver</a> <div>Driver Program是用户编写的提交给Spark集群执行的application,它包含两部分 作为驱动: Driver与Master、Worker协作完成application进程的启动、DAG划分、计算任务封装、计算任务分发到各个计算节点(Worker)、计算资源的分配等。 计算逻辑本身,当计算任务在Worker执行时,执行计算逻辑完成application的计算任务 </div> </li> <li><a href="/article/1819.htm" title="nginx 经验总结" target="_blank">nginx 经验总结</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/nginx+%E6%80%BB%E7%BB%93/1.htm">nginx 总结</a> <div>   深感nginx的强大,只学了皮毛,把学下的记录。    获取Header 信息,一般是以$http_XX(XX是小写)            获取body,通过接口,再展开,根据K取V    获取uri,以$arg_XX      &n</div> </li> <li><a href="/article/1946.htm" title="轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点" target="_blank">轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a> <div> import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ExoWeb { public static void main(String[] args) { ExoWeb ew=new ExoWeb(); System.out.pri</div> </li> <li><a href="/article/2073.htm" title="Netty源码学习-Java-NIO-Reactor" target="_blank">Netty源码学习-Java-NIO-Reactor</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/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div>Netty里面采用了NIO-based Reactor Pattern 了解这个模式对学习Netty非常有帮助 参考以下两篇文章: http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf </div> </li> <li><a href="/article/2200.htm" title="AOP通俗理解" target="_blank">AOP通俗理解</a> <span class="text-muted">cngolon</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a> <div>1.我所知道的aop     初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和 我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而 已。 2.为什么用aop&nb</div> </li> <li><a href="/article/2327.htm" title="cursor variable 实例" target="_blank">cursor variable 实例</a> <span class="text-muted">ctrain</span> <a class="tag" taget="_blank" href="/search/variable/1.htm">variable</a> <div> create or replace procedure proc_test01 as type emp_row is record( empno emp.empno%type, ename emp.ename%type, job emp.job%type, mgr emp.mgr%type, hiberdate emp.hiredate%type, sal emp.sal%t</div> </li> <li><a href="/article/2454.htm" title="shell报bash: service: command not found解决方法" target="_blank">shell报bash: service: command not found解决方法</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/service/1.htm">service</a><a class="tag" taget="_blank" href="/search/jps/1.htm">jps</a> <div>今天在执行一个脚本时,本来是想在脚本中启动hdfs和hive等程序,可以在执行到service hive-server start等启动服务的命令时会报错,最终解决方法记录一下:   脚本报错如下: ./olap_quick_intall.sh: line 57: service: command not found ./olap_quick_intall.sh: line 59</div> </li> <li><a href="/article/2581.htm" title="40个迹象表明你还是PHP菜鸟" target="_blank">40个迹象表明你还是PHP菜鸟</a> <span class="text-muted">dcj3sjt126com</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/PHP/1.htm">PHP</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/oop/1.htm">oop</a> <div>你是PHP菜鸟,如果你:1. 不会利用如phpDoc 这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如Zend Studio 或Eclipse PDT 视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准 ,以及通用约定,不能在项目开发周期里贯彻落实5. 不使用统一开发方式6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函</div> </li> <li><a href="/article/2708.htm" title="Android逐帧动画的实现" target="_blank">Android逐帧动画的实现</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>一、代码实现: private ImageView iv; private AnimationDrawable ad; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout</div> </li> <li><a href="/article/2835.htm" title="java远程调用linux的命令或者脚本" target="_blank">java远程调用linux的命令或者脚本</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ganymed-ssh2/1.htm">ganymed-ssh2</a> <div>转载请出自出处: http://eksliang.iteye.com/blog/2105862        Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)   使用步骤如下: 1.导包 官网下载: http://www.ganymed.ethz.ch/ssh2/ ma</div> </li> <li><a href="/article/2962.htm" title="adb端口被占用问题" target="_blank">adb端口被占用问题</a> <span class="text-muted">gqdy365</span> <a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a> <div>最近重新安装的电脑,配置了新环境,老是出现: adb server is out of date. killing... ADB server didn't ACK * failed to start daemon * 百度了一下,说是端口被占用,我开个eclipse,然后打开cmd,就提示这个,很烦人。 一个比较彻底的解决办法就是修改</div> </li> <li><a href="/article/3089.htm" title="ASP.NET使用FileUpload上传文件" target="_blank">ASP.NET使用FileUpload上传文件</a> <span class="text-muted">hvt</span> <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/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/webform/1.htm">webform</a> <div>前台代码: <asp:FileUpload ID="fuKeleyi" runat="server" /> <asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" /></div> </li> <li><a href="/article/3216.htm" title="代码之谜(四)- 浮点数(从惊讶到思考)" target="_blank">代码之谜(四)- 浮点数(从惊讶到思考)</a> <span class="text-muted">justjavac</span> <a class="tag" taget="_blank" href="/search/%E6%B5%AE%E7%82%B9%E6%95%B0/1.htm">浮点数</a><a class="tag" taget="_blank" href="/search/%E7%B2%BE%E5%BA%A6/1.htm">精度</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E4%B9%8B%E8%B0%9C/1.htm">代码之谜</a><a class="tag" taget="_blank" href="/search/IEEE/1.htm">IEEE</a> <div>在『代码之谜』系列的前几篇文章中,很多次出现了浮点数。 浮点数在很多编程语言中被称为简单数据类型,其实,浮点数比起那些复杂数据类型(比如字符串)来说, 一点都不简单。 单单是说明 IEEE浮点数 就可以写一本书了,我将用几篇博文来简单的说说我所理解的浮点数,算是抛砖引玉吧。 一次面试 记得多年前我招聘 Java 程序员时的一次关于浮点数、二分法、编码的面试, 多年以后,他已经称为了一名很出色的</div> </li> <li><a href="/article/3343.htm" title="数据结构随记_1" target="_blank">数据结构随记_1</a> <span class="text-muted">lx.asymmetric</span> <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%AC%94%E8%AE%B0/1.htm">笔记</a> <div>第一章   1.数据结构包括数据的 逻辑结构、数据的物理/存储结构和数据的逻辑关系这三个方面的内容。 2.数据的存储结构可用四种基本的存储方法表示,它们分别是 顺序存储、链式存储 、索引存储 和 散列存储。 3.数据运算最常用的有五种,分别是  查找/检索、排序、插入、删除、修改。 4.算法主要有以下五个特性:  输入、输出、可行性、确定性和有穷性。 5.算法分析的</div> </li> <li><a href="/article/3470.htm" title="linux的会话和进程组" target="_blank">linux的会话和进程组</a> <span class="text-muted">网络接口</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>会话: 一个或多个进程组。起于用户登录,终止于用户退出。此期间所有进程都属于这个会话期。会话首进程:调用setsid创建会话的进程1.规定组长进程不能调用setsid,因为调用setsid后,调用进程会成为新的进程组的组长进程.如何保证? 先调用fork,然后终止父进程,此时由于子进程的进程组ID为父进程的进程组ID,而子进程的ID是重新分配的,所以保证子进程不会是进程组长,从而子进程可以调用se</div> </li> <li><a href="/article/3597.htm" title="二维数组 元素的连续求解" target="_blank">二维数组 元素的连续求解</a> <span class="text-muted">1140566087</span> <a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/ACM/1.htm">ACM</a> <div>import java.util.HashMap; public class Title { public static void main(String[] args){ f(); } // 二位数组的应用 //12、二维数组中,哪一行或哪一列的连续存放的0的个数最多,是几个0。注意,是“连续”。 public static void f(){ </div> </li> <li><a href="/article/3724.htm" title="也谈什么时候Java比C++快" target="_blank">也谈什么时候Java比C++快</a> <span class="text-muted">windshome</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a> <div>  刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。   你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢?   我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C</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>