自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TonyBai

Kubernetes、Docker、Golang、儿童编程、DevOps、云计算平台和机器学习

  • 博客(771)
  • 资源 (1)
  • 收藏
  • 关注

原创 Go机器学习框架之火重燃,Google前研究员开源期望媲美Jax的GoMLX

Go作为一门兼具高性能与简洁性的编程语言,近年来在各种领域得到广泛应用。然而,在机器学习领域,Go相比Python、C++、Julia等语言,生态仍然较为薄弱。目前的Go机器学习框架无论在功能全面性上,还是在社区生态支持上都难以与TensorFlow、PyTorch、Jax等重量级框架抗衡。究其原因,笔者觉得还是Go社区缺少熟悉和精通机器学习方面的人才。不过,随着时间的推移,总会有一些开发者会尝试...

2024-08-23 20:00:19 522

原创 从零开始编程:Go语言真的适合新手吗?

Go语言自诞生以来,一直以其简洁、高效和面向工程的特性受到开发者的青睐,尤其是在后端开发和并发编程方面,Go表现出了独特的优势。然而,作为一门以简单著称的语言,它是否适合作为编程初学者的第一门语言呢?笔者今天在Reddit上看到有人提出此类问题[1],也做了一些思考,这里就通过本文从多个角度来和大家一起探讨下这一问题。我们先从Go适合作为第一门语言的特质说起。1. Go语言的简洁性在我的《Go语言...

2024-08-22 08:00:48 516

原创 继Ollama之后,Go在AI领域再下一城

AI isn't a thing; it's a magnifier of a thing. And that thing is human creativity.在AI领域,最火的使用Go开发的项目莫过于Ollama项目了,但近期有一个项目也吸引了Gopher眼球,它就是fabric。叫fabric的项目太多,这个fabric又是一个怎样的项目呢?这里我就为大家简单介绍一下。danielmies...

2024-08-20 08:02:25 681

原创 Go 1.23中值得关注的几个变化

