2025 个人小目标

  • 个人工作生活
    • Q1每个月安排一天个人时间,学习Optimus核心知识
    • 思考下一个COD方向和领域:产品架构,产品经理,后端与运维
    • Q1健康作息,不熬夜到12点后,保证基础睡眠
    • Q2运动开始计划,通过合理安排作息,每周半小时起养成习惯,并逐步增加
    • Q1每周一次睡前花十分钟番茄钟,复盘当周工作、中长期目标调整,减少纠结与内耗,看书增值
  • 家庭生活
    • 大宝的小学一年级思考和执行
      • 拼音熟练度练习,朗读训练每日15分钟
      • 汉字识字培训
      • 控笔训练
      • 日常数学加减训练
      • 钢琴读谱,指法练习,肌肉重复训练,流畅背诵弹奏为目标
      • 复习、预习课程习惯
      • 演讲训练,植物节演讲、升旗手演讲、爸爸讲堂介绍
      • 握笔姿势,写字姿势训练
      • 数学拔高训练
      • 语文阅读训练
    • 小宝幼儿园前期准备
      • 4、5月择校,9月正常入学
      • 语言发展关注,发音纠正
      • 自主如厕练习
      • 自主吃饭习惯培养
      • 自主穿脱衣服袜子入睡练习
      • 认识数字大小数数
      • 认字
      • 安全意识训练
  • 职场价值、时间效率提升
    • 快速阅读《高效能人士/家庭的七个习惯》,自我效能提升
    • 快速阅读《卡耐基人性的弱点》,学会提升别人的效能
    • 精读并且实践《How to Lead》,学会面对人工作
    • 精读《这就是人性》,学会人性的特点,管理必须基于人性
  • 个人充电:阅读书籍10本
    • 职场、人性相关书籍, 有助平衡心态和目标:
      • 学习领域预判思考方式,快速决策得出可执行尽量正确的选择
      • 学习高效的项目管理方式,对于种类繁多的细碎项目如何高效的管理,并且针对不同的人建立不通的项目profile,合理安排资源
        • 对于资深执行者的管理方式
        • 对于资浅有潜力执行者的管理和引导方式
        • 对于资浅Vendor的管理方式
      • 合理授权,对于不同的选择,可以借由别人去实践通过验证
      • 学习衍生品定价规则,交易系统,风险合规服务
      • 管理风格建立,最大化生产力同时建立稳定良好的领导风格,项目进度把控
        • 项目远期规划
        • 项目落实原则把控
      • 重组思维学习,在基本面了解情况下破局,精读《重组与突破》
    • 领域相关背景书籍:
      • 阅读CM bitemporal DB设计学习
      • 阅读CM Risk Calc Engine设计学习
      • 阅读CM Risk Storage & Pivot设计学习
      • 阅读CM Entitlements Model设计学习
      • 阅读Kindle《债券投资策略》,了解债券市场基本知识
      • 阅读Kindle《债券组合投资》
      • 阅读Kindle《投资组合绩效测评实用方法》
      • 阅读《国富论》,了解经典生产理论以及劳动者与雇佣者的基本关系
      • 阅读《利率互换通关秘籍》,了解利率基本概念
    • 育儿和教育书籍:
      • 父母效能训练
    • 技术相关书籍:
      • Kubernetes权威指南: 学习K8S部署技术
      • 阅读《Helm学习指南》了解linux package管理发布基本知识
      • 阅读《Prometheus学习指南》了解监控系统设计理念,以及PromeQL和SPL的功能模式
    • 沟通技巧学习
      • 非暴力沟通
      • 别说你懂交际学
    • 情绪控制学习
      • 对待家庭内部矛盾,冲突学会类似工作的平稳沟通方式,避免矛盾激化,最终生气伤身体
      • 对待家庭目标,学会互动式激励,不是指责式激励,用以激发人的内驱力

个人感悟

《这就是人性:认知觉醒的底层逻辑》

