文章目录
-
- Mysql给查询记录增加序列号
- SpringBoot加载配置类的流程
- maven-compiler-plugin
- maven默认打包方式
- Git根据标签创建新的分支
- springCloud Gateway StripPrefix和PrefixPath过滤器的区别
- Git cherry-pick命令
- MySQL 正则表达式匹配
- Mybatis查询数据为null时,返回情况总结
- 使用Jackson把JSON字符串转为List
- 使用Fastjson把JSON字符串转为List
- @Transactional注解失效的场景
- 解决Git删除本地文件无法重新从远程拉取该文件的问题
- Windows10操作用户的一些命令
- 绿豆沙护眼色
- SpringBoot @ConfigurationProperties注解注入的属性为null
- 中文顿号分割字符串正则表达式
- Maven命令
- RedissonClient加锁、释放锁示例代码
- Git设置代理命令
- 查询MySQL数据库的默认字符集和排序规则
- 查询MySQL数据库所有表字段的字符集和排序规则
Mysql给查询记录增加序列号
使用变量
示例:
SET @row_number := 0;
SELECT (@row_number:=@row_number + 1) AS serial_number, t.*
FROM (SELECT * FROM your_table) AS t;
使用使用ROW_NUMBER() OVER()窗口函数
需要MySQL版本8.0以上
示例:
SELECT ROW_NUMBER() OVER (ORDER BY some_column) AS serial_number, *
FROM your_table;
在这个查询中,ROW_NUMBER()
函数根据some_column
列的排序来为每行生成一个序列号。
SpringBoot加载配置类的流程
包含:
1、SpringBoot加载配置的流程(简化)
2、@ComponScan和@Import注解的作用
3、@SpringBootApplication注解原理
4、SpringFactories机制
maven-compiler-plugin
Maven打包并不一定必须要显式引入maven-compiler-plugin依赖,因为Maven的超级POM(Super POM)已经默认包含了这个插件的基本配置。当您执行Maven构建时,即使在项目的pom.xml中没有明确声明maven-compiler-plugin,Maven仍然会在构建生命周期的compile阶段尝试编译源代码。
不过,虽然不是“必须”手动引入,但在许多实际场景下,我们往往会针对特定的Java编译版本、源代码和目标字节码版本、或者额外的编译器参数进行自定义配置。在这种情况下,就需要在项目的pom.xml文件中显式地声明并配置maven-compiler-plugin,以确保项目按照期望的方式和环境进行编译。
例如,如果您正在使用非默认的Java版本,或者想要启用特定的编译器特性,就必须在pom.xml中配置maven-compiler-plugin以适应这些需求。以下是配置示例:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.source}</target>
<compilerArgument>-parameters</compilerArgument>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
maven默认打包方式
Git根据标签创建新的分支
语法如下:
git checkout -b 新的分支名 标签名
springCloud Gateway StripPrefix和PrefixPath过滤器的区别
Git cherry-pick命令
命令作用:从分支A挑选一个或多个特定的commit,并将这些提交应用到分支B上。可以快速修复某些问题,而不需要合并整个分支代码。
MySQL 正则表达式匹配
MySQL中的REGEXP操作符,允许使用正则表达式来匹配字符串数据。
示例:
– 匹配包含"4"的数据
SELECT *
FROM t_external_award_apply
WHERE strategy_domain REGEXP ‘“4”’;
正则表达式匹配效果:
Mybatis查询数据为null时,返回情况总结
- 返回类型为集合类型,返回一个空集合(大小为0,非null),[不会]抛空指针异常
- 返回类型为基本类型(int、long),[会]抛空指针异常。
- 返回类型为基本类型的包装类型(Integer、Long),返回null
使用Jackson把JSON字符串转为List
try {
// 转为JSON字符串
String jsonString = JSON.toJSONString(list);// list为java对象
List<RepetitionRateVo> list = objectMapper.readValue(jsonString, new TypeReference<>(){});
return new ListResult<>(list);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
使用Fastjson把JSON字符串转为List
// 转为JSON字符串
String jsonString = JSON.toJSONString(list); // list为java对象
List<RepetitionRateVo> list = JSONObject.parseArray(jsonString ,RepetitionRateVo.class);
@Transactional注解失效的场景
- 非public修饰的方法;
- 注解的timeout设置过小;
- 代码中使用 try/catch处理异常,并且没有抛出新异常
- 方法没有加@Transactional,调用类内部的@Transactional方法
- bean没有被Spring管理(即类没有加@service、@component注解)
- 数据库不支持事务
解决Git删除本地文件无法重新从远程拉取该文件的问题
执行下面的命令,然后重新拉取即可:
git reset --hard
Windows10操作用户的一些命令
WIN+R运行:
// 启用/关闭管理员账户
net user administrator /active:yes
net user administrator /active:no
// 可以新增、修改、删除用户
netplwiz
绿豆沙护眼色
RGB 204 232 207
SpringBoot @ConfigurationProperties注解注入的属性为null
@Component
@ConfigurationProperties(prefix="activity")
public class ActivityConfig {
private String reviewObjectStartTime;
private String reviewObjectEndTime;
private String expertReviewStartTime;
private String expertReviewEndTime;
private Integer reviewObjectLimit;
}
原因:类中没有set方法。
解决方法:类中加入@Data注解
和这个依赖没有关系(不加也可以注入成功):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
中文顿号分割字符串正则表达式
^(?!、)([^、]+、)*[^、]+(?!、)$
正确的示例:网络、无线、IT、业务
错误的示例:网络、无线、IT、业务、
错误的示例:、网络、无线、IT、业务
错误的示例:网络、、无线、IT、业务
Maven命令
// Maven查看所有定义的配置文件
mvn help:all-profiles
// 显示当前构建中激活的所有配置文件 (idea勾选了也没有打印出来,需要启动/打包的时候才生效?)
mvn help:active-profiles
RedissonClient加锁、释放锁示例代码
RLock lock = redissonClient.getLock("FormalAudit-"+dbAchievementApplication.getCode());
long start = System.currentTimeMillis();
try {
// 尝试加锁
if (lock.tryLock(300, 20000, TimeUnit.MILLISECONDS)) {
}else{
log.info("线程:{}未获取到锁",Thread.currentThread().getName());
}
} catch (Exception e) {
log.error("执行异常:{}", e.getMessage(),e);
} finally {
//释放锁
if (lock.isHeldByCurrentThread()) {
log.info("线程:{}准备释放锁,执行业务逻辑消耗时间{}",Thread.currentThread().getName(),System.currentTimeMillis()- start);
lock.unlock();
}
}
Git设置代理命令
// 查看代理
git config --global http.proxy
// 设置代理
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890
// 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
查询MySQL数据库的默认字符集和排序规则
奖励现网查询出的和工具显示的不一致,工具是对的
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = '数据库名';
查询MySQL数据库所有表字段的字符集和排序规则
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';