tech
Go 1.24: New STD-lib synctest
Go 1.24 introduces `testing/synctest`, enhancing concurrent testing by using virtual clocks for faster, reliable results. #Golang #Testing
tech
Go 1.24 introduces `testing/synctest`, enhancing concurrent testing by using virtual clocks for faster, reliable results. #Golang #Testing
tech
Go 1.24 引入了 `testing/synctest`,利用虚拟时钟简化了并发代码测试,从而实现更快、更可靠的测试!🚀 #GoLang #测试
tech
“安全是我们的首要任务”这种说法过于简单,未能平衡安全与用户体验。安全是无止境的,需明确其实际意义与优先级。
tech
Previously, I wrote an article about the runtime.SetFinalizer that is used to be called when an object is cleaned up, but some issues with this function cause it to be used less frequently. https://github.com/golang/go/issues/67535 * SetFinalizer must always refer to the first word of
tech
Golang 1.24 introduces `runtime.AddCleanup`, improving upon `runtime.SetFinalizer` by allowing multiple cleanup functions and better handling of object references, thus preventing memory leaks and enabling timely cleanup. #Golang #Go1_24
tech
Go 1.24 introduces the `weak` package for managing memory more flexibly with weak pointers, preventing GC issues. Ideal for caching! 💻✨
tech
Weak 是什么? Golang 在1.24 中带来了一个新的std-lib weak。 可以为*T 创建一个安全的引用,但是不会阻止 *T 被GC 回收。 Package weak provides ways to safely reference memory weakly, that is, without preventing its reclamation. 跟 OS.ROOT 一样, weak 也是一个在其他语言中存在很久的功能,比如: * Java 的 WeakReference 和 SoftReference 是经典实现,主要用于缓存和对象池。它们能够在 JVM 检测到内存不足时自动回收。 * Python 提供了 weakref
tech
Golang 1.24 introduces `os.Root`, enhancing file safety by limiting access to specified directories. This prevents directory traversal vulnerabilities. #GoLang #osRoot
tech
Golang 1.24 引入了 `os.Root`,通过防止目录遍历攻击来增强文件操作的安全性。它确保操作仅限于指定目录。#Golang #安全性 #osRoot
tech
VPNs face limitations in remote work security. Explore 9 alternative technologies like Zero Trust, SASE, & IAM for better protection! 🛡️ #Cybersecurity #RemoteWork
tech
Understanding BigCache and Its Optimization Strategies
tech
bigcache是一个高性能的内存缓存库,专为需要高并发访问和低延迟响应的应用场景设计。本文将深入探讨 BigCache 的性能优化手段,包括分片机制、高效哈希算法、读写锁的使用等,并引用相关源码进行详细说明。 分段加锁 从使用者的角度来看cache就像一个大的hashtable,可以存储k/v 格式的数据。 那么,是不是可以使用一个map[string][]byte + sync.RWMutex 实现满足需求的cache呢? 如果性能要求不高,的确可以这么做。 sync.RWMutex虽然对读写进行了优化,但是对于并发的读,最终还是把写变成了串行,一旦写的并发量大的时候,即使写不同的key, 对应的goroutine也会block,只允许一个写执行,这是一个瓶颈,并且不可控。 bigcache 参考了 java ConcurrentMap 的实现方式,将一个大hashtable 分成多个小的 shard,每个分片一把锁,很多大并发场景下为了减小并发的压力都会采用这种方法,比如MongoDB的sharding等。Golang也有一个第三方的 ConcurrentMap