2024年6月个人工作生活总结


title: 2024年6月个人工作生活总结
urlname: code-for-2024-06
tags:

  • 代码积累
  • 知识总结
    categories:
  • 我的程序代码
    date: 2024-06-30 00:00:00
    photos:
  • gallery/tech/c2.jpg

本文为 2024年6月工作生活总结。

研发编码

编码和注释

因某些需要,重拾了2019年的工程代码。断续地经过大半天时间跟踪调试和打印,理清了业务流程,原来浅薄的理解加深了,还画了泳道流程图。如果能回到过去,一定要问自己,当时为何没有画流程图,注释为何没有写多一些?当然,近年这个差习惯已经改了一些。年纪一旦上去了,思维活跃程度不如从前了。

关于应用服务配置文件及监控的记录

配置文件:

文件格式多样化,如xml、ini、yaml、json等,这几种都在实际工程中应用到。像golang解析这些格式比较方便。另外golang也有组件支持热更新配置,只是目前还没有真正使用到。至于热更新,需要根据实际情况确定,比如日志中的文件名称等可能不太好热更新,但日志等级可以做到。

监控:

最近在一个golang工程中做了统计页面的访问,如最近5分钟、当日、昨天、今日,等。对其它一些数据还做了多维度的统计。

用faketime修改容器时间

容器可用faketime调整时间。但必须用LD_PRELOAD=./libfaketime.so.1 FAKETIME="@2024-06-19 00:30:00" xxx方式执行。经测试,对如C++、Java等应用层程序有效,对于golang程序不适用,对于底层动态库不适用。faketime编译方法:

git clone https://github.com/wolfcw/libfaketime
cd libfaketime
make
make install

生成文件为src/libfaketime.so.1。使用方法见上示例。之前在容器中使用date查看日志,发现没有变化,误以为不生效,后面用程序测试才发现在程序中打印的时间的确变化了。因为在执行程序前使用了LD_PRELOAD环境变量,作用于其后的程序,而其它的命令或库,没有被影响到。

Delphi四舍五入精度问题

这个的Delphi工具又出现四舍五入不进位的精度问题了。在2021年年底时已经解决过一次,当时是在四舍五入时额外添加一个很小很小浮点数,比如0.00000001,当时的确解决了已发现的问题,为保险起见,还在另一个Golang写的工具做了相同算法,并与Delphi生成的数据做对比。这样做是因为找不到根本原因(直接解决Delphi四舍五入不进位,上峰肯定不接受),因为用不同语言写不同工具对比,以期及时发现修正。此后一直如此操作,到2022年年底,有一项数据特殊,将其忽略掉不进行对比,一年半载后,就出现了问题。原来出问题的数据为100.49999999999999,用上述方法修正后,得100.500000000,符合预期。这次出现问题的是另一计算步骤,中间过程浮点数为197.5,但做四舍五入操作却无法进位。有关部门问到原因,我解释了Delphi用银行家算法,又解释了计算步骤可能存在的问题,最后还提到当初在数据库那个表的设计上,不应使用浮点数。比如存储的数据为里程,数值为0.139公里,使用navicat查看,该项为0.1389999999999999,而有的数据为1.1440000000000000001。经对比,代码里应该使用的是一个能在网上找到的2014年写的四舍五入算法函数,如下:

function RoundClassic(R: Real): Int64; 
begin Result:= Trunc(R); if Frac(R) >= 0.5 then Result:= Result + 1; 
end;

本次将其修改为:

function RoundClassicNew(R: Real): Int64;
begin R := R + 0.0000000001;Result:= Trunc(R); if Frac(R) >= 0.5 then Result:= Result + 1; 
end;

利用diff对比差异项

场景:有一100MB的csv文件,因数据精度问题生成了2个版本,业主要求给出差异项,运维人员说内容太多,要我直接提供最终文件,由于时间紧改程序太麻烦,于是用工具对比。使用excel,未果;使用beyond compare,卡了半天,有结果了,但拷贝时少了分隔用的逗号,格式不对。最后用diff,但输出旧新两种数据,且排版不对,找了些资料,可以通过设置diff参数,仅保留出现在新文件中的差异项,达到目的。

完整脚本如下:

