封面图

Golang逃逸分析

3 月 13 日
阅读 5 分钟
173
逃逸分析,看着一个非常高大上的名词,很多人第一次听到它的感觉会觉得它好厉害的样子,其实说到底它很好理解,并不复杂。之前一直没有写也是有原因的,因为其实在实际中,我真的很难用上它。这次写也是有原因的,因为有人催更了...其实拖了有一段时间了,最近终于忙完了,开始补债了。
封面图

Golang 中 能否将 slice 作为 map 的 key?

3 月 12 日
阅读 1 分钟
268
前言最近好忙,也好久没水 Golang 的文章了,最近来水一些。说回今天的问题,这个问题非常简单,也能被快速验证。Golang 中 能否将 slice 作为 map 的 key?如果你现实中使用过,那么这个问题对于你来说其实意义不大,因为不行就是不行,可以就是可以。如果你完全没这样使用过 map,那么这个问题对于你来说可能就有意义...

封面图

2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用

2023-12-04
阅读 5 分钟
25.8k
一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。PartyRock 真的算是做到了:能让任何人快速的构建一个属于自己的 AI 应用。当然,...
封面图

Nginx 是如何解决惊群效应的?

2023-09-12
阅读 4 分钟
646
前置知识linux 网络处理的基本方法:bind、listen、acceptepoll 的基本方法:epoll_create、epoll_ctl、epoll_wait什么是惊群效应?第一次听到的这个名词的时候觉得很是有趣,不知道是个什么意思,总觉得又是奇怪的中文翻译导致的。复杂的说(来源于网络)TLDR;惊群效应(thundering herd)是指多进程(多线程)在同时阻...
封面图

Redis List 设计与实现

2023-08-29
阅读 7 分钟
536
之前我们已经讨论过 Sorted Set 在 Redis 的实现,学习到了 Redis 在不同数据量的时候使用了不同的结构来优化存储和性能,并且使用两种不同的数据结构的组合来进一步优化。而今天要讨论的 List 也如出一辙。
封面图

Redis 事件机制是如何实现的?

2023-08-28
阅读 7 分钟
433
我们都知道,Redis 是单线程(非严谨),你是否想过,一个线程要如何处理来自各个客户端的各种请求呢?它忙的过来吗?没错,它还真的能忙过来,并且还井井有条。其中多亏了 IO 多路复用,而不仅仅是它,事件机制在其中也是一个不错的设计。
封面图

Redis Sorted Set 实现与应用

2023-08-26
阅读 4 分钟
779
一开始对于 Redis 我们的认识都是一个 key:value 的缓存,当然用的最多的也就是这个作用。但随着 Redis 的不断发展,慢慢的我就发现它有的功能越来越多,它可能在一定程度上帮我们快速简化一些高并发场景下的开发。我觉得它其中最重要的设计是它的 <mark style="background: #FFB86CA6;">数据结构</m...
封面图

Redis 的 set nx 底层怎么实现的?

2023-08-23
阅读 4 分钟
501
我们常常会用 Redis 的 set nx 来实现分布式锁,所以估计提问者想确保你了解原理,从而使用分布式锁的时候更加安心,或者想通过这个问题来引出分布式锁的问题
封面图

Redis 主从复制的机制浅析

2023-08-21
阅读 4 分钟
846
今天继续来看看有关 Redis 的一个问题,主从复制。通常,对于大多数的场景来说,读比写更多,于是对于缓存的水平扩展,其中的一个方式 “主从复制” 就是一个常见的思路。有了主从复制,那么可以扩展出很多从节点来应对大量的读请求。那么问题来了 Redis 的主从复制是如何实现的呢?

图解 Golang 内存分配

2023-08-18
阅读 3 分钟
579
我们知道所有程序运行都需要使用内存,而内存的管理和分配又是非常重要的,它决定了你的程序能不能在有限的资源内跑的更快。可以设想一下,如果你自己来设计的一个内存分配的规则,会遇到什么问题呢?如果你有了一大块内存你要怎么去合理的分配和使用呢?今天我们通过几张图来看看golang中的内存分配是怎样的。
封面图

重构-改善既有代码的设计

2023-08-18
阅读 3 分钟
388
我一直认为代码结构是一个因人而异的事情,很多时候我们其实判断一个代码的好坏往往是通过主观判断,比如同样是实现一个功能,100 行的代码并非一定比 50 行的差;我们没有一个合理的标杆去评判。
封面图

如何使用 xorm 在执行前改写 SQL

2023-06-07
阅读 3 分钟
899
有时候你需要再 SQL 执行之前对于 SQL 语句进行改写,有可能是修改表名字段名,有可能只是添加注释,这些看起来奇怪的操作其实有时候是为了帮助在数据库之前的 proxy 来实现某些功能,比如最常见的分库分表,读写分离,多租户等等。
封面图

Tailscale 构建私有网络访问家中设备

