- 博客(16)
- 收藏
- 关注
原创 深入理解SLF4J(日志门面)—— 个人总结版
写了多年 log.info(“用户{}登录成功”, userId),你是否思考过:这行代码背后,SLF4J 是如何找到底层日志实现并完成输出的?为什么换一个日志框架只需要改 pom.xml,业务代码一行都不用动?今天我们从零开始,彻底吃透 SLF4J 日志门面的底层原理。
2026-07-16 12:11:30
274
原创 Redis个人总结版(底层相关知识点梳理)
很早就接触并使用过 Redis,但仅停留在业务应用层面,本次将从底层原理重新系统学习。Redis(Remote Dictionary Server,远程字典服务),是一款开源的、基于内存的、支持多种数据结构的高性能键值存储系统。
2026-06-12 15:36:27
305
原创 从底层原理出发掌握MySQL相关知识(个人学习总结版)
MySQL数据库的知识点很多,从底层原理开始学习,有助于高效掌握核心知识,达到举一反三的效果。
2026-05-27 18:09:57
424
原创 MyBatis 主流程详解:跟着一条 SQL 走遍完整执行链路
加载配置:解析 mybatis-config.xml 及所有 Mapper 文件,存入全局单例 Configuration。构建工厂:通过 SqlSessionFactoryBuilder 创建 DefaultSqlSessionFactory。打开会话:factory.openSession() 创建 SqlSession(持有 Executor)。获取代理:通过 JDK 动态代理生成 Mapper 接口代理对象(MapperProxy)。
2026-05-08 15:04:29
417
原创 MyBatis核心设计模式详解
JDK在运行期间,根据你提供的接口,自动生成一个代理类$Proxy0这个代理类实现了相同接口,所以能伪装成目标类代理类的所有方法,都会调用InvocationHandler.invoke()在invoke里:前置增强 + 执行真实方法 + 后置增强经典的GoF设计模式共有23种,根据模式的目的分为三大类别:创建型模式、结构型模式和行为型模式,文中介绍的7种模式也属于这三大类别。下面通过简要介绍这三大类别来更好的帮助我们理解文中的7种涉及的设计模式所属类别和核心目的。类别核心关注点。
2026-05-07 13:14:47
421
原创 MyBatis和JDBC的关系
MyBatis是Java后端开发中一款主流的持久层框架,它的核心逻辑是:通过配置,让你在 Java 接口里调用方法,就能自动执行预定义的 SQL 并拿到对象。从上面的内容可知,MyBatis是基于JDBC进行了封装,和数据库进行打交道的还是JDBC,不过一些重复的准备工作和收尾工作MyBatis帮我们接管了,而且通过将SQL语句写在xml文件中,使SQL和代码解耦,更利于项目维护和部署。下面通过对比JDBC和MyBatis在操作数据库中的自动化程度来更好的展现MyBatis框架的优势。
2026-04-23 16:40:35
388
原创 Spring框架其实没那么复杂
IoC容器在Spring项目启动的时候,会扫描指定包名下的所有类,加了@Component注解后,就会被识别到,然后通过反射创建这个类对象,存到容器里,用的时候直接通过getBean拿到。正常情况,我们获取一个Java对象,是先定义这个类,然后用new来获取对象的实例,DI的实现是你需要一个对象,我直接帮你创建好,用的时候直接可以获取。很明显,使用Spring AOP,我们的业务代码只需保留核心业务,无重复日志、耗时记录的代码,方便统一维护,整个设计的扩展性很好,如果需要改日志格式,只改切面即可。
2026-04-08 12:04:05
323
原创 记一个简单Java项目-个人记账本-的学习心得
四. Java对象直接的关系调用:Main - 程序入口, PersonalAccountBook - 程序主功能类,辅助类有如下三个:a) AccountBook- 调用实体类Record,并存储List<Record>和维护ID的一致性,递增性,b) FileHandler- 负责处理文件相关的操作, c) ReportGenerator- 负责处理数据并返回汇总信息。六. final 关键字的使用,不会更改的变量(常量及引用不可变的情况),建议定义的时候使用final。
2026-03-26 11:46:02
157
原创 网络通信初体验
我的Java基础比较薄弱,刚开始deepseek给我生成这个即时聊天程序的所有代码时,我看了半天也没弄明白他们到底是如何通讯的,为什么客户端有主线程和监听线程这两个线程,server主要负责哪些功能,server的handler主要用来干什么的,client, server,handler它们三个到底如何协调工作完成群发信息和私聊功能的。直到我按照deepseek给的建议,一步一步从最简单的socket代码开始写起,一点一点增加功能,到最后把所有的主要功能都实现了,我才豁然开朗。知其然,知其所以然。
2026-03-25 11:35:28
350
原创 【“入坑”计算机】-随笔
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.
2026-03-25 11:34:25
31
原创 本地Java项目 + 虚拟机上的MySQL Server
同时在DeepSeek的帮助下搞定了sql文件的执行(主要包含建库,建表和插入一些测试数据),MySQL用户的创建和授权,虚拟机上防火墙设置(允许宿主机访问虚拟机上的MySQL服务)等问题,最终成功连上虚拟机上的MySQL服务器。URL里的IP192.168.5.101是虚拟机的IP,如果是在自己的Windows电脑上面安装MySQL Server,上面URL的值除了把IP地址改成localhost,其他的都不需要改变。不过,如果你用的账号和密码不一样了,也是需要更新下的。
2026-01-29 17:58:20
42
原创 Java TreeMap
之后我了解到,与HashMap不同,TreeMap它是有序的。如果没有满足上面的条件的任何一个而直接使用TreeMap,即使编译期没问题,可以顺利编译成字节码文件,但是在运行的时候会报错。中文意思:该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造函数。当你希望键值对按一定顺序来保存你需要的数据时,就可以使用TreeMap,我的需求就是希望按照年月的倒序顺序来保存收入支出的记录。当然我使用的YearMonth也实现了Comparable。
2026-01-26 17:36:40
283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1