
Java
文章平均质量分 82
Java及相关框架
chugyoyo
微信公众号【源码启示录】作者
微信号:xinx100xx
展开
-
Spring源码 - 这才是Spring Bean生命周期
生命周期回调部分其实讲的很透彻,就是实现 InitializingBean#afterPropertiesSet()、DisposableBean#destroy() 就可以实现生命周期的初始化阶段、销毁阶段 控制,而 @PostConstruct、@PreDestroy 与以上两个是等价的,只不过解耦了(毕竟这两个注解是 javax.annotation 包下的,我们甚至可以不依赖 Spring 模块也能实现)。首先,研究是有先后顺序、前置知识的,要了解生命周期,得先知道 Bean 是如何被创建的。原创 2025-04-09 02:33:47 · 895 阅读 · 0 评论 -
springboot底层原理之 - @SpringBootApplication 源码精读
注解会被记录到文档;自动配置类本质是 Spring 的 @Configuration 配置类,通过 SpringFactoriesLoader 机制(以本类为键)加载。配置组件扫描规则,用于指定Spring容器在哪些包路径下扫描带有组件注解(如 @Component、@Service等)的类。当使用被 {@code @Inherited} 修饰的注解标注类时,若该类的子类未显式使用该注解,则会自动继承父类的注解。所以,@SpringBootApplication 的属性里都是当前注解的原注解的属性的覆盖。原创 2025-03-14 01:25:59 · 799 阅读 · 0 评论 -
缓存策略的一些思考问题和解答(缓存过期时间、更新、二阶段提交)
关于缓存策略和二阶段提交的一些思考原创 2024-12-31 17:27:23 · 257 阅读 · 0 评论 -
DeferredResult 是如何实现异步处理请求的
最近遇到了一个问题,我们的一个接口需要去轮询另一个第三方接口,导致这个接口占用了太多工作线程,这些工作线程长时间 running,我们需要解决这个问题。于是,我们的方案是:用 DeferredResult 实现接口异步。全文就是探究其原理。原创 2024-08-02 21:41:38 · 1016 阅读 · 0 评论 -
springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step
Springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。原创 2024-07-25 10:59:47 · 580 阅读 · 0 评论 -
订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配
一个金额分摊的算法,将折扣分摊按比例(细单实收在总体的占比)到各个细单中。此算法需要达到以下要求:折扣金额接近细单总额,甚至折扣金额等于细单金额,某些时候甚至超过细单总额,要保证实收不为负数。复杂度O(n)写这个算法的初衷,就是因为现在网上的分摊算法,都没有考虑到最后一项不够减、只循环一次、折扣金额接近总额…原创 2024-07-03 17:50:26 · 904 阅读 · 2 评论 -
谈谈跳台阶算法的记忆法和编程理念|青蛙跳台阶|递归|动态规划|算法|程序员面试|Java
为什么会写这篇文章?因为鄙人刷过此题多次,每次觉得自己会了,可下次还是不能一下子写出题解,故记录下我是如何记忆此题的,并且探索一些编程理念。原创 2024-06-20 11:55:54 · 458 阅读 · 0 评论 -
java数组ArrayList迭代修改的ConcurrentModificationException错误
java数组集合进行迭代修改时,不用迭代器内部方法容易报错!原创 2024-06-13 22:12:01 · 301 阅读 · 0 评论 -
手写一个简单的Spring容器(原理+源码)
手写一个简单的Spring容器,用配置文件方式,在配置文件中写入我们想要的bean,工厂会自动创建一个仓库,bean实例被用到时注册,我们就可以直接根据bean的名字拿到这个bean的单例。原创 2022-07-01 14:19:32 · 783 阅读 · 0 评论 -
从源码和测试多方面深度解读Java的String类对象的内存分布
网上关于String对象内存分配的知识的分享比较零散不一,String的==、intern函数,以及在JVM内存中String到底在哪里,这篇文章会进行分析。原创 2022-06-15 18:36:53 · 355 阅读 · 0 评论 -
SpringMVC静态资源发布流程(静态如何从文件加载到Resource,最后传给response,以及其专用处理器ResourceHttpRequestHandler源码深入追究)
SpringMVC 加载静态文件,最后又传给response,说完你可能不信,我追踪了一遍!原创 2022-03-02 20:26:44 · 1266 阅读 · 0 评论 -
HttpRequestHandlerAdapter——SpringMVC中的网络请求处理适配器
我们SpringMVC中,DispatcherServlet拿到请求,先去HandlerMapping找到handler链,然后获取支持这个handler的HandlerAdapter,拿得到的话就执行处理逻辑,然后得到模型视图,再解析视图,渲染。HttpRequestHandlerAdapter这个也是其中的一环。原创 2022-03-02 12:20:44 · 1193 阅读 · 0 评论 -
SpringBoot SpringBootServletInitializer启动原理,如何扫描添加Servlet、ServletContext,内置tomcat原理(源码深入解析)
现在主流的SpringBoot就是基于Servlet的,所以研究Servlet如何加载是很有必要的。原创 2022-03-01 23:10:58 · 2576 阅读 · 0 评论 -
SpringBoot中SpringMVC的DispatcherServlet工作流程?服务发布?源码解析?Servlet监听?Listener?注释翻译?代码详解?与Controller关系?
我们写一个Listener去监听什么是Listener?Listener 即监听器,是servlet 的监听器。随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。当被监视的对象发生情况时,立即采取相应的行动(观察者模式)。主要作用是做一些初始化的内容添加工作、设置一些基本的内容(比如一些参数或者是一些固定的对象)。通过监听器,可以自动激发一些操作。比如:监听在线用户数量等等。我们先实操:import javax.servlet.ServletContext;import ja原创 2022-03-01 17:32:49 · 505 阅读 · 0 评论 -
Java与SpringBoot内置Tomcat源码运行原理与Servlet放置原理解析(org.apache.catalina.startup.Tomcat)
简单使用可以参考这篇文章:https://blog.youkuaiyun.com/the_one_and_only/article/details/105177506基本原理就是将Tomcat对象中的Host和Connector中的port设置成相应的host:port,配置Tomcat上下文(环境配置),最后加入Servlet,然后跑起来。Tomcat是这样的:Tomcat源码注释:/** * Minimal tomcat starter for embedding/unit tests. * *原创 2022-02-28 21:15:44 · 784 阅读 · 0 评论 -
前后端分离下后台管理系统的开发全套完整方案步骤(SpringBoot)
目录技术选型数据库设计数据模型podto后台经典三层dao层service层controller层后台安全令牌公共参数拦截器放行规则登录验证操作权限缓存缓存注解缓存模板响应包装配置自定义配置pom数据安全字段验证日志本教程注重整体设计思路,提出相应的技术,每一步的具体实现点到为止技术选型SpringBoot+Redis+MyBatis(Plus)Spring进行bean管理,Redis缓存,MyBatis(Plus)管理持久层数据库设计外键是必须加的,这样可以保证数据完整性(参照完整性),原创 2021-06-03 00:00:39 · 2657 阅读 · 1 评论 -
springboot+mybatis-generator逆向工程自动生成的代码文件内容详细解析+使用(Mapper.xml+实体类+增删查改条件模板类+Mapper接口类)
数据库设计实体类.java实体类Example.java~Mapper.xml大致情况:名称空间,定义到Mapper接口类上<mapper namespace="com.superkarx.dao.TestMapper">结果集 <!--结果集,指定这个结果集的 id 叫什么,返回的类型是对应哪个 bean--> <resultMap id="BaseResultMap" type="com.superkarx.pojo.Test">原创 2020-10-27 15:06:38 · 551 阅读 · 0 评论 -
Springboot的mybatis逆向工程自动生成代码+代码解析+神坑规避指南(全网最全攻略|附思维导图)
项目版本概况mybatis-generator-core:1.3.4mybatis-generator-maven-plugin:1.3.4mysql-connector-java(项目运行):8.0.22mysql-connector-java(逆向工程):5.1.47mybatis-spring-boot-starter:2.1.3实验日期:2020 年 10 月 22 日思维导图数据库设计:宁愿属性名很长,也不要使用到 mysql 关键字!(ps:修了一天 bug 的罪恶之源)原创 2020-10-22 16:52:12 · 779 阅读 · 3 评论 -
Springboot+MyBatis+Redis极简restful风格后台搭建
前置知识:JavaWeb、Mysql、Springboot等入门知识一、配置环境1.mysql环境此部分请跳到:https://blog.youkuaiyun.com/bobo553443/article/details/813831942.Redis环境此部分请跳到:https://blog.youkuaiyun.com/GDUT_xin/article/details/108986323二、项目搭建1.创建项目创建一个普通的 Springboot 项目此部分请跳到:https://blog..原创 2020-10-10 17:11:58 · 1353 阅读 · 0 评论 -
idea彻底改java项目名(详细说明各个地方改名的作用)
需求分析???? 要将手头的java项目文件夹改名,经常会出现以下问题:无法运行只是改了别名打war包、jar包的包名还是不变解决方案以下将项目名Easyfile改为驼峰命名的EasyFile①改项目名称:此时只改了别名!②改文件夹名③解决编译错误 爆红:将jar包导入项目库中 各种加载异常:将java、resource等文件夹标记好④解决运行错误在pom.xml中更改项目名 <groupId>org.example</grou原创 2020-09-30 16:56:03 · 12820 阅读 · 0 评论 -
ssm框架入门(简单原理+demo)
文章说明文章源码只截取部分,完整源码(ssm-demo)请访问:优快云文件:GitHub:https://github.com/xmvp此文章的图片来源于网络知识储备(仅此项目用到)三层架构:ssm:springmvc(表示层) + spring(业务层) + mybatis(持久层)springmvc:(mvc思想:模型、视图、控制器)spring:控制反转(这里用到bean管理,自动注入等)mybatis:预编译sql语句的接口映射(mapper)项目结构整体结原创 2020-09-27 21:34:21 · 337 阅读 · 0 评论