SEARCH KEYWORD -- NIL EXPLANATION
New function signal.NotifyContext in GoLang 1.16
os/signal package in GoLang may not be frequently used but it provides some good features like Shutdown() which can be used to gracefully shutdown a running HTTP server. func (srv *Server) Shutdown(ctx context.Context) error With this function, there is no need to use third party library to gracefully shutdown HTTP server. How is it being used? package main import ( "context" "fmt" "net/http" "os" "os/signal" "time" ) func main() { server := http.Server{ Addr: ":8080", } http.Handl...
GOLANG,NOTIFYCONTEXT,GRACEFUL SHUTDOWN 2021-06-19 01:07:10
Demo on creating worker pool in GoLang
A worker pool is a pool where a specified number of workers(usually goroutine) created and run to pick up tasks. This can allow multiple tasks to be ran at the same time while keeping the number of workers a fixed number to avoid overuse of resource in the program. There are usually two approaches of creating worker pool. One is with fixed number of workers pre-created One is creating worker when needed until the max number of workers created In this post, we will cover the demonstration of cr...
WORKER POOL,GOLANG,GOROUTINE 2021-01-24 05:04:00
Ensuring Go Interface Implementation: A Quick Guide
Introduction Go's simplicity and power shine in its interface system, offering a clean way to define contracts between types. However, when it comes to checking whether a struct satisfies an interface, Go's static typing philosophy means there isn't a direct runtime check. In this concise guide, we'll explore practical methods, including some lesser-known tricks, to verify whether a struct implements an interface. Method 1: Type Assertion and a Dummy Method package main import "fmt" type MyInt...
INTERFACE,GOLANG,IMPLEMENTS 2023-11-25 21:36:01
Frequently used explanations of programmers
As a programmer, I think many of us have something like these below in our daily work. From these explanations, we may get to know different programmer's characteristics. Below are something we may say frequently. Don't be too serious about them.It's working on my computerI never heard about this beforeIt was working normally yesterdayOk, this is a bugHow is it possible?This must be the problem of the machine or the environmentDo you update your operating system?Must be the problems of client...
Explanation,Programmer 2012-04-25 08:07:43
A mini post on GoLang context
In a GoLang web server, every request coming in will be handled by a goroutine. In the request handler, the logic may also need to create new goroutine to handle other tasks like RPC call. When the request is processed and response is returned, these goroutines created need to be exited so that no goroutine leak should happen. package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/echo", func(w http.ResponseWriter, r *http.Request) { fmt.Println(&r) w.Write(...
Top 10 Go Coding Traps and Tips
Go is currently the most common programming language in cloud development. Though I use it very much in my work, I am still repeating certain mistakes. This article is more a record of these errors, figuring out the causes and solutions so that people who read this article will save themselves time when coming across the same problems. Let’s cut through to the tips. Don’t rely on index var in the for loop The most common mistake we make is that we often create goroutine&nbs...
TIPS,GOLANG,NIL INTERFACE 2021-07-03 23:45:51
Use rsync to delete mass files quickly in Linux
Yesterday I encountered an issue to delete many log files in my Linux workstation, there were around 100,000 files to be deleted. These are log files and they grow very fast, and we need to delete them frequently. Usually we would use rm -rf * to delete these files, but we may need to wait for a relative long time if there are too many files. So we must adopt some unusual way. Fortunately, we can use rsync to delete mass files in one shot. 1. Install rsync yum install rsync 2. Create a new empty...
rsync,delete file, demo 2012-11-13 10:44:50
Understanding PGO in GoLang 1.20
Background The Go 1.20 version was officially released in February 2023, it introduced the PGO(Profile Guided Optimization) mechanism. The basic principle of PGO can be divided into the following two steps: First, profiling is performed on the program to collect data about the program's runtime and generate a profiling file. When compiling the program, enable the PGO option, and the compiler will optimize the program's performance based on the content in the .pgo file. When compiling a program...
Fab CEO: Why we choose Tencent in China?
Today one important news is that Fab completes its D round fund raising with 150 million US dollars. Regarding this round of fund raising, Fab CEO Jason Goldberg explained : "If Fab wants to do business in US only, then it's not necessary to raise so much money.". Also from the investment of Tencent and Itochu from Japan, China and Japan will be Fab's new market of expansion. Why does Fab choose to cooperate with Tencent to expand Chinese market?(There was news that Alibaba was also contacting F...
A journey to investigate a goroutine leakage case
In Go, creating goroutines is straightforward, but improper usage may result in a large number of goroutines unable to terminate, leading to resource leakage and memory leaks over time. The key to avoiding goroutine leaks is to manage the lifecycle of goroutines properly. By exporting runtime metrics and utilizing pprof, one can detect and resolve goroutine leakage issues. This post will go through one real case encountered by the author. The author maintains a service that connects to a targe...
TIMEOUT,SSH,GUIDE,DEBUG,LEAK,GOROUTINE,PPROF,GOLANG 2024-03-16 11:00:23
RECENT
- How Artificial Intelligence Is Helping Fight Environmental Challenges
- How to Deal with Accusations of Negligence as a Business
- Google's Business Operations in China Amid Antitrust Scrutiny
- Deploying DeepSeek-R1 Locally with a Custom RAG Knowledge Data Base
- Balancing Convenience and Security in the Digital World
- My AI Learning Journey: Exploring the Future of Technology
- Power Grid Simulation System 02 : FDI Power Outage Attack Case Study
- Be Careful When Using Cursor to Help Build Application
- Calculating Token Count for Claude API Using Go: A Step-by-Step Guide
- Understanding Cursor and WindSurf's Code Indexing Logic
- more>>