Java正则表达式详解

2023-11-18

1.1 正则表达式的概念以及演示

  • 正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。
  • 正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。正则表达式是一种强大的校验机制。
  • 在Java中,我们经常需要验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。

package com.gch.d7_regex;

public class RegexDemo1 {
    public static void main(String[] args) {
        // 需求:校验qq号码,必须全部数字6-20位且不能以0开头
        System.out.println(checkQQ("314314231432")); // true
        System.out.println(checkQQ("null")); // false
        System.out.println(checkQQ("2421")); // false
        System.out.println(checkQQ("1354315a543")); // false
        System.out.println("------------------------------");

        // 正则表达式的初体验
        System.out.println(checkQQ2("314314231432")); // true
        System.out.println(checkQQ2("null")); // false
        System.out.println(checkQQ2("2421")); // false
        System.out.println(checkQQ2("1354315a543")); // false

        String qq = "true";
        System.out.println((qq != null && qq.matches("[1-9]\\d{5,19}")));
    }
    public static boolean checkQQ2(String qq){ // \\d表示数字
        return qq != null && qq.matches("[1-9]\\d{5,19}");
    }
    public static boolean checkQQ(String qq){
        // 核心思想:
        // 先把异常数据进行过滤
        // 下面的就是满足要求的数据了
        // 1.判断qq号码的长度是否满足要求
        if(qq == null || qq.length() < 6 || qq.length() > 20 || qq.startsWith("0")){
            return false;
        }

        // 2.判断qq中是否全部是数字,不是返回false
        for(int i = 0;i < qq.length();i++){
            // 获取每位字符
            char ch = qq.charAt(i);
            // 判断这个字符是不是数字,不是数字直接返回false
            // 说明还没到数字区域
            if(ch < '0' || ch > '9'){
                return false;
            }
        }
        return true; // 肯定合法了
    }
}

1.2 正则表达式的使用详解

 

 

package com.gch.d7_regex;

public class RegexDemo2 {
    public static void main(String[] args) {
        //public boolean matches(String regex):判断是否与正则表达式匹配,匹配返回true
        // 正则表达式的一些常见匹配规则
        // 只能是a b c  一个[]表示一个字符
        System.out.println("-----------1-------------");
        System.out.println("a".matches("[abc]")); // true
        System.out.println("z".matches("[abc]")); // false
        // 一个[]表示一个字符,第二个b没有什么东西跟它去匹配,所以不满足为false
        System.out.println("ab".matches("[abc]")); // false
        System.out.println("ab".matches("[abc][abc]")); // true

        // 不能出现a b c , ^表示取反的意思
        System.out.println("-----------2-------------");
        System.out.println("a".matches("[^abc]")); // false
        System.out.println("z".matches("[^abc]")); // true
        System.out.println("zz".matches("[^abc]")); //false
        System.out.println("zz".matches("[^abc][^abc]")); //true

        // a到zA到Z(包括头尾的范围) , -写在[]里面表示范围的意思,写在[]外面表示就是一个-
        System.out.println("-----------3-------------");
        System.out.println("a".matches("[a-zA-Z]")); // true
        System.out.println("z".matches("[a-zA-Z]")); // true
        System.out.println("aa".matches("[a-zA-Z]"));//false
        System.out.println("zz".matches("[a-zA-Z]")); //false
        // 第一个z跟第一个[]去匹配  第二个z跟第二个[]去匹配
        System.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //true
        System.out.println("0".matches("[a-zA-Z]"));//false
        System.out.println("0".matches("[a-zA-Z0-9]"));//true
        System.out.println("0".matches("[0-9]"));//true


        // [a-d[m-p]] a到d,或m到p
        System.out.println("-----------4-------------");
        System.out.println("a".matches("[a-d[m-p]]"));//true
        System.out.println("d".matches("[a-d[m-p]]")); //true
        System.out.println("m".matches("[a-d[m-p]]")); //true
        System.out.println("p".matches("[a-d[m-p]]")); //true
        System.out.println("e".matches("[a-d[m-p]]")); //false
        System.out.println("0".matches("[a-d[m-p]]")); //false

        // [a-z&&[def]] a-z和def的交集。为:d,e,f
        // 细节:如果要求两个范围的交集,那么需要写符号&&
        // 如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号,没有任何含义
        System.out.println("----------5------------");
        System.out.println("a".matches("[a-z&[def]]")); //true
        System.out.println("&".matches("[a-z&[def]]")); //true

        System.out.println("a".matches("[a-z&&[def]]")); //false
        System.out.println("&".matches("[a-z&&[def]]")); //false
        System.out.println("d".matches("[a-z&&[def]]")); //true
        System.out.println("0".matches("[a-z&&[def]]")); //false

        // [a-z&&[^bc]] a-z之间排除了b,c  a-z和非bc的交集。(等同于[ad-z])
        System.out.println("-----------6------------_");
        System.out.println("a".matches("[a-z&&[^bc]]"));//true
        System.out.println("b".matches("[a-z&&[^bc]]")); //false
        System.out.println("0".matches("[a-z&&[^bc]]")); //false

        // [a-z&&[^m-p]] a到z和除了m到p的交集。(等同于[a-lq-z])
        System.out.println("-----------7-------------");
        System.out.println("a".matches("[a-z&&[^m-p]]")); //true
        System.out.println("m".matches("[a-z&&[^m-p]]")); //false
        System.out.println("0".matches("[a-z&&[^m-p]]")); //false
    }
}
package com.gch.d7_regex;

