tech
linux:一台服务器最大能支持多少条 TCP 连接
远远不止65535
tech
远远不止65535
tech
65535 is a widespread misconception
tech
最近想要系统的学习一下基础设施方面的知识,所以准备搭建一个学习环境,我没有多余的机器使用,只有一个MacBook Pro 2021 ,所以选择在笔记本上使用 Docker 搭建一套环境,目前看来第一步还是顺利的。 安装 GitLab Mac 的M1芯片使用的是ARM架构,所以我们去寻找 ARM架构的镜像, 我是用的是yrzr/gitlab-ce-arm64v8:latest 首先需要创建 gitlab-ce 的三个工作目录 etc、 log、 opt ,不然会报错 。 将volumes里面的配置修改成你的工作目录就可以了。这里暴露了两个端口9922、9980 因为是在本地使用,所以就没开放https的443 端口,后面也不准备使用https。 docker-compose.yaml version: "3.8" services: gitlab-ce: image: yrzr/gitlab-
tech
First Steps to Mastering the CI/CD
tech
Introduction The previous article discussed two lock-free programming strategies: eliminating shared data and avoiding concurrent access to the same data through careful design. While achieving lock-free programming is ambitious, it could be more practical. Generally, when discussing lock-free techniques, the aim is to avoid locks, and using
tech
Understanding the Essence of Lock-Free Programming
tech
对于无锁编程来讲,无锁只是一个表象,编程者设法组织 data+processing,重点在于如何消除 dataracing。而消除 dataracing 而言,传统的并发编程逻辑是采用关键区、排他性锁、读写锁等方式来保护 data 不会因为 processing 而导致错误读或错误写,那么对于无锁编程来说,则是通过消除 data 的共享性,或者消除并发操作 data 等方式来解决问题。 所以最典型的无锁编程技法包含两个技巧: 1. structure 2. bumper loop 其他的方法都是相似思路的具体衍生。 这里的“其他的方法”,是指完全不使用锁定或 CAS 的算法设计方案。本文中讨论的是如何设计数据结构及其处理器(算法)来防止加锁,甚至于连 CAS 也去除。 至于在共享的data上强行消除竞争读写问题的其他无锁方案,例如RingBuffer之类的工具类库,则是完全依赖于具体的 data 实体并在具体的 CPU 上进行设计,基本上是一种很受限的方法,
tech
Will it become the standard library for go maps?
tech
Go 可能会引入 SwissTable 作为 map 的标准实现,以提高性能和内存效率!🚀 #Golang #SwissTable #编程
tech
Avoid memory leaks in Go by closing files and HTTP responses, managing goroutines properly, and using `defer` wisely. #GoLang #MemoryManagement
tech
限流机制在软件架构中至关重要,能够防止系统过载。文章分析了流量计数器、滑动窗口、漏桶和令牌桶四种限流算法,并探讨其优缺点。对于微服务架构,分布式限流和基于优先级的额度方案提升了用户体验。
tech
Exploring Rate Limiting Mechanisms to Maintain System Stability