随笔分类 -  java基础

此分类主要用来学习java基础知识
摘要:线程的开销 : 线程的创建和销毁 线程的上下文切换和调度 线程的同步 多线程的内存模型: 线程独有的工作内存(线程缓存用于提高效率) 所有线程共享的主内存 线程读取在主内存的成员变量(即共享变量)的过程: 线程的工作内存会去读取主内存的成员变量并保存副本 线程在工作内存中修改副本 将修改后的副本的值 阅读全文
posted @ 2021-07-12 22:49 Vincent-yuan 阅读(242) 评论(0) 推荐(0) 编辑
摘要:1.背景: countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下 2.概念 countDownLatch这个类 阅读全文
posted @ 2021-07-12 22:18 Vincent-yuan 阅读(1269) 评论(0) 推荐(0) 编辑
摘要:目录 一.对ThreadLocal的理解 二.深入解析ThreadLocal类 三.ThreadLocal的应用场景 一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。 可能很多朋友都知道ThreadLocal为变量在每 阅读全文
posted @ 2021-07-12 21:52 Vincent-yuan 阅读(204) 评论(0) 推荐(0) 编辑
摘要:【强制】SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static,必须加锁,或者使用 DateUtils 工具类。 怎么理解,这里记录下。 SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化 阅读全文
posted @ 2021-07-11 15:11 Vincent-yuan 阅读(2513) 评论(0) 推荐(0) 编辑
摘要:线程池解决了两个不同的问题: 提升性能:它们通常在执行大量异步任务时,由于减少了每个任务的调用开销,并且它们提供了一种限制和管理资源(包括线程)的方法,使得性能提升明显; 统计信息:每个ThreadPoolExecutor保持一些基本的统计信息,例如完成的任务数量。 为了在广泛的上下文中有用,此类提 阅读全文
posted @ 2021-07-08 08:00 Vincent-yuan 阅读(123) 评论(0) 推荐(0) 编辑
摘要:ThreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSize, // 1 int maximumPoolSize, // 2 long keepAliveT 阅读全文
posted @ 2021-07-08 07:28 Vincent-yuan 阅读(3118) 评论(0) 推荐(0) 编辑
摘要:【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecu 阅读全文
posted @ 2021-07-07 22:01 Vincent-yuan 阅读(242) 评论(0) 推荐(0) 编辑
摘要:阿里规范中有一个 12.【强制】泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用 add 方法, 而<? super T>不能使用 get 方法,两者在接口调用赋值的场景中容易出错。 具体的分析可以看下如下 : 最终PECS (Producer Extends Cons 阅读全文
posted @ 2021-06-17 22:35 Vincent-yuan 阅读(1051) 评论(0) 推荐(1) 编辑
摘要:关于 hashCode 和 equals 的处理 判断所有集合内部的元素是否为空,使用 isEmpty()方法 在使用 java.util.stream.Collectors 类的 toMap()方法转为 Map 集合时,一定要使用含有参数类型为 BinaryOperator 【强制】在使用 jav 阅读全文
posted @ 2021-06-15 23:06 Vincent-yuan 阅读(321) 评论(0) 推荐(0) 编辑
摘要:java中可以使用3种方式调用api HttpURLConnection HttpClient RestTemplate 这里要讲的是RestTemplate的方式。 REST的基础知识 当谈论REST时,有一种常见的错误就是将其视为“基于URL的Web服务”——将REST作为另一种类型的远程过程调 阅读全文
posted @ 2021-06-07 23:24 Vincent-yuan 阅读(1273) 评论(0) 推荐(1) 编辑
摘要:java中可以使用3种方式调用api HttpURLConnection HttpClient RestTemplate 这里要讲的是HttpClient的方式。 一.简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议 阅读全文
posted @ 2021-06-07 22:46 Vincent-yuan 阅读(601) 评论(0) 推荐(0) 编辑
摘要:java中可以使用3种方式调用api HttpURLConnection HttpClient RestTemplate 这里要讲的是HttpURLConnection的方式。 一.HttpURLConnection的介绍 HttpURLConnection标准Java接口(java.NET) —- 阅读全文
posted @ 2021-06-07 22:20 Vincent-yuan 阅读(1391) 评论(0) 推荐(0) 编辑
摘要:Java8提供了Stream(流)处理集合的关键抽象概念,它可以对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream API 借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。 1.Java Stream vs Collection 我们列出流相比于Col 阅读全文
posted @ 2021-06-01 23:44 Vincent-yuan 阅读(1373) 评论(0) 推荐(0) 编辑
摘要:java开发中经常会遇到json的序列化与反序列化,常用的json序列化工具有阿里的Fastjson、spring mvc内置的Jackson、还有就是我们接下来要说的谷歌的Gson。 Fastjson 的常见使用 Fastjson API入口类是com.alibaba.fastjson.JSON, 阅读全文
posted @ 2021-03-26 23:15 Vincent-yuan 阅读(8858) 评论(0) 推荐(0) 编辑
摘要:1. 简介 Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合。 String[] myArray = {"Apple", "Banana", "Orange"}; List<String> myList = Arrays.asList(myAr 阅读全文
posted @ 2021-03-11 07:59 Vincent-yuan 阅读(1572) 评论(0) 推荐(0) 编辑
摘要:Reference:《阿里巴巴Java开发手册》 【强制】所有的 POJO 类属性必须使用包装数据类型。 【强制】RPC 方法的返回值和参数必须使用包装数据类型。 【推荐】所有的局部变量使用基本数据类型。 比如我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer 阅读全文
posted @ 2021-03-10 13:21 Vincent-yuan 阅读(312) 评论(0) 推荐(0) 编辑
摘要:1.BigDecimal 的用处 《阿里巴巴Java开发手册》中提到:浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用 equals 来判断。 具体原理和浮点数的编码方式有关,这里就不多提了,我们下面直接上实例: float a = 1.0f - 0.9f; float b = 阅读全文
posted @ 2021-03-10 13:13 Vincent-yuan 阅读(101) 评论(0) 推荐(0) 编辑
摘要:所有整型包装类对象值的比较必须使用equals方法。 先看下面这个例子: Integer x = 3; Integer y = 3; System.out.println(x == y);// true Integer a = new Integer(3); Integer b = new Inte 阅读全文
posted @ 2021-03-10 12:41 Vincent-yuan 阅读(139) 评论(0) 推荐(0) 编辑
摘要:1.JVM 1.1.JVM Java 虚拟机是运行字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,给出相同的结果。 1.2.什么是字节码?采用字节码有什么好处? 在Java中,JVM可以理解的代码就叫做字节码(即扩展名为 .class 阅读全文
posted @ 2021-02-19 23:14 Vincent-yuan 阅读(134) 评论(0) 推荐(0) 编辑
摘要:一. list 转换为 array ,即list转换为数组。 在java中,要把 list 转换为 array ,可以使用List提供的toArray()方法,即 List<Integer> nums = new ArrayList<Integer>(); nums.toArray(); 但是这样得 阅读全文
posted @ 2021-01-28 22:05 Vincent-yuan 阅读(859) 评论(0) 推荐(0) 编辑