客怎眠qvq2024-06-122024-07-26
最近开发中遇到很多相同的问题,下意识去翻自己的历史记录,但又没能快速定位。我的trilium
一直用来记录自己的周报和相关教程,对于常见的bug和修复方案也找不到合适的地方,只能穿插在日报的历史中,随时间沉没。无意间翻到子舒的奇趣周刊,Bug周刊也由此而生。
又鸽了一个月🤣🤣🤣
公司有两台美国的服务器,负责拉取镜像进行打包(打包机),gitlab
仓库代码自动构建时,偶尔会出现网络问题,无法拉取对应镜像,过一段时间就又正常了。
首先排除host的问题,添加对应配置后问题没有改变。
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled (Client.Timeout exceeded while awaiting headers)
其次,寻找对应CI配置,是否能够满足 先检查本地再获取远端镜像
的要求,我找到了 pull_policy
配置。
build:
image:
name:
pull_policy: if-not-present # available: always, if-not-present, never
script:
- ...
同时修改 gitlab-runner
对应的的配置文件 config.toml
,补充 pull_policy
配置。
如果这样还不能避免服务器公网拉取镜像的网络波动,可以将镜像私有化,拉取镜像后打上自己的 tag
,推送到私有仓库,修改 hosts
配置走内网。
gitlab-runner config for docker runner
pull policy for image in gitlab-ci.yml
CI打包和本地打包时均报错,[ERROR] Failed to execute goal org.apache.maven.plugins: maven-resources-plugin:3.2.0:resources (default-resources) on project module-xxxx: Input length = 1 -> [Help 1]
,检查模块的pom文件,发现maven没有对resources的插件进行配置。
在该模块的 pom.xml
中添加如下配置:
<plugins>
<!-- 原有插件配置 -->
<!-- 补充配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
maven copy-resources input length = 1
修改公司服务器 hosts
配置,打算走私有的docker镜像仓库,但是保存时终端报只读的提示 E45: 'readonly' option is set (add ! to override)
学习两条命令,:q!
和 sudo !!
。
:q! // vim 强制退出
sudo !! // 使用sudo来重新执行上一条命令,即重新 vim /etc/hosts 编辑hosts文件
readonly option is set (add ! to override)
No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.test.cloud.service.testmoudle.contract.testDto]
在对Java项目某一微服务进行数据结构优化时,报错 JPA
的转换无法正常映射。我希望能够用一个结构体作为 Query
查询后的结果类型,但是事与愿违,规范上只能使用类似 Map<String, Object>
的方式接受数据,经过chatgpt后,解决方案如下。
reposity中修改原来的查询语句,在sql中直接对类型转换,同时补充dto的构造方法
// testRepository 代码虚构 仅说明逻辑
// 原sql语句
@Query(value = "\n" +
"SELECT \n" +
"projectInfo.id as id, \n" +
"area.code as code \n" +
"FROM projectInfo \n" +
"INNER JOIN area \n" +
"ON projectInfo.contactId = area.contactId")
List<testDto> findCode2();
// 修改后的sql语句 直接在sql中转换
@Query("SELECT new com.test.cloud.service.testmoudle.contract.testDto(projectInfo.id, area.code) \n" +
"FROM projectInfo \n" +
"INNER JOIN area \n" +
"ON projectInfo.contactId = area.contactId")
List<testDto> findCode();
// testDto
public class testDto implements Serializable {
private Integer id;
private String code;
// 补充构造方法
public testDto(Integer id, String code) {
this.id = id;
this.code = code;
}
}
// 这样就能在Impl中接受对应reposity的方法结果
List<testDto> areaCodeList = testRepository.findCode();