自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

残星说梦话

在路上...

  • 博客(247)
  • 收藏
  • 关注

原创 Golang插件系统实现

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为此,我们可以使用不同的方法,既可以通过简单的文档解释期望的方法,也可以定义接口库(编程接口,如 class foo implements bar)。为此,我们将用 JSON 定义配置文件,在里面定义路径列表,在本文中列表里只有一项,但请注意,这是一个为插件定义配置的机会。

2024-04-17 16:59:17 749

原创 深入探索垃圾收集

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。并发标记扫描收集器(或并发收集器、CMS)是 Oracle HotSpot Java 虚拟机(JVM)中的标记扫描垃圾收集器,自 1.4.1 版起可用,在第 9 版中被弃用,在第 14 版中被移除,因此从 Java 15 开始就不再可用了。

2024-04-15 17:50:58 681

原创 Golang 并发安全Map容器实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。在读取或写入map前锁定mutex,并在读取或写入map后解锁mutex。

2024-04-12 18:12:56 388

原创 Golang 状态机设计模式

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。因为返回的是下一个要运行的状态,所以根据不同的条件,会有不同的下一个状态。

2024-04-12 17:36:22 304

原创 基于Python实现盈利8371%的交易策略

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。正如标题中所说,该策略取得了 8371% 的投资回报率,这是一个巨大的数字。

2024-04-12 14:05:34 384

原创 Golang数据库事务实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。工作原理:事务管理器启动事务并将事务放入回调,存储库工厂方法使用事务创建自己。

2024-04-02 19:42:49 352

原创 基于ArgoCD和Testkube打造GitOps驱动的Kubernetes测试环境

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。由于测试是在集群内部执行的,因此没有必要纯粹为了测试而从外部暴露被测服务。

2024-04-01 16:45:49 962

原创 软件项目估算8大原则

如果一个软件工程师被一个复杂的错误困住了,花费的时间超出了他的预期,他就会分享问题是如何解决的,这样其他软件工程师就不会被同样的错误困住。你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。但是,如果你是分包商,而客户还没有付款,就必须考虑是否应该避免提供,因为粗略估算是有价值的信息,很多人都会想方设法榨取这些信息,但不付钱。

2024-04-01 15:07:02 545

原创 代码审查最佳实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。因此,通过关注编码标准,团队成员可以限制主观争论,并依赖记录在案的约定俗成的代码审查准则,有助于在开发过程的早期解决潜在问题,并确保代码库长期保持一致性。然而,如果操作不当,也可能成为工程经理和开发人员的噩梦,团队可能会遇到代码审查方面的难题,从而拖慢整个开发流程。

2024-03-29 16:10:27 541

原创 Go高级构建指南

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。通过使用构建标签,开发人员可以定制自己的应用程序,使其适用于不同的构建配置、环境或特定平台要求。构建标签是放在 Go 源文件开头的注释,指定了一组条件,标识在这些条件下,该文件中的代码应被包含或排除在联编过程之外。只有在未启用 CGO 的情况下,才会在构建过程中包含该文件。

2024-03-28 17:18:49 790

原创 Kubernetes生产集群部署指南

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。在此部署中,我们将关闭捆绑的 etcd 服务,而只使用外部群集。

2024-03-28 13:03:15 975

原创 Netflix微服务经验教训

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。软件架构的变化被称为差异性,随着差异逐渐增加,系统的复杂性也会增加。

2024-03-26 16:59:00 554

原创 Go代码优化实用指南

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。对 Go 代码进行优化是一个微妙的过程,需要在可读性和性能之间取得平衡,必须优先考虑代码清晰度,只有经过分析表明有必要时才引入优化。Go非常适合构建高性能应用,本文通过对整型切片求和代码的优化,介绍了常用的Go代码优化方案,从而让代码获得更好的性能。优化 3:使用指针切片。

2024-03-26 12:43:37 392

原创 Kubernetes反模式避坑指南

试想一下,有一个有状态的 pod(附加了持久卷),由于持久卷通常是属于特定可用性区域的资源,在区域内没有复本,因此自定义自动扩容器会移除装有此 pod 的节点,而调度器无法将其调度到其他节点上,因为它受到装有持久化存储的唯一可用区的极大限制,Pod 再次卡在了 Pending 状态。没错,说的就是这个。

2024-03-17 15:25:31 940

原创 Golang高效流控实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。例如,如果流控设置为每分钟 100 个请求,则系统在任何给定的 60 秒窗口内最多允许 100 个请求,超过此限制的请求将被拒绝或延迟到下一个时间窗口。流控对于构建高可靠弹性系统至关重要,本文介绍了Golang内置的流控组件,通过该组件就可以打造适合各种业务场景的流控系统。

