是你啊小米

专注于Java后端开发

奋斗 被访问0

社交账号


    置顶博客更多


    HashMap源码分析

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

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

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

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


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


    ThreadLocal源码解析

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

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

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


    深入理解Java虚拟机

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

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

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

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

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

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

    • 创建一个新的 SpringApplication 实例

      SpringAppl...


    Spring常见问题

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

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

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


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


    ThreadPoolExecutor源码分析

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

    关于

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

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

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

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

    Spring IOC源码解析

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

    记录 Spring IoC 的源码解析

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

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


    最新博客更多


    线程的五种状态

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

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

    其中罗列了 6 种状态:

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

    具体代码如下:

    public enum State {
       ...
    

    解决mysql差8小时的问题

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

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

    select now();
    

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

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

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


    线程同步的三种方式

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

    实现线程同步的三种方式

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

    例如:

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

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

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

    docker

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

    官网

    镜像仓库

    • mac/windows

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

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


    maven配置文件setting.xml

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

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

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

    idea2020.1永久破解

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

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


    Dijkstra算法求两点最短路径

    🕑 2020-11   ⏳ 2020-11-07   👀 181   🔖  算法 
    public class Test {
        /**
         * 采用Dijkstra算法:
         * 从起始点开始遍历,将遍历后的最小值确定下来,然后将剩下的节点继续遍历,每次都更新最小值
         * 时间复杂度为O(n^2),基本满足日常使用,如还需优化,可采用邻接表+优先队列进行优化
         * @param n 定点个数
         * @param edges ...
    

    Floyd算法求两点最短路径

    🕑 2020-11   ⏳ 2020-11-07   👀 186   🔖  算法 

    代码如下:

    public class Test {
        /**
         * 采用Floyd算法(动态规划思想):两点A,B之间的最短距离可以看成A->K和K->B的各自最短距离之和
         * 时间复杂度为O(n^3),复杂度较高,但是实现简单,核心代码只有几行
         * @param n 定点个数
         * @param edges 二维数组,边的权重
        ...
    

    Spring事务

    🕑 2020-11   ⏳ 2020-11-06   👀 220   🔖 

    标注有@Transactional 注解的类,会在 Spring 创建 bean 时通过 cglib 进行增强,生成代理类对对应的进行代理

    事务注解会通过 CglibAopProxy.DynamicAdvisedInterceptor

    public Object intercept(Object proxy, Method...
    

    mac安装软件问题

    🕑 2020-09   ⏳ 2020-09-14   👀 304   🔖 

    解决 mac 不能打开从其他网站上下载安装的软件:

    Mac 打开应用提示已损坏怎么办 Mac 安装软件时提示已损坏怎么办

    • 在终端执行以下命令即可
      sudo spctl --master-disable
      

    如果还是不行,则尝试一下方式:

    • 打开终端,输入以下命令
      sudo xattr -r -d com.apple.quaran...
      

    配置mac环境

    🕑 2020-09   ⏳ 2020-09-14   👀 208   🔖 
    1. 在用户目录下创建 .zshrc 文件
    2. 输入配置的别名内容
      alias aliyun-5m="ssh root@xxx.xxx.xxx.xxx";
      
    3. 使配置文件生效
      source ~/.zshrc
      

    vscode:打开软件,快捷键 Command+Shift+P...


    重置阿里云镜像后的操作

    🕑 2020-09   ⏳ 2020-09-14   👀 249   🔖 

    先在本地电脑生成密钥

    ssh-keygen -t rsa -C "youremail@qq.com"
    

    首先先将 SSH 密钥保存到服务器上

    先删除自己电脑本身的记录

    vim /Users/yingjie.lu/.ssh/known_hosts
    

    然后执行以下命令

    ssh-copy-id -i ~/.ssh/...
    

    文件列表

    🕑 2020-08   ⏳ 2020-09-09   👀 262   🔖 

    ...


    文件操作

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

    统一异常处理

    🕑 2020-09   ⏳ 2020-09-05   👀 273   🔖 

    在 SpringBoot 项目中,可以通过注解 @RestControllerAdvice@ExceptionHandler 来编写异常的统一处理

    有了异常统一处理之后,我们的代码就会变得更加的简洁和易维护

    创建异常统一处理类 GlobalExceptionHandler,代码如下:

    @Slf4j
    @RestContr...
    

    ICP证 : 浙ICP备18021271号