- 博客(13)
- 收藏
- 关注
原创 Spring源码学习(一)Bean的生命周期以及循环依赖问题
Spring源码学习(一)Bean的生命周期以及循环依赖问题网络上一些讲解Spring的依赖循环问题,使用的spring版本很多都比较久远,不是最新的版本。下面根据官方文档和源码分析5.3.9版本的spring中是如何创建Bean实例的,以及其整个生命周期。并且从源码的角度说明spring是如何通过三级缓存解决循环依赖问题的。1. 实验准备首先简单设计一个demo项目,构建两个实例A和B:public class InstanceA { private InstanceB b;
2021-08-09 20:01:53 148
原创 Spring Statemachine
Spring StateMachine个人小结一、有关概念梳理官方流程图:二、简单demo实验参考自:https://github.com/sunbufu/spring-state-machine-demo依赖: <dependency> <groupId>org.springframework.statemachine</groupId> <artifactId>spring-s
2021-07-06 21:03:14 587
原创 计算机基础整合
计算机基础整合1. 网络基础网络结构:7层 4层之类的1.1 OSI7层结构物理层主要定义物理设备标准,它的主要作用是传输比特流,具体做法是在发送端将1、0转码为电流强弱来进行传输,在到达目的地后再将电流强弱转化为1、0码,也就是模数转换和数模转换,这一层的数据叫做比特。数据链路层主要用于对数据包中的MAC 地址进行解析和封装。这一层的数据叫作帧。在这一层工作的设备是网卡、网桥、交换机。网络层主要用于对数据包中的IP 地址进行封装和解析,这一层的数据叫作数据包。在这一层工作的设备有路
2021-04-30 14:32:03 256
原创 多线程问题整合
多线程问题整合1. 创建线程池的方法实现Runnable接口实现callable接口继承Thread类基于线程池1.1 继承Thread类Thread类实现了Runnable接口并定义了操作线程的一些方法,我们可以通过继承Thread类的方式创建一个线程。具体实现为创建一个类并继承Thread接口,然后实例化线程对象并调用start方法启动线程。start方法是一个native方法,通过在操作系统上启动一个新线程,并最终执行run方法来启动一个线程。run方法内的代码是线程类的具体实现逻
2021-04-30 14:30:35 300
原创 JAVASE 问题整合
JAVASE 问题整合1. java容器1. SetTreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。LinkedHashSet:具有 HashSet 的查找效率,并且内部使用
2021-04-30 14:28:29 140
原创 SpringBoot服务整合
SpringBoot服务整合1. SpringBoot整合数据源1.1 SpringBoot整合C3P0 (mysql 8.0.22)添加依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22
2021-02-13 22:36:18 360
原创 回溯算法小结(java)
回溯算法小结1.回溯算法定义:回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案;在尝试了所有可能的分步方法后宣告该问题没有答案;(来自维基百科)1.1 回溯算法和深度优先遍历回溯算法也叫 回溯搜索算法,「搜索」即「搜索
2020-12-11 21:34:16 399 3
原创 贪心+单调栈(Leetcode 402+316+321+1081)
贪心+单调栈(Leetcode 402+316+321+1081)这里总结了一下leetcode的三道题目,都是使用相似的思路,就是使用单调栈去逐步删除元素。402. 移掉K位数字给定一个以字符串表示的非负整数num ,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。思路:首先逐个比较,符合条件的放到双向列表里: for (int i = 0; i < length; i++) {
2020-12-02 20:55:36 233 1
原创 Could not find resource mybatis-config.xml(找不到 xxx.xml)
mybatis-config.xml 配置问题(找不到 xxx.xml)在配置mybais-config.xml时,会遇到找不到xml文件的问题。比如:后来查找资料发现可能是maven的约定大于配置 导致配置文件无法生效所以找到网上相关的配置代码放到pom.xml中 <build> <resources> <resource> <directory>src/main/re
2020-11-28 12:10:37 16818 5
原创 leetcode链表练习:分隔链表
leetcode链表练习:分隔链表题目:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5简单思路:既然需要对链表分隔,且需要保存相对位置,所以创建两个链表,分别用来存放大于等于x的节点和小于x的节点。之后将这两个链表合并即可
2020-11-26 16:51:23 165
原创 KMP算法--java实现
KMP算法–java实现与暴力算法的不同:暴力算法匹配不通过的时候就回到最前面KMP算法引入部分匹配函数的概念前缀:指除了最后一个字符以外,一个字符串的全部头部组合后缀:指除了第一个字符以外,一个字符串的全部尾部组合最大公共长度:指前缀和后缀中的最大共有元素,没有则为0匹配失败的时候,模式串j指针的位置= 模式串 T 的起始位置下标 + 部分匹配值所以步骤主要分为2步:求部分匹配表逐位比较,直到发现不匹配,或确定了完全匹配package com.stevia.basicAlgor
2020-11-26 11:42:10 242 2
原创 JavaWeb
JavaWeb本文就是个人自己入坑记的笔记(相关内容参考自狂神说b站视频 https://www.bilibili.com/video/BV12J411M7Sj)1. http1.1 什么是httphttp(超文本传输协议)是一个简单的请求-响应协议,通常运行在TCP上文本: html 字符串超文本:图本,音乐,视频,定位,地图80https:安全的4431.2 两个时代http1.0HTTP/1.0:客户端介意与web服务器连接后 只能获得一个web资源,断开连接
2020-11-25 16:03:16 389 1
原创 树的一些概念以及算法小结
树的相关总结树的基本概念合法的树不能形成无出口的回路n个互斥树的集合是森林度数:每个节点所有子树的个数层数:树的层数高度:树的最大层树。树叶或成终端节点:度数为0的节点就是树叶父节点:每一个节点有链接的上一层节点(即为父节点)子节点:每一个节点有链接的下一层节点为子节点祖先或子孙:所谓祖先是指从树根到该节点路径上所包含的节点,子孙是该节点往下追溯子树的任一节点非终端节点:树叶以外的节点同代:在同一棵中具有相同层数的节点森林:n个互斥树的集合,移去树根即为森林树的分类
2020-11-25 15:50:43 507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人