2024-03-16 15:00:09 1002 1

原创 十二要素应用: 云原生应用最佳实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。端口绑定的概念对于面向网络的服务或任何需要通过互联网访问的基于网络的服务至关重要,通过将应用程序绑定到特定端口,应用程序就可以通过该端口的网络地址进行访问,从而允许客户端(如网络浏览器或其他应用)与应用程序进行通信。最终,一旦将应用托管到服务器上,今后都将依赖该服务器。

2024-03-10 15:14:28 853

原创 Uber/Google Golang编码标准深度分析

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。常见的代码格式,如缩进、括号对齐、组合变量定义、行的最大长度等,不仅适用于 Go,也适用于所有语言。良好的代码风格对于开发优秀的产品至关重要,本文通过分析比较三部流传甚广的Golang代码风格指南,介绍了Go代码风格要点,并介绍了通过工具实现代码检查的方式。

2024-03-08 09:30:16 941 2

原创 Golang模糊测试实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。如果模糊测试运行时间过长而没有提供额外价值(例如,没有发现新的有趣案例,或者已经从当前运行中获得了足够信息),可以手动停止该进程,然后查看迄今为止获得的结果,以决定下一步行动(例如调整模糊参数或调查已发现的案例)。这是一个简单的不变量,如果反转函数正确的话,就应该总是成立的。

2024-03-07 09:17:56 650

原创 Golang高级微调技术

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。对于懒惰的开发人员来说,这是一种方便的快捷方式。另外,也可以在函数开始时对。

2024-03-05 12:33:19 1024

原创 Golang动态高效JSON解析技巧

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。标记,由于输入中没有相应的值,解析时使用了相应类型的零值,int 的零值为。

2024-03-04 08:56:59 764

原创 平台工程: 用Backstage构建开发者门户 - 2

但是,如果愿意的话,上面的Helm charts也可以使用PostgreSQL作为依赖项,并在k8s中同时部署数据库和门户,在这种情况下,需要选择正确的PersistentVolume存储类型,例如,作为云卷或网络附加存储(任何比Kubernetes节点的临时存储更持久的存储)。为此,我们希望将前端与后端分开。你可能已经猜到我要干嘛了,对于生产开发,有时需要将前端与后端分开提供服务,要么从一个单独的Docker镜像,要么例如在带有CDN的静态文件服务器(技术上,CDN也可以与Docker容器一起工作)。

2024-03-03 11:01:21 802

原创 平台工程: 用Backstage构建开发者门户 - 1

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。在教程的第一部分,我们介绍了开发者门户网站的功能,学习如何使用开源 Backstage 工具创建自己的门户网站,使用 GitHub 配置门户网站,创建软件模板,并从中启动一项服务。例如,我们现在使用的是静态配置,没有什么是持久化的,如果重新启动开发服务器,目录信息就会丢失。

2024-03-02 15:30:17 908

原创 平台工程与安全

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。与其去弄清团队正在使用哪个secrets管理器,部署在哪里,以及是否有权限创建secrets,还不如访问与secrets管理器集成的内部开发人员门户,以自助服务的方式创建secrets,而不必过多担心任何底层细节,这正是平台工程所能提供的抽象程度。

2024-03-01 15:57:27 604

原创 授权的艺术

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。这里的推理是,如果评估出某项任务对企业至关重要,但没有其他人能胜任,而且与之相关的技能对团队没有长远意义,那么最好的选择就是腾出其他事情的空间,接受这项任务。委派任务时,列出可以或需要委派给团队的任务候选清单,将其与团队成员的技能愿望/或要求联系起来,并排出任务的优先顺序。

2024-02-29 12:25:47 371

原创 分布式系统设计: 从1千到10亿用户的跨越

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。使用地理复制或多区域部署,在不同地理位置复制或部署系统,以提高性能和可用性。

2024-02-28 11:30:44 780

原创 分层架构最佳实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。根据反馈和评估结果,进行后续迭代,为系统添加新的或增强功能。

2024-02-27 12:19:31 646

原创 Helm vs Kustomize 深度比较

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。不过,本文篇幅过长,无法讨论 Kustomize 的这一功能。

2024-02-26 14:14:44 914

原创 RocksDB深度解析

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。但是,如果我们要查找的键是"raccoon",而这个键只存在于数据结构的第1层,在LSM树中根本不存在,那么查找必须在整个树中持续进行,直到找到或确定不存在这个键为止。SST文件中的每个块都包含校验和,以确保数据的完整性,并检测任何潜在的损坏。

