- 博客(25)
- 收藏
- 关注
原创 【Java】反射
1、反射1、反射是什么能够分析类能力的程序称为反射。反射可以让用户编写动态操纵Java代码的程序,动态即程序运行时2、反射是如何实现的在JVM的组成中,有一个叫做方法区的地方,方法区中存放着类的信息,反射就是通过这里获取类信息3、为什么需要反射思考一下,很多时候,在编译期间,我们并不知道某一具体的类,而需要等到程序运行时才获取到类信息,将类加载到类加载器中,比如Dubbo的自适应拓展机制,利用Javassist生成代理类,用类加载器加载代理类后,用反射获取类信息,这提现了用反射在运行期间操纵程序
2021-09-04 14:55:16
155
原创 【Java集合源码】LinkedHashMap源码分析(JDK8)
1、简介LinkedHashMap属于Map的一种,而Map是一种无序的key-value集合,但总有例外的情况,LinkedHashMap便是属于例外的其中一个,其最大的特点是可以保持插入的顺序。在实际开发中,可以好好的利用这一点。继承结构图:可以看到,LinkedHashMap继承了HashMap。它的内部有一个Entry的数据结构,作为链表用来保持插入节点的顺序,同时Entry也继承了HashMap中的Node的节点(关于HashMap,可以看这一篇HashMap1.8),同时维护着Node节
2021-08-18 21:51:09
160
原创 【Java集合源码】PriorityQueue源码分析
1、结构体系PriorityQueue属于Queue集合体系,为优先队列。内部根据设置可以维护大根堆或小根堆,默认情况是小根堆2、主要参数 //默认容量大小 private static final int DEFAULT_INITIAL_CAPACITY = 11; //保存元素的数组,同样是一个二叉堆 transient Object[] queue; // non-private to simplify nested class access //集合元素数量
2021-07-13 22:36:58
208
原创 【数据结构】二叉堆
1、二叉堆定义二叉堆(英语:binary heap)是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。— 维基百科二叉堆分为两种最大堆最大堆的特点是父节点的键值总是大于等于任一子节点的键值最小堆最小堆的特点是父节点的键值总是小于等于任一子节点的键值2、二叉堆表示二叉堆通常用数组来表示,有两个基本的操作上浮和下沉上浮:添加元素时使用,保持堆的平衡下沉:删除堆
2021-07-13 22:34:11
224
原创 【Java集合源码】LinkedList源码分析
1、结构体系LinkedList的结构体系比ArrayList要复杂的多,因为LinkedList不仅可用作链表,还能作为双端队列,本次仅分析链表的使用2、构造方法
2021-07-02 22:16:27
41
原创 MySQL索引失效总结
前言索引是MySQL中重要的一部分,良好的索引可以加快查询速度,但使用不当也会使索引失效。看了很多网上的关于索引失效的总结,不是很准确,因此自己总结一下主索引、辅助索引以及回表...
2021-05-28 23:02:38
127
原创 【Leetcode】938.二叉搜索树的范围和(Java+JavaScript)
一、题目描述二叉搜索树的范围和给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 10
2021-04-27 22:19:34
88
原创 【Leetcode】03.无重复字符的最长子串(Java)
一、题目描述无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长
2021-04-27 22:07:15
84
原创 Git reset中关于soft、mixed、hard参数的使用
使用git时,有时会遇到回退版本的问题,此时,reset命令就能派上用场。reset有3中模式,soft、mixed、hard,充分理解它们的不同,可以更好的使用它们。在充分使用前,需要先理解git的本地组成部分git的本地组成git的本地组成有3部分,分别是工作区、暂存区、本地仓库另外,还需要理解HEAD头指针1、工作区通俗的讲,就是电脑中的目录,就像下面图片中表示的一样2、暂存区使用git add后,文件便会计入到暂存区在这里,创建了一个test文件并添加到了暂存区3、本地仓库
2021-04-22 23:07:19
1632
原创 MySQL列中关于null值问题的总结
文章目录前言一、查询1.1 对null查询1.2 使用<>(!=)时1.3 进行distinct查询1.4 group by、count计算1.5 order by1.6 null计算总结前言数据库中关于null值,导致查询sql比较繁杂,网上很多null的使用,因此总结一下一、查询现在有一张prouct表,里面有一个is_only_channel字段,分别有3种值,0、1、null,个数分别是1453、4359、11.1 对null查询对表中null进行查询的话,必须使用is
2021-04-14 21:23:58
528
原创 Integer.parseInt(String s)使用总结
项目场景:在一道Leetcode题中,有一个测试项始终通不过,排查了很久,最终发现是Integer.parseInt(String s)这个方法在处理字符串时有一些细节要注意问题描述:假如有一个字符串"12"@Overridepublic static void main(String[] args) throws IOException { System.err.println(Integer.parseInt("12"));}毫无疑问,控制台输出12当字符串前面是"0
2021-04-12 22:40:00
1122
原创 接口幂等性总结
背景:最近公司一个接口因为多次调用出现了问题,解决很容易,但仔细想想这其实是关于接口的一类问题,即接口的幂等性,在设计时所有的接口都应该好好考虑是否存在幂等性问题,趁这个机会,好好总结一下1、什么是接口幂等性?个人理解是在一个接口中,如果传递的参数相同,那么无论调用多少次,返回的结果是一样的2、为什么要接口幂等?最简单的例子,转账,一个用户重复点击了转账最终支付了多笔订单,肯定会来投诉,最终倒霉的就是程序员了3、 解决方案:数据库表去重分布式锁对于分布式的项目,借助redis或
2021-04-07 21:47:39
128
原创 【LeetCode】456. 132模式题解(Java)
一、题目描述给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。提示:n == nums.length1 <= n <= 104-109 <= nums[i] &l
2021-03-28 16:57:46
185
原创 Java泛型
文章目录一、为什么引入泛型?二、泛型类三、泛型方法四、类型变量的限定五、泛型代码和虚拟机1.虚拟机会擦除类型变量2.多态冲突六、总结一、为什么引入泛型?使用泛型可以让不同类型的对象复用代码;编译期提供类型检查,减少bug产生例如,ArrayList类存在于泛型产生之前,最初用的是Object来存储类型,这样可以插入任意类型到ArrayList中,获取时一不小心的话就会有很多ClassCastException二、泛型类有一个Pair类如下:public class Pair<T>
2021-01-03 17:27:00
77
原创 SpringMVC拦截器失效分析
项目场景: 项目中新写了些拦截器没生效,问题描述:使用的xml的方式配置拦截器,具体如下先是新建一个类实现HandlerInterceptorpublic class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handl
2020-12-21 22:27:55
3452
4
原创 mysql进行分页查询数据不准确问题分析
背景:新功能上线发现分页出现了问题,分析了一段时间发现是mysql的问题,mysql对字段相同值排序后导致分页有误问题描述:举个简单的例子,数据表t如下:AB11253545556777进行分页查询时select A,B from t order by B limit 0,2; 会出现:AB1125再进行下一页查询select A,B from t order by B lim
2020-11-12 22:27:15
1390
原创 关于使用Comparable接口产生java.lIllegalArgumentException:Comparison method violates its general contract异常浅析
1.Comparable接口是一个高频接口,Java中用它对类进行排序,排序的重要性不言而喻。接口中只有一个方法public int compareTo(T o);看上去使用方法很简单,把要排序的逻辑写好即可。但背后涉及了很多细节问题,其中之一就有Java规范的问题,不了解这些规范,很有可能编写出有问题的排序逻辑。这次项目中遇到这个:java.lang.IllegalArgumentException:Comparison method violates its general contract
2020-10-22 23:12:20
269
原创 @Transactional注解失效浅析
最近公司项目用@Transactional注解时失效了,研究了很久才能正常使用。而注解失效的原因就是获取spring上下文中的bean没有被增强,确切地说,bean被增强了,但是却没有使用增强的bean导致@Transactional失效。下面来总结一下@Transactional的失效原因。1.只能使用在public修饰的方法上这个原因很简单,spring通过代理对象对程序执行事务增强,用的是AbstractFallbackTransactionAttributeSource类中的computeTra
2020-10-09 22:40:09
248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人