正則表達式(Java)(韓順平筆記)

正則表達式(Java)

底層實現

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp00 {public static void main(String[] args) {String content = "1998年12月8日,第二代Java平臺的企業版J2EE發布。" +"1999年6月,Sun公司發布了第二代Java平臺(簡稱為Java2)的3個版本:" +"J2ME(Java2 Micro Edition,Java2平臺的微型版),應用于移動、無線及" +"有限資源的環境;J2SE(Java 2 Standard Edition,Java 2平臺的標" +"準版),應用于桌面環境;J2EE(Java 2Enterprise Edition,Java 2平臺" +"的企業版),應用于基于Java的應用服務器。Java 2平臺的發布,是Java發展" +"過程中最重要的一個里程碑,標志著Java的應用開始普及。";
//        String regStr = "\\d\\d\\d\\d";String regStr = "(\\d\\d)(\\d\\d)";Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);/*** matcher.find() 完成的任務* 1. 根據指定的規則,定位滿足規則的子字符串(比如1998)* 2. 找到后,將子字符串的開始的索引記錄到matcher對象的屬性int[] groups;*    group[0] = 0, 把該子字符串的結束的索引+1的值記錄到 groups[1] = 4;* 3. 同時記錄 oldLast 的值為 子字符串的結束的 索引+1的值即4 即下次執行find時 就從4開始匹配** matcher.find() 完成的任務* 1. 根據指定的規則,定位滿足規則的子字符串(比如(19)(98))* 2. 找到后,將子字符串的開始的索引記錄到matcher對象的屬性int[] groups;*    2.1 group[0] = 0, 把該子字符串的結束的索引+1的值記錄到 groups[1] = 4;*    2.2 記錄1組的()匹配到的字符串 groups[2] = 0 groups[3] = 2*    2.3 記錄2組的()匹配到的字符串 groups[4] = 2 groups[5] = 4* 3. 同時記錄 oldLast 的值為 子字符串的結束的 索引+1的值即4 即下次執行find時 就從4開始匹配*/while (matcher.find()) {System.out.println("找到:" + matcher.group(0));System.out.println("找到:" + matcher.group(1));//表示匹配到的子字符串的第一組子串System.out.println("找到:" + matcher.group(2));//表示匹配到的子字符串的第二組子串//分組不能越界}}
}

matcher.find

public boolean find() {int nextSearchIndex = last;if (nextSearchIndex == first)nextSearchIndex++;// If next search starts before region, start it at regionif (nextSearchIndex < from)nextSearchIndex = from;// If next search starts beyond region then it failsif (nextSearchIndex > to) {for (int i = 0; i < groups.length; i++)groups[i] = -1;return false;}return search(nextSearchIndex);}

matcher.group

public String group(int group) {if (first < 0)throw new IllegalStateException("No match found");if (group < 0 || group > groupCount())throw new IndexOutOfBoundsException("No group " + group);if ((groups[group*2] == -1) || (groups[group*2+1] == -1))return null;return getSubSequence(groups[group * 2], groups[group * 2 + 1]).toString();}

基礎用法

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp01 {public static void main(String[] args) {String content = "a_bchHKKay66 66sABc_jdj*@fDH \n  Y298HU 寒冷 韓順平 han";
//        String regStr = "[a-z]";// 查找小寫字母a-z任意一個字符
//        String regStr = "[A-Z]";// 查找大寫字母A-Z任意一個字符
//        String regStr = "abc";// 查找abc字符串 (默認區分大小寫)
//        String regStr = "(?i)abc";// 查找abc字符串 (不區分大小寫)
//        String regStr = "[0-9]";// 查找0-9任意一個字符
//        String regStr = "[^0-9]";// 查找不在0-9任意一個字符
//        String regStr = "[^a-z]";// 查找不在a-z任意一個字符
//        String regStr = "[abcd]";// 查找abcd任意一個字符
//        String regStr = "[^abcd]";// 查找不是abcd任意一個字符
//        String regStr = "\\D";// 查找不是數字0-9字符
//        String regStr = "\\w";// 查找字母,數字,下劃線  @不屬于范圍
//        String regStr = "\\W";// 上式取反 相當于[^0-9a-zA-Z_]
//        String regStr = "\\s";// 查找空白字符
//        String regStr = "\\S";// 查找非空白字符
//        String regStr = ".";// 查找非 \n 以外所有字符 查找.需要用 \\.String regStr = "寒|韓|han";// 選擇匹配符//Pattern.CASE_INSENSITIVE 表示匹配不區分大小寫Pattern pattern = Pattern.compile(regStr, Pattern.CASE_INSENSITIVE);// 創建對象Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("找到 " + matcher.group(0));}}
}   

正則限定符

符號含義示例說明匹配輸入
*指定字符重復0次或n次(無要求)(abc)*僅包含任意個abc字符串,相當于\w*abc abcabcabc
+指定字符重復1次或n次(至少1次)m+(abc)*以至少1個m開頭,后接任意個abc的字符串m mabc mabcabc
?指定字符重復0次或1次(最多1次)m+abc?以至少1個m開頭,后接ab或abc的字符串mab mabc mmmab mmabc
{n}只能輸入n個字符[abcd]{3}由abcd中字母組成的任意長度為3的字符串abc dbc adc
{n,}指定至少n個匹配[abcd]{3,}由abcd中字母組成的任意長度不小于3的字符串aab dbc aaabdc
{n,m}指定至少n個但不多于m個匹配[abcd]{3,5}由abcd中字母組成的任意長度不小于3,不大于5的字符串abc abcd aaaaa bcdab
package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp02 {public static void main(String[] args) {String content = "11111111aaaaaaahello";//        String regStr = "a{3}";// 匹配 aaa
//        String regStr = "1{4}";// 匹配 1111
//        String regStr = "\\d{2}";// 匹配 兩位任意數字字符//Java默認匹配多的(貪婪匹配)
//        String regStr = "a{3,4}";// 匹配 aaa 或 aaaa(優先)
//        String regStr = "1{4,5}";// 匹配 1111 或 11111(優先)
//        String regStr = "\\d{2,5}";// 匹配 2位數 或 3,4,5 實際 sout (找到 11111 (換行) 找到 111)//        String regStr = "1+";// 匹配 1個1 或 多個1
//        String regStr = "\\d+";// 匹配 1個數字 或 多個數字//        String regStr = "1*"; // 匹配0個1或者多個1String regStr = "a1?";// 匹配 a 或 a1Pattern pattern = Pattern.compile(regStr, Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("找到 " + matcher.group(0));}}
}

正則定位符

符號含義示例說明匹配輸入
^指定起始字符1+[a-z]*以至少一個數字開頭,后接任意個小寫字母的字符串123 6aa 555edf
$指定結束字符2\\-[a-z]+$以一個數字開頭后接連字符“-”,并以至少1個小寫字母結尾的字符串1-a
\\b匹配目標字符串的邊界han\\b這里說的字符串邊界指的是子串間有空格,或者是目標字符串的結束位置hanshunping sphan nnhan
\\B匹配目標字符串的非邊界han\\B和\b的含義相反hanshuping sphan nnhan
package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp03 {public static void main(String[] args) {
//        String content = "123anj-556abc-945BGh";
//        String content = "123-ljj";String content = "hanshunping sphan nnhan";//        String regStr = "^[0-9]+[a-z]*";// 找到123anj
//        String regStr = "^[0-9]+\\-[a-z]+$";// 找到123-ljj
//        String regStr = "^[0-9]+\\-[a-z]+$";// 找到123-ljj//        String regStr = "han\\b";// 找到 han (sphan) 找到 han (nnhan)String regStr = "han\\B";// 找到 han (hanshunping)Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("找到 " + matcher.group(0));}}
}

捕獲分組

常用分組構造形式說明
(pattern)非命名捕獲。捕獲匹配的子字符串。編號為0的第一個捕獲是由整個正則表達式模式匹配的文本,其他捕獲結果則根據左括號的順序從1開始自動編號。
(?'name’pattern)命名捕獲。將匹配的子字符串捕獲到一個組名稱或編號名稱中。用于name的字符串不能包含任何標點符號,并且不能以數字開頭。可以使用尖括號代替單引號。
package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp04 {public static void main(String[] args) {String content = "hanshunping s7789 nn1189han";//        String regStr = "(\\d\\d)(\\d\\d)";//匹配四個數組的字符串(7789)(1189)//        String regStr = "(\\d\\d)(\\d)(\\d)";/*** 找到 7789* 第一個分組 77* 第二個分組 8* 第三個分組 9* 找到 1189* 第一個分組 11* 第二個分組 8* 第三個分組 9*/String regStr = "(?<g1>\\d\\d)(?<g2>\\d\\d)";/*** 找到 7789* 第一個分組[編號] 77* 第二個分組[編號] 89* 找到 1189* 第一個分組[編號] 11* 第二個分組[編號] 89*/Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("找到 " + matcher.group(0));
//            System.out.println("第一個分組 " + matcher.group(1));System.out.println("第一個分組[編號] " + matcher.group("g1"));
//            System.out.println("第二個分組 " + matcher.group(2));System.out.println("第二個分組[編號] " + matcher.group("g2"));
//            System.out.println("第三個分組 " + matcher.group(3));}}
}

非捕獲分組

常用分組構造形式說明
(?:pattern)匹配pattern但不捕獲該匹配的子表達式,即它是一個非捕獲匹配,不存儲供以后使用的匹配。這對于用“or”字符(|)組合模式部件的情況很有用。
(?=pattern)它是一個非捕獲匹配。
(?!pattern)該表達式匹配不處于匹配pattern的字符串的起始點的搜索字符串。
package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp05 {public static void main(String[] args) {String content = "hello韓順平教育 Jack韓順平老師 韓順平同學hello";//找到 韓順平教育 、 韓順平老師 、 韓順平同學
//        String regStr = "韓順平(?:教育|老師|同學)";//不能group(1)//找到 韓順平教育中的韓順平 韓順平老師中的韓順平
//        String regStr = "韓順平(?=教育|老師)";//找到 不是韓順平教育中的韓順平 不是韓順平老師中的韓順平String regStr = "韓順平(?!教育|老師)";Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {//非捕獲分組 不能使用group(1)System.out.println("找到 " + matcher.group(0));}}
}

非貪婪匹配

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp06 {public static void main(String[] args) {String content = "hello1111111";String regStr = "\\d+?";/*** 找到 1* 找到 1* 找到 1* 找到 1* 找到 1* 找到 1* 找到 1*/Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {//非捕獲分組 不能使用group(1)System.out.println("找到 " + matcher.group(0));}}
}

應用實例

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp07 {public static void main(String[] args) {//漢字
//        String content = "韓順平教育";
//        String regStr = "^[\u0391-\uffe5]+$";//true//1-9開頭的一個六位數
//        String content = "112344";
//        String regStr = "^[1-9]\\d{5}$";//true//1-9開頭的一個(5-10位數)
//        String content = "12389";
//        String regStr = "^[1-9]\\d{4,9}$";//true//以11、13、18開頭的11位數String content = "11588889999";String regStr = "^1[1|3|8]\\d{9}$";//truePattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);if (matcher.find()) {System.out.println("true");} else {System.out.println("false");}}
}

驗證復雜URL

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp09 {public static void main(String[] args) {String content = "https://www.bilibili.com/video/BV1fh411y7R8?;/** ((http|https)://)開始部分*  ([\w-]+\.)+[\w-]+ 匹配 www.bilibili.com*  (\/[\w-?=&/%.#]*)? 匹配 /video/BV1fh411y7R8?p=894&vd_source=a8223634aa8a190c7233a2dc3f8a15e3*  []里面的元素相當于一個集合*  如果查找 "(去掉http)edu.metastudy.vip/mt/official/pc/mxmt-ksjhdj"*  regStr = "^((http|https)://)?([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%.#]*)?$";*/String regStr = "^((http|https)://)([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%.#]*)?$";Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);if (matcher.find()) {System.out.println("true");} else {System.out.println("false");}}
}

Pattern類matches方法

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp10 {public static void main(String[] args) {String content = "10https://www.bilibili.com/video/BV1fh411y7R8?p=894&vd_source=";String regStr = "((http|https)://)([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%.#]*)?$";Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);//find匹配必須加^$定位符if (matcher.find()) {System.out.println("true");} else {System.out.println("false");}//整體匹配System.out.println(Pattern.matches(regStr, content));/*** true* false*/}
}

Pattern類中的源碼:

public static boolean matches(String regex, CharSequence input) {Pattern p = Pattern.compile(regex);Matcher m = p.matcher(input);return m.matches();}

matcher方法

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp11 {public static void main(String[] args) {String content = "hello edu jack hspedutom hello smith hello";
//        String regStr = "hello";String regStr = "hello edu jack tom hello smith hello";Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("================");System.out.println(matcher.start());System.out.println(matcher.end());System.out.println(content.substring(matcher.start(),matcher.end()));}System.out.println("整體匹配 " + matcher.matches());regStr = "hspedu";pattern = Pattern.compile(regStr);matcher = pattern.matcher(content);String newContent = matcher.replaceAll("韓順平教育");//并沒有改變原來的contentSystem.out.println("content = " + content);System.out.println("new = " + newContent);}
}

反向引用

  1. 分組 可以使用()組成一個比較復雜的匹配模式,一個圓括號的部分我們可以看作一個子表達式/一個分組
  2. 捕獲 把正則表達式中子表達式/分組匹配內容,保存到一個組里,方便后面引用 0代表整個表達式
  3. 反向引用 圓括號的內容被捕獲后,可以在這個括號后被使用,從而寫出一個比較實用的匹配模式
package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp12 {public static void main(String[] args) {String content = "hello hspedu11111 hello22 12345-111222333";//找到兩個連續相同的數字
//        String regStr = "(\\d)\\1";//找到五個連續相同的數字
//        String regStr = "(\\d)\\1{4}";//找到個位與千位相同 十位與百位相同的數字
//        String regStr = "(\\d)(\\d)\\2\\1";//找到以下格式 "五位數-九位數連續每三位相同(例如:12345-111222333)"String regStr = "\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}";Pattern pattern = Pattern.compile(regStr);Matcher matcher = pattern.matcher(content);while (matcher.find()) {System.out.println("找到 " + matcher.group(0));}}
}

替換分割匹配

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExp13 {public static void main(String[] args) {String content = "我....我要....學學學學....編程java!";//去掉所有的 .Pattern pattern = Pattern.compile("\\.");Matcher matcher = pattern.matcher(content);content = matcher.replaceAll("");System.out.println("content=" + content);//去掉重復的字 (.)查找任意的字符 \\1反向引用出'(.)'的內容 +指重復多次 $1表示重復字符替換為1個//如果要替換ABAB型 例如"我要我要" 使用(..)\\1+content = Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1");System.out.println("content=" + content);}
}

練習題

package com.hspedu.RegExp;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegExpHomework {public static void main(String[] args) {//匹配電子郵箱 例如 shu@sohu.com shu@sougo.org.cnString content01 = "shu@sougo.org.cn";//[\\w-](@前面的英文) @([a-zA-z]+\.)(至少匹配一次@英文.)String regStr01 = "^[\\w-]+@([a-zA-z]+\\.)+[a-zA-Z]+$";if (content01.matches(regStr01)) {System.out.println("true");} else {System.out.println("false");}//匹配整數或者小數String content02 = "-0.56";//([1-9]\d*|0)判斷整數部分 不能出現0034.56String regStr02 = "^[-+]?([1-9]\\d*|0)(\\.\\d+)?$";if (content02.matches(regStr02)) {System.out.println("true");} else {System.out.println("false");}//解析urlString content03 = "http://www.sohu.com:8080/abc/index.html";String regStr03 = "^([a-zA-Z]+)://([a-zA-Z.]+):(\\d+)[\\w-/]*/([\\w.]+)$";Pattern pattern = Pattern.compile(regStr03);Matcher matcher = pattern.matcher(content03);if (matcher.matches()) {System.out.println("true");System.out.println("整體匹配=" + matcher.group(0));System.out.println("協議=" + matcher.group(1));System.out.println("域名=" + matcher.group(2));System.out.println("端口=" + matcher.group(3));System.out.println("文件=" + matcher.group(4));} else {System.out.println("false");}}
}

  1. 0-9 ??

  2. 0-9 ??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167577.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167577.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167577.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Promise】某個異步方法執行結束后 在執行下面方法

使用Promise &#xff0c;當 layer.msg(查詢成功) 這個方法執行結束后 &#xff0c;下面代碼才會執行 let thas this async function showMessage() {await new Promise(resolve > layer.msg(查詢成功, resolve));// 這里的代碼將在 layer.msg 執行結束后執行thas.isGuaran…

數字圖像處理(實踐篇)一 將圖像中的指定目標用bBox框起來吧!

目錄 一 實現方法 二 涉及的OpenCV函數 三 代碼 四 效果圖 一 實現方法 ①利用OTSU方法將前景與背景分割。 ②使用連通區域分析可以將具有相同像素值且位置相鄰的前景像素點組成的圖像區域識別。 ③畫bbox。 ④顯示結果。 二 涉及的OpenCV函數 ① OpenCV提供了cv2.th…

如何安裝和配置代理服務器squid?

安裝和配置Squid代理服務器通常需要幾個步驟。以下是在Ubuntu上安裝和配置Squid的簡單步驟&#xff1a; 步驟 1: 安裝Squid 打開終端&#xff0c;并使用以下命令安裝Squid&#xff1a; sudo apt update sudo apt install squid步驟 2: 配置Squid 默認配置文件位于 /etc/squ…

convertRect:toView 方法注意事項

這是在網上找到的一張圖 我們開發中有時候會用到左邊轉換&#xff0c;convertRect:toView 通常情況下&#xff0c;我們回這樣使用 CGRect newRect [a convertRect:originframe toView:c];其中newRect和 originframe的size相同&#xff0c;只改變origin newRect.origin a…

系統優化軟件Bitsum Process Lasso Pro v12.4,供大家學習研究參考

1、自動或手動調整進程優先級;將不需要抑制的進程添加到排除列表; 2、設置動態提升前臺運行的進程/線程的優先級 3、設置進程黑名單,禁止無用進程(機制為啟動即結束,而非攔截其啟動)。 4、優化I/O優先級以及電源模式自動化。 5、ProBalance功能。翻譯成中文是“進程平衡…

STM32入門--CAN

目錄 一、bxCan簡介 二、bxCAN總體描述 2.1概述 2.2CAN框圖 三、bxCA的工作模式 3.1初始化模式 3.2正常模式 3.3睡眠模式&#xff08;低功耗&#xff09; 四、測試模式 4.1靜默模式 4.2環回模式 五、bxCAN功能描述 5.1 發送處理 ?編輯 5.2接收管理 5.2.1 標識符過…

HTTP協議抓包工具Charles 抓包圖文完整教程

Charles是在您自己的計算機上運行的Web代理&#xff08;HTTP代理 / HTTP監視器&#xff09;&#xff0c;您的網絡瀏覽器&#xff08;或任何其他Internet應用程序&#xff09;配置為通過Charles訪問Internet&#xff0c;Charles可以為您記錄并顯示發送和接收的所有數據。 Http抓…

[tsai.shen@mailfence.com].faust勒索病毒數據怎么處理|數據解密恢復

導言&#xff1a; [support2022cock.li].faust、[tsai.shenmailfence.com].faust、[Encrypteddmailfence.com].faust勒索病毒是一種具有惡意目的的勒索軟件&#xff0c;其主要特點包括對受害者文件進行強力加密&#xff0c;然后勒索受害者支付贖金以獲取解密密鑰。攻擊者通常通…

Centos8部署MySQL主從復制報錯問題

問題1.在部署MySQL主從復制時&#xff0c;創建用戶提示ERROR 1819&#xff1a;Your password does not satisfy the current policy requirements。即為當前配置的密碼&#xff0c;不符合策略要求。 問題1解決方式&#xff1a; set global validate_password.policyLOW; \\…

Leetcode—1410.HTML實體解析器【中等】

2023每日刷題&#xff08;三十八&#xff09; Leetcode—1410.HTML實體解析器 算法思想 實現代碼 typedef struct entityChar {char* entity;char rechar; }entity;entity matches[] {{"&quot;", "},{"&apos;", \},{"&amp;"…

NLP中 大語言模型LLM中的思維鏈 Chain-of-Thought(CoT) GoT

文章目錄 介紹思路CoT方法Few-shot CoTCoT Prompt設計CoT投票式CoT-自洽性&#xff08;Self-consistency&#xff09;使用復雜的CoT自動構建CoTCoT中示例順序的影響Zero-shot CoT 零樣本思維鏈 GoT,Graph of Thoughts總結 介紹 在過去幾年的探索中&#xff0c;業界發現了一個現…

C語言之strstr函數的使用和模擬實現

C語言之strstr函數的模擬實現 文章目錄 C語言之strstr函數的模擬實現1. strstr函數的介紹2. strstr函數的使用3. strstr的模擬實現3.1 實現思路3.2 實現代碼 1. strstr函數的介紹 函數聲明如下&#xff1a; char * strstr ( const char * str1, const char * str2 ); strs…

怎樣自動把網頁截圖發到微信群里

現在很多公司都在使用企業微信了&#xff0c;不但方便公司內部交流和客戶交流&#xff0c;還能組建各種小組群&#xff0c;業務群。企業微信群提供一個機器人的功能&#xff0c;方便我們把公司業務信息&#xff0c;或來自外部的信息自動發布到群里。 這里研究一下如何向微信群…

大數據-之LibrA數據庫系統告警處理(ALM-37003 GTM主備不同步或者GTM主備斷連)

告警解釋 當GTM主實例與GTM備實例連接異常或者GTM主實例未處于同步狀態時&#xff0c;產生該告警。 告警屬性 告警ID 告警級別 可自動清除 37003 嚴重 是 告警參數 參數名稱 參數含義 ServiceName 產生告警的服務名稱 RoleName 產生告警的角色名稱 HostName 產…

基于OpenCV+MediaPipe的手勢識別

【精選】【優秀課設】基于OpenCVMediaPipe的手勢識別&#xff08;數字、石頭剪刀布等手勢識別&#xff09;_石頭剪刀布opencv識別代碼_網易獨家音樂人Mike Zhou的博客-CSDN博客 import cv2 import mediapipe as mp import mathdef vector_2d_angle(v1, v2):求解二維向量的角度v…

HIVE SQL 判斷空值函數

目錄 nvl()coalesce() nvl() select nvl(null,2);輸出&#xff1a;2 select nvl(,2);輸出&#xff1a;‘’ coalesce() select coalesce(null,2);輸出&#xff1a;2 select coalesce(,2);輸出&#xff1a;‘’ select coalesce(null,null,2);輸出&#xff1a;2 *coalesc…

Maxwell安裝部署消費到kafka集群

1.上傳安裝包到linux系統上面 2.解壓安裝包到安裝目錄下&#xff0c;并且重命名 [rootVM-4-10-centos package]# tar -zxvf maxwell-1.29.2.tar.gz -C /opt/software/3.配置mysql 增加以下配置 #數據庫id server-id 1 #啟動binlog&#xff0c;該參數的值會作為binlog的文件…

分布式鎖詳解

文章目錄 分布式鎖1. [傳統鎖回顧](https://blog.csdn.net/qq_45525848/article/details/134608044?csdn_share_tail%7B%22type%22:%22blog%22,%22rType%22:%22article%22,%22rId%22:%22134608044%22,%22source%22:%22qq_45525848%22%7D)1.1. 從減庫存聊起1.2. 環境準備1.3. 簡…

leetcode每日一題32

82.刪除排序鏈表中的重復元素 主要問題是沒有頭節點&#xff0c;以及要刪除所有的相等元素&#xff0c;不是留下一個 那么首先要建立一個頭節點&#xff0c;指向head 而且指針要始終指向要刪除的節點的前一個節點 ListNode* pre new ListNode(0,head);在搜索的過程中&#x…

Handler系列-Message是怎么重復利用的

1.Message類的支持 使用鏈表來緩存Message&#xff0c;sPool為表頭&#xff1b;最多能緩存50個Message&#xff1b;sPoolSync用來保證讀寫鏈表的安全&#xff1b; public final class Message implements Parcelable {private static Message sPool; //緩存的列表表頭/*packa…