距离上一次Go 1.22版本发布[1]又过去六个月了,我们如期迎来了Go 1.23版本的发布](https://mp.weixin.qq.com/s/IpDUOe0AUDKW2PYCWmvLYw)。对于Go项目乃至整个Go社区而言,这个版本还有一点额外的意义,那就是这是Russ Cox[2]作为Tech lead,领导Go团队发布的最后一个Go版本了。8月2日,Russ Cox在golang-de...

2024-08-19 08:13:58 803

转载 无敌了!强烈建议今年拿下软考!

注意注意!????分享一个免费,又干货满满的2024软考备考通关交流群!进群听课免费领1⃣️2天软考大咖公开课2⃣️2024最新软考备考提分资料包3⃣️7天1V1备考指导+考试专业选择4⃣️历年真题库+核心必考点+万能通关技巧软考证书作为计算机行业公认的王牌认证,近几年每年都有上百万人报名。而其中的软件架构设计师和软件设计师则是技术领域含金量最高的两个科目,对于研发、测试、产品、运维岗位的同学来说,是精...

2024-08-17 08:02:37 33

原创 通过Go示例理解函数式编程思维

一个孩子要尝试10次、20次才肯接受一种新的食物,我们接受一种新的范式,大概不会比这个简单。-- 郭晓刚 《函数式编程思维》译者函数式编程(Functional Programming, 简称fp)是一种编程范式,与命令式编程(Imperative Programming)、面向对象编程(OOP)、泛型编程(Generics Programming)、逻辑编程(logic Programming)...

2024-08-12 08:00:46 860

原创 使用TLA+形式化验证Go并发程序

Writing is nature's way of letting you know how sloppy your thinking is - Guindon在2024年6月份举办的GopherCon Europe Berlin 2024[1]上,一个叫Raghav Roy的印度程序员(听口音判断的)分享了Using Formal Reasoning to Build Concurrent G...

2024-08-05 08:04:59 699 1

原创 Gopher Daily支持Feed订阅

在《Russ Cox“退位”,Go语言将迎来新领袖,未来将如何发展[1]。Gopher Daily以前没有官方邮件订阅功能,该邮件列表弥补了广大Gopher通过邮件订阅Gopher Daily的需求,这里再次表示感谢。不过,一年前,我为Gopher Daily增加了官方邮件列表[2],大家可以在Gopher Daily主页实现邮件订阅[3]。接下来,还是那位提问的Gopher又询问Gopher D...

2024-08-04 21:05:24 690

原创 Go语言中的SIMD加速:以矩阵加法为例

前些日子,一些资深Gopher,比如fasthttp[1]的作者Aliaksandr Valialkin[2]因函数迭代器[3]加入Go 1.23版本[4]而抱怨Go的演进走错了方向:朝着增加复杂性和隐式代码执行的方向发展,而没有专注于Go语言的基本设计哲学——简单性、生产力和性能。Valialkin希望Go团队能专注于一些性能打磨和优化的环节,比如使用SIMD提升一些计算场景下Go代码的性能,避...

2024-07-22 08:00:18 927

原创 通过实例理解Go访问和操作数据库的几种方式

关系数据库操作是Go应用开发中的重要一环,尤其是Go Web应用、微服务等。作为Gopher,我们需要了解几种主流的数据库访问和操作方法,以便在项目中做出适当的选择。我个人在日常开发中较少涉及CRUD类应用,因此使用Go访问和操作数据库的机会并不多,在这方面也算是有一些“短板”。通过在这篇文章中对数据库访问方式进行全面的梳理,我也算是补全一下技能树,同时也能为读者小伙伴提供一些参考。我搜集了目前G...

2024-07-15 08:01:05 1013

原创 Go语言编程指南翻译记:一本书,一支队伍,一段难忘的旅程

嘿,各位Gopher们!猜猜发生了什么?我们团队翻译的《Go Fundamentals:Gopher Guides[1]》中文版终于出版啦!没错,就是那本被我们亲切地称为《Go语言编程指南[2]》的Go入门宝典。说实话,看到这本书终于摆在书架上,我的心情就像是刚刚用Go写出了一个超高效的并发程序一样兴奋!翻译这回事儿,我可不是新手先让我跟大家聊聊我的“翻译前传”。其实这已经是我第二次和人民邮电出版...

2024-07-05 08:00:27 735

转载 鸟窝:并发编程,为什么选Go?

我们知道,Go 语言部署简单,自带完善的工具链,不仅容易上手,而且执行性能非常好,已经被越来越多的人当成主要的编程语言。而我当初也算被 Go 的简单高效所打动。它不仅部署方便,自带完善的工具链,特别是 Go 在处理并发场景上表现出的独特性能,更是让我着迷。相对于 Java 语言的繁琐编码,和为了应用设计模式而做的大量冗长设计, Go 提供了便利的并发编程方式 -- 简简单单的语句,就可以创建多个 ...

2024-07-03 08:00:17 84

原创 Go 1.23中的自定义迭代器与iter包

在《Go 1.23新特性前瞻》[1]一文中,我们提到了Go 1.23中增加的一个主要的语法特性就是支持了用户自定义iterator,即range over func试验特性[2]的正式转正。为此,Go 1.23还在标准库中增加了iter包[3],这个包对什么是Go自定义iterator做了诠释:Aniteratorisafunctionthatpassessuccessiveele...

2024-06-24 08:00:08 978

原创 Go团队的工作方式

在Go 1.23版本[1]即将发布(2024.8)之前,在GopherCon 2024[2]开幕(2024.7)之前,Go团队成员Cameron Balahan(Go产品负责人)[3]、 Sameer Ajmani(Go团队工程总监)和Russ Cox(Go团队技术负责人)[4]参加了业界知名的播客栏目GoTime[5]的最新一期活动,主题是“How things get done on the ...

2024-06-22 08:00:12 1104

转载 DIY经典游戏,轻松学Rust编程——重温儿时游戏梦,用Rust写出属于自己的小游戏!...

【译者序】“重温儿时游戏梦”,我感觉这本书的作者是挺讲情怀的,这也是我看完这本书以后感觉它与众不同的一点。这本书不是死板的教程,更像是作者在给你讲故事,讲怎么做好一个游戏,怎么在此过程中学习Rust编程,有点“边玩边学”的感觉。从未有一门语言像 Rust 这样,自推出之后在使用者的口碑中如此两极分化。有人说 Rust 就是一场“骗局”,难学又难用,早晚会在吃尽苦头后放弃;有人却说 Rust 是“神...

2024-06-18 08:00:39 90

原创 Go与神经网络:线性回归

离发表上一篇与机器学习相关的文章《Go与神经网络:张量运算》[1]已经过去整整一年了,AI领域,特别是大模型领域的热度不仅未有减弱,反而愈演愈烈。整个行业变得更卷,竞争更加激烈,大模型你方唱罢我登场,层出不穷,各自能力也都在不断提升,并在自然语言处理、问答、生成等方面展现出强大的能力。同时基于RAG(Retrieval-Augmented Generation)[2]等技术,大模型还可以实时检索相...

2024-06-11 07:57:21 494

原创 Gopher的Rust第一课:Rust代码组织

在上一章的讲解中,我们编写了第一个Rust示例程序"hello, world",并给出了rustc版和cargo版本。在真实开发中,我们都会使用cargo来创建和管理Rust包。不过,Hello, world示例非常简单,仅仅由一个Rust源码文件组成,而且所有源码文件都在同一个目录中。但真实世界中的实用Rust程序,无论是公司商业项目,还是一些知名的开源项目,甚至是一些稍复杂一些的供教学使用的示...

2024-06-07 08:00:12 975

原创 Go 1.23新特性前瞻

2024年5月22日,Go 1.23版本[1]功能特性正式冻结,后续将只改bug,不增加新feature。对Go团队来说,这意味着开始了Go 1.23rc1的冲刺,对我们普通Gopher而言,这意味着是时候对Go 1.23新增的功能做一些前瞻了!在Go没有发布Go 1.23rc1之前,我们至少可以通过以下两种渠道体验Go 1.23的最新特性:通过go install安装tip版本;使用Go pla...

2024-05-30 08:01:55 3760 1

原创 Gopher的Rust第一课:第一个Rust程序

经过上一章[1]的学习,我想现在你已经成功安装好一个Rust开发环境了,是时候撸起袖子开始写Rust代码了!程序员这个历史并不算悠久的行当,却有着一个历史悠久的传统,那就是每种编程语言都将一个名为“hello, world”的示例作为这门语言学习的第一个例子,这个传统始于20世纪70年代那本大名鼎鼎的由布莱恩·科尼根(Brian W. Kernighan)与C语言之父丹尼斯·里奇(Dennis M...

2024-05-27 08:01:12 1249

原创 Go 1.23 Release Notes编写方式改进!

2024.5.22日,Go 1.23 feature冻结!Go团队开始Go 1.23rc1的冲刺,截至发文时,Go 1.23 milestone已经完成59%(https://github.com/golang/go/milestone/212),还有188个open的issue待解决。Go 1.23有哪些新feature?这个我会在后续撰写一篇文章单独说明。这里简单说说Go 1.23 Relea...

2024-05-24 20:00:44 750

原创 Go团队:Go是什么

2024年的Google I/O大会[1]如期而至。这届大会的核心主旨毫无疑问是坚定不移的以AI为中心:Google先是发布了上下文长度将达到惊人的200万token的Gemini 1.5 Pro[2],然后面对OpenAI GPT-4o的挑衅,谷歌在大会上直接甩出大杀器Project Astra[3],视觉识别和语音交互效果,跟OpenAI的GPT-4o[4]不相上下;接着,谷歌又祭出文生视频模...

2024-05-20 08:00:45 555

原创 Go早期的那些布道者

Go自2009年开源至今已经快15年了[1]!这期间,有很多人对Go语言的发展做出了重要贡献,起到了至关重要的作用,他们被视为Go语言的早期布道者和鼓吹者。他们向Go社区传达着Go的价值观、Go的最新发展、Go的使用方法以及最佳实践。这些人有来自Go团队的,有来自Google但非Go团队的,也有Go的早期采纳者和贡献者。如今这些人的状况不尽相同。有些人依然在活跃在Go团队中,为Go的演进持续做着贡...

2024-05-18 08:04:04 948

原创 Gopher的Rust第一课:建立Rust开发环境

经过上一章的对Rust诞生演化的了解以及设计哲学的探讨后,如果你依然决定继续Rust编程学习之旅,那么欢迎你和我一起正式走进Rust学习和实践的课堂。编程不是“纸上谈兵”,它是一门实践的艺术。编程语言的学习离不开动手实践,因此学习任何一门编程语言的第一步都是要拥有一个这门编程语言的开发环境,这样我们才可以动手编码,理论与实践结合,不仅加速学习效率,还能取得更好的学习效果。在这一章中我们就先来学习下...

2024-05-11 08:00:08 1204

原创 使用Ollama和Go基于文本嵌入模型实现文本向量化

基于RAG+大模型的应用已经成为当前AI应用领域的一个热门方向。RAG(Retrieval-Augmented Generation)将检索和生成两个步骤相结合,利用外部知识库来增强生成模型的能力(如下图来自网络)。在RAG赋能的大模型应用中,关键的一步是将文本数据向量化后存储在向量数据库中(如上图的红框),以实现快速的相似度搜索,从而检索与输入查询相关的文本片段,再将检索到的文本输入给生成模型生...

2024-05-09 08:00:14 1751

原创 那些可免费使用的在线大语言模型服务

2022年底以ChatGPT[1]为代表的大语言模型的出现掀起了人工智能应用的新浪潮。这些庞大的语言模型经过对海量文本数据的训练,能够理解和生成逼近人类水平的自然语言,在对话、问答、文本生成、代码编写等领域展现出了惊人的能力。最初这种能力“垄断”在OpenAI公司的手里,世界各地的AI爱好者们为了能尽快拿到ChatGPT的使用账号,使出了浑身解数,国内朋友更是如此。不过随着Google、Meta[...

2024-05-07 08:00:30 1545

原创 Go未用代码消除与可执行文件瘦身

在日常编写Go代码时,我们会编写很多包,也会在编写的包中引入了各种依赖包。在大型Go工程中,这些直接依赖和间接依赖的包数目可能会有几十个甚至上百个。依赖包有大有小,但通常我们不会使用到依赖包中的所有导出函数或类型方法。这时Go初学者就会有一个疑问:这些直接依赖包和间接依赖包中的所有代码是否会进入到最终的可执行文件中呢?即便我们只是使用了某个依赖包中的一个导出函数。这里先给出结论:不会!在这篇文章中...

2024-05-05 08:02:41 900

原创 使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B

2024年4月18日,meta开源了Llama 3大模型[1],虽然只有8B[2]和70B[3]两个版本,但Llama 3表现出来的强大能力还是让AI大模型界为之震撼了一番,本人亲测Llama3-70B版本的推理能力十分接近于OpenAI的GPT-4[4],何况还有一个400B的超大模型还在路上,据说再过几个月能发布。Github上人气巨火的本地大模型部署和运行工具项目Ollama[5]也在第一时...

2024-04-25 08:01:02 1835 1

原创 从零到生产:Go在Google的历程[译]

2007年Go诞生于Google,2009年Google正式对外宣布了Go语言的开源!时至今日,距离Go开源已经过去了近15个年头了[1]!Go在Google公司内部究竟是怎样的一个状态呢?前Google员工Yves Junqueira近期撰文从其个人所见所闻谈了Go在Google的历程[2]!这里简单翻译,供大家参考!最近,Jeremy Mason[3]和Sameer Ajmani[4]撰写了有...

2024-04-24 08:00:27 991

转载 从今天起,做一个 Rust 程序员

在 Stack Overflow 的年度开发者调查中,Rust 连续第八年成为“最受欢迎的编程语言”。Rust 最近可谓风头正劲,很多人都有所耳闻,但没用过。日前,美国总统拜登公开表示:出于安全考虑,大力发展 Rust 项目,拒绝支持“非 Rust”项目。Lars Bergstrom(Google 工程总监)在一个分享中表示:Rust 和 go 语言一样有很高效率的生产力,Rust 团队的生产力是...

2024-04-23 08:00:27 90

原创 Gopher的Rust第一课:Rust的那些事儿

要说这两年后端编程语言谁最火,Rust[1]说自己第二,没人敢说第一。Rust连续8年霸榜stackoverflow最受推崇的编程语言[2],甚至被推特之父Jack Dorsey称为“完美的编程语言”:注:最火:仅代表人气最旺,最受欢迎,但并不代表使用者最多。如果你经常读我的博客,你可能会问:“你不是Go语言布道师吗?怎么也要转Rust了?”其实不然,学习Rust不是要蹭热度,而是实际开发的需要。...

2024-04-22 08:01:56 879

原创 要么返回错误值,要么输出日志,别两样都做

1. 缘起这周,一个产品团队内进行Go代码评审时,得到了一个结论:所有的if err != nil的地方都应该输出错误日志。然而,这种做法并不是最佳实践,它存在一些问题。首先,打印过多的错误日志会导致日志文件变得冗长和难以阅读。其次,重复的错误信息会增加冗余。此外,每一层都打印错误日志,一旦错误信息设计不当,可能会导致上下文信息的丢失。让我们来看一个示例,说明为什么同时输出错误日志和返回错误值会导...

2024-04-15 08:00:51 344

原创 选择正确的Go Module Path

最近我在查看项目代码时,注意到有人在go.mod文件中将module path写为com.example.foo了。根据这个写法,相信屏幕前的读者也可以推断出这位开发人员可能是从Java阵营转到Go的。实际开发中可能有很多开发者会使用类似的内容作为module path,但这显然不是Go的推荐写法或惯用法。在这篇简短的文章中,我就来介绍一下module path对Go源码构建、包导入路径以及开发协...

2024-04-10 08:01:17 825

原创 Go 1.22引入的包级变量初始化次序问题

细心的朋友可能已经注意到,从春节后,我的博客就“停更”了!实际上,这一情况部分是因为工作上的事务繁忙,另一部分则是因为我将工作之外的闲暇时间更多地投入到一本即将于今年中下旬出版的书的撰写了:在之前的积累基础上,我花了两个多月的时间完成了初稿。当然,我也深切地怀念博客写作所带来的乐趣和与读者的互动。正巧,今天一位学员在《Go语言第一课》专栏[1]留言给了我一个恢复下笔的机会。借此,我也准备恢复一下博...

2024-03-30 08:02:26 1057

原创 Go 1.22中值得关注的几个变化

美国时间2024年2月6日,正当中国人民洋溢在即将迎来龙年春节的喜庆祥和的气氛中时,Eli Bendersky[1]代表Go团队在Go官博发文“Go 1.22 is released![2]”,正式向世界宣告了Go 1.22版本的发布!注:大家可以从Go官网下载Go 1.22的第一个版本go 1.22.0,也可以在Go playground[3]上选择Go 1.22版本在线体验Go 1.22的语法...

2024-02-19 08:00:45 1163

原创 2024年的Rust与Go

本文译自《Rust vs Go in 2024》[1]。我可以说些什么而不让大家生气吗?Rust和Go哪个更好?你应该为下一个项目选择哪种语言,为什么?两者在性能、简单性、安全性、功能特性、规模化(scale)和并发性等方面如何比较?它们有什么共同点,又有什么根本区别?让我们通过Rust和Go的友好且公平的比较来找到答案。1. Rust和Go都很棒首先,非常重要的是,Go和Rust都是绝对优秀的编...

2024-01-25 08:03:24 1239 1

原创 依赖Kafka的Go单元测试例解

Kafka[1]是Apache基金会开源的一个分布式事件流处理平台,是Java阵营(最初为Scala)中的一款杀手级应用,其提供的高可靠性、高吞吐量和低延迟的数据传输能力,让其到目前为止依旧是现代企业级应用系统以及云原生应用系统中使用的重要中间件。在日常开发Go程序时,我们经常会遇到一些依赖Kafka的代码[2],如何对这些代码进行测试,尤其是单测是摆在Go开发者前面的一个现实问题!有人说用moc...

2024-01-09 08:00:43 1235

原创 Go语言之父的反思:我们做对了什么,做错了什么

在《2023年Go语言盘点:稳中求新,稳中求变[1]》和《Go测试的20个实用建议[2]》两篇文章中,我都提到过已经退居二线的Go语言之父Rob Pike[3]在Go开源14周年[4]的那天亲自在GopherCon Australia 2023上发表了“What We Got Right, What We Got Wrong”的主题演讲来回顾Go诞生以来的得与失。近期Rob Pike终于将这次演进...

2024-01-08 08:00:30 954

原创 Go测试的20个实用建议

2023年11月初,Go语言技术负责人Russ Cox在GopherCon Australia 2023[1]大会上进行了题为“Go Testing By Example”[2]的演讲:12月初Russ Cox重新录制了该演讲内容的视频,并在个人网站[3]上放了出来。这个演讲视频是关于如何编写好的Go测试的,Russ Cox介绍了20个实用建议,非常值得Go初学者甚至Go资深开发者学习并应用到实践...

2024-01-02 07:50:42 1039

原创 2023年Go语言盘点:稳中求新,稳中求变

时光荏苒,转眼间已经是2023年的最后一天了。《2022年Go语言盘点:泛型落地,无趣很好,稳定为王[1]》仿佛就写在昨天。回首这一年,全球彻底从新冠大流行中得以复苏,Go语言也不例外,最直观的表现就是全球各地的GopherCon技术大会或小型Meetup都纷纷从停办/线上的状态来到了线下,并获得Gopher们的热烈欢迎和踊跃参与,比如下图中的GopherCon[2]、GopherCon UK[3...

2023-12-31 13:39:53 6444 5

原创 Go 1.22新特性前瞻

美国时间2023年12月20日,Go官方宣布Go 1.22rc1发布,开启了为期2个多月的、常规的公测之旅,Go 1.22预计将于2024.2月份正式发布!除了在官网下载Go 1.22rc1版本进行新特性体验之外,我们还可以通过在线的Go Playground选择“Go dev branch”来体验(相比下载安装,在线版本体验会有一些局限):注:关于Go的多种安装方法,《Go语言第一课》专栏有系统...

2023-12-26 08:03:06 1516

BigPIM

BigPIM是一款个人信息管理软件,类似著名的Winpim,目前还有一些功能尚未完成而且还存在许多bug.

2006-03-16

空空如也

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

TA关注的人

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