1.正则表达式基础
1.1 创建正则表达式
1.1.1 使用一个正则表达式字面量
const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi;
1.1.2 调用RegExp对象的构造函数
const regex = new RegExp(pattern, [, flags])
1.1.3 特殊字符
- ^ 匹配输入的开始
- $ 匹配输入的结束
- \* 0次或多次 {0,}
- \+ 1次或多次 {1,}
- ?
- 0次或者1次 {0,1}。
- 用于先行断言
- 如果紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪
- 对 "123abc" 用 /\d+/ 将会返回 "123",
- 用 /\d+?/,那么就只会匹配到 "1"。
- . 匹配除换行符之外的任何单个字符
- (x) 匹配 'x' 并且记住匹配项
- (?:x) 匹配 'x' 但是不记住匹配项
- x(?=y) 配'x'仅仅当'x'后面跟着'y'.这种叫做正向肯定查找。
- x(?!y) 匹配'x'仅仅当'x'后面不跟着'y',这个叫做正向否定查找。
- x|y 匹配‘x’或者‘y’。
- {n} 重复n次
- {n, m} 匹配至少n次,最多m次
- [xyz] 代表 x 或 y 或 z
- [^xyz] 不是 x 或 y 或 z
- \d 数字
- \D 非数字
- \s 空白字符,包括空格、制表符、换页符和换行符。
- \S 非空白字符
- \w 单词字符(字母、数字或者下划线) [A-Za-z0-9_]
- \W 非单字字符。[^A-Za-z0-9_]
- \3 表示第三个分组
- \b 词的边界
- /\bm/匹配“moon”中得‘m’;
- \B 非单词边界
1.2 使用正则表达式的方法
exec 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)。
test 一个在字符串中测试是否匹配的RegExp方法,它返回true或false。
match 一个在字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null。
search 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
replace 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
split 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法。
1.2.1 正则对象的三个方法
//①test()判断字符串中是否出现某个字符串,返回布尔值
var re = /abc/;
var str = '00abc66';
console.log(re.test(str)); // true
//②exec()查找并返回字符串中指定的某个字符串,只匹配一次
var re = /abc/;
var str = 'a0bc88abc00abc';
console.log(re.exec(str)); // ["abc", index: 6, input: "a0bc88abc00abc", groups: undefined]
//③compile()方法用于改变正则匹配的内容
var re = /ab/;
var str = "aabcdef";
console.log(re.test(str)); //true
re.compile(/bd/);
console.log(re.test(str)); //false
re.compile('66');
console.log(re.test(str)); //false
1.2.2 字符串中与正则相关的方法
//①search()方法,返回符合条件的字符串首次出现的位置(下标)
var re = /abc/;
var str = '00abc66';
console.log(str.search(re)); // 2
//②match()方法,返回查找的结果,如果查询不到返回NULL
console.log(str.match(re)); // ["abc", index: 2, input: "00abc66", groups: undefined]
//③replace()方法,将匹配到的内容替换成指定内容
console.log(str.replace(re, "*"));
//④split()方法,将字符串分割成字符串数组
console.log(str.split(re));
1.3 正则表达式子表达式相关
1.3.1 子表达式
在正则表达式中,通过一对圆括号括起来的内容,我们就称之为“子表达式”。如:var re = /\d(\d)\d/;
1.3.2 捕获
在正则表达式中,子表达式匹配到相应的内容时,系统会自动捕获这个行为,然后将子表达式匹配到的内容放入系统的缓存区中。我们把这个过程就称之为“捕获”。
1.3.3 反向引用
在正则表达式中,我们可以使用\n(n>0,正整数,代表系统中的缓冲区编号)来获取缓冲区中的内容,我们把这个过程就称之为“反向引用”。
var str = "d1122jj7667h6868s9999";
//查找AABB型的数字
console.log(str.match(/(\d)\1(\d)\2/)); //1122
//查找ABBA型的数字
console.log(str.match(/(\d)(\d)\2\1/)); //7667
//查找ABAB型的数字
console.log(str.match(/(\d)(\d)\1\2/)); //6868
//查找四个连续相同的数字
console.log(str.match(/(\d)\1\1\1/)); //9999
1.4 限定符
[!NOTE] 限定符可以指定正则表达式的一个给定字符必须要出现多少次才能满足匹配。
*:匹配前面的子表达式零次或多次,0到多
+:匹配前面的子表达式一次或多次,1到多
?:匹配前面的子表达式零次或一次,0或1
{n}:匹配确定的 n 次
{n,}:至少匹配 n 次
{n,m}:最少匹配 n 次且最多匹配 m 次
[!WARNING] 注意:针对于{n,m},正则在匹配到一个符合多种次数的字符串时,优先匹配次数多的,即能匹配到m次就不会匹配n次,这就是贪婪模式(默认)。
如果在其后加?即{n,m}?则会更改为非贪婪模式(惰性模式),则此时正则优先匹配n次。
var str = "aa1a22a333a6a8a";
console.log(str.match(/a\d*/)); //a
console.log(str.match(/a\d+/)); //a1
console.log(str.match(/a\d?/)); //a
console.log(str.match(/a\d{3}/)); //a333
console.log(str.match(/a\d{2,}/)); //a22
console.log(str.match(/a\d{1,3}/)); //a1
console.log(str.match(/a\d{1,3}?/)); //a1
//贪婪模式加深理解,案例如下:
//贪婪模式下最开始的'a2就符合条件',但是它会返回'a22'
//注意:它是在遇到一个同时符合多个次数条件的字符串时,取符合次数多字符串
var str = "a22aa1a333a6a8a";
console.log(str.match(/a\d{1,3}/)); //a22
console.log(str.match(/a\d{1,3}/g)); //a22 a1 a333 a6 a8
console.log(str.match(/a\d{1,3}?/)); //a2
console.log(str.match(/a\d{1,3}?/g)); //a2 a1 a3 a6 a8
1.5 定位符
[!NOTE] 定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。
^ (脱字符):匹配输入字符串的开始位置
$:匹配输入字符串的结束位置
\b:匹配一个单词边界
\B:匹配非单词边界
1.6 正则表达式的匹配模式(修饰符)
[!NOTE] 表示正则匹配的附加规则,放在正则模式的最尾部。修饰符可以单个使用,也可以多个一起使用。
①g全局匹配,找到所有匹配,而不是在第一个匹配后停止
②i匹配全部大小写
③m多行,将开始和结束字符(^和$)视为在多行上工作(也就是,分别匹配每一行的开始和结束(由\n或\r分割),而不只是只匹配整个输入字符串的最开始和最末尾处。
④s与m相反,单行匹配
var re = /^[a-z]/gim; //可组合使用
1.7 转义字符
[!NOTE] 因为在正则表达式中 . + 等属于表达式的一部分,但有时也需要匹配这些特殊字符,所以,需要使用反斜杠对特殊字符进行转义。
需要转义的字符:
点号.
小括号()
中括号[]
左斜杠/
右斜杠\
选择匹配符|
*
?
{}
+
$
^
2. 正则练习题
2.1 匹配结尾的数字
/\d+$/g
2.2 统计空格个数
字符串内如有空格,但是空格的数量可能不一致,通过正则将空格的个数统一变为一个。
let reg = /\s+/g
str.replace(reg, " ");
2.3 判断字符串是不是由数字组成
str.test(/^\d+$/);
2.4 电话号码正则
区号必填为3-4位的数字
区号之后用“-”与电话号码连接电话号码为7-8位的数字
分机号码为3-4位的数字,非必填,但若填写则以“-”与电话号码相连接
/^\d{3,4}-\d{7,8}(-\d{3,4})?$/
2.5 手机号码正则表达式
正则验证手机号,忽略前面的0,支持130-139,150-159。忽略前面0之后判断它是11位的。
/^0*1(3|5)\d{9}$/
2.6 使用正则表达式实现删除字符串中的空格
funtion trim(str) {
let reg = /^\s+|\s+$/g
return str.replace(reg, '');
}
2.7 限制文本框只能输入数字和两位小数点等等
/^\d*\.\d{0,2}$/
2.8 只能输入小写的英文字母和小数点,和冒号,正反斜杠(:./)
/^[a-z\.:\/\\]*$/
2.9 替换小数点前内容为指定内容
例如:infomarket.php?id=197 替换为 test.php?id=197
var reg = /^[^\.]+/;
var target = '---------';
str = str.replace(reg, target)
2.10 只匹配中文的正则表达式
/[\u4E00-\u9FA5\uf900-\ufa2d]/ig
2.11 返回字符串的中文字符个数
先去掉非中文字符,再返回length属性。
function cLength(str){
var reg = /[^\u4E00-\u9FA5\uf900-\ufa2d]/g;
//匹配非中文的正则表达式
var temp = str.replace(reg,'');
return temp.length;
}
2.12 正则表达式取得匹配IP地址前三段
只要匹配掉最后一段并且替换为空字符串就行了
function getPreThrstr(str) {
let reg = /\.\d{1,3}$/;
return str.replace(reg,'');
}
2.13 匹配ul 标签之间的内容
//i
2.14 用正则表达式获得文件名
c:\images\tupian\006.jpg
可能是直接在盘符根目录下,也可能在好几层目录下,要求替换到只剩文件名。 首先匹配非左右斜线字符0或多个,然后是左右斜线一个或者多个。
function getFileName(str){
var reg = /[^\\\/]*[\\\/]+/g;
// xxx\ 或是 xxx/
str = str.replace(reg,'');
return str;
}
2.15 绝对路径变相对路径
"http://23.123.22.12/image/somepic.gif"转换为:"/image/somepic.gif"
var reg = /http:\/\/[^\/]+/;
str = str.replace(reg,"");
2.16 用户名正则
用于用户名注册,,用户名只 能用 中文、英文、数字、下划线、4-16个字符。
/^[\u4E00-\u9FA5\uf900-\ufa2d\w]{4,16}$/
2.17 匹配英文地址
规则如下: 包含 "点", "字母","空格","逗号","数字",但开头和结尾不能是除字母外任何字符。
/^[a-zA-Z][\.a-zA-Z,0-9]*[a-zA-Z]$/
2.18 正则匹配价格
开头数字若干位,可能有一个小数点,小数点后面可以有两位数字。
/^\d+(\.\d{2})?$/
2.19 身份证号码的匹配
身份证号码可以是15位或者是18位,其中最后一位可以是X。其它全是数字
/^(\d{14}|\d{17})(X|x)$/
2.20 单词首字母大写
每单词首字大写,其他小写。如blue idea转换为Blue Idea,BLUE IDEA也转换为Blue Idea
function firstCharUpper(str) {
str = str.toLowerCase();
let reg = /\b(\w)/g;
return str.replace(reg, m => m.toUpperCase());
}
2.21 正则验证日期格式
yyyy-mm-dd格式, 4位数字,横线,1或者2位数字,再横线,最后又是1或者2位数字。
/^\d{4}-\d{1,2}-\d{1,2}$/
2.22 去掉文件的后缀名
www.abc.com/dc/fda.asp 变为 www.abc.com/dc/fda
function removeExp(str) {
return str.replace(/\.\w$/,'')
}
2.23 验证邮箱的正则表达式
开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。
/^[\w-]+@\w+\.\w+$/
2.24 正则判断标签是否闭合
标签可能有两种方式闭合,自闭和或者对称闭合的方式。
/<([a-z]+)(\s*\w*?\s*=\s*".+?")*(\s*?>[\s\S]*?(<\/\1>)+|\s*\/>)/i
2.25 正则判断是否为数字与字母的混合
不能小于12位,且必须为字母和数字的混合
/^(([a-z]+[0-9]+)|([0-9]+[a-z]+))[a-z0-9]*$/i
2.26 将阿拉伯数字替换为中文大写形式
function replaceReg(reg,str){
let arr=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
let reg = /\d/g;
return str.replace(reg,function(m){return arr[m];})
}
2.27 去掉标签的所有属性
***
变成没有任何属性的
***
思路:非捕获匹配属性,捕获匹配标签,使用捕获结果替换掉字符串。正则如下:
/()/
2.28 驼峰表示
String.prototype.camelCase = function () {
// .*?是非贪婪的匹配,点可以匹配任意字符,星号是前边的字符有0-n个均匹配,问号是则是0-1;
// (^\w{1}): 用于匹配第一个首字母
// (.*):用于匹配任意个的前面的字符,.表示的就是任意字符
// - param 1: 匹配到的字符串
// - param 2: 匹配的的子字符串
// - param 3: 匹配的子字符串
// - param的位置
// - param 5: 原始字符串 4: 匹配到的字符串在字符串中
return this.replace(/(^\w{1})(.*)/g, function (match, g1, g2) {
return g1.toUpperCase() + g2.toLowerCase();
});
}
2.29 模板字符串
// str = 'name: @(name), age:@(age)'
// data = {name : 'xiugang', age : 18}
/**
* 实现一个简单的数据绑定
* @param str
* @param data
* @return {*}
*/
String.prototype.formateString = function (data) {
return this.replace(/@\((\w+)\)/g, function (match, key) {
// 注意这里找到的值必须返回出去(如果是undefined,就是没有数据)
// 注意:判断一个值的类型是不是undefined,可以通过typeof判断
console.log(typeof data[key] === 'undefined');
return data[key] === 'undefined' ? '' : data[key];
});
}
2.30 去掉两边的空格
/**
* 去掉两边的空格
* @param str
* @return {*}
*/
String.prototype.trim = function () {
return this.replace(/(^\s*)|(\s*$)/g, '');
}
2.31 获取url参数: 使用replace保存到一个数组里面,然后从数组里面取出数据
'http://www.189dg.com/ajax/sms_query.ashx?undefined&undefined&undefined-06-27&undefined-06-27'
url.replace(/(\w+)=(\w+)/g, function(a, b, c){
console.log(a, b, c)
})
action=smsdetail action smsdetail
sid=22 sid 22
stime=2014 stime 2014
etime=2014 etime 2014
// 封装为一个函数
var url = "http://127.0.0.1/e/action/ShowInfo.php?classid=9&id=2";
function parse_url(_url){
var pattern = /(\w+)=(\w+)/ig;
var parames = {};
url.replace(pattern, function(a, b, c){
parames[b] = c;
});
return parames;
}
var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);
你可能感兴趣的:(【前端知识体系-JS相关】10分钟搞定JavaScript正则表达式高频考点)
开源的未来 10 年:中国开源社区建立是关键
开源社
开源社KAIYUANSHE以下文章来源于CSDN,作者陈绪[CSDN.成就一亿技术人](#)【CSDN编者按】从EricRaymond在自由软件的范畴下进一步提出OpenSource开源软件至今,已经过去30余年,今天,开源不仅完全渗透互联网,更成为众多IT公司的基石。不过,中国的开源一直却呈现着企业热使用热社区冷开发冷的景象,真正参与开源产品开发和社区贡献的开发者凤毛麟角。同时,在过去的一年多里
【Web前端】JWT(JSON Web Tokens)概述
泡芙冰淇淋ya
Web前端 json
1、简介JWT(JSONWebTokens)是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。它基于JSON对象,并通过数字签名确保其完整性和真实性。JWT因其小巧、自包含以及易于在客户端和服务器之间传输的特性而被广泛使用于身份验证和信息交换的场景中。2、组成部分JWT由三个部分组成,这三部分通过点(.)分隔:Header(头部):头部通常包含了两部分信息:例如:typ:表示令牌的类型
程序默认栈空间大小
tadus_zeng
操作系统
linuxlinux下线程的默认栈大小是8M$ulimit-s8192#8*1024KB查看单个进程暂用堆栈的信息$strace-f-p{PID}临时改变栈空间的大小ulimit-s102400#改为100MBulimit-sunlimited#不限制永久修改栈空间大大小echo-ne"*softstack102400">>/etc/security/limits.conf或者$sudoecho'
计算机组成原理实验指令分析,计算机组成原理实验报告.doc
奶油小馒头
计算机组成原理实验指令分析
文档介绍:评语:课中检查完成的题号及题数:课后完成的题号与题数:成绩:自评成绩:XX实验报告实验名称:CPU与简单模型机设计实验日期:2016.XX.XX班级:1001XXXX学号:2014XXXX:XX同组同学信息班级:1001XXXX学号:2014XXXXX:XXXX一、实验目的:1.掌握一个简单CPU的组成原理。2.在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机3.为其定义五条
Perl 语言入门学习
喵丶派对
适用的技巧 perl
Perl是一种自由和通用的脚本语言,特别适用于文本处理。它的设计者是LarryWall,最初是为了简化Unix系统管理任务而开发的。Perl具有丰富的正则表达式功能、内置的数据结构、强大的文件处理能力以及灵活的语法,使得它成为了许多系统管理员和网络管理员的首选工具。Perl的特点:简洁的语法:Perl的语法非常简单,易于学习和阅读。它的代码通常很紧凑,易于编写和维护。跨平台:Perl可以在几乎所有
arcgis js 怎么加载geoserver发布的wms服务
niuge No.1
1024程序员节
arcgisjsapi加载wms服务,官方的参考样例:WMSLayer|SampleCode|ArcGISMapsSDKforJavaScript4.30|EsriDeveloper按照官方样例加载比较奇怪,我们平常习惯用url或者json的方式加载,稍微改一下就行,如下:constlayer=newWMSLayer({url:"http://127.0.0.1:8080/geoserver/ne
MongoDB详细讲解 + springboot集成
you0719
简单学点java 数据库 java
MongoDB以JSON为数据模型的文档非关系型数据库垂直扩展在一个机器上进行性能扩展水平扩展多个机器的扩展定位特点定位为应用数据库,存储数据特点:量大/非敏感/一定的查询性能MongoDB的语法是JavaScript语法添加db.集合名.insert(js对象)编辑db.集合名.updateMany({key:value}{$set:{key:value}})删除db.集合名.deleteMan
uniapp APP端页面触发调用uniapp开发的webview里的方法
printf_824
uniapp分享 uni-app
原理:使用getCurrentInstance()获取当前组件的Vue实例,通过instance.proxy.$scope.$getAppWebview()获取Uniapp的原生WebView对象。使用WebView提供的evalJS方法,执行嵌入H5页面内的JavaScript代码functiongetData(){url.value="http://192.168.0.22:5174/#/pa
Blazor-ApexCharts 开源项目指南
凌桃莺Talia
Blazor-ApexCharts开源项目指南项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-ApexCharts一、项目介绍Blazor-ApexCharts是一个用于Blazor框架的图表组件库封装,它基于流行的前端图表库ApexCharts.js实现。这个项目旨在简化在Blazor应用中添加交互式图表的过程,无需直接处理复杂的JavaScript互
Perl语言的软件开发工具
Code侠客行
包罗万象 golang 开发语言 后端
Perl语言的软件开发工具引言Perl是一种功能强大且灵活的高级编程语言,自1987年由拉里·沃尔(LarryWall)创建以来,就广泛应用于文本处理、系统管理、网络编程、Web开发等多个领域。作为一种脚本语言,Perl以其简洁的语法和强大的正则表达式处理能力而受到开发者的青睐。在实际开发过程中,虽然没有像Java或Python那样广泛流行,但Perl也有着自己独特的生态系统,其中包括许多强大的开
小白WEB前端学习(七)
Sun ᥫᩣ涵
WEB前端 前端 学习
续:小白WEB前端学习(六)继续学习CSS(五)8.响应式布局:响应式布局意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式1.响应式布局介绍:优点:面对不同分辨率设备灵活性强能够快捷解决多设备显示适应问题缺点:兼容各种设备工作量大,效率低下代码累赘,会出现隐藏无用的元素,加载时间加长手机:76899212482.media媒体查询HTML标签字号手机屏幕大小不同,分辨率不同如何设置不同的htm
【go语言】变量和常量
加油,旭杏
Go语言 golang 服务器 开发语言
一、变量1.1变量的定义程序:我们向电脑说了一段话,需要电脑才能理解(沟通机制,xxx语言--汇编--机器码),电脑实际上识别的是机器码:011101(高低电频)机器码:穿孔纸带汇编:早些时候,现在的很多机器硬件底层代码,都是汇编人能读懂的代码:英文、中文将我们的语言和机器进行对接(C、Java、Go--->编译器-->计算机中去执行:无需理解的,我们只需要写我们能看懂的代码即可),我们理解的世界
深入解析Spring AI框架:在Java应用中实现智能化交互的关键
鵝鵝鵝
java spring 数据库 后端 开发语言
合集-Spring源码分析(22)1.Spring入门系列:浅析知识点2023-04-102.Spring源码系列:初探底层,手写Spring2023-04-123.Spring源码系列:核心概念解析2023-04-204.Spring源码系列(补充):详解ApplicationContext2023-04-215.Spring源码:bean的生命周期(一)2023-05-016.Spring源码
kotlin协程使用举例
小李飞飞砖
kotlin 开发语言 android
Kotlin协程通过简化异步任务的处理,使代码更易于阅读和维护。以下是一些常见的使用场景及代码示例,展示如何使用Kotlin协程:1.启动一个简单的协程使用launch在协程作用域内启动一个协程。importkotlinx.coroutines.*funmain()=runBlocking{launch{delay(1000L)//模拟一些异步工作println("World!")}println
02 STM32F103 USB固件开发-移植JoyStickMouse(1)
yplinux
基于ST USB固件库 STM32F103 USB设备开发 stm32 嵌入式硬件 单片机
STM32F103USB固件开发-移植JoyStickMouse(1)文章目录STM32F103USB固件开发-移植JoyStickMouse(1)1.STUSB固件库介绍2.移植JoyStickMouse例程3.备注1.STUSB固件库介绍下载的固件库是:en.stsw-stm32121.zip目录结构介绍如下:2.移植JoyStickMouse例程2.1把STM32_USB-FS-Device
银河麒麟系统V10 sp1,安装wine 9.0
daqinzl
银河麒麟10sp1x86_64 wine 9.0
一,主要参考文档:https://www.cnblogs.com/zmbhfly/p/18271393https://blog.csdn.net/bird_bai001/article/details/141028512二,试验环境:(1),操作系统安装包:Kylin-Desktop-V10-SP1-2403-Release-20240430-x86_64.iso(2),相关软件:VMware®W
Vue教程|搭建vue项目|Vue-CLI新版脚手架
cnsxjean
vue.js javascript 前端框架 npm ui
一、安装Node环境安装Node及Npm环境Node下载地址:Node.js—RunJavaScriptEverywhereNode.js®isaJavaScriptruntimebuiltonChrome'sV8JavaScriptengine.https://nodejs.org/en/安装完成后,检查安装是否成功,并检查版本,命令如下:node-vnpm-vmac@MacdeMacBook-
PAT甲级-1014 Waiting in Line
玉蜉蝣
算法 队列 银行排队问题 PAT甲 c++
题目题目大意一个银行有n个窗口,每个窗口最多站m个人,其余人在黄线外等候。假设k个人同时进入银行按先后次序排队,每个人都有相应的服务时间。每个顾客都选择最短队列站,如果有多个相同长度的队列,按序号小的站。给出要查询的人的序号,要求输出该人结束服务的时间。如果顾客开始服务的时间晚于17:00,则输出Sorry。思路银行排队问题,根据题目模拟。先考虑数据结构,根据题目很容易想出队列,这里我直接用m行n
赶紧收藏!2024 年最常见 20道分布式、微服务面试题(八)
学长爱编程
分布式 微服务 程序员面试 分布式 微服务 架构 面试 后端 跳槽 中间件
上一篇地址:赶紧收藏!2024年最常见20道分布式、微服务面试题(七)-CSDN博客十五、什么是负载均衡,它在微服务架构中如何工作?负载均衡是一种在计算机网络中分配工作负载(如网络流量、请求处理等)到多个计算资源(如服务器、数据库、存储设备等)的策略。其主要目的是优化资源的利用、提高吞吐量、增强系统可用性和容错性,以及避免任何单一资源的过载。负载均衡的关键概念:前端(Client-Side)负载均
python随机数种子通俗_随机数种子random.seed()理解
weixin_39754267
python随机数种子通俗
总结:若采用random.random(),每次都按照一定的序列(默认的某一个参数)生成不同的随机数。若采用随机数种子random.seed(100),它将在所设置的种子100范围内调用random()模块生成随机数,如果再次启动random.seed(100),它则按照之前的序列从头开始生成随机数,两次生成的随机序列相同。若采用random.seed(),它则按照默认的一个序列生成随机数。程序演
【面试系列】DevOps工程师高频面试题及详细解答
野老杂谈
全网最全IT公司面试宝典 面试 devops 职场和发展
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:公众号:野老杂谈⭐️全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.⭐️AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。⭐️全流程数据技术实战指南:全面讲解从数据采集到数据可视化的整个过程,掌握构建现代化数据平台和数据仓库的核心技术和方法。文章目录常见的初级面试题1.什
Azure学生订阅上手实操:在Ubuntu VPS上利用Docker快速部署PostgreSQL数据库
shelby_loo
数据库 azure ubuntu
引言本文将详细指导您如何在Azure100学生订阅中,利用Ubuntu虚拟机,通过Docker容器技术快速搭建PostgreSQL数据库。我们将从Docker和PostgreSQL的基础知识入手,逐步讲解部署过程中的每一个步骤,并提供完整的命令和配置文件示例。Docker和PostgreSQL简介Docker是一种开源的容器化平台,它可以让开发者打包他们的应用以及依赖项到一个可移植的容器中。这些容
如何用Python实现流式下载,节省内存还带进度条!
python
引言本篇文章来分享一下如何使用Requests下载文件并且显示进度条。下载文件说到下载文件,大家可能一下子就能写出以下的代码:importrequeststotal=10485url=f'https://speed.cloudflare.com/__down?during=download&bytes={total}'#上面的URL是cloudflare的测试链接,可以传入想要下载的长度res=r
3D Gaussian Splatting 部署
学术菜鸟小晨
最新人工智能技术 三维重建
简介:3DGaussianSplatting是一种用一组2d图像创建3d场景的方法,你只需要一个场景的视频或者一组照片就可以获得这个场景的高质量3d表示,使你可以从任何角度渲染它。它们是一类辐射场方法(如NeRF),但同时训练速度更快(同等质量)、渲染速度更快,并达到更好或相似的质量。3DGaussianSplatting可以实现无界且完整的场景1080p分辨率下进行高质量实时(≥100fps)视
东野圭吾读书笔记 —— 新参者
蜡笔小新..
读点小书 东野圭吾 新参者
假期重新读一读之前的书,做一点记录。故事始于充满传统风情的日本桥地区,甘酒横丁商业街附近的小传马町公寓。一位刚搬来不久的独居女子三井峰子在家中惨遭勒杀。刚刚调任到此地的刑警加贺恭一郎接手了这起案件。他通过调查商业街上与峰子有过交集的商户,逐步揭开案件的真相。被害人三井峰子家中的线索:半年前离婚后开始独居,有一个离家出走的儿子清濑弘毅,母子俩几乎不见面。刚搬来日本桥不久,于6月10日晚7点左右被勒杀
OpenTelemetry 101:面向 IT 领导者和爱好者的非技术指南
夜莺开源监控
OpenTelemetry Otel 可观测性
如果您从事软件开发、SRE或DevOps工作,您可能听说过可观察性、遥测和跟踪等术语。这些概念对于理解应用程序在生产环境中的行为至关重要,并且它们是现代软件开发实践的重要组成部分。您可能还听说过在可观测性方面提到过OpenTelemetry。在本文中,我们将介绍OpenTelemetry101:它是什么、它如何工作以及为什么它对现代软件开发很重要。您将获得有关如何开始使用OpenTelemetry
詳細講一下在RN(ReactNative)中,6個比較常用的組件以及詳細的用法
asecretman!
react native react.js javascript
1.View组件(基础容器)import{View,StyleSheet}from'react-native';constMyComponent=()=>{return({/*子组件*/});};conststyles=StyleSheet.create({container:{flex:1,//flex布局padding:10,//内边距backgroundColor:'#fff',//背景色b
Azure AI-102 认证全攻略: (二十二) AI的隐私与安全
海棠AI实验室
AI-102 认证考试全攻略 azure 人工智能 安全 microsoft AI-102
引言:AI隐私与安全的重要性随着人工智能技术的飞速发展,数据隐私和安全问题已成为一个亟需解决的挑战。AI系统往往需要处理大量的敏感数据,这些数据的泄露或滥用不仅会对个人隐私产生严重影响,还可能对企业的声誉和信任度造成灾难性的损害。因此,在AI领域中,隐私与安全的保护已经成为设计和实施AI解决方案时必须严格遵守的基本原则。随着全球隐私保护法规的日益完善,如欧洲的《通用数据保护条例》(GDPR)和加利
实现宿主机(Windows 10 Docker Desktop)和Linux容器之间的数据挂载的三种方法
huaqianzkh
运维DevOps windows linux 运维
在Windows10上使用DockerDesktop运行Linux容器时,经常需要将宿主机上的文件或目录与容器内的文件或目录进行关联,以便实现数据的共享和持久化。Docker提供了多种方法来实现这一目标,包括使用-v选项挂载宿主机目录、创建Docker数据卷以及使用--mount指令进行绑定挂载。本文将详细介绍这三种方法的基本语法、具体实践以及它们各自的使用场景。一、使用-v选项挂载宿主机目录基本
xss的过滤和绕过(2)
rzydal
学习 笔记 网络安全 xss 计算机网络
xss的过滤和绕过分类过滤主要有两层,分别为WAF层和代码层,WAF(web应用防火墙)通常是在外部,在主机或者网络硬件上,对HTTP请求进行过滤拦截,而代码层是在编写web应用的过程中,直接实现或者音乐第三方库,对用户输入进行过滤,但是JavaScript语法非常灵活,所以对于普通的正则匹配,字符串比较,很难拦截xss。1.富文本过滤在发送邮件或者博客的情景下,用户有需求实现富文本的编辑,比如插
312个免费高速HTTP代理IP(能隐藏自己真实IP地址)
yangshangchuan
高速 免费 superword HTTP代理
124.88.67.20:843
190.36.223.93:8080
117.147.221.38:8123
122.228.92.103:3128
183.247.211.159:8123
124.88.67.35:81
112.18.51.167:8123
218.28.96.39:3128
49.94.160.198:3128
183.20
pull解析和json编码
百合不是茶
android pull解析 json
n.json文件:
[{name:java,lan:c++,age:17},{name:android,lan:java,age:8}]
pull.xml文件
<?xml version="1.0" encoding="utf-8"?>
<stu>
<name>java
[能源与矿产]石油与地球生态系统
comsci
能源
按照苏联的科学界的说法,石油并非是远古的生物残骸的演变产物,而是一种可以由某些特殊地质结构和物理条件生产出来的东西,也就是说,石油是可以自增长的....
那么我们做一个猜想: 石油好像是地球的体液,我们地球具有自动产生石油的某种机制,只要我们不过量开采石油,并保护好
类与对象浅谈
沐刃青蛟
java 基础
类,字面理解,便是同一种事物的总称,比如人类,是对世界上所有人的一个总称。而对象,便是类的具体化,实例化,是一个具体事物,比如张飞这个人,就是人类的一个对象。但要注意的是:张飞这个人是对象,而不是张飞,张飞只是他这个人的名字,是他的属性而已。而一个类中包含了属性和方法这两兄弟,他们分别用来描述对象的行为和性质(感觉应该是
新站开始被收录后,我们应该做什么?
IT独行者
PHP seo
新站开始被收录后,我们应该做什么?
百度终于开始收录自己的网站了,作为站长,你是不是觉得那一刻很有成就感呢,同时,你是不是又很茫然,不知道下一步该做什么了?至少我当初就是这样,在这里和大家一份分享一下新站收录后,我们要做哪些工作。
至于如何让百度快速收录自己的网站,可以参考我之前的帖子《新站让百
oracle 连接碰到的问题
文强chu
oracle
Unable to find a java Virtual Machine--安装64位版Oracle11gR2后无法启动SQLDeveloper的解决方案
作者:草根IT网 来源:未知 人气:813标签:
导读:安装64位版Oracle11gR2后发现启动SQLDeveloper时弹出配置java.exe的路径,找到Oracle自带java.exe后产生的路径“C:\app\用户名\prod
Swing中按ctrl键同时移动鼠标拖动组件(类中多借口共享同一数据)
小桔子
java 继承 swing 接口 监听
都知道java中类只能单继承,但可以实现多个接口,但我发现实现多个接口之后,多个接口却不能共享同一个数据,应用开发中想实现:当用户按着ctrl键时,可以用鼠标点击拖动组件,比如说文本框。
编写一个监听实现KeyListener,NouseListener,MouseMotionListener三个接口,重写方法。定义一个全局变量boolea
linux常用的命令
aichenglong
linux 常用命令
1 startx切换到图形化界面
2 man命令:查看帮助信息
man 需要查看的命令,man命令提供了大量的帮助信息,一般可以分成4个部分
name:对命令的简单说明
synopsis:命令的使用格式说明
description:命令的详细说明信息
options:命令的各项说明
3 date:显示时间
语法:date [OPTION]... [+FORMAT]
eclipse内存优化
AILIKES
java eclipse jvm jdk
一 基本说明 在JVM中,总体上分2块内存区,默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。 1)堆内存(Heap memory):堆是运行时数据区域,所有类实例和数组的内存均从此处分配,是Java代码可及的内存,是留给开发人
关键字的使用探讨
百合不是茶
关键字
//关键字的使用探讨/*访问关键词private 只能在本类中访问public 只能在本工程中访问protected 只能在包中和子类中访问默认的 只能在包中访问*//*final 类 方法 变量 final 类 不能被继承 final 方法 不能被子类覆盖,但可以继承 final 变量 只能有一次赋值,赋值后不能改变 final 不能用来修饰构造方法*///this()
JS中定义对象的几种方式
bijian1013
js
1. 基于已有对象扩充其对象和方法(只适合于临时的生成一个对象):
<html>
<head>
<title>基于已有对象扩充其对象和方法(只适合于临时的生成一个对象)</title>
</head>
<script>
var obj = new Object();
表驱动法实例
bijian1013
java 表驱动法 TDD
获得月的天数是典型的直接访问驱动表方式的实例,下面我们来展示一下:
MonthDaysTest.java
package com.study.test;
import org.junit.Assert;
import org.junit.Test;
import com.study.MonthDays;
public class MonthDaysTest {
@T
LInux启停重启常用服务器的脚本
bit1129
linux
启动,停止和重启常用服务器的Bash脚本,对于每个服务器,需要根据实际的安装路径做相应的修改
#! /bin/bash
Servers=(Apache2, Nginx, Resin, Tomcat, Couchbase, SVN, ActiveMQ, Mongo);
Ops=(Start, Stop, Restart);
currentDir=$(pwd);
echo
【HBase六】REST操作HBase
bit1129
hbase
HBase提供了REST风格的服务方便查看HBase集群的信息,以及执行增删改查操作
1. 启动和停止HBase REST 服务 1.1 启动REST服务
前台启动(默认端口号8080)
[hadoop@hadoop bin]$ ./hbase rest start
后台启动
hbase-daemon.sh start rest
启动时指定
大话zabbix 3.0设计假设
ronin47
What’s new in Zabbix 2.0?
去年开始使用Zabbix的时候,是1.8.X的版本,今年Zabbix已经跨入了2.0的时代。看了2.0的release notes,和performance相关的有下面几个:
:: Performance improvements::Trigger related da
http错误码大全
byalias
http协议 javaweb
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。
响应码分五种类型,由它们的第一位数字表示:
1)1xx:信息,请求收到,继续处理
2)2xx:成功,行为被成功地接受、理解和采纳
3)3xx:重定向,为了完成请求,必须进一步执行的动作
4)4xx:客户端错误,请求包含语法错误或者请求无法实现
5)5xx:服务器错误,服务器不能实现一种明显无效的请求
J2EE设计模式-Intercepting Filter
bylijinnan
java 设计模式 数据结构
Intercepting Filter类似于职责链模式
有两种实现
其中一种是Filter之间没有联系,全部Filter都存放在FilterChain中,由FilterChain来有序或无序地把把所有Filter调用一遍。没有用到链表这种数据结构。示例如下:
package com.ljn.filter.custom;
import java.util.ArrayList;
修改jboss端口
chicony
jboss
修改jboss端口
%JBOSS_HOME%\server\{服务实例名}\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml
中找到
<!-- The ports-default bindings are obtained by taking the base bindin
c++ 用类模版实现数组类
CrazyMizzz
C++
最近c++学到数组类,写了代码将他实现,基本具有vector类的功能
#include<iostream>
#include<string>
#include<cassert>
using namespace std;
template<class T>
class Array
{
public:
//构造函数
hadoop dfs.datanode.du.reserved 预留空间配置方法
daizj
hadoop 预留空间
对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置
<property>
<name>dfs.datanode.du.reserved</name>
<value>10737418240</value>
 
mysql远程访问的设置
dcj3sjt126com
mysql 防火墙
第一步: 激活网络设置 你需要编辑mysql配置文件my.cnf. 通常状况,my.cnf放置于在以下目录: /etc/mysql/my.cnf (Debian linux) /etc/my.cnf (Red Hat Linux/Fedora Linux) /var/db/mysql/my.cnf (FreeBSD) 然后用vi编辑my.cnf,修改内容从以下行: [mysqld] 你所需要: 1
ios 使用特定的popToViewController返回到相应的Controller
dcj3sjt126com
controller
1、取navigationCtroller中的Controllers
NSArray * ctrlArray = self.navigationController.viewControllers;
2、取出后,执行,
[self.navigationController popToViewController:[ctrlArray objectAtIndex:0] animated:YES
Linux正则表达式和通配符的区别
eksliang
正则表达式 通配符和正则表达式的区别 通配符
转载请出自出处:http://eksliang.iteye.com/blog/1976579
首先得明白二者是截然不同的
通配符只能用在shell命令中,用来处理字符串的的匹配。
判断一个命令是否为bash shell(linux 默认的shell)的内置命令
type -t commad
返回结果含义
file 表示为外部命令
alias 表示该
Ubuntu Mysql Install and CONF
gengzg
Install
http://www.navicat.com.cn/download/navicat-for-mysql
Step1: 下载Navicat ,网址:http://www.navicat.com/en/download/download.html
Step2:进入下载目录,解压压缩包:tar -zxvf navicat11_mysql_en.tar.gz
批处理,删除文件bat
huqiji
windows dos
@echo off
::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
rem 指定待删除文件的存放路径
set SrcDir=C:/Test/BatHome
rem 指定天数
set DaysAgo=1
跨浏览器兼容的HTML5视频音频播放器
天梯梦
html5
HTML5的video和audio标签是用来在网页中加入视频和音频的标签,在支持html5的浏览器中不需要预先加载Adobe Flash浏览器插件就能轻松快速的播放视频和音频文件。而html5media.js可以在不支持html5的浏览器上使video和audio标签生效。 How to enable <video> and <audio> tags in
Bundle自定义数据传递
hm4123660
android Serializable 自定义数据传递 Bundle Parcelable
我们都知道Bundle可能过put****()方法添加各种基本类型的数据,Intent也可以通过putExtras(Bundle)将数据添加进去,然后通过startActivity()跳到下一下Activity的时候就把数据也传到下一个Activity了。如传递一个字符串到下一个Activity
把数据放到Intent
C#:异步编程和线程的使用(.NET 4.5 )
powertoolsteam
.net 线程 C# 异步编程
异步编程和线程处理是并发或并行编程非常重要的功能特征。为了实现异步编程,可使用线程也可以不用。将异步与线程同时讲,将有助于我们更好的理解它们的特征。
本文中涉及关键知识点
1. 异步编程
2. 线程的使用
3. 基于任务的异步模式
4. 并行编程
5. 总结
异步编程
什么是异步操作?异步操作是指某些操作能够独立运行,不依赖主流程或主其他处理流程。通常情况下,C#程序
spark 查看 job history 日志
Stark_Summer
日志 spark history job
SPARK_HOME/conf 下:
spark-defaults.conf 增加如下内容
spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/var/log/spark spark.eventLog.compress true
spark-env.sh 增加如下内容
export SP
SSH框架搭建
wangxiukai2015eye
spring Hibernate struts
MyEclipse搭建SSH框架 Struts Spring Hibernate
1、new一个web project。
2、右键项目,为项目添加Struts支持。
选择Struts2 Core Libraries -<MyEclipes-Library>
点击Finish。src目录下多了struts