IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 李迟2022年5月工作生活总结 -> 正文阅读

[大数据]李迟2022年5月工作生活总结

本文为 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__ 4

64位 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__ 1

32位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__ 18446744073709551615UL


64位 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做一个重力感应的流水灯,让大锤玩一玩。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-04 00:01:46  更:2022-06-04 00:03:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:34:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码