JavaSE
文章平均质量分 78
狂奔的蜗牛已被占用
这个作者很懒,什么都没留下…
展开
-
虚拟机参数
堆内存分配:-Xms512m :设置JVM初始分配的堆内存为512M,默认是物理内存的1/64。 -Xmx512m :设置JVM最大允许分配的堆内存为512M,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整...转载 2019-03-16 18:17:21 · 648 阅读 · 0 评论 -
JVM字节码指令表
这次MSI比赛RNG VS PSG的半决赛BO5,前两场看的是真扎心;PSG这属于外卡赛区了吧,cryin居然被对面中单吊打~揪心。。JVM指令表常量型本地变量数组变量类型将值存入变量将值存入数组将值弹出栈顶复制栈顶数值指令数据交换指令变量计算变量增加指定值跳转指令返回指令获值/赋值指令调用方法指令创建对象指令异常指令锁指令常量型助记符指令含义nop什么都不做aconst_null将nul原创 2021-05-22 01:34:42 · 412 阅读 · 0 评论 -
JTable单元格处于编辑状态时,按一次enter键焦点水平移动(右移)
在JTable中如何用enter键代替tab键的功能,这是一个坑;在单元格处于编辑状态时按一次enter键,焦点水平移动;必须得按2次enter键才能水平移动;其实这个问题的关键在于:光标在单元格中时,按enter键时table的keylistener监听不到键入事件,因此在table上对enter注册的action事件不能被触发;为了能在单元格在编辑时也能触发enter事件,就必须对...原创 2018-07-17 23:55:17 · 1898 阅读 · 0 评论 -
Java Swing 学习中遇到的问题记录
问题一、焦点在单元格时,点击保存按钮获取不到正在编辑单元格的数据原因:用户正在编辑单元格时,点击table之外的组件,单元格还是处于编辑状态,此时如果点击的是“保存”按钮,由于单元格并没有接受用户的输入,导致当前编辑的单元格的值为null,用户输入的数据没有保存。同时,由于表格中的所有单元格是共用一个CellEditor,当用户新建一行时,通常会让光标移动到新建的行的某一个单元格,此时原来...原创 2018-06-03 17:02:06 · 1056 阅读 · 0 评论 -
Java swing组件介绍
本文链接: http://blog.csdn.net/xietansheng/article/details/72814531Java Swing 图形界面开发(目录)1. Swing简介Swing 是 Java 为图形界面应用开发提供的一组工具包,是 Java 基础类的一部分。Swing 包含了构建图...转载 2018-07-29 14:58:47 · 42573 阅读 · 8 评论 -
JTable 中如何限定输入长度?如何指定焦点?
问题一:在JTable 中如何限制输入的最大长度?解决方法:1、设置给JTable的单元格添加指定控件,JTextField;2、写一个类继承JTextField,设置JTextField编辑器与文本文档联系起来,在文本文档中可以对输入的内容过滤,通过setDocument(Document d)就可以了;3、添加第二步中 的Document对象,在这里使用 PlainDocume......原创 2018-06-12 23:32:07 · 567 阅读 · 0 评论 -
推荐一篇非常好的Java正则匹配文章
文章链接原创 2019-12-29 00:39:23 · 199 阅读 · 0 评论 -
Java自定义ClassLoader加载外部类
前几天在GitHub上下载了一个开源项目想要运行起来,启动这个项目会关联到数据库的一些表。因此想要运行起来还需要把数据库表建好。但是这个项目涉及到几十张表,并且作者没有给建表的SQL语句。(后续:吐血中,作者在项目给了sql语句。。。。。)想用这个项目那就只好自己建表了,但是几十张表自己建一时半会儿也弄不好。有这时间还不如重新找一个新项目于是果断放弃了这个项目,结果找了一圈发现这种类型的开源Java项目还真是少。于是,没办法还是回到这个项目。原创 2022-11-01 08:15:05 · 1707 阅读 · 0 评论 -
Java中String与StringBuilder处理字符串效率存在差异的源码分析
申明一点:这篇博客只讨论stringbuilder中append(String str)方法;请看清楚,参数类型为String;首先:字符串实际上就是一个char数组,也就是说String对象的值是保存在char[]中的;存储具体值的char[]在String中:可以看到在String中存储字符串的是用final修饰的不可变char[];在StringBuilder中:其构造方法是调用的父类Abs...原创 2018-03-24 13:22:48 · 479 阅读 · 1 评论 -
Random类生成随机数详解
random生成随机数,是利用一个初始化的种子:一个long型数字,经由先看看Random的构造方法 public Random() { this(seedUniquifier() ^ System.nanoTime()); } public Random(long seed) { if (getClass() == Random.class) this.seed = new AtomicLong(initialScram原创 2019-10-17 18:45:15 · 2115 阅读 · 0 评论 -
opencv+ArcFace人脸识别
前几天逛知乎看到有免费的工具来做人脸识别,觉得很有意思;心血来潮,想自己也搞一个人脸识别;不得不说虹软ArcFace真的是太好用了;对于我这种完全不懂人脸识别算法的人,也可以构建出人脸识别的应用;只需要调用封装好的API就行了。 只有ArcFace是不行的,因为这个只负责做图像对比;因此我们还需要一个能够调用摄像头获取原创 2021-07-02 19:47:45 · 1305 阅读 · 0 评论 -
HashMap中对红黑树find()的源码分析
红黑树是一种二叉搜索树,也就是说,对红黑树的查找其实就是对一个二叉搜索树的查找;原创 2022-05-13 06:26:37 · 720 阅读 · 3 评论 -
线段树的修改和求和
@线段树 网上有很多讲线段树原理的文章,如果你是第一次接触【线段树】这种数据结构,看这些文章估计会把你脑子弄得很晕。强烈推荐直接看这个视频:线段树;1.线段树有什么用?我们可以先看一个例子;给你一个很大的数组nums,现在有个需求,给定一个区间[left,right],求该区间nums的元素和:nums[left] +nums[left+1] +…+nums[right];常规做法直接for循环叠加就原创 2022-04-07 21:55:07 · 598 阅读 · 0 评论 -
Java注解(二)
上篇文章简单的介绍了注解的2个基本属性;1.在什么地方使用注解(由@target来决定);2.注解保留到什么时候(由@Retation决定); 了解了这2个基础的属性,加一点反射的知识就可以自定义一个简单的注解;这篇文章主要是介绍一下注解的另一些简单的东西:元注解,自定义注解@interface元注解 &nb原创 2021-06-09 21:27:03 · 169 阅读 · 2 评论 -
java注解(一)
注解有2个很基础的属性:@Target(作用对象)@Retention(保留策略)@Target作用对象:类,方法,字段,参数。。。。@Retention保留策略:SOURCE(源码阶段),CLASS(编译阶段),RUNTIME(运行时)...原创 2021-06-08 02:27:44 · 191 阅读 · 2 评论 -
HashMap(JDK1.8)指定初始容量
在阅读本文之前是不是认为,在初始化时HashMap对象时指定的大小就是HashMap的容量呢?(既然这么问那肯定有鬼~????????????????)<1> HashMap map = new HashMap(12);<2> HashMap map = new HashMap(2);<3> HashMap map = new HashMap(4);上面三个例子的初始容量分别是多少呢? &n原创 2021-05-25 18:59:42 · 1307 阅读 · 4 评论 -
JDK1.8 ArrayList默认长度及扩容分析
1.数组默认长度 看了多篇博客,全都讲数组默认长度是10;本着看源码加深印象的态度,看了下jdk1.8源码。 看了jdk源码之后,发现这些博客写的有些问题。1.1默认构造方法 /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() {...原创 2019-05-29 01:20:44 · 5858 阅读 · 9 评论 -
Java多线程理解
Java中的多线程你只要看这一篇就够了 引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有...转载 2018-08-04 21:49:14 · 798 阅读 · 0 评论 -
Java浅拷贝和深拷贝
最近用到了clone方法,并且遭遇到各种奇怪的bug;一,浅拷贝浅拷贝:对基本类型的数据是值拷贝,对String类型的拷贝也可以看作是值拷贝,这里不做讨论;浅拷贝是什么呢,先上一段代码,对着看代码很容易理解: Vector<Vector> data = new Vector<Vector>(); for(int i = 0;i<4;i++) { ...原创 2018-06-25 00:02:46 · 3192 阅读 · 0 评论 -
Java单链表反转(递归)
最近试着自己写了一个单链表反转;代码简单粗暴:直接上代码了,如果有描述不清楚的地方可以留言探讨。1、节点(Node)属性:2、反转的递归实现:3、测试代码:...原创 2018-04-14 18:02:07 · 4775 阅读 · 2 评论 -
Java位运算符
目录& 按位与| 按位或~ 按位非^ 按位异或<< 左位移>> 右位移>>> 无符号右移& 按位与Column 0Column 1Column 2Column 3Column 4操作数 10011操作数 20101操作符&0001总结:只有同为1,结果才是1;| 按位或Column 0Column 1Column 2Column 3Column 4原创 2021-04-11 17:24:47 · 174 阅读 · 0 评论 -
for-each循环删除数据报错问题
前2天在csdn论坛上看到一个问题,就是使用for-each时,删除数据报错的一个问题;当时第一眼看到这个问题还以为是删除时数组越界问题;结果显然不是。仔细debug看源码之后把问题搞清楚了,问题不难,写一篇文章记录一下;问题代码: List<Integer> list = new ArrayList<>(); for (int i原创 2021-05-11 16:12:17 · 1203 阅读 · 0 评论 -
HashMap的get源码分析
jdk1.8版本的HashMap数据结构有2种形态:数组 + 链表数组+ 红黑树当链表的长度超过 8 ,并且 容器的大小 >=64 时,会将链表转化成红黑树,这样可以提高查询效率;因为hashmap中可能存在多个链表,每一个链表的长度可能不同,有的链表长度可能会超过阈值,这时当hashmap的容量足够大时,map中链表长度超过阈值的链表就会转换成红黑树,而长度没有超过阈值的链表则继续保持链表的结构;因此在hashmap中可能会同时存在 :链表 + 红黑树这两种数据结构;如下图:原创 2021-04-18 16:28:16 · 679 阅读 · 0 评论 -
HashMap的扩容源码分析
经常有这样的说话,在HashMap中size达到扩容阈值时,会2倍扩容;那到底正不正确呢?我们看扩容的代码,resize(): final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap,原创 2021-04-18 15:12:25 · 1046 阅读 · 0 评论 -
ArrayList源码(JDK1.8)
目录1.ArrayList新建对象2.add2.1默认的初始化容量大小2.2add的自动扩容首先可以看看ArrayList类的继承结构(idea的diagrams绘画)1.ArrayList新建对象 1.1我们不指定容量时,ArrayList...原创 2021-04-11 01:10:59 · 371 阅读 · 9 评论 -
DCL单例模式及如何防御反射破坏单例
单例模式其实最主要的作用在于,在多线程的情况下只能获取到一个单一的对象,从而避免各种由此引发的问题;单例模式的3中写法目录1.直接在方法上添加synchronized2.DCL(双检测加锁)volatile关键字有什么作用?3.使用enum类来创建单例1.直接在方法上添加synchronizedprivate static Model instance;public static synchronized Model getInstan原创 2021-04-10 20:37:03 · 224 阅读 · 2 评论 -
enum类
ENUM类详解在单例模式的时候,有一种写法就是利用enum类的特性:每个实例只会被JVM加载一次;但是由于之前对enum类了解的并不多,尤其是定义实例的方式不同,为什么一个字段就是enum的实例?为什么每个实例只会被加载一次?其实要了解enum类最简单的方法就是反编译看源码!话不多说,上代码~这是一个简单的enum类:public enum TestEnum { YELLOW,RED,BLUE,BLACK}反编译这个类,用Jdk自带的工具:javap -verbose TestEn原创 2021-04-10 02:22:34 · 347 阅读 · 0 评论 -
被final修饰的变量到底能不能被修改
final:可以修饰类,方法,变量;对类的修饰:表示类不可以被继承;对方法修饰:表示该方法不能被子类重写;对变量修饰:表示该变量不能被修改;不知道大家有没有遇到一些很奇怪的现象,就是被final修饰变量好像能被修改;...原创 2021-04-08 17:50:55 · 2206 阅读 · 2 评论