2024年12月个人工作生活总结
本文为 2024年12月工作生活总结。
研发编码
Golang语言byte数组赋值
假定有如下变量:
var strCode string
var bCode [9]byte
现需将string类型转换成byte类型,如下:
bCode = []byte(strCode)
无法转换,提示:
cannot use []byte(strCode) (value of type []byte) as [9]byte value in assignment
在golang中,[]byte
和[9]byte
是不同的类型。可用copy拷贝:
copy(inputStruct.Ets_code[:], []byte(input.Ets_code)[:9])
注意,copy第二个参数最好加上长度的限定。另外,也可用for循环单个字符赋值。
导出mysql数据表
使用mysqldump命令导出数据库表结构,命令:
mysqldump -h 172.18.8.18 -P 3306 -u my_name -p<密码> my_table --no-data > my_table.sql
或
mysqldump -u my_name -p<密码> my_table --no-data > my_table.sql
导入方法1:
mysql -u highway -p<密码> my_table < my_table.sql
导入方法2:
连接数据库
use mydb; # 选数据库
source /tmp/my_table.sql;
经测试,在TiDB数据库导入MySQL数据表时,只能用方法2,方法1行不通。
迁移gitlab仓库
据有关消息称,Gitlab 将停止为中国区用户提供服务,可将账号迁移至国内一家公司。有60天迁移期,过期可能删除账号,先不管其真或假,多个地方备份,总不会错。为此,专门抽了一些时间将先前的仓库同步到github上。
github提供import功能,但经测试不成功,因此只能先克隆再上传,命令如下:
克隆gitlab仓库:git clone https://gitlab.com/latelee/gitee-koa.git
进入目录:cd gitee-koa
在github上仓库创建同名仓库后,再添加:git remote add github git@github.com:latelee/gitee-koa.git
推送到远程仓库:git push github
十年前就开始使用gitlab了,当初看中的是其私有仓库,现在github也能建立私有仓库。不久前,github也提供了免费版本的copilot。可惜经常连不上,无法使用。
有关研发流程的思考
有感于当前的研发实情,流程方面还是没有形成,或者形成了但没有很好落实到位。目前没有专门的研发管理人员,流程也只是在文档中(有的没有)。如果团队磨合得很好,问题倒也不大,当然,在管理上肯定必须要有相关流程制度。
举例一些小事:
有的事务,虽然已经提过,但有时上游交付的东西不够详情,靠自己猜或用工具测试出来。这也是当初写工具的驱动力之一。因此,需要确定流程,并宣贯到位。
如微服务的版本迭代升级,因为有2套不同的环境,已经确定了版本先提交到内网仓库,再同步到专网仓库,最后更新到生产环境。此过程使用harbor管理镜像,因此版本有迹可寻,有时候出于调试需要,有的版本不走仓库,而是通过挂载方式运行程序。有时,测试通过后,就一直使用了。当后续有版本通过仓库更新时,因为用了挂载方式,版本并不是最新的。因此,需要确定流程,研发人员要清楚理解。
如前几年开会确立了由专人对接现场,整理问题,再转到研发,将问题分类好后,处理起来非常快,如有的是已知问题,有的已有解决方案的。如果不确定,转研发,再归档。这是好的,但没有执行到位。
如有的问题,起初,某现场已经报了,也提了方案了,但整改没有到位,一年后,其它现场依然陆续提出。比如,某版本号的显示问题,一年多前就陆续有不同的现场报了,再如今,还有现场打电话来问。比如,某个程序可以自动更新不同时间的版本,但偏偏默认起始时间为2020年,但部署时没修改,于是要花很久才轮到2024年年底,偏偏时间又紧急,占用网络带宽不说,影响现场就不好了。这2个问题很好解决,前者就是接口加上显示界面的事,后者在启动时将时间修改为当前前几天即可。这就需要有项目需求和问题的跟踪机制了。
当然,个人负责的事,还是要有责任心的。上述所述,或多或少是个人接触到的,因此会去思考,至于解决,就是相关方的事情。对于个人的程序,为方便起见,会额外加料,比如,将重要的实时日志,输出到http接口,直接用浏览器或curl即可查看,基于此,还会再添加重点模块的异常信息,以及系统资源监控,等等。这些都是为了方便自己而已。
当然,上面所述,是作为个人的我,站在个人岗位,所作的不成熟的个人思考。上层肯定有上层的设计和考量,比如看重创造的价值,而不是个人的努力;看重产品整体,而不是各模块个体。限于能力水平、制度和位置,个人是不敢越过的。但是,我在个人岗位,还是要求自己向较好的那一方发展,并影响一些人。
国产化系统适配
重新下载了新版本TiDB,编译了三大平台的版本。此过程还是比较麻烦和耗时的——这里的耗时包括查问题消耗,以及编译消耗。在编译过程中没有详细记录,后续还得再试一次,以便形成实操性较强的文档。
年底杂事
这几年每到年底,都会有很多事。版本切换,版本上新,需求变更,值班保稳定,等等。一些计划内的事就被中断了。比如,研究系统镜像livecd的自动安装;找系统依赖库源码编译测试,等等。起了头被中断,后面又得重新去梳理思路。
挑战和应战
有些时候,我喜欢挑战,有一种不服输的念头。
当年,有感于网络的开源精神,我也做了一些东西,或放到github,或发表文章。如今的网络环境,查点有用的资料,要会员,要积分,要钱。不过,有些(不涉及版权的)技术和代码,我还是坚持分享。
像做livecd,onvif等,虽说有一定的工作需求驱动,但还是凭借内心去做。或者说,有个东西暂时难倒我了,但要顶硬上,要克服它。比如现在国产化适配,就遇到龙芯编译环境问题,官方没有给出方案,但自己就想着去解决,往小了说,是不服输,往宏观上说,是为国产化事业推进贡献力量。
生活记录
教大锤英语的构思
这个月主要做的事有:
整理英语启蒙书的文本,并转换成音频,当前使用的软件不太满意,github上有,但要部署python,没有找到方便的,后续还要继续找。
慢慢教大锤一些单词,同时注意教他怎么拼。我的设想是按学拼音的法子教,音标和与拼音相近的读法,也一并教并做区别。
在B站看到一个视频,讲英语的2个基本句型,经分析,的确不错,也有意教给大锤。
后续计划去一些地方了解英语培训行情,把培训的花费转换内部使用。假定一学期培训要花1千块,则将其转化成小时花费,将钱给大锤或我自己。用这些钱去玩,去吃喝,不失为一件乐事。就怕大锤或其它人不认可作为老师角色的我,而一定要将钱给别人才放心。
目前的矛盾主要有:中文都不会学什么英语;学校作业没写完学什么英语。因此只求坚持,慢慢来就是最快的方法。
看电影
本月有部狮子王电影上映,带大锤去看了。去的那个电影院十分冷清,全场只有4位小朋友。两张普通版的电影票,加上大锤念念不忘的爆米花,花了100块钱,考虑到我现在的经济,看电影的成本还是比较高的。
关于大锤被打的事的看法
本月上旬某天,老师打电话,通篇听起来,是大锤感觉有同学“说”他,就推那人了。结果,那人的2个好友仔在教室继续和大锤“说”,期间不免动了手,老师那边的说法是“用手垂直碰了”。到了大锤妈妈那边的信息,上面的“说”变成了“骂”,“碰了”变成“打了”,变成有3个人打大锤。气不过,就打电话给几个对方家长,但人家不承认。我一向坚持实事求是,而且不是严重的事,我一般看开。
当年在幼儿园,看录像,是大锤咬了小朋友,但刚开始不知道实情,大锤妈妈看到大锤手红了,认为是互打,就在群里和人家家长对骂起来,最后还得向人家道歉。因为在同小区,这事过了几年,现在还在唠叨。
后来再次和老师通话,师方的意思和前面一致。我提出看录像,老师说没有(大锤妈妈说有,但老师不给看)。问了大锤,大锤说被打了手和打了脚,但他说这话的时候是嘻嘻哈哈的,我很难相信。同样,我也很难相信老师。只能和大锤说,只要人家不过分,不打骂你,就不用管,告诉老师和父母。只要成绩比人家好就行——当然这是奢望。但是,既然事实上的确出现了另外2个人帮忙欺负大锤,说明先前有过类似的(老师方说法是“有过2次小争执”),也说明以后还是会有。虽然老师承诺会注意,但这同样是奢望。
但是,这个事,在人家眼里,我就成为不保护孩子,不是好爸爸了。大锤妈妈气得2天睡不着,于是开始说这近十年的往事,从坐月子到上幼儿园到小学。我的精力主要还是在工作上,因为我坚信经济基础是养家的首要条件,不可能吃着咸菜萝卜谈风花雪月,如果工资不按时发,养不起家,月供还不了,我将被骂得更惨。我知道一个人挣钱辛苦,也知道一个人在家带娃不容易。道理都懂,但我只是一个年近40的普通人,一个靠写代码谋生的外包佬,而已。
当然,我看得开,姿态放得低,即便别人骂我不是人,我照单全收。
相关文章:
2024年12月个人工作生活总结
本文为 2024年12月工作生活总结。 研发编码 Golang语言byte数组赋值 假定有如下变量: var strCode string var bCode [9]byte现需将string类型转换成byte类型,如下: bCode []byte(strCode)无法转换,提示: cannot…...

