摘要:
1、安装依赖: yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-heade 阅读全文
摘要:
针对 docx ,处理正文、表格、标头中的坐标替换。 public static void copyAndReplace(String oldPath, String newPath, Map<String, String> dict) throws Exception { FileOutputSt 阅读全文
摘要:
在项目中,为了节约网络消耗,需要将文件进行压缩后上传服务端。 最开始考虑的是将文件压缩为 zip ,由服务端返回后前端 zip 再进行解压。但 zip 对小文件、图片、视频的压缩效果很差。所以需要多种压缩方式配合使用。 图像采用 canvas 有损压缩: utils.dealImage = (bas 阅读全文
摘要:
springboot 中 @NotNull 等参数检查注解非常实用,优化掉了很多的重复代码。 在开发老版本 spring 项目时,没有类似注解,所以自己实现一个类似的功能,优化代码结构。 由于项目中没有使用统一异常处理,注解用于 Service 层,抛出的异常由 Controller 处理。 首先自 阅读全文
摘要:
场景:页面包含多个大 sql。 目的:尽量保证接口响应速度,数据库压力可暂不考虑(并发不大,耗时 sql 多)。 思路: 1、如果 redis 中不存在缓存,查询数据库并添加缓存,根据数据变化频率设置缓存过期时间; 2、如果 redis 中存在缓存,提交更新缓存的异步任务(可选,针对数据变化频率高, 阅读全文
摘要:
手写分布式锁,仅适用于单例 Redis。 与多线程的加锁解锁机制一样,分解出加锁解锁需要做的动作后,想办法保证动作的原子性即可。 X86 架构提供了 getAndSet 原语,保证了锁的检查与上锁这组动作的原子性,操作系统在其基础上提供了非常多的加锁方法。 Redis 也提供了类似的 “原语”:SE 阅读全文
摘要:
JAVA: public final int[] topKFrequent(int[] nums, int k) { Item[] arr = this.initItemArr(nums); HeapSort heap = new HeapSort(arr); int[] reArr = new i 阅读全文
摘要:
Promise 的作用是优化异步操作,解决“回调地狱” 问题。 对于异步操作,可以将其封装为 promise 对象,通过链式调用替代回调函数的嵌套。例如: let print = function (msg) { return new Promise((resolve, reject) => { t 阅读全文
摘要:
JAVA: public final boolean canCross(int[] stones) { int len = stones.length; return jump(stones, 0, 0, new HashMap<Long, Boolean>()); } private final 阅读全文
摘要:
JAVA DP 反向: public final int maximalSquare(char[][] matrix) { int xLen = matrix.length, yLen = matrix[0].length, re = 0; int[][] cache = new int[xLen] 阅读全文