Go和Rust中的workspace

go workspace 使用

已经有一段时间没有和大家分享关于Go语言的内容了。今天,我想向大家介绍Go语言在1.18版本中推出的一个新功能——Workspace。

Workspace的推出,极大地方便了我们在编写涉及多模块项目时的工作流程。以往,在处理一个大型项目时,我们可能会将项目分割成多个模块,例如一个通用模块(common)和一个业务模块(service)。如果service模块需要使用common模块中的某些方法,Go语言在1.18版本之前虽然提供了解决方案,但引入Workspace概念后,本地依赖管理变得更加便捷。

Go generate的使用

[Go] go generate用法

go generate 是 Go 语言内置的一条命令,旨在执行源文件中声明的命令。要使用 go generate,首先需要在 Go 源文件中以特定格式声明你想执行的命令。这些命令以 //go:generate 作为前缀注释开头,紧接着是要执行的命令及其参数,注意 // 后面不应该有空格。

例如,如果你想执行两条 touch 指令,你应该在源文件中按照上述格式声明这些指令。完成声明后,通过在命令行中运行 go generate 命令,文件中声明的指令将被执行。如此,你会看到两条 touch 指令被成功执行。

Go 1.22新特性介绍

go1.22新特性

十天前,Go语言更新至1.22版本,带来了一些与我们日常工作密切相关的新特性。本期内容将被纳入我的高级付费课程中,供大家深入学习。我已经将我的环境更新到了Go 1.22,最新的版本。让我们来探讨几个主要的更新。

首先,我们来讨论与for ~~range~~循环相关的改进。在1.2版本之前,遍历切片或映射时,变量V实际上在每次迭代中复用相同的内存空间。这意味着,如果你在循环中启动了多个协程,由于协程的启动可能比循环本身慢,所有协程可能都会引用到循环的最后一个元素。在Go 1.22版本中,这一行为得到了改进:每次迭代时,V都会分配新的内存,确保每个协程能够正确地引用到各自的迭代变量。

nginx如何给同一个服务配置不同的域名

https://www.google.com/search?q=nginx%E5%A6%82%E4%BD%95%E7%BB%99%E5%90%8C%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E5%9F%9F%E5%90%8D

k -n wing get ing testtaskon-orange-web-ingress -o yaml

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
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/configuration-snippet: |
add_header Cache-Control "no-cache";
add_header Pragma no-cache;
# nginx.ingress.kubernetes.io/cors-allow-credentials: "false"
#nginx.ingress.kubernetes.io/cors-allow-headers: '*'
#nginx.ingress.kubernetes.io/cors-allow-origin: '*'
#nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/session-cookie-max-age: "3600"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
creationTimestamp: "2023-06-14T09:22:46Z"
generation: 2
name: testtaskon-orange-web-ingress
namespace: wing
resourceVersion: "11171389182"
uid: f383b7dd-069b-4da6-97ba-29ecf9ba7aca
spec:
rules:
- host: testtaskonweb.taskon.xyz
http:
paths:
- backend:
service:
name: orange-taskon-web-service
port:
number: 80
path: /
pathType: ImplementationSpecific
tls:
- hosts:
- testtaskonweb.taskon.xyz
secretName: taskonwildto202301011
status:
loadBalancer:
ingress:
- hostname: lb-8cp5quyu-mzgrxfqhlwie43to.clb.ap-singapore.tencentclb.com

Rust读取配置文件

1
2
3
4
5
6
cargo init read-conf

cd read-conf

read-conf git:(master) ✗ ls
Cargo.lock Cargo.toml config.json config.toml config.yaml src target

读取并解析json文件

Go和Rust中的Pin/Unpin

何为自引用结构体?


自引用结构体是一种在其定义中包含至少一个指向同类型结构体的指针的数据结构。这种结构体能够存储和管理具有层次或链式关系的数据,例如链表、树、图等数据结构。自引用结构体是递归数据结构的基础,因为它允许一个实例引用另一个同类型的实例。

K8s查看上一个被销毁的pod的日志

Kubernetes无法直接获取一个已经被完全删除的Pod实例的日志。

当Pod被删除(不是退出重启,而是真正删除)后,Kubernetes默认也会删除该Pod实例的日志。

一般情况下,有下面几种方法可以获取已经删除Pod的日志:

Pod的内存问题

同事反应,从grafana上看到,taskon-server服务在昨天中午突然有内存突增,而且一直没有下来.

你帮我看下为毛生产taskon后端内存昨晚从480M突然飙升到2.2G?现在还是1.8G.系统倒是很平稳,没啥问题,响应也非常块

DevOps面试题

