随笔分类 - java
摘要:问题 两种计算时间戳的结果不一样。 int days = 30; Instant now = Instant.now(); long timestamp_cur = now.toEpochMilli(); long nowPre = timestamp_cur - 1000 * 60 * 60 *
阅读全文
摘要:示例 @Test void str2arr() { String ids = "1,2,3,4,5,6"; //字符串 --> String数组 String[] arrayStr = ids.split(","); System.out.println(arrayStr); } @Test voi
阅读全文
摘要:RestTemplate简介 RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。即RestTemplate是一个封装,
阅读全文
摘要:简介 Java并发包提供了一套框架,大大简化了执行异步任务所需要的开发。框架引入了“执行服务”的概念,封装了任务执行的细节,对任务提交者而言,他可以关注任务本身,如提交任务、获取结果、取消任务。而不用关注任务执行的细节。 基本接口 ①Runnable和Callable: 表示要执行的任务 ②Exce
阅读全文
摘要:1.列表拼接成字符串 #1.1 String result = Joiner.on("_").join(list); #1.2 String result = list.stream().collect(Collectors.joining("_")); 2.Java8的foreach()中使用re
阅读全文
摘要:# ? 区别 #{} 使用#{}意味着使用的预编译的语句,即在使用jdbc时的preparedStatement,sql语句中如果存在参数则会使用?作占位符,我们知道这种方式可以防止sql注入,并且在使用#{}时形成的sql语句,已经带有引号,例,select * from table1 where
阅读全文
摘要:一、背景 阿里给出了Seata的官方示例,地址: https://github.com/seata/seata-samples, 提供了很多示例: springcloud-seata-sharding-jdbc-mybatis-plus-samplesEasy to understand, high
阅读全文
摘要:简介 java 枚举是一个特殊的类,一般表示常量,比如一周7天,一年4个季节。 示例 enum LevelEnum { LOW, MEDIUM, HIGH } 遍历 public class EnumTest { public static void main(String[] args) { Le
阅读全文
摘要:创建Scanner对象语法 Scanner scan = new Scanner(System.in); 使用next()获取输入的字符串 使用nextLine()获取字符串 以上二者区别 nextLine()见到回车就结束,而next()必须得到有效字符 next()获取第一个空格前数据(比如,输
阅读全文
摘要:简介 让每个线程都拥有自己的专属本地变量 示例 运行 分析 从结果看虽然其他的线程已经改变了formatter变量,但是运行本线程时还是原始的值。
阅读全文
摘要:介绍 ReentrantLock称为重入锁,比内部锁synchonized拥有更强大的功能,它可中断、可定时、设置公平锁 【注】使用ReentrantLock时,一定要释放锁,一般释放放到finnal里写。 提供以下重要的方法 lock():获得锁,如果锁已被占用,则等待 lockInterrupt
阅读全文
摘要:初心 用interrupt中断程序 初步实现 输出 问题:虽然是被中断状态,但实际并未中断 interrupt说明 在java中主要有3个相关方法,interrupt(),isInterrupted()和interrupted()。 interrupt(),在一个线程中调用另一个线程的interru
阅读全文
摘要:序 死锁在平时开发,尤其是多并发编程时是要避免,不过要自己刻意写个死锁还不一定容易,下面参考别人代码写一个 代码 说明 o1、o2是static类型属于整个累,所以当定义deadLock1、deadLock2时是公用o1、o2的 deadLock1设置flag=1,先锁住o1,然后睡800ms,此时
阅读全文
摘要:介绍 DK1.5之后,提供了读写锁ReentrantReadWriteLock,读写锁维护了一对锁:一个读锁,一个写锁。通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。在读多写少的情况下,读写锁能够提供比排他锁更好的并发性和吞吐量。 源码定义 code 测试1 输出 结论:读读共享 测试
阅读全文
摘要:hashCode() 和equals() 区别和作用 字符串常量池 Java集合之LinkedHashMap
阅读全文
摘要:线程分类 守护线程(即daemon thread),是个服务线程,准确地来说就是服务其他的线程,这是它的作用——而其他的线程只有一种,那就是用户线程。所以java里线程分2种: 用户线程:比如垃圾回收线程,就是最典型的守护线程 守护线程:就是应用程序里的自定义线程 用户线程举例 守护线程举例 结果对
阅读全文
摘要:不同的对象 # 执行结果 现象 在MyThread中,每次都new一个新的Sync对象,可以看到代码块test虽然被加了synchonized但是还是并行执行的,初步结论:锁住的不是代码块 同一个对象 执行结果 现象 可以看到当他们共用一个对象的时候,synchonized起了作用,这块代码是串行执
阅读全文
摘要:1. 目标 把类的对象存储到字符串可存储 2. 类定义 3. 测试 结果 4. Fastjson Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接
阅读全文
摘要:1. 原理 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。 原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作; 高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如: 所有元素
阅读全文