# 利用diff工具输出新旧文件差异项,仅输出新文件的差异项
#!/bin/bashif [ $# != 2 ]; thenecho "usage: $0 <old file> <new file>"exit 1
fidiff --unchanged-line-format='' --old-line-format='' --new-line-format='%L' $1 $2

对注释快捷键Ctrl+/的思考

我主要使用VS Code编码,无论是C++、Golang还是Delphi,一些快捷键使用得多了,就养成习惯。比如注释的快捷键Ctrl+/。当在Qt Creator中做此操作,发现也能注释,更意外的是,在Navicat中查询SQL语句时,有些where条件暂时不使用到时,也习惯用Ctrl+/,发现也能注释掉。不知道这几个工具之间是否有默契还是相互参考,反正于我而言,是个好的事情。让用户的学习成本降低,不需要太多思考。如窗口的关闭位置,不管是桌面程序还是浏览器,我概念中是右上角的,但有些却反其道而行,不知道产品经理们是站在大众面,还是站在大众对立面。当然,也有例外,比如我设置了密码,我用明文进行提示,为避免歧义,我还添加了双引号,如请输入“250+250=?”

有的APP开屏广告,关闭窗口上下左右位置不固定,加上加了背景色,很难跳过,这是提高用户成本,提升产品广告有效时间、点击率的一个方法。

业余时间

为同时保持英语的听力和行业知识,不至于落后,这个月在B站听了一些关于架构的课程,这里记录一下地址,比如系统设计基础、系统设计系列。说实话,很多知识点都知道个大概,没深入研究,而且时间也上允许,但出现难题又无法快速解决。这里的难题等级较高,如nginx如何做到故障平滑转移?ELK如何方便自定义日志搜索?等等。

B站最近出现了很多电影,能搜索到很多粤语片,在996之余,抽空看了几部清一下脑子。

生活记录

流水

六一当天正值周六,向上层说有事不去加班,全家人去了南宁市科技馆,玩了半天。

端午假期,第一天,在下雨,至下午4点,雨停了。和大锤玩一个”左拐右拐“的游戏,就是骑电驴,出门,右拐,至下一路口左拐;至下一路口右拐,依此类推。大概半个多小时,就到了近郊外的地方,但见远山长,青山绿,云雾缭绕。泥路边有南瓜苗、红薯苗,还看到葫芦棚,开着花,结着果。远处还有小路,但雨后不好走,就打道回府了。路上大锤睡了,如当年带他去玩回程睡觉那样,于是绕路慢行,回到家时,已快入夜了。

端午假期第二天,居家休息,因新功能上线,晚9点多到公司值班,守至端午当天凌晨2时,数据正常,汇报后回家,路上买粉吃。

端午假期第三天,10点多出发去江边看龙舟,后因雨回家。

差不多896了

这个月再接再厉,一周中,有5天是8点多到工位,有4天是晚上近9点下班,周六上大半天班。于是大锤作业多的时候,能写到11点半。

育儿记录

记录一些问题,一些解决办法,一些结果。

月初,大锤有个练习试卷得A,接着得了B,而全班C者只有4名,可理解大锤是倒数10名内了。大锤被骂了,但看样子没有知耻后勇,月底,搞了2个C出来。简单总结,一是写字不认真,在他妈妈强烈要求下花了几百块的书法培训班结束后,依然不成样子。二是不仔细,比如“单”的中间部分变成了“日”,“样”字右边变成“半”,“b”写成“d”,解决办法是买了个记事本,专门让大锤把错的字、拼音写上。(但是,这个也不是办法,试了两后大锤就不愿意写了。)

本月大锤练习上有形近字、同音字,我也花了点时间做了些笔记。。数学方面,找了些有趣的应用题,比如1只猫1分钟吃掉一条鱼,100只猫同时吃100条鱼要花多少时间。大锤先是回答100分钟,两人分析小半天后,才认为需要1分钟。

月底学校中考,大锤放假前2天,老师打电话给他妈妈投诉,于是我也被骂了。

家里大人的教育理念是相反的,这个比较麻烦。如:我认为普通话的发音是要准确的,但人家说别人听大锤说话还以为大锤是北方人。我认为是先学会洗衣做饭才能成长,而不是成长了就会洗衣做饭,同理学习也一样。

