是你啊小米

专注于Java后端开发

奋斗 被访问0

社交账号


    置顶博客更多


    HashMap源码分析

    🕑 2020-08   ⏳ 2021-09-01   👀 394   🔖  Java 

    HashMap 是非线程安全的集合类,存储的是 key/value 的键值对

    在 java8 之前,底层数据结构采用的是哈希表 + 链表的形式,如果 hash 冲突,那么就使用链地址法解决冲突

    在 java8 之后,底层数据结构采用了哈希表 + 链表 + 红黑树的形式,当链表长度大于 8 时,将会转换成红黑树,以解决链表过长时导致的时间复杂度过大的问题


    下面会对 HashMap 中重要的方法进行概述,并...


    ThreadLocal源码解析

    🕑 2021-08   ⏳ 2021-08-31   👀 143   🔖 

    ThreadLocal 提供线程局部变量, 通过空间换时间的方式保证线程安全

    一开始比较理解的是, ThreadThreadLocalMapThreadLocal 和 key 之间的关系
    但实际上是, 每一个 Thread 中, 存在一个 ThreadLocalMap, map 中存放的 key 就是 ThreadLocal
    ...


    深入理解Java虚拟机

    🕑 2020-11   ⏳ 2020-11-10   👀 580   🔖  Java 

    对《深入 Java 虚拟机第三版》书籍的概括和总结,方便以后的回顾和查看

    • 线程共享
      • 堆:存放 Java 对象
      • 元空间:存放编译后的常量、静态变量、类信息等
    • 线程私有
      • 虚拟机栈:存放普通方法调用的栈帧
      • 本地方法栈:存放 native 方法调用的栈帧
      • 程序计数器:存放下一个要执行的字节码指令
    • 直接内存:用于 NIO 相关...

    SpringBoot启动全流程及扩展点解析

    🕑 2020-11   ⏳ 2020-11-06   👀 521   🔖  SpringBoot 
    • 通过整理 SpringBoot 全流程,可以更好的俯视项目的运行流程,并且可以快速的定位到具体的代码,方便高效

    • 通过整理 SpringBoot 扩展点流程,可以更好的俯视 Spring 中 bean 的整个生命周期以及扩展的切入点,并且可以快速的定位到具体的代码,方便高效

    • 创建一个新的 SpringApplication 实例

      SpringAppl...


    Spring常见问题

    🕑 2020-11   ⏳ 2020-11-06   👀 358   🔖  SpringBoot 

    记录通过看源码的方式来解答 Spring 的常见问题

    BeanFactory 是 IoC 容器的接口,而 FactoryBean 是用于创建复杂 bean 的封装方式


    通过实现 FactoryBean 接口,然后将实现类加入到 Spring 容器中,那么在创建对应的 bean 时,会通过 FactoryBean 的方式进行 bean 的创建(一般用于复...


    ThreadPoolExecutor源码分析

    🕑 2020-09   ⏳ 2020-09-09   👀 485   🔖  Java 
    public class ThreadPoolExecutor extends AbstractExecutorService {
      // 记录当前线程池的状态(0|x=x),所以默认就RUNNING状态
      private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
      // ...
    

    关于

    🕑 2020-08   ⏳ 2020-09-05   👀 902   🔖 

    该博客经过了 6 次版本迭代,框架方面:前端从 Vue.jsNuxt.js 变为了 BootStrap,后端则从 Node.js 变为了 SpringBoot

    迭代的原因: 为了更好的 SEO,为了更方便的维护,为了使用体验的提升...

    • 文件层级 + 标签
    • 使用 ES 实现全文检索
    • 使用即时渲染的编辑器进行 Markdown 的编辑
    • 文件上传 + 附件管理
      ...

    Spring IOC源码解析

    🕑 2020-08   ⏳ 2020-09-04   👀 413   🔖  SpringBoot  Java 

    记录 Spring IoC 的源码解析

    常用的两个加载配置文件的类 ClassPathXmlApplicationContextAnnotationConfigApplicationContext 的继承关系图:

    ![image20191220142326074-2020-08-31-13:51:10.png](/file/image2019122014232...


    最新博客更多


    [232]用栈实现队列

    🕑 2021-12   ⏳ 2021-12-29   👀 27   🔖  算法 

    力扣

    方法一:

    class MyQueue {
    
        /**
         * 方法一: 每次入栈都通过另外一个栈来帮助调整好顺序
         * 时间复杂度:
         * 入栈: O(n)
         * 出栈: O(1)
         * peek:...
    

    [231]2的幂

    🕑 2021-12   ⏳ 2021-12-29   👀 22   🔖  算法 

    力扣

    class Solution {
        /**
         * 方法一: 通过判断是否能被2整除
         */
        public boolean isPowerOfTwo2(int n) {
            if (n == 1) {
                retur...
    

    [234]回文链表

    🕑 2021-12   ⏳ 2021-12-29   👀 28   🔖  算法 

    力扣

    class Solution {
        /**
         * 先遍历链表, 将数据和长度存在list中, 再进行回文验证
         */
        public boolean isPalindrome(ListNode head) {
            L...
    

    [230]二叉搜索树中第K小的元素

    🕑 2021-12   ⏳ 2021-12-25   👀 22   🔖  算法 

    力扣

    class Solution {
        /**
         * 通过中序遍历, 可以将二叉搜索树转化为有序的数组, 直接通过数组下标即可获取第k小的数
         */
        public int kthSmallest(TreeNode r...
    

    [229]求众数 II

    🕑 2021-12   ⏳ 2021-12-25   👀 35   🔖  算法 

    力扣

    class Solution {
        /**
         * 直接使用hashMap就可以达到一个比较好的效果
         * 时间复杂度为O(n), 空间复杂度O(n)
         */
        public List<Integer> majorityElem...
    

    [228]汇总区间

    🕑 2021-12   ⏳ 2021-12-25   👀 27   🔖  算法 

    力扣

    class Solution {
        /**
         * 比较简单, 直接处理即可
         */
        public List<String> summaryRanges(int[] nums) {
            if (nums.length == 0) {
    ...
    

    [227]基本计算器II

    🕑 2021-12   ⏳ 2021-12-18   👀 32   🔖  算法 

    力扣

    class Solution227 {
    
        public int calculate(String s) {
            Deque<Integer> numberQueue = new ArrayDeque<>();
    
            int num...
    

    [226]反转二叉树

    🕑 2021-12   ⏳ 2021-12-18   👀 32   🔖  算法 

    力扣

    class Solution226 {
    
        // 交换root节点以及他的子节点, 返回本身
        public TreeNode invertTree(TreeNode root) {
            if (root == null) {
          ...
    

    [221]最大正方形

    🕑 2021-12   ⏳ 2021-12-18   👀 32   🔖  算法 

    力扣

    class Solution221 {
        /**
         * 方法一: 暴力解(不过进行了优化, 可以通过测试)
         */
        public int maximalSquare2(char[][] matrix) {
            // 先遍历一次, 初...
    

    线程的五种状态

    🕑 2020-09   ⏳ 2021-08-20   👀 285   🔖 

    线程的状态枚举: java.lang.Thread.State

    其中罗列了 6 种状态:

    • NEW: 创建状态
    • RUNNABLE: 可运行状态
    • BLOCKED: 阻塞状态
    • WAITING: 等待状态
    • TIMED_WAITING: 定时等待状态
    • TERMINATED: 终止状态

    具体代码如下:

    public enum State {
       ...
    

    解决mysql差8小时的问题

    🕑 2020-09   ⏳ 2021-06-10   👀 300   🔖 

    登入到 MySQL 客户端,通过以下代码查询在 msyql 中的当前时间

    select now();
    

    如果是差 8 小时,则可以执行一下代码:

    set global time_zone = '+8:00';   
    flush privileges;          
    

    修改完成后,需要重新登入 MySQL 客户端才能看到时间的改变
    ...


    线程同步的三种方式

    🕑 2020-09   ⏳ 2020-12-24   👀 453   🔖 

    实现线程同步的三种方式

    • 同步代码块
    • 同步方法
    • Lock

    例如:

    public void test(){
    	synchronized (XXX){
    		...
    	}
    }
    

    在同步代码块 XXX 中可以传入以下几个值

    • 锁对象
      比如 new Object()对象
      比如 this 对象
    • class 对象
      比如 this....

    docker

    🕑 2020-08   ⏳ 2020-12-17   👀 520   🔖  Java 

    官网

    镜像仓库

    • mac/windows

      直接下载桌面客户端,自动会安装好 docker(推荐使用)

      mac 可以直接使用 brew install docker 进行安装
      ...


    maven配置文件setting.xml

    🕑 2020-08   ⏳ 2020-12-01   👀 331   🔖  Java 

    在手动创建 settings.xml 配置文件的时候,千万注意不能少一个 s,这个错误很难会被检查出来,如果少一个 s,你会发现不管你怎么配置,配置文件都不会生效,用户目录下的配置也不会生效,会导致你怀疑人生,切记!

    <?xml version="1.0" encoding="UTF-8"?>
    
    <settings ...
    

    idea2020.1永久破解

    🕑 2020-08   ⏳ 2020-11-30   👀 315   🔖 

    首先去官网上下载 idea 2020.1 版本的安装包


    ICP证 : 浙ICP备18021271号-3