2024-02-24 15:01:26 667

原创 冲突管理最佳实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。心理安全是团队成员之间的信任和尊重感,在这种安全感下,个人可以放心表达自己的想法、承担风险,甚至犯错,而不必担心受到惩罚或嘲笑。在这种情况下,作为经理,你的职责是促进Alice和Bob之间的建设性对话,鼓励他们表达自己的观点,关注潜在的利益和担忧,而不是坚持自己最初的立场。

2024-02-23 11:28:34 825

原创 妨碍有效沟通的5种认知谬误

另一方面,复杂问题需要更多的工作,未知、不确定性和问题的本质需要仔细分析,你可能无法完全理解问题的复杂性,或者发现表达自己的观点是有风险的。一个人的性情并没有错。你没有把大部分时间花在那些复杂的元素上(什么是故障点,什么是可接受的容错性,要使用的技术栈),而是花更多的时间考虑数据库表的名称,决定API端点,重构现有代码或承担其他简单的任务。认为别人问题的根源,并期望周围每个人都能改变,除了你自己,这会让你把注意力集中在别人的行为和行动上,而这些是你无法控制的,你可以控制的只有自己的行为和行动。

2024-02-22 15:43:03 395

原创 妨碍做出正确决策的5种认知谬误

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。正如安妮·杜克(Annie Duke)在《对赌》中解释的那样,"当我们从结果中回溯,找出事情发生的原因时,很容易陷入各种认知陷阱,比如在只有相关性的情况下假设因果关系,或者挑选数据来证实我们喜欢的叙述。当这种情况发生时,在刚刚经历的情绪拉锯的影响下,你的认知功能会受损。

2024-02-21 17:37:21 579

原创 架构师蓝图: 理解软件风格与模式

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。此模式是通过将实现连接到不断发展的模型来实现复杂需求的软件开发方法,涉及实现和模型之间的密切关系,在两者之间有恒定的迭代周期。这些风格和模式提供了沟通、记录和探索设计可选方案的方法,为常见问题提供了解决方案,节省了时间和精力,帮助我们构建更健壮和可维护的系统。

2024-02-20 09:45:29 664

原创 Go应用性能分析实战

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。单击图中的节点,可以对其进行细化,我们可以根据自己的选择对可视化进行过滤。

2024-02-19 13:22:21 913

原创 Go高级并发模式

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。通过理解和利用这些概念,可以构建高性能和可伸缩的应用程序。

2024-02-12 00:02:32 448

原创 10分钟搞懂20个Golang最佳实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。在Go语言中,gooutine是轻量级的并发执行线程,能够并发的运行函数,而没有传统线程的开销。尽量减少使用全局变量,全局变量可能导致不可预测的行为,使调试变得困难,并阻碍代码重用,还会在程序的不同部分之间引入不必要的依赖关系。在Go中,编写干净高效的代码至关重要。

2024-02-11 23:36:35 678

原创 Go内存优化与垃圾收集

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。可以看到,当前堆的大小一直在增长,直到达到活跃堆大小的1000%。

2024-02-09 11:35:09 1298 1

原创 Cilium CNI深度指南

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。然而,这样的限制增加了复杂性和处理成本。我们的长期目标包括为pod提供一种机制来选择对等身份验证,支持可插拔的证书管理系统(如SPIFFE、Vault、SMI、Istio、cert-manager等),提供可配置的证书粒度,以及利用现有的对数据平面的加密协议支持。

2024-02-08 09:42:52 1593

原创 [大厂实践] Netflix容器平台内核panic可观察性实践

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。当这种情况发生时,通常是云供应商提供的k8s云控制器检测到实际的服务器(在我们的例子中是EC2实例)已经消失,并反过来删除k8s节点对象。设置,内核panic的最后怒吼看起来就像一组UDP数据包,就像人们可能期望的那样,其中UDP数据包的数据只是内核消息的文本。

2024-02-07 11:38:52 1415

原创 在Go中构建复杂对象: 构建器模式指南

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。本文介绍了构建器模式,介绍了如何通过构建器对象构建复杂业务对象的方法。

2024-02-06 12:33:30 580

原创 云原生微服务的SWOT分析

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。虽然优点很明显,但要用起来并不是简单的事,需要重新构建和设计当前的应用程序和基础设施,有必要构建和实现分布式系统、微服务、容器、无服务器和其他新兴技术和体系架构。: 采用云原生微服务可能会面临挑战,例如来自遗留系统的阻力、缺乏专业知识或难以适应新的流程和工作流。

2024-02-05 16:06:18 653

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除