摘要:1、模板 所有的标签都是以 {{开始,以}} 结束。 {{template}} 文本 {{@template}} 图片 {{#template}} 表格 {{*template}} 列表 {{+template}} Word 文档合并 {{?template}}{{/template}} if 和
阅读全文
摘要:1、自定义序列化 package com.sxsoft.admin.entity.customEntity; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.DesensitizedUtil; impor
阅读全文
摘要:orElse语法:Optional.ofNullable().orElse();示例: public class OptionalDemo { public static void main(String[] args) { System.out.println(Optional.ofNullabl
阅读全文
摘要:1 认识Stream流 在Java中我们对数组和集合的操作一定是非常多的,几乎每个程序都会制造和处理数组或者集合。在Java 8之前我们处理这些数据时需要迭代、需要判断并且需要写具体的算法才能获取到想要的结果。有了流之后只需要表达想要什么,最终就会得到想要的结果,不必去担心怎么去显示的实现这些算法。
阅读全文
摘要:package io.binghe.concurrent.lab06; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.
阅读全文
摘要:由于我们系统中使用了Mybatis作为数据库持久层,因此决定使用Mybatis的TypeHandler或Plugin来解决。 TypeHandler : 需要我们在某些列上手动指定 typeHandler 来选择使用那个typeHandler或者根据@MappedJdbcTypes 和 @Mappe
阅读全文
摘要:方法一(推荐): 1、文件处理 效果图: 说明:列表头部必须加标记如{{wordList}},子项必须是[xx];图片必须是{{@xx}} 所有的标签都是以 {{开始,以}} 结束。 {{template}} 文本 {{@template}} 图片 {{#template}} 表格 {{*templ
阅读全文
摘要:excel模板 方式一(推荐方式二): 部分代码片段 <!--导出导入 excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.12</version>
阅读全文
摘要:这篇文章我会简单总结一下我了解的使用线程池的时候应该注意的坑以及一些优秀的实践。拿来即用,美滋滋! 内容概览: Java指南:https://java-family.cn 1、正确声明线程池 线程池必须手动通过 ThreadPoolExecutor 的构造函数来声明,避免使用Executors 类创
阅读全文
摘要:/** * 分批次批量插入 * @throws IOException */ @Test public void testBatchInsertUser() throws IOException { InputStream resourceAsStream = Resources.getResour
阅读全文
摘要:1、导出 @RequestMapping("/export") public void export1(HttpServletResponse response){ List<UserEntity> list = new ArrayList<>(); //传入数据 List<UserEntity>
阅读全文
摘要:1、根据身份证获取出生日期,LocalDateTime /** * 根据身份证获取出生日期 * @param idCard * @return * @throws ParseException */ public static LocalDateTime GetBirthByIdCard(Strin
阅读全文
摘要:一、原因 JDK受版本安全限制,默认只允许128位长度以内的。秘钥长度,如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. java运行时环境默认读到的是受限的policy文件. 文件位于${java_home}
阅读全文
摘要:平时开发中遇到根据当前用户的角色,只能查看数据权限范围的数据需求。列表实现方案有两种,一是在开发初期就做好判断赛选,但如果这个需求是中途加的,或不希望每个接口都加一遍,就可以方案二加拦截器的方式。在mybatis执行sql前修改语句,限定where范围。 当然拦截器生效后是全局性的,如何保证只对需要
阅读全文
摘要:读完这篇文章里你能收获到 Mybatis动态SQL语句大全 Mybatis中如何定义变量 Mybatis中如何提取公共的SQL片段 1. If 语句 需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名来查询 <!--需求1:根据作者名字和博客名字来查
阅读全文
摘要:1. 商品秒杀-超卖 在开发中,对于下面的代码,可能很熟悉:在Service里面加上@Transactional事务注解和Lock锁。 控制层:Controller @ApiOperation(value="秒杀实现方式——Lock加锁")@PostMapping("/start/lock")pub
阅读全文
摘要:package com.sxsoft.config; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.istrong.ec.common.utils.StringUtils; import
阅读全文
摘要:方法1: /** * 获取重定向地址 * @param path 原地址 * @return * @throws Exception */ private String getRedirectUrl(String path) throws Exception { HttpURLConnection
阅读全文
摘要:gitee源码 实际项目中, 使用@Async调用线程池,推荐使用自定义线程池的模式,不推荐直接使用@Async直接实现异步,直接使用会不断的创建线程,最终会导致系统占用内存过高。 1、自定义线程池 package com.sxsoft.config;import org.springframewo
阅读全文
摘要:一、缓存穿透 一个在缓存和数据库都不存在的数据,而用户不断发起请求,借此攻击数据库,造成数据库压力过大。比如请求 id < 0 的数据 解决方案: 接口校验、限流 布隆过滤器 缓存空值,设置过期时间短些 @GetMapping("/penetrate") public String cachePen
阅读全文