自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天行健 君子以自强不息,地势坤 君子以厚德载物。

风声雨声读书声,声声入耳。家事国事天下事,事事关心。

  • 博客(1096)
  • 收藏
  • 关注

原创 MySQL 图形化界面工具 -- DataGrip的安装和使用、更改默认快捷键

1. DataGrip的安装和使用我们在日常的开发中,会借助于MySQL的图形化界面,来简化开发,提高开发效率。而目前mysql主流的图形化界面工具,有以下几种:DataGrip这种图形化界面工具,功能更加强大,界面提示更加友好,是我们使用MySQL的不二之选。接下来,我们来介绍一下DataGrip该如何安装、使用。1.1 下载DataGripDataGrip官网1.2 安装DataGrip双击下载好的安装包。点击next,一步一步的完成安装。...

2022-04-06 10:04:17 7584

原创 软件工程 -- 数据流图的画法

1. 数据流图的画法1.1 数据流图的概念数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。说明:在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。此外,设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。1.2

2021-11-13 21:49:08 45044 10

原创 CSS -- CSS选择器

基本选择器(重要)优先级:ID选择器 > 类选择器 > 标签(元素)选择器。标签(元素)选择器:选择某一个或者某一类元素。ID选择器 :id不能重复,全局唯一。类选择器:可以跨标签,类相同,可以复用。示例:通配符选择器: * { margin: 0; padding: 0; }元素选择器 h1 { color: orange; }.

2021-02-28 11:05:51 7305 3

原创 Java虚拟机(JVM)-- Dump内存快照

在运行java程序的时候,有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有 Eclipse Memory Analyzer tool(MAT)插件可以测试,而在idea中也有这么一个插件,就是JProfiler,一款性能瓶颈分析工具

2022-08-22 09:25:59 1222 3

原创 力扣题解 Java语言实现 -- LRU 缓存

LRU是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。也就是说:我没认为最近使用过的数据是 有用的,而那些很久都没有使用过的数据是 无用的,在缓存容量不够的时候,就会删去 无用的数据,这样就可以为新加入的 有用的 数据提供空间。首先需要接收一个 capacity 参数最为缓存的容量,然后实现put(key, val) 方法存入键值对、实现 get(key) 方法获取 key 对应的 val,如果 key 不存在则返回 -1。......

2022-08-08 23:30:13 239

原创 计算机操作系统 死锁 -- 产生死锁的必要条件、死锁的处理方法(鸵鸟策略、死锁检测与死锁恢复、死锁预防、死锁避免)

两个及两个以上进程分别等待对方所占的资源,于是两者都不能执行而处于永远等待状态,这种现象称为死锁。产生死锁必须同时满足以下四个条件:鸵鸟在遇到危险时会把头埋在沙子里,假装根本没发生问题。因为解决死锁问题的代价很高,因此鸵鸟策略这种不采取任务措施的方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。大多数操作系统,包括 Unix,Linux 和 Windows,处理死锁问题的办法仅仅是忽略它。不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。上图为资源分配

2022-07-15 17:56:30 499

原创 计算机操作系统 进程管理 -- 进程与线程、进程状态的切换、进程调度算法、进程同步、进程通信

进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换。不同进程的线程切换会引起进程切换。由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。......

2022-07-15 13:01:57 252

原创 计算机操作系统 概述 -- 操作系统的基本特征、操作系统的基本功能、系统调用、宏内核与微内核、中断(外中断、异常、陷入)

操作系统有4个基本特征:并发、共享、虚拟、异步。并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。

2022-07-15 09:05:34 81

原创 Java算法 -- 位图的概念和实现

位图可以利用每一位来对应一个值,比如可以利用int类型的数去存储0~31这个集合的数字。如果该集合内的数字存在,则把对应的位设置位1(默认为0)。如果要存储的集合元素范围超过了32个,则可以用int数组去实现位图,第一个数组元素保存的元素,第二个数组元素保存的数组元素。位图的好处就是可以节省大量的空间,缺点是实现比较复杂。并不是说int类型的位图只可以存储的集合元素,也可以存储例如的元素,在存储的时候设置一下规则就行了,1位对应5,2位对应6,…32位对应36。我们先把完整的实现代码放在这里,后面会分析里

2022-07-06 16:27:39 254

原创 Java算法 -- 单链表的反转、单链表实现栈和队列以及双端队列、K 个一组翻转链表

