本文为 2022 年 5 月工作生活总结。

研发编码

Linux

查看gcc支持的默认宏定义(以不同平台的linux系统为例):

$ gcc -E -dM - </dev/null重要的:
#define __unix__ 1
#define unix 1
#define __unix 1
#define __linux 1
#define __linux__ 1
#define linux 1
#define __INT32_MAX__ 2147483647
#define __gnu_linux__ 1
#define __GNUC__ 464位 arm:
#define __SIZEOF_LONG_DOUBLE__ 16
#define __SIZEOF_SIZE_T__ 8
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __SIZE_TYPE__ long unsigned int
#define __SIZEOF_LONG_LONG__ 8
#define __UINT64_C(c) c ## UL
#define __INT16_MAX__ 32767
#define __UINT64_MAX__ 18446744073709551615UL#define __aarch64__ 1
#define __AARCH64EL__ 132位x86:
#define i386 1#define __SIZEOF_SIZE_T__ 4
#define __INTPTR_TYPE__ int
#define __UINT16_TYPE__ short unsigned int
#define __SIZE_TYPE__ unsigned int
#define __UINT32_TYPE__ unsigned int
#define __SIZEOF_LONG_LONG__ 8#define __INT8_MAX__ 127
#define __UINT8_MAX__ 255
#define __INT16_MAX__ 32767
#define __UINT16_MAX__ 65535
#define __INT32_MAX__ 2147483647
#define __UINT32_MAX__ 4294967295U
#define __INT64_MAX__ 9223372036854775807L
#define __UINT64_MAX__ 18446744073709551615UL64位 x86:
#define __x86_64 1
#define __amd64 1
#define __SIZEOF_SIZE_T__ 8
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __SIZE_TYPE__ long unsigned int
#define __UINT32_TYPE__ unsigned int
#define __SIZEOF_LONG_LONG__ 8

小结:

  • INT16、INT32、INT64等类型的最大值相同,从名称上就能知道已经确认了其值的范围。
  • size_t在不同位数系统中的值不同。
  • 不同平台,可以用不同的宏区别。比如 64 位 arm 系统上可以用宏__aarch64__

数据库

某板子上已安装mysqld且服务已启动,且root无密码。新加普通用户latelee,密码为123456password,同时授权较高权限,再创建数据库latelee_db。实操如下:

mysql -u root
flush privileges;
CREATE USER 'latelee'@'%' IDENTIFIED BY '123456password';
grant all privileges on *.* to 'latelee'@'%' identified by '123456password' with grant option;
CREATE DATABASE latelee_db;最后测试:
mysql -ulatelee -p123456password

oracle创建视图:

create or replace view xxx_view
as
select 语句示例:
create or replace view xxx_view
as
select t.version, t.a, t.b, t.c
from
mydb.foobar t
where
t.version in
(
'001',
'002'
)

查询时指定某些字段为固定值,比如某些情况下,需要将001版本改为000版本。

select '000' as version, t.a, t.b, t.c
from
mydb.foobar t
where
t.version in
(
'001'
)

Golang

Golang中,环境变量不能直接用$HOME,需使用Getenv获取,示例:

file, err := os.Open(filepath.Join(os.Getenv("HOME"), ".ssh", "known_hosts"))

错误示例:

file = "$HOME/.ssh/known_hosts"

vuepress

很早前用 vuepress 做了一个内部分享平台,使用 docker 部署,web 服务器是自编的。今年重构了去年年底写的web网页工具,两者其实不是一个体系的,前者是静态网站,后者是工具的网页版本。将了方便使用,在网页工具合并该静态网站。对于gin而言,只需要添加一条路由即可,十分简单,如下:

router.StaticFS("/website", http.Dir("./dist"))

其中/website为URL地址,dist是 vuepress 生成的目录。

另外,还需要在 vuepress 配置文件.vuepress/config.js中添加根目录字段base,如下:

