摘要:
目录 一.ThreadLocal介绍 二.使用场景1——数据库事务问题 2.1 问题背景 2.2 方案1-修改接口传参 2.3 方案2-使用ThreadLocal 三.使用场景2——日志追踪问题 四.其他使用场景 一.ThreadLocal介绍 我们知道,变量从作用域范围进行分类,可以分为“全局变量 阅读全文
摘要:
前言 最近在看JDK源码,发现好多地方都用到了AtomicInteger原子类,所以打算将AtmoicInteger的源码过一遍。 本文将分为两部分,一部分是简单介绍AtmoicInteger的用法,第二部分是AtomicInteger的源码,我在源码中做了比较详细的注释。 简单使用AtomicIn 阅读全文
摘要:
目录 1.HashMap存储结构图 2.存储的value是Node类型 3.hash计算以及确定下标 4.重要的常量 5.put操作 6.get操作 7.remove操作 8.链表转红黑树 9.resize扩容 10.resize时红黑树拆分 11.快速失败 12.HashMap为什么是非线程安全的 阅读全文
摘要:
一.问题背景 如果做过参加过面试或者做过一些面试题,应该知道特别经典的top K问题,比如“找出无序数组中的最大或者最小K个数”: 这种题可以排序后再输出最大或者最小的几个。但是不论是使用快排还是归并排序,毫无疑问,空间和时间复杂度的开销都是不满足面试官的要求的;而使用“堆”这种数据结构就比较好的解 阅读全文
摘要:
一.介绍 分布式锁,或者称为“全局锁”,在分布式环境中,保证锁只能被一个对象(或者成为“事务”)获取,经常出现在“避免数据重复处理”、“接口幂等”的场景。 下面介绍了Redis中两种分布式锁的实现方式。 二.setnx + expire组合 2.1命令介绍 使用setnx和expire命令组合实现, 阅读全文
摘要:
一.所需依赖介绍 Dubbo-admin是Dubbo RPC框架的“管理端”,可以对注册的服务(provider)和服务调用方(comsumer)进行服务治理,包括路由、监控、配置等功能; Dubbo一般都是使用zookeeper来进行管理服务注册,而dubbo-admin查看哪些注册了哪些服务,也 阅读全文
摘要:
一. 介绍 平时工作中可能会碰到排查多线程的bug,而在排查的时候,如果线程(单个线程或者是线程池的线程)没有一个比较明确的名称,那么在排查的时候就比较头疼,因为排查问题首先需要找出“问题线程”,如果连“问题线程”都找不到,就很难找出问题原因,本文就针对多线程中涉及到的线程池、线程组、线程名称,介绍 阅读全文
摘要:
下面的截图来自《疯狂Java讲义 第三版》 阅读全文
摘要:
基础信息介绍 测试库:test; 测试表:user; user表定义: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(30) NOT NULL, `age` int(11) NOT NULL, `gen 阅读全文
摘要:
参考: https://juejin.im/entry/591ea2a244d904006ca6db0a https://www.javazhiyin.com/23010.html https://www.cnblogs.com/wxgblogs/p/6639272.html 关于全局ID的生成,可 阅读全文