单链表的反转即把原来的单链表的指针顺序倒置。如下图所示:需要注意的点是,中是值(传递引用也可以认为是特殊的值传递)传递,函数在改变完值后记得赋值给原来的值,变化才会生效。详细请看这篇文章(总的来说就是不改变不改变传递进来的引用副本的值,那么更改是可以生效的。如果改变了引用副本的值,那么对原引用的更改是不生效的。)示例代码:运行结果:下面我们就可以正式的编写反转单链表的代码了:运行结果:下面我们来解释原理:初始状态:第一次循环结束后的状态:第二次循环结束后的状态:第三次循环结束后的状态:因为第三次

2022-06-20 19:04:15 81

原创 Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置、局部最小值问题求解

二分查找也是一种在数组中查找数据的算法。它只能查找已经排好序的数据。二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边。因此,比较一次就可以把查找范围缩小一半。重复执行该操作就可以找到目标数据,或得出目标数据不存在的结论。二分查找的代码:如果有多个目标元素,上面这个元素无法保证目标元素的相对位置,比如保证可以找到第一个目标元素和最后一个目标的索引。假设现在有一个整型数组,他有个特点:相邻的元素不相同。(不一定有序)现在我们要查找这个数组的的一个局部最小值。那么什

2022-06-20 00:59:23 179

原创 Java算法 -- 选择排序、冒泡排序、插入排序、前缀和数组、Java中的Math.random()函数、01不等概率随机到01等概率随机、从[1,5]随机到[1,7]随机对数器的使用

选择排序的Java代码如下:冒泡排序的Java代码如下:插入排序的Java代码如下:假设现在有一个整型数组,要求返回这个数组索引位置到位置之间数组元素的累加和。你可以第一时间想到下面这个做法:但是入门每次拿数组都要经过次算术运算显然有点浪费时间了,于是我们可能想到了下面这种二维数组结构去用空间换时间。它的一维索引是的值,二维索引是的值,该二维数组的位置代表了数组索引位置到位置之间数组元素的累加和。假设现在 ,则该二维数组可以表示为:其中代表不赋值,因为大于了。这种方式有2个非常显著的弊端接下

2022-06-19 22:31:12 62

原创 原码、补码、反码和Java中整型数据的表示

在Java中 32位的整数的表示范围是 -231 ~ 231 - 1(其中负数占了一半,非负数占了一半),最高位(32位)表示数字的符号,其中0表示整数,1表示负数。比如:-231 转为10进制为-2147483648,在计算机内部为:232转为10进制为2147483647,在计算机内部为:原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值,例如的十进制的的正负1,用8位二进制的原码表示如下:正数的反码是其原码本身。负数的反码是在其原...

2022-06-19 15:13:19 137

原创 Java位运算:位异或运算、位与运算、位或运算、位取反运算、左位移运算、右位移运算、无符号右移运算、不用额外变量交换两个整数的值(使用位异或运算)、只出现一次的数字

位运算符比算术运算符速度要快,但是为什么会快呢?因为算术运算符也是通过计算机通过位运算调用栈来实现的。对于有符号数,一般在最高位保留符号位,最高位1表示负数,最高位0表示正数。在介绍下面的题目之前,我们来看看位异或运算符为,其运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。下面是的异或运算过程:异或运算你可以理解为不进位的加法运算。异或运算满足下面的规律:位与运算符为&,其运算规则是:参与运算的

2022-06-18 14:09:11 248

原创 Java日志框架 -- SpringBoot中的日志使用

springboot框架在企业中的使用越来越普遍,springboot日志也是开发中常用的日志系统。springboot默认就是使用SLF4J作为日志门面,logback作为日志实现来记录日志。不懂日志框课和日志门面的请查看这篇文章我们先创建一个SpringBoot的项目:这是项目中的依赖:没有导入额外的依赖我们来查看依赖关系图:总结:LogsSpringbootApplicationTests.java运行结果:application.properties运行结果:给类路径下放上每个日志框架自

2022-06-13 23:59:59 261

原创 Java日志框架 -- log4j2(入门案例、Slf4j + Log4j2、log4j2异步日志、无垃圾记录)

是对的升级版,参考了的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:官网: https://logging.apache.org/log4j/2.x/首先创建一个普通的Maven工程:然后添加log4j2相关的依赖然后编写相应的测试代码:Log4j2Test.java运行结果:log4j2默认加载classpath下的 文件中的配置。我们现在去创建这个配置文件,并配置基本的配置信息:log4j2.xml再次运行上面的测试程序:目前市面上最主流的日志门面就是SLF4J,

2022-06-13 20:18:56 382

