- 博客(132)
- 收藏
- 关注
原创 一篇文章搞定SpringBoot日志
SpringBoot框架默认集成的抽象日志框架为SLF4J(Simple Logging Facade for Java),具体的日志框架为LogBack。SpringBoot项目直接引入依赖即可</</</
2024-11-23 14:39:11
467
原创 一篇文章进阶MySQL数据库
视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询和使用的表,并且是在使用视图是动态生成的。即视图只保存了查询的SQL逻辑,不保存查询结果要使视图可进行更新操作,视图的行与基础表中的行之间必须存在一对一的关系。如果视图包含聚合函数、窗口函数、DISTINCT、GROUP BY、HANVING、UNION、UNION ALL则视图不可更新-- 创建视图。
2024-10-24 16:03:41
1200
原创 MySQL数据库之主从复制
主数据库(master)的DDL和DML操作提交时,会把数据变更记录在BINLOG中,从数据库(slave)读取主库的BINLOG并写入从库的中继日志(Relay Log),然后从库重做中继日志中的事件,从而使得从库和主库的数据保持同步。
2024-10-10 10:03:44
280
原创 SpringBoot集成EasyExcel实现Excel文件导入/出
二,创建实体类@ExcelProperty的属性说明value按列名去匹配Excel数据,如果名字重复,会导致只有一个实体类字段读取到数据index按列的下标去匹配Excel数据
2024-08-26 15:43:49
1037
原创 MySQL数据库之索引
前缀索引是一种索引,其中索引的键值只包含索引列的前缀部分。这种索引可以显著减小索引的大小,从而提高索引的性能。前缀索引通常用于索引较长的列(如VARCHAR或TEXT类型),因为索引整个列可能会导致索引过大,影响性能。-- 建立前缀索引CREATE INDEX 索引名 ON TABLE 表名(字段名(前缀长度));
2024-08-26 15:39:59
928
原创 一篇文章入门MySQL数据库
MySQL 是一款非常流行的开源关系型数据库管理系统(RDBMS),它被广泛应用于各种网站和应用软件中。MySQL 提供了高性能、高可靠性和易用性,支持 SQL(Structured Query Language)语言标准,用于管理结构化的数据。
2024-08-19 14:28:03
1243
原创 一篇文章入门Java虚拟机(JVM)
JVM全称是Java Virtual Machine,中文译名Java虚拟机。本质上是一个运行在计算机上的程序。
2024-08-19 14:10:27
541
原创 RocketMQ之顺序消息
顺序消息是Apache RocketMQ提供的一种高级消息类型,支持消费者按照发送消息的先后顺序获取消息,从而实现业务场景中的顺序处理。相比其他类型消息,顺序消息在发送、存储和投递的处理过程中,更多强调多条消息间的先后顺序关系。Apache RocketMQ顺序消息的顺序关系通过消息组(MessageGroup)判定和识别,发送顺序消息时需要为每条消息设置归属的消息组,相同消息组的多条消息之间遵循先进先出的顺序关系,不同消息组、无消息组的消息之间不涉及顺序性。基于。
2024-07-16 13:35:20
1071
原创 Java之线程礼让(yield方法)详解
yield() 方法尝试减少当前线程的运行时间片,从而给予同优先级的其他线程执行的机会。当一个线程调用 yield() 方法时,它表明自己愿意暂停执行,让出CPU给具有相同优先级的线程。然而,这种行为并不是强制性的,取决于操作系统的线程调度器是否接受这个建议。(1)当一个线程完成了大量的工作并且预计会有短暂的空闲期,可以调用 yield() 方法来允许其他线程执行,以提高整体的并发性能。在Java中,Thread 类的 yield() 方法是一个用于线程调度的方法,源码如下。
2024-07-16 13:33:57
1563
原创 JVM内存模型
JVM内存模型主要包括以下几个部分:线程共享:方法区、堆区线程私有:程序计数器、Java虚拟机栈、本地方法栈内存溢出:程序在使用某一块内存区域的时候,存放的数据要占用的内存大小超过了Java虚拟机提供的内存上限。
2024-07-04 16:09:43
1161
1
原创 Java之类的生命周期
类加载器在加载完类之后,Java虚拟机会将字节码中的信息保存到方法区中,生成一个InstanceKlass对象。会执行静态代码块中的代码,并为静态变量赋代码中的值(二者执行顺序取决于代码编写的顺序)。如果类有父类,那么父类的clinit方法会先于子类的clinit方法执行。卸载是类生命周期的最后一个阶段,当类不再被JVM中的任何对象引用时,类加载器会负责将这个类从内存中卸载掉。在类的初始化完成后,类的信息就准备好了,可以被程序中的其他部分使用。这包括访问类的静态字段、调用类的静态方法,或者创建类的实例等。
2024-07-04 16:04:27
496
原创 JVM之双亲委派机制
应用程序类加载器的parent父加载器是扩展类加载器,而扩展类加载器的parent是空。但是在代码逻辑上,扩展类加载器依然会把启动类加载器当成父类加载器。启动类加载器使用C++编写,没有父类加载器当一个类加载器接收到加载类的任务时,会自底向上查找是否加载过,再由顶向下进行加载(向下委派加载起到了一个加载优先级的作用)。(1)使用Calss.forName()方法,使用当前类的类加载器去加载指定的类。(2)获取到类加载器,通过类加载器的loadClass方法指定某个类加载器加载。
2024-06-27 19:12:03
559
原创 Java之TimeUnit类
TimeUnit(时间单元)是一个描述时间单元的枚举类,在该枚举类中定义有以下的几个时间单元实例:天(DAYS)、时(HOURS)、分(MINUTES)、秒(SECONDS)、毫秒(MILLISECONDS)、微秒(MICROSECONDS)、纳秒(NANOSECONDS)。利用此类可以方便地实现各个时间数据的转换,也可以更加方便实现线程的休眠时间控制。
2024-06-26 17:01:52
1179
原创 Java之定时调度
定时调度是指可以根据既定的时间安排实现程序任务的自动执行,在Java中所有定时调度的任务都通过一个单独的线程进行管理。每个调度任务类都需要继承java.util.TimerTask父类,任务的启动都需要通过java.util.Timer类完成。
2024-06-26 16:36:04
624
原创 3.4 SpringAOP之通知获取数据
注:如果返回后通知同时获取参数和返回值,通知的形参必须是JoinPoint形参在前,接收返回值的形参在后。
2024-06-20 14:17:16
419
原创 Java之等待唤醒方法
在Java中,wait(), notify(), 和 notifyAll() 方法是线程间通信和同步的关键机制,主要用于实现线程间的协作,特别是在处理共享资源时。这些方法是任何对象的内置方法,属于Object类的一部分,因此所有对象都可以调用它们。但是,要正确使用这些方法,调用它们的代码必须在同步上下文中运行,即在持有该对象锁的情况下。
2024-06-13 15:23:11
328
原创 正则表达式
字符转义\p{Lower}任何小写字母\p{Upper}任何大写字母\p{Digit}任何数字\p{Punct}任何标点符号\p{Space}任何空白字符。
2024-06-13 14:14:37
505
原创 Java线程状态(Thread.State)
当前线程sleep()方法结束,其他线程join()结束,某个线程拿到对象锁,这些线程也将进入就绪状态。当线程调度程序从可运行池中选择一个线程作为当前线程时,线程进入运行状态,此时线程占有CPU资源并在CPU上运行。线程进入等待状态,是因为它调用了其他线程的join()方法,或者调用了无参数的wait()方法。线程进入定时等待状态,是因为它调用了sleep()或者带有指定时间的wait()或join()方法。(1)当线程执行完毕,即线程执行完所有的代码后,线程会自动终止。
2024-06-11 15:45:29
1136
原创 Java注解
比如要解析类上的注解,则应该先获取到该类的Class对象,再通过Class对象解析其上面的注解。比如要解析成员方法上的注解,则应该获取到成员方法的Method对象,再通过Method对象解析其上面的注解。定义的注解本质是一个接口,Java中所有注解都继承了Annotation接口,注解的使用其实是一个接口的实现类对象,实现了该注解及Annotation接口。声明被修饰的注解是否可以被继承,如果注解类型声明中存在 @Inherited 元注解,则注解所修饰类的所有子类都将会继承此注解。
2024-06-11 09:47:25
684
原创 Docker介绍与应用
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。是一个快速交付应用,运行应用的技术,可以将应用程序及其所需的依赖,系统函数库,环境,配置等文件一起打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
2024-06-04 10:43:30
1037
原创 4.HttpServletResponse对象
重定向是一种服务器指导,客户端行为。客户端发出第一个请求,被服务器接收处理后,服务器会进行响应,在响应的同时,服务器会给客户端一个新的地址,当客户端接收到响应后,会立刻自动根据服务器给的新地址发起第二个请求,服务器接收请求并作出响应,重定向完成。用于服务器对客户端的请求进行响应,将Web服务器处理后的结果返回给客户端。服务器端的编码和浏览器的解码方式不一致导致的,将服务器端的编码方式设置成与浏览器端的解码方式一致即可解决响应中文乱码问题。注:字符输出流和字节输出流只能使用其一。
2024-05-19 10:33:40
292
原创 5.Cookie
Cookie技术是一种Web技术,它允许网站在用户浏览时存储和检索小型文本信息。这些文本信息可以包括用户的偏好设置、会话状态信息、购物车内容等。当用户再次访问相同的网站时,浏览器会将相应的Cookie数据发送给服务器,从而使服务器能够识别用户并提供个性化的服务。
2024-05-19 10:33:11
340
原创 3.HttpServletRequest对象
这个对象提供了很多方法和属性,用于获取 HTTP 请求中的信息,如请求头、请求参数、请求方法(GET、POST 等)、请求的 URL 等,由Servlet容器封装好传递给service()方法。请求转发是一种服务器行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保护,地址栏中的URL地址不会改变,得到响应后,服务器再将响应发送给客户端,从始至终只有一个请求发出。通过HttpServletRequest对象可以在一次请求中传递和共享数据,作用范围:在一次请求中有效(请求转发的过程中有效)
2024-05-12 16:18:42
478
原创 1.Servlet
Servlet是server applet的简写,是一个运行在Web服务器端的Java小程序,由服务器调用执行。在JavaEE中,Servlet就是一个接口,定义了Java类被tomcat识别和运行的规则,Servlet接口定义的方法如下方法描述初始化方法,在servlet对象被创建的时候执行,只会执行一次获取servlet对象的配置对象提供服务的方法,每一次servlet被访问时执行获取Servlet的信息。如版本,作者… …
2024-05-12 11:19:53
436
原创 操作系统之I/O控制方式
当I/O完成后,控制器会向CPU发送一个中断信号,CPU检测到中断信号以后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。1)CPU向通道发出I/O指令(指令指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备),然后CPU切换到其他进程去执行。5)CPU检查到I/O控制器的状态为完成态,则将I/O控制器的数据寄存器中的数据读入CPU的数据寄存器,再读入内存。1)CPU向I/O控制器发出读指令。2)I/O控制器启动CPU指定的I/O设备,并将该I/O设备的状态置为忙碌态。
2024-05-10 16:28:47
1158
原创 4.1 雪崩问题
微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用。(3)调用链中所有服务级联失败,导致整个集群故障。(1)微服务相互调用,服务提供者出现故障或阻塞。(2)服务调用者没有做好异常处理,导致自身故障。
2024-05-10 15:52:12
492
原创 2.HTTP协议
HTTP协议(Hypertext Transfer Protocol)是一个简单的请求-响应协议。请求头包含了多个字段,用于描述一个HTTP请求的属性。这些字段由键值对组成。用于传输请求的数据,是可选的(GET请求没有请求体,POST请求有请求体)响应体的内容取决于请求的类型和状态码。以一个方法符号开始,以空格分开,后面跟着请求的URI和协议的版本。协议的版本,以空格分开,后面跟响应状态码和状态码的简短描述。响应头包含了多个字段,包含当前响应的详细信息。格式:版本协议 响应状态码 状态码的简短描述。
2024-05-06 16:03:48
418
原创 2.1 OpenFeign之服务远程调用
OpenFeign是一个声明式的rest客户端,作用是基于SpringMVC的常见注解,实现更便捷的http请求发送。
2024-04-16 11:21:49
570
1
原创 SpringBoot项目的打包和运行
注:jar支持命令行启动需要依赖Maven插件支持,请确认打包时是否具有SpringBoot对应的Maven插件。注:建议将test过程跳过,否则打包过程会执行单元测试相关代码。使用Maven工具的package功能。
2024-04-07 18:55:09
239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人