2022年11月24日缘起 作为一个程序员,经常会遇到需要使用远程桌面的述求(居家办公、加班,你懂的)。所以,在网上找一圈远程桌面解决方案之后,最终还是使用frp来穿透远程桌面。(推荐使用) 前提 需要一台有公网ip的服务器,腾……
阅读全文
2022年11月24日Stream api2 Collect to Map 1 2 3 Map<String, String> result = effectList.stream().collect( Collectors.toMap(BusiDisposalProveEffectInfo::getDeclareId, BusiDisposalProveEffectInfo::getRegAttachmentId)); Collect to List or Set 1 List<String> idList = resultList.stream().map(BusiDisposalProveListVO::getId).collect(Collectors.toList()); Filter 1 2 3 4 Set<String> idSet = resultList.stream() .filter(e -> StringUtils.equals(e.getStatus(), DeclareStatusEnum.SUCCESS.getCode())) .map(BusiDisposalProveListVO::getId) .collect(Collectors.toSet()); Consumer 1 2 3 4 5 6 7 8 // 相加并将结果回调回去 public void f1(int a,int b,Consumer<Integer> callback){ callback.accept(a+b); } // 调用并打印 f1(1,2,result -> { System.out.println(result); })……
阅读全文
2022年11月24日Left Join 左连接查询,以左边为主表。 1 select a.*,b.name from a left join b on a.id = b.a_id; Right Join 右连接查询,以右边为主表。 1 select b.*,a.name from a right join b on a.id = b.a_id; Inner Join 内连接查询,以左右表交集。 1 select a.*,b.* from a inner join b on a.id = b.a_id; In 范围查询 1 select a.* from a where a.id in ('1','3') Exist 是否存在……
阅读全文
2022年9月27日Java运行时数据区 如下内容如未说明均以JDK1.7版本为准 JVM内存主要分为5个部分: 程序计数器 虚拟机栈 本地方法栈 堆 方法区 而JDK1.8和JDK1.7比,主要是将方法区(永久代) 被 元数据区取代,而且……
阅读全文
2022年9月26日并发的可达性分析 根可达算法在理论上,需要冻结全部的用户线程运行。在根节点枚举步骤中,由于GC Roots相比整个Java堆中全部对象毕竟是极少数,且在OopMap优化下,带来的停顿时间非常短暂且相等固定……
阅读全文
2022年9月1日问题一:对象跨代(区域)引用,GC Roots扫描范围如何界定? 当部分区域进行垃圾收集时,如果非收集区域的对象跨区引用了收集区域的对象(收集区域的对象A可能被非收集区域的对象静态字段B引用,这样对象A应……
阅读全文
2022年9月1日在根可达性分析算法中,从GC Roots集合中找引用链是虚拟机高效实现的第一个例子。 问题一:为什么要枚举根节点?怎么高效实现? 虽然GC Roots的节点主要在全局性的引用(例如常量或者类静态变量)与执行上……
阅读全文
2022年9月1日定义 Java虚拟机通过一个类的全限定名来获取类的二进制字节流的这个动作,放到虚拟机外部实现,让应用程序自己决定如何获取所需的类。 实现这个动作的代码叫做类加载器。 类与类加载器 每个类加载器都有自己独立的类……
阅读全文
2022年9月1日Java基于Class文件作为存储格式,不同平台对应虚拟机实现的方式让Java具备跨平台的特性。 因此我们有必要更深入学习Class字节码文件的结构。 Class文件的结构 Class文件是一组以8个字节为……
阅读全文