public class RegexDemo3 {
    public static void main(String[] args) {
        // 正则表达式的一些常见匹配规则
        // \ 转义字符 改变后面那个字符原本的含义
        //练习:以字符串的形式打印一个双引号
        //双引号"在Java中表示字符串的开头或者结尾
        //此时\表示转义字符,改变了后面那个双引号原本的含义
        //把他变成了一个普普通通的双引号而已。
        System.out.println("\""); // "

        // \表示转义字符
        //         这个\转义了后面的U  这个/转义了后面的m
//        System.out.println("c:\Users\moon\IdeaProjects\\basic-code\\myapi\\src");
        //两个\的理解方式:前面的\是一个转义字符,改变了后面\原本的含义,把他变成一个普普通通的\而已。
        System.out.println("c:Users\\moon\\IdeaProjects\\basic-code\\myapi\\src\\com\\itheima\\a08regexdemo\\RegexDemo1.java");


        //.表示任意一个字符  一个.只能表示一个字符
        // 两个.表示前面需要有两个任意的字符
        System.out.println("----------------1-----------------");
        System.out.println("你".matches("..")); //false
        System.out.println("你".matches(".")); //true
        System.out.println("你a".matches(".."));//true

        // \\d 表示任意的一个数字
        // \\d只能是任意的一位数字
        // 简单来记:在Java当中两个\表示一个\,因为一个\有特殊含义,表示转义字符
        System.out.println("-----------------2----------------");
        System.out.println("a".matches("\\d")); // false
        System.out.println("3".matches("\\d")); // true
        System.out.println("333".matches("\\d")); // false
        System.out.println("333".matches("\\d\\d\\d")); // true

        //\\w,小写w 只能是一位单词字符[a-zA-Z_0-9] 可以是字母、数字或者下划线
        System.out.println("-----------------3----------------");
        System.out.println("z".matches("\\w")); // true
        System.out.println("2".matches("\\w")); // true
        System.out.println("21".matches("\\w")); // false
        System.out.println("你".matches("\\w"));//false
        System.out.println("_".matches("\\w"));//true

        // 非单词字符 大写W
        System.out.println("----------------4---------------");
        System.out.println("你".matches("\\W")); // true
        // 以上正则匹配/表达式只能校验单个字符。
        
        // 必须是数字 字母 下划线 至少 6位
        System.out.println("-------------5---------------");
        System.out.println("123213".matches("\\w{6,}"));
        System.out.println("2442fsfsf".matches("\\w{6,}"));//true
        System.out.println("244f".matches("\\w{6,}"));//false

        // 必须是数字和字符 必须是4位
        System.out.println("------------6-----------------");
        System.out.println("shai".matches("[0-9a-zA-Z]{4}"));//true
        System.out.println("23dF".matches("[a-zA-Z0-9]{4}"));//true
        System.out.println("23 F".matches("[a-zA-Z0-9]{4}"));//false
        System.out.println("adbc".matches("[\\w&&[^_]]{4}"));//true
        System.out.println("23dF".matches("[\\w&&[^_]]{4}"));//true
        System.out.println("23_F".matches("[\\w&&[^_]]{4}"));//false
    }
}

