![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java复习
文章平均质量分 86
程序员麻薯
扶我起来,我还能再卷一会(ง •̀_•́)ง 点关注,和我一起卷╭(′▽`)╭(′▽`)╯
展开
-
SpringBoot文件上传示例代码和过程解析
说明文件上传,在 PostMan 或者 ApiPost 等常用工具里面大家应该都留意过,当body是from-data(表单提交)的时候,我们可以选择文件进行上传,如下图:本文主要介绍的是使用SpringBoot后端接收这个文件。代码代码非常简单,SpringBoot项目直接拷贝即可使用@Slf4j@RestController@RequestMapping("/")public class DemoController { @PostMapping(valu.原创 2022-04-05 19:16:07 · 1432 阅读 · 0 评论 -
基于MySQL binlog日志,实现Elasticsearch近实时同步实践
本文作者本人,首发在 "便利蜂产品技术" 微信公众号。欢迎各位关注。便利蜂校招内推链接:https://app-tc.mokahr.com/m/recommendation-apply/bianlifenghr/8007?sharePageId=9193&recommendCode=NTAANCF&codeType=1&hash=%23%2Frecommendation%2Fpage%2F9193便利蜂社招内推链接:http://bianlifeng.gllue.me/por原创 2021-09-20 11:52:04 · 847 阅读 · 0 评论 -
Java线程状态和转换关系
线程状态在了解Java线程转换关系之前我们需要先确定Java线程有哪些状态。网上有很多说法是5种状态,但是实际上并不正确。通过查看Thread类内部找到java.lang.Thread.State 这个匿名内部枚举类,其中包含了以下六种枚举:NEW 初始尚未启动的线程的状态。也就是创建了线程对象,但是还未调用线程的 start() 方法。RUNNABLE 运行可运行线程的线程状态。处于可运行状态的线程在Java虚拟机中执行,但它可能在等待操作系统的其他资源,如处理器。换句话说,Ja...原创 2021-09-12 14:32:21 · 270 阅读 · 0 评论 -
什么是serialVersionUID?serialVersionUID详解
在阅读很多开源项目中在很多类中都会发现存在一个使用static final 修饰的量,通常很大而且和代码似乎没有什么规律。比如下面的代码:public class Dml implements Serializable { private static final long erialVersionUID = 2611556444074013268L;(代码来自阿里巴巴开源项目Client Adapter)概述所述的serialVersionUID属性是用来序列的标识符/反序列化的对象原创 2021-02-03 17:36:01 · 40978 阅读 · 2 评论 -
Java线程池和Guava创建线程池详解
1.简介本文介绍了Java中的线程池-从标准Java库中的不同实现开始,然后介绍Google的Guava库。2.线程池在Java中,线程被映射到系统级线程,而系统级线程是操作系统的资源。如果无法控制地创建线程,则可能会很快耗尽这些资源。为了模拟并行性线程之间的上下文切换也由操作系统完成。一种简单的观点是:产生的线程越多,每个线程花费在实际工作上的时间就越少。线程池模式有助于节省多线程应用程序中的资源,并且还可以将并行性包含在某些预定义的限制中。使用线程池时,您以并行任务的形式编写并发代码,并将其原创 2021-01-14 17:23:54 · 3717 阅读 · 0 评论 -
Hashtable和hashMap有什么区别
1. 继承父类HashMap 继承 AbstractMap;Hashtable继承Dictionary类,Dictionary类已过时,子类不建议使用,一般认为Hashtable是一个遗留类2. 线程安全性HashMap线程不安全,Hashtable线程安全3. 包含的contains方法contains方法通常用于获取一些数据中是否包含指定的数据。HashMap中将contains拆分为 containsValue 和 containsKey ,分别可以获取key和valu...原创 2020-09-02 00:10:14 · 10621 阅读 · 0 评论 -
HashMap、Hashtable和ConcurrentHashMap常见面试题汇总
Hashtable和ConcurrentHashMap区别1. 锁粒度不一样。Hashtable是 synchronized 全局一把锁;ConcurrentHashMap在1.7及之前版本中采用Segment分段锁,将一个ConcurrentHashMap分成16段分别上锁,在1.8及之后版本并发控制使用 synchronized 和 CAS锁 来操作。2. 底层实现不一样。Hashtable底层采用数组 + 链表实现;ConcurrentHashMap在1.7及之前版本中采用分段数组 + 链表实原创 2020-08-14 21:57:57 · 947 阅读 · 0 评论 -
String、StringBuilder和StringBuffer有哪些区别
Java提供了多种储存和操作字符串的类,String提供了数值不能改变的字符串,而另外两个是可以改变的线程安全String 类型字符串的char或byte数组都是经过final修饰的,所以线程上肯定是安全的;StringBuilder是线程不安全的;而StringBuffer是线程安全的。StringBuffer实际上可以理解成StringBuilder的改版,他在可能存在冲突的操作上(增删改)都加了synchronized关键字。toString方法StringBuffer的t原创 2020-08-14 19:34:36 · 608 阅读 · 0 评论 -
什么是自动拆装箱?引用数据类型和基本数据类型都有什么?
基本数据类型(8种): 4 整型 byte(字节型) short(短整型) int(整型) long(长整型) 2 浮点型 float(单精度) double(双精度) 1 字符型 char 1 布尔型 boolean引用数据类型 数组[] 类class(抽象类 abstract class) 接口 interface 枚举 enum 注解 @interface 包装类是Java编译器在基本数据...原创 2020-07-22 22:27:20 · 283 阅读 · 0 评论 -
Java为什么小数运算会出现精度问题
话不多说直接上Demodouble a = 4.0;double b = 3.6;System.out.println(a - b);我们可以看到运行结果是0.3999999999999999,期望结果是0.4。原因简单来说:2进制的小数无法十分精准的表达十进制的小数,计算机在计算十进制小数运算的时候需要先转换成2进制进行计算,这个过程中出现了一些误差。两个解决办法办法一 使用 BigDecimal使用 BigDecimal 进行运算,需要注意的是初始化传值的时候务必使用.原创 2020-07-22 22:21:02 · 1832 阅读 · 0 评论 -
Java中a和b的值互换有哪些方法
第一种 中间变量这种是最正常的思维,易于理解。但是缺点是需要中间变量的内存开销。int t = a;a = b;b = t;第二种 存和求差相当于我们先让a储存a+b的和,b只需要求出和 - b就是a的值,a可以通过b已经得到的a和自己做差求出b的值。这种方法稍微不易理解,而且存在溢出风险,在没有确定数据大小的时候应该注意a=a+b;b=a-b;a=a-b;第三种 异或运算异或就是对比两个值,“异” 可以理解为“不同”,这个运算符只要前后两个结果不一致就为True原创 2020-07-21 23:09:33 · 3692 阅读 · 0 评论 -
Map的分类和常见的一些情况
java为数据结构中的映射提供了一个接口 java.util.Map,他有四个实现类,分别是:HashMap、HashTable、LinkedHashTable和TreeMapMap概述我们有必要先说上一嘴 映射 是个啥,简单的理解就是一些对应关系,比如:单词表中许多单词和翻译的对应关系、一次数学考试学生姓名和成绩的对应关系等等。而Map集合就可以用来储存他们。我们将这种两个数据的组合称为键值对,Map集合是根据键来取值的,所以不允许重复的键(重复了就会被覆盖掉),但是允许值重复。HashMap原创 2020-07-21 22:43:32 · 345 阅读 · 0 评论 -
Object若不重写hashCode()的话,hashCode()是如何计算得到的
Object的hashCode方法是本地方法,也就是说是使用C或者C++语言实现的,该方法直接返回对象的内存地址。(java.lang.Object 源码中的hashCode方法,可以看到 native 修饰)原创 2020-07-20 22:37:41 · 4208 阅读 · 0 评论 -
java中 == 比较的是什么
对于基本数据类型比较的是数值是否相等对于引用数据类型== 对比的是两个对象基于内存的引用,如果两个对象的引用完全相同(指向同一个对象内存地址),== 返回true,否则返回false值得注意的是即使是两个含义相同但是内存地址不同的两个对象比较也是false...原创 2020-07-20 22:30:37 · 971 阅读 · 0 评论 -
为什么重写equals还要重写hashcode?
比较key是否相等原理在HashMap中,如果要比较key是否相等,需要同时使用equals() 和 hashCode() 这两个函数来进行判断。更准确的说是先求出key的hashCode()是否相等,如果相等再继续比较equals() ,如果不相等认为两个对象也不相等。自定义的类hashCode() 和 equals() 方法都继承自Object。其hashcode码默认为内存地址,equals默认为内存地址的比较,底层就是通过 == 判断实现的。hashCode和equals我们都知原创 2020-07-19 23:02:53 · 335 阅读 · 0 评论