- 博客(7)
- 收藏
- 关注
原创 spring启动全过程
写在前面 spring容器启动全过程,将组合、继承、反射、代理用到了极致。抽象工厂模式,简单工厂模式,策略模式,单例模式等都有涉及。 功能拆分,代码解耦,每一个功能都会有单独的方法来完成,代码流程条理清晰,逻辑鲜明。 这是一个漫长的过程,中间涉及到各种工作,很复杂,源码看起来很累。 我的源码入手顺序: 最初是为了弄清楚三级缓存的左右和循环依赖,所以看了关于DefaultSingletonBeanRegistry.getSingleton()的源码。 然后是为了弄清楚spring关于观察者模式的源码,也就是关
2021-07-05 16:36:41
1752
原创 LeetCode总结
3、 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思想: 暴力法:遍历所有子字符串,找出最长的无重复字符的子字符串,复杂度为O(n^3); 优化:使用滑动窗口,使用一个HashMap存储字符以及其位置索引,使用双指针i=0,j=0,往前遍历j++,入到ma...
2019-08-10 16:38:10
137
原创 java多线程 Executor框架
为什么引入Executor线程池框架 new Thread()的缺点 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 不利于扩展,比如如定时执行、定期执行、线程中断 采用线程池的优点 重用存在的线程,减少对象创建、消亡的开销,性能佳 可有效控制最大并发线程数,提高系统资源的使...
2019-07-23 13:48:06
166
原创 剑指poffer总结 栈
包含min函数的栈 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 import java.util.Stack; public class Solution {//使用辅助栈 Stack<Integer> stack1=new Stack<>(); Stack<Integer>...
2019-07-22 12:37:13
213
原创 剑指offer 树 个人总结
树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思想:利用递归,先判断B树的根节点与A树的根节点或左右结点是否相匹配,再构造一个判断两树结点是否匹配的方法,递归调用,注意空指针的问题。 /** public class TreeNode { int val = 0; TreeNode left = null; ...
2019-07-21 10:12:32
179
原创 剑指offer链表
链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。 思想: 使用双指针,第一个指针先往前走k-1部,只想第k个结点,然后两个结点同时向前移动,当第一个指针移动到末端时,第二个指针正好只想倒数第k个结点。 代码如下 /* public class ListNode { int val; ListNode next = null; ListNode(i...
2019-07-20 10:30:59
102
原创 剑指offer总结 数组
剑指offer调整整数数组顺序 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 public class Solution { public void reOrderArray(int [] array) { for(int i=0;i<array.length...
2019-07-20 10:05:21
107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人