java基础
Leemeea
说些很么呢?!
展开
-
java TIF 转 JPG
java将TIF格式图片转换成JPG,且使用100%的精度保存,不压缩图片原创 2022-10-27 11:56:10 · 1910 阅读 · 1 评论 -
2021-08-13-测试for,foreache,stream-foreach的性能,测不出来??
测试for,foreache,stream-foreach的性能import java.util.ArrayList;import java.util.List;/** * 测试for循环的性能 * @author leemeea * @date 2021/8/13 11:11 */public class TestMain { public static void main(String[] args) { // 测试源 List<Test原创 2021-08-13 11:42:59 · 120 阅读 · 0 评论 -
枚举转map
static Map<Integer, FlowTypeEnum> flowTypeMap; static { flowTypeMap = Arrays.stream(FlowTypeEnum.values()) .collect(Collectors.toMap(FlowTypeEnum::getValue, map -> map)); }原创 2021-07-22 15:00:43 · 1072 阅读 · 0 评论 -
(转)详解 @FunctionalInterface 注解的用法教程
最近在做团队代码 code review 的时候发现了有人使用了 @FunctionalInterface 注解。我对这个注解不是很熟悉,基本上没用过。于是我就问对应的开发人员,给我讲一讲这个注解的用法,为什么要用这个注解?他讲的不太全,于是我就查询了一些资料,分享给大家!在讲 @FunctionalInterface 之前,我们先熟悉一下,什么是函数式接口(Functional Interface)?函数式接口(Functional Interface)函数式接口(Functional Interf转载 2021-07-20 11:55:05 · 5542 阅读 · 0 评论 -
Java线程模型
一、简介线程在操作系统中分为用户线程和内核线程;Java的线程基本都是用户线程;内核线程与用户线程之间存在一定的关系,这种关系通常是3种:多对一模型、一对一模型、多对多模型。二、模型介绍1、多对一模型多对一模型,又名用户级线程模型,就是多个用户线程对应到一个内核线程上,线程的创建、调度、同步的所有细节全部都交给用户空间线程库来处理。优点: 1.用户线程的很多操作对内核来说都是透明的,不需要用户态和内核态的频繁切换,使线程的创建、调度、同步非常快;缺点: 1.多个用户线程对应一个内核线程原创 2021-04-14 17:42:54 · 246 阅读 · 0 评论 -
JVM内存详解(jdk1.7、jdk1.8)
最近面试的头大,好久没面试了,发现自己这些基础一点的东西都忘得差不多了,只能说个大概,有点小气。一、jdk1.7和jdk1.8的模型下图是java1.7的内存结构下图是java1.8内存结构上面2图分别是jdk1.7与jdk1.8的内存模型jdk1.8的时候jvm有很大的改进:使用元空间(mate space)取代了永久代。虽然元空间逻辑上仍然可以视为方法区的一种实现,但是在jdk1.8的jvm里面却没有给予方法去单独的一块内存区域了。...原创 2021-03-29 11:08:39 · 2329 阅读 · 0 评论 -
java基础 强引用,软引用,弱引用,虚引用的区别,总结
强引用概念:是在对象生命周期内,通过赋值或或者对象引用的方式进行关联;强引用的数据不会被jvm回收,就算抛出内存不足也不会被回收。String a = "123";String b = new String("456");以上就是强引用示例取消强引用:b = null;软引用是用来描述一些有用,但不是必须的对象,只有内存不足的时候jvm会释放这些对象,可以用来做缓存。软引用使用引用队列ReferenceQueue联合使用参考:import java.lang.ref.SoftRef原创 2021-03-10 17:34:39 · 337 阅读 · 0 评论 -
java基础 CAS算法的简单理解
以前做过简单了解,奈何没写下来,今天在巩固一下:CAS算法基于硬件平台的汇编指令,其中需要对乐观锁和悲观锁进行理解悲观锁:所访问的变量会被其他线程来访问,必须先锁住;乐观锁:所访问的变量不会被其他线程访问;乐观锁是非阻塞的,所以不会出现死锁CAS算法的实现,就是基于乐观锁的,在线程需要操作变量,会先拷贝个变量到自己内存中,等运算完成之后,在和原有变量进行对比,通常是有3个变量,一个是原有变量,一个是预期值,一个是新值。剩下就是线程得到处理器的执行,然后执行过程中,会对比预期值(副本)与主存的数据原创 2021-03-10 16:50:12 · 152 阅读 · 0 评论 -
java JVM内存模型,总结
java内存模型和计算机CPU的运行组成密不可分;处理器处理数据,都是从主内存里面获取,处理的时候放入高速缓存,然后在高速缓存中进行运算。为了能充分利用处理器,通常情况下会对代码进行乱序执行(Out-Of-Order Execution),处理器会在计算之后将计算结果进行结果重排,最终保证结果正确性。java编译器中也有类型的东西。java内存模型在java1.5之后慢慢完善起来了java内存模型主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量的底层细节,这里转载 2021-03-10 16:00:57 · 61 阅读 · 0 评论 -
java volatile关键字与并发三大特性,总结
volatile关键字的意思是不稳定的,可变的使用volatile关键字和不使用的区别在于JVM内存主存和线程工作内存的同步之上,volatile保证变量在线程工作内存和主存之间一致,其实就是告诉处理器,不要将我放进工作内存,请直接在主存操作我。多线程操作的时候不是为了保护线程安全,而是为了保护线程的变量不会被主函数或中断函数反复修改造成错误;结合java的内存模型,volatile修饰的变量只会在主存里面操作,不会放入线程内存中,在主存里面操作的东西,一旦修改,所有的线程马上就可以看得见。同时也要原创 2021-03-10 15:26:50 · 374 阅读 · 0 评论