学习心得
x183014563
咸鱼
展开
-
遍历子文件夹
遍历给定路径下的所有文件(包括子文件夹),并打印出最大值文件和最小值文件的相关信息,代码未优化,速度有点寒碜,16万个文件遍历完共花费60000ms-62000ms,测试环境:i7 6500处理器。import java.io.File;public class TestFile { private static int max=0;//记录最大文件的下标 private stati...转载 2019-03-15 11:15:32 · 237 阅读 · 0 评论 -
不同的对象可能有相同的hashcode(非自定义)
在Java中有HashCode的说法,以前以为HashCode是唯一的后来看了下String类里面的HashCode方法如下:public int hashCode() {int h = hash; // hash默认值为0 int len = count;// count是字符串的长度if (h == 0 && len > 0) {...转载 2019-03-31 18:42:14 · 531 阅读 · 0 评论 -
Integer中的小问题
首先看下代码,在心里想象一下运行结果:public class TestInteger { public static void main(String[] args) { Integer a=new Integer(127); Integer b=new Integer(127); Integer a1=127; Integer b1=127; Integer a2...转载 2019-03-31 20:25:09 · 191 阅读 · 0 评论 -
使用反射机制分析类(代码)
打印一个类的全部信息,包括域,方法和构造器(代码如下)。public class PracticeReflect { //用来分析指定类的所有域的信息 public static void printFields(Class theClass) { Field[] fields=theClass.getDeclaredFields(); System.out.println(...转载 2019-04-01 15:54:15 · 94 阅读 · 0 评论 -
通过反射实现Arrays.copyOf(original, newLength)
通过这一个方法即可扩展任意的数组: 主要思想是通过反射获取到传入进来的数组类型,并新建一个长度为newLength的对象数组(该数组的类型与传入的数组类型是一样的),最后通过System.arraycopy()将传入的数组赋值给那个新建的数组并return该数组代码:public class TestReflect { public static void main(S...转载 2019-04-03 19:03:08 · 241 阅读 · 0 评论 -
个人对JavaGuide上某些知识点做一个小结
JavaGuide是github上的一个五万星的项目,该项目包含java的大部分知识点和面试题链接:https://github.com/Snailclimb/JavaGuide1.finally块不会执行的四种情况 (1)finally语句的第一行发生异常(个人感觉其实第一行是执行了的,只是执行时发生了异常) (2)在前面的代码中用了System.exit(int)已退出...原创 2019-08-18 15:55:10 · 1096 阅读 · 0 评论 -
logback寻找配置文件的顺序
原文地址(1)使用logback.configurationFile环境变量的设置(2)使用classpath中的logback.groovy(3)使用classpath中的logback-test.xml(4)使用classpath中的logback.xml(5)查找com.qos.logback.classic.spi.Configurator接口实现类,调用实现类的con...原创 2019-08-20 08:57:21 · 174 阅读 · 0 评论 -
Java中(2.0-1.1)输出不是0.9的问题
问题:System.out.println(2.0d-1.1d);输出结果为:0.8999999999999999跟据下面在这个例子来说明原因(其他情况类似):(1)System.out.println(0.01f+0.04d);输出结果为:0.04999999977648258(2)System.out.println(0.01f+0.04f);输出结果为:0.049999997...转载 2019-03-24 15:05:34 · 777 阅读 · 0 评论 -
事务提交失败的回滚操作
Connection和Statment分别进行try-with-resource,然后在Statment的catch异常,catch住了之后,进行rollbackpublic class TestJDBC { public static void main(String[] args) { try { Class.forName("com.my...转载 2019-03-30 13:33:43 · 1710 阅读 · 0 评论 -
Java求质数的两种方法
以下是用java实现求质数的两种方法的代码,测试环境:i7 6500处理器试除法:(求一千万以内质数和需花费4s-5s)public class FindPrime1 { public static void main(String[] args) { long start = System.currentTimeMillis(); int n=10000000;//求n以内的...转载 2019-03-11 13:36:29 · 835 阅读 · 0 评论 -
比较二叉树排序,选择排序和冒泡排序的效率
先看下结果:代码如下:import java.util.ArrayList;public class Node { private Integer node;// 节点的值,即处于该节点的Hero对象 private Node leftNode;// 左子节点 private Node rightNode;// 右子节点 public void addNode(int...转载 2019-03-20 15:44:48 · 792 阅读 · 1 评论 -
拆分文件和合并文件
找到一个大于100k的文件,按照100k为单位,拆分成多个子文件,并且以编号作为文件名结束。public static void main(String[] args) throws FileNotFoundException, IOException { File f1=new File("F:/test/lol.exe");//待拆分文件的路径 FileInputStream f...转载 2019-03-16 20:34:17 · 807 阅读 · 0 评论 -
查找内容性能比较(使用与不使用HashMap)
方法一:不使用HashMap,而是使用ArrayList,然后通过for循环找出来,并统计花费的时间方法二:借助HashMap,找出结果,并统计花费的时间结果如下:源代码如下:import java.util.ArrayList;import java.util.HashMap;public class TestHashMap { public static void m...转载 2019-03-20 19:36:16 · 543 阅读 · 0 评论 -
简单重写StringBuffer
经测试,append()char字符和两个有参构造函数比官方代码效率稍高,其他方法如append()String字符串,insert()等都比原方法的效率要稍低;capacity扩增的方式为capacity=(int)(capacity*1.5),注意,capacity乘的参数越大浪费的内存可能更大,但效率会有所回升,效率回升的原因我想有可能是value=new char[capacity]或Sy...转载 2019-03-13 16:34:13 · 464 阅读 · 2 评论 -
生产者消费者问题
1. 使用栈来存放数据 1.1 把栈改造为支持线程安全 1.2 把栈的边界操作进行处理,当栈里的数据是0的时候,访问pull的线程就会等待。 当栈里的数据是10的时候,访问push的线程就会等待2. 提供一个生产者(Producer)线程类,生产随机大写字符压入到堆栈3. 提供一个消费者(Consumer)线程类,从堆栈中弹出字符并打印到控制台4. 提供一个测试类...转载 2019-03-25 20:12:41 · 510 阅读 · 0 评论 -
使用非原子性的自增和原子性的自增进行多线程测试。
结果截图如下:原因分析:因为非原子性的自增一共包括3个原子性操作(步骤1:取i的值 步骤 2:i+1 步骤3:把新的值赋予i),当多个线程对其进行操作时,如一个线程在步骤1取i 的值结束后,还没有来得及进行步骤2,另一个线程就对还没完成自增的i进行自增了,导致i的值经过这两个线程的自增操作后i的值只加1。源代码如下:public class Test1_5 { privat...转载 2019-03-29 16:30:26 · 216 阅读 · 0 评论 -
自定义简单的栈MyStack
设计一个支持泛型的栈MyStack设计这个类的时候,在类的声明上,加上一个<T>,表示该类支持泛型。T是type的缩写,也可以使用任何其他的合法的变量,比如A,B,X都可以,但是一般约定成俗使用T,代表类型。public class MyStack<T> { LinkedList<T> values = new LinkedList&l...转载 2019-03-23 11:21:11 · 1082 阅读 · 0 评论 -
什么情况下用“+”运算符进行字符串连接比调用StringBuffer/StringBuilder 对象的append方法连接字符串性能更好?
https://blog.csdn.net/chang384915878/article/details/79535708转载 2019-08-29 10:32:48 · 298 阅读 · 0 评论