本文讨论近期发布的Java 21。其中新增了一个主要特性,虚拟线程(virtual thread),近期话题不断,我们都知道Golang的协程提供了很好的并发功能。那么就来探讨一下Java 21和 Go 语言中相应的功能。Golang的协程和Java 21的虚拟线程都是用于构建轻量执行线程的并发技术。它们具有一些相似的特性,但也有着非常大的区别。下面就……继续阅读 » Alan 1年前 (2023-10-13) 1776浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。“Don’t Repeat Yourself”是常见的软件工程建议。与其重新创建一个数据结构或函数,不如重用它,因为对重复的代码保持更改同步非常困难。在像 Go 这样的强类型语言中,每个函数参数及每个结构体字段的类型必须在编译时确定。这种严格性使编译器能够帮助验证代码是否正确,但有时……继续阅读 » Alan 1年前 (2023-09-07) 1353浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。2000年以来,自动化测试的广泛应用可能比任何其他软件工程技术都更能提高代码质量。Go是一种专注于提高软件质量的语言和生态系统,很自然的在其标准库中包含了测试支持。Go中测试代码非常容易,没有理由不添加测试。本章中,读者将了解如何测试Go代码,将测试分组为单元测试和集成测试,检查测试……继续阅读 » Alan 1年前 (2023-08-31) 1864浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。服务端需要一种处理单个请求元数据的方式。这些元数据可以分为两大类别:一种是在正确处理请求时所需的元数据,另一种是关于何时停止处理请求的元数据。例如,HTTP服务器可能希望使用追踪ID来标识一系列通过一组微服务的请求。它还可能希望设置一个计时器,在对其他微服务的请求时间过长时,就结束这……继续阅读 » Alan 1年前 (2023-06-30) 1594浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。使用Go进行开发的最大优势之一是其标准库。与Python类似,Go也采取了“内置电池”的理念,提供了构建应用程序所需的许多工具。由于Go是一种相对较新的语言,它附带了一个专注于现代编程环境中遇到的问题的库。我们无法涵盖所有标准库包,所幸也不需要,因为有许多优秀的信息源可以了解标准库……继续阅读 » Alan 2年前 (2023-06-09) 1382浏览 0评论0个赞
体验过 OpenAI的ChatGPT的朋友们应该都会发现交谈的内容都是一个字一个字蹦出来的,熟悉其背后原理的朋友都知道除了一些预先调校的回复实际上AI的回复都是实时生成的,或者更专业的说法应该是实时预测出来的。所以这种显示效果也是一种无奈之举,但小伙伴有没有发现其实它还蛮酷的,至少不太容易让人产生反感。既然内容是实时生成的,那自然是后端接口实时喂数据给前端……继续阅读 » Alan 2年前 (2023-06-06) 1847浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。GoF(Gang of Four),GoF都是知名的软件工程师并且在面向对象编程和软件设计领域具有丰富的经验。他们于上世纪90年代一起在IBM的T.J.华生研究中心工作。这四人也即Erich Gamma、Richard Helm、Ralph Johnson和John Vlisside……继续阅读 » Alan 2年前 (2023-03-28) 1307浏览 0评论1个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。并发是一个计算机科学用语,将一个进程分割成独立组件并指明这些组件如何安全共享数据。大部分语言通过库提供并发,使用的是尝试通过获取锁操作执行系统级共享数据的线程。Go独树一帜。它的主要并发模块,很多认认为是Go的最著名的特性,基于CSP(通讯顺序过程)。它依据快速排序算法的发明人Ton……继续阅读 » Alan 2年前 (2023-03-26) 1637浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。至此,我们学习了如何将应用打包为容器,创建容器副本集以及使用Ingress控制器将访问负载均衡至各服务。可以使用所有这些对象(Pod、副本集和服务)来构建应用的单个实例。但这些对于常规管理应用新版本的每日或每周发布帮助甚少。Pod和副本集本来是与不发生修改的具体实例镜像相绑定的。部……继续阅读 » Alan 2年前 (2023-03-18) 1079浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。大部分编程语言都有将代码组织到命名空间和库的系统,Go也不例外。在学习其它特性时我们看到了,Go对这些老思想引入了新方法。本章中,读者会学习到如何通过包和模块组织代码、如何导入、如何使用第三方库以及如何创建自有库。仓库、模块和包Go语言的库管理有三个基础概念:仓库、模块和包。所有……继续阅读 » Alan 2年前 (2023-03-12) 1756浏览 0评论0个赞