![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 53
有时候我也会
这个作者很懒,什么都没留下…
展开
-
Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can
使用top及jstack查看某个java线程CPU占用情况时报错:Unable to open socket file: target process not responding or HotSpotVM not loaded The -F option can be used when the target process is not responding出错原因:jstack命令使用了jstack +线程号(不是具体线程号,而是java进程号),具体使用如下:top命令查看CPU占用情原创 2022-03-30 16:22:52 · 9183 阅读 · 1 评论 -
com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed
Json文件格式正确情况下,比如我的json文件内容为:{"name": "中秋节快乐","year": "25","width": "180","high": "120"}那肯定不是Json文件有问题,应该是读取的时候出了问题,我的文件读取方法:public static String readJson(String path) throws IOException { StringBuffer data = new StringBuffer(); InputStr原创 2021-09-18 15:54:12 · 4739 阅读 · 0 评论 -
snakeyaml读取yaml/yml配置文件数据
1、添加maven依赖<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.26</version></dependency>2、yml或yaml文件准备一个配置文件spring: thymeleaf: mode: HTML profiles:原创 2021-09-17 16:17:21 · 1868 阅读 · 4 评论 -
class.getResourceAsStream与class.getClassLoader().getResourceAsStream区别
1、基本使用:创建一个配置文件classloaderResource.properties用于数据读取,以及一个测试类GetResourceTestimport java.io.IOException;import java.io.InputStream;import java.util.Properties;public class GetResourceTest { public static void main(String[] args) throws IOException原创 2021-09-17 11:43:29 · 648 阅读 · 0 评论 -
判断java中String、自定义对象、集合为空的方法
一、仅判断是否分配内存如果仅判断该对象、集合是否已被分配内存(即null还是非null),而不用考虑是否有值,则直接使用 object == null判断即可。二、如果需进一步判断要进一步判断该对象值、集合元素是否存在,(或者说当值或元素不存在也判定为空)则继续:2.1 String判断如果是String,可以使用StringUtils.isEmpty(),很多框架都提供StringUtils工具类,其中常用的是org.apache.commons.lang3与org.springframewor原创 2021-08-31 10:18:02 · 2305 阅读 · 0 评论 -
JDBC连接mysql、创建表、操作数据、PreparedStatement防注入、sql语句返回值类型知识汇总
JDBC连接过程:import java.sql.*;/** * Description: * Created by CWG on 2020/10/29 21:05 */public class ConnectionTest { public static void main(String[] args){ String user = "root"; String password = "cheng"; String url = "jd原创 2020-10-31 11:32:36 · 933 阅读 · 2 评论 -
Java泛型失效的两种情况
反射失效:import java.lang.reflect.Method;import java.util.ArrayList;public class IgnoreGeneric { public static void main(String[] args) throws Exception { ArrayList<Integer> list = new ArrayList<>(); list.add(2); li原创 2020-10-27 21:47:48 · 1219 阅读 · 0 评论 -
并发下HashMap头插会造成死循环情况说明
说明:JDK1.8之前采用头插,即在链表结构上每次都把数据放在链表头部。JDK1.8采用尾插方法并发头插死循环问题:比如有两个线程同时进行rehash,要将链表进行重新排列rehash前链表结构为:A --> B线程1进行操作:遍历原链表,首先获得节点A,操作挂起,线程2进入。(线程1数据不会提交)线程2进行操作:遍历原链表,以头插方式遍历执行,执行完成 B – > A。(线程2数据未提交)线程1继续执行:遍历原链表,头插方式执行,完成 B – > A,此时线程2数据原创 2020-10-21 16:50:33 · 1754 阅读 · 1 评论 -
Java异常中受检异常&非受检异常与RuntimeException异常关系
Error 和 Exception:所有异常都是 Throwable 的子类,分为 Error 和 Exception。Error 是 Java 运行时系统的内部错误和资源耗尽错误,例如 StackOverFlowError 和 OutOfMemoryError,这种异常程序无法处理。Exception异常中主要包含IOException与 RuntimeException,并不只是这两种,这两种占比较大,其他还有像InterruptedException与ClassNotFoundExceptio原创 2020-10-14 20:22:40 · 1005 阅读 · 0 评论 -
Java数组与List 相互转换方法详解
数组转List:通过遍历赋值就不说了通过Arrays.asList() 与 Collections.addAll()方法public static void main(String[] args) throws Exception { Integer[] arr = {1, 2, 3, 4, 5}; List<Integer> list = Arrays.asList(arr); System.out.println("通过Arrays.asList(原创 2020-09-22 10:29:33 · 262 阅读 · 0 评论 -
java枚举类使用 == 还是equals来进行比较
相同之处当我们对对象进行比较时通常用重写过的equals来进行比较,因为 == 比较的是对象的地址。而对于Enum来说,二者皆可拿来进行比较运算,简单示例:public enum Season0 { SPRING,SUMMER,AUTUMN,WINTER}public enum Season1 { SPRING,SUMMER,AUTUMN,WINTER}public class enum_tset { public static void main(String[原创 2020-09-16 20:13:13 · 2575 阅读 · 0 评论 -
关于Integer.MAX_VALUE + 1 = Integer.MIN_VALUE 问题
1、负数二进制表示由于计算机中数据都以二进制表示,而负数的二级制是根据正数二进制取补码(补码就是先取反码,然后加1)得到,如:一个int 类型的数值为5,其长度为32位,二进制表示为00000000 00000000 00000000 00000101-5是根据5的二进制表示每一位先取反码(0变1,1变0)得到11111111 11111111 11111111 11111010再对反码加1,得到-5的二进制表示11111111 11111111 11111111 111110112、原创 2020-09-11 11:20:11 · 3313 阅读 · 1 评论 -
String的concat方法与join方法
String的concat方法对当前字符串追加字符串(concat只能追加字符串,+既可以追加字符串又可以追加字符、数字)@Testpublic void test(){ String s = "abc"; s = s.concat("def"); System.out.println(s); //abcdef}join方法,用某字符串来拼接字符串数组,使之拼为一个新的字符串@Testpublic void test(){ String[] str = .原创 2020-09-10 20:19:30 · 1063 阅读 · 0 评论 -
Atomic原子类常用方法总结(包含四大类型)
学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇原创 2020-09-03 18:54:32 · 5893 阅读 · 1 评论 -
ThreadLocal两个简单示例
ThreadLocal作用:通常我们创建的变量可以被任一个线程访问并修改,如果想实现每一个线程都有自己专属本地变量时,该变量不受其他线程影响,此时可以使用ThreadLocal。ThreadLocal有三个常用方法,set()、get()、remove()。ThreadLocal<Integer> local = new ThreadLocal<>();事实上调用set()方法,是对当前线程进行赋值。而且当前线程的值保存在当前线程的ThreadLocalMap中,而不是原创 2020-09-02 20:56:36 · 1153 阅读 · 0 评论 -
synchronized修饰静态方法与实例方法
一、synchronized修饰实例方法:synchronized修饰实例方法,实际上是对调用该方法的对象加锁。场景1:同一实例对象在两个线程中分别调用该对象的两个同步实例方法public class Car { public synchronized void runing1(Thread thread){ System.out.println(thread.getName()+ " car1 得到锁"); System.out.println("------原创 2020-09-02 14:37:26 · 4675 阅读 · 1 评论 -
Java二维数组排序(按照某一列值大小)
利用Comparator接口来实现:二维数组排序,按照某一列列大小对数组进行排序。二维数组的排序直接调用Arrays.sort(); 虽然不会出现编译错误,但运行时会出现以下错误提示:说明不可以这样用,而我们又想对它排序,就可以使用Comparator来外部实现排序了,这里举一个按照第二列数字大小进行排序的例子:public class ArrayCompare { public static void main(String[] args) { int[][] a原创 2020-09-01 20:17:38 · 4870 阅读 · 4 评论 -
Comparable与Comparator用法详解
简介:Comparable接口出自java.lang包,它有一个compareTo(Object obj)方法用来比较或排序Comparator接口出自java.util包,它有一个compare(Object obj1、Object obj2)方法用来排序。当我们需要对集合进行自定义排序或对象之间进行比较时,就需要重写compareTo()或者compare()方法。Comparable:Comparable是一个对象支持自比较所需要实现的接口,如String、Integer自己就实现了Com原创 2020-09-01 20:04:51 · 1057 阅读 · 0 评论 -
Arrays.copyOf()、Arrays.copyOfRange()与System.arraycopy()用法
public class Test { public static void main(String[] args) { int[] a = {1,2,3,4,5,6,7,8}; //数组b复制a的前五个元素 int[] b = Arrays.copyOf(a,5); //数组c复制a中以下标2开始到6结束的元素,不包含下标为6的元素, int[] c = Arrays.copyOfRange(a,2,6);原创 2020-08-09 09:42:36 · 413 阅读 · 0 评论 -
java中 indexOf() 与lastIndexOf() 用法详解
indexOf()方法:直接上代码:String s = "01234560123456";int a = s.indexOf('1'); // 返回第一个字符1的下标int b = s.indexOf("23"); // 返回第一个字符串“23”的下标int c = s.indexOf('1',5); // 以下标5开始,返回第一个字符1的下标int d = s.indexOf("23",5); // 以下标5开始,返回第一个字符串“23”的下标System.out.println(a原创 2020-08-31 15:22:43 · 10543 阅读 · 2 评论 -
为什么要用动态代理?静态代理与动态代理详解
代理模式:代理模式在Java中特别常见,如spring AOP功能就是用代理来实现的。代理模式作用是:在不修改被代理对象功能的基础上,通过对代理类进行扩展,进行一些功能上的附加与增强。一般使用代理模式我们需要先定义一个接口,静态代理只是一种简单的java代码功能扩展。而动态代理利用了反射机制,使用更简单,但背后逻辑…先说明一点,自动代理代理的是接口,而不是类,Proxy类产生的代理对象是Proxy的一个实例,这个实例实现了我们定义的接口静态代理:举一个黄牛代理买票的例子:public inter原创 2020-08-29 15:11:54 · 1904 阅读 · 0 评论 -
(Integer) 128 == (Integer) 128 为false详细解读
所学知识这里涉及到的知识点为Java的自动装箱、拆箱问题先看简单示例:第一组输出为true,第二组false,第三组false。第二组false很正常因为Integer对象地址不同,但为什么第一组与第三组结果不同,不是应该一样的吗? Integer a = 127; Integer b = 127; System.out.println(a == b); Integer c = new Integer(128); Integer d = new Integer(原创 2020-08-28 14:45:25 · 1905 阅读 · 1 评论 -
Java中将List中的值赋给另一个List几种方法实现
Java中引用变量之间进行值传递不可以直接赋值,比如两个数组或者List通过a=b 来直接复制的话,b发生变化a也会改变,因为a,b指向同一地址。 List<Integer> a = new ArrayList<Integer>(){{add(1);add(2);add(3);}}; List<Integer> b = a; a.add(4); System.out.println(a.toString()); .原创 2020-08-19 21:46:59 · 19049 阅读 · 1 评论 -
Queue接口中add()与offer(),remove()与poll(),element()与peek()方法区别
1、add()与offer():都是在队列尾部增加元素,区别在于队列满时,add方法会抛出队列已满异常,offer方法返回false表示队列已满。2、remove()与poll():都是删除队列的头元素,remove方法在队列为空的情况下将抛异常,而poll方法将返回null。3、element()与peek():都是返回队列的头元素,但不删除头元素,element方法在队列为空的情况下,将抛异常,而peek方法将返回null。...原创 2020-08-15 11:11:05 · 811 阅读 · 0 评论 -
JAVA字符运算
一、字符转数字不可以用parseInt来转换,无法通过编译输出ch1的ASCII码值57,而不是9输出9两个字符减两次字符0才对,输出18.原创 2020-08-02 10:44:12 · 152 阅读 · 0 评论 -
SpringBoot项目中静态资源加载失败,那可能是自定义配置类继承了WebMvcConfigurationSupport这个类
1、跟着视频课学SpringBoot,自己的一个html登录页面就是在浏览器中渲染不出来效果,很郁闷。我的项目结构如下:2、想要打开login.html页面,该页面用到了静态资源中的css文件及svg图片,视频课中效果和打开效果对比 3、发现静态文件都没有显示出来,然后单独试了试直接访问css文件或者其他文件,发现部分可以访问,部分不能访问。实际上是都访问不到的,有的可以访问到是因为之前访问过,浏览器中存在缓存,清除缓存后项目中静态资源都访问不到了。(浏览器清除缓存快捷键ctr原创 2020-07-29 18:49:25 · 1532 阅读 · 0 评论 -
Java中字符串以小数点分割时无效,String s = “12.34“; String[] ss = split(“.“);分割结果为空
String s = "12.34"; String[] ss = split(".");//输出结果ss为null解决:小数点 . 是正则表达式中特殊标记,因此需要转义,改为:String[] ss = split("\\.");原创 2020-07-24 20:30:03 · 411 阅读 · 0 评论