https://www.v2ex.com/t/895119#reply75


  • 1 、都说 linux 下一切皆文件,你是怎么理解的?
  • 2 、都说 socket 在 linux 实际是一个文件,是通过什么技术将 socket 变成一个文件的?
  • 3 、linux 下软 /硬连接是什么,他们有什么区别?
  • 4 、linux 下一个用户登录以下文件加载顺序是?~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bashrc, /etc/profile
  • 5 、都说 systemd 他可以并行启动,他的实现原理是? 僵尸进程 /孤儿进程他们是?区别是啥?为什么说 ssh 很安全?具体原理是?如何保证的
  • 6 、shell 相关 [[]] [] (()) () 他们区别是?
  • 7 、shell fuction 如何返回字符串
  • 8 、shell $# $* 是什么意思
  • 9 、如何使用 shell 实现一个爬虫,你描述下整个过程,会用到哪些命令?
  • 10 、redis 哨兵机制主从是如何切换的?
  • 11 、网络 mtu 是什么?他发生在那一层,如果 2 个设备 mtu 值不同,以谁为准,那么 2 个设备是如何协商的?详细协商流程是?
  • 12 、0.0.0.0 255.255.255.255 这 2 个 ip 地址是什么意思?他们的适用场景是? VIP 如何漂移的?他的底层原理是?
  • 13 、tunnel VPN 翻墙他实现的原理是,他是怎么绕过防火墙的,数据包传输流程,他在那一层欺骗了防火墙等
  • 14 、nginx 相关 正向 /反向代理是什么意思?他们区别是?
  • 15 、一般架构 nginx 集群 –反向代理–> tomcat ,为什么不能反过来部署呢?高并发 /动静分离等,这些我程序也可以做
  • 16 、都说 nginx 轻量级,比如对比 tomcat ,epoll 是操作系统机制,与 nginx 无关,我自己开发也可以调用,内存占用小 /启动快这不是特点,模块化这也不是特点,我自己开发程序也可以实现。。。
  • 17 、都说 docker 轻量级,他轻量在哪里,从技术角度分析,咱们都是搞技术,不需要从产品角度分析他为什么轻量?
  • 18 、docker volume bind mount 他们区别是什么? 如何构建最小的镜像,说说你的思路?
  • 19 、docker -p/P 他的实现原理是什么?
  • 20 、Infrastructure as code 思想,你是怎么理解的?
  • 21 、资产管理 /配置管理他们分别是?区别是?
  • 22 、持续部署 /持续交付他们是?区别是?
  • 23 、ci/cd 带来的好处是?蓝绿发布是?他的优缺点?
  • 24 、jenkins 如何通过原生方式备份配置 /job 等(不通过 jenkins 提供导入导出 /及拷贝整个目录)
  • 25 、pipeline 是什么,他有什么优势?
  • 26 、jenkins 我要在其他环境重放 job 如何实现?
  • 27 、shift-left 你是怎么理解的?
  • 28 、git 相关 svn/git 分别是?他们有什么区别?
  • 29 、git 中 index/local/remote/workspace 他们是?比如 git add xxx 他发生了什么?
  • 30 、都说 git 管理 /切分支等轻量,他们轻量在哪里,具体原理是?
  • 31 、git rebase xxx 发送冲突时,他的根本原因是?不要说具体场景; git fetch/git pull 他们区别是?
  • 32 、你平时开发使用一套分支流程是?为什么要这么做?他的优缺点是?
  • 33 、kafka 相关 broker partition segment 他们是?他们关系是?
  • 34 、kafka 如何保证数据可靠? ISR 是什么?他的工作机制是?
  • 35 、python 相关 GIL 是什么,为什么需要它?
  • 36 、python decoration(装饰器) 他的场景是?他的原理是?
  • 37 、如果要你实现一个 sidecar ,说说你的思路?
  • 38 、线上一个服务响应很慢,你如何排查,排查流程是?

K8s中Webhook的使用

k8s webhook讲解及示例

大家好,今天我们要探讨的是Kubernetes(K8s)中的Mutating Webhooks和Validating Webhooks,以及它们在外部准入控制中的角色。在K8s中,当我们创建、更新或删除K8s资源时,可以利用Webhook机制进行准入控制,从而对资源进行精细化管理。

首先,我们来了解下Mutating Webhooks和Validating Webhooks的区别。Mutating Webhooks,也就是变更Webhooks,允许我们在资源真正落盘前对其进行修改。例如,我们可以对传入的YAML配置进行变更,如设置默认值、添加标签(labels)或注解(annotations)等。而Validating Webhooks则负责校验资源配置是否符合我们的预期和规则,这是两种Webhooks的基本职能。