首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
学习
订阅
程序员精选
更多收藏集
微信扫码分享
微信
新浪微博
QQ
40篇文章 · 0订阅
详解defer实现机制(附上三道面试题)
上面只是一个简单的应用,defer还有一些特性,如果你不知道,使用起来可能会踩到一些坑,尤其是跟带命名的返回参数一起使用时。下面我们我先来带大家踩踩坑。 看到答案,你是不是产生了疑问?这就对了,我最开始学golang时也有这个疑问,这个跟栈一样,即"先进后出"特性,越后面的de…
详解并发编程基础之原子操作(atomic包)
原子(atomic)本意是"不能被进一步分割的最小粒子",而原子操作(atomic operation)意为"不可中断的一个或一系列操作"。其实用大白话说出来就是让多个线程对同一块内存的操作是串行的,不会因为并发操作把内存写的不符合预期。我们来看这样一个例子: 假设在操作一的时…
在 k8s 中通过 Ingress 配置域名访问
以下是官网搬用的关于 Ingress 的一幅图,用以描述 Ingress 的作用。如果你对它一无所知,你可以把它理解为传统的 nginx,用以配置自己网站的域名使之能够通过外网访问。 我们使用 helm 选择官方的 stable/nginx-ingress chart 进行部署…
深度解密Go语言之sync.pool
最近在工作中碰到了 GC 的问题:项目中大量重复地创建许多对象,造成 GC 的工作量巨大,CPU 频繁掉底。准备使用 sync.Pool 来缓存对象,减轻 GC 的消耗。为了用起来更顺畅,我特地研究了一番,形成此文。本文从使用到源码解析,循序渐进,一一道来。 sync.Pool…
Golang依赖注入框架wire全攻略
在前一阵介绍单元测试的系列文章中,曾经简单介绍过wire依赖注入框架。但当时的wire还处于alpha阶段,不过最近wire已经发布了首个beta版,API发生了一些变化,同时也承诺除非万不得已,将不会破坏API的兼容性。在前文中,介绍了一些wire的基本概况,本篇就不再重复,…
九种跨域方式实现原理(完整版)
前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容。 本文完整的源代码请猛戳github博客,纸上得来终觉浅,建议大家动手敲敲代码。 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSR…
Redis zset实现原理
skiplist本质上是并行的有序链表,但它克服了有序链表插入和查找性能不高的问题。它的插入和查询的时间复杂度都是O(logN) 普通有序链表的插入需要一个一个向前查找是否可以插入,所以时间复杂度为O(N),比如下面这个链表插入23,就需要一直查找到22和26之间。 以此类推.…
如何设计一个抢红包系统
大家好,我是小 P,本篇是分享如何设计一个抢红包系统,希望对大家有所帮助。主要展示抢红包系统的设计,红包算法不是重点,所以没有二倍均值法之类的实现。下文描述的的方案已经进行了实现,代码在 github,欢迎讨论。 常见的红包系统,由用户指定金额、红包总数来完成红包的创建,然后通…
GO实现雪花算法
12位的计数序列号,自增。同一节点,同一毫秒最多产生4096个序号 首先,先回顾下时间戳的概念:时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。 雪花算法中,定义时间戳是41位,且是毫秒级。先算一个值: 2^41 = 219902325…
面试问什么是 Raft 算法
Raft是一个用于管理日志一致性的协议。它将分布式一致性分解为多个子问题:Leader选举(Leader election)、日志复制(Log replication)、安全性(Safety)、日志压缩(Log compaction)等。同时,Raft算法使用了更强的假设来减少…