内心话

我以前想着要平衡好上班养家还房贷及教小孩,乃至扮好儿子、丈夫、父亲的角色,但做不好,也做不到。我对自己要求比较严格,也想打造一个好的人设。上班地点近了些,按日常出发时间,送完大锤上学,8点后就能到工位了,但不会卡到8点半。负责的工程没有专门测试人员,自己写测试程序。为方便自己远程连服务器,早早申请VPN,后面被其它很多同事使用。

对于小孩教育,我一般从长期角度考虑,因为严格要求了,也没有看到进步,而小孩骂得多又怕有心理问题。本来我也鸡娃的,但现在看,努力做到不拖后腿,老师不家访,已经不错了。虽然不能厚积薄发,但功不唐捐,相信时间的力量。这一点,在月底考虑再三,跟老师私信说了大意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/370377.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes集群部署:node节点部署和CRI-O运行时安装(三)

关于CRI-O Kubernetes最初使用Docker作为默认的容器运行时。然而&#xff0c;随着Kubernetes的发展和OCI标准的确立&#xff0c;社区开始寻找更专门化的解决方案&#xff0c;以减少复杂性和提高性能。CRI-O的主要目标是提供一个轻量级的容器运行时&#xff0c;它可以直接运行O…

推荐Bulk Image Downloader插件下载网页中图片链接很好用

推荐&#xff1a;Bulk Image Downloader chome浏览器插件下载图片链接&#xff0c;很好用。 有个网页&#xff0c;上面放了数千的gif的电路图&#xff0c;手工下载会累瘫了不可。想找一个工具分析它的静态链接并下载&#xff0c;找了很多推荐的下载工具&#xff0c;都是不能分…

容器:queue(队列)

以下是关于queue容器的总结 1、构造函数&#xff1a;queue [queueName] 2、添加、删除元素: push() 、pop() 3、获取队头/队尾元素&#xff1a;front()、back() 4、获取栈的大小&#xff1a;size() 5、判断栈是否为空&#xff1a;empty() #include <iostream> #include …

ubuntu设置开启自动挂载sftp

1. 前言 与其说 ubuntu 开启自动挂载 sftp, 更确切的说应该是 nautilus (ubuntu上默认的文件管理器) 开机自动挂载 sftp。 因为 这里即使选择永远记住&#xff0c;开机也不会自动挂载 sftp 2.设置方法 gnome-session-properties #开机只启动设置命令设置 gio mount sftp…

ListView 的简单使用及 ArrayAdapter 中参数详解

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD&#xff0c;日常还会涉及Android开发工作。 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起…

Java | Leetcode Java题解之第212题单词搜索II

题目&#xff1a; 题解&#xff1a; class Solution {int[][] dirs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};public List<String> findWords(char[][] board, String[] words) {Trie trie new Trie();for (String word : words) {trie.insert(word);}Set<String> a…

【JVM 的内存模型】

1. JVM内存模型 下图为JVM内存结构模型&#xff1a; 两种执行方式&#xff1a; 解释执行&#xff1a;JVM是由C语言编写的&#xff0c;其中有C解释器&#xff0c;负责先将Java语言解释翻译为C语言。缺点是经过一次JVM翻译&#xff0c;速度慢一点。JIT执行&#xff1a;JIT编译器…

策略模式的应用

前言 系统有一个需求就是采购员审批注册供应商的信息时&#xff0c;会生成一个供应商的账号&#xff0c;此时需要发送供应商的账号信息&#xff08;账号、密码&#xff09;到注册填写的邮箱中&#xff0c;通知供应商账号信息&#xff0c;当时很快就写好了一个工具类&#xff0…

快排的非递归实现

前提 快排的递归实现&#xff0c;在深度过深时会存在栈溢出的风险&#xff0c;所以我们需要掌握快排的非递归写法 快排的实现 单趟实现 上次我们使用了hoare的快排单趟写法&#xff0c;所以这次我们使用前后指针法. 前后指针法 初始状态下&#xff0c;初始化prev为left,cu…

C++初学者指南-4.诊断---基础:警告和测试

