
Java
pp_lan
这个作者很懒,什么都没留下…
展开
-
Java中动态修改注解的值
部分场景需要动态修改注解的值。例如,我们使用自定义注解控制接口流量,如果需要动态修改流量值,可以使用反射的方法实现。原创 2024-02-04 10:01:28 · 2111 阅读 · 0 评论 -
Java8中通过Stream使用Collectors.toMap及踩坑记录
java8中stream使用过程中Collectors.toMap可能踩坑点原创 2024-01-16 18:04:46 · 1627 阅读 · 0 评论 -
基于事件驱动进行代码设计
基于事件进行系统设计原创 2022-12-13 15:10:17 · 397 阅读 · 0 评论 -
Java文件流预览及下载(pdfjs)
使用pdfjs插件实现文件流的预览原创 2022-11-16 10:37:37 · 2470 阅读 · 0 评论 -
EnumMap使用
1. 使用场景当key为枚举的时候使用2. 代码package com.hz.collections.enummap;import java.util.EnumMap;/** * @fileName: EnumMapTest * @version: * @description: * @author: pp_lan * @date: 2022/3/29 */public class EnumMapTest { public static void main(St原创 2022-03-29 15:18:39 · 865 阅读 · 0 评论 -
自定义类加载器加载冲突类(二)-URLClassLoader
描述之前直接继承ClassLoader, 单独加载类,且有依赖的时候会比较麻烦。此处使用URLClassLoader(ClassLoader的子类SecureClassLoader的子类)加载整个lib,并调用其中的方法代码package com.hz.classloader;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.lang.reflec原创 2022-03-18 10:39:28 · 1126 阅读 · 0 评论 -
java.lang.AutoCloseable执行顺序及代码块导致的错误表象
代码MyFlowMyFlowpublic class MyFlow implements AutoCloseable { @Override public void close() { System.out.println("MyFlow close方法执行"); }}MyFlow 2import java.io.IOException;/** * @description: * @author: pp_lan * @date: ..原创 2022-02-26 16:28:10 · 460 阅读 · 0 评论 -
ThreadLocal.withInitial
作用初始化ThreadLocal值源码 /** * Returns the value in the current thread's copy of this * thread-local variable. If the variable has no value for the * current thread, it is first initialized to the value returned * by an invocation o原创 2022-01-21 16:28:20 · 915 阅读 · 0 评论 -
JDK lambda表达式
JDK lambda表达式基本使用方法1. 无参,如定义一个线程,可以简写为 new Thread(() -> System.out.print("运行")).start();2. 有参数Collections.sort(list, (o1, o2) -> return o1.compareTo(o2));3. 类型改变 && 方法调用public class Demo { @Test public void test02() {原创 2021-08-27 08:44:32 · 188 阅读 · 0 评论 -
内存泄漏分析(Mat工具使用)
1. 工具下载mat下载地址:https://www.eclipse.org/mat/downloads.php2. 测试用例每10毫秒创建一个对象,放入list中,使之不被销毁。保持每秒100个左右的对象泄漏github地址:https://github.com/hzhulan/javarecord/blob/master/src/main/java/com/hz/leaksuspect/LeakSuspectDemo.javapackage com.hz.leaksuspe..原创 2021-05-10 17:25:31 · 452 阅读 · 1 评论 -
Netty服务端启动正常,当时无法连接
服务端启动正常,客户端连接时报如下错误:Exception in thread "main" io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /127.0.0.1:6668 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChan原创 2021-03-02 20:06:27 · 13158 阅读 · 0 评论 -
String[]转Object[]转换报错
看博客看到一个数组对象的问题,记录一下import org.junit.Test;/** * @authod: pp_lan on 2020/4/14. * 原文链接: http://www.yinwang.org/blog-cn/2020/02/13/java-type-system */public class String2ObjectArray { @Test...原创 2020-04-14 17:33:47 · 850 阅读 · 0 评论 -
CAS及其导致的ABA问题的出现原因及解决
1. Cas通过当前值与输入的期望值expert比较,判定是否改变值从而实现并发安全控制的方式。它可以不用加Synchromized实现线程安全问题。缺点:* 1. 循环时间长,开销大(CPU负荷)* 2. 只能保证单个共享变量的原子操作* 3. ABA问题,通过版本问题解决ABA问题,线程1执行 A-> D, 线程2执行 A->B->A,当线程2先执行完毕A...原创 2020-04-02 15:57:43 · 1237 阅读 · 0 评论 -
Postman发送Post请求附带json参数
1. 设置ContentType2. 填写参数3. 执行结果原创 2020-03-31 13:54:05 · 3415 阅读 · 0 评论 -
垃圾收集器
1. 分类总览2. 简述1). 新生代收集器a. Serial:单线程收集器,垃圾清理会导致其他全部线程停顿(Stop The World), 新生代默认收集器(复制算法);b. ParNew: Serial多线程版本(多CPU环境中效果优于Serial)(复制算法);c. Parallel Scanvenge:并行多线程收集器,可以自由最大停顿时间和吞吐量大小。GC停顿时...原创 2020-03-25 17:09:24 · 152 阅读 · 0 评论 -
java四种引用
JAVA中引用分为 强引用、软引用、弱引用、虚引用四种,强弱依次递减。1. 强引用便是正常的类对象引用 A a = new A(), 引用存在便无法回收;2. 软引用,当内存不够的时候才会清除引用关系 @Test /** * -ea -Xmx5m -Xms5m 设置内存大小 */ public void softDemo() { ...原创 2020-03-19 14:05:10 · 982 阅读 · 0 评论 -
JVM GC
1. 堆内存分配老年代2/3, 新生代1/3。其中,新生代可以分为1个eden区及2个servival区(from和to,各占新生代的1/10, 并且始终有一个区域空闲,轮流使用)2. 存放对象新生代:短期小对象直接存放于新生代中, 经过MinorGC,会将使用中的对象存放到其中一块servival中。多次MinorGC后仍然存活的对象进入老年代中;老年代:1. 新生代中迭代过后存......原创 2020-03-19 09:32:45 · 201 阅读 · 0 评论 -
JVM内存模型
1. 总览2. 各部分存放内容2.1虚拟机栈:存放局部变量、基本数据类型2.2 堆:最大的一块,存放对象实例(-xmx设置最大内存, -xms设置初始化大小)2.3 方法区:存储已经加载好的类信息,常量,静态变量,编译后的代码2.4 本地方法栈:存放系统的native方法2.4 程序计数器:记录程序执行对应的字节码的偏移量...原创 2020-03-18 15:06:33 · 135 阅读 · 0 评论 -
gc记录【转载】
https://blog.youkuaiyun.com/mbugatti/article/details/53815310转载 2020-03-18 14:45:56 · 202 阅读 · 0 评论 -
Dubbo接口调用源码解析
1. 调用dubbo接口2. 反射获取方法名称、参数等,并判断是否是Object自带的方法(toString(), hashCode(), equals(String name)), 不是则调用RPC框架获取接口内容3. 继续调用跟进4. 获取服务提供者信息(多个接口会有多个Invoker对象,会进行负载均衡)5. 负载均衡,有下图所示四种负载均衡策略...原创 2020-03-16 16:08:23 · 484 阅读 · 0 评论 -
自定义类加载器加载冲突类(一)-ClassLoader
使用场景:项目中遇到使用不同版本的类时候因为同路径同名类的冲突可以使用自定义类加载器进行加载规避这一问题相关代码如下:1. 类加载器:import java.io.File;import java.io.FileInputStream;import java.io.IOException;/** * @Description TODO * @Date 2020/3/10 ...原创 2020-03-10 15:44:23 · 1353 阅读 · 0 评论 -
深入理解 HashMap put 方法(JDK 8逐行剖析)
...转载 2020-03-09 15:26:29 · 213 阅读 · 1 评论 -
java堆,新生代,老年代,Eden空间,From Survivor空间,To Survivor空间
...转载 2020-03-05 14:37:25 · 939 阅读 · 0 评论 -
Jdk工具记录
1. 查看虚拟机进程号2. 生成内存快照文件jmap -dump:format=b,file=a.bin 270883. 加载快照文件jhat a.bin4. 访问localhost:7000原创 2020-03-05 13:45:52 · 171 阅读 · 0 评论 -
Map和Bean互转(Java)
今天要写一个Map转Bean的,忘记了原来写的时候用的什么类,百度了很多也没找到,废了九牛二虎之力找到了,Mark一下,以备之后使用。import org.apache.commons.beanutils.ConvertUtils;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.Pr...原创 2019-12-23 13:42:08 · 2779 阅读 · 2 评论 -
Java反射获取数组参数String...
String... 本质是String[], 在使用反射获取方法的时候需要使用String[].class调用invoke方法时候需要用Object[]public class A { public void a(String... str) { System.out.println("a"); } //获取反射对象的方法 publi...原创 2019-04-03 09:50:43 · 1568 阅读 · 0 评论 -
JVM调优
转载 https://www.cnblogs.com/likehua/p/3369823.html堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0...转载 2019-03-27 10:17:23 · 146 阅读 · 0 评论 -
JAVA内存存放
转载 2019-03-26 19:40:54 · 542 阅读 · 0 评论 -
使用CGLIB动态代理记录数据库操作日志出现Superclass has no null constructors but no arguments were given错误
使用cglib进行动态代理的时候,传入的对象需要有一个可见权限的无参构造方法。否则,会报标题中的错误。 分析:cglib进行代理的时候会去创建一个代理对象继承传入的对象的无参构造方法,并通过setter进行赋值。如果传入的参数没有无参的构造方法,那么创建代理对象的过程就无法完成,抛出异常。...原创 2018-12-13 17:00:10 · 1088 阅读 · 0 评论 -
Java中退出指定层级循环
@Test public void test02() { //对循环进行命名 waiout: for (int a = 0; a < 4; a++) { System.out.println(a); //对循环进行命名 outer: for...原创 2018-11-13 22:45:21 · 546 阅读 · 0 评论