工作常用
文章平均质量分 53
'会飞的猪
这个作者很懒,什么都没留下…
展开
-
重复提交校验+HttpServletRequest 流数据不可重复读
重复提交校验+HttpServletRequest 流数据不可重复读原创 2023-01-29 08:51:23 · 497 阅读 · 0 评论 -
Spring 事务事件控制 解决业务异步操作解耦 @TransactionalEventListener 和 TransactionSynchronizationManager Transaction
背景:在业务中,经常需要在执行数据库操作后(事务提交完成),发送消息或事件来异步调用其他组件执行相应的业务操作。比如:用户注册成功后,发送激活码或激活邮件,如果用户保存后就执行异步操作发送激活码或激活邮件,但是前面用户保存后发生异常,数据库进行回滚,用户实际没有注册成功,但用户收到激活码或激活邮件。此时,我们就迫切要求数据库事务完成后再执行异步操作。@Autowiredprivate UserDao userDao;@Autowiredprivate JmsProducer jmsProducer转载 2021-06-28 14:59:10 · 796 阅读 · 0 评论 -
利用Freemarker生成word文档
万事第一步引包<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency>第二步准备word模板,另存为.xml的形式word模板图:原创 2020-12-11 14:53:35 · 741 阅读 · 0 评论 -
利用freemarker+html2image将html转化为图片
前言:接上篇freemarker生成word后,因为我们生成的是假word文档,底层还是xml,微信等app识别不了(目前还没有较好的技术解决这个问题)。所以产生了新的需求,把word的内容生成张图片。这样就可以在app端查看。导包<!-- html生成图片--> <dependency> <groupId>com.github.xuwei-k</groupId> <artifactId>html2image</artif原创 2020-12-28 20:11:03 · 2150 阅读 · 2 评论 -
DownloadUtils
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;public class DownloadUtils { public static Boolean fileDownload(HttpServletRespons原创 2020-12-11 14:52:00 · 297 阅读 · 2 评论 -
WordUtils
import freemarker.template.Configuration;import freemarker.template.Template;import javax.servlet.http.HttpServletRequest;import java.io.*;import java.util.Map;public class WordUtils { /** * @param dataList word中需要展示的动态数据,用map集合来保存 * .原创 2020-12-11 14:49:21 · 465 阅读 · 0 评论 -
读取项目文件,获取路径
web项目读取webapp下文件window下String classpath = this.getClass().getResource("/").getPath().replaceFirst("/", "");String url = classpath.replaceAll("WEB-INF/classes/", "");//得到WebAPP目录 url = url + "/static/dist/img/zwtp1.jpg"linux下去掉 replaceFirst("/", “”);原创 2020-12-11 14:05:06 · 460 阅读 · 0 评论 -
redis实现分布式事务锁
分布式锁分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。通俗的讲就是,一间厕所就这一个坑,我先来了,上锁。只有我走之后,打开了锁,你才能进去,然后你在上锁。依次类推,来保持一致性。实现原理互斥性保证同一时间只有一个客户端可以拿到锁,也就是可以对共享资源进行操作安全性只有加锁的服务才能有解锁权限,也就是不能让a加的锁,bcd都可以解锁,如果都能解锁那分布式锁就没啥意义了可能出现的情况就是a去查询发现持有锁,就在准备解锁,这时候忽然a持有的锁过期了,然后b原创 2020-05-21 10:55:06 · 1591 阅读 · 0 评论 -
如何在有序数剧中找到缺失的数字(例如1-100,随机抽出2个数字,找出抽取的数)
前言今天无意看到一个面试题,觉的很有意思。我理解的就是有100w条数据,从中抽走2条,然后问抽走的是哪两个。一开始自己也想了许多,什么二分法了,循环前后数相减不等于2的就是删除的数据。不过很快自己就推翻自己了,如果人家是拿走相邻的呢?如果人家不拿走2个,拿走5个6个呢?一开始也是自己想了很多很多,不过觉的都很烂。知道我发现了 java.util 里的 BitSet 类。我去很好的一次性的,...原创 2020-03-28 17:14:51 · 2096 阅读 · 0 评论 -
高并发解决方案
场景:同一时间大量请求操作。即高并发,典型案例–秒杀一、对于被频繁调用,更新频率较低的页面,可以采用HTML静态化技术二、图片服务器分离三、数据库集群和库表散列 mysql主从。m-m-s-s-s...(2个主,多个从。多个从使用负载均衡。主写入数据,从读取数据)四、缓存。众多的缓存框架五、负载均衡。nginx,lvs,F5六、搜索用单独的服务器,搜索框架七、使用MQ服务器【...原创 2019-05-06 14:32:41 · 124 阅读 · 0 评论 -
时间格式化
数据库时间字符串格式化,使用@JsonFormat、@JSONField、@DateTimeFormat三者出处1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jac...原创 2019-04-26 14:07:10 · 1303 阅读 · 0 评论 -
maven的多环境打包,开发
maven的多环境在resources 下分别创建 pro 生产 dev 开发 test 测试在下面编写我们不同的配置文件在pom.xml 添加 <build> <resources> <resource> <directory>src/main/resources</directory>...原创 2019-04-23 16:48:16 · 94 阅读 · 0 评论 -
jquery的ajax,详解
jquery 的ajax,异步请求详解自己老是记不住,做下笔录写法正常写法,不跨域情况$.ajax({ type:"get",//请求方式 url:"",//请求的链接 async:true,//是否异步请求,默认true data:{name:"zhangsan",age:20},//请求参数 dataType:"json",//数据类型 ...原创 2019-04-28 11:15:53 · 123 阅读 · 0 评论 -
后台@RequestParam接收参数,js中ajax怎么传参
用@RequestParam接收不同请求,js中ajax写法转载 2019-04-29 10:17:38 · 2203 阅读 · 0 评论 -
对配置文件的加密
对配置文件的加密创建自定义配置类 extends PropertyPlaceholderConfigurer 类 使用解密读取配置文件密码package com.csqj.config;import com.csqj.utils.CryptoUtil;import org.apache.commons.lang3.StringUtils;import org.springframe...原创 2019-04-24 16:47:43 · 485 阅读 · 0 评论 -
windows下安装多个tomcat(解压版tomcat)
下载解压tomcat后只需修改tomcat下conf-server.xml 里的三处端口号即可修改三处端口号:第一处 修改端口号第二处 修改端口号 URIEncoding= “UTF-8” 这个是配置了字符编码第三处 修改端口号总结只需修改这三处端口号,让每个tomcat都不一样即可...原创 2019-04-29 15:30:16 · 788 阅读 · 0 评论 -
BigDecima十进制,用于精确计算(价格,重量等)
对于高精确度的计算BigDecimal 十进制( 加: a.add(b); 减: a.subtract(b); 乘: a.multiply(b); 除: a.divide(b,2);//2为精度取值 比较大小: a.compareTo(b) 返回值 -1 小于 0 等于 1 大于 )...原创 2019-03-19 09:19:53 · 782 阅读 · 0 评论