JAVA
文章平均质量分 82
JAVA必知必会
从码农到码到成功
这个作者很懒,什么都没留下…
展开
-
JUI-四大布局
提醒:关于网格布局(GridLayout),行和列的关系说明可以看往期的“网格布局”的博文。4、构件可以添加到“容器”中,也可以添加到“面板”里,显示效果不同。绝对布局: setLayout(null);边界布局: BorderLayout。流布局: FlowLayout。网格布局: GridLayout。1、JFrame窗体。原创 2023-07-24 09:35:14 · 292 阅读 · 0 评论 -
发金额为100的红包,分成10份,每份红包大小随机
发金额为100的红包,分成10份,每份红包大小随机原创 2023-04-27 03:13:07 · 373 阅读 · 0 评论 -
G1垃圾收集器回收步骤
在执行垃圾回收操作之前,G1 垃圾回收器会将 PLAB 中的对象依次晋升到老年代中,这样可以减少老年代中的内存分配操作,对于每个线程,G1 垃圾回收器都维护了一个或多个 PLAB。内存结构:2048个Region,每个Region 大小在1-32M之间,默认年轻代初始大小整堆的5%,最大整堆的60%3:在并发标记和最终标记的过程中,计算出回收价值最大的Region(包含所有区的Region)放入CSet。检查每个已存活的对象所在的 Region,并将这些 Region 标记为 "可复制" 的备选区域。原创 2023-04-12 14:55:50 · 1283 阅读 · 2 评论 -
JVM-类加载
好处:使用不同的类加载器最终得到的都是同样一个 Object 对象。解释:自己不加载委派给父类去完成,如果无法加载则自己再加载,引导类加载器、扩展类加载器、应用程序类加载器。强、软、弱、虚/从不/不足/GC后/未知。加、验、准、解、初、使、卸。加、烟、准、姐、初、湿、鞋。原创 2023-03-27 15:40:38 · 248 阅读 · 0 评论 -
并发的可达性分析
原始快照要破坏的是第二个条件,当灰色对象要删除指向白色对象的引用关系时,就将这个要删除的引用记录下来,在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根,重新扫描一次。增量更新要破坏的是第一个条件,当黑色对象插入新的指向白色对象的引用关系时,就将这个新插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫描一次。显然在可达性分析刚刚开始的阶段,所有的对象都是白色的,若在分析结束的阶段,仍然是白色的对象,即代表不可达。表3-1 并发出现“对象消失”问题的示意。原创 2022-10-20 09:57:26 · 148 阅读 · 0 评论 -
G1垃圾回收器(面试被问到)
Garbage First收集器Garbage First(简称G1)收集器是垃圾收集器技术发展历史上的里程碑式的成果,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。早在JDK 7刚刚确立项目目标、Oracle公司制定的JDK 7 RoadMap里面,G1收集器就被视作JDK 7中HotSpot虚拟机的一项重要进化特征。从JDK 6 Update 14开始就有Early Access版本的G1收集器供开发人员实验和试用,但由此开始G1收集器的“实验状态”(Experimental)持原创 2022-10-20 09:55:43 · 294 阅读 · 1 评论 -
一把搞懂线程中stop、sleep、supend、yield、wait、notify
stop/supend/yield/wait/sleep停止暂停让步等待睡眠线程都死了锁也就不存在了不让出锁让出CPU让出锁不让出锁。原创 2022-10-13 23:56:15 · 1201 阅读 · 0 评论 -
java集合类
迭代器接口,这是Collection类的父接口。实现这个Iterable接口的对象允许使用foreach进行遍历,也就是说,所有的Collection集合对象都具有"foreach可遍历性"。这个Iterable接口只有一个方法: iterator()。它返回一个代表当前集合对象的泛型迭代器,用于之后的遍历操作Collection是最基本的集合接口,一个Collection代表一组Object的集合,这些Object被称作Collection的元素。原创 2022-10-12 21:20:36 · 108 阅读 · 0 评论 -
JDBC原理
JDBC是一个缩写,全称叫做java database connectivity,java数据库连接,通过java代码来操作数据库的一门技术。当我们需要向mysql数据库服务器发送大量SQL时,如果还是一条一条的执行SQL的话,需要不断的打开数据库连接关闭数据库连接,数据库的连接资源是最耗费时间的,造成资源浪费程序效率低下。批处理的过程:将一批SQL打成一个批次,统一发送给服务器,服务器接收到之后打开批,依次执行批中的SQL。减少数据库的开销。挺高程序的效率。2.2如何实现批处理。原创 2022-02-12 15:12:22 · 836 阅读 · 0 评论 -
IO流体系
其内部维护着一个缓冲区(字节数组),使用该流在读取一个字节时,该流会尽可能多的一次性读取若干字节并存入缓冲区,然后逐一的将字节返回,直到缓冲区中的数据被全部读取完毕,会再次读取若干字节从而反复。相反,我们有这样一个字节序列需要将其转换为对应的对象,这个过程就称为对象的反序列化。如果声明的类的对象序列化存到硬盘上面,之后随着需求的变化更改了类的属性(增加或减少或改名),那么当反序列化时,就会出现InvalidClassException,这样就会造成不兼容性的问题。该类的读写是基于指针的操作。原创 2022-02-10 17:13:00 · 314 阅读 · 0 评论 -
Volatile关键字
volatile 是一个类型修饰符。volatile 的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略。转载 2022-01-17 17:01:36 · 123 阅读 · 0 评论 -
JAVA8-Function接口
Java8增加了函数式编程这一新特性,我这几天也在慢慢学习,现在就来讲讲Function接口。转载 2022-01-17 17:02:39 · 281 阅读 · 0 评论 -
JAVA8-Future和CompletableFuture
如果还想处理结果(没有异常的情况),那就用handle,比whenComplete友好一些,handle不仅能处理异常还能返回一个异常情况的默认值。Future:我们的目的都是获取异步任务的结果,但是对于Future来说,只能通过get方法或者死循环判断isDone来获取。异常情况就更是难办。thenCombine:至少两个方法参数,一个为其它stage,一个为用户自定义的处理函数,函数返回值为结果类型。3. 如果有复杂任务,比如依赖问题,组合问题等,同样可以写好处理函数来处理(能应付复杂任务的处理)转载 2022-01-17 17:03:27 · 861 阅读 · 0 评论 -
JAVA8-Stream
Java 8 stream的详细用法旅行者yky 2019-01-08 23:12:43 156223 收藏 1264分类专栏: Java 8新特性 文章标签: java8 stream stream 用法版权一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行原创 2022-01-17 17:01:49 · 327 阅读 · 0 评论 -
JAVA内存模型
Java基础。原创 2022-01-16 19:10:11 · 224 阅读 · 0 评论 -
String,StringBuilder,StringBuffer三者的区别
01:String,StringBuilder,StringBuffer三者的区别一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。原创 2022-01-16 19:07:43 · 466 阅读 · 0 评论 -
java反射机制的核心原理
阿里P8技术心得:java反射机制的核心原理JAVA架构2018-11-26 08:00:00一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。2、Java垃圾回收(Garbage Collection):自动释放不用对象内.原创 2022-01-17 17:04:27 · 92 阅读 · 0 评论 -
java序列化
不过,强烈建议 所有可序列化类都显式声明 serialVersionUID 值,原因是计算默认的 serialVersionUID 对类的详细信息具有较高的敏感性,根据编译器实现的不同可能千差万别,这样在反序列化过程中可能会导致意外的 InvalidClassException。protobuf 在序列化和反序列化的时候,是依赖于.proto文件生成的builder类完成,字段的变化如果不表现在.proto文件中就不会影响反序列化,比较适合字段变化的情况。没错,这里就出现了java的序列化的概念。原创 2021-09-25 13:54:54 · 666 阅读 · 0 评论 -
JAVA集合体系总结
前面简要的宏观的介绍了几个常用的容器,Java中4大集合系统(Map、Set、List、Queue),常用的主要是前三种。我总结的比较肤浅,还有很多重要的特征,比如Map、Set、List的各个实现类之间的性能比较等,HashMap/HashSet插入自定义对象时,复写了equals方法、hashCode方法的不同情况对应不同结果,TreeMap/TreeSet插入自定义对象,复写equals方法、compareTo 方法的不同情况对应不同结果。很多书在这里着墨较多,以后有时间再补充。原创 2021-09-24 21:44:28 · 586 阅读 · 0 评论 -
01-01-JAVA基础-02-设计模式-03-创建型模式-02-原型模式
原型模式(原型设计模式)详解在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。原型模式的定义与特点原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通...转载 2021-05-07 23:41:54 · 106 阅读 · 0 评论 -
01-01-JAVA基础-02-设计模式-03-创建型模式-01-单例模式
八种单例模式对比1.什么是单例模式?单例模式就是让一个类在系统内存中只有一个实例对象,通常用一个静态方法提供。2.为什么要用单例模式?对于频繁创建和销毁的对象,以及创建重量级对象,耗时多的对象,都会增加内存开销,通过单例模式可以提高系统性能,节约内存资源。3.八种设计模式对比Method1:饿汉式(静态常量法)public class Singleton{private Singleton() {}private static f...原创 2021-05-07 23:37:01 · 63 阅读 · 0 评论 -
01-01-JAVA基础-02-设计模式-02-简介
JAVA设计模式总结之23种设计模式上一篇总结了设计模式的六大原则《JAVA设计模式总结之六大设计原则》,这一篇,正式进入到介绍23种设计模式的归纳总结。一、什么是设计模式 设计模式(Design pattern)是一套被反复...转载 2021-05-07 23:28:20 · 88 阅读 · 0 评论 -
01-01-JAVA基础-02-设计模式-01-UML类图
UML中的类图及类图之间的关系统一建模语言简介统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。统一建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简明,进一步缩短了设计时间,减少开发成本。它的应用领域很宽,...转载 2021-05-07 23:23:12 · 70 阅读 · 0 评论 -
01-01-JAVA基础-01-JVM-01-内存与垃圾回收-01-JVM与Java体系结构-03运行时数据区概述及线程
03运行时数据区目录:1、运行时数据区内部结构与JVM中的线程说明2、PC寄存器概述3、虚拟机栈4、栈的相关面试题5、堆6、方法区1、 运行时数据区内部结构与JVM中的线程说明2、 PC寄存器概述3、 虚拟机栈1、局部变量表2、操作数栈...转载 2021-05-07 23:18:59 · 75 阅读 · 0 评论 -
01-01-JAVA基础-01-JVM-01-内存与垃圾回收-01-JVM与Java体系结构-02-类加载子系统
02-类加载子系统目录:1:内存结构概述2:类加载器与类的加载过程3:类加载器分类4:ClassLoader的使用说明5:双亲委派机制其他6:沙箱安全机制1:内存结构概述2:类加载器与类的加载过程3:类加载器分类4:ClassLoader的使用说明5:双亲委派机制其他...转载 2021-05-07 23:12:29 · 79 阅读 · 0 评论 -
01-01-JAVA基础-01-JVM-01-内存与垃圾回收-01-JVM与Java体系结构-01-JVM与Java体系结构
01-JVM与Java体系结构目录:01-面向人群及参考书目02-Java及VM简介03-java发展的大事件04-虚拟机与Java虚拟机05-JVM的整体结构06-Java代码执行流程07-JVM的架构模型08-JVM的生命周期09-JVM的发展历程01-面向人群及参考书目02-Java及VM简介03-java发展的大事件04-虚拟机与J...转载 2021-05-07 23:07:56 · 72 阅读 · 0 评论 -
手写LinkList和arrayList
03-JAVAAPI-数据结构目录:1、自己写的LinkList和arrayList。2、基本数据结构:链表(list)为了加深理解,我就自己写了下LinkList和arrayList。下面贴下代码链表代码链表代码 public class MyTwoLinkedList<AnyType> implements Iterable...原创 2019-04-06 15:14:05 · 286 阅读 · 0 评论 -
Synchronized原理
分析Synchronized原理文章简介synchronized想必大家都不陌生,用来解决线程安全问题的利器。同时也是Java高级程序员面试比较常见的面试题。这篇文正会带大家彻底了解synchronized的实现。扩展阅读:「阿里面试系列」搞懂并发编程,轻松应对80%的面试场景「阿里面试系列」Java线程的应用及挑战「阿里面试系列」面试加分项,从jvm层面了解线程的启...转载 2019-04-06 15:07:16 · 153 阅读 · 1 评论 -
JAVA锁详解
独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类:公平锁/非公平锁可重入锁独享锁/共享锁乐观锁/悲观锁分段锁自旋锁乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。1.乐观...原创 2019-04-06 14:56:28 · 168 阅读 · 1 评论 -
强引用,软引用,弱引用,虚引用
强引用,软引用,弱引用,虚引用1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足...原创 2019-04-06 14:54:16 · 82 阅读 · 1 评论 -
HashMap多线程下发生死循环的原因
HashMap通常会用一个指针数组(假设为table[])来做分散所有的key,当一个key被加入时,会通过Hash算法通过key算出这个数组的下标i,然后就把这个插到table[i]中,如果有两个不同的key被算在了同一个i,那么就叫冲突,又叫碰撞,这样会在table[i]上形成一个链表。我们知道,如果table[]的尺寸很小,比如只有2个,如果要放进10个keys的话,那么碰撞非常频繁,于是一个O(1)的查找算法,就变成了链表遍历,性能变成了O(n),这是Hash表的缺陷。原创 2019-04-06 14:44:19 · 898 阅读 · 0 评论 -
永和打印发票
day01:业务需求+开发环境。原创 2018-11-13 18:17:20 · 1696 阅读 · 1 评论