1.3 正则表达式的常见案例

package com.gch.d7_regex;

public class RegexDemo4 {
    public static void main(String[] args) {
        /*
            需求
            请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。
            验证手机号码 13112345678 13712345667 13945679027 139456790271
            验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
            验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
        */

        //心得:
        //拿着一个正确的数据,从左到右依次去写,一个一个的去看
        //13112345678
        //分成三部分:
        //第一部分:1 表示手机号码只能以1开头
        //第二部分:[3-9] 表示手机号码第二位只能是3-9之间的
        //第三部分:\\d{9} 表示任意数字可以出现9次,也只能出现9次
        System.out.println("----------------1------------------");
        String regex1 = "1[3-9]\\d{9}";
        System.out.println("13112345678".matches(regex1));//true
        System.out.println("13712345667".matches(regex1));//true
        System.out.println("13945679027".matches(regex1));//true
        System.out.println("139456790271".matches(regex1));//false

        //座机电话号码
        //020-2324242 02122442 027-42424 0712-3242434
        //思路:
        //在书写座机号正则的时候需要把正确的数据分为三部分
        //一:区号0\\d{2,3}
        //      0:表示区号一定是以0开头的
        //      \\d{2,3}:表示区号从第二位开始可以是任意的数字,可以出现2到3次。
        //二:- ?表示次数,0次或一次
        //三:号码 号码的第一位也不能以0开头,从第二位开始可以是任意的数字,号码的总长度:5-10位
        System.out.println("------------------2--------------------");
        String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
        System.out.println("020-2324242".matches(regex2)); // true
        System.out.println("02122442".matches(regex2)); // true
        System.out.println("027-42424".matches(regex2)); // true
        System.out.println("0712-3242434".matches(regex2)); // true

        //邮箱号码
        //3232323@qq.com   zhang_san@itcast.cnn    dlei0009@163.com     dlei0009@pci.com.cn
        //思路:
        //在书写邮箱号码正则的时候需要把正确的数据分为三部分
        //第一部分:@的左边 \\w+  +表示一次或者多次,即至少出现一次
        //        \\w:a-z A-Z 0-9 _
        //        表示任意的字母数字下划线,至少出现一次就可以了
        //第二部分:@ 表示只能出现一次,也只能出现一次
        //第三部分:
        //                   [\\w&&[^_]]:表示任意的字符去掉下划线
        //      3.1         .的左边[\\w&&[^_]]{2,6}
        //                  任意的字母加数字,总共出现2-6次(此时不能出现下划线)
        //      3.2         . \\. 在Java当中两个\表示一个\
        //      3.3         大写字母,小写字母都可以,只能出现2-3次[a-zA-Z]{2,3}
        //      我们可以把3.2和3.3看成一组,这一组可以出现1次或者两次
        System.out.println("----------------3------------------");
        String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
        System.out.println("3232323@qq.com".matches(regex3)); // true
        System.out.println("zhangsan@itcast.cnn".matches(regex3)); // true
        System.out.println("dlei0009@163.com".matches(regex3)); // true
        System.out.println("dlei0009@pci.com.cn".matches(regex3)); // true


        // 在实际开发中,很少会自己写正则表达式
        // 百度一个类似的,自己改成公司要求的
        String regex = "";
        System.out.println("-----------------4----------------");
        //24小时的正则表达式
        String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
        System.out.println("23:11:11".matches(regex4));

        String regex5 = "([01]\\d 2[0-3])(:[0-5]\\d){2}";
        System.out.println("23:11:11".matches(regex5));
    }
}

1.4 正则表达式在方法中的应用

package com.gch.d7_regex;

import java.util.Arrays;

/**
   目标:正则表达式在方法中的使用
     public String[] split(String regex):
         -- 按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组
     public String replaceAll(String regex,String newStr)
         -- 按照正则表达式匹配的内容进行替换
 */
