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,后面被其它很多同事使用。
对于小孩教育,我一般从长期角度考虑,因为严格要求了,也没有看到进步,而小孩骂得多又怕有心理问题。本来我也鸡娃的,但现在看,努力做到不拖后腿,老师不家访,已经不错了。虽然不能厚积薄发,但功不唐捐,相信时间的力量。这一点,在月底考虑再三,跟老师私信说了大意。
相关文章:
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年的工程代码…...

Json与Java类
简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据由键值对构成,并以易于阅读的文本形式展现,支持数组、对象、字符串、数字、布尔值…...

动手学深度学习(Pytorch版)代码实践 -计算机视觉-39实战Kaggle比赛:狗的品种识别(ImageNet Dogs)
39实战Kaggle比赛:狗的品种识别(ImageNet Dogs) 比赛链接:Dog Breed Identification | Kaggle 1.导入包 import torch from torch import nn import collections import math import os import shutil import torchvision from…...
在Linux系统中挂载硬盘
目录 1. 查看硬盘信息 2. 分区硬盘(如果硬盘没有分区) 3. 格式化分区 4. 创建挂载点 5. 挂载分区 6. 验证挂载 7.设置开机自动挂载(可选) 1. 查看硬盘信息 lsblk 这个命令会列出所有的块设备,包括硬盘 2.…...

安卓短视频去水印v1.7 简洁好用
各大平台视频无水印提取,登录即永久会员! 无水印提取,图片无水印提取 视频旋转,倒放,转gif等功能。 链接:https://pan.baidu.com/s/1UgO4V16ZM34tG5uDog74Pg?pwdcn0u 提取码:cn0u...

【征服数据结构】:期末通关秘籍
【征服数据结构】:期末通关秘籍 💘 数据结构的基本概念😈 数据结构的基本概念😈 逻辑结构和存储结构的区别和联系😈 算法及其特性😈 简答题 💘 线性表(链表、单链表)&…...

GIT 基于master分支创建hotfix分支的操作
基于master分支创建hotfix分支的操作通常遵循以下步骤: 切换到master分支: 首先,确保你的工作区是最新的,并且你在master分支上。如果不在master分支,你需要先切换过去。 Bash git checkout master 拉取最新的master…...

Vue-CLI脚手架与node.js安装
前言: Vue-CLI 是一个基于 Vue.js 快速开发单页应用的官方脚手架工具,能够帮助开发者快速搭建前端项目的基础结构。在开始使用 Vue-CLI 前,首先需要安装 Node.js,因为 Vue-CLI 是基于 Node.js 构建的。 Node.js 是一个基于 Chrom…...

自适应站长跑路单页网站源码
跑路单页HTML源码自行修改文字就行了,上传到服务器里面运行即可,本地运行的话音乐会加载不出来,涉及到跨域问题 自适应站长跑路单页网站源码...

Java基础(判断和循环)
一、流程控制语句-顺序结构 顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。 二、流程控制语句-分支结构(分支结构包括if、switch) if语句:在程序中用来进行判断 1、If语句的第一种格式…...
51单片机第12步_使用stdio.h库函数仿真串口通讯
本章介绍如何使用stdio.h库函数仿真串口通讯,学会使用view下面的“serial window #1”,实现模拟串口通讯。 Keil C51中有一些关键字,需要牢记: interrupt0:指定当前函数为外部中断0; interrupt1:指定当前函数为定时器0中断&…...
simulink-esp32开发foc电机
1. ESP32 和 STM32 都是流行的微控制器,但它们的刷写方式有所不同。 ESP32 ESP32 可以通过以下几种方式刷写: USB 下载模式:这是最常见的一种刷写方式。将 ESP32 连接到计算机的 USB 端口,然后将 ESP32 置于下载模式。可以使用…...
Python教程--基本技能
】TOC 5.1 解析命令行参数 在Python中,解析命令行参数是一项常见的任务,尤其是在开发命令行工具或脚本时。Python标准库提供了argparse模块,它可以帮助你轻松地编写用户友好的命令行接口。下面是使用argparse模块解析命令行参数的基本步骤&…...

干货分享:Spring中经常使用的工具类(提示开发效率)
环境:Spring5.3…30 1、资源工具类 ResourceUtils将资源位置解析为文件系统中的文件的实用方法。 读取classpath下文件 File file ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX "logback.xml") ; // ...读取文件系统文件 file Resou…...

一文讲懂npm link
前言 在本地开发npm模块的时候,我们可以使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试和测试 用法 包链接是一个两步过程: 1.为依赖项创建全局软链npm link。一个符号链接,简称软链&a…...

观成科技:证券行业加密业务安全风险监测与防御技术研究
摘要:解决证券⾏业加密流量威胁问题、加密流量中的应⽤⻛险问题,对若⼲证券⾏业的实际流量内容进⾏调研分析, 分析了证券⾏业加密流量⾯临的合规性⻛险和加密协议及证书本⾝存在的⻛险、以及可能存在的外部加密流量威 胁,并提出防…...
使用Swoole开发高性能的Web爬虫
使用swoole开发高性能的web爬虫 Web爬虫是一种自动化获取网络数据的工具,它可以在互联网上收集数据,并且可以被应用于各种不同的领域,如搜索引擎、数据分析、竞争对手分析等。随着互联网规模和数据量的快速增长,如何开发一个高性…...

【Elasticsearch】Elasticsearch索引创建与管理详解
文章目录 📑引言一、Elasticsearch 索引的基础概念二、创建索引2.1 使用默认设置创建索引2.2 自定义设置创建索引2.3 创建索引并设置映射 三、索引模板3.1 创建索引模板3.2 使用索引模板创建索引 四、管理索引4.1 查看索引4.2 更新索引设置4.3 删除索引 五、索引别名…...

[数据集][目标检测]棉花检测数据集VOC+YOLO格式389张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):389 标注数量(xml文件个数):389 标注数量(txt文件个数):389 标注类别…...
使用Java实现实时数据处理系统
使用Java实现实时数据处理系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 引言 在当今信息爆炸的时代,实时数据处理系统变得越来越重要。无论…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...