11 2020 档案
摘要:此文是对http://zhangtielei.com/posts/blog-redlock-reasoning-part2.html文章的个人归纳,如有问题请联系删除 什么是redlock redlock是redis给出的分布式锁的实现规范 先说说基于单节点redis实现的分布式锁 SET reso
阅读全文
摘要:1. 是先删缓存还是先删数据库 先删缓存 再删数据库,即使删除数据库出现问题,也只是多一些请求落到数据库,并不影响业务很多 先删除数据库再删除缓存的话,如果删除数据库成功,删除缓存失败 需要重试 重试失败则存入队列处理 2. 多线程问题 请求A更新数据删除缓存 请求B查询缓存不存在,去数据库查询出旧
阅读全文
摘要:使用的2018版本的idea build报错 然后改用2020的没有问题 1. 安装jdk11版本 2. 安装gradle5.6.3 3.github clone spring-framework 到本地 4.首先把build.gradle 添加阿里镜像以免长时间下载依赖包 1 allproject
阅读全文
摘要:threadlocal定义:每个线程有自己的数据 其他的线程拿不到 每个线程本身有一个threadlocals属性(类型是ThreadLocalMap),map中存储的entry的key是当前的threadlocal对象,value是自定义的值 ThreadLocalMap中的静态内部类Entry结
阅读全文
摘要:浅拷贝 A 复制了B B改变A也跟着改变(A对象中引用数据指向了B对象的地址,没有重新创建引用的对象) 深拷贝 A复制了B B改变A不改变(A新开辟了一块内存地址 并且指向那块地址) 浅拷贝与深拷贝的根本区别是 是否拷贝了对象的实体 而不是引用
阅读全文
摘要:volatile的底层原理是内存屏障 对volatile修饰的变量的写指令后会加入写屏障 对volatile修饰的变量的读指令前会加入读屏障 1. volatile如何保证可见性 写屏障保证在该屏障之前的写操作会同步到主内存 读屏障保证在该屏障之后的所有读操作都从主内存取最新数据 2.volatil
阅读全文
摘要:####monitor(监视器/管程) java对象分三部分, 对象头 数据实例 填充 对象头分为 普通对象- markword(32bit)/klass word(32bit)(指向对应的class对象) 数组对象-多一个array length(32bit)数组长度 markword的结构 ha
阅读全文
摘要:服务端处理客户端的查询请求大致需要三个步骤: 连接管理 客户端连接服务端时,服务端会为其分配一个线程,客户端断开连接不会回收线程(避免频繁创建销毁的性能问题),服务端一直等待客户端发来消息(文本消息) 解析与优化 查询缓存(mysql8.0之后删除了查询缓存) mysql处理查询请求的时候会把结果缓
阅读全文
摘要:####HashMap源码问题解析 问: 说一说对hash的理解 答: hash是对任意长度的输入输出为相同长度的输出 问: hash算法的问题 答: hash冲突问题 问: hash冲突是否可以避免 答: 不可以避免,只能尽量规避 问: 优秀的hash算法有什么特性 答: 1. 任何微小的变化ha
阅读全文