public class RegexDemo6 {
    public static void main(String[] args) {
        String names = "小路dsahid123蓉儿3242asfda过儿";

        String[] arrs = names.split("\\w+");
        System.out.println(Arrays.toString(arrs));
        for (int i = 0; i < arrs.length; i++) {
            System.out.println(arrs[i]);
        }

        String names2 = names.replaceAll("\\w+" ," ");
        System.out.println(names2);
    }
}

 

 

 1.5 正则表达式爬取信息

package com.gch.d7_regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 拓展:正则表达式爬取信息中的内容。(了解)
 */
        public class RegexDemo7 {
            public static void main(String[] args) {
                String rs = "来黑马程序学习Java,电话020-43422424,或者联系邮箱" +
                        "itcast@itcast.cn,电话18762832633,0203232323" +
                        "邮箱bozai@itcast.cn,400-100-3233 ,4001003232";

                // 需求:从上面的内容中爬取出 电话号码和邮箱。
                // 1、定义爬取规则,字符串形式
                String regex = "(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})|(1[3-9]\\d{9})" +
                        "|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9}-?\\d{3,9})";

                // 2、把这个爬取规则编译成匹配对象。
                Pattern pattern = Pattern.compile(regex);

                // 3、得到一个内容匹配器对象
                Matcher matcher = pattern.matcher(rs);

                // 4、开始找了
                while (matcher.find()) {
                    String rs1 = matcher.group();
                    System.out.println(rs1);
                }
            }
        }

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java正则表达式详解 的相关文章

  • Struts2正则表达式校验

    原文地址 http woxiangbo iteye com blog 463397 下default xml文件 然后在xwork源代码中 需单独下载 找到相应的处理类 param即该类的属性 intege 1 9 d 整数 intege1
  • 包装类自动装箱和拆箱原理

    包装类的自动装箱和自动拆箱 包装类的自动装箱和拆箱是JDK1 5的新特性 一 首先 了解自动装箱的过程 有两种自动装箱过程 第一种 128 127 之内 调用相应包装类的valueOf 例如 Integer i 12 Integer a 2
  • 什么?到现在你还不知道什么是 访问修饰限定符吗?

    导航小助手 前言 一 public 访问修饰限定符 二 private 访问修饰限定符 三 default 访问修饰限定符 3 1 包的概念 3 2 导入包中的类 3 3 自定义包 3 4 包访问权限 3 5 常见的包 四 protecte
  • Java字符串分析器

    package StruingTokenizer import java util StringTokenizer public class StringTokenizer public static void main String ar
  • JavaScript最后分水岭——正则表达式

    个人简介 个人主页 微风洋洋 博客领域 编程基础 后端 写作风格 干货 干货 还是tmd的干货 精选专栏 JavaScript 支持洋锅 点赞 收藏 留言 好久不见 甚是想念 大家好 我是微风洋洋 也可以叫我洋锅 细心地小伙伴可能已经发现
  • 正则实现去除字符串前后空格

    前言 正则去掉字符串前后空格 1 去除左空格 str1是处理后的 let str1 str replace s g 2 去除右空格 str2是处理后的 let str2 str replace s g 3 去除左右空格 let str3 s
  • 对字符串进行正则取子串

    题目是这样的 对一段HTML网页内容 解析出其中所有的键值对 比如其中type text type为属性 text为值 二者为一个键值对 内容如下
  • private static final Long serialVersionUID= 1L详解

    我们知道在对数据进行传输时 需要将其进行序列化 在Java中实现序列化的方式也很简单 可以直接通过实现Serializable接口 但是我们经常也会看到下面接这一行代码 private static final Long serialVer
  • test is not a function (js正则表达式匹配问题)

    js中正则表达式匹配时 如果使用test函数 就必须不带引号 并且必须是 定义的规则变量 test 要测试的string 定义变量规则不要带引号 会错误的 如果不使用test 使用match则可以带引号 var re 1 9 d 4 10
  • System.out.println()影响系统运行效率!!!

    在Java开发中 System out println 是一种常用的输出方式 可以将字符串输出到控制台 然而 这种输出方式在一定程度上会影响系统的运行效率 首先 System out println 的输出操作需要占用CPU和内存资源 因为
  • String类详解

    目录 一 创建字符串的四种方式 1 直接赋值 2 通过构造方法创建对象 3 通过字符数组创建对象 4 通过String类的静态方法valueOf 任意数据类型 gt 转为字符串 二 字符串比较相等 equals方法 equalsIgnore
  • 中文姓名、电话、邮箱的正则表达式

    1 中文姓名 如 张三 噶及 洛克业 a zA Z0 9 u4e00 u9fa5 1 10 2 电话验证 如 010 85369999 186199999 0 d 2 3 d 7 8 d 3 5 13 14 15 18 17 d 9 3 电
  • JS字符串替换函数全部替换方法

    color olive JS字符串替换函数 Replace 字符串1 字符串2 1 我们都知道JS中字符串替换函数是Replace 字符串1 字符串2 但是这个函数只能将第一次出现的字符串1替换掉 那么我们如何才能一次性全部替换掉了 将上面
  • Java的内省技术

    什么是内省 在计算机科学中 内省是指计算机程序在运行时 Run time 检查对象 Object 类型的一种能力 通常也可以称作运行时类型检查 不应该将内省和反射混淆 相对于内省 反射更进一步 是指计算机程序在运行时 Run time 可以
  • Java之单元测试(JUnit单元测试框架)

    一 概述 单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方法 所以单元测试就是针对Java方法的测试 进而检查方法的正确性 常规测试有什么问题 只有一个main方法 如果一个方法的测试失败了 其他方法会受到影响 无
  • Java 正则表达式工具类大全

    import java util regex Matcher import java util regex Pattern author nql Description 验证工具类 date now public class Validat
  • Day8_8 Java学习之List集合类

    目录 一 List集合的概述 ArrayList集合类的概述 ArrayList集合的语法定义 ArrayList集合的常用方法 LinkedList集合概述 LinkedList集合的语法定义 LinkedList集合类常用方法 二 Se
  • java I/0操作 FileWriter类

    package filewriter p1 import java io FileWriter import java io IOException public class FileWriterDemo 获取当前系统的换行符 获取指定键指
  • 正则校验手机号

    正则表达式可以用来校验手机号码的合法性 如果你想使用正则表达式来校验中国大陆的手机号码 可以使用如下的正则表达式 1 3 9 d 9 这个正则表达式可以匹配所有 13 到 19 开头的 11 位数字 即所有中国大陆的手机号码 例如 如果你想
  • Python 正则表达式指南

    文章目录 1 正则表达式基础 1 1 简单介绍 1 2 数量词的贪婪模式与非贪婪模式 1 3 反斜杠的困扰 1 4 匹配模式 2 re模块 2 1 开始使用re 2 2 Match 2 3 Pattern 1 正则表达式基础 1 1 简单介

