问题1:http报文转curl
背景
处理线上问题时,偶尔是需要进行网络抓包的(如tcpdump),用wireshark分析抓包文件时,一般能看到http请求的报文。
如下面这样:

有时候需要用postman这类工具来调用,进行复现,简单来说,需求就是:将上面图里的报文转换为postman这类工具里的请求。
有时候请求比较复杂,header也多,手工搞比较麻烦,而且线上问题处理都比较赶时间,如果能快速转换的话,是最好不过了。
我的方案是:分两步。先想办法,将上述报文转换为标准的curl命令,再将curl命令转换为postman请求。
报文转curl
经过搜索,发现有这么一个在线网站:可以用这个在线网站: https://curl.se/h2c/

上面这个网站就是curl这个项目的官网,算是官方背景了。大家可以直接用这个,方便。

不过我发现,在转换content-type为:application/x-www-form-urlencoded 这种的时候,结果中会缺失这个header,如下:

我自己想办法修复了一下,我找到了这个工具的源码:
https://github.com/curl/h2c
源码仓库里还有linux命令行版本h2c,不过一样存在上述的bug。

我看了下源码,是perl语言写的,我当时想着,现在大模型也厉害,直接让他给我转换成java语言吧。
最后我就转了个java版本,修复了那个bug,并且让大模型用javafx弄了个图形界面的版本(javafx代码我也看不懂,也懒得看,能用就行了)。
源码我放在了:
https://gitee.com/dumpcao/http-to-curl-converter
自己mvn package打个包就能用,或者直接用我仓库里提交的jar包,下下来双击运行就能用:

curl转请求
postman可以直接导入。

我用了apifox也支持curl导入,不过要繁琐一点,可自行搜索。
问题2:集合比较工具
有时候,临时要对两个集合(如两个list、set)进行比较,数据可能来源于不懂技术的同事发给你的两个excel,比如看看到底有哪些差异,多了什么,少了什么等等。
以前我有时候会用excel排序后对比,有时候也会写个临时代码来弄,但还是比较麻烦。
发现了有这类在线工具,可网上搜索:集合比较。
推荐1个我找到的:
https://jsons.top/menus.html

或者现在也可以让大模型帮忙写一个,打成jar,随时可以本地执行。
问题3:数据库序列设置
我们现在用的国产数据库,是基于postgresql的,表的主键不是mysql那一套,都是从序列中获取。
有时候我们会直接用insert语句插入数据库,且是手动指定了id值的:

这种sql执行完成后,由于是手动设置的id值,没从序列中获取,所以序列中的id值可能还是旧的,比如上述图片中,设置的id值都到4了。假设序列的最新值还是3,下一次有人从序列里取值,就会取到4,然后插入的话,就会报主键冲突。
所以,我们自己得记得,执行了手动指定了id的sql后,要把序列值同步更新:
就可以执行如下sql:
-- 手动更新序列的值。设置序列table_config_id_seq的最新值为table_config中的最大值
SELECT setval('table_config_id_seq', (SELECT max(id) FROM table_config)); -- 查看序列的当前值
select currval('table_config_id_seq');
问题4:dbeaver离线环境下下载驱动失败
在没有互联网的机器上,安装了dbeaver,也会发现真正去连接数据库的时候,竟然还要联网去下载驱动,此时就会报错。
我们可以这样,先在能联网的机器上,找到对应的数据库驱动(就是各种驱动jar包):



拿到这个jar包后,拷贝到离线环境中,同样是在上述窗口中,删除全部的老的记录,再add file添加jar包,重连即可:
