
Java
文章平均质量分 92
_VioletHan_
这个作者很懒,什么都没留下…
展开
-
HashMap HashTable ConcurrentHashMap的原理与区别
HashMap底层数组+链表实现,可以存储null健和null值,线程不安全初始size=16,扩容newsize=oldsiez*2,size一定为2的n次幂扩容针对整个Map,每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入插入元素后才判断该不该扩容,有可能无效扩容(插入后如果扩容,如果没有再次插入,就会产生无效扩容)当Map中元素总数超过ENtry数组的75%,触发扩容操作,为了减少链表长度,元素分配更均匀计算index的方法:index=hash&(tab.leng转载 2021-04-15 11:16:47 · 414 阅读 · 0 评论 -
老生常谈,HashMap的死循环
老生常谈,HashMap的死循环问题原因分析实现案例分析总结问题最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,这是一个普遍的问题,虽然网上分析的文章很多,还是觉得有必须写一篇文章,让关注我公众号的同学能够意识到这个问题,并了解这个死循环是如何产生的。如果是在单线程下使用HashMap,自然是没有问题的,转载 2021-04-12 15:43:27 · 354 阅读 · 0 评论 -
java常用集合List、Set、Map区别及适用场景
这里写目录标题List、Set、Map区别及适用场景ArrayList与LinkedList的区别及适用场景ArrayList与Vector的区别及适用场景HashSe与TreeSet的区别适用场景HashMap、TreeMap、HashTable的区别及适用场景QueueList、Set、Map区别及适用场景List、Set都继承自Collection接口,Map不是List:元素放入有序,可重复,可通过迭代或下标获取元素。Set:元素放入无序,不可重复,重复元素会覆盖掉,可通过迭代获取元素,无转载 2020-05-21 14:56:44 · 407 阅读 · 0 评论 -
JEXL表达式引擎的使用
JEXL表达式引擎简单介绍如何使用简单介绍JEXL全称是Java表达式语言(Java Expression Language),简单地说,它可以配合Java程序运算一些简单的表达式。具体可以识别哪些表达式,其中包含最基本的加减乘除、大于小于等于、与或非、按位与、按位或、按位异或、按位补码,除此之外还可以调用Java程序中的方法,比如判断一个字符串是否包含某一个字符,就可以调用String的contains()方法来判断,在下文中会给出这样的示例。官方文档:http://commons.apache.or转载 2020-05-20 15:57:45 · 2718 阅读 · 0 评论 -
内省Introspector
概念内省Introspector是Java语言对JavaBean类属性、时间的一种缺省处理方法。JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object)或“VO”。方法比较少,这些信息存储在类的私有变量中,通过set()...转载 2020-02-04 12:09:39 · 252 阅读 · 0 评论 -
如何优雅的将Object转换成List
避免Unchecked cast‘java.lang.Object’ to ‘java.util.List<java.lang.String>’java中如果需要将一个object转成list,大部分人会直接使用强制类型转换:(List< String>) obj这样。这样强制转换编译会提示Unchecked cast: ‘java.lang.Object’ to ‘j...转载 2019-12-26 14:33:25 · 48783 阅读 · 5 评论 -
授权操作AccessController.doPrivileged()
https://benjaminwhx.com/2018/06/19/AccessController-doPrivileged/转载 2019-12-20 16:00:02 · 511 阅读 · 0 评论 -
java中Optional对象和JPA实体对应方法
介绍本文讨论有关将Java1.8Optional与JPA和Hibernate一起使用的问题Java 1.8 引入了java.util.Optional可能包含或不包含特定值的容器对象,结合使用Optional和stream非常方便。因此,您可能希望将某些可为空的实体属性公开为Optional。本文演示 了再实体属性上使用Optional的注意事项。后续补充https://vladmiha...翻译 2019-12-03 10:16:46 · 3083 阅读 · 0 评论 -
java中的Optional类避免空指针异常
空指针引用一个null引用的危害。首先创建一个类Computer,如图所示:调用如下代码:String version = computer.getSoundcard().getUSB().getVersion();如果计算机没有声卡,那么调用getSoundCard()方法肯定会报NullPointerException。怎么样避免?设计灵感Java8引入了一个新类叫做java...转载 2019-12-03 10:09:44 · 511 阅读 · 0 评论 -
java反射詳解
java反射機制http://tengj.top/2016/04/28/javareflect/https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.htmlgetResource()至于getResouce()方法的参数,你以class为出发点,再结合相对路径的概念,就可以准确地定位资源文件了,至于它的根目录嘛,你用不同...转载 2019-11-29 15:54:19 · 160 阅读 · 0 评论 -
Java漏洞修复:Codedex Unsafe Reflection
写个工具方法:然后对class name进行归一化处理:对于ascii字符和中文字符以及非合成字符,归一化后保持不变:原创 2019-11-28 20:24:34 · 4407 阅读 · 0 评论 -
ClassLoader.loadClass()与Class.forName()的区别
ClassLoader.loadClass()与Class.forName()大家都知道是反射用来构造类的方法,但是他们的用法还是有一定区别的。在讲区别之前,我觉得很有必要把类的加载过程在此整理一下。类的加载过程在java中,类装载器把一个类装入java虚拟机中,要经过三个步骤来完成:装载、链接、初始化。其中,链接又可以分为校验、准备和解析三步,除了解析之外,其他步骤是严格按照顺序完成的,各个...原创 2019-11-28 09:53:13 · 243 阅读 · 0 评论 -
Java 注解(Annotation)
https://www.runoob.com/w3cnote/java-annotation.html转载 2019-11-27 16:33:01 · 165 阅读 · 0 评论 -
Java反序列化漏洞的发现和修复
http://admin.code2sec.com/ji-yi-ci-javafan-xu-lie-hua-lou-dong-de-fa-xian-he-xiu-fu.html转载 2019-11-13 20:30:50 · 441 阅读 · 0 评论 -
java获取当前路径的几种方法
1、利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty(“user.dir”));//user.dir指定了当前的路径2、使用File提供的函数获取当前路径:File directory = new File("");//设定为当前文件夹try{System.out.println(directory....转载 2019-10-16 20:44:03 · 667 阅读 · 0 评论 -
cron表达式
cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,cron表达式有如下两种语法格式:1、Seconds Minutes Hours DayofMonth Month DayofWeek Year2、Seconds Minutes Hours DayofMonth Month DayofWeek每一个域可出现的字符如下:Seconds:可出现", -...原创 2019-08-08 14:42:25 · 189 阅读 · 0 评论 -
Java基础之多线程篇(线程创建与终止、互斥、通信、本地变量)
https://www.cnblogs.com/hjwublog/p/6133278.html转载 2019-08-20 10:47:39 · 165 阅读 · 0 评论 -
Java字符串去掉空格的几种方法
Method1:去掉首尾空格String str = "Hello Genius! ";System.out.println(str.trim());Method2:去掉所有空格,包括首尾、中间String str = "Hello Genius! ";String str2 = str.replaceAll(" ","");System.out.println(str2);...原创 2019-08-12 11:54:12 · 67203 阅读 · 7 评论 -
Scanner和BufferReader获取键盘及文件输入
1、Scanner获取键盘输入import java.util.Scanner;public class main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ String str1 = scanner....原创 2019-08-12 15:14:21 · 408 阅读 · 0 评论 -
IDEA Properties中文unicode转码问题
在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码。如下在project settings - File Encoding,在标红的选项上打上勾,确定即可git中上传代码中文乱码出现这种情况,需要去掉上述的小勾勾...原创 2019-08-28 21:30:22 · 337 阅读 · 0 评论 -
java多线程:结合多线程交替打印10次abc实例,对wait/notify使用的彻底理解图解
Object a = new Object();Object b = new Object();Object c = new Object();1、a.notifyAll() 唤醒调用a.wait()方法的线程2、c.wait() 释放c锁,使当前线程即pa线程而非pc线程休眠3、如果要唤醒线程pa,则需要使用c.notifyAll()唤醒,如果某个线程里面使用了c.notifyAll(...原创 2019-09-21 12:11:35 · 312 阅读 · 0 评论 -
解决IDEA 2018 3.2打开项目不能正常显示项目目录
新版IDEA更改了识别项目的规则1、关闭IDEA,删除.idea文件夹,再按照常规方式打开项目2、重新新建项目,将原项目文件夹及源代码文件复制进新工程即可...原创 2019-09-24 11:53:08 · 2167 阅读 · 0 评论 -
Java中@Override的作用
在Java中如果方法加上了@Override注解,表示子类重写了父类的方法,当然也可以不写,不过写上有如下好处:1、可以当注释用,方便阅读;2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。举例:在重写父类的o...原创 2019-08-08 14:34:38 · 1061 阅读 · 0 评论