随机推荐

  • 微软鼠标测试软件,第一款win8鼠标:微软Sculpt全球首测

    1Sculpt触控鼠标 带来全新感受 中关村在线键鼠频道原创 微软硬件在外设产品研发上 一直致力于以领先的科技带给用户超凡的体验 从早期的IE3 0 到越野蓝影 再到Arc Touch Touch Mouse等等 微软硬件在的每一次技术革命
  • 企业怎么选择固定资产管理系统

    资产管理 无论在企业还是在事业单位 都是管理人员重要的工作 随着计算机技术的普及 资产管理系统 已经有了相对清晰的管理流程及其配套的管理软件 资产管理系统是面向资产密集型企业的企业信息化解决方案的总称 它以提高资产管理效率 降低企业管理成本
  • VS2019 preview 卡在正在加载解决方案

    VS2019 解决方案 或者项目 卡 正在加载 的解决办法 1 关闭VS 2 去C Users
  • 微信小程序css篇----定位(position)

    昨天2017的微信公开课pro如期进行了 小程序将于2017年1月9日对个人开放 公司项目的demo版做了个大概 过程中花的时间最多的还是页面布局 所以后面将花一段时间将css的属性在小程序里过一篇 虽然小程序里面对于css支持 但没有说明
  • 使用labview 的http协议实现post和get,带解析

    1 创建一个新项目 右键点击我的电脑 新建web服务 然后就弹出web资源和启动VI 2 web资源新建一个VI HTTPMethed 1 vi 用来相应post data的数据 右键可以显示方法url HTTPMethed 1内容如下 3
  • shell脚本实现文件移动、复制等操作

    如题 在此做一记录 方便查阅 bin bash 将一个目录下的一些文件移动到另一个目录下 raw dir home liuyi evt test 可修改绝对路径 mkdir home liuyi evt bp 创建新的文件目录 for el
  • 四、spring源码循环依赖的处理之doCreateBean方法的执行流程(文字描述)

    还写了一篇 内容和这个差不多的 emm 那篇更简洁 算是半伪码形式 https blog csdn net qq 36951116 article details 100078947 其实createBean方法没做什么事 主要就是 1 调
  • Android---SpringBoot实现前后端数据交互

    Android SpringBoot实现前后端数据交互 星光不问赶路人 时间不负有心人 这篇是针对android传数据到后台springboot 使用Xutils框架 使用Xutils框架 关于xutils的使用这是老师的博客大家可以看看
  • 【1024狂欢】力扣经典链表OJ题合集

    现在的力扣题的源代码我会全部一并上传至我的码云仓库里面 点我看仓库 写在前面 首先祝各位程序猿1024狂欢节快乐鸭 这是属于我们的节日 为了致敬1024 今天的力扣系列不再是一题了 而是多个题的组合 也是与我们最近更新的内容梦幻联动 祝大家
  • 节后充电!卷王必看的前端进阶指南来喽~

    本文推荐最近在考虑新机会的小伙伴阅读 前言 上 周和部门BP聊天 她说最近在boss上放出一个初级前端岗位 平均每天都能收到500多份简历 前端市场越来越卷 跳槽前做好技术进阶突击 才能稳拿offer 这里有一份我爆肝两个月整理出的 202
  • 使用 C# 下载文件的十八般武艺

    文件下载是一个软件开发中的常见需求 本文从最简单的下载方式开始步步递进 讲述了文件下载过程中的常见问题并给出了解决方案 并展示了如何使用多线程提升 HTTP 的下载速度以及调用 aria2 实现非 HTTP 协议的文件下载 简单下载 在 N
  • 移动端(H5)手搓弹框

  • js通过文件的url下载文件到本地

    1 美图 2 概述 a href download papers abc doc 点击链接下载 a
  • 什么是哈夫曼编码

    在上一篇 我们介绍了一种特殊的数据结构 哈夫曼树 也被称为最优二叉树 没看过的小伙伴可以点击链接 什么是哈夫曼树 那么 这种数据结构究竟有什么用呢 我们今天就来揭晓答案 计算机系统是如何存储信息的呢 计算机不是人 它不认识中文和英文 更不认
  • HDFS 分布式文件系统详解

    1 HDFS概述 Hadoop 分布式系统框架中 首要的基础功能就是文件系统 在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统 这个抽象类下面有很多子实现类 究竟使用哪一种 需要看我们具体的实现类 在我们实际工
  • 理解React的虚拟DOM

    一 背景 React是一个用于构建用户界面的JavaScript库 区别于老的前端开发技术 其最核心的就是引入了虚拟DOM的技术 为了对React有一个比较全面和深入的了解 所以把最近学习React虚拟DOM的知识 做个笔记 仅供学习 二
  • LRU LFU 概念、底层原理及其实现 超详细~

    0 前置提要 本篇约为8650字 阅读完需要约40 60分钟 主要介绍页面置换算法 LRU和LFU的原理及其实现 对应leetcode140和460 如果能给个赞就更好了 1 从内存置换算法说起 计算机的运行的程序和数据保存在内存中 内存的
  • C++ MYSQL 多线程并发查询处理数据

    1 ThreadPool hpp pragma once ifndef THREAD POOL H define THREAD POOL H include
  • ERROR: Could not find a version that satisfies the requirement keras-nightly (from versions: none)

    问题描述 这个错误发生于博主在python 3 8的环境里安装tensorflow 2 5 0时 执行pip install tensorflow 2 5 0 出现了以下错误 ERROR Could not find a version t
  • Java正则表达式详解

    1 1 正则表达式的概念以及演示 正则表达式可以用一些规定的字符来制定规则 并用来校验数据格式的合法性 正则表达式就是用来验证各种字符串的规则 它内部描述了一些规则 我们可以验证用户输入的字符串是否匹配这个规则 正则表达式是一种强大的校验机