java小领悟
文章平均质量分 90
予亭
活泼开朗,爱好广泛。
展开
-
jvm YGC是如何识别要回收的对象?
问题我们通常说jvm识别垃圾对象有两个方法:引用计数法可达性分析老年代肯定是用的可达性分析,先标记GC roots,然后依据这些根对象来做遍历访问,能够访问的对象就是活的对象,其他对象就是没有引用的对象,可以回收,那么针对年轻代的垃圾回收,它是如何来标记的?可达性分析首先,引用计数法无法解决循环引用的问题,几乎不被采纳,可达性分析是一个比较好的方法,所以答案是YGC采用的也是可达性分析方法来做垃圾回收处理。那么YGC和FGC是都是可达性分析,也都要找GC Roots,那么2者找到的root集原创 2021-04-24 15:07:01 · 362 阅读 · 0 评论 -
IDEA java 不兼容的类型 无法 推断类型变量
突然就碰到了这个问题,看了一下是泛型的使用,于是就查了一下,大概是说:Eclipse编译代码使用的是Eclipse自带的JDT(Java Development Tools)IDEA 这里默认使用的是JAVA_HONE中的javacjavac相对JDT的检查机制来说,更加的严格,所以Eclipse可以编译通过,而IDEA用Maven编译会报。我们的idea编译默认是Javac。所以将id...原创 2019-10-23 14:01:50 · 12218 阅读 · 2 评论 -
java - 模板 方法 - 简单讲解
模板方法可以用来干嘛?问题: 有3个方法:A、B、C三个方法,我想先执行A ,在执行B ,最后执行C,并且想在子类中重构B方法,所以问题就来了,我既想保证3个方法的执行顺序,又想在不同子类中重写B方法,有什么解决方法呢?这就是模板方法,定义:public abstract class ABC{ /** * 模板方法 */ public void main(...原创 2019-08-12 21:31:04 · 403 阅读 · 0 评论 -
SOA:微服务 & ESB 以及如何选择
前言故事要从一个问题开始:我们能不能把需要的服务事先申明好,然后底层依次来调用。举个例子,有A、B、C三个服务,如果我想调用B、C服务,那我肯定要写一套逻辑,先调用B再调用C,这段逻辑写好了,我下次想先调用C再调用B,就要改代码了,我能不能有一个类,我set(B).set© 就可以了,它能去识别这个顺序,我下次也可以set©.set(B) ,这样就可以通过set顺序来改变策略,把这个思想说出来后...原创 2019-08-05 21:48:42 · 507 阅读 · 0 评论 -
分布式ID的设计
前言这个讲解的比较多,很多文章都有提到,主要参考这两篇博客吧。回头总结一下这两篇文章参考博客Leaf——美团点评分布式ID生成系统如果再有人问你分布式 ID,这篇文章丢给他...原创 2019-07-30 21:48:13 · 353 阅读 · 0 评论 -
kafka 框架讲解+概念讲解+问题思考
kafka 优点kafka 概念Topic 主题属于特定类别的消息流称为主题。比如我们把发送验证码的消息流称为验证码Topic,把通知用户付款的消息通知称为PayNotify Topic,可以理解Topic为一类消息体,通过Topic来区别不同的消息体,那这里有一个疑问:一个Topic里消息体格式是一样的吗? 数据存储在主题中。主题被拆分成分区。 对于每个主题,Kafka保存其中一个...原创 2019-07-16 21:27:00 · 1482 阅读 · 0 评论 -
fastjson的循环引用和重复引用的问题排解
前言项目中用json形式来存储一个集合对象,用fastjson发现多了一些东西:$ref,了解之后才发现是重复引用的问题,现在总结一下重复引用问题代码类定义: public static class Box{ private int id; private String name; public int getId() { ...原创 2019-07-10 21:50:40 · 3143 阅读 · 1 评论 -
java 捕获异常打印详细错误信息:Exception e
前言dubbo接口数据进行转换的过程中,出现了空指针,但是自己捕获的时候没有注意这个问题,只是简单的打印出来,结果发现答应出来的都是null,基本上是无效的异常打印。完善异常信息一开始的代码是如下所示:try { main(event, controlDTO); } catch (Exception e) { logger.e...原创 2019-05-23 20:47:05 · 35991 阅读 · 6 评论 -
java dubbo设置超时间
问题场景在高可用的场景中,服务调用非常频繁,但我们也会消耗第三方服务,如果第三方服务耗时特别长,那要调用方也需要设置超时时间,利用超时时间来保护系统,因为如果第三方服务某天服务器服务有问题,则会长时间占用我们的线程池,高并发场景则不断有请求过来了。我们的线程池会瞬间打满,造成服务超时,异常报错。解决方案设置dubbo超时时间,超时后,抛异常,线程池可以回收,这样就可以快速处理请求,保证服务的...原创 2019-05-08 17:29:37 · 479 阅读 · 0 评论 -
Maven model archetype说明
前言新建一个model,其中有一个选项“Create from archetype”感觉很奇怪,我就来了解一下这些内容,做一下笔记,什么是ArchetypeArchetype翻译过来就是:骨架,项目工程骨架。Archetype是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成Maven工程的方式。Archety...原创 2019-04-25 23:25:57 · 581 阅读 · 0 评论 -
数据库事务 - 分布式事务:设计理解及方案总结
目前实现分布式事务的方案2PC协议:全称Two Phase Commitment Protocol阶段一为准备(prepare)阶段:即所有的参与者准备执行事务并锁住需要的资源。参与者ready时,向transaction manager报告已准备就绪。阶段二为提交阶段(commit):当transaction manager确认所有参与者都ready后,向所有参与者发送commit命令。...原创 2019-04-13 13:38:36 · 506 阅读 · 0 评论 -
Effective Java第七章:方法 + 实践
第38条:检查参数有效性我们在给类属性赋值的时候会校验数值是否有效,比如:数值类型大于0,对象不能为null,如果没有校验参数,可能会导致系统抛异常,甚至计算出错误的结果,书中建议:对于公有方法,在文档中用javadoc的@throws标签抛出异常,标注抛出的异常,/** * Returns a BigInteger whose value is {@code (this mo...原创 2019-03-06 19:48:47 · 270 阅读 · 0 评论 -
java8 lambda 将list对象改为Map对象
list转mapjava8 lambda将List转换为Map比较简单,但是 有坑: List<Boy> sellOutList = Lists.newArrayList(); Boy one = new Boy(); one.setId(34343); sellOutList.add(one); Boy two =...原创 2019-03-06 15:27:15 · 9816 阅读 · 0 评论 -
effecttive java 第三版 第三章:对于所有对象都通用的方法
前言自己学习effective java,就分享一下自己学的内容。equals方法比较两个对象是否相等,如果不重写equals()方法就使用默认方法 public boolean equals(Object obj) { return (this == obj); }一般我们什么时候回用到这个equals方法呢?最简单的例...原创 2019-01-15 22:17:27 · 536 阅读 · 0 评论 -
java.lang.InstantiationException 实例化异常
问题描述利用JAVA反射来获取某一个实例,发现异常:java.lang.InstantiationException 实例化异常。报错原因当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。举例分析A是一个接口,将A的package.A 给Class.forName()方法,再调用newInstance()方法,报错,因为 A是一个接口,换成抽象类也是一原创 2017-09-19 14:56:34 · 19412 阅读 · 0 评论 -
JAVA正则表达式匹配多个空格
需求针对tab键带来的多个空格问题,有时候我们针对带空格的一行数据要进行切割,如果有多个空格就会出现就会切割空格出现,我们想把空格都去掉,所以需要用到某些方法。解决方案利用正则表达式来匹配空格\\s+首先利用split(“\\s+”);方法来对字符串切割,尽可能的匹配空格,这里也挺有意思,因为空格数目不一样,可以动态变换匹配的空格数量,这个实现原理可以看看底层原理,挺有意思。 测试:原创 2017-09-22 19:59:46 · 65001 阅读 · 0 评论 -
eclipse 某个类显示 Failed to create the part's controls 解决办法
问题描述最近eclipse出现了一下问题,某个类无法打开,显示Failed to create the part’s controls ,如图: 问题解决实验环境:eclipse mars版本 JDK 1.7网上有很多解决办法,有的说是更改workspace,有的说是更改JDK版本,不过这些方法我都试了一下,发现都没用,后来看到别人的评论说IDE没有那么智能,可能是代码里带有注释的地方”\”后原创 2017-03-08 12:10:41 · 8008 阅读 · 5 评论 -
java stringbuilder 清空问题
java基础 stringbuilder原创 2016-12-01 16:38:41 · 20542 阅读 · 1 评论