Java程序猿搬砖笔记(十九)

发布于:2025-07-22 ⋅ 阅读:(14) ⋅ 点赞:(0)

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';

网站公告

今日签到

点亮在社区的每一天
去签到