「记录」日常开发当中遇到的一些问题
小明 Lv8

背景

随手记录了自己在开发中遇到的一些问题及解决方法,有些问题很小,但是却很容易犯错,也不怕被别人笑话,都在这里了。

maven使用阿里镜像有问题

新建或者覆盖settings.xml,完美解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">

<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>

使用MacOs更新系统Catalina之后Git出现问题

1
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

这是Xcode命令行工具需要更新,在你的Terminal中输入:

1
xcode-select --install

当出现提示:

1
xcode-select: note: install requested for command line developer tools

表示Xcode更新成功,可以正常使用,这个问题主要出现在系统大版本更新的时候,因此时刻保证Xcode工具更新即可避免该问题。

在SpringBoot打包成jar后,无法读取自定义文件的解决办法

前两天在做springcloud框架下的项目的时候,用到有一个框架之外的文件需要进行读取,当时在IDE中编码时通过this.getClass().getResource来获取文件的路径,没有任何的问题,但是在打成jar以后,结果发现不能正常的读取我放在工程里面的文件,但是在jar里面对应的class路径下可以看到该文件,后来将文件直接放到和我一个java文件平级的目录下,问题依然,最后使用了InputStream inputStream=this.getClass().getResourceAsStream(“/config/a.pfx”);来读取,才解决了问题。

tips:切记打成jar后如果需要用到这种框架之外的文件的话要用上面的方法来读取。

运行maven打包SpringBoot的jar包报错:-jar中没有主清单属性

使用mvn package打jar包,运行java -jar XXX.jar的时候报错:jar中没有主清单属性。pom.xml中添加

1
2
3
4
5
6
7
8
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

再次运行mvn package之后,即可正常运行。

接口请求Status(blocked:other)

有一次在前端请求后台提供的接口时,突然发现自己的浏览器不能请求

倒腾了很久,才发现是被浏览器插件(如我使用的是AdBlock插件)当作广告拦截了,当你在一个广告业务的公司工作,尤其要注意一哈。

解决办法:

  1. 停用你的广告拦截器
  2. 在当前网站停用广告拦截插件(比如AdBlock)

for循环中慎用return

马虎所致,for循环中的元素判断如果不满足条件,应当跳过当前的元素,应该使用continue,而不是return结束判断。

es不同的索引相同字段mapping类型不一致,导致查询时映射问题

  • 方案一:重建索引reindex
  • 方案二:可能索引数量较多,不能一个个都重建,可以缩小查询的索引或者或者根据时间字段查询类型一致的索引

python3链接mongodb密码中有特殊字符@

This worked for me ….

1
2
3
4
import pymongo

client = pymongo.MongoClient("mongodb://username:12%40password@ip:27017/sample_db",authSource="admin")
db = client['sample_db']

Remember if you have special characters in your password (e.g. #,@) you will need to encode them (see %40) in the password. If you do not do authSource=”admin” you will receive authentication errors. username - your mongodb username, ip - ip address as this assumes database is hosted on a remote server. sample_db is the database that you would like to access.

为什么Navicat统计的行数和表实际行数不一致?

针对该问题,我专门写了篇文章(https://mynamecoder.com/p/8868.html)

mysql批量删除大量数据

假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行

1
DELETE FROM syslogs WHERE statusid=1 

会发现删除失败,因为lock wait timeout exceed的错误。因为这条语句所涉及的记录数太多,因此我们通过LIMIT参数分批删除,比如每10000条进行一次删除,那么我们可以利用 MySQL这样的语句来完成:

1
DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000;

然后分多次执行就可以把这些记录成功删除。

注:执行大批量删除的时候注意要使用上limit。因为如果不用limit,删除大量数据很有可能造成死锁。如果delete的where语句不在索引上,可以先找主键,然后根据主键删除数据库。平时update和delete的时候最好也加上limit 1来防止误操作。

Grep命令出现 Binary file (standard input) matches

解决方法 加上-a
例如原本为

1
grep hello xxx.log

改为

1
grep -a hello xxx.log

-a: 表示把二进制文件当成普通文本,效果和–binary-files=text

  • 本文标题:「记录」日常开发当中遇到的一些问题
  • 本文作者:小明
  • 创建时间:2021-10-26 15:44:53
  • 本文链接:https://mynamecoder.com/p/1a81.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!