文档转换
背景:工作中用到office文档互转的情况
Word 转 PDF
Excel 转 PDF
Excel 转 图片
普通解决办法:
开源软件 libreoffice、openoffice(需要服务器部署)
注:此两种方式的使用方式相同,但libreoffice可以通过ip+端口的方式连接使用
终极解决办法:
使用收费软件 Aspose、Spire.Doc等
WORD转PDF注:此为简单的转换,会出现word中部分内容空白的情况
依赖
12345678910<dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j-JAXB-Internal</artifactId> <version>8.2.4</version></dependency><dependency> <groupId>org.docx4j</groupId> <artif ...
JVM
堆
存对象
线程栈
每有一个线程就会从线程栈中划分一块区域
栈帧
每执行一个方法就会在线程栈中分配一块区域
操作数栈
将临时数据做加减乘除的操作的地方
局部变量(指针指向堆)
存储临时数据(变量)
动态链接
通过动态链接去链接到方法区,拿到方法区的方法
方法出口
链接到上层调用
方法区(元空间)(指针指向堆)
常量
静态变量
类信息
程序计数器
用于记录执行当前所到的步骤(cpu的执行权限被抢走时记录当前程序的执行步骤,用于抢回权限后接着执行)
本地方法栈
native修饰的方法执行的内存空间(c、c++实现的方法)
注:
JVM调优的目的是减少FULL GC,因为在FULL GC的时候会STW(stop the world),停掉当前运行的线程
RabbitMQ
场景:需要基于队列实现消息传递,保证消息不被丢弃和稳定
安装安装erlang
安装
1yum install -y epel-release
1wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
1rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
1yum install -y erlang
验证安装成功
1erl -version
安装RabitMq
官网下载 RPM包,上传到服务器上
1rpm -Uvh rabbitmq-server-3.9.12-1.el7.noarch.rpm
启动
1systemctl start rabbitmq-server
查看状态
1systemctl status rabbitmq-server
启动控制台
1rabbitmq-plugins enable rabbitmq_management
添加用户名和密码以及设置权限
参考
123rabbitmqctl add_u ...
Quartz
Timer原生实现1234567891011121314public static void main(String[] args) { //创建定时器 Timer timer = new Timer(); //创建task TimerTask timerTask = new TimerTask() { @Override public void run() { System.out.println("这是任务执行体"); } }; //从现在起推迟2秒后,每隔1秒执行 timer.schedule(timerTask, 2000, 1000);}
lombok注解实现
依赖
12345<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artif ...
IDEA无限续杯
idea 商店
12file -> setting -> plugins -> installed -> Manage plugin repositorieshttps://plugins.zhile.io
安装插件
1ide eval Reset
使用
12help -> eval reset勾选 Auto reset before per restart -> reset
bpmn文件解释
根节点12<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL B ...
mqtt
依赖12345<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.0</version></dependency>
服务端12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364import org.eclipse.paho.client.mqttv3.*;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;public class MyMqttServer { public static void main(String ...
security
使用场景:用于访问权限的限制于管理
过程:通过用户名查询密码和角色,校验密码和判断该url是否允许该角色访问
引用Security准备
依赖
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- mybatisplus相关依赖 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <versio ...
validation参数验证
原理
依赖
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>
配置handler
1234567891011121314151617181920212223242526272829303132333435@RestControllerAdvice@Slf4jpublic class exceptionHander { /** * 抓取自带注解的报错(校验@NotNull、@NotBlank 等) * @param e 异常 * @return 返回信息 */ @ExceptionHandler(BindException.class) public ReturnDto handleError(BindException e) ...
抛出全局异常
异常的分类Exception分为运行时异常和非运行时异常
运行时异常:编译时不会报错,会在运行中报错,若空指针异常
非运行时异常:在编译时报错,如 IOException
全局异常抓取抛出
自定义类设置校验规则
12345678910111213141516171819202122232425//继承运行时异常类public class ThrowException extends RuntimeException { //此类要继承运行时异常 public ThrowException() { super(); } public ThrowException(String message) { super(message); } public ThrowException(String message, Throwable cause) { super(message, cause); } public ThrowExcep ...