Spring bean构造后、销毁前的钩子处理函数
bean初始化过程
代码实例
// 声明bean时定义initMethod和destroyMethod
@Bean(initMethod = "initMethod", destroyMethod = "destroyMethod")
public SampleBean sampleBean() {
return new SampleBean();
}
package com.tinktek.odm.manager.impl;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.Initializi...
Seata在Docker下安装
运行临时容器并复制默认配置
mkdir -p /opt/volume/seata
docker run -d -p 8091:8091 -p 7091:7091 --name seata --rm seataio/seata-server:1.7.0
docker cp seata:/seata-server/resources /opt/volume/seata/conf
docker stop seata
启动容器
docker run --name seata \
--restart always \
-p 8091:8091 \
-p 7091:7091 \
-v /opt/volume/seata/conf:/seata-server/resources \
-v...
Postman环境变量使用
创建环境
可以创建一个专有的环境来放置环境变量
使用环境
使用自己创建的专有环境
手动加入环境变量
使用脚本将响应的值加入环境变量
在Tests页签中加入以下脚本
// 获取响应数据,解析为对象
var data = JSON.parse(responseBody);
// 获取需要加入环境变量的值
var token = data.data.authToken;
// 加入当前环境
pm.environment.set("token", token);
// 加入全局环境
pm.globals.set("token", token);
新版,使用Scripts代替原来的Tests
使用pm.response.text()代替responseBo...
MyBatis-Plus FieldStrategy配置
FieldStrategy
通过配置FieldStrategy,可以控制在数据库操作时,对应的字段是否参与。
FieldStrategy取值
IGNORED 任何值都处理,包含null
NOT_NULL null值忽略不处理
NOT_EMPTY null值和空字符串忽略不处理
NEVER 任何值都不处理
DEFAULT 按全局配置
单字段配置
可分别配置update、insert、where场景下的策略
@TableField(updateStrategy = FieldStrategy.IGNORED, insertStrategy = FieldStrategy.IGNORED, whereStrategy = FieldStrategy.IGNO...
Java Concurrency In Practice线程安全相关注解使用
代码实例
<dependency>
<groupId>net.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
@ThreadSafe标注线程安全类
@NotThreadSafe标注非线程安全类
@GuardedBy("lock")标注状态被哪个锁保护
@Immutable标注不可变状态
Guava限流RateLimiter使用
代码实例
package com.tinktek.interfaces;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimit {
String key() default "";
double permitsPerSecond() default 1.0;
long timeoutMillis() default 100;
String failMessage() default ""; ...
Spring延时任务使用
代码实例
@Configuration
public class SchedulerConfig {
private static final int SCHEDULER_POOL_SIZE = 5;
private static final String SCHEDULER_THREAD_NAME_PREFIX = "scheduler-";
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPo...
RedisTemplate使用
Maven依赖
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置
application.properites
spring.redis.host=192.168.1.11
spring.redis.port=6379
spring.redis.database=0
spring.redis.password=xxx
spring.redis.timeout=300...
Jedis基本使用
连接服务端
Jedis jedis = new Jedis("192.168.1.11", 6379);
String result = jedis.ping();
jedis.close();
基本数据操作
Set<String> keys = jedis.keys("*");
jedis.set("k1", "v1");
jedis.get("k1");
jedis.lpush("k1", "v1", "v2", "v3");
List<String> values = jedis.lrange("k1", 0 , -1);
jedis.sadd("k1", "v1", "v2");
jedis.smembers("k1");
jedis....
Elasticsearch部署配置
Linux系统配置
/etc/security/limits.conf
# 每个进程可以打开的文件数限制
es soft nofile 65536
es hard nofile 65536
/etc/security/limits.d/20-nproc.conf
# 每个进程可以打开的文件数限制
es soft nofile 65536
es hard nofile 65536
/etc/sysctl.conf
# 一个进程可以拥有的VMA(虚拟内存区域)数量,默认65536
vm.max_map_count=655360
重新加载配置
sysctl -p
JVM配置
最大堆内存不超过系统总内存的一半,例如系统总内存为64G
config/jvm.options
...
332 post articles, 34 pages.