李迟2023年01月工作生活总结

202 阅读5分钟

本文为 2023 年 1 月工作生活总结。

研发编码

Linux

测试机器端口连通性有多种方法。下面演示的,前者是不开放端口,后者是开放的。

ssh 命令

 $ ssh -v -p 9001 localhost
 debug1: connect to address 127.0.0.1 port 9001: Connection refused
 ssh: connect to host localhost port 9001: Connection refused
 
 $ ssh -v -p 9000 localhost
 debug1: Connection established.
 ssh_exchange_identification: Connection closed by remote host

nc 命令

 $ nc -v localhost 9001
 Ncat: Version 7.50 ( https://nmap.org/ncat )
 Ncat: Connection to ::1 failed: Connection refused.
 Ncat: Trying next address...
 Ncat: Connection refused.
 ​
 $ nc -v localhost 9000
 Ncat: Version 7.50 ( https://nmap.org/ncat )
 Ncat: Connected to ::1:9000.

telnet 命令

 $ telnet localhost 9001
 Trying ::1...
 telnet: connect to address ::1: Connection refused
 Trying 127.0.0.1...
 telnet: connect to address 127.0.0.1: Connection refused
 ​
 $ telnet localhost 9000
 Trying ::1...
 Connected to localhost.
 Escape character is '^]'.

Go

某json数据结构体不能预先固定,可能有某字段, 判断之。 1、json数据类型设为interface{}。 2、使用Marshal、Unmarshal换成map[string]interface{}类型数据。 3、按 map 键值是否存在的方法判断。不使用直接用xxx=nil的方法。

     # calParam 为interface{}
     outbyte = []byte{}
     err = nil
     calParam1, err := json.Marshal(calParam)
     var jdata map[string]interface{}
     err = json.Unmarshal(calParam1, &jdata)
     if err != nil {
         // klog.Printf("格式化Json出错0:%v", err.Error())
         return
     }
 ​
     content, exist := jdata["myContent"]
 ​
     if !exist {
         outbyte = calParam1
         err = nil
         return
     }

之前改写了 klog,并应用起来,但某个应用服务耗时较高,因为整体系统对时间很敏感,那个服务已经造成很大的影响,使用 pprof 分析,指向了 klog,后来在同事提醒下,研究了异步日志功能,发现klog 其实带有异步写文件功能,只是没使用,改为定时5秒,耗时立马下降,效果明显。但是初始化前5秒及被中断退出没有记录日志,于是又研究代码并解决了问题。

本地缓存

稍研究了一下 bigcache,发现可以应用到工作中。如:

  • 将 sqlite3 文件的数据加载到 bigcache 中,提升处理时间。
  • bigcache 有定期清除功能,可以用于处理带一定时效性的缓存数据匹配或判断等问题。可以记录应用服务统计信息。

Docker

使用docker stats可查看机器上容器占用资源的情况。示例如下:

 CONTAINER ID   NAME         CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O     PIDS
 d3d36eb93fb3   webdemo-9010   77.88%    702.1MiB / 3.683GiB   18.62%    3.06kB / 0B   10.7MB / 0B   12
 dec68f33c171   webdemo        77.49%    584.8MiB / 3.683GiB   15.51%    2.98kB / 0B   6.78MB / 0B   12

SQL

因为一些网络策略原因,连接数据库比较麻烦,需要进入容器用命令行方式查表。记录用到的命令:

 再进入mysql容器:
 cd /work/docker/
 docker exec -it my-mysql bash
 进入数据库(注:账户密码一般不会变化): 
 mysql -uuser -p123456
 选数据库:   
 use UserInfo;
 # 正常查询语句
 查询完毕,使用exit退出mysql,再使用exit退出容器。

云原生开发

最近构思之前写的网页工具如何容器化。当前的部署方式是手动将所有的数据文件、配置文件、程序等打包成zip,上传到服务器,删除原同名目录,再解压,再运行程序。因为程序设计问题,要运行大概10个副本,功能相同,仅以端口区别。因为数据文件较多,每次更新都比较麻烦。现考虑容器化方式:

  • 在网页上实现上传(及下载)功能,将本服务所需文件按类型上传到不同目录。
  • 使用 docker-compose 部署,重启策略为 always。网页由实现重启按钮,点击后调用Exit(0)退出程序,由 docker-compose 重启之。
  • 数据、配置、程序均存储一份,通过 docker-compose 配置文件指定不同服务的环境变量实现不同的功能。
  • 各容器在角色上区别主、从。主容器能管理从容器。当主容器收到重启指令时,发消息到所有从容器,从容器重启。如此达到所有容器能在一次操作中重启。

工作记录

过年前得到消息,我要调岗,当然身份没变化,所以对我而言没什么区别。

春节放假前,作了些计划,但没完成多少。完成的有:

  • 测试了去年上半年的日志数据,数量在百万级别,用2台电脑连续烤机,期间发现了几处段错误并修正,顺便完成测试逻辑,主要是记录已完成的测试项,否则需重新开始,太花时间了。
  • 对 nginx + keepalived 做了一些实验,算初步接触了解。

生活记录

过年没有回家,因为孩子妈多次明确表示不会回去,我一个人回去,对各方都不讨好,于是作罢。

发年终奖的第二天中午,联系了银行经理,办了提前还款的事。除了大锤的学费及必要的生活开支,其它的都要上交给银行。

过年红包支出:

  • 年前转了1千块给老妈,用的是干私活的钱,不敢从个人银行卡转。
  • 给了大锤妈200红包,因为给多给少,家里都是一地鸡毛。
  • 给了小孩共100块。
  • 给了妹妹300块,收回200块。
  • 小孩爷爷给了共400红包。

大锤红包转到银行卡的共300块,因为买玩具支出了部分。

带大锤去了2个公园,2次邕江边,2次市中心。

和去年一样,一家人没有拍照。

思想方面

前天晚上,老妈在微信上发语音,问我心情是不是不好,我不知道她从何处看出或猜出,但的确心情不佳,于是趁和大锤去倒垃圾期间视频聊了一会。还是围绕家里的事。老妈很担心这样长期下去会怎么样,说实在我不知道能怎样,欠着上百万的房款,小孩长大不听话,家里三天两头吵。但只能安慰老妈说,我可能会转正,生活会慢慢变好,不要想着不好的事。我清楚老人想要什么,也明白道理,奈何做不到。

业余阅读

看史记,张仪、苏秦太能说了,一大段文字下来,收获不少,但只有羡慕的份。在B站上看东周列国志,对春秋时期的事有点了解,计划按时间慢慢积累历史知识。

业余研究