02 2024 档案

摘要:DDD分层架构 将以前的业务逻辑层(BLL)拆分成了领域层和应用层。 阅读全文
posted @ 2024-02-27 15:49 予真 阅读(15) 评论(0) 推荐(0) 编辑
摘要:void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 }} result = [] d 阅读全文
posted @ 2024-02-22 16:20 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例 1: 输入:root = [10,5,-3,3,2,n 阅读全文
posted @ 2024-02-21 19:41 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1,6,2 阅读全文
posted @ 2024-02-21 19:40 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:在 Java 中,MySQL 的 BIGINT 类型对应的是 long 数据类型。 @EqualsAndHashCode(callSuper = true) 这段代码是用于在 Java 中生成 equals 和 hashCode 方法,并且会调用父类的 equals 和 hashCode 方法。 C 阅读全文
posted @ 2024-02-21 09:02 予真 阅读(4) 评论(0) 推荐(0) 编辑
摘要:v> 数据一致性算法 3.1 Paxos算法 兰伯特提出的 Paxos 算法包含 2 个部分: 一个是 Basic Paxos 算法,描述的是多节点之间如何就某个值(提案 Value)达成共识; 另一个是 Multi-Paxos 思想,描述的是执行多个 Basic Paxos 实例,就一系列值达成共 阅读全文
posted @ 2024-02-21 07:54 予真 阅读(15) 评论(0) 推荐(0) 编辑
摘要:v> 2.1 强一致性模型 v> 在DTP模型中定义了3个核心组件: AP(Application Program)应用程序,AP组件定义了分布式事务(也即全局事务)的边界(即事务的开始和结 束)以及组成事务的具体操作(Actions); RM(Resource Managers)资源管理器,RM指 阅读全文
posted @ 2024-02-20 21:39 予真 阅读(17) 评论(0) 推荐(0) 编辑
摘要:java.lang.ClassNotFoundException 表示在运行时找不到指定的类。在这种情况下,缺少了 com.qcloud.cos.auth 包中的类。请确保项目中包含了腾讯云 COS SDK 相关的依赖,并且这些依赖能够正确加载。检查项目的依赖配置,确保包含了腾讯云 COS SDK  阅读全文
posted @ 2024-02-20 17:29 予真 阅读(140) 评论(0) 推荐(0) 编辑
摘要:可以使用 Optional 来包装可能为 null 的值,然后通过一系列方法来处理这个值,例如 isPresent() 检查是否有值,orElse() 获取值或默认值,map() 对值进行转换等。这样可以更安全地处理可能为 null 的情况。 import java.util.Optional;pu 阅读全文
posted @ 2024-02-20 08:32 予真 阅读(19) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { 阅读全文
posted @ 2024-02-18 07:51 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { 阅读全文
posted @ 2024-02-17 20:46 予真 阅读(6) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { 阅读全文
posted @ 2024-02-17 20:25 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 阅读全文
posted @ 2024-02-17 19:31 予真 阅读(11) 评论(0) 推荐(0) 编辑
摘要:`synchronized`和`ReentrantLock`都是Java中用于实现同步的机制,但它们之间有一些区别:1. **可重入性**: - `synchronized`是Java语言内置的关键字,具有可重入性,同一个线程可以多次获取同一个锁而不会造成死锁。 - `ReentrantLock`是 阅读全文
posted @ 2024-02-17 14:59 予真 阅读(19) 评论(0) 推荐(0) 编辑
摘要:CopyOnWriteArraySet是Java中的线程安全集合类,它是CopyOnWriteArrayList的Set版本。它通过使用"写时复制"(Copy-On-Write)策略来实现线程安全。特点: 线程安全:CopyOnWriteArraySet是线程安全的,可以在多线程环境下安全地进行读取 阅读全文
posted @ 2024-02-17 14:54 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:长连接 阅读全文
posted @ 2024-02-17 14:22 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:为了解决这个情况,在ORDER BY后面使用了两个排序条件来解决这个问题,如下: SELECT `post_title`, `post_date` FROM post WHERE `post_status` = 'publish' ORDER BY view_count desc, ID asc L 阅读全文
posted @ 2024-02-17 10:31 予真 阅读(21) 评论(0) 推荐(0) 编辑
摘要:class Solution { List<List<Integer>> result = new ArrayList<>(); public List<List<Integer>> levelOrder(TreeNode root) { if (root == null) { return res 阅读全文
posted @ 2024-02-16 21:23 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:class Solution { // 二叉树直径 其实就是根到左子树最深+根到右子树最深 int diameter; public int diameterOfBinaryTree(TreeNode root) { calculateDepth(root); return diameter; } 阅读全文
posted @ 2024-02-16 20:46 予真 阅读(6) 评论(0) 推荐(0) 编辑
摘要:class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } return isMirror(root.left, root.right); } public boole 阅读全文
posted @ 2024-02-16 19:58 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:参考链接: https://blog.csdn.net/qq_40991313/article/details/126801025?spm=1001.2014.3001.5501 3.5.3.总结描述下Direct交换机与Fanout交换机的差异? Fanout交换机将消息路由给每一个与之绑定的队列 阅读全文
posted @ 2024-02-16 17:27 予真 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-16 16:50 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:// 使用匿名内部类实现接口Runnable myRunnable = new Runnable() { @Override public void run() { System.out.println("Executing myRunnable"); }};// 使用匿名内部类继承抽象类Abstr 阅读全文
posted @ 2024-02-16 11:54 予真 阅读(9) 评论(0) 推荐(0) 编辑
摘要:@Overridepublic List<CategoryEntity> listWithTree() { //1、查询出所有分类 List<CategoryEntity> entities = super.baseMapper.selectList(null); //2、组装成父子的树形结构 // 阅读全文
posted @ 2024-02-15 20:15 予真 阅读(23) 评论(0) 推荐(0) 编辑
摘要:经过多方博客,文章参考,枚举是实现单例模式的最好方式 public enum Singleton { INSTANCE; public void businessMethod() { System.out.println("我是一个单例!"); } } public class MainClass 阅读全文
posted @ 2024-02-14 20:07 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:PriorityBlockingQueue(优先阻塞队列)是Java并发包java.util.concurrent下面的一个工具类,它除了具有阻塞队列的功能外还具有以下特点: 对队列中的元素进行排序,如果未指定比较器,插入队列的元素必须实现Comparable接口 内部基于数组实现的最小二叉堆算法 阅读全文
posted @ 2024-02-13 23:53 予真 阅读(22) 评论(0) 推荐(0) 编辑
摘要:初始化一个线程池,就是初始化一条工厂流水线;或者新建一个公司; 开始创业 核心线程个数就像是公司元老个数; 最大线程个数就像公司总相关员工; 任务队列就像是公司项目排期表; treadFactory 创建线程的工厂 自定义员工招聘&入职流程 拒绝策略 任务队列满,并且线程数达到最大线程数,就像项目排 阅读全文
posted @ 2024-02-13 21:49 予真 阅读(73) 评论(0) 推荐(0) 编辑
摘要:参考链接 https://www.cnblogs.com/CodeBlogMan/p/18005657 三、类属性转换 在实际 Java 开发中,关于 VO、Entity、DTO 等对象属性之间的赋值是我们经常遇见的,最简单使用 @Data 去逐个 .set() 或者 @Builder 链式 .bu 阅读全文
posted @ 2024-02-13 16:38 予真 阅读(23) 评论(0) 推荐(0) 编辑
摘要:请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否 阅读全文
posted @ 2024-02-13 13:20 予真 阅读(8) 评论(0) 推荐(0) 编辑
摘要:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[]栈 /** 阅读全文
posted @ 2024-02-13 10:57 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:3 示例 2: 输入:root = [1,null,2] 输出:2 /** * Definitio 阅读全文
posted @ 2024-02-12 20:13 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val 阅读全文
posted @ 2024-02-12 19:50 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val 阅读全文
posted @ 2024-02-12 15:58 予真 阅读(6) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 递归 /** * Definition for a 阅读全文
posted @ 2024-02-12 15:41 予真 阅读(7) 评论(0) 推荐(0) 编辑
摘要:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1] 输 阅读全文
posted @ 2024-02-11 20:36 予真 阅读(4) 评论(0) 推荐(0) 编辑
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce" 阅读全文
posted @ 2024-02-11 19:54 予真 阅读(4) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2 阅读全文
posted @ 2024-02-11 11:13 予真 阅读(4) 评论(0) 推荐(0) 编辑
摘要:为什么要使用线程池 不使用线程池会怎么样?当需要多线程并发执行任务时,只能不断的通过new Thread创建线程,每创建一个线程都需要在堆上分配内存空间,同时需要分配虚拟机栈、本地方法栈、程序计数器等线程私有的内存空间,当这个线程对象被可达性分析算法标记为不可用时被GC回收,这样频繁的创建和回收需要 阅读全文
posted @ 2024-02-10 11:22 予真 阅读(142) 评论(0) 推荐(0) 编辑
摘要:递归归并排序,先找到终点,再合并两个链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head = [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3: 输 阅读全文
posted @ 2024-02-09 18:55 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head = [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中间结点,值为 3 。 示例 2: 输入:head = [1,2,3,4,5,6] 输出:[4, 阅读全文
posted @ 2024-02-09 15:59 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:给你两个按 非递减顺序 排列的整数数组 nums1和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中 阅读全文
posted @ 2024-02-08 22:42 予真 阅读(39) 评论(0) 推荐(0) 编辑
摘要:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3: 输入:l1 = [] 阅读全文
posted @ 2024-02-08 19:35 予真 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-08 18:53 予真 阅读(2) 评论(0) 推荐(0) 编辑
摘要:private List<Department> getDeptTree() { // 1. 一次性查询出所有数据,放到内存中,可以使用map - 做缓存用 // 2. 从所有数据中找出第一层级/顶级部门:这就是我们需要返回的数据 // 3. 遍历所有部门只要不是第一层级的,找自己的上级,并将自己放 阅读全文
posted @ 2024-02-08 17:34 予真 阅读(123) 评论(0) 推荐(0) 编辑
摘要:查出除根结点外所有经过筛选条件的数据遍历所有数据如果当前节点的@Override public List<Type> getTypeTree(TypeParamsDto typeParamsDto) { // 从二级节点数据查起 QueryWrapper queryWrapper = QueryWr 阅读全文
posted @ 2024-02-08 16:12 予真 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一旦Controller控制器类向SpringMVC 框架进行了注册,SpringMVC 框架就会管理Controller对象的生命周期。 默认情况下,Controller对象的存在范围为singleton(单例),即在整个应用程序的生命周期内,一个Controller类只有一个实例。 single 阅读全文
posted @ 2024-02-08 15:54 予真 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-08 11:47 予真 阅读(2) 评论(0) 推荐(0) 编辑
摘要:用户行为日志的内容,主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。 目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点等。 代码埋点是通过调用埋点SDK函数,在需要埋点的业务逻辑功能位置 阅读全文
posted @ 2024-02-08 09:51 予真 阅读(92) 评论(0) 推荐(0) 编辑
摘要:大数据学习路线 一、大数据处理流程 1.1 数据收集 1.2 数据存储 1.3 数据分析 1.4 数据应用 1.5 其他框架 二、学习路线 2.1 语言基础 2.2 Linux 基础 2.3 构建工具 2.4 框架学习 三、开发工具 四、结语 一、大数据处理流程 上图是一个简化的大数据处理流程图,大 阅读全文
posted @ 2024-02-06 20:52 予真 阅读(29) 评论(0) 推荐(0) 编辑
摘要:类加载子系统, 加载 链接(验证 准备 解析) 初始化 验证 .class 文件格式是否正确 准备: 准备static变量信息 为static变量初始化 并赋0值 解析:将符号引用解析为直接引用,比如对象之间通过引用,变成直接引用对象的引用地址,类似于从使用相对路径到使用绝对路径。 类加载子系统类加 阅读全文
posted @ 2024-02-06 14:10 予真 阅读(8) 评论(0) 推荐(0) 编辑
摘要:功能对比 SentinelHystrixresilience4j 隔离策略 信号量隔离(并发线程数限流) 线程池隔离/信号量隔离 信号量隔离 熔断降级策略 基于响应时间、异常比率、异常数 基于异常比率 基于异常比率、响应时间 实时统计实现 滑动窗口(LeapArray) 滑动窗口(基于 RxJava 阅读全文
posted @ 2024-02-05 14:39 予真 阅读(227) 评论(0) 推荐(0) 编辑
摘要:覆盖索引 覆盖索引是指在数据库中创建的一种特殊索引,它包含了查询语句中所需的所有字段 覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖。理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟 阅读全文
posted @ 2024-02-05 14:18 予真 阅读(118) 评论(0) 推荐(0) 编辑
摘要:Mysql-Explain(五):输出列-type简介type 访问类型排序,显示查询使用了何种类型,从最好到最差依次是:system>const>eq_ref>ref>range>index>ALL system 表只有一行记录,这是const类型的特例,这个平时很少出现const 表最多有一个匹 阅读全文
posted @ 2024-02-05 14:11 予真 阅读(62) 评论(0) 推荐(0) 编辑
摘要:Mysql-Explain(七):输出列-ref、rows简介ref 哪些列或者常量被用做索引列上的值rows 根据表的统计信息和索引的使用情况,大致估算查询结果所需要读取记录的行数演示 ref:哪些列或者常量被用做索引列上的值 school_id =1,1是常量,ref=const 上面例子ref 阅读全文
posted @ 2024-02-05 14:08 予真 阅读(58) 评论(0) 推荐(0) 编辑
摘要:/** * 订单状态【0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单】 */ CREATE_NEW(0,"待付款"), PAYED(1,"已付款"), SENDED(2,"已发货"), RECIEVED(3,"已完成"), CANCLED(4,"已取消"), S 阅读全文
posted @ 2024-02-05 13:31 予真 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1、定时关单1.0、业务流程 创建交换机、队列以及之间的绑定 在订单创建成功时向MQ中 延时队列发送消息 在订单的关闭之后时向MQ发送消息 监听 order.release.order.queue 队列,释放订单服务 关闭订单 监听 stock.release.stock.queue 队列,解锁库存 阅读全文
posted @ 2024-02-05 11:59 予真 阅读(36) 评论(0) 推荐(0) 编辑
摘要:加分布式锁 其实前面介绍过的加唯一索引或者加防重表,本质是使用了数据库的分布式锁,也属于分布式锁的一种。但由于数据库分布式锁的性能不太好,我们可以改用:redis或zookeeper。 鉴于现在很多公司分布式配置中心改用apollo或nacos,已经很少用zookeeper了,我们以redis为例介 阅读全文
posted @ 2024-02-04 15:53 予真 阅读(42) 评论(0) 推荐(0) 编辑
摘要:什么是Redis? Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。 传统数据库遵循 ACID 规 阅读全文
posted @ 2024-02-04 15:25 予真 阅读(7) 评论(0) 推荐(0) 编辑
摘要:基于binlog+Canal+Redis方案是一种解决分布式缓存和数据库之间数据一致性问题的方法,它通过MySQL的binlog和Canal机制,实现数据同步到Redis缓存,以保证数据一致性。 . MySQL主备复制原理 2. MySQL中binlog配置 3. Canal工作原理、安装、配置、使 阅读全文
posted @ 2024-02-04 15:02 予真 阅读(917) 评论(0) 推荐(0) 编辑
摘要:放入缓存中的数据应该指定过期时间,为什么呢, 因为过期时间可以确保缓存中的数据不会永久存在,从而避免缓存中出现过时或无效的数据。指定过期时间有以下几个重要原因:1. 数据更新和一致性:当数据发生变化时,缓存中的数据可能会变得过时。 如果不过时,新的数据就更新不了,就失去了缓存的意义; 通过设置过期时 阅读全文
posted @ 2024-02-04 14:41 予真 阅读(7) 评论(0) 推荐(0) 编辑
摘要:什么是大key 很多朋友肯定在想redis的key能有多大呀? 这里就有个误区了,所谓的大key问题是某个key的value比较大,所以本质上是大value问题。 “ 这样就对上了,key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。 设想一种场景: “ 在线音乐 阅读全文
posted @ 2024-02-04 13:48 予真 阅读(26) 评论(0) 推荐(0) 编辑
摘要:1. 什么是I/O在计算机操作系统中,所谓的I/O就是输入(Input)和输出(Output),也可以理解为读(Read)和写(Write),针对不同的对象,I/O模式可以划分为磁盘IO模型和网络IO模型。IO操作会涉及到用户空间和内核空间的转换,先来理解以下规则: 内存空间分为用户空间和内核空间, 阅读全文
posted @ 2024-02-04 13:48 予真 阅读(1377) 评论(0) 推荐(1) 编辑
摘要:2.Redis 单线程含义 Redis 的网络 IO 和键值对读写是由一个线程来完成的 Redis 其他功能,如持久化、异步删除、集群数据同步等其实都是由额外线程执行 3.Redis单线程设计 3.1 多线程需要解决的问题 4.多路复用机制 Redis 多路复用机制在网络 IO 操作中能并发处理大量 阅读全文
posted @ 2024-02-04 10:38 予真 阅读(7) 评论(0) 推荐(0) 编辑
摘要:数据库有json类型时,Java代码最好直接用JSON类去标识该字段, 这样返回数据的时候可以既能返回jsonobject,又能返回jsonarray 当然 以上都属于用的阿里fastjson。 阅读全文
posted @ 2024-02-04 09:36 予真 阅读(10) 评论(0) 推荐(0) 编辑
摘要:缓存穿透,缓存雪崩,缓存击穿,说白了都是缓存失效,最后还是要去数据库查。 虽然我不知道具体哪一个是,但是我知道 有一个是查不到null值, 有一个是批量过期, 有一个是高并发访问一个热点数据,但是他恰好失效了。 阅读全文
posted @ 2024-02-03 21:15 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:线程是Java实现多任务的基础,Thread对象代表一个线程,我们可以在代码中调用Thread.currentThread()获取当前线程。例如,打印日志时,可以同时打印出当前线程的名字: 对于多任务,Java标准库提供的线程池可以方便地执行这些任务,同时复用线程。Web应用程序就是典型的多任务应用 阅读全文
posted @ 2024-02-02 08:54 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要:减小锁粒度:将Node链表的头节点作为锁,若在默认大小16情况下,将有16把锁,大大减小了锁竞争(上下文切换),就像开头所说,将串行的部分最大化缩小,在理想情况下线程的put操作都为并行操作。同时直接锁住头节点,保证了线程安全Unsafe的getObjectVolatile方法:此方法确保获取到的值 阅读全文
posted @ 2024-02-01 16:52 予真 阅读(36) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap是怎么做到线程安全的? get方法如何线程安全地获取key、value? put方法如何线程安全地设置key、value? size方法如果线程安全地获取容器容量? 底层数据结构扩容时如果保证线程安全? 初始化数据结构时如果保证线程安全?ConcurrentHash 阅读全文
posted @ 2024-02-01 16:49 予真 阅读(17) 评论(0) 推荐(0) 编辑
摘要:但是又为何需要学习ConcurrentHashMap?用不就完事了?我认为学习其源码有两个好处: 更灵活的运用ConcurrentHashMap 欣赏并发编程大师Doug Lea的作品,源码中有很多值得我们学习的并发思想,要意识到,线程安全不仅仅只是加锁ConcurrentHashMap是怎么做到线 阅读全文
posted @ 2024-02-01 16:40 予真 阅读(62) 评论(0) 推荐(0) 编辑
摘要:synchronized锁的都是对象,可以用在方法上,或者对象上。 阅读全文
posted @ 2024-02-01 16:28 予真 阅读(2) 评论(0) 推荐(0) 编辑
摘要:而在重写equals()方法时,总要重写hashCode()方法,原因总结下有以下两点:1.使用hashcode方法提前校验,可以避免每一次比对都调用equals方法,提高效率2.保证是同一个对象,如果重写了equals方法,而没有重写hashcode方法,会出现equals相等的对象,hashco 阅读全文
posted @ 2024-02-01 15:19 予真 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-01 15:01 予真 阅读(16) 评论(0) 推荐(0) 编辑
摘要:@Repeatable 是 Java 8 引入的一个元注解,用于标注某个注解可以在同一个声明上多次使用。@Repeatable 注解的值是一个容器注解,该容器注解内部定义了一个注解数组,用于存放多次使用的注解。@Repeatable 是 Java 8 引入的一个元注解,它允许同一个注解在同一声明上被 阅读全文
posted @ 2024-02-01 14:16 予真 阅读(122) 评论(0) 推荐(0) 编辑
摘要:Hive、Doris(之前称为 Apache Doris 或 Pala),和 Impala 是三种常用于大数据和分析领域的技术,它们各自有不同的特点和用途: Hive - 概述:Hive 是一个建立在 Hadoop 上的数据仓库工具,用于数据摘要、查询和分析。它将 SQL 查询转换为 MapRedu 阅读全文
posted @ 2024-02-01 13:55 予真 阅读(212) 评论(0) 推荐(0) 编辑
摘要:今天主要从以下几个方面来介绍一下@ComponentScan注解: @ComponentScan注解是什么 @ComponentScan注解的详细使用 1,@ComponentScan注解是什么 其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spr 阅读全文
posted @ 2024-02-01 13:53 予真 阅读(53) 评论(0) 推荐(0) 编辑
摘要:hashCode 方法是 java.lang.Object 类的一个方法。在 Java 中,所有的类都直接或间接地继承自 Object 类,因此每个 Java 对象都继承了 hashCode 方法。这个方法用于返回对象的哈希码,是 Java 中实现哈希表的基础,如 HashMap、HashSet 等 阅读全文
posted @ 2024-02-01 11:53 予真 阅读(13) 评论(0) 推荐(0) 编辑
摘要:自动配置原理 (1)SpringBoot在SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件载入Spring容器中,进行自动配置。 (2) getSpringFactoriesInstances->loadFactoryNames 阅读全文
posted @ 2024-02-01 11:13 予真 阅读(15) 评论(0) 推荐(0) 编辑
摘要:(1)问:这里只讲一点,假如不需要SpringBoot自动配置,想关闭某一项自动配置,又该如何设置?(2)比如:此时你需要做一个短信验证码发送的微服务,但因为项目架构,不得已自动配置了数据源,此时需要去进行取消。(3)解决:使用主动类上@SpringBootApplication下的exclude参 阅读全文
posted @ 2024-02-01 11:07 予真 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-01 10:54 予真 阅读(6) 评论(0) 推荐(0) 编辑
摘要:@Import 注解是 Spring Framework 中的一个注解,用于在配置类中引入其他配置类或者普通的 Java 类。通过 @Import 注解,你可以将其他配置类或者普通类引入到当前的配置类中,从而实现配置的组合和模块化。 @Configuration @Import(OtherConfi 阅读全文
posted @ 2024-02-01 10:54 予真 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-01 10:40 予真 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2024-02-01 10:35 予真 阅读(3) 评论(0) 推荐(0) 编辑
摘要:META-INF/spring 目录通常用于存放 Spring 框架相关的配置文件。这个目录位于 Java 或 Spring 应用的类路径(classpath)中,使得 Spring 框架能够在应用启动时自动加载这些配置文件。在 Spring 应用中,META-INF/spring 目录可能包含以下 阅读全文
posted @ 2024-02-01 10:31 予真 阅读(1218) 评论(0) 推荐(0) 编辑
摘要:@bean里面没有component @Bean 和 @Component 都是 Spring 框架中用于定义和注册 bean 的注解,但它们的使用场景和方式有所不同。 @Bean - @Bean 注解用在方法上,通常在配置类(带有 @Configuration 注解的类)中使用。- 它表示通过方法 阅读全文
posted @ 2024-02-01 10:18 予真 阅读(202) 评论(0) 推荐(0) 编辑
摘要:@controller @service @repository 下面都是@component注解 boolean proxyBeanMethods() default true; proxyBeanMethods 是 Spring Boot 中 @Configuration 注解的一个属性,用于控 阅读全文
posted @ 2024-02-01 10:16 予真 阅读(54) 评论(0) 推荐(0) 编辑
摘要:自动装配的流程(原理) 参考链接:https://blog.csdn.net/weixin_45764765/article/details/1102505311、main方法中SpringApplication.run(HelloBoot.class,args)的执行流程中有refreshCont 阅读全文
posted @ 2024-02-01 10:05 予真 阅读(208) 评论(0) 推荐(0) 编辑
摘要:是的,在 Java 的 Stream API 中,你可以在 filter 和 forEach 操作之间再次使用 filter。实际上,你可以根据需要链式调用多个中间操作(如 filter、map 等),但请注意,forEach 是一个终端操作,它会消费流并产生一个非流的结果。一旦调用了 forEac 阅读全文
posted @ 2024-02-01 09:02 予真 阅读(239) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示