Java手写异步调用
Java 手写异步调用前言今天在写 mirai 机器人的一个小功能时,遇到了这样一个需求:机器人需要先发出一条消息,然后间隔 3 秒钟撤回这条消息 。 当然mirai本身提供了现成的方法,支持异步调用 最朴素的想法是使用Thread.sleep(3000) 1234567891011121314151617181920public class Test { public void A() { System.out.println("A"); try { Thread.sleep(3000); System.out.println("3S after"); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("B"); ...
Angular规范的git-commit-message
介绍 Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。 1>$ git commit -m "hello world" 上面代码的-m参数,就是用来指定 commit mesage 的。 如果一行不够,可以只执行git commit,就会跳出文本编译器,让你写多行。 1>$ git commit 原则上是写什么都行的。 但是一般来说,commit message 应该清晰明了,说明本次提交的目的。 目前,社区有多种 Commit message 的写法规范。本文介绍Angular 规范(见上图),这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。 格式每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。 1<type>(<scope>): <subject>// 空一行<body>// 空一行<footer> 其中,Header 是必需的,Body 和 Footer...
RestTemplate的简单使用
什么是RestTemplate RestTemplate 是 Spring 提供的一个Http请求工具。它支持常见的Rest请求方案的模板,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。 说白了,它的功能就类似 HttpClient。 在Spring项目中,使用 RestTemplate 发送 Http 请求无疑比 HttpClient 更加方便。 (但由于 RestTemplate 是阻塞、同步的,因此在面对大批请求时可能会有性能损失。因此在Spring5.x 以后,出现了 WebClient 来替代 RestTemplate) 发起Get请求get请求都需要在url后面手动拼接上参数 getForObject获取响应对象 1234567891011121314151617181920212223242526272829@RestControllerpublic class UserController { @Autowired RestTemplate...
SpringBoot使用HibernateValidator实现参数校验
Hibernate Validator依赖Hibernate Validator是Spring Boot集成的参数校验框架; 但从Spring Boot 2.3版本开始默认移除了校验功能,如果想要开启的话需要添加如下依赖。 1234<dependency> <groupId>org.springframework.boot</groupId> ...
RabbitMQ笔记
docker安装RabbitMQ1234567docker run \-d --name myrabbitmq \-p 5672:5672 -p 15672:15672 \-v rabbitmqData:/var/lib/rabbitmq \-e RABBITMQ_DEFAULT_USER=username \-e RABBITMQ_DEFAULT_PASS=password \rabbitmq:management 几种基础模型基础生产者与消费者模型 一对一 生产者生产消息后放入消息队列,消费者从队列中获得消息后进行消费。 生产者代码 1234567891011121314151617181920212223242526272829303132333435363738394041public class Provider { @Test public void testSendMessage() throws IOException, TimeoutException { //创建连接mq的连接工厂对象 ...
MySQL基础
DQL查询基础查询 语法 1234SELECT 查询列表FROM 表名; 起别名 12345678910# 起别名SELECT name AS my_name # 第一种方式FROM students; SELECT name my_name # 第二种方式FROM students; 去重 1234SELECT DISTINCT name FROM students; 字段拼接 12345MySQL中的'+'号只能作为运算符SELECT CONCAT(last_name,first_name) AS nameFROM students; 条件查询 语法 123456SELECT 查询列表FROM 表名WHERE 筛选条件; 逻辑运算符 12345678910&& 等价于AND || 等价于OR !等价于NOT# 从students表中选取id在10到20之间的学生的name(开区间)SELECT name FROM studentsWHERE id...