- 博客(115)
- 资源 (2)
- 收藏
- 关注
原创 Redis入门必看:5大数据结构+高频操作命令手册
例如:统计不重复IP数据量,统计UV(独立访客数量)、活跃用户情况场景,非常节省内存,只需要12K的空间就可以存储近2^64个不同的元素。用于存储一组键值对数据,这一组键值对数据组合成一个实体对象数据,例如用户信息、配置参数。最基础的字符串类型,可以存储文本、数字或二进制数据,适合简单的键值对数据(几乎万能)。简单的字符串列表,按插入顺序排序,可在两端操作。通过 String 类型衍生的位操作,非常节省空间,用于二值统计(是/否)。主要用于消息队列(MQ),提供消息的持久化、消费者组等功能。
2025-08-28 17:02:06
835
原创 单元测试指南:Spring Boot2/Spring Boot3+Spring Cloud+MyBatis Plus项目针对Dao层、Service层和Controller层的单元测试
DAO 层:直接测试数据库操作,验证 SQL 和 MyBatis Plus 功能Service 层:使用 Mockito 模拟依赖,专注于业务逻辑测试Controller 层:使用 MockMvc 测试 HTTP 接口,验证请求响应流程通过遵循这些测试实践,可以显著提高代码质量,减少生产环境中的错误。保持测试独立性和可重复性追求合理的测试覆盖率(建议70%以上)将单元测试作为开发流程的必要环节定期维护测试代码,保持与生产代码同步。
2025-08-01 09:19:40
1378
1
原创 多架构镜像整合全攻略:在Docker中实现单一镜像支持同时支持amd64和arm64架构
先将不同架构的镜像拉取到本地将不同架构镜像的 repository 修改一致,在tag 标签里做版本和架构的区分。这里使用的是阿里云的容器镜像服务,但是不管使用哪家企业提供的镜像服务,其操作过程都是一样的,将本地的修改好名称的镜像推送上去。验证arm64架构环境拉取amd64架构镜像验证运行镜像验证运行镜像时可以看到,已经有警告提示信息说架构不匹配了。这就证明拉取到镜像的确实是amd64架构的镜像。先清理上一步测试的容器和镜像。关闭并删除之前测试的容器和镜像。拉取arm64镜像运行
2025-07-31 16:54:24
432
原创 Jackson 常用操作大全:对象、字符串、集合、数组、Map 转 JSON 实战
核心包,定义流式API- 注解包- 数据绑定包@Override// 使用@Override// 实现反序列化逻辑。
2025-07-31 16:45:00
941
原创 Fastjson2常用操作大全:对象、字符串、集合、数组、Map与JSON互转实战
核心功能包括Java对象与JSON互转、JSONObject操作、集合/数组处理等,适用于各类JSON数据场景。
2025-07-29 17:05:37
392
原创 Elasticsearch中多索引数据合并与Nested嵌套类型操作全解析
Elasticsearch多索引数据合并操作,以及嵌套类型(nested)的相关操作指南。
2025-06-09 10:12:53
509
原创 一文吃透Elasticsearch基础操作:索引+文档+聚合,全都有例子
Elasticsearch常用的索引、文档基础操作操作语句,例如创建索引、删除索引、修改索引设置、修改索引mapping字段结构、新增文档、删除文档、查询文档、聚合统计等常用操作。
2025-06-09 10:09:55
1231
原创 HTTP 状态码详解:用途与含义
2xx:成功,重点关注 200、201、204。3xx:重定向,区分 301(永久)和 302(临时)。4xx:客户端错误,400(语法)、401(未登录)、403(无权限)。5xx:服务器错误,500(通用)、502(网关问题)、503(过载)。
2025-05-02 13:07:48
1246
原创 SSH秘钥管理指南
场景操作生成密钥对上传公钥到服务器或手动复制GitHub SSH 连接添加公钥到 GitHub → 测试ssh -T多密钥管理配置增强安全性禁用密码登录 + 使用 Ed25519免密登录 Linux 服务器安全访问 Git Hub避免密码泄露风险建议定期更换密钥(如每年一次),并妥善保管私钥!
2025-05-02 12:56:08
1288
原创 并发基础知识
切换到另一个进程时,例如进程1切换到进程2时,是需要先拿到进程2上一次执行到的代码地址,以及任务的运行状态,恢复进程2的任务,使其能在原基础上去继续执行。(寄存器概念了解即可)的用途,这个1核的cpu在运行一段时间的进程1(应用1)之后,停止运行进程1,转而切换到运行进程2(进程2),就这么来回切换运行,就实现了一个单核CPU可以同时去运行多个应用进程。在第1秒钟执行线程1的任务,在2秒钟切换去执行线程2的任务,然后在第三秒钟又切换回执行线程1的任务,这种在由单核交替执行多个线程任务的方式就叫串行。
2024-10-24 23:25:33
696
原创 CentOS系统安装Docker
镜像搜索地址:https://hubgw.docker.com/设置镜像源,推荐使用阿里的。查看docker版本。
2024-10-22 22:42:48
221
原创 索引选择的艺术:MySQL为何青睐B+树?
我们知道MySQL数据库InnoDB引擎索引的数据结构是B+树,那他为什么不用红黑树,不用B树呢?用B+树的优点在哪里?解决了些什么问题?下面将以这几个疑问点为中心记录一下MySQL选用B+树的原因。
2024-10-22 08:50:44
1374
原创 CentOS系统Nginx的安装部署
在服务器上准备好nginx的安装包nginx安装包下载地址为:https://nginx.org/en/download.html解压。
2024-10-21 13:55:05
633
原创 Docker修改镜像的名称和TAG版本
# docker tag [IMAGE ID] [新的REPOSITORY]:[新的TAG]docker tag d3063c1db2bb nacos/nacos-server:v2.3.2
2024-10-21 09:00:00
1122
原创 轻松搞定Elasticsearch的索引字段类型变更
现有这么一个索引es_test,要将age和sex的字段类型从long改为integer。第二步,将es_test索引的数据复制到es_test_bak索引里。第四步,给es_test_bak索引设置一个es_test的别名。第一步,创建一个新的索引,定义好所需映射。原es_test的映射如下图右侧所示;第三步,删除掉原es_test索引。
2024-10-10 20:48:07
402
原创 手把手教你搭建MySQL主从集群:实现数据高可用
MySQL服务的主从架构是通过binlog日志文件来实现的。使用MySQL做读写分离配置时,就必须基于主从架构来搭建,主节点用来写入数据,从节点用来读取数据。
2024-09-28 23:17:05
1506
原创 【SQL魔法】MySQL自定义排序:用ORDER BY FIELD玩转数据排序
假设我们有一个products('a苹果', '水果'),('c香蕉', '水果'),('e胡萝卜', '蔬菜'),('b榴莲', '水果'),('d茄子', '蔬菜');如果我们希望按照特定的顺序(如先显示水果,再显示蔬菜)来排序,可以使用ORDER BY FIELD(category, '水果', '蔬菜');idnamecategory1a苹果水果2c香蕉水果4b榴莲水果3e胡萝卜蔬菜5d茄子蔬菜。
2024-09-28 22:11:33
2358
2
原创 【锁住精华】MySQL锁机制全攻略:从行锁到表锁,共享锁到排他锁,悲观锁到乐观锁
是最低粒度的的锁,锁住指定行的数据,加锁的开销较大,加锁较慢,可能会出现死锁的情况,锁的竞争度会较低,并发度相对较高。但是如果where条件里的字段没有加索引,则加的行锁会自动升级为表锁,因为行锁是基于索引去进行操作的,所以想要加行锁,就一定要在条件字段为索引的基础上进行操作。
2024-09-27 21:42:02
1125
原创 Linux安装ElasticSearch7详细步骤说明
这个可能是因为之前启动过es,没有正确关闭,导致有遗留进程,把这个进程kill掉之后重启即可(第二个进程是grep本身产生的一条进程,可不予理会);先在es文件夹的plugins文件夹下建一个ik插件的文件夹,然后将ik分词器的插件包放到ik文件夹里进行解压,然后重启es即可。访问路径:http://192.168.0.117:5601/app/kibana。如果不修改该配置,启动es可能会有如下异常。如果不修改该配置,启动es可能会有如下异常。如果不修改该配置,启动es可能会有如下异常。
2024-09-27 00:31:25
1161
原创 MySQL自定义排序:使用ORDER BY FIELD实现灵活的数据排序
假设我们有一个products('a苹果', '水果'),('c香蕉', '水果'),('e胡萝卜', '蔬菜'),('b榴莲', '水果'),('d茄子', '蔬菜');如果我们希望按照特定的顺序(如先显示水果,再显示蔬菜)来排序,可以使用ORDER BY FIELD(category, '水果', '蔬菜');idnamecategory1a苹果水果2c香蕉水果4b榴莲水果3e胡萝卜蔬菜5d茄子蔬菜。
2024-09-25 21:19:44
1190
原创 MySQL普通索引与唯一索引的区别
本文详细介绍了MySQL中的唯一索引和普通索引的区别,并通过示例展示了如何创建和使用这些索引。理解这两种索引的特点和适用场景,可以帮助开发者更好地设计和优化数据库表结构,提高查询性能并确保数据的完整性。
2024-09-25 14:08:12
589
原创 【分布式系统必读】CAP理论:一致性、可用性与分区容忍性的权衡
分布式系统一定是要保证分区容错性的,然后就是在一致性和可用性之间进行一个取舍。为了保证数据的一致性,就势必会因为加锁、网络波动等原因,去阻塞用户的请求,这就必然达不到可用性的要求。而为了保证可用性,而使分布式系统的各个服务节点之间用异步操作去同步数据,就定然会在导致数据还没同步完成时,用户请求到旧数据的问题,就无法达到一致性的要求。所以一个分布式系统只能达到CAP理论其中的两个特性,要么是保证系统的一致性和分区容错性(CP),要么保证系统的可用性和分区容错性(AP)。
2024-09-24 12:30:17
1834
原创 Java基础面试必知:HashMap的数据结构与扩容机制
我们了解到 HashMap 的数据结构是由数组、链表和红黑树组成的,它通过哈希算法来确定键值对的存储位置,并通过扩容机制来应对数据量的增长。
2024-09-20 17:47:00
580
原创 Java基础面试必知==和equals()的区别
对于基本数据类型(如int、char、string等),==比较的是它们的值是否相等。而对于引用数据类型(如String、Object等),==比较的是它们的引用地址是否相同。equals()方法则是用来比较两个对象的内容是否相等,默认实现仅比较对象的引用地址,大多数情况下,我们需要重写equals()方法以实现内容的比较。
2024-09-19 13:43:24
449
原创 MVCC机制解析:提升数据库并发性能的关键
本文深入解析了多版本并发控制(MVCC,Multi-Version Concurrency Control)机制,探讨了其在提升数据库并发性能方面的重要作用。首先,文章介绍了MVCC的基本概念,包括它是如何通过保留数据的多个版本来支持并发读取而不需加锁的。并通过具体例子展示了MVCC如何有效防止常见的并发问题,如脏读、不可重复读和幻读。
2024-09-17 10:22:51
1285
原创 数据库事务中的四大问题:脏读、脏写、不可重复读与幻读详解
当出现并发请求时,我们的数据库可能会出现多个事务同一时间,对同一条数据进行更新查询等操作,这就有可能会出现脏读、脏写、不可重复读、幻读等并发问题的情况。
2024-09-15 23:15:40
1572
原创 MySQL锁机制揭秘:从行锁到表锁,共享锁到排他锁,悲观锁到乐观锁的全面解读
是最低粒度的的锁,锁住指定行的数据,加锁的开销较大,加锁较慢,可能会出现死锁的情况,锁的竞争度会较低,并发度相对较高。但是如果where条件里的字段没有加索引,则加的行锁会自动升级为表锁,因为行锁是基于索引去进行操作的,所以想要加行锁,就一定要在条件字段为索引的基础上进行操作。
2024-09-12 15:44:24
1570
原创 深度解读MySQL意向锁的工作原理机制与应用场景
意向锁意向锁的概念意向锁是InnoDB自动添加的一种锁,不需要用户去干预。是数据库中的一种表级锁,一个事务要给一个资源加锁时,必须要先获取到对应类型的意向锁之后,才可以给这个资源加上自己想要的共享锁或者排他锁(不论是行级还是表级的共享/排他锁,都是需要先获取到意向共享/排他锁)。意向锁并不是真正的锁,而是为了协调事务对表中行的锁定请求而引入的一个概念。意向锁业的两个类型意向共享锁(Intention Shared Lock,IS锁): 表示事务有获取到表的表级或行级共享锁的意向。意向排他锁
2024-09-12 15:42:06
925
原创 Spring常见的面试问答题(一)
首先,Spring是一个生态,但是呢,这个生态里面又有个Spring Framework框架。所以从Spring生态来说,它包含了Spring Framework、Spring MVC、Spring Boot,以及Spring Cloud,和一些其他的框架如Spring Gateway、Spring Security、Spring Data,还有最新出来的Spring AI。
2024-09-09 12:34:30
897
原创 揭秘InnoDB:为何MySQL选择B+树作为索引结构
我们知道MySQL数据库InnoDB引擎索引的数据结构是B+树,那他为什么不用红黑树,不用B树呢?用B+树的优点在哪里?解决了些什么问题?本文将以这几个疑问点为中心详细说明一下MySQL选用B+树的原因。
2024-09-09 10:43:38
1131
原创 mybatisplus集成人大金仓/pgsql提示Cannot convert the column of type TIMESTAMPTZ to requested type timestamp
mybatis里LocalDateTime类型数据是从timestamp转换来的,但在人大金仓/pgsql里面,函数得到的并不是一个单纯的时间戳,而是带时区的时间戳,也就是pgsql里的。将now()的值映射给LocalDateTime类型字段时提示如下异常。Java实体类字段类型为LocalDateTime。无法正常映射到LocalDateTime。
2024-04-08 17:43:38
1704
原创 SpringCloud+Nacos项目集成Seata分布式事务
Seata分布式事务的详细按照部署步骤,以及SpringCloud微服务项目集成Seata分布式事务步骤,附带可直接使用代码和相关脚本。
2023-12-05 13:02:27
1633
3
原创 分布式事务Seata-AT模式的事务提交和事务回滚全过程详解
Seata一次事务的生命周期1. TM 请求 TC 开启一个全局事务,TC 端会生成一个 XID 作为本次全局事务的唯一标识,且这个 XID 是会在本次服务的整个调用链路中传递的,后续的分支事务也是根据 XID 关联上该全局事务。2. RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。3. 各 RM 分支事务告知 TM 自己是否执行成功。4. TM 根据各 RM 分支汇报的情况判断应该提交事务还是回滚事务,然后请求 TC 告诉本次全局事务应该提交还是回滚。
2023-11-30 08:58:53
3664
1
原创 详细步骤记录:持续集成Jenkins自动化部署一个Maven项目
Jenkins的安装、基础插件配置、Maven+Git项目自动化部署图文结合,详细到每一个操作步骤
2023-11-17 23:59:45
3716
2
原创 Linux系统Redis的集群搭建
在3台虚拟机上每台机搭建一个master主节点和一个slave从节点,共3个master节点,3个slave从节点,以6个redis节点搭建一个redis集群;并附带集群水平扩展操作说明、集群选举原理等情况分析
2023-09-04 15:44:53
993
原创 Linux系统Redis的哨兵架构配置
一定要先准备好所有配置文件再去启动,否则如果复制了已启动的sentinel节点的配置文件,会导致哨兵集群搭建失败,因为sentinel启动之后会在当前节点使用的sentinel配置文件里追加写入。项目运行时,可关闭掉redis主节点,测试哨兵集群自动选举主节点操作(redis主节点挂掉后,服务会发起10次重新连接,之后会重新选举出一个新的主节点继续操作redis数据)而当6379节点重新启动之后,哨兵集群会根据sentinel里的集群信息,将6379redis节点作为从节点加入到整个集群;
2023-08-02 23:26:55
1383
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人