自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 【区块链】跨链技术详解

跨链技术是区块链生态系统走向成熟的关键因素,它打破了不同区块链之间的壁垒。从早期的原子交换到今天的复杂跨链协议,这一领域经历了显著发展。尽管各种解决方案在去中心化、安全性和效率方面存在权衡,但它们共同推动了区块链互操作性的进步。随着技术不断演进,我们可以期待看到更安全、高效的跨链机制出现,最终实现区块链网络之间的无缝互操作,为用户和开发者创造更加开放、互联的区块链生态系统。

2025-03-21 16:01:08 774

原创 【go】Go中错误包装的最佳实践与常见误区

nil {return BarError{Err: err} // 使用自定义结构包装// ...return nil特点添加了上下文信息封装了原始错误可以通过类型断言识别这个特定错误类型没有实现标准的错误拆包机制(Go 1.13+的Unwrap)适用场景需要创建特定错误类型来表示特定失败情况调用者需要通过类型断言识别特定错误情况需要自定义错误处理行为。

2025-03-20 15:01:26 450

原创 【go】从函数输入选择思考到关注点分离原则

函数命名原则函数名应描述"做什么",而不是"用什么做"避免在函数名中包含输入源或实现细节输入参数选择优先选择接口而非具体类型使用最小化的接口定义,只要求必要的功能分层设计将底层I/O操作与业务逻辑分离创建多个小函数,每个函数专注于一个方面测试友好设计函数设计应便于单元测试避免对外部资源(文件、网络、数据库)的直接依赖适应变化良好的抽象能更好地适应未来的变化考虑函数可能的扩展方式通过遵循这些原则,我们可以设计出更加健壮、灵活且易于维护的代码,真正体现Go语言简洁而强大的设计理念。

2025-03-20 14:05:14 340

原创 【go】忽略range循环中使用指针的影响?

它解决了一个常见的错误来源使代码行为更符合开发者的直觉简化了与指针、闭包和goroutine相关的代码这个变更展示了Go团队在语言演进中的谨慎平衡——在大多数情况下保持严格兼容性,但在必要时也愿意进行精心考虑的改进,即使这意味着改变现有行为。

2025-03-20 09:16:38 527

原创 【go】如何处理可选配置

生成器模式(Builder Pattern)是一种创建型设计模式,用于构建复杂对象。该模式将对象的构造过程与其表示分离,使同样的构建过程可以创建不同的表示。// 构建器类型port *int// 配置方法,支持链式调用return b// 最终构建对象// 复杂的构建逻辑...

2025-03-19 11:27:23 916

原创 【go】《100个Go语言典型错误》变量遮蔽

listing1 ❌ - 展示了常见错误listing2 ✅ - 可行但不够优雅listing3 ✅ - 较好但有重复代码listing4 ⭐ - 最佳实践示例推荐使用 listing4 的方式,因为它:避免了变量遮蔽减少了代码重复使错误处理更集中提高了代码可读性和维护性。

2025-03-19 08:46:55 309

原创 【go】soilid与设计模式

Go的设计哲学——简单、明确、实用——与SOLID原则的目标(创建可维护、灵活和健壮的代码)虽然路径不同,但殊途同归。Go语言设计者并非直接将SOLID原则作为语言设计目标,而是采用了一种简化的、务实的方法来构建可维护的软件。Go语言对设计模式有一种独特的实现方式,它既保留了设计模式的核心思想,又通过语言特性简化了许多传统实现。Go的设计理念—简单、明确、实用—使得设计模式在Go中呈现出更加简洁和直接的形式,同时保持了设计模式的核心优势:可维护性、可扩展性和代码复用。

2025-03-18 08:46:24 803

原创 【go】隐式转换限制

适当的隐式转换:在特定场景下,谨慎选择允许隐式转换实用主义:设计决策以实际使用体验为导向恰当的平衡:在语言设计元素间寻求最佳平衡点在方法调用这个高频场景中,隐式转换的便利性价值被判断为超过了它带来的潜在混淆,因此被保留为语言特性。这体现了Go语言实用主义和务实性的核心价值观。

2025-03-17 20:52:10 675

原创 【go】Go语言设计模式:函数与方法的权衡

核心提示词: go语言的设计模式是不是都是围绕函数展开的,而不是方法?

2025-03-17 20:51:31 964

原创 【go】Go 语言中 errors.Is 和 errors.As 的区别

可以通过实现Is和Asimport ("errors""fmt"// 自定义错误类型Code intreturn fmt.Sprintf("[错误 %d] %s", e.Code, e.Message)// 自定义 Is 方法,只比较错误码,不比较消息if!ok {// 自定义 As 方法// 特殊处理某些转换*t = edefault:var (ErrNotFound = &ErrorCode{Code: 404, Message: "资源不存在"}

2025-03-15 09:21:43 990

原创 【区块链】以太坊

北京时间9月15日,OKLink数据显示,世界上最活跃的区块链网络以太坊在区块高度15537393触发合并机制,并产出首个PoS区块(高度为15537394),自此以太坊共识正式从PoW转为PoS机制,完成了此次“The Merge”升级。以太坊运行过程,可以看成是交易驱动的状态机 transaction- driven state machine,这个状态机的状体就是所有账户的状态,就是状态树。每次发布的区块里包含的交易。至于这个叔叔区块里面的交易是否合法,我们是不检查的,因为可能和主链交易是冲突的。

2025-03-14 17:34:19 744

原创 【区块链】btc

学习视频源链接:本文是根据肖老师的视频进行的笔记记录。

2025-03-14 17:21:35 1106

原创 【go】go语言学习路径

然后使用copilot,结合kubernetes源码进行学习,每找到一种编程模式,就问copilot 在kubernetes 的最佳实践。结合kubernetes 的最佳实践进行快速学习。极客时间 的 go 语言第一课。《go语言经典错误100例》

2025-03-14 16:58:58 103

原创 【go】函数类型的作用

Age int// 使用示例{"张三", 30},{"李四", 25},{"王五", 35},// 按年龄排序},})fmt.Println("按年龄排序:", people)// 按姓名排序},})fmt.Println("按姓名排序:", people)

2025-03-14 16:56:26 494

原创 【go】go语言错误处理

在软件架构中采用分层的错误处理策略是一种成熟的做法。基础类库应该提供明确的错误类型和值,专注于准确表达领域错误,而不添加应用特定上下文。业务代码则应负责包装这些错误,添加流程上下文,并决定如何对不同错误情况作出反应。这种分层策略遵循"关注点分离"原则,使系统的不同部分能够专注于自身的核心责任,从而创建更加健壮、可维护和可演化的软件。

2025-03-03 09:13:39 777

原创 【go】以Kubernetes中的 kubelet 为引思考go语言中共享状态的选择

由于kubelet 因为有很多共享状态,所以彻底按照单一职责进行拆分。于是现在总结一下kubelet中关于共享状态的类型、并且选择的原因。

2025-03-01 10:48:20 767

原创 【go语言规范】Kubernetes 中kubelet关于接口的反模式、并且违背单一职责原则

这个接口是由Kubelet自己实现的,而不是由它的使用者定义的,看起来违反了 Go 的惯用模式。

2025-03-01 10:11:17 955

原创 【Kubernetes】 Scheduler 的逻辑:从 Predicates/Priorities 到 Filter/Score

Kubernetes 调度框架从传统的 Predicates(预选)和 Priorities(优选)转变为现代的 Filter 和 Score 扩展点是在 Kubernetes 1.15 到 1.18 这个时期逐步完成的。Kubernetes 1.15 (2019年6月发布)Kubernetes 1.16 (2019年9月发布)Kubernetes 1.17 (2019年12月发布)Kubernetes 1.18 (2020年3月发布)Kubernetes 1.19 (2020年8月发布)架构变化:代码组织

2025-02-28 20:57:55 1191

原创 【go】time.after内存泄漏

它创建了一个计时器,但返回的只是计时器关联的通道如果不从返回的通道中接收值,即使超时发生后,计时器也不会被垃圾回收这会导致计时器泄漏,特别是在循环中使用时会创建大量无法及时回收的计时器。

2025-02-28 10:28:37 364

原创 【Kubernetes】API server 限流 之 maxinflight.go

简单高效使用 Channel 实现,开销小无需复杂的算法区分请求类型读写请求分开限流更细粒度的控制特权用户豁免系统管理员不受限确保关键操作可执行监控完善记录限流指标支持监控告警无时间窗口不同于令牌桶等算法纯并发数控制这是一个轻量级但有效的限流方案,适合 API Server 的需求。

2025-02-27 11:39:20 656

原创 【学习笔记】Kubernetes

Kubernetes 代码库是一个大型项目,使用模块化结构组织代码。核心功能被分解到不同的子模块中,这些子模块最终会发布为独立的仓库,便于其他项目引用。构建系统提供了一致的环境来编译和测试代码。

2025-02-25 18:13:29 789

原创 【go语言规范】 使用函数式选项 Functional Options 模式处理可选配置

这是 Go 语言中最推荐的配置模式之一,特别适合那些有很多可选配置项的情况。详细代码转载go语言经典100错。

2025-02-18 16:32:34 434

原创 【go语言规范】关于接口设计

否则,由于包的依赖关系,它会使我们的设计更加复杂,并且会限制灵活性,因为所有客户端都必须依赖于相同的抽象。由于应该发现抽象而不是创建抽象,这意味着生产者不能强制所有客户端使用给定的抽象,相反,有客户来决定他是否需要某种形式的抽象,然后为他的需求确定最佳的抽象级别。为了避免不必要的复杂性,需要时才创建接口,而不是预见到需要它,或者至少可以证明这种抽象是有价值的。同样,如果知道(而不是预见到)一个抽象将对客户端有帮助,那么可以考虑返回一个接口,否则不应该强制抽象,这些抽象应该由客户端发现。

2025-02-16 15:28:04 891

原创 【go语言规范】Gopherfest 2015 | Go Proverbs with Rob Pike的 总结

Rob Pike 通过强调“少即是多”(Less is exponentially more),倡导开发者避免过度设计,优先选择简单、可维护的方案。这些原则不仅是 Go 语言的基石,也对其他编程场景具有普适指导意义。以下是整合补充内容后的完整总结,涵盖 Rob Pike 在。虽然已是十年前的产物,但是proverbs的价值依旧存在。

2025-02-16 14:29:46 971

原创 【go语言规范】关于setter和 getter

由于标准库实现了可以直接访问某些字段的结构体(和c一样)所以go 不需要java一样的 采用大量的getter 和 setter这一点确实很有意思,也很容易让从Java转过来的人采取反模式(以下内容来自Claude 和 书籍《go语言经典错误100例》在结构体中,可以用首字母小写:包私有首字母大写, 可导出在 Go 语言中,getter 和 setter 的使用有一些特殊的约定和考虑。

2025-02-16 12:15:39 734

原创 【阅读总结】Building AI Agents for Autonomous Clouds: Challenges and Design Principles

随着大型语言模型(LLMs)和AI代理在软件开发和部署中的应用增长,AI在IT运维(AIOps)中的应用变得尤为重要。全面的故障支持:框架应支持跨整个堆栈的故障注入,包括硬件、网络、OS、中间件、应用和外部服务。对应用的充分可观测性:框架应提供足够的系统和应用环境的可见性,以检测故障及其影响。灵活的代理接口:框架应提供多样化的接口,以满足人类、数字和AI代理的不同需求。可重复性:框架应提供一致的、自动化的部署,以实现可重复和标准化的评估。服务(Service):抽象多样化的服务,以反映生产环境中的变化。

2025-02-16 09:55:12 242

原创 【阅读笔记】100个 go语言经典错误

可读性差:过度设计/完全不设计 都会导致可读性差,go语言语法简单,基本不会产生炫技的语法糖导致无法阅读,但是不可把握的度导致可读性差,依然会继续是个问题。当类copilot开始大行其道时,要么会造成过度设计,要么会造成完全不设计,我认为在长期一段时间内,所谓的度合不合适,还需要软件工程师进行把控。代码地址: https://github.com/teivah/100-go-mistakes/tree/master。书籍官网: https://100go.co/zh/书籍购买:狗东/ 狗东读书自行搜索~

2025-02-16 09:41:37 102

原创 【阅读总结】Understanding Real-World Concurrency Bugs in Go 小结

论文首次对Go语言实际程序中的并发错误进行了系统研究,分析171个并发错误,发现消息传递并不比共享内存更不易出错,某些情况下甚至更容易导致错误,研究结果有助于理解Go语言并发模型,为编写可靠的Go程序和开发调试诊断工具提供指导。最近希望深入一下go 语言细节,在看过基本的语法后,开始找相关经典文章去阅读。虽然阅读总结大部分由GPT生成,但是我认为作为提示词和学习路径,还是有必要记录一下的。以下文章由GPT生成,没有个人思考与总结。

2025-02-15 15:17:39 512

原创 【技术思考】AIOps 方案观察

随着LLM崛起,每个行业都面临着改变。

2025-02-03 15:06:01 763

原创 21-1计划

计划 深入理解java虚拟机——并且画出每章思维导图,并发布 14-24 保持CPA 课前预习+ 课上听课+ 课后再复习的模式,持续下去 《java8 in Action》 14-20 《架构之美》每天2页 《effective sql》 20-31感悟...

2021-01-14 19:10:53 152

原创 【阶段性总结】工作一年半,成长失速

工作一年半,成长失速从19年7月份毕业到2021年1月份,已经工作一年半了。可是这一年半内,我的技术和沟通能力有多少成长吗?想必是没有的,否则也不会在一场超级友善的面试中挂掉。技术方向:原因:这个失速的原因是没有做到持续输出,也几乎没有任何人和我去持续的交流(这也是输出的一种)。实际上我正是发现这一点,才想要去进行内部调岗。实际上我除了在20年尾这个冬季停止学习外,其他时间都没有停止学习,那么是什么让我觉得并没有带来快速提升呢?应该是没有系统性的去学习。这也和第一个原因息息相关。没有系

2021-01-14 17:19:24 297 1

原创 【读书笔记】《敏捷软件开发》薪水支付案例设计模式篇

Command模式和ACTIVE OBJECT 模式命令模式简单来说,就是有命令链。控制一连串的的操作。使尸体上解耦和时间上解耦但是对函数的关注超过了类,但真的很有用TEMPLATE METHOD 和 STRATEGY 模式这俩模式有点傻傻分不清。。。是我蠢了。。。SINGLETON 和 MONOSTATEsingleton 单例模式,一般人们实现的就是将构造器 private 化。...

2019-04-20 17:05:19 314

原创 【读书笔记】《敏捷软件开发》敏捷设计第二部分:讲述LSP, DIP, ISP

LSP——Liskov 替换原则定义:子类型必须能够替换掉他们的基类型理解:就是别乱七八糟加啥奇奇怪怪的方法,你只是改变某种行为的方式,但是他还得符合那种行为的基本框架。如果不是IS-A关系,就坚决不用继承。DIP 依赖倒置解释:高层模块不应该依赖于底层模块。二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该以来与抽象。理解:就是高层代码不能因为低层代码的改变而改变自己的行为。只有高层...

2019-04-20 11:37:46 191

原创 【读书笔记】《敏捷软件开发》敏捷设计第一部分(7,8,9章)

书摘设计的臭味:僵化性:改不动脆弱性:不能改牢固性:拆不出粘滞性:感觉也是拆不出不必要的复杂性:过度设计不必要的重复:复用性极差晦涩性:看不懂软件设计三方面(如何发现问题,分析问题,解决问题)遵循敏捷实践去发现问题应用设计原则去诊断问题应用适当的设计模式去解决问题SRP 单一职责原则:就一个类而言,应该仅有一个因其他变化的原因职责:变化的原因。软件实体应该是可...

2019-03-18 07:34:10 204

原创 【读书笔记】《敏捷软件开发》第六章——一次编程实践

书摘:来关注具体有诗集行为的对象,而不是仅仅存储数据的对象。去关注那些不仅仅只有setter和getter方法的对象的话,会更有效率。遇到麻烦再去改变你的设计。在代码迫使设计之前,不要过度设计。用测试用例证明自己观点感悟:要用测试用例来证明自己观点,口说无凭。只有测试用例才有说服力不仅仅要tdd,测试用例也要随着代码的重构而重构——要维护测试的有效性。自上而下设计,测试有限...

2019-03-17 23:27:32 223

原创 【读书笔记】《敏捷软件开发》1-5章

第一章介绍了几个敏捷开发的原则,其中很有意思的是,bob说敏捷不是加班,而且敏捷也是在特定时间内才会接受新需求,而不是需求的疯狂变更。我感觉,如果要敏捷,首先需要一个好的需求,遇上个垃圾需求,敏捷就是个深坑。第二章所叙述极限编程,这些内容在之前在《构建之法》也看到过,当时和同学试过结对编程,但是效果不太好,我们本科做的东西,还是太玩具了,没有任何价值。我们做的是垃圾。后面几章却没那么多反响。t...

2019-03-03 21:46:35 191

原创 《csapp》第十章个人读书笔记

忽略的点:socket (套接字)是用来与另一个进程进行跨网络通信的文件不足值:就是处理不完整包时用的。netty里面看见过。。。RIO: robust I/O 健壮I/O描述符表: 每个进程都有它独立的描述符表,他的表项是有进城打开的文件描述符来索引的。每个打开的描述符表只想文件表中的一个表项。文件表:打开文件的集合是有一张文件表来表示的,所有的进程共享这张表。每个文件表的表项组成(针...

2019-02-17 20:53:49 243

原创 【读书笔记】《CSAPP》第十一章 网络编程 没写什么东西

c/s编程模型> 客户端-服务器模型中的基本操作是事务(不是数据库事务) 客户端和服务器是进程,而不是通常提到的机器套接字地址结构从Linux 内核的角度来看,一个套接字就是通信的一个断电。从Linux程序的角度来看,套接字就是一个有相应描述符的打开文件。IP地址和端口号总是以网络字节顺序(大端法)存放的大端法:地址从左向右增长,x的最高有效字节12在最前面存储。这正好和我...

2019-01-27 22:19:35 290

原创 【读书笔记】《csapp》刘大领着读的第二阶段总结+第九章笔记

我是第二阶段中间继续加入的。考完研整日整日颓废。复试也没准备= =第二部分相对第一部分的内容少很多。第二部分的主题是:在系统上运行程序——帮助理解了程序和操作系统之间的交互关系。第九章 虚拟内存基本概念:物理地址: 每个字节都拥有的唯一一个物理寻址:按照0,1,2,3,。。。地址空间(address space) :一个非负证书的地址的有序集合。SRAM缓存:位于cpu和主存之...

2019-01-14 00:28:24 190

原创 【读书笔记】《csapp》第八章异常控制流

8.1 基本概念ECF exception controller flow 异常控制流必要性:帮助理解重要的系统概念理解应用程序与系统如何交互编写有趣的新的应用程序帮助理解并发异常异常的分类中断 :异步陷阱:同步,会导致进行一个系统调用故障终止:同步,通常是一个思考:实际上在写应用程序中,处理异常也经常会感觉和以上类似,思路都是一样的。故障和终止都会调用abort...

2019-01-01 22:11:03 219

空空如也

空空如也

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

TA关注的人

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