熊喵君的博客

Thinking will not overcome fear but action will.

微服务中的缓存(一):Cache 使用与优化

如何设计高效且合理的缓存使用策略

0x00 前言 Cache 使用第一法则是:任何 Cache 都需要有自动过期(失效)的机制。 0x01 Cache 属性 分类 Cache 根据使用可分为远程 Cache (Redis/Memcache)和本地 Cache 两种。 过期策略 通常 Cache 的过期淘汰策略有如下几种(以 Redis 和 GCache 为例): Simple:普通缓存策略,随机淘汰 ...

Golang的httputil.ReverseProxy使用(基础篇)

如何构建典型场景下的反向代理(reverse proxy)及排坑

0x00 前言 本文介绍下golang标准库中httputil.ReverseProxy的使用及排坑。 REVERSE PROXY USE CASES Load balancing: a reverse proxy can provide a load balancing solution which will distribute the incoming tr...

gRPC 应用篇之自带组件

0x01 Metadata 应用   gRPC 的 Metadata 机制 提供了一种类似 HTTP-Header 的机制(理解为 RPC 方法的 Header)。它的应用场景是:对于每一次的 RPC 调用中,都可能会有一些有用的数据,而这些数据就可以通过 metadata 来传递。metadata 是以 key-value 的形式存储数据的,其中 key 是 string 类型,而 val...

微服务基础(索引)

我的微服务入门之路

0x00 我理解的微服务 && 架构    简单一句话概括:微服务架构(Microservices architecture) 就是采用一组松耦合服务的方式架构应用 微服务(细粒度)的拆分:每个业务逻辑都被分解为一个微服务,微服务之间通过 REST API 或 RPC 方式通信 微服务架构对外暴露的接口:客户端并不能直接访问后台微...

Redis 应用梳理篇(一)

如何在实战项目中灵活使用 Redis(go-redis) 及排坑

0x00 前言    Redis 是 Linux C 项目中单线程开发模型的典范,其内置了多种高性能的数据结构,如 sds 动态字符串、skiplist 跳表,zset,hashset 等。今天这篇文章是想分享下项目中使用 Redis 的一些技巧,结合 go-redis 这个客户端库。 0x01 Pipeline 加速    在大批量的操作 Redis(写入 / 读取)时,采用 pi...

玩转正则表达式(进阶篇)

贪婪 or 非贪婪,Python 版本

0x00 前言    本文介绍一些正则表达式 (Regular Expression) 一些很有趣(实用)的语法。 0x01 问号的用法(?)    来看看 Wikipedia 中对问号(?)的解释: 非贪心量化(Non-greedy quantifiers):当该字符紧跟在任何一个其他重复修饰符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式...

Golang 的 Channel(应用篇)

如何使用 channel 开发有保证的应用

0x00 前言 channel 是 golang 提供的非常有趣且实用的功能,基于 channel 和 goroutine 一起配合可以实现非常实用的功能。如 生产 - 消费者模型、Pipe 等。 对下面这两句话的理解,从初学到现在,已经有了极为深刻的理解: Do not communicate by sharing memory; instead, share mem...

Raft 协议分析与实战(理论篇)

Raft:一种更容易理解的共识算法

0x00 前言 本文是对于 Raft 协议原理的一些总结。原文 在此 Raft implements consensus by first electing a distinguished leader, then giving the leader complete responsibility for managing the replicated log. The leade...

Golang Slice 那些事

Slice 最佳实践

Golang 是宣扬实用主义的语言,很多时候都把 C 中的最佳实践直接规定成语法了。Slice 就是其一,简单但是及易踩坑 Slice 第一法则:防止共享数据 Golang 里面所有的类型都是值类型,之所以有些用起来像引用,是在于该类型内部是用指针实现的,但是其本质就是包含指针的结构体 0x00 Slice 与 Array Slice 与 Array 的区别在于...

Perl 单行特技(One-Line)

神奇的胶水语言 Perl 文本处理

0x00 前言    在日常处理文本时,Perl 的单行模式非常有用。本文介绍下强大的单行特技。 与 One-Line 相关的参数 -a 自动分隔模式,用空格分隔 $ 并保存在 @F 中,也就是 @F=split //, $ -F 指定 - a 的分隔符 -l 对输入的内容进行自动 chomp,对输出的内容自动加换行符 -n 相当于 while(<>) -...