背景
随手记录了自己在开发中遇到的一些问题及解决方法,有些问题很小,但是却很容易犯错,也不怕被别人笑话,都在这里了。
maven使用阿里镜像有问题
新建或者覆盖settings.xml,完美解决
1 | <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
使用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 | <build> |
再次运行mvn package之后,即可正常运行。
接口请求Status(blocked:other)
有一次在前端请求后台提供的接口时,突然发现自己的浏览器不能请求
倒腾了很久,才发现是被浏览器插件(如我使用的是AdBlock插件)当作广告拦截了,当你在一个广告业务的公司工作,尤其要注意一哈。
解决办法:
- 停用你的广告拦截器
- 在当前网站停用广告拦截插件(比如AdBlock)
for循环中慎用return
马虎所致,for循环中的元素判断如果不满足条件,应当跳过当前的元素,应该使用continue,而不是return结束判断。
es不同的索引相同字段mapping类型不一致,导致查询时映射问题
- 方案一:重建索引reindex
- 方案二:可能索引数量较多,不能一个个都重建,可以缩小查询的索引或者或者根据时间字段查询类型一致的索引
python3链接mongodb密码中有特殊字符@
This worked for me ….
1 | import pymongo |
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
Windows、Mac、Linux中Docker开启远程访问API(2375端口)以及各种坑
参考链接[]
如何使用 SSH 远程控制一台 Windows 服务器
安装openshell
解决nginx请求过大的问题
1 | upstream sent too big header while reading response header from upstream |
解决方法如下:
在 nginx.conf 的http段,加入下面的配置:
1 | proxy_buffer_size 128k; |
重启后一般就可以解决, 如果还是报502,再在host配置的php段加入下面配置:
1 | fastcgi_buffer_size 128k; |
reload nginx即可