记一次生产环境上线的经历

最近写了一个项目,也是两三年没写后端的我再次尝试后端项目,在开发和部署的过程中,都遇到了许多奇奇怪怪的问题,
记录下来,也算是对这段时间惊心动魄经历的一次总结吧。

K8s容器内部时间错误

项目上线后,是使用Docker+K8s进行运维和部署的,但是测试环境是普通ECS主机。测试环境一切正常,
但是在生产环境出现了订单时间出现了错误,起初是认为自己项目时间没有做"UTC+8"处理,或者是mysql连接时
未指定时区。不过这两点检查之后,都没有问题。最后把目光放到了容器里。

Java关于时间操作整理

由于最近的项目中,经常需要对时间进行操作和计算,每次搜索出的计算方式都不一样,为了保证代码的统一性,还是仔细的看一下,java的时间和相关处理类,到底都有什么吧。

Date (java.util.date)

Date类的大部分方法都被标记为Deprecated过时方法。在java1.8之后,增加了新的时间处理类(java.time)。

UDP与JavaUDP操作

UDP是什么

  • 全称 User Datagram Protocol
  • 一种用户数据报协议,又称用户数据报文协议
  • 是一个简单的面向数据报的传输层协议,正式规范为RFC 768
  • 用户数据协议、非连接协议

UDP为什么不可靠

  • 它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份
  • UDP在IP数据报的头部,仅仅加入了复用和数据校验(字段)
  • 发送端生产数据,接收端从网络中抓取数据
  • 结构简单、无校验、速度快、容易丢包、可广播

使用swagger自动生成html文档

使用swagger自动生成html文档

使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--启动类添加注解--
@EnableSwagger2

--添加依赖--
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>

启动后访问地址
http://localhost:8060/swagger-ui.html

使用RedisTemplate操作Redis

使用RedisTemplate操作Redis

  • 补充:List,Set,Map 区别
    • List,Set都继承自Collection接口,Map不是
    • List特点:元素有放入顺序,元素可以重复
    • Set特点:元素无放入顺序,元素不可重复,重复元素会被覆盖。
      • (元素虽然放入无顺序,但是元素在set中的位置是由该元素的HashCode决定的,其位置其实是固定的)
    • Map特点:适合存储键值对的数据

JavaBasic-ThreadLocal

ThreadLocal

  • ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。
  • 同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这个时候该变量是多个线程共享的。
  • ThreadLocal中,会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×