人性逻辑:别相信人,要相信人性

用利益去考验人性,你也许会输

  • 趋利避害是人性,所以义才可贵
    • 利是人类社会发展的动力,也是生存下去的根本。义是需要的,是人类社会得以稳固的基础,也是一个人处世的根本。这对矛盾从人出生开始就有,而能人往往能在矛盾中平和的生活。
  • 不碰利益,人无坏人
    • 弱者很多时候过度信奉世俗道德文化而忽视了学习人性,而强者很多时候都是人性高手,懂得用规则来治理人性。良好的规则设计,能够充分考虑人性的特点,去平衡人性弱点带来的弊端。
  • 精明的利己主义者
    • 势利本身只是一个中性词,生存是人类所有心理的出发点,会天然地依附掌握更多生存资源的人,并努力在最短时间内获得更多的利益。
    • 人缘分为两种:资源性人缘,他们有值得别人“图谋”的地方。劳动性人缘:他们能够给人提供即时性的正面反馈上。

懂道德让你成为好人,懂人性让你成为富人

  • 总和你谈感情的人,就是想少点付出
    • 带不来价值的感情是廉价的。对方的考量主要还是从利益出发,理性的考虑帮助需要提供的价值是否符合他当下的立场。
    • 真是话语权也不是靠分配而来的,而是自己挣来的——谁在价值协作中提供了更多不可替代的贡献,谁的真实话语权就更大。
  • 即使想做好人,也要树立底线
  • 你被好人标签绑架了吗?
    • 道德约束是一种弱势文化,往往会将人羁羁绊在困境中,而强者文化则是客观的面对人性,利用人性,争取属于自己的机会。

金钱,可以检验人性

  • 悟透赚钱的底层逻辑
    • 文化属性决定层次和命运
      * 思想狭窄
      * 被错误或者过时的思想误导
    • 满足人性的自私,才有才有可能赚到钱
      • 人难免有自恋的情绪,会因为自己做了一些事情而陷入自我感动,但这没有用。
      • 时不时审视自己的认知水平,有没有遵循底层规律办事。
  • 你赚的每一份钱只会在认知空间内震荡
    • 金钱只是一种媒介,是人用来换取商品和服务的中间态,而不是人的目标本身。人的目标是通过进去换取商品和服务,从而得到自己想要的情绪体验。
  • 营造错觉,左右对方的价值判断
    * 骗术本身往往不是为了以假乱真,而是通过真假虚实不断的试探,最终给受骗者一个错觉,改变了他原来的价值观。

认知觉醒:提升认知,看破生活假象

没有交换意识,哪有人脉关系

  • 怕小人,不算无能
  • 为自己的人生负责,不要过度依赖他人
    • 如果你把自己的生命珠子交给别人,让别人替你保管,本质上来讲,是增加了对方的负担的。你的一切反应都无法阻止对方行使自己的权利。
  • 圈子不同,不必硬融