module.exports = (site) => ({title: "内部知识管理平台",base: '/website/',head: [['link', { rel: 'icon', href: '/bug.jpg' }],],// theme: 'vuepress-theme-reform',ga: 'UA-xxx-1',//待修改extendMarkdown: md => {md.use(require("markdown-it-disable-url-encode"));},//...
})

但如此一样,原来的静态服务器就无法使用了,只能用 nginx 转发,在server中设置如下:

location /website/ {proxy_pass http://127.0.0.1:8080/;
}

后续考虑一下怎么用golang实现转发,之前研究的是基于json内容,较复杂。

时间溢出

集中一点时间,学习了无符号数的溢出。这里给出结论。对于计时、延时类的函数,记录时间戳的变量为无符号数。类型为unsinged,不能加范围限制,这是指平台最大者,如32位系统,使用的是32位无符号数,64位的系统则是64位无符号数。当变量数值溢出后,其值归0,但计时函数是正常的,不需要额外处理溢出情况。

其它思考

工作记录

这段时间又遇上疑难杂症,某32位系统的程序,运行某个版本提示:

ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.

用了几个引擎查了几个论坛,还是不知道解决方案,因为这个提示是在系统动态库中出现,程序只是使用curl库,而且64位不会出现。放着几天后,因迭代又更新了点代码,运行却正常了。实在不知原因。

生活记录

关于过日子,有了点想法。日子是一天天过的,好的坏的,都会过去。我就在想着怎么把一天过好,这个“好”我并没有要求十分高。比如,有时我能坚持几个晚上到楼下跑2圈(就2圈,不多),做几个引体向上,但有时又懒得动。周末有时陪大锤去公园听涛声,有时骑电车看夕阳。有时忙起来,连续一周都坚持2、3点才睡,甚至试过4点睡觉。又时又是瞎忙,自认为浪费时间,特别是对于一些未知问题的猜测、验证。——所有这些,都是过日子,好像是有意义的,好像又是浑浑噩噩的。再细探下去就涉及哲学问题了。

大锤最近有了些进步,像睡觉前都要叠被子,会要求自己给自己洗澡,这些都是进步。就是不午睡,动不动闹别扭。大妞一直跟她妈妈送货,我陪的时间很少,连洗手都不愿意我帮了。

思想方面

不同的人,思维不同,各种观点不同,如能相处,实在是难得的缘分,一般来说相处原则是“求同存异”,但不是每个人都是这样想的。我不算敏感,不是很迁就,也有脾气。

比如备案,因为政策问题,我使用了十余年的域名不能再使用了,在处理中有些误操作(阿某云的方式变化比较大),询问客服,反反复复来来回回重复相同的话术,当时就有点上火了,当然到现在已经解决了,域名的事暂时完毕。

比如移某动,去年某营业员打电话给我妈,操着流利的普通话跟我妈介绍套餐,我妈强调“听不懂煲冬瓜”,但还是开通了,最低消费40元,而原来的套餐是18元。直到半个月前我才知道这个事,当晚就打电话投诉,开始我还客气一番,一是了解情况,二是换回原来的套餐,客服反反复复来来回回重复相同的话术,就是不说解决方案,当时火了,一直追着要具体的方案和具体的时间,但最后也只能说向上级反馈,一天内回复。最终有客服打电话给我妈,还是用流利的普通话,后又换了个客服,操着不流利的白话,总算有个阶段性结果:退还3个月的超额的话费。但月底查询,话费还没有到账。

业余研究

域名及邮箱

申请的域名latelee.cn备案通过了,但由于使用了原来域名latelee.org的邮箱,且已大量使用:CICD脚本、开源项目代码、日常沟通邮箱、github账号,支付小号,等。这是项麻烦的工程。

蓝牙

蓝牙方面,花了很多时间在研究抓包,但就是搞不定环境。至于一些外设,已经着手看mpu6050,计划利用板子的LED做一个重力感应的流水灯,让大锤玩一玩。

