【4-2 Golang】常用标准库—net/http.client

  Go语言中,当我们需要访问第三方服务时,通常基于http.Client完成,顾名思义其代表HTTP客户端。http.Client的使用相对比较简单,不过底层有一些细节还是要多注意,包括长连接(连接池问题),可能偶现的reset情况等等。本篇文章主要介绍http.Client的基本使用方式,实现原理,以及一些注意事项。 ## http.Client 概述   Go语言中想发起一个HTTP请求真的是非常简单,net/http包封装了非常好用的函...阅读全文

Go语言中文网 2022-10-17 10:38:52 tomato01

手写编程语言-如何为 GScript 编写标准库

![](https://tva1.sinaimg.cn/large/008vxvgGly1h75zxqn8bej30gq074aa9.jpg) # 版本更新 最近 `GScript` 更新了 `v0.0.11` 版本,重点更新了: - `Docker` 运行环境 - 新增了 byte 原始类型 - 新增了一些字符串标准库 `Strings/StringBuilder` - 数组切片语法:`int[] b = a[1: len(a)];` > 具体更新内容请看下文。 ...阅读全文

Go语言中文网 2022-10-17 08:12:28 crossoverJie

Goravel V1 正式版发布,让 Go 开发更简单、高效!

历时近一年时间,14个版本的更新,完成 13个功能模块,Goravel 终于到达了第一个里程碑:**V1 正式版发布**。🚀 🚀 Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。 感谢 [Laravel](https://laravel.com) 巨人的肩膀,让使用 Goravel 进行 Golang 开发时也拥有了丝滑的体验。让广大 Phper 不用再深陷另一个语言框架的学习,就能很好的完成一...阅读全文

Go语言中文网 2022-10-14 21:24:52 hwbrzzl

云原生一体化运维助力百丽国际夯实数字化基石

​​百丽国际是一家大型时尚及运动产业集团,业务涵盖鞋类、运动和服饰三大业务,旗下拥有BELLE、STACCATO、TATA等十多个鞋履品牌,服饰业务经营initial、MOUSSY、SLY等服饰品牌,是十余个全球知名运动品牌的在华关键零售伙伴。01 建设:数字化转型路径2017年启动全面数字化转型以来,百丽国际基于强大的零售网络和敏捷的供应链能力,以大数据赋能产业链,融合线上线下全渠道,来开展数字化业务。伴随着百丽业务的高速发展,一方面带来业务系统和基础资源不断增加,另外一方面IT新技术/新架构...阅读全文

Go语言中文网 2022-10-14 17:32:27 EASYOPS_youwei

【4-1 Golang】常用标准库—net/http.server

  Go语言创建HTTP服务还是非常方便的,基于http.Server几行代码就能实现,本篇文章主要介绍http.Server的基本使用方式以及HTTP请求处理流程。当然,目前很多web服务都基于gin框架实现,所以我们也会简单介绍下gin框架的一些使用套路。 ## http.Server 概述   基于http.Server只需要短短几行代码就能创建一个HTTP服务,最简单的只需要配置好监听地址,以及请求处理handler就可以了,如下面程序...阅读全文

Go语言中文网 2022-10-14 09:48:18 tomato01

【3-4 Golang】GC—调度与调优

  关于垃圾回收的基本知识已经介绍的差不多了,只是要知道垃圾回收过程是需要耗费CPU时间的,那就有可能会影响到用户协程的调度,所以在某些场景需要垃圾回收相关调优。本篇文章主要介绍垃圾回收的触发时机,以及垃圾回收器的几种调度模式,只有了解这些才能知道如何调优;最后结合常用的缓存框架bigcache,分析如何减少垃圾回收的压力。 ## 触发时机   什么时候触发垃圾回收呢?首先内存使用增长一定比例时有可能会触发(总不能任由内存增长吧),还有其他方式...阅读全文

Go语言中文网 2022-10-13 09:48:40 tomato01

【3-3 Golang】GC—标记 清理

  上一篇文章我们主要介绍了三色标记法与写屏障技术,基于这些基础,本篇文章将重点介绍垃圾回收的整个处理流程(开启-标记-标记结束-清理),包括标记协程主流程,经典的startTheworld/stopTheworld问题,辅助标记是什么,清理过程等等。 ## 垃圾回收概述   Go语言将垃圾回收分为三个阶段:标记(三色标记扫描),标记终止(此时业务逻辑暂停,会再次扫描),未启动(可能也会执行清理工作);定义如下: ``` _GCoff ...阅读全文

Go语言中文网 2022-10-12 10:05:58 tomato01

【3-2 Golang】GC—三色标记与写屏障

# 3-2 垃圾回收(一)   垃圾回收就是找出不再使用的对象并回收这些内存。如何找出呢?这就不得不说一下三色标记法,这是Go语言垃圾回收的基础。本篇文章主要介绍三色标记法,包括三色标记算法,写屏障技术;以及Go语言是如何实现三色标记和写屏障的。 ## 三色标记   想想写C程序时,我们需要自申请内存(malloc),使用完毕后还需要自己释放内存(free),如果不释放可是会造成内存泄露的。写Go程序貌似不需要关注内存的释放,因为垃圾回收...阅读全文

Go语言中文网 2022-10-11 09:45:15 tomato01

【3-1 Golang】GC—内存管理

  Go语言为我们做了很多,创建对象不再需要我们手动申请内存,也不用考虑对象使用完后释放内存,这些对开发者来说都是透明的;但是作为一名Go开发者,内存管理和垃圾回收还是有必要深入研究的。毕竟,内存与CPU是程序高效运行的基础。 ## 虚拟内存   Linux为每个进程维护一个单独的虚拟内存空间(组织为一些区域/段的集合,如代码段,数据段,堆,共享库段,以及用户栈都是不同的区域),如下图所示: ![3-1-1.png](https://st...阅读全文

Go语言中文网 2022-10-10 10:13:57 tomato01

Go实战项目之分页加载【开源十年出品】

一个深漂近10年的程序员立志用未来10年时间去维护一个项目,这个项目的功能未定,用到什么就做什么,遇到什么就写什么。其主要目的有二,一为加深自己的技术深度,二为其他学习者提供参考。 感兴趣的可以跟着我一起做这个项目,不收费、不套路、人间自有真情在。 备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。 地址:https://github.com/kaiyuan10nian/kaiyuan10nian 感兴趣的可以点个...阅读全文

Go语言中文网 2022-10-09 20:59:42 kaiyuan10nian

使用OpenTelemetry进行端到端跟踪

​​作者/ Nicolas Fränkel来源/翻译外网无论您是否实现微服务,您的系统很可能由多个组件组成。最直接的系统可能由反向代理、应用程序和数据库组成。在这种情况下,监控不仅是一个好主意,而且是一项要求。请求可能流经的组件数量越多,要求就越强。然而,监控只是旅程的开始。当请求开始集体失败时,您需要一个跨所有组件的聚合视图。它被称为追踪,它是可观察性的支柱之一。另外两个是指标和日志。在这篇文章中,我将只关注跟踪,并描述如何开始你的可观察性之旅。W3C 跟踪上下文规范跟踪解决方案应提供跨异构技...阅读全文

Go语言中文网 2022-10-09 17:41:41 EASYOPS_youwei

【2-9 Golang】Go并发编程—并发编程

  Go语言为我们提供了基于消息传递CSP并发模型,基于管道 + 协程可以很方便的编写高并发服务,但是在某些场景下,或多或少还是需要使用到锁,本篇文章主要介绍除了管道chan之外的常见并发编程模式。 ## 原子操作 atomic   现代计算机都是多核CPU,每个CPU还有自己的高速缓存,主存中部分数据会被缓存在高速缓存中,CPU访问数据时会先从高速缓存中查找。那假如同一块内存地址同时被缓存在核0与核1的L2级高速缓存呢?此时如果核0与核1同时...阅读全文

Go语言中文网 2022-10-09 09:53:29 tomato01

用自己的编程语言实现了一个网站(增强版)

![gscript08-min.jpg](http://tva1.sinaimg.cn/large/72fbb941ly1h6wtyytk80j20zk0hsq3d.jpg) # 前言 前段时间在[《用自己的编程语言实现了一个网站》](https://crossoverjie.top/2022/09/14/gscript/gscript05-write-site/)用介绍了用 `GScript` 写的一个简单“网站”,虽然是打上引号的;页面长这样: ![GScript-in...阅读全文

Go语言中文网 2022-10-09 08:08:58 crossoverJie

优维低代码:Context 上下文

优维低代码:Context 上下文原创2022-10-08 17:19·优维科技​​导语优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。连载第二十三期《高级指引:Context 上下文》▽有时候我们需要在多个构件之间交换数据。在 React 中,我们通常使用 Context 来解决这样的问题。在 Storyboard 中我们也可以使用类似的机制...阅读全文

Go语言中文网 2022-10-08 17:31:08 EASYOPS_youwei

【2-8 Golang】Go并发编程—panic defer recover

  在Go程序中defer特别常见,通常用来执行一些清理工作,需要注意defer先入后出特性(先声明的后执行);panic意味着一些出乎意料的错误发生,Go程序在panic异常退出的时候,会打印运行时栈方便排查问题;panic的错误可以被recover捕获,从而避免Go程序的退出,但是要注意recover只能在defer中,其他任何地方声明的recover是不能捕获panic的。 ## panic/defer/recover基本使用   Go程...阅读全文

Go语言中文网 2022-10-08 09:53:37 tomato01

【2-7 Golang】Go并发编程—系统调用

  还记得GMP协程调度模型吗?M是线程,G是协程,P是逻辑处理器,线程M只有绑定P之后才能调度并执行协程G。那如果用户协程中执行了系统调用呢?我们都知道执行系统调用会发生用户态到内核态切换,而且系统调用也有可能会阻塞线程M。M阻塞了还怎么调度协程呢?万一所有的线程M都因系统调用阻塞了呢?阻塞期间谁来调度并执行协程呢?还是说就这么阻塞着呢? ## 封装系统调用   在讲解系统调用实现原理之前,先回顾下GMP协程调度模型,如下图所示。一般P的数目...阅读全文

Go语言中文网 2022-09-30 10:00:24 tomato01

UGeek大咖说 | 顺丰科技:全链路压测中的可观测性实践

​​导语UGeek大咖说是优维科技为技术爱好者研讨云原生技术演进趋势而创办的系列活动,邀请一线互联网大厂的核心骨干主讲,分享原厂实践。本年度主题为可观测,我们希望通过一场场有趣、有料、有深度的活动,让运维圈的小伙伴聚集在一起,深度交流与学习。一月一期,不见不散!9月27日,UGeek大咖说第九期圆满结束,此次活动特邀到顺丰科技应用架构高级工程师——李卓做客直播间,为我们讲解全链路压测中的可观测性实践。李老师为我们分享了全链路压测在大型复杂系统中的落地实践案例,也让我们从多个角度,更深地了解到可观...阅读全文

Go语言中文网 2022-09-29 17:52:06 EASYOPS_youwei

【2-6 Golang】Go并发编程—定时器timer

  定时器使得我们可以延迟若干时间执行某项任务,或者以某一时间周期性执行某项任务,Linux系统本身也具备定时器能力,Go语言是定时器是基于系统调用实现的吗?另外,Go语言不是多协程吗,定时器触发时,是在哪个协程执行任务的呢?创建任务的协程吗? ## 基本操作   Go语言time包提供了时间/定时器相关的API,如获取当前系统时间(可以到达纳秒级别),协程休眠指定时间,延迟指定时间执行某项任务,以某一时间周期性执行某项任务等等,操作如下: ...阅读全文

Go语言中文网 2022-09-29 09:55:54 tomato01