打破思维禁锢,从内耗中找对出路

  • 普通人要逆袭,首先得扒三层皮

    • 扒掉俗事道德观
      • 人生中的机会是要靠自己去抓住的,它不会凭空落到我们的头上。
    • 扒掉规则的束缚
      • 规则是人定的,尊重规则,理解规则、遵守规则、决不允许规则阻止自己朝更高的目标前进。
    • 扒掉欲望的驱动
      • 人最大的障碍其实是自己,只有真正成为自己的主人,看清事情背后的逻辑,才能从底层突围。
      • 持志:发自内心地思考自己到底想做什么事,想成为怎样的人。
      • 提升自己的认知:只有当你从更高更远的维度上才能看清事情背后的本质。
  • 想要获得通透,就要学会深度思考

    • 无中心式的连续发散思维:发散思维是大多数人的思维方式,运用这类思维前需要先明确自己的目标,然后有方向的梳理思维成为有序状态。
    • 反刍式思考:反思能够帮助增长事情对人的经验,但是过度的反刍式思考会阻碍事情的推进,让人抓不住机会。
    • 浅层思考:浅层思考是感性直觉的思维,
    • 动机挖掘:先搞清楚自己或别人的内在动机,看清本质的东西,避免不必要的弯路。
    • 思考未来的终点:学会用未来的大脑,指挥活在当下的身体。
    • 思考知识结构:三个层面理解知识:
      • What:事情的表面,找到做的事情
      • How:找到做这件事情的渠道,如何做
      • Why:明白自己这样做的背后原理。
    • 进行自我批判:不要认为自己什么都是对的,其实“自我”才是成功最大的障碍。遇到不如你的人,坚定自己的想法;遇到和你差不多的人,要怀疑自己的想法;遇到比你混的好的人,要否定自己的想法。
    • 思考客观规律
  • 要成事,从三个维度打破禁锢

    • 学会包装自己
      • 这个世界是靠实力说话的,很多时候,别人不能够直观地感受你地实力高低,所以你需要运用包装地手段向对方展示你地实力。
    • 学会高调
      • 面对利益要学会高调,敢于挣脱道德枷锁,敢于大胆追求自己地合法利益。
    • 学会反击
      • 人与人相处都有一个试探地过程,也就是对方要试探一下你的底线是什么。现实并不因为谁好说话,就为大家感激。

野蛮生长:对己逆人性,对外顺人性

  • 死不认错是人类共有的本性
  • 境界高的人不会随便给人建议
    • 每个人应该为自己的人生负责
    • 别人寻求建议,不过是为自己已经做出的选择增加底气而已
    • 不要妄图通过建议去拯救他人
  • 过来人的话,其实是让人为难的经验
    • 问基础的问题
    • 对基本假设进行质疑
    • 注意你的心理过程
    • 总是反过来想
    • 对证据进行评估
    • 经常进行自我反思

成长的真相,都是逆人性的

  • 心理内耗:为什么你活得这么累
  • 为什么很多年轻人不愿意结婚了
  • 怎样不被带节奏,保持独立思考
    • 提升自己的知识储备和见识
    • 有批判性思维,形成自己的思考
    • 确立自我同一性
  • 如何成为一个有影响力的人
    • 通过各种方式不断重复要传达的信息
    • 建立一整套思想体系
    • 适可而止

顺从人性,轻松经营出好关系

  • 面对过分地要求,不会拒绝怎么办

    • 不拒绝:尝试拒绝一次,观察是否如假设中地情形一样失去对方。
    • 代价很大时才会拒绝:举手之劳能满足对方,很难拒绝。
    • 找借口拒绝对方:分清是你我谁的课题,合理借口回绝。
    • 不带理由地拒绝:每个人为自己地需求负责。
    • 通过开条件或提要求地方式拒绝:找出“是”地条件,反问对方能否接受。专业就是要拿来收钱的,不能随便给人。对于专业,认真做对不起我的专业,不认真做对不起你。
  • 可以付出,但不要有付出感

    • 有针对性地付出,不盲目
    • 不夸大付出
    • 刻意弱化自身能力地付出以体现牺牲地伟大
    • 暗示对方不值得付出
  • 如何提升自己地领导力思维?

人性亘古不变,学会野蛮生长

  • 免费的东西人人喜欢,却无人珍惜
  • 别人对你好是坏,取决于你
  • 做人最怕心理想要利益,嘴上却讲道德

普通人逆袭的27条人性真相

  • 直面人性的自私,学会从利益的角度审视一切
  • 强者思维,人都会主动为强者找理由而不是弱者
  • 利益绑定是最稳定的绑定,价值才是自己最宝贵的
  • 职场里面的生存法则是有限资源残酷竞争
  • 做事需要有慈悲心肠,也要有雷霆手段
  • 我的价值决定于我是否被需要,这种价值是否具有稀缺性
  • 扩展认值边界,利用信息差,搭建被动赚钱体系,利他才能从中获利
  • 行走社会地生存法则是需要承认和接受自己地弱小,并且学会韬光养晦
  • 强者对不可控地事情产生太多期望
  • 规则是人制定地,看清背后地核心逻辑,才能合理突破规则,制定新的规则
  • 解决问题也是解决本质的问题,而不是在复杂的题面上纠结原因
  • 避免精神内耗的本质是课题分离,并且看清内耗的本质是什么,专注眼下的事情

