Java
文章平均质量分 84
littlehaes
这个作者很懒,什么都没留下…
展开
-
ClassNotFoundException和NoClassDefFoundError的区别
ClassNotFoundExceptionClassNotFoundException属于Exception, 从下面的继承关系图中可以发现, ClassNotFoundException直接继承自ReflectiveOperationException(反射操作异常), 通过这一点可以得知ClassNotFoundException来自于反射操作, 比如forName.forName(String className)方法, ClassLoader的findSystemClass(String nam原创 2020-09-23 21:52:31 · 608 阅读 · 0 评论 -
设计模式之代理模式 静态代理和动态代理
welcome to my blog代理模式的定义《大话设计模式》中对于代理模式的描述: 代理模式为其他对象提供一种代理以控制对这个对象的访问.通俗点说就是, 通过一个中间对象访问目标对象.代理模式在生活中的体现租房时需要看房, 往往是中介的人带着咱们去看房, 并不是直接由房东带着去看房. 注意到房子是属于房东的属性, 但是我们并没有通过房东访问这个属性, 而是通过中介访问这个属性, 这...原创 2020-04-16 12:10:40 · 613 阅读 · 0 评论 -
Java list.toArray()和list.toArray(T[] a)
welcome to my blog做力扣的每日一题时发现可以使用toArray()方法将list转为数组, 之前没怎么用过这个方法list.toArray()方法不接收参数时, 返回一个Object数组感觉这个不常用, 毕竟平时用到的list都指定了类型ArrayList类中的toArray()方法源代码, 作用: 将elementData数组中的元素拷贝到长度为size的Object数...原创 2020-04-16 12:00:33 · 12383 阅读 · 3 评论 -
Java Arrays.copyOf()和System.arraycopy()
welcome to my blogSystem.arraycopy()是个native方法, 不是由java语言实现的.函数的声明如下, 作用: 将src中的元素拷贝到dest中, 更具体一点就是, 将src中处于[srcPos, srcPos + length - 1]这段区间上的元素拷贝到dst的[destPos, destPos + length - 1]这段区间上public st...原创 2020-04-16 11:12:01 · 903 阅读 · 0 评论 -
java 两个线程轮流执行 五种方法
welcome to my blog问题: 线程A向一个map中存数据, 然后线程B从map中取数据, 循环这个过程, 最终效果像: 线程A存入1, 线程B取出1, 线程A存入2, 线程B取出2, 线程A存入3, 线程B取出3… 直到线程A存入100, 线程B取出100问题的要求非常像生产者消费者模式, 但是有个很大的区别, 那就是生产者的生产和消费者的消费没有顺序要求, 但是这道题要求线程A...原创 2020-04-03 13:54:57 · 4640 阅读 · 0 评论 -
HashMap头插法为什么会出现死循环 产生循环链表的影响是什么
welcome to my blog问题描述: 并发情况下, hashmap在扩容时使用头插法可能出现循环链表, 后果就是调用get()方法时可能陷入死循环. 为什么会出现循环链表呢?产生循环链表的过程:如下所示的hashmap, 有两个元素, 它们的key分别是1和3, 假设再增加一个元素时会触发扩容操作此时线程1和线程2都执行put()操作, 便都会触发hashmap的扩容操作,假...原创 2020-04-01 11:46:05 · 15752 阅读 · 25 评论 -
Java Unsafe类中的getAndAddInt方法解释
welcome to my blogAQS没有使用synchronized锁,而是通过volatile和CAS(Compare And Swap)解决资源的线程安全问题;线程安全的三个要素:有序性, 可见性, 原子性volatile能够保证有序性和原子性CAS能够保证单个变量的原子性那么CAS是一种无锁操作, 那么它是如何保证变量的原子性呢?以AtomicInteger类中的getAn...原创 2020-03-28 10:43:51 · 4891 阅读 · 2 评论 -
Java 运行时常量池 字符串常量池 类的常量池 局部变量表
welcome to my blog根据《深入理解Java虚拟机》和网上搜索的资料总结一下这三个的区别类的常量池(存在于字节码文件中)类的常量池存在于字节码文件中, 也就是.class文件. 要注意的是, 类的常量池并不在内存中, 而是字节码文件的一段内容常量池中主要存放两大类常量: 字面量(Literal)和符号引用(Symbolic References)字面量比较接近于Java语言...原创 2020-03-27 16:50:54 · 1133 阅读 · 2 评论 -
Java String的intern()方法
welcome to my blog问题: String的intern()方法是什么情况?intern()是个native方法, 如下所示public native String intern();例子一://在堆中创建一个字符串对象; 这里不涉及字符串常量池String m = new String("abc"); //由于字符串常量池中没有记录过"abc", 所以调用inter...原创 2020-03-27 10:54:11 · 455 阅读 · 0 评论 -
linux执行java命令报错exec format error: java
welcome to my blog问题描述: 解压jdk8的安装包, 配置好环境变量后执行java命令报错: exec format error: java原因: 下载压缩包时没细看, 结果下载错了, 下载的是ARM架构的, 我用的ubuntu/linux是x64架构的下载正确的压缩包, 重新操作即可...原创 2020-03-06 13:40:14 · 10286 阅读 · 0 评论 -
此时不应有 \Common
welcome to my blog问题描述: elasticsearch启动时报错: 此时不应有 \Common原因: Java环境变量有问题, 也就是说此时没有用命令行执行java命令或者javac命令解决方法, 重新配置java环境变量我安装了三个版本的java, 如下图所示这里以1.11为主, 所以设置JAVA_HOME为C:\Program Files\Java\jdk-...原创 2020-03-03 15:22:30 · 3030 阅读 · 0 评论 -
Java BlockingQueue阻塞队列是线程安全的吗 是线程安全的
welcome to my blog问题描述 Java BlockingQueue 阻塞队列的take()和put()方法是线程安全的吗? 多线程下调用take()或者put()方法会出问题吗?看了BlockingQueue的三个实现类, 发现对应的方法中都使用了锁, 所以不会出现线程安全问题ArrayBlockingQueue //ArrayBlockingQueue的put()方法 ...原创 2020-03-01 11:11:53 · 11898 阅读 · 0 评论 -
intellij查看一个方法被哪些方法调用
welcome to my blog问题描述: 有的类中包含大量的方法, 如何找出某个方法被哪些方法调用?解决方法一 ctrl + alt + h解决方法二 alt + F7原创 2020-02-23 16:19:15 · 2439 阅读 · 0 评论 -
windows安装JDK8显示this version of the jdk is already installed
welcome to my blog问题描述: 准备看JDK8的源码, 安装时显示this version of the jdk is already installed, 但是并没有在C:\Program Files\Java目录下发现JDK8相关的文件夹解决方法: 打开控制面板→程序→程序和功能, 找到了Java8的文件, 卸载即可, 此时便可以安装JDK8了...原创 2020-02-22 22:10:41 · 36335 阅读 · 12 评论 -
windows 没有设置环境变量path 也能调用java
welcome to my blog问题描述: 把java相关的环境变量都删除了, 但是仍然可以在cmd中使用java命令原因: 安装JDK时, 会将java.exe, javaw.exe, javaws.exe复制到C:\Windows\System32目录下, 如下图所示, 而C:\Windows\System32在环境变量path中, 所以仍然可以调用java命令...原创 2020-02-22 22:05:43 · 1672 阅读 · 1 评论 -
Java Integer.highestOneBit()方法解释
welcome to my blog调用HashMap的put方法时, 如果table为空, 则会先创建一个大小为capacity的 Entry数组, 如果capacity的取值不是2的幂, 则会将其转换为2的幂, 具体就是使用highestOneBit(int i)方法实现的, 总体来说就是: 二进制形式下, capacity中最高位的1保持不变, 其余的1都置零public static ...原创 2020-02-22 16:57:19 · 563 阅读 · 0 评论 -
Java char[] 转 String String转char[]
String str = "hello world";//String转char[]char[] chs = str.toCharArray();// char[] 转 StringString str2 = new String(chs);原创 2020-02-12 10:52:13 · 197 阅读 · 0 评论 -
Java ArrayList<Integer>转为int[]数组
welcome to my blog一句话: al.stream().mapToInt(k -> k).toArray();如下所示ArrayList<Integer> al = new ArrayList<>();al.add(1);al.add(3);al.add(5);int[] arr = al.stream().mapToInt(k->k...原创 2020-02-10 15:07:56 · 4859 阅读 · 3 评论 -
java二维数组排序
welcome to my blogJava对二维整型数组排序, 按照第一个元素升序排序; 使用lambda表达式写的Comparatorpublic static void main(String[] args) { int[][] matrix = {{0, 30}, {15, 20}, {5, 10}, {-10, 20}}; //排序 A...原创 2020-02-04 15:58:51 · 4351 阅读 · 0 评论 -
jvisualvm 不是内部或外部命令,也不是可运行的程序
welcome to my blog问题描述: 学习JVM课程, 老师用到了jvisual这个工具, 但是我并没有这个工具解决方法: 去官网下载即可, 我是win10系统, 官网链接, 下载后, 解压, 打开bin目录下的visualvm.exe即可使用...原创 2020-01-31 17:57:44 · 4652 阅读 · 0 评论 -
Java newInstance()方法被弃用, 改用
welcome to my blog问题描述: newInstance()方法被弃用, intellij idea自动画了条横线解决方法: 改用getDeclaredConstructor().newInstance()Object object = clazz.getDeclaredConstructor().newInstance();...原创 2020-01-31 16:10:36 · 7975 阅读 · 0 评论 -
Linux下java添加jar
welcome to my blogLinux下java添加jar, 修改CLASSPATH即可示例, 添加fastjson-1.2.62.jar, 在终端中输入export CLASSPATH=$CLASSPATH:~/temp/fastjson-1.2.62.jar这样的改动只对当前终端有效, 如果觉得都次都输入这个命令很麻烦, 可以将这句话放到~/.bashrc的最后一行, 这样对...原创 2019-10-13 12:34:51 · 1716 阅读 · 1 评论 -
intellij添加jar包
welcome to my blog第一步,打开"File" → “Project Structure”第二步,添加jar包原创 2019-10-08 17:32:14 · 131 阅读 · 0 评论 -
IntelliJIDEA添加jar包
welcome to my blog1. File → Project Structure2. Modules → Dependencies → + → JARs or directories原创 2019-08-30 17:21:37 · 204 阅读 · 0 评论 -
Linux安装Java
1.下载JDK点击进入下载地址选择.tar.gz文件2. 将下载好的JDK传给linux我用的是scp命令传的3.解压JDKsudo tar -zxvf jdk-11.0.2_linux-x64_bin.tar.gz4.更新环境变量在~/.bashrc文件的最后添加三行, 保存后重启命令行即可 export JAVA_HOME=/home/matrix/Downloads/jd...原创 2019-08-30 16:36:34 · 426 阅读 · 0 评论 -
普林斯顿大学算法Week2:Deques and Randomized Queues(95分)--总结及代码
总结一.Deque目标: A double-ended queue or deque is a generalization of a stack and a queue that supports adding and removing items from either the front or the back of the data structure. Create a g...原创 2018-01-28 08:48:18 · 659 阅读 · 0 评论 -
普林斯顿大学算法Week3:CollinearPoints共线模式识别(99分)--总结及代码
总结(代码有详细注释)本课讲了归并排序,作业应用是排序进行共线的模式识别,java1.8中的排序用的是tim排序,结合了归并排序与插入排序,属于稳定排序:排序之后相同元素的相对位置会不会改变Point.java中有个非常重要的方法,compareTo(),它定义:纵坐标越小则点越小,如果纵坐标相同,那么横坐标越小则点越小.(如果作业中要求横坐标也是按顺序排列,那么排序后的点集映射到...原创 2018-02-03 12:12:45 · 1639 阅读 · 3 评论