PHP:IntelliJ IDEA 配置 PHP 开发环境及导入PHP项目
在创建PHP项目之前我们需要安装PHP插件,安装步骤如下:Windows:IntelliJ IDEA Ultimate 安装 PHP 插件-CSDN博客 1、导入已有PHP项目,导入之后选择,File > Setting 选择对应CLL Interpreter,如果没有操作…...

【嵌入式C语言】指针数组结构体
指针与数组 指针与数组指针数组数组指针 多维数组数组名的保存 结构体定义结构体定义结构体变量使用typedef简化结构体声明访问结构体成员结构体内存分配字节对齐位域定义位域位域的限制示例 指针与数组 指针数组和数组指针是两个不同的概念,它们涉及到指针和数组的…...

国产数据库TiDB从入门到放弃教程
国家层面战略,安全的角度,硬件、软件国产化是趋势,鸿蒙电脑操作系统、鸿蒙手机操作系统…数据库也会慢慢国产化,国产数据库TiDB用起来比OceanBase丝滑,本身没有那么重。 从入门到放弃 1. 介绍1.1 TiDB 的主要特点1.2 T…...
深入解析 Spring 属性:spring.codec.max-in-memory-size
在现代 Web 应用开发中,数据传输的大小和效率直接影响到系统的性能和稳定性。Spring WebFlux 作为一种响应式编程框架,提供了强大的数据流处理能力。在使用 WebFlux 时,spring.codec.max-in-memory-size 是一个关键配置,用于定义应…...
在K8S中,如何查看Pod状态的详情?事件显示cpu不足如何处理?
在Kubernetes中,查看Pod状态的详细通常设计使用kubectl命令行工具,这是kubernetes提供的一个强大的管理工具。以下是如何查看Pod状态详情的步骤: 1. 查看Pod状态详情 列出所有Pod: 使用kubectl get pods命令可以查看集群所有Po…...