C初学者指南-4.诊断—基础知识&#xff1a;警告和测试 文章目录 C初学者指南-4.诊断---基础知识&#xff1a;警告和测试1. 术语和技术记住&#xff1a;使用专用类型&#xff01; 2.编译器警告Gcc/CLang 编译器选项MS Visual Studio 编译器选项 3.断言运行时断言静态断言&#x…

算法系列--分治排序|再谈快速排序|快速排序的优化|快速选择算法

前言:本文就前期学习快速排序算法的一些疑惑点进行详细解答,并且给出基础快速排序算法的优化版本 一.再谈快速排序 快速排序算法的核心是分治思想,分治策略分为以下三步: 分解:将原问题分解为若干相似,规模较小的子问题解决:如果子问题规模较小,直接解决;否则递归解决子问题合…

陈志泊主编《数据库原理及应用教程第4版微课版》的实验题目参考答案实验2

实验目的 1&#xff0e;掌握在SQL Server中使用对象资源管理器和SQL命令创建数据库与修改数据库的方法。 2&#xff0e;掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据表的方 法&#xff08;以SQL命令为重点&#xff09;。 实验设备 操作系统:Win11…

Linux多进程和多线程(六)进程间通信-共享内存

多进程(六) 共享内存共享内存的创建 示例: 共享内存删除 共享内存映射 共享内存映射的创建解除共享内存映射示例:写入和读取共享内存中的数据 写入: ### 读取: 大致操作流程: 多进程(六) 共享内存 共享内存是将分配的物理空间直接映射到进程的⽤户虚拟地址空间中, 减少数据在…

SpringBoot | 大新闻项目后端(redis优化登录)

该项目的前篇内容的使用jwt令牌实现登录认证&#xff0c;使用Md5加密实现注册&#xff0c;在上一篇&#xff1a;http://t.csdnimg.cn/vn3rB 该篇主要内容&#xff1a;redis优化登录和ThreadLocal提供线程局部变量&#xff0c;以及该大新闻项目的主要代码。 redis优化登录 其实…

JDBC【封装工具类、SQL注入问题】

day54 JDBC 封装工具类01 创建配置文件 DBConfig.properties driverNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/qnz01?characterEncodingutf8&serverTimezoneUTC usernameroot passwordroot新建配置文件&#xff0c;不用写后缀名 创建工具类 将变…

【Elasticsearch】一、概述,安装

文章目录 概述全文搜索引擎概述ES&#xff08;7.x&#xff09; 安装ES&#xff08;Docker&#xff09;测试&#xff0c;是否启动成功 可视化工具配置中文 客户端Postman下载 概述 ES是开源的高扩展的分布式全文搜索引擎&#xff0c;实时的存储、检索数据&#xff1b;本身扩展性…

非对称加密算法原理与应用2——RSA私钥加密文件

作者:私语茶馆 1.相关章节 (1)非对称加密算法原理与应用1——秘钥的生成-CSDN博客 第一章节讲述的是创建秘钥对,并将公钥和私钥导出为文件格式存储。 本章节继续讲如何利用私钥加密内容,包括从密钥库或文件中读取私钥,并用RSA算法加密文件和String。 2.私钥加密的概述…

CTFShow的RE题(三)

数学不及格 strtol 函数 long strtol(char str, char **endptr, int base); 将字符串转换为长整型 就是解这个方程组了 主要就是 v4, v9的关系&#xff0c; 3v9-(v10v11v12)62d10d4673 v4 v12 v11 v10 0x13A31412F8C 得到 3*v9v419D024E75FF(1773860189695) 重点&…

【笔记】TimEP Safety Mechanisms方法论

1.TimEPM Overview 三大监控方法: Alive Supervision 实时监督Logical Supervision 逻辑监督Deadline Supervision 限时监督相关模块框图: 相关模块调用框图: 每个MCU核开启内狗(1核1狗),内狗用于监控相应核的TASK超时,超时后软reset MCU内狗时钟需要独立于OS时钟,两…

MongoDB集群搭建-最简单

目录 前言 一、分片概念 二、搭建集群的步骤 总结 前言 MongoDB分片&#xff08;Sharding&#xff09;是一种水平扩展数据库的方法&#xff0c;它允许将数据分散存储在多个服务器上&#xff0c;从而提高数据库的存储容量和处理能力。分片是MongoDB为了应对大数据量和高吞吐量需…