李迟2022年5月工作生活总结相关推荐

  1. 李迟2022年10月工作生活总结

    本文为 2022 年 10 月工作生活总结. 研发编码 Go 判断interface{}是否为空 判断interface{}类型是否为空,不能直接使用==nil来判断(用之无效),需先用reflect ...

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

    本文为 2022 年 3 月工作生活总结. 研发编码 Linux 研究了应用程序和动态库环境变量传递问题. 编码其它 无 前后端 在 golang 中渲染 html 页面,将部分信息处理后再显示到页面 ...

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

    本文为 2022 年 7 月工作生活总结. 研发编码 近来编码,基本都是业务.自动化测试相关的,在写代码时,主要考虑便捷性,快速出结果.性能方面不怎么考虑.像写C++,如果没有什么特殊的要求,字符串都 ...

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

    本文为 2022 年 9 月工作生活总结. 研发编码 Java 调试时发现在 Java 函数体代码中途使用return返回,其后的代码会报错,提示: java: 无法访问的语句 不知何故.只好用if ...

  5. 李迟2022年8月工作生活总结

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

  6. 李迟2022年6月工作生活总结

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

  7. 李迟2022年1月知识总结

    本文为 2022 年 1 月知识总结. 研发编码 Golang golang中中文字符长度为3,如下示例中,判断某字段中文开头是否为"广西"二字,如是则舍去,只保留后面的字符串,如 ...

  8. 李迟2022年2月知识总结

    本文为 2022 年 2 月知识总结. 研发编码 Golang Linux linux 系统可用 nc 命令来模拟 Socket 服务端和客户端.已在工作中应用到. 在后台执行valgrind时,可用 ...

  9. 李迟2021年11月知识总结

    本文为 2021 年 11 月知识总结. 研发编码 C / C++ 无. golang 保留小数点后2位,假定在原数值基础上上浮10%(即1.1倍),但不进位. // 使用Sprintf有些情况会导致 ...

最新文章

  1. 微电子科学与工程要学计算机吗,微电子科学与工程专业适合女生学习吗
  2. 研究生再次大幅扩招!高校能否承载?教育部最新表态来了
  3. 言论丨李开复:中国在AI领域的优势与机会,现阶段AI领域的挑战
  4. php文件下载教学,php下载文件的代码示例
  5. Spring MVC定制用户登录注销实现示例
  6. kotlin 覆盖属性_Kotlin程序| 方法覆盖的示例
  7. org.gjt.mm.mysql.Driver和com.mysql.jdbc.Driver的概述
  8. UNIX网络编程——使用线程的TCP回射服务器程序
  9. Nagios配置和命令介绍(二 )
  10. 常用 API 函数(7): 位图、图标和光栅运算函数
  11. 使用Eclipse查看反编译后的代码(Decompiler 插件)
  12. WebUserControl简单事件定义
  13. Hadoop生态圈-Flume的组件之自定义Sink
  14. switchhost 提示没有权限
  15. python拆分word文档_python-docx处理word文档
  16. 商场云WiFi靠谱吗
  17. python使用虚拟内存_深入浅出虚拟内存(一)
  18. NUC980 PWM
  19. 米的换算单位和公式_米的单位换算公式大全二年级(简便易记的单位米换算方法)...
  20. #define s(x) x*x 的计算方法

热门文章

  1. c语言提纲,C语言复习提纲
  2. .hex 文件详解 stm32
  3. python面向对象书籍_python面向对象法实现图书管理系统
  4. 一文看懂怎么用 Python 做数据分析
  5. 这样投简历,99%没面试机会!
  6. python数据处理工具-Pandas笔记
  7. 【Win10小技巧1】窗口快速最小化
  8. rabbitmq reply-code=404, reply-text=NOT_FOUND
  9. 计算机网络面试题总结之一
  10. 怎么把PDF调方向保存?这几个方法值得收藏