ArcGIS教程(009):ArcGIS制作校园3D展示图
文章目录 数据下载校园3D展示图制作创建要素类矢量化【楼】要素矢量化【绿地】矢量化【范围】矢量化处理打开ArcScene添加动画数据下载 https://download.csdn.net/download/WwLK123/90189025校园3D展示图制作 创建要素类 添加底图: 新建【文件地理数据库】,并修改名称为【…...

REDIS2.0
string list hash set 无序集合 声明一个key,键里面的值是元素,元素的类型是string 元素的值是唯一的,不能重复 多个集合类型之间可以进行并集,交集,集查的运算 sadd test1 a b c c d :添加5个元素&am…...

算法练习——模拟题
前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…...

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率
2024 年度总结系列 2024 年 10 月,京东零售供应链技术团队凭借其在库存选品与调拨技术上的创新与实践,荣获运筹与管理学领域的国际顶级奖项 Daniel H. Wagner Prize。本文为您介绍获奖背后的供应链技术创新和落地应用。 00 摘要 在电商行业中&#x…...
pytorch张量的fill_方法介绍
在 PyTorch 中,fill_ 是一个张量的原地操作方法,用于将张量中的所有元素填充为指定的值。 方法签名 Tensor.fill_(value)参数 value (float or int): 要填充到张量中的值。 返回值 返回调用该方法的张量本身,且是经过修改后的张量。 特…...

