- 博客(28)
- 收藏
- 关注
原创 聚集索引与非聚集索引
使用聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置。非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。不是所有的表都适合建立索引,只有数据量大表才适合建立索引,且建立在选择性高的列上面性能会更好。
2025-06-12 14:07:00
177
原创 InnoDB 四大特性
的概念,对于普通索引(非聚集索引)不是直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓存池中,如果在直接插入,否则先放入 Insert buffer 对象中,然后以一定频率和辅助索引页子节点进行合并操作,此时通常能将多个插入合并到一个操作中,提高插入性能。二次写就是为了解决该问题,double write 分为两部分,一部分 doublewrite buffer,其大小 2MB,另一部分是磁盘上共享表空间中连续的 128 个页,也是 2MB。索引数据存储在磁盘上,主键索引由于天然自增,无须。
2025-06-12 13:53:58
328
原创 Spring Boot Actuator 健康信息
K8s探针(springboot 2.3.3及以上版本):https://springdoc.cn/spring-boot/actuator.html#actuator.endpoints.kubernetes-probes。健康信息:https://springdoc.cn/spring-boot/actuator.html#actuator.endpoints.health。额外的 HealthIndicators 是可用的,但在默认情况下不启用(springboot 2.3.3及以上版本可用)。
2025-06-12 13:49:14
1193
1
原创 设计模式-设计原则
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。类之间的耦合越弱,越利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及,在类的结构设计上,每一个类都应当尽量降低成员的访问权限。优先使用对象的合成/聚合将有助于你保持每个类被封装,并被击中在单个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。合成则是一种强的“拥有”关系,体现了严格的 部分与整体的关系,部分和整体的生命周期一样。尽量使用合成/聚合。
2025-05-23 16:24:50
367
原创 log4j2 日志组件
简介:Apache Log4j2 是一个流行的Java日志框架,用于在企业级应用中记录和管理日志信息。Log4j2设计目标是提供高度可配置性、高性能以及丰富的功能集,包括异步日志处理、多线程支持、灵活的布局格式(PatternLayout)、过滤器(Filtering)以及多个输出目的地(Appenders)等。Log4j2还提供了强大的异步日志处理机制,通过AsyncAppender或AsyncLogger来提高系统的性能。在Apache Log4j2的配置文件(如log4j2.xml)中,
2025-05-23 16:16:48
827
原创 IOC容器的附加知识
这节说的是前者,是说静态工厂或实例工厂,而后者是 Spring 中的特殊接口,代表一类特殊的 Bean,下面一节会介绍 FactoryBean。我们回到这个接口本身,请看第一个方法,这个方法接受的第一个参数是 bean 实例,第二个参数是 bean 的名字,重点在返回值将会作为新的 bean 实例,所以,没事的话这里不能随便返回个 null。那怎么配置这个值呢?我们知道,现在还用 xml 配置 Bean 依赖的越来越少了,更多时候,我们可能会采用 java config 的方式来配置,这里有什么不一样呢?
2025-05-23 16:13:19
756
原创 IOC容器初始化过程
通过工厂方法、Supplier、Bean后置处理器:SmartInstantiationAwareBeanPostProcessor .determineCandidateConstructors方法、beanDefiniton的ConstructorArgumentValues,默认使用无参构造函数来实例化。调用bean的后置处理器,可直接返回bean实例,拦截spring帮助我们创建bean的行为。创建bean定义,保存到beanDefinitonMap,用于后期的bean实例化。
2025-05-23 15:56:26
279
原创 FactoryBean 与 BeanFactory
BeanFactory定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,也就是Spring IOC所遵守的最底层和最基本的编程规范。当配置文件中的class属性配置的实现类是FactoryBean时,通过getBean()方法返回的不是FactoryBean本身,而是FactoryBean#getObject()方法所返回的对象,相当于FactoryBean#getObject()代理了getBean()方法。配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。
2025-05-23 15:51:58
604
原创 AOP 使用规范与注意事项
Spring Boot 中的 AOP(面向切面编程)主要用于在不修改业务逻辑代码的情况下添加横切关注点(如日志记录、性能监控、事务管理等)。使用 Spring AOP 时,通常会利用 Spring 的 @AspectJ 风格进行定义。
2025-05-23 15:47:42
423
原创 k8s探针
对于此pod、此pod关联的Service资源、EndPoint 的关系也将基于 Pod 的 Ready 状态进行设置,如果 Pod 运行过程中 Ready 状态变为 false,则系统自动从 Service资源 关联的 EndPoint 列表中去除此pod,届时service资源接收到GET请求后,kube-proxy将一定不会把流量引此pod中,通过这种机制就能防止将流量转发到不可用的 Pod 上。指示容器中的应用是否已经启动。如果启动探针失败,kubelet 将杀死容器,容器服从其重启策略进行重启。
2025-05-23 15:21:11
696
原创 Reactor 核心特性
注意,所有的信号事件, 包括代表终止的信号事件都是可选的:如果没有 onNext 事件但是有一个 onComplete 事件, 那么发出的就是 空的 有限序列,但是去掉 onComplete 那么得到的就是一个 无限的 空序列。当然,无限序列也可以不是空序列,比如,Flux.interval(Duration) 生成的是一个 Flux, 这就是一个无限地周期性发出规律 tick 的时钟序列。通过定义相对应的事件(onNext、onError和onComplete) 创建一个 Flux 或 Mono。
2025-05-23 15:11:00
759
原创 从命令式编程到响应式编程
就像我们刚才看到的,回调模式是简单的,但是缺点 是在复杂的处理逻辑中,回调中会层层嵌入回调,导致 回调地狱(Callback Hell)。在响应式流规范中实际定义的机制同刚才的类比非常接近:订阅者可以无限接受数据并让它的源头 “满负荷”推送所有的数据,也可以通过使用 request 机制来告知源头它一次最多能够处理 n 个元素。理解了操作符会创建新的 Publisher 实例这一点,能够帮助你避免一个常见的问题, 这种问题会让你觉得处理链上的某个操作符没有起作用。
2025-05-23 15:07:14
321
原创 Reactor 响应式编程
Reactor 是一个用于JVM的完全非阻塞的响应式编程框架,具备高效的需求管理(即对 “背压(backpressure)”的控制)能力。它提供了异步序列 API Flux(用于[N]个元素)和 Mono(用于 [0|1]个元素),并完全遵循和实现了“响应式扩展规范”(Reactive Extensions Specification)。Reactor 的 reactor-ipc 组件还支持非阻塞的进程间通信(inter-process communication, IPC)。
2025-05-23 15:05:35
227
原创 PageHelper 问题定位
2、临时修改入参字段命名的方法,见26行 【com.github.pagehelper.util.PageObjectUtil.getPageFromObject(Object params, boolean required)】1、参数配置的代码方法,重点见 16 行 【com.github.pagehelper.page.PageParams.getPage(Object parameterObject, RowBounds rowBounds)】问题现象:select * from。
2023-03-21 18:57:11
401
1
原创 Lombok 与 eclipse 安装
下载Lombok https://projectlombok.org/download将jar包放到eclipse同级目录下使用 java -jar lombok.jar根据图示重启eclipse如果有项目,重启eclipse 之后 project–>clean 即可...
2019-10-11 14:47:48
218
原创 Unsupported major.minor version XX 错误的解决办法.
Unsupported major.minor version XX错误的解决办法.这个错误时因为JDK版本的问题,比如本机的JDK为1.6,但是项目编译时用的JDK为1.7那么就会出现这个异常,因为本机JDK版本较低不能执行编译版本为高版本的Class文件,各JDK版本对应的错误编号如下:J2SE 8 = 52,J2SE 7 = 51,J2SE 6.0 = 50,J2SE 5.0 = ...
2019-07-08 11:18:43
671
原创 java通过key对map进行排序
public static Map<String, Object> sortMapByKey(Map<String, Object> map) { if (map == null || map.isEmpty()) { return null; } //定义TreeMap 重写其 Comparator Map<String, Object>...
2019-07-04 16:02:47
303
原创 RSA加解密报错
RSA加解密报错记录javax.crypto.BadPaddingException: Data must start with zero公司项目中解密时遇到的问题:原因一:密钥对不一致,即为公钥与私钥并非一对
2019-06-13 17:34:20
1030
原创 关于构造函数与static
package com.test;public class Test { public static int k=0; public static Test t1 = new Test("t1"); public static int i = print("i"); public static int n = 99; { print("构造块"); } static { ...
2019-03-26 17:27:47
411
原创 XStar房屋最短路径
【问题描述】:x星球居民小区楼房全是一样的,并且按照矩阵样式排列。其楼房编号为:1,2,3,4,5…当排满一行时,从下一行相邻的楼往反方向排号。比如小区排号宽度为6时,开始情形如下:1 2 3 4 5 612 11 10 9 8 713 14 15 16 …【问题】:已知俩楼号m和n,需要求出他们之间最短移动距离(不能斜线方向移动)。输入三个整数:w m n,空格分开,且 1<...
2018-12-21 15:46:05
238
原创 Java的基本数据类型
Java语言是强类型语言,强类型包含俩方面的含义:所有变量必须先声明,后使用。指定类型的变量只能接受类型与之匹配的值指定类型的变量只能接受类型与之匹配的值。Java语言支持的类型分为俩类:基本类型(Primitive Type)和引用类型(Reference Type)。基本类型包括:boolean类型和数值类型【byte sort int long char float doubl...
2018-12-11 00:15:15
176
原创 关于tomcat启动时卡在C3P0连接池,超时报错。相关信息如下图
解决方案:检查数据库服务是否开启检查数据库连接信息是否正确查看tomcat目录下webapps下的缓存,并清理以上方案皆不能解决,可以尝试更换mysql connector的jar包...
2018-12-10 10:23:13
1934
原创 Java的面向对象特征
1、一切皆是对象Java中除了8个基本数据类型【byte(1个字节) sort(2个字节) int(4个字节) long(8个字节) char(2个字节) float(4个字节) double(8个字节) boolean(1## 标题个字节)】值之外,一切都是对象。对象是Java程序的核心,所以Java里的对象具有唯一性,每个对象都有一个标识来引用它,它不仅可以表示具体事物,还能表示规则,计划,...
2018-12-09 22:41:54
133
原创 Mineweep(扫雷)
[样例输入]4 4*........*......3 5**.........*...0 0[样例输出]Field #1:*10022101*101110Field #2:**100332001*100*/package baseExerciseProject;import java.util.Scanner;public class Mai...
2018-12-09 21:26:11
287
原创 N个人围成一圈,依次123报数,当报到3时小孩退列,而继续从1开始报数,直到最后一个小孩.问其序号
package baseExerciseProject;import java.util.Scanner;public class Call3AndOut { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanne...
2018-12-09 21:19:48
3389
1
原创 折半查找(二分查找)原理的基本实现
折半查找(二分查找)原理的基本实现import java.util.Arrays;import java.util.Random;import java.util.Scanner;public class BinarySearch { public static void main(String[] args) { @SuppressWarnings("resource") S...
2018-11-01 16:47:41
1459
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人