<< 人的小我和大我 >>

这是观看一篇访谈的观后感,文中讲述了在中国特殊时期发生的意外事件,在群众价值观极度扭曲和对立的状态下,一个人从小我的思考角度和大我的思考角度下做出截然不同的决策后产生的完全相反的结局。和平时代的大多数我们是不会面临这样的抉择,并且我们已经习惯于从自己个人利益出发去思考,而不会站在历史宏观的角度去思考,如果我这么做了,会不会让眼下的自己过得更舒服,而让历史上的自己彻底成为了一个小人。

宋的模棱两可让自己成为了红色领袖的青年典范,而她的奋斗目标正是出人头地,追求卓越,上进好青年,无视成为政治符号后带来的巨大影响力。让一个个人作秀成为了历史上一个悲剧的开始,一场群体运动的开始,将生活常态中的师生矛盾变成了敌我矛盾,曾经的批评打骂变成了血肉之躯之间的战斗,心理的不愉快演变成了生与死的别离。50年后,一众花白头发的老人回首当年的矛盾,已经不能再次激起社会的千层浪。当年的怨恨和心结却实让人难以了解,还能鼓起勇气去面对当时的冲突,在沙发上平静的讲述当年的不满和错误,可能大多数的人都无法做到。在当年那个一念天地之差的时代,经历过了血雨腥风,到现在的和平年代去讲述还是会有种种犹豫和担忧。小小的个人利益,和宏大的国家社会利益之间相冲突,我们能够做正确的事情是一个非常难以从当下的视角判断清楚的。只希望我们在每天、每周的回顾时候,能够修正行为上的偏差、让最终的结果达到最大化的美好。

窗口消息

GUI应用程序必须响应来自用户和操作系统的事件。

来自用户的事件包括用户与程序交互的所有方式:鼠标点击、按键、触摸屏手势等等。
来自操作系统的事件包括程序之外的任何可能影响程序行为的东西。例如,用户可能插入一个新的硬件设备,或者Windows可能进入低功耗状态(睡眠或休眠)。
这些事件可以在程序运行时的任何时间发生,几乎可以按任何顺序发生。如何构造一个不能预先预测执行流(flow)的程序?

为了解决这个问题,Windows使用了消息传递模型。操作系统通过传递消息与应用程序窗口进行通信。消息只是指定特定事件的数字代码。例如,如果用户按下鼠标左键,窗口将接收到具有以下消息代码的消息。

C++

#define WM_LBUTTONDOWN 0x0201

一些消息具有与它们相关联的数据。例如,WM_LBUTTONDOWN消息包含鼠标光标的x坐标和y坐标。

要将消息传递给窗口,操作系统将调用为该窗口注册的窗口过程。(现在你知道窗口程序的作用了。)

https://learn.microsoft.com/zh-cn/windows/win32/learnwin32/your-first-windows-program

窗口句柄

窗口句柄是消息传递的源和目的,在每一个进程空间窗口句柄都是局部的,需要通过窗口名字去发现,对于某个窗口消息队列的监测,可以通过visual studio自带的spy++去定位监听并且调试。

Az Setup for a oc cluster in single node

Az Login

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PS C:\Users\loginid> az login
A web browser has been opened at https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.
[
{
"cloudName": "AzureCloud",
"homeTenantId": "85cb24e4-0bcf-4767-b44b-39eae544706e",
"id": "bd435e85-b401-48c5-90ad-96dbefac1503",
"isDefault": true,
"managedByTenants": [],
"name": "Visual Studio Professional",
"state": "Enabled",
"tenantId": "85cb24e4-0bcf-4767-b44b-39eae544706e",
"user": {
"name": "sunny_hll@hotmail.com",
"type": "user"
}
}
]

