![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
crossroads10
将来的你,肯定感激现在拼命的自己
展开
-
泛型小助手-通配符(?)
泛型通配符虽然通配符给我们解决了一系列强制转换所带来的安全隐患,但是从另外一个角度来讲,泛型也带来了一些新的问题:引用传递处理范例:观察问题的产生public class Message<T> { private T content; public T getContent() { return content; } public void setContent(T content) { this.content原创 2020-09-23 14:48:52 · 217 阅读 · 0 评论 -
从内存来理解字符串String的修改奥秘
内存层面上深入了解String类型数据的存储方式,并深刻体悟频繁修改String数据带来的内存负担String对象常量池对象池的主要目的是实现数据的共享处理。以String对象池为例,里面的对象主要就是为了重用,而重用实际上就属于共享设计,但是在Java之中对象池实际上可以分为两种:静态常量池:指的是程序(*.class)在加载的时候会自动将此程序之中保存的字符串、普通的常量、类和方法的信息等等,全部进行分配。 运行时常量池:当一个程序(*.class)加载之后,里面可能有一些变量,这个时候提转载 2020-08-24 16:48:06 · 421 阅读 · 0 评论 -
Java的类加载机制详解
如果别人问你精通java吗?谈一下类加载机制的理解。你回答:首先将java编译成承认的class字节码文件,然后运行...这样的答案,别人听了肯定不会满意的。就比如,好多类一级一级的继承,加上静态代码块,重写无参构造方法,最后来一个测试类,让你判断输出的顺序,想必这样的题目,准确来讲应该是笔试题,绝大多数是笔试题,你又能是否答对。现在呢,我们就好好理解一下java里面的类加载机制...原创 2019-04-01 23:38:23 · 517 阅读 · 0 评论 -
Java并发Synchronized锁在Spring事务管理下,为啥还线程不安全?
开启10000个线程,每个线程给员工表的money字段【初始值是0】加1,没有使用悲观锁和乐观锁,但是在业务层方法上加了synchronized关键字,问题是代码执行完毕后数据库中的money 字段不是10000,而是小于10000 问题出在哪里?Service层代码: @Transactional public synchronized void insert(Integer...原创 2019-04-08 20:51:37 · 706 阅读 · 0 评论 -
JAVA stream API使用
虽然更高版本的JDK已经发布,但是JDK8的变革还是比较巨大的,JDK8出现了stream,之前不是特别理解,偶尔简单使用一下,最近就主要实现以及API在此列出,把简单的使用先表述一下,方便理解和使用。下面可以对一些原理以及基于底层的实现列出。首先对stream的操作可以分为两类,中间操作(intermediate operations)和结束操作(terminal operations):...原创 2019-04-10 00:53:26 · 280 阅读 · 0 评论 -
理解Java线程池以及线程池的如何使用
前言:多线程的异步执行方式,虽然能够最大限度的发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担,线程本身也要占用内存空间,大量的线程会占用内存资源,并且可能会导致OutofMemory,即便没有这样的情况,大量的线程回收也会给GC带来很大的压力,为了避免重复的创建线程,线程池的出现可以让线程直接进行复用。通俗点讲,当有工作任务过来时,就会想线程池拿一个线程,当工作完成后,并不是...原创 2019-06-09 17:29:03 · 285 阅读 · 0 评论