原创 Java日志框架 -- Logback(Logback入门案例、logback配置(FileAppender、异步日志、拆分Appender、过滤器)、logback-access)

Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好。官方网站:https://logback.qos.ch/index.htmlLogback主要分为三个模块:首先创建一个Maven工程:然后添加Logback相关的依赖,这里选择slf4j日志门面技术加上logback日志实现框架:编写测试代码:LogbackTest.java运行结果:logback会依次读取以下类型配置文件:logback组件之间的关系:logback.xml配置的这些属性都是通过set方法

2022-06-13 17:08:47 351

原创 Java日志框架 -- SLF4J日志门面(入门案例、SLF4J优点、SLF4J日志绑定、SL4J桥接旧的日志框架)

JCL日志门面逐渐被淘汰了,因为他无法动态的扩展具体的日志实现框架。简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Java日志访问提供一套标准、规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等。当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j、logback等),中间使用桥接器完成桥

2022-06-13 00:26:49 351

原创 Java日志框架 -- JCL日志门面(JCL概念介绍、JCL示例)

全称为Jakarta Commons Logging,是Apache提供的一个通用日志API。是日志门面的一种实现方式,另外一种日志门面的实现方式是Slf4j。它是为 "所有的Java日志实现"提供一个统一的接口,它自身也提供一个日志的实现,但是功能非常弱(SimpleLog)。所以一般不会单独使用它。他允许开发人员使用不同的具体日志实现工具: Log4j、Jdk自带的日志(JUL)。JCL 有两个基本的抽象类:首先创建一个普通的Maven工程:然后导入相关的依赖:示例代码:JCLTest.java

2022-06-12 21:38:03 163

原创 Java日志框架 -- LOG4J(Log4j入门案例、日志级别、Log4j组件(Loggers、Appenders、Layouts)、配置文件、内置日志记录、自定义Logger)

Log4j是Apache下的一款开源的日志框架,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程。方便项目的调试。官方网站: http://logging.apache.org/log4j/1.2/Log4jTest.java出现这个的原因是因为我们没有正确的初始化一般只使用4个级别,优先级从高到低为 ERROR > WARN > INFO > DEBUGLog4J 主要

2022-06-12 19:26:50 183

原创 Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)

日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。问题:因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事务处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可

2022-06-08 13:53:57 68 1

