介绍 synchronizedsynchronized是Java中的一个很重要的关键字,主要用来加锁,synchronized 的使用方法比较简单,主要可以用来修饰方法和代码块。根据其锁定的对象不同,可以用来定义同步方法和同步代码块。 AQSAbstractQueuedSynchronizer(抽象队列同步器,以下简称AQS)出现在JDK1.5中。AQS是很多同步器的基础框架,比如ReentrantLock, CountDownLatch和Semaphore等都是基于AQS实现的。除此之外,我们还可以基于AQS,定制出我们所需要的同步器。 CASCAS是一项乐观锁技术,是Compare And Swap的简称,顾名思义就是先比较再替换。CAS 操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。在进行并发修改的时候,会先比较A和V中取出的值是否相等,如果相等,则会把值替换成B,否则就不做任何操作。 synchronized synchronized在jdk1.6之前直接是重量级锁;synchronized在jdk1.6之后出现了锁升级。 synchroni ...
创建型模式简单工厂模式简单工厂模式⼜称⼯⼚⽅法模式,是⼀种创建型设计模式,在工厂类中提供⼀个创建对象的⽅法, 允许客户端决定实例化对象的类型。 定义接口以文件转换为示例。 1234567import java.io.File;public interface Converter { byte[] convertToPdf(File file) throws Exception; byte[] convertToPdf(byte[] file) throws Exception;} 实现文件转换接口1. word转pdf2. excel转pdf3. ppt转pdf4. 图片转pdf 文件转换工厂12345678910111213141516171819202122232425262728public class ConvertPdfFactory { private static String DOC = "doc"; private static String DOCX = "docx"; ...
图片 转 pdf使用poi和itext库实现。 maven 依赖itext 依赖了 poi 不用手动添加 12345678910111213141516171819202122<dependencies><dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version>7.2.0</version></dependency><dependency> <groupId>com.itextpdf</groupId> <artifactId>kernel</artifactId> <version>7.2.0</version></dependency><dependency> <groupId>com.itextpdf</ ...
ppt 转 pdf使用poi和itext库实现,兼容 ppt 和 pptx。 注: 本人在使用中遇到,组合图形中的中文乱码。 maven 依赖itext 依赖了 poi 不用手动添加。 poi 中ppt相关依赖需要自己手动添加 1234567891011121314151617181920212223242526272829<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>4.1.2</version></dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version> ...
excel 转 pdf使用poi和itext库实现,兼容xls,xlsx格式。 maven 依赖itext 依赖了 poi 不用手动添加 12345678910111213141516171819202122<dependencies><dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version>7.2.0</version></dependency><dependency> <groupId>com.itextpdf</groupId> <artifactId>kernel</artifactId> <version>7.2.0</version></dependency><dependency> <groupId>c ...
word 转 pdf使用aspose.words库实现,兼容doc,docx格式。 maven 依赖12345<dependency> <groupId>com.aspose</groupId> <artifactId>aspose-words</artifactId> <version>15.8.0</version></dependency> 工具实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import com.aspose.words.Document;import com.aspose.words.License;import com.aspose.words.SaveFormat;import java.io.*;public class WordToPdf implements Co ...
准备服务器1、使用GitHub作为网站服务器 使用个人 GitHub 创建仓库,并配置 GitHub Pages 此仓库用于存放个人博客页面,仓库名必须使用 <GitHub用户名>.github.io 格式。 仓库创建完成后,可以在仓库根路径下创建一个名为 index.html 的静态 HTML 文件来验证个人博客搭建是否成功。 12345678910<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Someone's Blog</title></head><body> <h1>Hello, Blog World ~</h1></body></html> 在 <GitHub用户名>.github.io 仓库对应的 GitHub Pages 设置页面 (访问路径为S ...
实用教程
未读一、 Node 简介 Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能。 二、 Node 下载 官网下载 三、 Node 安装1. 双击.exe安装包,点击 [next] 到第二步。 2. 点击 [next] 到第三步。 3. 选择安装目录 可点击 Browse… 更换目录,也可直接在方框里面改,直接将 C 改为 D,这样就直接安装在 D 盘里了。点击 [next] 到第四步。 4. 自定义设置 大概意思翻译出来了,大家根据自己的需要选择勾选。点击 [next] 到第五步。 Node.js runitem : Node.js运行时,这项功能需要61MB的硬盘空间 corepack manager : corepack 包管理器 ...
简介树是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。 二叉树是一种更为典型的树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。 树的遍历12345678910void traverse(TreeNode root) { if (root == null) { return; } // 前序位置 traverse(root.left); // 中序位置 traverse(root.right); // 后序位置} 前序位置的代码在刚刚进入一个二叉树节点的时候执行; 后序位置的代码在将要离开一个二叉树节点的时候执行; 中序位置的代码在一个二叉树节点左子树都遍历完,即将开始遍历右子树的时候执行。 二叉树的每个节点都有「唯一」属于自己的前中后序位置,所以前中后序遍历是遍历二叉树过程中处理每一个节点的三个特殊时间点。 123456789void TreeNode<T>{ //每个结点 ...