![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 71
lhp15575865420
这个作者很懒,什么都没留下…
展开
-
线程池源码解读
线程池大家都用过,线程池的几个参数,大家也都熟悉:corePoolSize:核心线程数。核心线程会一直存活,即使啥也不干。如果ThreadPoolExecutor的allowCoreThreadTimeOut这个属性为true,那么核心线程闲置一段时间也会被销毁。maximumPoolSize:最大线程数。线程总数=核心线程数+非核心线程数。keepAliveTime:闲置线程存活时间,默认作用于非核心线程,如果allowCoreThreadTimeOut = true,则会作用于核心线程。unit原创 2021-06-26 14:58:56 · 140 阅读 · 0 评论 -
ReentrantLock源码解读(3)——Condition
Condition是除了object的await/notify之外的另一种信号机制,通常与ReentrantLock连用。先给给例子public class LockTest implements Runnable{ public static ReentrantLock lock = new ReentrantLock(); public static Condition condition = lock.newCondition(); @Override publi原创 2021-01-27 22:40:20 · 177 阅读 · 1 评论 -
ReentrantLock源码解读(2)——ReentrantLock源码与AQS
AQS(AbstractQueuedSynchronizer),它是java中可重入锁和其他同步组件的基础框架。先看一段ReentrantLock中的部分源码码 /** * Creates an instance of {@code ReentrantLock}. * This is equivalent to using {@code ReentrantLock(false)}. */ public ReentrantLock() { sync =原创 2021-01-27 22:39:24 · 206 阅读 · 1 评论 -
ReentrantLock源码解读(1)——CAS
进入源码前先介绍一个“无锁”技术:CAS(compare and swap)。为什么要介绍它呢,因为ReentrantLock的锁就是利用它实现的。它是一种乐光的策略,就是乐观地认为访问资源是不会冲突的,也就是所有的线程都可以不等待地进行下去。遇到冲突怎么办?检测到冲突就是一直重试,直到没有冲突为止。简单说,CAS需要你额外给定一个期望值,也就是你认为这个状态是什么样子,如果不是,就说明被人改过了,那就重新读取、设定期望值,再次尝试修改。例子public class CASTest {原创 2021-01-27 22:36:24 · 223 阅读 · 1 评论 -
ThreadLocal源码解读
列子先看一个简单使用的列子。static ThreadLocal<String> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { for (int i=0;i<10;i++) { new Thread(){ @Override public void ru.原创 2020-08-02 15:02:54 · 124 阅读 · 3 评论 -
DelayQueue源码解读
简单介绍DelayQueue是一个延时阻塞队列,实现了BlockingQueue接口,是一个线程安全的队列。它可以根据用户设定的阻塞时间,阻塞队列出队这一操作一定的时间。一个例子给出一个例子import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.util.concurrent.DelayQueue;import java.util.concurrent.Delayed;imp.原创 2020-05-31 18:42:11 · 246 阅读 · 1 评论 -
SpringBoot文件下载
这里记录一个java后台比较常见的功能,文件上传与下载,以及返回图片直接用于游览器展示或者标签展示。原创 2019-09-08 16:48:33 · 439 阅读 · 1 评论 -
SSM框架搭建
首先这里用到的开发工具为idea,因为idea是目前应用最广的开发工具。ssm包括spring、springmvc、mybatis。如果你还不熟悉这三个框架,请先学习这三个框架。通过maven创建一个webapp项目创建如下图所示的文件和文件夹。要注意的是,java文件夹设置为source root(右键java文件夹-&amp;gt;make directory as-&amp;gt;source roo...原创 2019-03-05 10:08:03 · 970 阅读 · 0 评论 -
SpringMVC的简单使用
SpringMVC是一个服务端MVC框架,用于接收游览器请求,进行数据处理并做出响应。这里简单地使用SpringMVC写一个小例子。- 简单使用这里使用的工具是idea,目前最热门的java开发工具。首先用idea创建一个SpringMVC项目,它会帮你自动下载需要的包。因为是web项目,然后需要配置Tomcat服务。在Add configuration中配置Tomcat server...原创 2019-03-05 10:07:25 · 273 阅读 · 1 评论 -
Mybatis使用
Mybatis是一个持久层框架,支持sql查询、存储过程和高级映射。- 基本使用先看一下我的项目结构也就是比一般项目多了一个resource文件夹,用来放mybatis的配置,以及DAO配置的,如何导入相关的包。一个mybatis包,一个jdbc包,我这里用了maven来导包,当然你也可以新建一个lib文件放入相关包,并add进项目。这里注意一下resource文件夹设置为source ro...原创 2019-03-05 10:05:35 · 444 阅读 · 1 评论 -
servlet处理multipart/form-data表单
multipart/form-data提交的表单,里面包含了表单和二进制数据,不能用一般方法解析。解这里用到fileupload框架。需要导入commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。 具体servlet代码private void getfile(HttpServletRequest req){ //设置工厂 ...原创 2018-06-14 22:24:13 · 5662 阅读 · 2 评论 -
java反射机制
Java反射机制详解。原理、作用、实例原创 2017-10-31 15:32:46 · 274 阅读 · 0 评论 -
Java网络爬虫-总结
网络爬虫技术的小总结转载 2017-07-16 17:49:41 · 716 阅读 · 0 评论