随笔 - 203
文章 - 0
评论 - 18
阅读 -
24万
随笔分类 - java基础
一些关于简单使用的笔记
easyexcl使用心得
摘要:官方网站 https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read#最简单的读的excel示例 java代码: package org.example.easyExc.controller; import com.al
阅读全文
多线程环境下的 sql 事务问题
摘要:背景介绍 1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。 2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行
阅读全文
多线程并发执行任务,汇总结果集,Future、FutureTask、CompletionService、CompletableFuture
摘要:目录 1.Futrue 原理: demo: 建议:此种方法可实现基本目标,任务并行且按照完成顺序获取结果。使用很普遍,老少皆宜,就是CPU有消耗,可以使用! 2.FutureTask 原理: demo: 建议:demo1在特定场合例如有十分耗时的业务但有依赖于其他业务不一定非要执行的,可以尝试使用。
阅读全文
存 IP 地址,用什么数据类型比较好?
摘要:在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储IP地址,而不是使用字符串。 但是没有给出具体原因。为了搞清楚这个原因,查了一些资料,记录下来。相对字符串存储,使用无符号整数来存储有如下的好处: 节省空间,不管是
阅读全文
使用线程池获取执行结果,CountDownLatch+ThreadPool,FutureTask+ThreadPool 并比较
摘要:代码前提: BillElectronicItemAttachment只是一个普通的实体类 CountDownLatch+ThreadPool代码 线程代码: package com.tuniu.app.thread; import com.tuniu.BillElectronicItemAttach
阅读全文
bigdecimal比较
摘要:bigdecimal比较 public static void main(String[] args) { BigDecimal a = new BigDecimal ("101"); BigDecimal b = new BigDecimal ("111"); BigDecimal c = new
阅读全文
Java8的方法引用和Optional类
摘要:方法引用 方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方法引用,通过实例对象::实例方法,如 str::substring 构造方法引用,通过类名::new, 如
阅读全文
BigDecimal一定不会丢失精度吗?
摘要:举例: System.out.println(0.05 + 0.01); System.out.println(1.0 - 0.42); System.out.println(4.015 * 100); System.out.println(123.3 / 100);输出:0.06000000000
阅读全文
transient关键字的作用及使用方法
摘要:1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开
阅读全文
通过Executors创建线程池和注意小点
摘要:Executors提供的工厂方法有: FixedThreadPool(n):创建一个数量固定的线程池,超出的任务会在队列中等待空闲的线程,可用于控制程序的最大并发数。CachedThreadPool():短时间内处理大量工作的线程池,会根据任务数量产生对应的线程,并试图缓存线程以便重复使用,如果限制
阅读全文
反射
摘要:关于java.lang.Class类的理解1.类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾)。接着我们使用java.exe命令对某个字节码文件进行解释运行。相当于将某个字节码文件加载到内存中。此过程就称为类的加载。加载到内存中的类,我们就称为运行时类
阅读全文
TimeUnit 使用
摘要:TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段 主要作用 时间颗粒度转换 延时 常用的颗粒度 TimeUnit.DAYS //天 TimeUnit.HOURS //小时 TimeUnit.MINUTES //分钟 TimeUnit.SECONDS
阅读全文
多线程注意事项
摘要:调用start()方法和调用run()方法的区别 start()方法是开启了一个线程,会自动调用run()方法,此时程序会自动往下执行,此时不等start()方法执行完。 如果线程直接调用run()方法,则程序会等run()方法执行完再往下执行。
阅读全文
ConcurrentHashMap、HashMap、Hashtable
摘要:ConcurrentHashMap1.7使用的是分段锁Segment, ConcurrentHashMap1.7使用的是CAS + synchronized这也是ConcurrentHashMap对Hashtable的最大优势; HashTable相较于HashMap将底层的方法都加了Synchir
阅读全文
HashMap 为什么线程不安全
摘要:总结: 首先HashMap是线程不安全的,其主要体现: #1.在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。 #2.在jdk1.8中,在多线程环境下,会发生数据覆盖的情况。 jdk1.8: 在jdk1.8中对HashMap进行了优化,在发生hash碰撞,不再采用头插法方式,而是直接
阅读全文
java8新的时间api
摘要:Java8 必会的日期处理的实践,必须收藏! 来源:https://www.xttblog.com/?p=4944 Java 8 日期处理Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java
阅读全文
Java中的双重检查锁(double checked locking)
摘要:在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的错误代码: 1 public class Singleton { 2 private static Singleton uniqueSingleton; 3 4 private Singleton() { 5 } 6 7 public Sin
阅读全文
java中Map遍历的四种方式
摘要:在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历。 ①、使用entries 方法一:在for循环中使用entries实现Map的遍历(最常用的): 性能最好 /** * 最
阅读全文