- 博客(53)
- 资源 (5)
- 收藏
- 关注
原创 Spring源码 - 这才是Spring Bean生命周期
生命周期回调部分其实讲的很透彻,就是实现 InitializingBean#afterPropertiesSet()、DisposableBean#destroy() 就可以实现生命周期的初始化阶段、销毁阶段 控制,而 @PostConstruct、@PreDestroy 与以上两个是等价的,只不过解耦了(毕竟这两个注解是 javax.annotation 包下的,我们甚至可以不依赖 Spring 模块也能实现)。首先,研究是有先后顺序、前置知识的,要了解生命周期,得先知道 Bean 是如何被创建的。
2025-04-09 02:33:47
892
原创 Spring源码 - Spring IOC 如何解决循环依赖
我们回到我们的例子,我们先处理的是 1对象(为了直观,之后将 CircleDependent1 简化描述为 1对象) 的逻辑不存在于三级缓存,所以通过 singletonFactory.getObject() 回调到匿名函数(回到前文可看到该匿名函数),调用 createBean 去创建 bean(此时 create ,而不是 get,注意这个差别,意味着这时候才是真正的创建逻辑,毕竟从缓存中没有拿到现有的只能去创建,命名十分合理)。我们知道,递归调用就会有递归调用的算法思路。
2025-04-05 00:00:49
524
原创 springboot底层原理之 - @SpringBootApplication 源码精读
注解会被记录到文档;自动配置类本质是 Spring 的 @Configuration 配置类,通过 SpringFactoriesLoader 机制(以本类为键)加载。配置组件扫描规则,用于指定Spring容器在哪些包路径下扫描带有组件注解(如 @Component、@Service等)的类。当使用被 {@code @Inherited} 修饰的注解标注类时,若该类的子类未显式使用该注解,则会自动继承父类的注解。所以,@SpringBootApplication 的属性里都是当前注解的原注解的属性的覆盖。
2025-03-14 01:25:59
798
原创 推荐一个好用的在线文本对比网站 - diffchecker
推荐一个好用的,可以生成对比在线链接、支持回退历史、UI设计也很不错、响应也很快的网站。
2025-03-09 15:33:06
304
原创 《深入浅出数据索引》- 公司内部培训课程笔记
大参林信息中心内部培训课程《深入浅出数据索引》的笔记,记录一些索引底层原理、优化技巧等信息,供大家参考学习
2025-03-07 18:29:45
237
原创 DeferredResult 是如何实现异步处理请求的
最近遇到了一个问题,我们的一个接口需要去轮询另一个第三方接口,导致这个接口占用了太多工作线程,这些工作线程长时间 running,我们需要解决这个问题。于是,我们的方案是:用 DeferredResult 实现接口异步。全文就是探究其原理。
2024-08-02 21:41:38
1016
原创 springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step
Springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。
2024-07-25 10:59:47
580
原创 订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配
一个金额分摊的算法,将折扣分摊按比例(细单实收在总体的占比)到各个细单中。此算法需要达到以下要求:折扣金额接近细单总额,甚至折扣金额等于细单金额,某些时候甚至超过细单总额,要保证实收不为负数。复杂度O(n)写这个算法的初衷,就是因为现在网上的分摊算法,都没有考虑到最后一项不够减、只循环一次、折扣金额接近总额…
2024-07-03 17:50:26
896
2
原创 谈谈跳台阶算法的记忆法和编程理念|青蛙跳台阶|递归|动态规划|算法|程序员面试|Java
为什么会写这篇文章?因为鄙人刷过此题多次,每次觉得自己会了,可下次还是不能一下子写出题解,故记录下我是如何记忆此题的,并且探索一些编程理念。
2024-06-20 11:55:54
457
原创 java数组ArrayList迭代修改的ConcurrentModificationException错误
java数组集合进行迭代修改时,不用迭代器内部方法容易报错!
2024-06-13 22:12:01
301
原创 mysql oceanbase数据库alter语句阻塞,解决方案
查一下这些阻塞的语句,判断哪个是所阻塞的表相关的。执行:kill processlist_id。
2024-05-08 15:57:55
401
原创 2022阿里巴巴全球数学竞赛 第4题 虎虎生威(盲盒问题、集卡问题)解决思路
盲盒问题、集卡问题,来自 2022阿里巴巴全球数学竞赛 第4题(单选题),参考了哔哩哔哩阿里达摩院的解题思路,加上自己的通俗理解。
2022-07-01 23:35:43
6716
4
原创 手写一个简单的Spring容器(原理+源码)
手写一个简单的Spring容器,用配置文件方式,在配置文件中写入我们想要的bean,工厂会自动创建一个仓库,bean实例被用到时注册,我们就可以直接根据bean的名字拿到这个bean的单例。
2022-07-01 14:19:32
783
原创 Learning Git Branching 题解(基础、高级、Git远程仓库)
Learing Git Branch是一个模拟git操作的网站,本文将解题的关键过程记录下来,方便后续复习和查阅
2022-06-30 19:26:39
1620
原创 C++实现wins后台监控键盘输入(Hook)
使用Wins的Hook技术,将键盘输入的消息的新处理挂载到消息处理链中去,实现简单的对键盘输入的监控。
2022-06-23 01:16:32
9813
4
原创 从源码和测试多方面深度解读Java的String类对象的内存分布
网上关于String对象内存分配的知识的分享比较零散不一,String的==、intern函数,以及在JVM内存中String到底在哪里,这篇文章会进行分析。
2022-06-15 18:36:53
355
原创 攻防世界(adworld) WEB Exercise area(练习区)10题解题思路
整理adworld中10道web攻击练习题,涉及http请求响应内容、密码爆破、编码解码、php语法、webshell等。
2022-03-15 16:20:54
3755
原创 整理PHP的一些比较突出的特点(PHP入门笔记)
作为一个Java开发者,第一次学习PHP,在查看了入门文档之后,整理了令我印象深刻的点。服务器脚本语言PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言。 纯 HTML 结果发送回浏览器<!DOCTYPE html><html><body><h1>My first PHP page</h1><?phpecho "Hello World!";?>.
2022-03-08 17:10:18
307
原创 SpringMVC静态资源发布流程(静态如何从文件加载到Resource,最后传给response,以及其专用处理器ResourceHttpRequestHandler源码深入追究)
SpringMVC 加载静态文件,最后又传给response,说完你可能不信,我追踪了一遍!
2022-03-02 20:26:44
1266
原创 HttpRequestHandlerAdapter——SpringMVC中的网络请求处理适配器
我们SpringMVC中,DispatcherServlet拿到请求,先去HandlerMapping找到handler链,然后获取支持这个handler的HandlerAdapter,拿得到的话就执行处理逻辑,然后得到模型视图,再解析视图,渲染。HttpRequestHandlerAdapter这个也是其中的一环。
2022-03-02 12:20:44
1192
原创 SpringBoot SpringBootServletInitializer启动原理,如何扫描添加Servlet、ServletContext,内置tomcat原理(源码深入解析)
现在主流的SpringBoot就是基于Servlet的,所以研究Servlet如何加载是很有必要的。
2022-03-01 23:10:58
2575
原创 SpringBoot中SpringMVC的DispatcherServlet工作流程?服务发布?源码解析?Servlet监听?Listener?注释翻译?代码详解?与Controller关系?
我们写一个Listener去监听什么是Listener?Listener 即监听器,是servlet 的监听器。随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。当被监视的对象发生情况时,立即采取相应的行动(观察者模式)。主要作用是做一些初始化的内容添加工作、设置一些基本的内容(比如一些参数或者是一些固定的对象)。通过监听器,可以自动激发一些操作。比如:监听在线用户数量等等。我们先实操:import javax.servlet.ServletContext;import ja
2022-03-01 17:32:49
504
原创 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
783
原创 n步问题求解算法:斐波那契拓展|青蛙跳台阶拓展|三步问题拓展|多步问题拓展|高精度|大整数支持|自顶向下分析|自底向上求解
问题分析(自顶向下)首先看斐波那契数列,我们先自顶向下分析,f(n)其实是f(n-1)和f(n-2)的和,我们如果画成树,就会发现底层叶子节点都是 f(0)=0 和 f(1)=1。我们再看经典的青蛙问题,每次跳1~2步,跳一步的情况+跳两步的情况,f(n)=f(n-1)+f(n-2),其实本质也是斐波那契数列。(初始值及其含义不一样)最后看三步问题,每次跳1~3步,跳一步的情况+跳两步的情况+跳三步的情况,f(n)=f(n-1)+f(n-2)+f(n-3),很像斐波那契数列。(初始值及其含义不一样)
2021-06-24 18:56:54
367
原创 安卓AIDL跨进程调用技术实例(踩坑讲解)(两种方案)(max函数服务|音乐播放服务)
方法一:aidl接口+Service类main文件下创建aidl接口:创建之后:代码:interface GetMaxAidlService { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */// void basicTypes(int anInt, long aLong, boolean aBoole
2021-06-13 00:23:32
1820
6
原创 前后端分离下后台管理系统的开发全套完整方案步骤(SpringBoot)
目录技术选型数据库设计数据模型podto后台经典三层dao层service层controller层后台安全令牌公共参数拦截器放行规则登录验证操作权限缓存缓存注解缓存模板响应包装配置自定义配置pom数据安全字段验证日志本教程注重整体设计思路,提出相应的技术,每一步的具体实现点到为止技术选型SpringBoot+Redis+MyBatis(Plus)Spring进行bean管理,Redis缓存,MyBatis(Plus)管理持久层数据库设计外键是必须加的,这样可以保证数据完整性(参照完整性),
2021-06-03 00:00:39
2656
1
原创 那些经典且常用的算法套路
链表的构建可能你有很多种方案,以下这个是我个人总结出的比较好用的方案。ListNode head = null, node = null;while (condition) { // 这里准备一个新的节点值 val if (node == null) { head = new ListNode(val); node = head; } else { node.next = new ListNode(val); node
2021-05-08 15:11:32
241
原创 那些奇妙的算法题
因子的个数例题:(LeetCode 172)给定一个整数 n,返回 n! 结果尾数中零的数量。这道题可以转化为:(因为5乘以偶数会得到10,而偶数很多)给定一个整数 n,返回 n 中 5 的因子数而找到因子5的个数,可以参考找因子2或者10的个数的方法题解:public int trailingZeroes(int n) { int count = 0; while (n > 0){ count += n / 5; n /=
2021-05-07 14:55:37
172
原创 算法优化方案(刷题总结)
IO方面:一个典型的算法题,一般会有一个输入输出模板,例如以下这道题:输入:输入第一行包含一个正整数 T,表示需要检验的用户名数量。接下来有 T 行,每行一个字符串 s,表示输入的用户名。输出:对于每一个输入的用户名 s,请输出一行,表示符不符合用户名的规定格式。我之前用的代码:import java.util.Scanner;public class Solution { public static boolean fit(String name) { //验证用户名格式
2021-04-24 18:00:13
810
ssm-demo.zip
2020-09-27
进程调度作业调度和内存块分配算法(含界面).zip
2020-07-26
多道批处理的两级调度.zip
2020-07-11
B树+B树实现的图书管理系统(C语言)(广东工业大学课程设计2019).zip
2020-01-11
广工数据结构anyview2019最新完整参考答案(含题目).docx
2020-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人