摘要: # 需求 + Excel 最终需要由A4纸打印出来 + 标题名称需要动态变化 + 行高自动变化 + 每页都需要保留标题 # 分析 基础需求即填充标题填充数据,设置样式,基础需求可以通过easyExcel或者Poi的API来实现,但是由于需求3、4,easyExcel并不支持,只能选择使用Apache 阅读全文
posted @ 2023-07-05 16:20 onAcorner 阅读(357) 评论(0) 推荐(0) 编辑
摘要: # 需求 - 指定 Excel 模板文件,只给一个 Sheet - 每个 Sheet 填充指定数量的数据,超过指定条数,根据模板 Sheet 复制并且追加数据 # 准备工作 1. 引入easyExcel pom依赖 ``` com.alibaba easyexcel 3.2.1 ``` 2. 模板填 阅读全文
posted @ 2023-07-04 14:54 onAcorner 阅读(1440) 评论(0) 推荐(0) 编辑
摘要: 多线程与高并发(五)—— 源码解析 ReentrantLock 一、前言 ReentrantLock 是基于 AQS 实现的同步框架,关于 AQS 的源码在 这篇文章 已经讲解过,ReentrantLock 的主要实现都依赖AQS,因此在阅读本文前应该先了解 AQS 机制。本文并不关注 ReentrantLock 如何使用,只叙述其具体实现。 二、Reentra 阅读全文
posted @ 2022-08-10 17:48 onAcorner 阅读(584) 评论(1) 推荐(2) 编辑
摘要: 前言 我们首先介绍中断的三个 APPI 及其底层代码,在对方法的实现有了清晰的认知后,再结合场景谈谈什么是中断,以及中断该如何正确使用? 一、中断方法 1. isInterrupted public boolean isInterrupted() { // 调用isInterrupted 方法,中断 阅读全文
posted @ 2022-08-02 10:58 onAcorner 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 多线程与高并发(三)—— 源码解析 AQS 原理 一、前言 AQS 是一个同步框架,关于同步在操作系统(一)—— 进程同步 中对进程同步做了些概念性的介绍,我们了解到进程(线程同理,本文基于 JVM 讲解,故下文只称线程)同步的工具有很多:Mutex、Semaphore、Monitor。但是Mutex 和 Semaphore 作为低级通信存在不少缺 阅读全文
posted @ 2022-07-28 09:41 onAcorner 阅读(659) 评论(1) 推荐(1) 编辑
摘要: 前言 下一篇章打算讲解 AQS ,在去熟悉 AQS 原理之前,我想我们得知道一个事物是因何而产生,它出现的动机;AQS 作为一种高级的同步机制,讨论 AQS 则避免不了谈及操作系统以及 Java 实现的其他同步机制,正是因为其他同步机制存在一些缺陷或是限制才会有 AQS;由于同步机制的篇幅并不短,因 阅读全文
posted @ 2022-07-24 15:27 onAcorner 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 多线程与高并发(二)—— Synchronized 加锁解锁流程 前言 上篇主要对 Synchronized 的锁实现原理 Monitor 机制进行了介绍,由于 Monitor 基于操作系统调用,上下文切换导致开销大,在竞争不激烈时性能不算很好, 在 jdk6 之后进了系列优化。前文对优化措施进行了简单介绍,下面将一一介绍这些优化的细节,行文思路大致如下: 从重量 阅读全文
posted @ 2022-07-20 11:26 onAcorner 阅读(854) 评论(0) 推荐(1) 编辑
摘要: 多线程与高并发(一)—— 自顶向下理解Synchronized实现原理 一、 什么是锁? 在多线程中,多个线程同时对某一个资源进行访问,容易出现数据不一致问题,为保证并发安全,通常会采取线程互斥的手段对线程进行访问限制,这个互斥的手段就可以称为锁。锁的本质是状态+指针,当一个线程进入临界区前需要先修改状态,表明已加锁,并且指针指向加锁的线程。后续线程在进入临界区时同样需 阅读全文
posted @ 2022-07-15 17:16 onAcorner 阅读(146) 评论(1) 推荐(0) 编辑