![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java相关
Coding Now
点点滴滴,皆是学问!
展开
-
正则表达式提取中括号[]内文字并进行文字分离
最近有这样一个需求,需要将一段文本中由[]括起来的文字和其他文字分割开来,于是想到了正则表达式。先上代码:public static void spiltText(String text) { String regex = "(\\[[^\\]]*\\])"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); int l原创 2021-02-24 19:30:26 · 3036 阅读 · 0 评论 -
Java8中的时间常见处理
前言:好久没写博客了,最近看到一篇不错的分享!https://juejin.im/post/5a795bad6fb9a0634f407ae5Java 8 日期处理Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDate...转载 2020-03-10 18:05:03 · 172 阅读 · 0 评论 -
java线程池ThreadPoolExecutor八种拒绝策略浅析
非常不错的一篇文章!好文共享!http://www.kailing.pub/article/index/arcid/255.html原创 2020-01-06 20:20:21 · 236 阅读 · 0 评论 -
@Transactional注解失效
1、检查方法是不是public的 (只能应用到 public 可见度的方法)2、异常类型是不是unchecked异常注解会对unchecked异常进行事务回滚;如果是checked异常则不回滚。java里面将派生于Error或者RuntimeException(比如空指针,1/0)的异常称为unchecked异常;其他继承自java.lang.Exception得异常统称为Ch...原创 2019-12-24 16:48:03 · 182 阅读 · 0 评论 -
Fork/Join以及FutureTask的原理分析(含RecursiveAction、RecursiveTask )
FutureTask首先讲一下FutureTask,它表示的是一种,异步操作的典范。我提交了任务,在未来我要拿到结果。 考虑一种简单的场景,甲问乙一个问题,乙一时回答不了,乙要去考虑一段时间(查一下资料),等到有结果了,再告诉甲。 这时,我们需要类甲,类乙。它的使用原理可以博主之前的篇文章:https://blog.csdn.net/qq_41864967/article/de...原创 2019-12-18 11:43:55 · 882 阅读 · 0 评论 -
LomBok使用技巧(@AllArgsConstructor @NoArgsConstructor @Builder @Accessors(chain = true) )
Lombok也许好多人都用过@Data注解,就不用写Getter,Setter了。----------补加一下@Accessors(chain = true) //链式set@RequiredArgsConstructor(staticName = "of") 生成有参数的构造 和@NonNull一起------------------------------...原创 2019-12-12 11:21:54 · 2166 阅读 · 0 评论 -
不重写equals和hashcode难道就不行吗?
不重写equals和hashcode难道就不行吗?究竟为什么要重写equals和hashcode???目录 1、equals()方法和hashCode()方法介绍 1.1、equals()方法 1.2、hashCode()方法 2、Hash算法介绍 3、重写equals()方法和hashCode()方法 3.1、什么时...转载 2019-11-16 10:34:11 · 1627 阅读 · 0 评论 -
ArrayList集合为什么不能使用foreach增加、删除、修改元素???
先看一个代码:public class ArrayListForeach { public static void main(String[] args) { removeListElement1(); // 没有问题 removeListElement2(); // ConcurrentModificationException异常 }...原创 2019-11-16 10:18:52 · 297 阅读 · 0 评论 -
Java8之map和flatMap
以前有点搞不懂这两个概念,今天在scala里面看到flatMap是等于map+flatten,把它扁平化的感觉。就想用Java试一下,确实是降低维度,把它打平的感觉。官方的一个解释:map:Returns a stream consisting of the results of applying the given function to the elements of this ...原创 2019-11-11 21:41:16 · 535 阅读 · 2 评论 -
Spring 如何解决循环依赖?
在关于Spring的面试中,我们经常会被问到一个问题:Spring是如何解决循环依赖的问题的。这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不一定能够一下子思考出个中奥秘。本文主要针对这个问题,从源码的角度对其实现原理进行讲解。1. 过程演示关于Spring bean的创建,其本质上还是一个对象的创建,既然是对象,读者朋友一定要明白一点...转载 2019-10-09 11:18:29 · 127 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源)...转载 2019-09-23 15:52:50 · 127 阅读 · 0 评论 -
为什么String的hashCode选择 31 作为乘子??
某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字面意思上推断这个数字的用途。后来带着疑问和好奇心,到网上去找资料查询一下。在看完资料后,默默的感叹了一句,原来是这样啊。那么到底是哪样呢?在接下来章节里,请大家带...转载 2019-09-16 15:57:52 · 169 阅读 · 0 评论 -
Thread:主线程等待多个子线程执行完毕再执行的问题(CountDownLatch和FutureTask)
前言:最近项目有个新的需求,大致意思是,前端发给我一系列ip(上千个),需要我远程调用其他微服务,通过ip得到我所需要的返回结果。由于数量过大,不能一次性将1000个ip都去调用其他微服务接口,可能会出现问题,并且性能也不会太好,所有我选择了多线程,那线程池就得来一波了(同学们可以去了解一下呀 比如线程池参数呀!!!!)。多线程请求远程,每次的结果我最后得统一返回给前端吧。那就得等所有的子...原创 2019-09-11 15:34:22 · 1729 阅读 · 0 评论 -
Java基础相关
对Java的理解◆平台无关性◆GC◆语言特性◆面向对象◆类库◆异常处理 谈谈反射JAVA反射机制是在运行状态中, 对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 ClassLoader----类加载器 ClassLoader在Java...原创 2019-02-24 11:12:27 · 148 阅读 · 0 评论 -
Java之JVM内存模型
JVM运行时数据分区:一、程序计数器(Program Counter Register)➢当前线程所执行的字节码行号指示器(逻辑)➢改变计数器的值来选取下一条需要执行的字节码指令➢和线程是一对一的关系即”线程私有”➢对Java方法计数,记录的是正在执行的虚拟机字节码指令的地址;如果是Native方法则计数器值为Undefined此内存区域是唯一一个在Java虚拟机规范中没有规...原创 2019-02-24 11:38:21 · 119 阅读 · 0 评论 -
Java之垃圾回收GC
有哪些垃圾回收算法?1.标记-清除算法(Mark and Sweep)➢标记:从根集合进行扫描,对存活的对象进行标记➢清除:对堆内存从头到尾进行线性遍历,回收不可达对象内存缺点:碎片化------------容易产生小的碎片,无法利用。2.复制算法(Copying)➢分为对象面和空闲面➢对象在对象面上创建➢存活的对象被从对象面复制到空闲面-----即无法回收的对...原创 2019-02-24 19:57:07 · 191 阅读 · 0 评论 -
Java中的四种引用方式
1.强引用( Strong Reference )➢最普遍的引用: 代码中的object和str都是强引用:Object object = new Object();String str = "hello";➢抛出OutOfMemoryError终止程序也不会回收具有强引用的对象➢通过将对象设置为null来弱化引用,使其被回收 2.软引用( Soft Ref...原创 2019-02-24 21:41:23 · 206 阅读 · 0 评论 -
Java多线程和并发
首先回顾一下线程和进程:进程和线程的区别:进程是资源分配的最小单位,线程是CPU调度的最小单位 ➢所有与进程相关的资源,都被记录在PCB中 ➢进程是抢占处理机的调度单位;线程属于某个进程,共享其资源 ➢线程只由堆栈寄存器、程序计数器和TCB组成 总结:➢线程不能看做独立应用,而进程可看做独立应用➢进程有独立的地址空间,相互不影响,线程只是进程的不同执行路径➢线程没有...原创 2019-02-24 22:44:48 · 167 阅读 · 0 评论 -
Java并发和线程安全2——synchronized,lock,volatile,CAS解读
1.synchronized底层实现原理互斥锁的特性:互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程的协调机制,这样在同- -时间只有一个线程对需要同步的代码块(复合操作)进行访问。互斥性也称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线...原创 2019-02-25 13:24:18 · 346 阅读 · 0 评论 -
Java线程池
利用Executors创建不同的线程池满足不同场景的需求 1. newFixedThreadPool(int nThreads) 指定工作线程数量的线程池 2. newCachedThreadPool() 处理大量短时间工作任务的线程池, (1)试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程...原创 2019-02-25 20:56:07 · 130 阅读 · 0 评论 -
Lambda 表达式
1. 引言在 Java 8 以前,若我们想要把某些功能传递给某些方法,总要去写匿名类。以前注册事件监听器的写法与下面的示例代码就很像:manager.addScheduleListener(newScheduleListener(){@OverridepublicvoidonSchedule(ScheduleEvente){...转载 2019-08-27 20:08:55 · 223 阅读 · 0 评论 -
ArrayList的使用小技巧
1.首先我们看一块代码: List<String> list =new ArrayList<>(); //获取一批数据的函数 List<String> allData=getData(); for (String str:allData) { list.add(str);...原创 2019-09-02 17:37:25 · 315 阅读 · 0 评论 -
ReentrantLock-----公平锁和非公平锁
ReentrantLock的实现是基于其内部类FairSync(公平锁)和NonFairSync(非公平锁)实现的。可重入性是基于Thread.currentThread()实现的: 如果当前线程已经获得了执行序列中的锁, 那执行序列之后的所有方法都可以获得这个锁。公平锁和非公平锁获取方式大同小异可重入性的实现基于下面代码片段的 else if 语句protected final...翻译 2019-01-12 23:05:36 · 133 阅读 · 0 评论