WAP短信格式解析及在Linux下用C语言实现
WAP短信格式解析及在Linux下用C语言实现 一、引言二、WAP短信格式概述三、WAP短信头的内容四、UDHI与WAP短信体的关系五、在Linux下用C语言解析WAP短信头及短信体内容一、引言 在移动通信领域,短信作为一种古老却稳定的通信方式,一直扮演着重要的角色。随着技术的发展,短信…...
Linux的诞生与发展、体系结构与发行版本
Linux作为一个开源操作系统,在过去几十年中一直扮演着至关重要的角色。它不仅深刻影响了服务器、桌面和移动设备,还成为了开源运动的重要组成部分。本文将介绍Linux的历史、体系结构、以及主要的发行版,帮助你更好地了解Linux的方方面面。 一…...

为什么Mysql用B+树作为索引
首先,能作为索引的数据结构有很多,例如数组、链表、二叉树 数据和索引都是存储在磁盘里的。 我们通过索引来查询数据时,先从磁盘读取索引到内存,再通过索引从磁盘中找到某行数据,然后读入到内存。 要设计一个适合 MySQ…...
探索 DC-SDK:强大的 3D 地图开发框架
在现代 Web 开发中,地理信息系统(GIS)和 3D 地图可视化变得越来越重要。dc-sdk 是一个基于 Cesium 的开源 WebGL 地图开发框架,它提供了丰富的地图可视化功能和简单易用的 API,使开发者能够轻松地在 Web 应用中集成 3D…...

C#高级篇 反射和属性详解【代码之美系列】
🎀🎀🎀代码之美系列目录🎀🎀🎀 一、C# 命名规则规范 二、C# 代码约定规范 三、C# 参数类型约束 四、浅析 B/S 应用程序体系结构原则 五、浅析 C# Async 和 Await 六、浅析 ASP.NET Core SignalR 双工通信 …...

算法 class 005 (对数器C语言实现)
对数器的概念: 用来测试你的算法是否正确。 怎么做呢? 1:比如,写个冒泡排序,作为对比的对象 2:生成一个随机数 数组,用来测试 3:用冒泡排序和你想要验证的那个排序算法,同…...

windows系统安装完Anaconda之后怎么激活自己的虚拟环境并打开jupyter
1.在win主菜单中找到Anaconda安装文件夹并打开终端 文件夹内有所有安装后的Anaconda的应用软件和终端窗口启动窗口 点击Anaconda Prompt(Anaconda)就会打开类似cmd的命令终端窗口,默认打开的路径是用户名下的路径 2.激活虚拟环境 使用命令…...

leetcode 面试经典 150 题:矩阵置零
链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1]…...
SQL中的TRIM用法
TRIM 是 SQL 中用于去除字符串两端(左侧和右侧)的空格或特定字符的函数。这个函数常用于清理数据中的无效空白字符,尤其是在从外部系统导入数据时,常常会遇到数据两端有不必要的空格,使用 TRIM 可以去除这些多余的字符…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...

【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...

python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...