原创 E-R图的画法

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。实体(Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名。比如下面这个表示一个学生的实体:属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来,如学生的姓名、学号、性别、都是属性。如果

2022-06-07 17:00:59 2220

原创 黑盒测试中多变量的等价类划分规则:弱一般等价类、强一般等价类、弱健壮等价类、强健壮等价类

强/弱:一般/健壮考虑所有等价类的组合(包括无效和有效)

2022-06-05 15:16:39 801

原创 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

软件和其他产品一样,都有一个从“出生”到“消亡”的过程,这个过程称为软件的生命周期。通常,可将软件生命周期划分为6个阶段:瀑布模型将软件开发过程分为6个阶段:计划→需求分析→软件设计→编码→测试→运行维护。对于现代软件来说,软件开发各阶段之间的关系大部分不会是线性的,很难使用瀑布模型开发软件,因此瀑布模型不再适合现代软件开发,已经被逐渐废弃。快速原型模型与瀑布模型正好相反,它在最初确定用户需求时快速构造出一个可以运行的软件原型,这个软件原型向用户展示待开发软件的全部或部分功能和性能,客户对该原型进行审核

2022-06-04 19:12:04 149

原创 Java 并发编程 进阶 -- Java并发包中锁原理剖析(LockSupport、抽象同步队列AQS、独占锁ReentrantLock、读写锁ReentrantReadWriteLock)

JDK中的rt.jar包里面的LockSupport是个工具类,它的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。AQS借助于两个类:Unsafe(提供CAS操作)和LockSupport(提供park/unpark操作)LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类的方法的线程是不持有许可证的。LockSupport是使用Unsafe类实现的,下面介绍LockSupport中的几个主要函数。如果调用park方法的线程已经拿到了与Loc

2022-06-02 18:50:02 89

原创 Java 并发编程 进阶 -- ThreadLocalRandom类原理剖析、原子操作类原理剖析(AtomicLong)、并发List原理剖析(CopyOnWriteArrayList)

ThreadLocalRandom类是JDK 7在JUC包下新增的随机数生成器,它弥补了Random类在多线程下的缺陷。在JDK 7之前包括现在,java.util.Random都是使用比较广泛的随机数生成工具类,而且java.lang.Math中的随机数生成也使用的是java.util.Random的实例。下面先看看java. util.Random的使用方法:代码(1)创建一个默认随机数生成器,并使用默认的种子。代码(2)输出10个在0~5(包含0,不包含5)之间的随机数。随机数的生成需要一个

2022-06-02 13:20:17 79

原创 Java 并发编程 -- 并发编程线程基础(线程安全问题、可见性问题、synchronized / volatile 关键字、CAS、Unsafe、指令重排序、伪共享、Java锁的概述)

并发是指同一个时间段内多个任务同时都在执行,并且都没有执行结束,而并行是说在单位时间内多个任务同时在执行。并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定同时在执行。在单CPU的时代多个任务都是并发执行的,这是因为单个CPU同时只能执行一个任务。在单CPU时代多任务是共享一个CPU的,当一个任务占用CPU运行时,其他任务就会被挂起,当占用CPU的任务时间片用完后,会把CPU让给其他任务来使用,所以在单CPU时代多线程编程是没有太大意义的,并且线程

2022-06-02 10:13:48 63

原创 Java 并发编程 -- 并发编程线程基础(线程创建与运行、线程通知与等待、join / sleep / yield方法、线程中断、线程上下文切换、死锁、守护线程与用户线程、ThreadLocal)

Java中的线程分为两类,分别为daemon线程(守护线程)和user线程(用户线程)。在JVM启动时会调用main函数,main函数所在的线程就是一个用户线程,其实在JVM内部同时还启动了好多守护线程,比如垃圾回收线程。那么守护线程和用户线程有什么区别呢?区别之一是当最后一个非守护线程结束时,JVM会正常退出,而不管当前是否有守护线程,也就是说守护线程是否结束并不影响JVM的退出。言外之意,只要有一个用户线程还没结束,正常情况下JVM就不会退出。

2022-06-01 22:11:20 49

转载 JVM -- Java虚拟机自动内存管理机制(运行时数据区域、HotSpot虚拟机对象探秘)

程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

2022-05-28 21:01:42 83

原创 Java 并发 -- lock vs synchronized、volatile(保证可见性和有序性)、悲观锁 vs 乐观锁

乐观锁是一种乐观思想,假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。悲观锁是一种悲观思想,即认为写多读少,遇到并发写的可能性高,每次去拿数据的 时候都认为其他线程会修改,所以每次读写数据都会认为其他线程会修改,所以每次读写数据时都会上锁。其他线程想要读写这个数据时,会被这个线程block,直到这个线程释放锁然后其他线程获取到锁。...

2022-05-27 22:34:17 148

原创 Java 并发 -- 线程状态(Java线程六种状态、操作系统层次的五种状态)、线程池(七大核心参数)、wait vs sleep

新建:当一个线程对象被创建,但还未调用 start 方法时处于新建状态,此时未与操作系统底层线程关联。可运行:调用了 start 方法,就会由新建进入可运行,此时与底层线程关联,由操作系统调度执行。终结:线程内代码已经执行完毕,由可运行**进入终结,此时会取消与底层线程关联。阻塞:当获取锁失败后,由可运行进入 Monitor 的阻塞队列阻塞,此时不占用 cpu 时间。

2022-05-27 15:37:11 127

原创 Java 设计模式 -- 单例模式的实现(饿汉式、枚举饿汉式、懒汉式、双检锁懒汉式、内部类懒汉式)、jdk 中用到单例模式的场景、DCL实现单例需用volatile 修饰静态变量

单例模式保证java应用程序中,一个类Class只有一个实例在,使用单例模式好处在于可以节省内存,节约资源,对于一般频繁创建和销毁对象的可以使用单例模式。因为它限制了实例的个数,有利于java垃圾回收。好的单例模式也能提高性能。例如:数据库连接池、httpclient连接单例。对于系统中的某些类来说,只有一个实例很重要,Windows中就只能打开一个任务管理器。

2022-05-27 11:18:33 51

原创 Java -- ArrayList扩容机制、LinkedList vs ArrayList、Iterator(Fail-Fast机制、Fail-Safe机制)、HashMap常见面试题

主要原因在于 并发下的Rehash 会造成元素之间会形成⼀个循环链表。不过,jdk 1.8 后解决了这个问题,但是还是不建议在多线程下使⽤ HashMap,因为多线程下使⽤ HashMap 还是会存在其他问题⽐如数据丢失。并发环境下推荐使⽤。ArrayList扩容机制、 Iterator(Fail-Fast机制、Fail-Safe机制)、HashMap常见面试题ConcurrentHashMap 。

2022-05-27 00:22:19 223

原创 HTTP -- HTTP内容协商、HTTP认证、HTTP缓存

在HTTP中,内容协商是一种用于在同一URL上提供资源的不同表示形式的机制。内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的标准。

2022-05-26 15:25:48 108

原创 HTTP -- HTTP相关协议(TCP/IP、DNS、URI/URL、HTTPS)、HTTP请求响应过程、HTTP报文分析(请求方法、URL)、HTTP标头

你有没有想过为什么你可以通过键入 https://www.bilibili.com就能够获取你想要的网站?我们上面说到,计算机网络中的每个端系统都有一个IP地址存在,而把IP地址转换为便于人类记忆的协议就是DNS协议。HTTPS 的全称为(Hyper Text Transfer Protocol over SecureSocket Layer),全称有点长,HTTPS是以安全为目标的HTTP通道,在HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。

2022-05-26 13:13:21 246

原创 HTTP -- 认识HTTP和HTTP相关组件(网络模型、游览器、Web服务器、CDN、WAF、Web Service、HTML、Web页面的构成)

HTTP是一种超文本传输协议(HyperText Transfer Protocol,HTTP)我们在地址栏输入URL(即网址),浏览器会向DNS(域名服务器)提供网址,由它来完成URL到I地址的映射。然后将请求你的请求提交给具体的服务器,在由服务器返回我们要的结果(以HTML编码格式返回给浏览器),浏览器执行HTML编码,将结果显示在浏览器的正文。这就是一个浏览器发起请求和接受响应的过程。

2022-05-25 16:56:49 95 2

原创 Java正则表达式介绍和使用规则(Pattern类、Matcher类、PatternSyntaxException类)

正则表达式(regular expression,简称regex)是文本处理方面功能最强大的工具之一,正则表达式语言用来构造正则表达式(最终构造出来的字符串就称为正则表达式),正则表达式用来完成搜索和替换操作。

2022-05-24 23:31:12 224

原创 SVN的安装和介绍以及SVN的配置和使用(包含IDEA集成SVN、SVN解决版本冲突问题)

SVN的全称是Subversion,即版本控制系统。它是一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。

2022-05-24 20:52:42 266

原创 Redis 进阶 -- 发布与订阅

Redis的发布与订阅功能可以让客户端通过广播方式,将消息同时发送给可能存在的多个客户端,并且发送消息的客户端不需要知道接收消息的客户端的具体信息。在Redis中,客户端可以通过订阅特定的频道来接收发送至该频道的消息,我们把这些订阅频道的客户端称为订阅者。一个频道可以有任意多个订阅者,而一个订阅者也可以同时订阅任意多个频道。除此之外,客户端还可以通过向频道发送消息的方式,将消息发送给频道的所有订阅者,我们把这些发送消息的客户端称为发送者。除了订阅频道之外,客户端还可以通过订阅模式来接收。

2022-05-17 01:11:18 290

原创 Redis 进阶 -- 持久化(RDB持久化、AOF持久化、RDB-AOF混合持久化、无持久化)

Redis的持久化功能可以将存储在内存中的数据库数据以文件形式存储到硬盘,并在有需要时根据这些文件的内容实施数据恢复。RDB持久化是一种全量持久化方式,可以创建出经过压缩的时间点二进制快照文件,并通过载入文件中的二进制数据来实施数据恢复。这种持久化的优点是可以高效地生成文件并且快速地实施数据恢复,缺点则是文件生成间隔较长以及停机时数据丢失量较大。AOF持久化是一种增量式持久化功能,可以创建出协议文本格式的文件,文件中以协议形式记录了服务器执行过的所有命令,服务器可以通过重新执行文件中保存的命令。

2022-05-16 17:41:07 151

javaee-final-homework.zip

JvaaEE SSM+JSP 水果订单管理系统大作业

2021-11-10

itheima_spring_test.zip

SSM整合模拟项目 含登录拦截器 (直接解压 把resources目录下面的test.sql文件运行后 改一下数据库的配置文件即可运行)

2021-11-02

vue3_dev_tools.crx

Vue开发者工具3.0

2021-09-11

cqutlms.zip

JSP+JDBC+Servlet实现简单的图书管理系统

2021-06-01

贪吃蛇小游戏资源(含代码和图片)-snake.zip

Java Swing写的贪吃蛇小游戏

2021-02-19

jdk-8u191-windows-i586-8.0.1910.12.zip

jdk1.8

2021-02-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除