Az Terraform example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PS C:\Users\loginid> az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/bd435e85-b401-48c5-90ad-96dbefac1503"
Creating 'Contributor' role assignment under scope '/subscriptions/bd435e85-b401-48c5-90ad-96dbefac1503'
The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
{
"appId": "414b5739-2c30-4cea-adff-d5c8ff1c6470",
"displayName": "azure-cli-2022-12-09-06-36-24",
"password": "if48Q~Wd6aUHekpKNLrgJWeC3Pr-sstzZHRXfa90",
"tenant": "85cb24e4-0bcf-4767-b44b-39eae544706e"
}

PS C:\Users\loginid> $Env:ARM_CLIENT_ID = "414b5739-2c30-4cea-adff-d5c8ff1c6470"
PS C:\Users\loginid> $Env:ARM_CLIENT_SECRET = "if48Q~Wd6aUHekpKNLrgJWeC3Pr-sstzZHRXfa90"
PS C:\Users\loginid> $Env:ARM_SUBSCRIPTION_ID = "bd435e85-b401-48c5-90ad-96dbefac1503"
PS C:\Users\loginid> $Env:ARM_TENANT_ID = "85cb24e4-0bcf-4767-b44b-39eae544706e"

Az 手动创建VM

查询VM配置的地区Spot资源不太可用

1
az vm list-skus --location centralus --resource-type virtualMachines --zone --all --output table

VM Login

1
ssh -i ~/.ssh/oc_key.pem loginid@20.100.44.77

Az 部署oc

CRC setup guide: https://crc.dev/crc/getting_started/getting_started/using/

Maybe install for ubuntu OS:

1
2
3
sudo apt install gnome-keyring
sudo apt install dbus-x11
sudo snap install kubectl --classic

下载CRC

1
2
wget https://developers.redhat.com/content-gateway/rest/mirror/pub/openshift-v4/clients/crc/latest/crc-linux-amd64.tar.xz -o /var/tmp/crc-linux-amd64.tar.xz

VPN env network setting:

https://github.com/crc-org/crc/wiki/VPN-support--with-an--userland-network-stack

!!reset Disk size t0 128G as crcbundle took more than 30G space.

启动CRC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#Started the OpenShift cluster.
sudo service haproxy stop # previously broken haproxy bind 443 port....Orz
crc start

The server is accessible via web console at:
https://console-openshift-console.apps-crc.testing

Log in as administrator:
Username: kubeadmin
Password: i4GM8-VqA42-8Eqix-pAg7h

Log in as user:
Username: developer
Password: developer

Use the 'oc' command line interface:
$ eval $(crc oc-env)
$ oc login -u developer https://api.crc.testing:6443

创建oc hello项目

环境变量

1
2
3
4
5
6
# crc 命令
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
# oc 命令
echo 'export PATH="/home/loginid/.crc/bin/oc:$PATH"' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'oc login -u developer https://api.crc.testing:6443' >> ~/.bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# create project 
oc new-project my-project

# create http server
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.43 -- /agnhost netexec --tls-cert-file /home/loginid/test.crt --tls-private-key-file /home/loginid/test.key

# expose as service
oc expose deployment hello-node --port=8080

# https://www.baeldung.com/openssl-self-signed-cert
# prepare self-signed key remove -des3
openssl genrsa -out test.key 2048

# create csr
openssl req -key test.key -new -out test.csr

# sign
openssl x509 -signkey test.key -in test.csr -req -days 365 -out test.crt

# upload
scp -i ~/.ssh/oc_key.pem /mnt/d/Git/mypages/test.key loginid@hostip:/home/loginid/test.key

scp -i ~/.ssh/oc_key.pem /mnt/d/Git/mypages/test.crt loginid@hostip:/home/loginid/test.crt

