摘要:
(目录) 前言 记录下SpringBoot读取JSON文件的方式 具体实现 JsonUtil.java import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java 阅读全文
摘要:
(目录) 前言 js浮点数的计算存在精度不准的问题,解决方案:用整数与整数的加减乘除运算来规避该问题。 JS - 浮点数计算不精确 let [num1,num2] = [0.1, 0.2]; console.log(num1 + num2); // 0.30000000000000004 conso 阅读全文
摘要:
(目录) 前言 CommandLineRunner接口在容器启动成功后最后一步调用,常用于应用程序启动后初始化操作,其在整个应用生命周期内只会执行一次。 具体应用 实现CommandLineRunner接口 Runner.java import org.springframework.boot.Co 阅读全文
摘要:
(目录) 前言 @PostConstruct是Java EE5中引入的,其用于需要在依赖注入完成后执行任何初始化的方法,且只会被执行一次,该注解在Java 11中已删除,继续使用需要添加依赖项: <dependency> <groupId>javax.annotation</groupId> <ar 阅读全文
摘要:
(目录) 前言 RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,记录下SpringBoot整合RocketMQ的方式,RocketMQ的安装可以查看:Windows下安装RocketMQ 环境 SpringBoot2.5.3 + RocketMQ4.7.0 具体实现 pom.xml < 阅读全文
摘要:
(目录) 前言 项目中用到了延迟消息队列,记录下一win10下rocketmq的安装 环境 win10 + rocketmq4.7.0 具体操作 下载 链接:https://rocketmq.apache.org/dowloading/releases 环境变量配置 配置环境变量ROCKETMQ_H 阅读全文
摘要:
(目录) 前言 SpringBoot + Redis 可以用 Redis 的键空间通知机制实现类似延迟消息队列的功能 ,Redis2.8 后可以通过键空间通知接收那些以某种方式改变了Redis数据空间的事件通知,关于 Redis 键空间通知的配置 Redis-x64-3.2 键空间通知(keyspa 阅读全文
摘要:
(目录) 前言 记录下SpringBoot集成Redis的方式。 环境 SpringBoot2.5.3 + Redis-x64-3.2.1 具体实现 pom.xml <!-- redis --> <dependency> <groupId>org.springframework.boot</grou 阅读全文
摘要:
(目录) 前言 Redis2.8 后可以通过键空间通知(设置 notify-keyspace-events)接收那些以某种方式改变了Redis数据空间的事件通知,关于 Redis 键空间通知的文章有很多,这里只是记录个人在 Redis-x64-3.2 版本下实现过程中出现的问题。 具体实现 键空间通 阅读全文
摘要:
(目录) 前言 记录两种根据 key 值移除 map 中键值对的方法。 具体实现 map.remove() @Test public void test() { Map<String, String> map = new HashMap<>(); map.put("k1", "k1"); map.p 阅读全文
摘要:
(目录) 前言 记录下reduce函数的简单用法,其用作从一个流中生成一个值。 具体应用 public static void main(String[] args) { List<Integer> arrayList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 阅读全文
摘要:
(目录) 前言 枚举是 Java1.5 引入的新特性,通过关键字 enum 来定义枚举类。 应用 定义 关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。 enum WeekEnum { Monday, Tuesday, Wednesday, T 阅读全文
摘要:
(目录) 前言 记录BigDecimal的一些应用,BigDecimal对超过16位有效位的数提供了精确的运算支持。 具体应用 构造器 BigDecimal num1 = new BigDecimal("5"); // String 推荐使用 BigDecimal num2 = new BigDec 阅读全文
摘要:
(目录) 前言 拦截器中使用@Autowired时为空,这是因为拦截器加载是在Spring Bean创建之前。 public class PermissionInterceptor implements HandlerInterceptor { @Autowired private UserServ 阅读全文
摘要:
(目录) 前言 JPA中可以通过设置实体的导航属性 + JPQL完成复杂的多表查询,简化SQL的编写。 示例 建表语句 Table CREATE TABLE `school` ( `id` int(11) DEFAULT NULL, `name` varchar(50) COLLATE utf8_u 阅读全文
摘要:
(目录) 前言 微信小程序AppID和AppSecret一起使用可调用微信公众接口能力,这里介绍通过 wx.login() 拿到code,将code传到后台服务器, 后台服务器结合小程序的 appid 和 appsecret 去请求微信服务器拿到用户的 openid 进行自己的业务逻辑处理。 环境 阅读全文
摘要:
(目录) 前言 Java中的拦截器提供了一种可以使开发者在一个Action执行的前后执行一段代码的机制,这里我们用拦截器来承接上一篇文章SpringBoot - 集成Auth0 JWT,在拦截器中进行JWT Token验证。 具体实现 拦截器的实现 拦截器 import org.apache.com 阅读全文
摘要:
(目录) 前言 说说JWT,先说下互联网服务常见的两种用户认证方式: session认证与Token认证 session认证 传统的Session认证的大体流程可以表示为用户提供用户名和密码登录后由服务器存储一份用户登录信息并传递给浏览器保存为Cookie,并在下次请求中根据Cookie来识别用户, 阅读全文
摘要:
(目录) 前言 jSR303参数校验可以查看之前的文章 SpringBoot - Bean validation 参数校验,这里介绍消息模板的配置。 具体实现 Message模板配置 /resources/目录下新增ValidationMessages.properties文件(固定文件名),配置M 阅读全文
摘要:
(目录) 前言 Stream是Java 8中新增的一个抽象概念,可以对集合进行复杂的查找、过滤和映射数据等操作。 简单应用 生成方式 Java 8 中, 集合接口有两个方法来生成流: stream() − 为集合创建串行流。 parallelStream() − 为集合创建并行流。 应用示例 map 阅读全文