一次接口时间序列化返回时区错误
最近使用一个springboot项目采用默认的jackson序列化,配置参数如下
1 | spring.jackson.default-property-inclusion=non_null |
设置好后发现返回的Date类型,数据库时间是2023-11-06 16:24:40返回的时间是2023-11-06 08:24:40,时间少了8小时。
最开始以为是数据库采用PostgreSQL导致数据存储的时间有问题,查看数据库后数据正常。对数据进行debug后,找到是因为jackson对时间格式化时,采用的时区有误。
记一次跨域处理
跨域问题解决有多种,一般直接在服务端配置运行跨域即可。
项目以前是普通的Spring项目,通过Tomcat启动,之后改为springboot。
正常应该是配置filter运行跨域即可。再项目上线后发现跨域不生效,经过排查后发现项目改造不完整
- 本地开发是通过main方法启动,但是发布的服务器上是打包为war后启动
- 保留了web.xml文件,跨域配置在spring容器中不生效。
解决办法就是把filter改到web.xml即可。
Golang编译安卓可执行文件
一部旧手机在家发挥余热,安装Termux后,希望手机能自动更新DNS解析,方便远程访问家里网络。
最开始使用Python完成,为了方便能直接运行,用Go做了重新实现。
实现逻辑是,通过https://4.ipw.cn
获取当前IP,然后通过阿里云SDK去检查IP是否一致,不一致则更新。
通过docker编译rust
在windows开发后,想编译后在linux里面运行。测试通过docker编译后看能否可以在linux里面运行。
linux环境使用的是wsl1 Debian,
创建一个普通rust文件demo2.rs:
1 | fn main() { |
Spring中RestartClassLoader导致静态属性Null
一次项目改造中,为了兼容一起获取配置代码,在 Spring 启动后,把Environment
写入静态属性,其他地方需要获取值时,直接通过静态方法中从Environment
内获取。
1 | public class SystemEnv { |
quarkus构建demo
Quarkus可以很方便通过GraalVm编译本地文件后直接执行,编译后启动非常快。
本次通过构建Quarkus项目,然后插件通过docker编译后生成本地文件。
初试服务器推送SSE
前端有个耗时的查询比对任务提交,想实时获取比对进程。一般常规都是轮询、长连接、websocket等,今天查到html5里面有个SSE(Server-sent Events),客户端提交一次请求后,由服务端单向推送数据。不支持一次请求客户端再次通信。