- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot启动流程总结
所以想要了解清楚 SpringBoot 启动流程,相当于了解 SpringApplication 的 构造方法 和 run方法。
2024-08-24 10:30:06
265
原创 Atomic 原子类详解
原理:LongAdder在内部维护一个数组,当多个线程尝试同时修改时,会分散到不同的数组中进行更新。在获取结果时,将所有数组的值相加得到总和。缺点:如果计算总和期间有线程修改,此次修改可能不会计入这次计算,所以不适合需要精确计算的场景。优点:减少并发修改时的CAS竞争,高并发场景下性能优于AtomicLong。:带标志引用型,可用于避免ABA问题。
2024-08-24 10:29:43
344
原创 Java四种内存屏障详解,LoadLoad、LoadStore、StoreLoad、StoreStore
编译器和处理器可能会对指令进行重排以提高性能,但这种重排可能会导致其他线程看到不一致的状态。变量的读写操作前后会插入特定的内存屏障,这些屏障会禁止指令重排,从而保证了操作的顺序性。:当一条线程修改了一个变量的值,新值会立即被写入主内存,同时其他线程读取该变量时会从主内存中读取最新值,而不是使用线程缓存中的值。
2024-08-24 10:29:26
578
原创 三数取中公式思路
先假设有 x、y、z 三个代数再假设一个已知条件 x > y根据已知条件推断,y 不可能是最大值,最大值只会在 x 和 z 之间产生因此 min(x, z) 即可排除最大值但是 z 有可能小于 y,因此还需要排除最小值最终使用 max(y, min(x, z)) 即可得出中间值。
2024-08-24 10:28:41
201
原创 CompletableFuture 类详解
等待 多个 或 任一 任务的完成。:开启异步任务,获取结果。:处理两个任务任一的结果。:处理两个任务的结果。
2024-08-23 00:45:30
264
原创 数据库三大范式
在这个例子中,学生ID和课程一起构成了联合主键(因为一个学生可以有多个课程成绩)。但是,姓名只依赖于学生ID,并不依赖于课程。这就违反了第二范式,因为存在非主键字段(姓名)只依赖于主键的一部分(学生ID)。在这个例子中,订单ID是主键,但是客户电话依赖于客户ID,而不是直接依赖于订单ID。这违反了第三范式,因为存在对非主键字段的传递依赖。这个表违反了第一范式,因为地址不符合不可拆分要求。通过这种方式,我们消除了表中的传递依赖,满足了第三范式。这样,每个表都满足了第二范式。
2024-08-23 00:44:44
250
原创 MySQL窗口函数用法总结
PERCENT_RANK() OVER(ORDER BY 列) :计算 小于 当前值的行数占 总行数 - 1 的比例。LAG( 列, 偏移, 默认值 ) OVER(...) :上 n 行,可以只写 LAG(列),默认取上一行。ROW_NUMBER() OVER(...) :如果排名相同,编号不会重复,比如 1、2、3、4。可结合移动关键字解除。RANK() OVER(...) :如果排名相同,编号跳过,比如 1、2、2、5。DENSE_RANK() OVER(...) :编号不跳过,比如 1、2、2、4。
2024-08-23 00:44:28
457
原创 整合 ELK stack 作为 SpringBoot 项目日志分析方案
启动项目,打印的 INFO 级别以上日志都会自动收集到 Elasticsearch 的 logstash-xxxx-xx-xx 索引内,使用 Kibana 创建 可视化、仪表盘,根据需求筛选展示即可。导入到 src/main/resources/logback-spring.xml 内。hosts 改成 Elasticsearch 实际ip,如果有密码,则取消注释并配置。配置文件放在:用户主目录/pipeline/logstash.conf。host里的IP改成 Logstash 实际的。
2024-08-23 00:42:49
410
原创 最简单易懂的三种排序算法:冒泡、选择、插入
选择一个待排序的元素,和已排序元素依次进行比较,把大的元素向后移动,遇到小的元素就插入到它后面。每次从未排序部分找到一个最小的元素,放到已排序部分的末尾。通过不断交换相邻的元素,将大的元素“浮”到数组的后面。时间复杂度:O(n^2)时间复杂度:O(n^2)时间复杂度:O(n^2)
2024-08-23 00:42:21
193
原创 常见的排序算法:冒泡、快排、归并、计数
每种排序算法各有特点,冒泡排序简单但效率较低,快速排序效率高但需要额外的存储空间,归并排序则是效率和稳定性都比较好的排序算法。
2024-08-23 00:42:00
316
原创 Redis 结合 Docker 搭建哨兵+主从,并整合SpringBoot
下载后,把redis-7.2.5.tar.gz\redis-7.2.5.tar\redis-7.2.5\里的。,主节点新数据更新到从节点需要时间,这段时间会出现数据不一致。由于docker直接拉取运行了,所以需要提前准备配置文件。cd 到 redis-sentinel 目录,执行。cd 到 redis 目录,执行。cd 到 redis 目录,执行。结构如上图所示,准备6个服务器。不建议配,除非主节点压力很大。
2024-08-23 00:41:06
391
原创 Redis 结合 Docker 搭建集群,并整合SpringBoot
下载后,把redis-7.2.5.tar.gz\redis-7.2.5.tar\redis-7.2.5\里的。,主节点新数据更新到从节点需要时间,这段时间会出现数据不一致。由于docker直接拉取运行了,所以需要提前准备配置文件。cd 到 redis-cluster 目录,执行。输入用于分配哈希槽的节点,可以直接输入。结构如上图所示,准备6个服务器。不建议配,除非主节点压力很大。
2024-08-23 00:40:35
717
原创 Mysql 8.4.0 结合 Docker 搭建GTID主从复制,以及传统主从复制
但是要注意,从库非只读状态,要杜绝直接修改从库,否则可能会导致冲突。但是要注意,从库非只读状态,要杜绝直接修改从库,否则可能会导致冲突。接下来所有主库的变化都会同步到从库,接下来所有主库的变化都会同步到从库,主要看这两个,都是Yes代表就绪。主要看这两个,都是Yes代表就绪。填入主库的文件名、指针。
2024-08-23 00:38:43
505
原创 ShardingSphere + Mysql,实现分库分表、读写分离,并整合 SpringBoot
rules 配置和之前一样,主要区别在于 dataSources 下的配置变了。默认URL:jdbc:mysql://127.0.0.1:3307/demo。默认URL:jdbc:mysql://127.0.0.1:3307/demo。平时咋操作数据库现在也一样,也可以引入 Mybatis,可以无缝连接。可以直接像连接普通Mysql数据库一样使用了。可以直接像连接普通Mysql数据库一样使用了。,并将其放入 ext-lib 目录。,并将其放入 ext-lib 目录。YAML 复制 全屏。
2024-08-23 00:37:37
922
原创 常用设计模式总结,附完整图解
属性和方法前加上(+、-、#、留空)分别代表:公开(public)、私有(private)、保护(protected)、缺省(default)方法括号内为参数类型,冒号后为返回值类型下划线表示 静态(static),斜体表示 抽象(abstract)
2024-08-23 00:36:33
1494
原创 JVM内部结构
加载类的字节码,在方法区创建对应的数据结构(字段、方法、接口等),在堆中生成一个对应的 java.lang.Class 实例。:触发父类初始化,执行()方法,执行静态代码块,给静态变量、常量=字面量赋初始值。CMS的上位替代,稳定性有待观察。
2024-08-22 10:39:47
341
原创 Ubuntu 22.04 常见配置总结
00-installer-config.yaml 文件名不固定,但是目录只有一个文件,根据实际变更。至此已经可以本地登录root账号了。
2024-08-22 10:31:41
323
原创 K8S-1.23.17 + Ceph + KubeSphere 一主二从部署攻略
主机需求:4 核 CPU,8 GB 内存,硬盘:40 GBx2 (需保留一个未分区的磁盘)从机需求:4 核 CPU,4 GB 内存,硬盘:40 GBx2 (需保留一个未分区的磁盘)22.043.4.119.3.8 +1.23.171.13.6集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)。节点之中不可以有重复的主机名、MAC 地址或 product_uuid。
2024-08-22 10:29:18
1369
原创 Java Spring Redis 如何向Set中添加List?
调用list.toArray方法将list转成数组,再使用add方法参数传入数组,即可批量添加。
2024-08-22 10:18:25
192
原创 MyBatis Java 和 Mysql数据库 数据类型对应表
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。提示 从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API)。
2024-08-22 10:14:59
229
原创 Java取当前时间的一分钟后,并格式化输出
format(LocalDateTime) 使用格式化程序对LocalDateTime进行格式化,返回String字符串。LocalDateTime.now(ZoneId.of("Asia/Shanghai")) 获取当前时间(以指定时区)DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") 获取格式化程序。.plusMinutes(分钟) 加指定分钟。
2024-08-22 10:14:03
238
原创 MySQL 如何以当前日期时间作为字段初始默认值?
使用 DEFAULT CURRENT_TIMESTAMP 声明字段,插入记录时不用指定 dt,自动置入当前时间。使用 ON UPDATE CURRENT_TIMESTAMP 声明字段,修改记录时 dt 自动更新为当前时间。
2024-08-22 10:12:06
1310
原创 最简短最直白的解释:脏读、不可重复读、幻读,以及四种隔离级别的含义
其他事务修改字段后 - 提交事务前,此期间,当前事务能读到,该字段修改后未提交的值 ,所以叫读未提交,由此会产生脏读问题。此级别下,当前事务重复读某字段,结果相同,不受其他事务修改影响,所以叫可重复读,由此解决不可重复读问题,但还存在幻读问题。此级别下,当前事务不会查询到,其他事务修改未提交的值,所以叫读已提交,由此解决脏读问题,但还存在不可重复读问题。因为受到其他事务增删行为影响,当前事务的同一条SQL语句两次查询的记录数不一样,就叫幻读。重复读同一字段,得到的值不同,所以叫不可重复读。
2024-08-22 10:10:34
371
原创 Unity3D 横板跳跃游戏半成品demo源代码
基于B站的Unity3D新手教程进行学习制作,但视频中的做法有很多BUG,此demo是经过优化,几乎修复了教程里带的所有bug。实现了基本的功能比如:怪物ai,开始菜单,设置菜单,地图切换,等等。。
2024-08-22 10:03:02
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人