2023-06-07
阅读 3 分钟
917
在此前,我都是通过一些硬件设备来构建一个私有网络,并且能有一个稳定的公网 IP,外部可以通过设备厂商对应的外部资源来构建一个私有网络,随时随地访问家中设备,如:NAS 。但,人生无常,大肠包小肠,最近很不稳定,于是准备了一个后手方案,防止意外。
封面图

Golang 实现与 crypto-js 一致的 AES 简单加解密

2023-05-05
阅读 5 分钟
2.4k
最近一直在折腾 Golang 的 AES 加密解密,最初的一个小需求只是寻求一个简单直接的加密工具而已,但是找着找着发现里面的坑太深了...
封面图

MacOS 下 zsh 执行长时间命令完成后自动提醒

2023-05-04
阅读 2 分钟
1.6k
最近正在使用 Warp 作为常用的终端,有一些细节体验做的真的很不错,无论是命令提示还是补全都很厉害。其中有一个细节我认为对于我来说非常实用,就是长时间执行完成之后的命令提醒。
封面图

如何搭建文章结构——常见技术文章的逻辑框架

2023-04-25
阅读 5 分钟
4.6k
作为一个技术人,我们往往都沉浸于技术的海洋中学习。 在学习技术的过程中,我们不断的在输入知识,同时我们也需要关注输出。 输出是也一种学习的过程,无论是写博客、写文章、写书,还是做分享、做演讲,都是一种输出的过程。有时输出是你坚持学习的动力,有时是你巩固和总结学习的过程,有时是你向别人传递知识的方式...
封面图

技术文章如何取标题、封面、配图

2023-04-25
阅读 4 分钟
4.3k
当我们有了一个好的想法和内容,并且有了合适的写作框架,构建一篇不错的技术文章就不是什么难事了。但是,如果你想让你的文章有更多的阅读量,那么你就需要花一些时间来构建一个好的标题和封面配图。 对于一篇文章,内容肯定是关键,但如果标题无法吸引读者,很多时候,读者就很难点进来看。
封面图

IO多路复用和多线程会影响Redis分布式锁吗?

2023-03-14
阅读 5 分钟
690
前言前置知识Redis 虽然是单线程的,但是它利用了内核的 IO 多路复用,从而能同时监听多个连接Redis6 出现了可以利用多个 IO 线程并发进行的操作那么问题来了,这两者会导致我们的分布式锁的原子性有影响吗?我们知道当我们使用 redis 作为分布式锁的时候,通常会使用 SET key value EX 10 NX 命令来加锁,获得锁的客户...
封面图

Golang 单元测试 - 其他小技

2023-03-11
阅读 3 分钟
1.2k
当我们在编写单元测试的时候,有时我们非常想 mock 掉其中一个方法,但是这个方法又没有接口去定义和实现(无法用 github.com/golang/mock 来实现),这时就可以尝试看看我们的打桩黑科技。
封面图

Golang 单元测试 - 接口层

2023-03-10
阅读 6 分钟
1.1k
由于使用的 HTTP 框架不同,单元测试的实现方式则不同。 既可以通过程序来模拟 HTTP 请求,也可以通过真实的 HTTP 请求来测试,通过借助外部的一些测试工具来实现。
封面图

Golang 单元测试 - 逻辑层

2023-03-09
阅读 6 分钟
1.3k
前面我们完成了最麻烦的数据层的单元测试,今天我们来看看单元测试中最容易做的一层,数据逻辑层,也就是我们通常说的 service 或者 biz 等,是描述具体业务逻辑的地方,这一层包含我们业务最重要的逻辑。
封面图

Golang 单元测试 - 数据层

2023-03-07
阅读 6 分钟
1.7k
数据层,就是我们常常说的 repo/dao,其功能就是和数据库、缓存或者其他数据源打交道。它需要从数据源中获取数据,并返回给上一层。在这一层通常没有复杂业务的逻辑,所以最重要的就是测试各个数据字段的编写是否正确,以及 SQL 等查询条件是否正常能被筛选。
封面图

Golang 单元测试 - 前言

2023-03-06
阅读 2 分钟
1.1k
在测试上难以自动化的软件,很难成为好的软件。 -- 《Google软件测试之道》对于单元测试的想法对于单元测试,开发者总是有着非常矛盾的思想。单元测试很好,它能帮助我们找到很多隐藏的bug但写单元测试,比搬砖还累,我真的不想写~没错,单元确实是一个磨炼意志的东西,如果不是在大公司,人力也不够,而由于单元测试往...
封面图

在 Golang 中依赖注入是 解药 还是 毒药?

2022-11-19
阅读 8 分钟
3.1k
前言看到标题,有人可能会疑惑,其实原因是当我在网络上搜索有关 golang 依赖注入、 wire 这些关键词的时候,有一些评论是下面这样的:有人认为 依赖注入 不应该出现在 golang 中,是毒药而也有人认为 依赖注入 是非常好的设计思路,是依赖管理的解药在经过不少项目的磨砺,笔者也终于对依赖注入有了新的认识,但这几个...