java进阶
一念成佛_LHY
这个作者很懒,什么都没留下…
展开
-
java 校验日期字符串是否合法
1.使用SimpleDateFormat(有坑) private static boolean isValidDate(String str) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); try { format.setLenient(false); return format.parse(str)==null?false:true;原创 2020-09-19 09:54:00 · 1801 阅读 · 0 评论 -
DEGUB级别日志为什么需要判断条件
经常看到代码中输出debug级别日志的格式是:if (logger.isDebugEnabled()) { logger.debug("Bean factory for " + getDisplayName() + ": " + beanFactory); }需要做:isDebugEnabled判断的原因:1、生产环境中的日志输出级别一般是INFO级别,debug级别只会在测试阶段调试使用;2、如果没有isDebugEnabled判断,debug中的参数,例如:字符串拼接操作,.原创 2020-06-10 15:41:48 · 456 阅读 · 0 评论 -
java线程疑难点总结
1、java线程生命周期:线程的5个状态1、新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();2、就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,获取cpu ...原创 2020-05-08 11:08:13 · 312 阅读 · 0 评论 -
JSR 256-Pluggable Annotation Processing API
Pluggable Annotation Processing API:JDK6的新特性:插件式注解处理API该特性支持在编译器对注解的处理,Pluggable Annotation Processing API的核心是Annotation Processor即注解处理器,一般需要继承抽象类javax.annotation.processing.AbstractProcessor。注意,与运行...原创 2019-12-20 16:29:03 · 287 阅读 · 0 评论 -
JVM大对象排查
在Linux环境下查看占用内存较多的java对象使用top查看到排名靠前的java进程 查看占用内存较多的前30名java对象 jmap -histo:live 【pid】 | head -30,也可以导出到文件中: jmap -dump:format=b,file=/filepath/heap.bin pid备注:如果当前用户不是启动java进程的用户,使用j...原创 2019-09-12 16:57:18 · 3302 阅读 · 0 评论 -
AtomicIntegerFieldUpdate简介
java中AtomicIntegerFieldUpdate类可以实现原子方式更新一个变量对于这个变量有如下的约束:更新器更新的必须是int类型,不能是其包装类型Integer; 更新器更新的必须是volatile修饰的变量,确保线程之间共享变量的时候立即可见; 变量不能被static修饰,必须是实例变量。因为Unsafe.objectFieldOffset()方法不支持静态变量(CAS...原创 2019-07-15 09:59:41 · 346 阅读 · 0 评论 -
java虚拟机创建对象优化策略总结
java在内存中创建对象流程示意图1. 编译器通过逃逸分析,确定对象是在栈上分配还是在堆上分配。如果是在堆上分配,则执行步骤2.2. 如果tlab_top(TLAB起始内存值) + size(对象大小)<= tlab_end(TLAB终止内存值),则在在TLAB上直接分配对象并增加tlab_top 的值,如果现有的TLAB不足以存放当前对象执行步骤3.3. 重新申请一个TLAB,...原创 2018-07-06 16:39:30 · 839 阅读 · 0 评论 -
java8新特性总结
1.主要内容1. Lambda 表达式2. 函数式接口3. 方法引用与构造器引用4. Stream API5. 接口中的默认方法与静态方法6. 新时间日期 APIjava8中最核心的新特性是: Lambda 表达式与Stream API,下面主要介绍Lambda表达式和Stream;2.Lambda表达式Lambda 是一个匿名函数,可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像...原创 2018-07-06 17:18:05 · 854 阅读 · 0 评论 -
java nio总结
1.主要内容1. Java NIO 简介2. Java NIO 与 IO 的主要区别3. 缓冲区(Buffer)和通道(Channel)4. 文件通道(FileChannel)5. NIO 的非阻塞式网络通信 选择器(Selector) SocketChannel、ServerSocketChannel、DatagramChannel6. 管道(Pipe)7. Java NIO2 (Path、...原创 2018-07-06 18:00:13 · 486 阅读 · 0 评论 -
java多线程——juc总结
1.主要内容1. Java JUC 简介2. volatile 关键字-内存可见性3. 原子变量-CAS算法4. ConcurrentHashMap 锁分段机制5. CountDownLatch 闭锁6. 实现 Callable 接口7. Lock 同步锁8. Condition 控制线程通信9. 线程按序交替10. ReadWriteLock 读写锁11. 线程八锁12. 线程池13. 线程调度...原创 2018-07-06 18:22:12 · 4941 阅读 · 1 评论 -
java事故排查
top:查看CPU负载 free :查...原创 2019-04-12 16:44:25 · 403 阅读 · 0 评论 -
AQS架构
AQS,全称是AbstractQueuedSynchronizer,中文译为抽象队列式同步器AQS架构:说明:AQS维护了一个volatileintstate (代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入队列中)AQS定义了两种资源共享方式:Exclusive(独占方式)、Share(共享方式)具体在java源码AbstractQu...原创 2019-07-15 09:52:32 · 656 阅读 · 0 评论 -
Java虚拟机基础知识(一):虚拟机基本结构总结
1.java虚拟机基本结构示意图1.1 类加载子系统:类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。1.2 方法区:和堆一样,方法区是一块所有线程共享的内存区域,它用于保存系统的类信息,比如类的字段、方法、常量池等。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区的溢出,虚拟机同样会抛出内存溢出错误。在JDK1.6、J...原创 2018-07-06 16:03:35 · 1307 阅读 · 1 评论