李迟2023年01月工作生活总结(代码片段)

李迟 李迟     2023-03-30     793

关键词:

本文为 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站上看东周列国志,对春秋时期的事有点了解,计划按时间慢慢积累历史知识。

业余研究

李迟2023年02月工作生活总结(代码片段)

本文为2023年2月工作生活总结。研发编码LinuxGo某工程使用到一些数据的统计,为方便,使用map存储数量,由于其是无序的,输出的列表顺序不固定,将其和历史版本对比不方便,所以需要将key排序再输出。... 查看详情

李迟2022年12月工作生活总结(代码片段)

本文为2022年12月工作生活总结。研发编码Go一个Golang的编译脚本mybuild.sh:#!/bin/bashVersion="v0.0.1"VER=""if[$#=1];thenVER=$1Version=""$VERelseecho"notsetversion,using 查看详情

李迟2022年12月工作生活总结(代码片段)

本文为2022年12月工作生活总结。研发编码Go一个Golang的编译脚本mybuild.sh:#!/bin/bashVersion="v0.0.1"VER=""if[$#=1];thenVER=$1Version=""$VERelseecho"notsetversion,using 查看详情

李迟2022年11月工作生活总结(代码片段)

本文为2022年11月工作生活总结。研发编码Go研究了一些结构体、json相关的东西,感觉挺方便的,有空单独写出来。Docker使用alphine构建的一个应用服务镜像,其中有一解压zip文件功能sh./config/extract.sh./data/website/Archive:/tm... 查看详情

李迟2022年11月工作生活总结(代码片段)

本文为2022年11月工作生活总结。研发编码Go研究了一些结构体、json相关的东西,感觉挺方便的,有空单独写出来。Docker使用alphine构建的一个应用服务镜像,其中有一解压zip文件功能sh./config/extract.sh./data/website/Archive:/tm... 查看详情

李迟2022年10月工作生活总结(代码片段)

本文为2022年10月工作生活总结。研发编码Go判断interface是否为空判断interface类型是否为空,不能直接使用==nil来判断(用之无效),需先用reflect.ValueOf判断为指针类型,再使用IsNil函数判断,如下:... 查看详情

李迟2022年10月工作生活总结(代码片段)

本文为2022年10月工作生活总结。研发编码Go判断interface是否为空判断interface类型是否为空,不能直接使用==nil来判断(用之无效),需先用reflect.ValueOf判断为指针类型,再使用IsNil函数判断,如下:... 查看详情

李迟2022年6月工作生活总结(代码片段)

本文为2022年6月工作生活总结。研发编码前端需求:某输入框自动补全,带有中文名称,但后端只处理数字,需解析出数字并序列化。如将梧州岑溪001改为001,但页面依然显示前者。解析函数如下:functionde... 查看详情

李迟2022年6月工作生活总结(代码片段)

本文为2022年6月工作生活总结。研发编码前端需求:某输入框自动补全,带有中文名称,但后端只处理数字,需解析出数字并序列化。如将梧州岑溪001改为001,但页面依然显示前者。解析函数如下:functionde... 查看详情

李迟2022年6月工作生活总结(代码片段)

本文为2022年6月工作生活总结。研发编码前端需求:某输入框自动补全,带有中文名称,但后端只处理数字,需解析出数字并序列化。如将梧州岑溪001改为001,但页面依然显示前者。解析函数如下:functionde... 查看详情

李迟2022年9月工作生活总结(代码片段)

本文为2022年9月工作生活总结。研发编码Java调试时发现在Java函数体代码中途使用return返回,其后的代码会报错,提示:java:无法访问的语句不知何故。只好用if(1==0)...这样的形式来达到目的。Go协程及同步相关Go... 查看详情

李迟2022年9月工作生活总结(代码片段)

本文为2022年9月工作生活总结。研发编码Java调试时发现在Java函数体代码中途使用return返回,其后的代码会报错,提示:java:无法访问的语句不知何故。只好用if(1==0)...这样的形式来达到目的。Go协程及同步相关Go... 查看详情

李迟2022年9月工作生活总结(代码片段)

本文为2022年9月工作生活总结。研发编码Java调试时发现在Java函数体代码中途使用return返回,其后的代码会报错,提示:java:无法访问的语句不知何故。只好用if(1==0)...这样的形式来达到目的。Go协程及同步相关Go... 查看详情

李迟2022年8月工作生活总结(代码片段)

本文为2022年8月工作生活总结。研发编码Java接手了一个Java工程事务(注:不是接手工程),在其中添加一个模块。不知为何领导会找到我,或者是没有负责项目的原故,作为十分珍惜工作的人,不敢拒... 查看详情

李迟2022年11月工作生活总结(代码片段)

本文为2022年11月工作生活总结。研发编码Go研究了一些结构体、json相关的东西,感觉挺方便的,有空单独写出来。Docker使用alphine构建的一个应用服务镜像,其中有一解压zip文件功能sh./config/extract.sh./data/website/Archive:/tm... 查看详情

李迟2022年12月工作生活总结(代码片段)

本文为2022年12月工作生活总结。研发编码Go一个Golang的编译脚本mybuild.sh:#!/bin/bashVersion="v0.0.1"VER=""if[$#=1];thenVER=$1Version=""$VERelseecho"notsetversion,using"$Versionecho"plsconfirm(pressenter)"readfiec... 查看详情

李迟2022年4月工作生活总结

本文为2022年4月工作生活总结。研发编码Linux无其它思考业主要求做的事则一定要做,这是态度问题,但需要把风险点提前说清楚。工作记录无生活记录下旬开始,大锤发烧咳嗽持续了5天左右,先是发烧2天,... 查看详情

李迟2022年3月工作生活总结

本文为2022年3月工作生活总结。研发编码Linux研究了应用程序和动态库环境变量传递问题。编码其它无前后端在golang中渲染html页面,将部分信息处理后再显示到页面,比如系统信息和系统运行时长。在ajax中直接用串行化... 查看详情