![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 86
小林也要龙女仆
哼哼
展开
-
【java基础】Java开发中使用并发工具的常见错误
若你发现博客内容有误,请及时在评论中指出起头,不要盲目的使用并发工具类,小则损失性能,大则导致业务逻辑错误1. 及时清理 ThreadLocal 绑定的数据 ThreadLocal 是适用于变量在线程间隔离,而在类或者方法间不隔离的工具类,一般可以用在某种获取比较昂贵的数据上。 来看一个具体的案例。 使用 SpringBoot 构建一个 web 应用,我们使用 ThreadLocal 存储一个 Integer 值作为用户信息,首先我先从外部获取一次用户信息的值,然后再把获取到的值存入到 .原创 2022-05-28 16:11:45 · 164 阅读 · 0 评论 -
【java基础】Java开发中使用锁的常见错误
若你发现博客内容有误,请及时在评论中指出1. 理解的去加锁 我们直接看一个案例,现在有一个 add 方法需要对 a、b 两值进行 1 万次的累加,然后有一个 compare 方法对两值进行判断,如果出现 a < b 的情况就打印两值,代码如下:@Slf4jpublic class Interesting { volatile int a = 1; volatile int b = 2; public void add() { log.info(.原创 2022-05-29 16:06:09 · 381 阅读 · 0 评论 -
【java基础】线程池的常见使用错误
若你发现博客内容有误,请及时在评论中指出原创 2022-05-31 16:42:14 · 796 阅读 · 0 评论 -
【java基础】API与SPI的理解
写在最前,如果你发现任何我写的不对的,请在评论中指出。资料采集于《软件框架设计的艺术》 最近在研究dubbo源碼的時候,有关于SPI的概念或者直接是注解总是拍在我脸上,所以我抽了点时间去理解、领悟它到底是怎样一回事。 假设我们现在需要设计一款音乐播放器,就像是我们常用的网易云播放器或者QQ播放器。作为一款播放器它的基础功能就是:播放音乐、下一首当然也能回放上一首以及对列表进行增删改查。 现在假设有第三方需要使用到网易云播放器,那么应该怎么做呢?对,网易云提供第三方厂商可用的API进行操作.原创 2021-09-12 16:31:30 · 168 阅读 · 0 评论 -
【java基础】并发编程注意事项
写在最前,如果你发现任何我写的不对的,请在评论中指出。默认JDK8 好久不见,带回一份最近开发遭遇到的奇奇怪怪的并发bug,不废话,看文。使用ThreadLocal记得remove 近期的一次开发中,需要我自制一份log的stater打包到公司的私库上给一些正在开发的小项目用,这是背景。 我们知道,ThreadLocal适用于变量在线程间隔离,而在方法与类之间共享。所以我的想法是当一个请求过来时,就把此次方法请求的链路json化缓存在ThreadLocal中会是个比较合适的做法,但就是这.原创 2021-08-26 20:30:58 · 194 阅读 · 0 评论 -
【java基础】并发闲谈三:CAS与AQS
写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。默认版本JDK8原创 2021-06-09 15:09:55 · 195 阅读 · 0 评论 -
【java基础】并发闲谈二:Thread和Object中重要的线程方法的面试题
写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。默认版本JDK8 今天来学习一下Thread和Object中的一些关于并发的方法,重点是Object中的wait()/notify()/notifyAll()方法,那么直接开门见山去看javadoc,了解一下wait的一些相关信息。# 直接看docCauses the current thread to wait until either another thread invokes the * {@lin.原创 2021-05-12 22:03:58 · 116 阅读 · 0 评论 -
【java基础】并发闲谈一:多线程的创建、生命周期与正确停止线程的方式
写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。默认版本JDK8 说实话,最近在实习的时候没少吃并发基础差的亏,之前大二的时候也听信群里老哥们的话,说工作之后没个2、3年是不会碰到什么并发的问题。但是就过完年到现在的4月份,都吃瘪好几次了。分别是:# 1、需求要我后台做个线程池专门来做日志的收集# 2、需求要求我做定时任务, 引入了xxl-job, 但是我并发基础太差, 去看源码看的也是头晕眼胀的, 用起来也就不太熟练# 3、碰到的一些锁: 乐观锁、重入锁、自旋.原创 2021-04-19 14:34:27 · 164 阅读 · 0 评论 -
【java基础】聊聊Map
写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。默认版本JDK8 首先要明确的是在HashMap的底层数据结构是数组+链表/红黑树, LinkedHashMap底层数据结构是数组+链表+双向链表、TreeMap底层数据结构是红黑树,而ConcurrentHashMap底层数据结构也是数组+链表/红黑树。问的最多的也是HashMap, 就先从它开始。先说HashMap的构造函数 HashMap有4个构造函数,但最主要的就是制定初始值大小和负载因子大小的那个。.原创 2020-10-15 17:22:55 · 89 阅读 · 0 评论 -
【java基础】聊聊List
写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。 List, 在java里是一个接口,其常见的实现类有ArrayList和linkedList, 但是一般在编程中用的最多的还是ArrayList,究其原因,ArrayList的底层是数组, LinkedList的底层是双向链表, 而我们的开发需求中遍历的需求比增删要多,即使是增删也一般是在List的尾部添加元素即可,像是尾部添加元素,ArrayList的时间负责度也不过是O(1)。对于ArrayList我们可以关注的第.原创 2020-10-07 14:05:16 · 308 阅读 · 0 评论 -
【java基础】JVM执行流程
写在最前,本人也只是个大三的学生,如果你发现任何我写的不对的,请在评论中指出。 对于我而言,可以把JVM的整体结构分为三层:上层:前端编译器(IDEA、VSCODE等) → Class Files → 类装载器子系统中层:运行时数据区域(以JDK1.8为准):元空间、 堆、虚拟机栈、本地方法栈、程序计数器下层:执行引擎(称为后端编译器,主要用于将字节码文件识别为机器指令)、本地方法接口、本地方法库了解了JVM的整体结构,我们以一段代码为切入点,了解一下JVM的执行机制:public c.原创 2020-09-11 17:41:25 · 2278 阅读 · 0 评论 -
【java基础】序列化/反序列
本篇实验内容转载于:https://www.bilibili.com/read/cv6257046 作者:CodeSheep序列化是做什么的? 序列化的原本意图是希望对一个java对象做一下“变换”,变成字节序列,这样一来方便持久化存储到硬盘中,避免程序运行结束之后对象就从内存中消失,另外变换成字节序列也更便于网络运输和传播,即序列化: 把java对象转换为字节序列反序列化: 把字节序列恢复成原先的java对象 并且序列化机制从某种意义上来说也弥补了平台化的一些差异,转换后的字节流可.转载 2020-09-02 11:11:13 · 142 阅读 · 0 评论 -
【java基础】浅拷贝/深拷贝
本篇实验内容转载于:https://www.bilibili.com/read/cv7349900 作者:CodeSheep 本来是日常编写C语言代码的刚性需求,虽然java经常忽悠人说自己是不存在指针的,但实际上java底层的JVM是用C和C++写的(就比如操作数栈、堆之类的实现都可以说是存在指针的),一句话形容就是:java的嘴,骗人的鬼。值类型 vs 引用类型 在java的世界里,像数组、类Class、枚举Enum、Integer包装类等等,就是典型的引用类型,所以操作时一般来说采用.转载 2020-09-01 16:10:01 · 113 阅读 · 0 评论 -
【java基础】JVM下看待String类型
写在最前,如果你发现任何我写的不对的,请在评论中指出。一、String类 想要了解任何一个类,最好的办法就是去看它的源码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /.原创 2020-08-23 16:12:36 · 124 阅读 · 0 评论