![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 58
huanghanqian
少年,你还很菜。
展开
-
使用MyBatis动态生成sql
问题举例:有一个带占位符的模板sql,语法跟mybatis的XML是类似的,如select period, sum(amount) as sum from abc where type = '${type}' <if test='period != null'> and period = '${period}' </if><if test='debtType != null'> and debt_type = '${debtType}'原创 2021-08-19 14:38:16 · 4791 阅读 · 1 评论 -
Java8中findAny和findFirst的区别
试验了一下java stream中的findAny和findFirst,发现都返回了列表中的第一个元素。那么,这两种方法的区别是什么呢?查看了一下Java API document:findFirst:findFirstOptional<T>findFirst()Returns anOptionaldescribing the first element ...原创 2019-10-29 20:44:38 · 89571 阅读 · 6 评论 -
Java将数组用固定分隔符拼接成字符串
比如有一个数组是 String[] array = [ 'a', 'b', 'c' ],我希望把该数组中每个元素直接用 ' - ' 来拼接,得到 ”a-b-c",那么应该如何实现呢?最传统的办法就是:String result = array.get(0);for(int i = 1; i < array.size(); i++) { result = result + ...原创 2019-01-12 15:40:36 · 52964 阅读 · 1 评论 -
MyBatis批量插入几千条数据慎用foreach
近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。mapper configuration是用foreach循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo代码)<insert id="batchInsert" parameterType="java.util.List"> ...原创 2018-10-19 11:35:02 · 50101 阅读 · 26 评论 -
Java 7新特性:try后面的圆括号能够自动关闭资源
在导师的 previewTemplate 代码中看到,try后面跟了一个圆括号,里面申明了一个 InputStream input,当时并不明白为什么要放在圆括号里,不直接放在 {} 里,直到最近自己开始写 batchDownload,才明白其中的原因。1 自动关闭资源介绍Java 7增强了try语句的功能——它允许在try关键字后跟一对圆括号,圆括号可以声明,初始化一个或多个资源,此处的...原创 2018-09-07 17:10:59 · 3167 阅读 · 0 评论 -
ConcurrentHashMap在JDK1.7和1.8中的不同实现
知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。ConcurrentHashMap在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap,为了对ConcurrentHashMap有更深入的了解,本文将对ConcurrentHashMap1.7和1.8的不同实现进行分析。...转载 2018-08-19 13:43:19 · 839 阅读 · 0 评论 -
多线程 ForkJoinPool 详解
背景:ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行;当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。这种思想值得学习。使用Java7 提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合并成总的计算结果。ForkJoi...转载 2018-08-19 13:36:41 · 5123 阅读 · 2 评论 -
java中String s="abc"及String s=new String("abc")的区别
《String的特性》1、String类是final的,不可被继承。2、String类是的本质是字符数组char[], 并且其值不可改变。3、Java运行时会维护一个String Pool(String池),JavaDoc翻译很模糊“字符串缓冲区”。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法原创 2018-03-11 11:04:50 · 4755 阅读 · 0 评论 -
java的四种引用,强弱软虚,用到的场景
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: 1Object o=new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出Out转载 2018-03-05 10:43:20 · 226 阅读 · 0 评论 -
Java设置大数非科学计数法显示
今天在编程过程中发现:java中,当要显示的数字是一个很大或者很小的数字时,系统会默认使用科学计数法显示。例如:[java] view plain copydouble testNum = 0.0001078137; System.out.println(testNum); 运行结果为:1.078137E-4。但是转载 2017-09-19 23:46:10 · 2297 阅读 · 1 评论 -
java如何修改String中的一个字符
String str = "Test string";StringBuilder strBuilder = new StringBuilder(str);strBuilder.setCharAt(1, 'X');str=Builder.toString();String不可变StringBuilder可变参考:http://stackoverflow.com/questi原创 2017-08-21 13:30:54 · 20759 阅读 · 0 评论 -
Java中HashMap遍历的四种方式
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Objec转载 2017-08-04 20:45:27 · 818 阅读 · 0 评论 -
准确删除List中的整数值
List为移除数据提供了两个remove的方法:1. 按照下标索引删除2. 按照值删除,删除第一个符合的值对象。public interface List extends Collection { //省略其它方法,只保留remove方法 /** * Removes the first occurrence of the specified element转载 2017-06-15 00:32:33 · 2070 阅读 · 0 评论 -
ArrayList<Integer>如何转换为int[]数组
网上搜Arraylist和数组互相转换的方法时,举的例子都是String类型的。比如:但是对于int类型如果这样写:ArrayList a=new ArrayList();int[] array=(int[])a.toArray(new int[size]);//会报错则会报错,这是因为int[]并不等同于Integer[]。因此如果换成Integer[]数组,则能正确运行。原创 2017-06-29 17:13:49 · 101020 阅读 · 13 评论 -
HashMap和HashSet的区别
转自http://www.importnew.com/6931.htmlHashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使转载 2017-06-29 16:57:39 · 13266 阅读 · 1 评论 -
Java内存管理与垃圾回收
Java是在JVM所虚拟出的内存环境中运行的。内存分为栈(stack)和堆(heap)两部分。我们将分别考察这两个区域。 栈栈的基本概念参考纸上谈兵: 栈 (stack)。许多语言利用栈数据结构来记录函数调用的次序和相关变量(参考Linux从程序到进程)。在Java中,JVM中的栈记录了线程的方法调用。每个线程拥有一个栈。在某个线程的运行过程中,如果有新的方转载 2016-03-21 18:58:28 · 362 阅读 · 0 评论 -
JVM 类加载过程简明版
类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linking)。加载: 在加载阶段,虚拟机主要完成三件事:1.通原创 2016-03-21 15:46:41 · 346 阅读 · 0 评论 -
java循环删除列表元素
在循环中删除一个列表元素 考虑下面的代码,迭代过程中删除元素:ArrayList list = new ArrayList(Arrays.asList("a", "b", "c", "d"));for (int i = 0; i < list.size(); i++) { list.remove(i);}System.out.println(list);原创 2016-03-21 14:36:20 · 496 阅读 · 0 评论 -
java线程安全
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为转载 2016-03-20 11:09:22 · 364 阅读 · 0 评论