编程语言:Go
Browser-side PDF processing with Go and WebAssembly
This page demonstrates how to use WebAssembly (compiled from a tool called pdfcpu with Go v1.12) to extract the first page of a PDF file, done completely in client-side. Main idea is adding filesystem emulation support in Browser environment. To skip the prose below and go straight to the code, see the Github repo.
这可能是世界上最简单的用 Go 来写 WebAssembly 的教程了
我们的目标是给猫 ? 做一个简单的小游戏:做一个小红点在手机上不停的移动,整个过程还有 HiFi 音乐 ?还有震动。整个项目我们会用 Golang (Go)这门语言来实现,包括 DOM 操作、逻辑还有相关的状态。
通过Mock玩转Golang单元测试
如果项目中没有单元测试,对于刚刚开始或者说是规模还小的项目来说,效率可能还不错。但是一旦项目变得复杂起来,每次新增功能或对旧功能的改动都要重新手动测试一遍所有场景,费时费力,而且还有可能因为疏忽导致漏掉一些覆盖不到的点。在这个基础上,单元测试的好处就显现了出来。在单元测试覆盖比较全面的项目中进行开发,不需要耗费大量的时间去手动测试;并且在重构的时候也可以很轻松的验证代码逻辑的正确性。
而在日常的开发中,想编写一个好的单元测试也是不容易的,因为一般我们的代码不是单纯的流程控制,有着统一规范的输入输出,大多数都是依赖着外部系统,例如:数据库,网络,第三方接口等等。对于这种情况,我们很难单纯通过Golang标准库去编写好的单元测试,这时候我们就需要借助第三方的Mock工具来帮助我们完成单元测试。
石墨文档基于K8S的Go微服务实践(上篇)
微服务生命周期6个阶段:开发、测试、部署、启动、调用、治理。我们如何运行在K8S上。
How Discord Resizes 150 Million Images Every Day with Go and C++
Despite being a voice and text chat app, Discord sees over a hundred million images passing through its tubes every day. While we wish it was as simple as sending them out across the tubes to your friends, delivering these images creates some pretty large technical problems. Linking directly to images would leak users’ IP addresses to image hosts, and large images use up lots of bandwidth. To circumvent these problems, Discord needs an intermediary service to fetch images on behalf of users and then resize them to reduce bandwidth usage.
Dubbo-go在之家云ASF中落地的探索和实践
Dubbo-go在之家云ASF中落地的探索和实践。
Go程序内存泄露问题快速定位
前几天有同学反馈了cgo内存泄露问题,自己也针对这个问题探索了一番,算是为以后解决类似问题提前攒点经验吧。也趁机整理了一下go开发过程中内存泄露问题的一些常用排查方法,也希望对新接触go的同学有所帮助。
Finding a memory leak in a Go app with cgo bindings
In this post, I’d like to share a story how my team was able to find and fix a memory leak in a Go app that’s been using a leaking C extension through cgo.
Golang 监控 HTTPS 证书过期时间
由于近几年 Let’s Encrypt 的兴起以及 HTTPS 的普及,个人用户终于可以免费 “绿” 一把了;但是 Let’s Encrypt ACME 申请的证书目前只有 3 个月,过期就要更换,最尴尬的是某些比较重要的东西(比如扶墙服务)证书一旦过期会耽误大事;而不同环境下自动更换证书工具也不一定靠谱,极端时候还是需要自己手动更换,所以催生了我想写个证书过期时间检测的小玩具的想法。
高德渲染网关Go语言重构实践
高德启动Go业务建设已经有段时间了,主要包含Go应用落地,Go中间件建设,云原生三个部分。经过持续的发力,在这些方面取得了不错的进展。高德Go业务落地过程是如何实现的,遇到过哪些问题,如何解决?
短视频go研发框架实践
hulk是短视频研发部研发的基于GDP2(Go Develop Platform )的go服务开发框架。它是⼀款⾯向业务的Web开发框架,提供了诸多开箱即⽤的组件和功能,可以⽤来快速开发Web服务。同时,依托于hulk框架并结合⼚内/业界优秀的开发实践,初步构建了⼀个符合业务应⽤场景的go⽣态体系。
Importing Protobuf with Go Modules
Protocol buffers and gRPC are established standards for building modern web services. Go modules are now the default way of versioning packages in Go projects. So how can you import and reuse existing .proto definitions from your versioned dependencies while using Go modules?
如何避免 Go 命令行执行产生“孤儿”进程?
在 Go 程序当中,如果我们要执行命令时,通常会使用 exec.Command ,也比较好用,通常状况下,可以达到我们的目的,如果我们逻辑当中,需要终止这个进程,则可以快速使用 cmd.Process.Kill() 方法来结束进程。但当我们要执行的命令会启动其他子进程来操作的时候,会发生什么情况?
Go 调用 Java 方案和性能优化分享
一个基于 Golang 编写的日志收集和清洗的应用需要支持一些基于 JVM 的算子。
一文说尽Golang单元测试实战的那些事儿
单元测试,通常是单独测试一个方法、类或函数,让开发者确信自己的代码在按预期运行,为确保代码可以测试且测试易于维护。腾讯后台开发工程师张力结合了公司级漏洞扫描系统洞犀在DevOps上探索的经验,以Golang为例,列举了编写单元测试需要的工具和方法,然后针对写单测遇到的各种依赖问题,详细介绍了通过Mock的方式解决各种常用依赖,方便读者在写go语言UT的时候,遇到依赖问题,能够快速找到解决方案。最后再和大家探讨一下关于单元测试上的一些思考。
Go 语言中的零拷贝优化
相信那些曾经使用 Go 写过 proxy server 的同学应该对 io.Copy()/io.CopyN()/io.CopyBuffer()/io.ReaderFrom 等接口和方法不陌生,它们是使用 Go 操作各类 I/O 进行数据传输经常需要使用到的 API,其中基于 TCP 协议的 socket 在使用上述接口和方法进行数据传输时利用到了 Linux 的零拷贝技术 sendfile 和 splice。
我前段时间为 Go 语言内部的 Linux splice 零拷贝技术做了一点优化:为 splice 系统调用实现了一个 pipe pool,复用管道,减少频繁创建和销毁 pipe buffers 所带来的系统开销,理论上来说能够大幅提升 Go 的 io 标准库中基于 splice 零拷贝实现的 API 的性能。因此,我想从这个优化工作出发,分享一些我个人对多线程编程中的一些不成熟的优化思路。