0%

前言

最近项目上用到了压缩算法,找来找去找到了zip压缩算法,因为网上找的代码有点不太入法眼,所以找chatgpt写了个比较优雅的zip压缩解压算法,代码看起来还是比较漂亮的,殊不知其中隐藏了一个大bug!

阅读全文 »

前言

​ 后台项目中,我们的web容器一般都会undertow 来替代tomcat,因为undertow 相比tomcat来说,有更好的性能,尤其高并发场景,undertow 更好

问题
阅读全文 »

前言

戴尔服务器面板报错:MEM0001 Multi-bit memory error on DIMM_A4. Reseat memory 解决方式

阅读全文 »

前言

最近项目上发现一个问题,有个服务的日志占用非常大,导致磁盘被占满后,服务异常,找到该日志后,直接一顿rm,发现日志非常被删除了,但是占用空间并没有释放

解决

经过查询得知,如果这个文件被某个进程占用的话,rm这个文件后,**会从文件系统的目录结构上解除链接(unlink)**,但是空间并不会被释放,需要停止这个进程后才会释放

阅读全文 »

前言

最近线上项目有个小问题,在F12查看问题的时候发现了另外一个问题,就是今天的主题,ws连接报错了,总是报400错误,下面记录下如何解决

环境

因为项目部署在公司内网,用frp穿透出去用域名访问的,域名又ssl证书,一开始项目用ws协议,报错也是看起来就是需要换成wss协议才行

问题

换了周发现问题还在,但是报错不一样了,没有那么多错误了,不过请求还是400,用postman在公司内网连接ws协议发现没有问题,那就说明要么是frp的问题,要么就是域名所在nginx反代的问题

经过查询frp,发现frp是支持的,以前项目有过这个问题,所以frp不存在不能转发ws协议的问题,所以问题一定处在域名所在nginx,查看nginx的配置后发现确实有问题

阅读全文 »

前言

最近折腾了一个命名,注册是从腾讯云注册的,但是因为某些原因DNS没有再腾讯云解析,换到了cf上,想着换个域名邮箱,发现配置了之后发给gmail给退信了

解决

1、问题1,再cf解析了两条腾讯云的mx记录后,立刻再腾讯企业邮箱看,发现虽然是使用中,但是用的还是腾讯云默认给的那个.work的地址,还折腾了找客户,等了一会后给发了两封邮件,一看,说审核通过了,可以用了!原来如此,需要审核!现在再看,发现可以了,因为之前一直用的腾讯自己的DNS服务,并且是一键解析到腾讯企业邮,所以么有遇到过这问题

2、问题2 弄好之后给我的gmail发邮件,发现被退回了,说什么未验证的!需要添加SPF之类的,一开始我还纳闷这是啥,后来我突然想起来,我看之前的域名解析邮箱的时候处理两条mx记录,还有一条txt的记录,v=spf1 include:spf.mail.qq.com ~all ,一开始我不知道这是干啥的,其实我一开始已经把这条添加到cf那解析了,问题1解决后,想着这玩意应该没啥用,就给删了!我又立马给加上了,发现可以发给gmail了!

前言

最近再用到centos防火墙的时候,用到了一些命令,记录下,防止忘记

添加规则
1
sudo firewall-cmd --zone=public --add-port=5001/tcp --permanent
移除规则
1
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
限制来源
1
2
3
4
sudo firewall-cmd --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.1.100"
port protocol="tcp" port="80" accept'
应用配置更改,以上命令执行后都需要执行这个命令
1
sudo firewall-cmd --reload
查看防火墙规则
1
sudo firewall-cmd --list-all

前言

备份的时候发现一些数据库挺大的,但是表很多,一个个去看不合适,所以用sql语句查一下

查看库大小排行
1
2
3
4
5
6
7
8
9
10
SELECT 
table_schema AS `Database`,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
FROM
information_schema.tables
GROUP BY
table_schema
ORDER BY
`Size (MB)` DESC;

查看表大小排行
1
2
3
4
5
6
7
8
9
10
SELECT
table_name AS `Table`,
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS `Size (MB)`
FROM
information_schema.tables
WHERE
table_schema = 'psi'
ORDER BY
`Size (MB)` DESC;

注意表排行的话,需要修改 table_schema 后面的值为你的数据库名称

Here's something encrypted, password is required to continue reading.
阅读全文 »

前言

最近项目上开发时遇到了一个问题,数据库中是datetime类型,实体类中是Date类型,我将该字段设置为例如’2023-08-01 23:59:59.999’时,实际存到数据库中时发现是’2023-08-02’了,下面记录下

问题

一开始看到,我以为我代码里设置错了,但是一通查看后,发现我代码里设置的确实是23:59:59。使用mybatis-plus时,框架会打印sql,我发现sql里是这样的end_time = TIMESTAMP '2023-08-14 23:59:59.999',,转成了TIMESTAMP 类型设置的。

TIMESTAMP 类型的精度通常只能到秒级别,而不是毫秒级别。因此,当插入一个带有毫秒级别的时间戳时,数据库会将毫秒部分舍去,保留到秒级别。看起来就是它进位了

解决

两种方式,一是使用LocalDateTime、二就是将毫秒部分直接舍去,比如end_time = TIMESTAMP '2023-08-14 23:59:59',,这样就没问题了