
Java
文章平均质量分 54
12Dong
这个作者很懒,什么都没留下…
展开
-
【Java】CompletableFuture 并发顺序调度
Java CompletableFuture 使用方法原创 2023-03-03 16:43:43 · 4433 阅读 · 1 评论 -
【Java】happen before 原则
java happen before 8大原则原创 2023-02-19 12:34:50 · 154 阅读 · 0 评论 -
【Java】如何看待Full GC
不同情况下,如何看代Full GC原创 2022-01-13 15:45:34 · 332 阅读 · 0 评论 -
【Java】Spring项目中对线程池的使用
使用到Java线程池的时候,会有一些核心概念,比如说CPU密集型的任务,核心线程数最好设置为和CPU核数一样,IO密集型的任务核心线程数为CPU核数的两倍。但当遇到具体业务场景的时候,还是单独考虑。现在有一个业务场景如下:定期需要处理一批任务,这些任务的数量有多有少,多的时候可能会有5000+,少的时候也能没有。每一个需要做的事情主要有三件,修改数据库的数据,调用RPC请求,变更任务的状态。具体设计的时候有这么些考虑:因为涉及到RPC请求的调用,而RPC请求的调用多为IO型任务,所以最好能够异步执行原创 2022-01-06 15:49:57 · 1252 阅读 · 0 评论 -
【Java】Stream 中 Collectors.groupingBy维护顺序
在使用Stream中提供的Collectors.groupingBy做聚合操作的时候,需要按照一定的规则维护顺序。因为这个terminal operations 最后返回的数据结构是一个Map,所以没有办法直接判断他到底是不是一个有序Map,只能戳到源码里看返回。顺着代码摸索, public static <T, K> Collector<T, ?, Map<K, List<T>>> groupingBy(Function<? supe原创 2021-08-16 19:33:21 · 2412 阅读 · 0 评论 -
【JVM】类初始化机制
一个类从准备加载到虚拟机的内存中,到从虚拟机中内存卸载这样的一个生命周期中,有以下几个过程:加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 ->卸载。在《JVM虚拟机规范》中,并没有对加载的时机做严格控制,但是对初始化的时机做了严格的控制。在六种情况下,虚拟机必须对一个类做初始化操作。其中有一种情况是:如果读取或者写入一个静态资源,那么这个静态资源所在的类应该被提前加载。但存在一些边界条件在这类情况中:一个子类继承了父类,那么也可以通过子类去原创 2021-08-01 23:46:29 · 199 阅读 · 0 评论 -
【Java】多线程内存模型
事先说明本文主要参考 《深入理解Java虚拟机 第二版》和 Jakob Jenkov所写的博文,用Java虚拟机中所提到的概念诠释博文中的多线程内存模型。如有不妥之处,还希望各位老哥不惜指正。概念讲解简单来说,Java虚拟机将内存划分为两大类,一类是每个线程私有的内存区:JVM 栈(JVM Stack)、本地方法栈(Native method Stack)和程序计算器,第二类是所有线程能够共用的:堆(Heap)和方法区(method area)。在多线程变量内存模型中,所要关注的概念就是JVM栈原创 2020-10-06 21:17:43 · 202 阅读 · 0 评论 -
【Java】从HashMap源码中获得的代码启示
写代码的时候需要讲究一个说学逗唱,不对,增删改查,也不对,需要讲究一个代码规范。因为代码写出来是给人看的,当然机器也是要看的。为了帮助看的人更好的理解,需要讲究一些方式方法。这些方式方法是谁定的,你可以理解为冥冥中的代码之神,有一天突然拍了一下大腿说,“神说,要有代码规范”,然后托梦给了凡间的程序员。我之前的遵循的代码规范来自两部分,一个是《代码整洁之道》(Clean Code),另一个则是阿里的Java手册。其中有一个代码规范是说,如果你的函数传参有很多,那么为了看的人的体验 ,你要把他们整合为一个新原创 2020-08-09 18:42:32 · 184 阅读 · 0 评论 -
【Java】Java8 HashMap 源码阅读
发现HashMap的源码和自己原本看到的文档不同,所以决定看看到底Java是如何实现HashMap的。本文所使用的环境为利用Idea提供的功能直接跳转到HashMap.put();的源码页面 HashMap<String, String> map = new HashMap<>(); map.put("1", "1");接着往下看,如果说这个HashMap第一次调用了put函数,会有一个resize的操作来初始化实际上存储对象的Node数原创 2020-08-08 22:44:54 · 200 阅读 · 0 评论 -
【SprinpBoot】@Lazy @Async共用解决循环依赖问题
先占坑原创 2019-07-19 13:54:07 · 2175 阅读 · 6 评论 -
【Maven】javax.servlet.ServletContext 引用失败
在我为项目设定 parent pom的时候遇上了一个问题,APPLICATION FAILED TO START***************************Description:An attempt was made to call a method that does not exist. The attempt was made from the following l...原创 2019-05-15 00:15:34 · 3972 阅读 · 0 评论 -
【Java】将一个maven & gui 打包成一个jar包
待更原创 2018-09-05 19:12:04 · 796 阅读 · 2 评论 -
将int 设为 null(大雾)
今天在做数据库的时候 想到的这个问题 我该怎么通过占位符 去将这三个null赋进去 然后 我就开始实验 写了一个cul函数public class ex { public static void main(String agv[]){ System.out.println(Cul(1,null)); } public static int Cul(原创 2018-01-27 22:12:22 · 2003 阅读 · 0 评论 -
[Java] 对象和引用的理解
之前对Java对象和引用的定义不清晰,赶紧补上,然后来讲讲我对 对象 和 引用 的理解。开宗明义StringBuffer s = new StringBuffer("new String");new StringBuffer(“new String”)是对象 s 是 对new StringBuffer(“new String”)的引用 StringBuffer 是类然后解释Java创建一个对象是原创 2018-02-11 14:46:33 · 334 阅读 · 1 评论 -
[Java] 构造器内部的多态方法行为
今天在看Java编程思想的时候遇上的问题 使用到的知识是Java的多态方法和构造器调用顺序当我们在导出类构造器中没有显式调用基类构造器时,会默认调用基类的默认构造器,同时如果我们在导出类的方法覆盖了基类的某一个方法,且在这个方法中使用到导出类的参数时,就会出现问题。可能这番话有点绕 看一下代码 可能会清楚一些。 package polymorphism;class base{//基类中的draw(原创 2018-02-07 14:44:59 · 270 阅读 · 0 评论 -
[Java] 完全解耦
今天在看Thinking in Java的时候 遇上的小问题 查了一些资料 做一个小整理。 先说 耦合性 耦合性就是对 对象的依赖程度。依赖程度高 叫做高耦合,依赖程度低叫做低耦合。我们可以通过Java自带的接口和Spring的IOC来降低程序的耦合性,也是好的程序所追求的。举个例子,一个程序需要一种水果,你可以传苹果,橘子什么的进去。这叫低耦合。一个程序只需要苹果,你穿橘子进去是错的,这叫高耦合原创 2018-02-07 20:10:59 · 3258 阅读 · 5 评论 -
[Java] 在匿名内部类中使用参数需要添加final 的解释
今天在看Thinking in Java时候 遇上的小问题 做一个小整理如果我在外部类中定义一个匿名内部类的时候 需要在使用在其外部的参数的时候 需要在调入参数的时候 给参数加 final。如果不加的话 会得到一个编译错误。package learnInnerClass;interface Inner{ void f();}public class Outter { public原创 2018-02-08 15:21:46 · 1830 阅读 · 3 评论 -
[Java]Map&HashMap&TreeMap&LinkedHashMap
Map是一种Java里的容器,存储的是键指对。1.HashMap&TreeMap&LinkedHashMap的特点HashMap基于散列表实现,特点就是快。 TreeMap基于红黑树的实现,特点是会根据键来排序(由Comparable或Comparator决定)。 LinkedHashMap类似HashMap,其顺序可以是插入顺序,也可以是LRU(最近最久未使用)实现的...原创 2018-03-21 18:51:08 · 212 阅读 · 0 评论 -
【Java】Java8的lambda表达式
今天写代码的时候 突然遇到了object.foreach(item->System.out.println(itme))这个东西,查了一下是Java8的lambda表达式。 lambda表达式相同于数组或者Collection的Iterator都是用来遍历相关数据结构的。举两个例子,就能知道如何使用。----------------list----------------pa...原创 2018-07-02 18:27:08 · 229 阅读 · 0 评论 -
【Java】四个线程访问同一数组并作出相应修改
需求是开四个线程访问一个Vector(因为Vector是线程安全的),取得Vector的信息,这个信息是要一段时间进行处理,就是说,取得信息访问之后,可能这个信息还没有处理完,所以要先等一等,先取得取得Vector下一个元素再访问。现在我遇上的问题是怎么在开四个线程的时候,保持Vector的共同性,就是在一个线程取得信息之后,成功处理,让其他三个不要再访问当前元素了。四个线程怎么按照顺...原创 2018-07-15 22:09:24 · 2744 阅读 · 2 评论 -
[Java] Date类的使用
今天写代码的时候 又遇上了Date类的问题 所以干脆写篇博客记录是怎么解决问题String类 转 Date类如果直接给你”2017-05-20”转变成Date类 在Java中有一个东西叫做SimpleDateFormat 用来定义格式的 就用这个来讲字符串转变为Dateimport java.text.ParseException;import java.text.SimpleDateForm原创 2018-01-31 16:18:47 · 313 阅读 · 0 评论