Geooo Blog

「离开世界之前 一切都是过程」

Spring源码解析


ThreadLocal和ThreadLocalMap原理

https://zhuanlan.zhihu.com/p/158033837 先mark一下,后面再写笔记,最主要理解ThreadLocal产生内存泄露的原因 ThreadLocalMap 是线程私有的,生命周期与线程相同 ThreadLocal对应的value是存在ThreadLocalMap的value中 ThreadLocalMap的key是ThreadLocal本身,...

leetcode138 复制带随机指针的链表

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向...

MySQL WAL策略和checkpoint

InnoDB 体系架构 InnoDB 关键特性 在说 WAL 之前,有必要简单介绍下 InnoDB 存储引擎的体系架构,方便我们理解下文,并且 redo log 也是 InnoDB 存储引擎所特有的。 如下图,InnoDB 存储引擎由内存池和一些后台线程组成: 内存池 buffer pool InnoDB 存储引擎是基于磁盘存储的,并将其的记录按照页的方式进行管理,因此可以将其视...

JVM面试题汇总

1.什么是JVM运行时数据区? JVM运行时数据区分为五个部分:程序计数器,Java虚拟机栈,本地方法栈,堆,方法区。 程序计数器:该部分是一个很小的内存空间,线程私有,存放的是该线程字节码运行行号地址。(CPU多核,线程重新获取时间片时则可在这里读取线程运行到哪) Java虚拟机栈:该部分是线程私有的,Java方法调用的时候会产生个栈帧存放在这里,栈帧里包括:局部变量表,操作...

Spring面试题

有用过单例模式吗?Singleton的有几种实现方式? 1) 饿汉式:在类加载阶段就把这个单例的对象new出来,不需要考虑线程安全问题,但浪费内存,不需要用上这个对象的时候也需要分配内存。 2) 懒汉式:在有需要到这个单例对象的时候才把对象new出来,但是此时需要考虑线程安全的问题,因此需要用 双重校验锁 进行验证 3) 静态内部类:这种方...

计算机网络

TCP 断开连接要几次挥手? 过程是怎么样的? 为什么要四次挥手? Time wait 发生在哪里? 21. 如果有大量的 TCP 处于 time wait 状态会产生什么问题? 怎么解决? 答: ① 因为TCP是半关闭的(一方关闭连接的同时,另一方还可以继续放松数据)。所以需要四次挥手。客户端和服务端都可以主动发起关闭请求。 场景:当服务端处理完业务数据后主动关闭socket连接请求...

SpringCloud知识


MySQL基础04-主从复制 & 读写分离

主从复制 主要涉及三个线程 1) binlog线程,在主库中将数据库的操作通过 二阶段写 写入binlog中 2) I/O线程,读取主库中的binlog复制到从库的 中继日志(Relay log) 里面 3) SQL线程:读取从库的 Relay log,解析出主服务器中已经执行的数据更改操作,然后在从服务器中重放 读写分离 主服务器主要负责写操作和即时性较高的读操作,...

MySQL基础02-MySQL并发事务 & 锁

事务特性(ACID) 原子性 Atomicity 一个事务的一些列操作都是原子性,要不都执行,要不都回滚。 一致性 Consistency 事务要保证数据库数据的完整性和业务数据的一致性,事务成功提交时则整体数据修改,事务错误则回滚到数据原来的状态。 隔离性 Isolation 事务与事务之间都是相互独立互不影响的,多个事务操作一个对象时会以串行等待的方式保证事务之间是隔离的。 持久...