Netty

领域驱动设计

流程引擎和权限设计 流程引擎 Camunda Flowable Activity 权限设计 操作权 数据权

搜索引擎 Elasticsearch

JVM 一、Java 内存区域 运行时数据区域 线程私有的: 程序计数器:占用一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一

MySQL 一、一条 SQL 查询语句是如何执行的 MySQL 可以分为 Server 层和存储引擎层: Server 层包括连接器、分析器、优化器、执行器等,涵盖了 MySQL 大多数核心服务

SpringCloud 微服务中各个组件和常见实现: 注册中心:用于服务的注册与发现,管理微服务的地址信息。 Netflix:Eureka、Consul Alibaba:Nacos 配置中心

消息队列 一、RocketMQ RocketMQ 消息模型 Message:传输的消息 messageId messageKey Topic:消息的归类,消息的第一级类型。 Topic

Redis Redis 内部数据结构 一、dict Redis 的 database 中所有 key 到 value 的映射就是使用一个 dict 维护的。在 Redis 中,dict 是基于哈希

Spring Spring Framework Spring 基础 Spring 5.x 包含的模块: Core Container:Spring 核心模块,主要提供 IoC 依赖注入功能的支持

Java 内存模型 volatile 关键字通过 JMM 内存屏障和 happened-before 原则实现线程之间的可见性、有序性,底层调用了 lock 前缀指令和硬件层面的内存屏障: sfe

ArrayList 底层基于数组实现 add 和 move 主要通过 System.arrayCopy 方法实现数组中元素的变更。 set 和 get 基于数组实现随机位置访问 ensureCapa

剑指 Offer 32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7],

剑指 Offer 68 - II. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共

剑指 Offer 67. 把字符串转换成整数 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。   首先,该函数会根据需要丢弃无用的开头空格字符

剑指 Offer 65. 不用加减乘除做加法 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a = 1, b = 1 输出: 2

剑指 Offer 66. 构建乘积数组 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]

剑指 Offer 64. 求1+2+…+n 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1:

剑指 Offer 55 - II. 平衡二叉树 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉

剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树

剑指 Offer 54. 二叉搜索树的第k大节点 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 /

剑指 Offer 53 - II. 0~n-1中缺失的数字 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在

剑指 Offer 53 - I. 在排序数组中查找数字 I 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2