# create secret https://www.baeldung.com/openssl-self-signed-cert
oc create secret generic my-cert --from-file=/home/loginid/test.crt --from-file=/home/loginid/test.key

# mount secret for deployment pods
oc apply -f deploy.yaml

# create route on haproxy from hostName=oc-dev.centralus.cloudapp.azure.com
oc create route passthrough test-pass --service=hello-node --port=8080 --hostname=oc-dev.centralus.cloudapp.azure.com.crc.testing

本地服务测试

1
2
3
4
5
6
7
8
9
10
11
12
13

# pod DNS

curl https://hello-node-7556f558d-psbrp:8080 -k

# service DNS

curl https://hello-node-svc.optimus.svc.cluster.local -k

# cluster DNS

curl https://oc-dev.centralus.cloudapp.azure.com.crc.testing -k -v

远程连接admin console

https://www.redhat.com/en/blog/accessing-codeready-containers-on-a-remote-server

在服务器端,需要利用haproxy做外部网卡IP的端口转发到内部地址127.0.0.1,建立外网网卡与内网之间的网桥.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
sudo apt install haproxy

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

# 加上一下端口转发规则

frontend apps
bind SERVER_IP:80
bind SERVER_IP:443
option tcplog
mode tcp
default_backend apps

backend apps
mode tcp
balance roundrobin
option ssl-hello-chk
server webserver1 CRC_IP check

frontend api
bind SERVER_IP:6443
option tcplog
mode tcp
default_backend api

backend api
mode tcp
balance roundrobin
option ssl-hello-chk
server webserver1 CRC_IP:6443 check

# 更改IP地址

export SERVER_IP=$(hostname --ip-address)
export CRC_IP=$(crc ip)
sudo sed -i "s/SERVER_IP/$SERVER_IP/g" haproxy.cfg
sudo sed -i "s/CRC_IP/$CRC_IP/g" haproxy.cfg

# 启动服务haproxy
sudo ststemctl start haproxy

# 诊断

sudo apt install net-tools

Java API创建Route资源

Useful Code example

https://github.com/kubernetes-client/java/wiki/3.-Code-Examples

Leader Election Example

https://github.com/kubernetes-client/java/blob/master/examples/examples-release-18/src/main/java/io/kubernetes/client/examples/LeaderElectionExample.java

安装 Helm 到 oc-dev的crc cluster上

1
2
3
4
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

huangsun@oc-dev:~$ helm version
version.BuildInfo{Version:"v3.18.1", GitCommit:"f6f8700a539c18101509434f3b59e6a21402a1b2", GitTreeState:"clean", GoVersion:"go1.24.3"}

helm chart 开源仓库

1
2
helm repo add stable https://charts.helm.sh/stable
helm search repo stable

helm 创建一个release

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 创建一个空release
helm create gsm

# 生成目录

huangsun@oc-dev:~/helm$ cd gsm/
huangsun@oc-dev:~/helm/gsm$ ls
Chart.yaml charts templates values.yaml

# intall release

huangsun@oc-dev:~/helm$ helm install myapp gsm
NAME: myapp
LAST DEPLOYED: Sun Jun 1 10:07:23 2025
NAMESPACE: optimus
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace optimus -l "app.kubernetes.io/name=gsm,app.kubernetes.io/instance=myapp" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace optimus $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace optimus port-forward $POD_NAME 8080:$CONTAINER_PORT
#查看pod状态
huangsun@oc-dev:~/helm$ k get po
NAME READY STATUS RESTARTS AGE
hello-node-7556f558d-psbrp 1/1 Running 4 537d
myapp-gsm-7f8b95f4-g856s 0/1 Error 3 (29s ago) 50s
#查看release状态
huangsun@oc-dev:~/helm$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
myapp optimus 1 2025-06-01 10:07:23.835586443 +0000 UTC deployed gsm-0.1.0 1.16.0
0%