![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
我与Java相爱相杀的这些年
日常解决java问题
二老付
理论写着写着就明白了
展开
-
导出word docx 打包成jar 文件路径无法解析
导出word文档(docx) 前言 我们常常在代码中读取一些资源文件(比如word文档、导出模版等)。在开发工具中单独运行,这些简单读取不会有问题。但是,如果我们把代码打成一个jar包发布到服务器,运行程序时就会抛出找不到文件的异常。我是如何解决呢? 背景 这个问题是在一次使用freemarker模版引擎导出word报告时发现的。本次导出word的文档格式为docx,大概说一下实现思路是:准备一个排好版的docx文档,使用freemarker将其中的变量替换。docx文档本身其实是一个压缩的zip文件,将其原创 2020-08-24 15:59:46 · 694 阅读 · 1 评论 -
线程与并发 - JUC
多线程与高并发 juc - java.util.concurrent 包下java为我们提供了多种基于cas实现的线程安全锁 ReentrantLock - 可重入锁 需要手动释放锁 CountDownLatch - 倒数门栓 CyclicBarrier - 循环栅栏 Phaser - 阶段栅栏 ReadWriteLock - 读写锁 读锁共享 写锁排他 Semaphore - 信号灯 Exchanger - 线程交换器 LockSupport - 工具类,创建锁和其它同步工具类的基本线程阻塞原语 Re原创 2020-07-21 09:32:50 · 153 阅读 · 0 评论 -
线程与并发 - CAS与Atomic*
多线程与高并发原创 2020-07-08 17:42:02 · 112 阅读 · 0 评论 -
线程与并发 - volatile
多线程与高并发 volatile 保证线程间可见性,让一个变量再多个线程间是可见的 volatile 禁止指令重排序 java中 堆内存是所有线程共享的内存,并且每个线程都有属于自己的工作内存,当线程需要访问某一个值时,会复制一份值放在自己得工作内存中,当线程执行完毕将变化后的值再写回堆中。 java语言 是需要经过编译器编译的,往往我们看似是一行的代码,编译之后会变成多个指令操作。 cpu执行指令-流水线式执行 – 即为了提高效率现在cpu不再是一步一步执行的了,可能你的第一个指令执行一半的时候,第二个原创 2020-07-07 14:05:20 · 154 阅读 · 0 评论 -
线程与并发 - synchronized
多线程与高并发 synchronized 当多个线程同时访问同一个资源的时候需要对这个资源上锁。 synchronized 既保证原子性,也保证线程间的可见性 当我们对一个数字进行递增操作时,如果两个程序同时访问,第一个线程读到count=0,并对其+1,在自己线程内部的内存里还没有写回去的时候;第二个线程读到的count也是0,并+1写回去;但是程序明明对count进行了两次+1操作,但结果还是1。 那么我们对这个递增过程加上一把锁,当第一个程序访问的时候,这个资源是它独占的,不允许别的线程访问计算,原创 2020-07-03 14:32:47 · 462 阅读 · 1 评论 -
线程与并发-Thread
多线程与高并发 进程:LOL.exe 点开 登陆进去,这就叫一个进程。他是一个动态得概念。 线程:进程中得最小执行单远,就是一个程序中不同得执行路径。 线程的创建方式 public class Thread_001 { static class MyThread extends Thread{ @Override public void run() { System.out.println("Hello Thread");原创 2020-07-01 11:33:02 · 305 阅读 · 0 评论 -
Redis - 布隆过滤器
目前仅redis4.0以上版本支持 安装插件 git clone https://github.com/RedisBloom/RedisBloom.git cd RedisBloom make //编译 会生成一个rebloom.so文件 redis-server --loadmodule /path/to/rebloom.so redis-cli -h 127.0.0.1 -p 6379 添加依赖,目前redis的jar包不支持布隆过滤器命令 <dependency> <gro原创 2020-06-30 14:23:04 · 216 阅读 · 0 评论 -
spring常用注解大全
注解 解释 @Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。 @Service 组合注解(组合了@Component注解),应用在service层(业务逻辑层) @Reponsitory 组合注解(组合了@Component注解),应用在dao层(数据访问层) @Component 表示一个带注释的类是一个...原创 2020-06-19 10:08:23 · 352 阅读 · 0 评论