
Java基础
文章平均质量分 88
澄风
平淡出奇
展开
-
Spring的MutipartFile 会直接将流转成文件存放在临时目录嘛?
Spring 的 `MultipartFile` 默认会将上传的文件存储到临时目录。具体行为取决于底层的 `MultipartResolver` 实现。原创 2025-02-27 14:17:30 · 203 阅读 · 0 评论 -
ForkJoin 的使用以及原理
Fork-Join 是一种并行计算模式,它通常用于解决递归式或者分治式的问题。其原理基于将一个大的任务划分成若干个小任务,然后并行地执行这些小任务,最后将它们的结果合并起来得到最终的结果。原创 2024-02-18 14:15:13 · 467 阅读 · 0 评论 -
牛客刷题第二弹
CMS收集器是一种以获取最短回收停顿时间为目标的收集器,它是基于标记清除算法实现的,它的运作过程相对于其他收集器来说要更复杂一些,整个过程分为四个步骤,包括:初始标记、并发标记、重新标记、并发清除。重新标记阶段则是为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间通常会比初始标记阶段稍长一些,但也远比并发标记阶段的时间短。这种在代码中的体现为:A类方法中的参数包含了B类。HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。原创 2023-08-22 15:59:17 · 155 阅读 · 0 评论 -
牛客刷题第一弹
牛客刷题总结原创 2023-03-10 16:59:35 · 623 阅读 · 0 评论 -
谈谈对分布式锁的理解
为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或Synchronized)进行互斥控制。在单机环境中,Java中提供了很多并发处理相关的API。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。原创 2023-02-13 08:35:02 · 155 阅读 · 0 评论 -
WeakHashMap 源码浅析
从名字可以得知主要和Map有关,不过还有一个Weak,我们就更能自然而然的想到这里面还牵扯到一种弱引用结构,因此想要彻底搞懂,我们还需要知道四种引用。原创 2023-01-30 09:13:48 · 210 阅读 · 0 评论 -
ThreadLocal/InheritableThreadLocal/TransmittableThreadLocal 应用场景以及核心源码解析
ThreadLocal的应用非常广泛,就ThreadLocal可以实现当前线程的共享数据获取这个就太有用了。正常我们写代码都是由上一个方法传递个下一个方法来进行传递参数,假如说参数繁多,链路非常长,这个时候就会导致形参非常臃肿、传递参数非常不易。这个时候就可以使用ThreadLocal来解决这个问题。原创 2023-01-28 09:04:29 · 864 阅读 · 0 评论 -
看完这篇系列文章Spring session你就彻底懂了 - <第一讲> Tomcat session 运作原理以及源码解析
在Spring没有做任何配置的时候,默认会使用Tomcat 自带的session来做session机制。比如没有配置SessionRepository 以及 `@EnableSpringHttpSession`等等。我们下面来分析一个前端请求过来Springboot是如何处理的。我们都知道客户端第一次请求过后服务端会返回一个jsessionid回来,但是这个jsessionid是怎么生成的,第二次及以后访问是如何匹配session的呢?我们下面先从session生成的节点来分析。原创 2022-10-12 16:28:49 · 1064 阅读 · 0 评论 -
Lombok 的实现原理
我们都用过Lombok 可以快速的进行实体类的setter/getter/toString/hash/construct等等方法的自动编编译字节码生成。但我们只加入了一个注解`@Data`或`@Setter`是怎么生成对应方法的字节码的呢?下面听我慢慢分析...原创 2022-09-30 10:33:54 · 3114 阅读 · 4 评论 -
JAVA 基础之OutputStream 详解
在 Java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。流是一个相对抽象的概念,所谓流就是一个传输数据的通道,这个通道可以传输相应类型的数据。进而完成数据的传输。这个通道被实现为一个具体的对象。原创 2022-09-15 14:36:51 · 29797 阅读 · 1 评论 -
HTTP Component (Apache HttpClient) 5.0 + 教程
超文本传输协议 (HTTP) 可能是当今 Internet 上使用的最重要的协议。Web 服务、支持网络的设备和网络计算的增长继续将 HTTP 协议的作用扩展到用户驱动的 Web 浏览器之外,同时增加了需要 HTTP 支持的应用程序的数量。尽管 java.net 包提供了通过 HTTP 访问资源的基本功能,但它并没有提供许多应用程序所需的全部灵活性或功能。HttpClient 旨在通过提供高效、最新且功能丰富的包来实现最新 HTTP 标准和建议的客户端来填补这一空白。......原创 2022-08-12 09:08:37 · 1958 阅读 · 0 评论 -
JVM GC算法以及常用参数调优
主要思想就是,将内存分为区和区(from区和to区),默认是8:2(对于eden : survivor1 : survivor2 = 8 : 1 : 1)的比例。在GC开始的时候,对象只会存在于Eden区和名为“From”的Survivor区,Survivor区“To”是空的。紧接着进行GC,Eden区中所有存活的对象都会被复制到“To”,而在“From”区中,仍存活的对象会根据他们的年龄值来决定去向。年龄达到一定值(年龄阈值,可以通过-XX:MaxTenuringThreshold来设置)的对象会被..原创 2022-06-22 21:26:41 · 2079 阅读 · 0 评论 -
ThreadLocal 原理与实战
ThreadLocal我会将其解释为线程上下文变量,当我们想要在方法间传递参数,又不想很挫的将每个方法都参数列表都加上这个参数时,可以使用它来帮助我们隐式传递参数每个线程Thread都有一个ThreadLocalMap,ThreadLocal是这个Map的工具类。当我们通过ThreadLocal存放数据时,这个Map会添加一条记录。这条记录的key存放的是这个ThreadLocal的引用,value存的是缓存的数据.........原创 2022-06-09 09:13:00 · 187 阅读 · 0 评论