6 hzzyu

尚未进行身份认证

熟悉php,c,go,python,喜欢技术,乐于交友

等级
TA的排名 5w+

Redis分布式锁的正确实现方式

前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇文章将详细介绍如何正确地实现Redis分布式锁。本博客使用第三方开源组件Jedis实现Redis客户端,...

2020-01-22 11:49:23

Go语言参数传递是传值还是传引用

对于了解一门语言来说,会关心我们在函数调用的时候,参数到底是传的值,还是引用?其实对于传值和传引用,是一个比较古老的话题,做研发的都有这个概念,但是可能不是非常清楚。对于我们做Go语言开发的来说,也想知道到底是什么传递。那么我们先来看看什么是值传递,什么是引用传递。什么是传值(值传递)传值的意思是:函数传递的总是原来这个东西的一个副本,一副拷贝。比如我们传递一个int类型的参数,传...

2020-01-21 15:55:12

想系统学习GO语言(Golang),能推荐几本靠谱的书吗?

学习任何一门语言,都要学习好基础,把基础打牢,那些框架对你来说都是工具,你自己的基础好,懂得了他们的原理,自己就可以创造更优秀的框架。基础推荐官方文档,没有什么比这个更清晰了。官方文档可以看这个中文的,比较快一些 https://go-zh.org/doc/其次参考这个Go指南,练习一遍 https://tour.go-zh.org/welcome/1现在对Go语言应该有了一个全面的认识,然后你再...

2020-01-21 11:07:21

面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)

Redis 面试题1、什么是 Redis?.2、Redis 的数据类型?3、使用 Redis 有哪些好处?4、Redis 相比 Memcached 有哪些优势?5、Memcache 与 Redis 的区别都有哪些?6、Redis 是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis 的持久化机制是什么?各自的优缺点?9、Redis 常见性能...

2019-12-10 11:02:33

响应速度不给力?解锁正确缓存姿势

1. 常见概念在合理应用缓存前,需要了解缓存领域里相关的几个常用术语:1)缓存命中:表示数据能够从缓存中获取,不需要回源;2)Cache miss:表示没有命中缓存,如果缓存内存中还有内存空间的话,会将数据加入到缓存中;3)存储成本:当没有命中缓存时,回源获取后会将数据放置到存储中,整个将数据放置到存储空间所需要的时间以及空间称之为存储成本;4)缓...

2019-12-09 09:55:40

Go 1.13设置代理

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。设置GOPROXY代理:go env -w GOPROXY=https://goproxy.cn,direct设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔:go env -w GOPRIVATE=*.gitlab.com,*.gi...

2019-11-30 18:49:27

Context 使用原则 Go语言实战笔记(二十)| Go Context

控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。什么是WaitGroupWaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。func main() { var wg sync.WaitGroup wg.Add(2) go func() { tim...

2019-11-25 16:28:15

Go语言实战笔记(五)| Go 切片

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便的管理和使用数据集合。内部实现切片是基于数组实现的,它的底层是数组,它自己本身非常小,可以理解为对底层数组的抽象。因为机遇数组实现,所以它的底层的内存是连续非配的,效...

2019-11-25 15:51:08

Golang学习 - sync 包

临时对象池  Pool 用于存储临时对象,它将使用完毕的对象存入对象池中,在需要的时候取出来重复使用,目的是为了避免重复创建相同的对象造成 GC 负担过重。其中存放的临时对象随时可能被 GC 回收掉(如果该对象不再被其它变量引用)。  从 Pool 中取出对象时,如果 Pool 中没有对象,将返回 nil,但是如果给 Pool.New 字段指定了一个函数的话,Pool 将使用该函数创建一...

2019-11-12 14:20:04

在数据库中存储一棵树,实现无限级分类

在一些系统中,对内容进行分类是必需的功能。比如电商就需要对商品做分类处理,以便于客户搜索;论坛也会分为很多板块;门户网站、也得对网站的内容做各种分类。分类对于一个内容展示系统来说是不可缺少的,本博客也需要这么一个功能。众所周知,分类往往具有从属关系,比如铅笔盒钢笔属于笔,笔又是文具的一种,当然钢笔还可以按品牌来细分,每个品牌下面还有各种系列...这个例子中从属关系具有5层,从上到下依次是:...

2019-11-08 10:44:00

php对于redis的上亿用户登录统计

可以用于上限超大的连续性的数字编号统计,在不牺牲查询速度的前提下,缩小存储空间。如用户id的统计,统计当天内访问网站的用。节约了32倍的空间。上亿用户登录统计存储模型设计因为有上亿的用户量,所以可以将每个用户按照每个位来存入,每一天都有一个bitmap,每个bitmap的每一位对应着一个用户的当天的登录状态值数据id设计每天的bitmap的key设置成当天日期,比如lo...

2019-09-30 14:49:30

go优秀开源项目

目录监控系统 容器技术 PaaS工具 大数据 微服务 CI/CD 数据库技术 存储技术 分布式系统 消息系统 服务器管理 安全工具 网络工具 Web工具 Web框架 区块链技术 其它监控系统项目 简介 OpenFalcon OpenFalcon是一款小米开源的监控系统。功能:数据采集免配置:agent自发现、支持Plugin、主动推送模式;...

2019-09-26 17:59:30

CentOS7下Kafka的安装介绍

Kafka是分布式发布-订阅消息系统,最初由LinkedIn公司开发,之后成为之后成为Apache基金会的一部分,由Scala和Java编写。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 它与传统系统相比,有以下不同: 它被设计为一个分布式系统,易于向外扩展; 它同时为发布和订阅提供高吞吐量; 它支持多订阅者,当失败时能自动平衡...

2019-09-19 09:25:27

golang nats[4] request reply模式

请求响应模式无论是发布订阅模式还是queue模式,nats都不能保证消息一定发送到订阅方,除非订阅者发送一个响应给发布者。所以订阅者发送一个回执给发布者,就是请求响应模式。这种模式有什么用?nats要求订阅者一定要先完成订阅,发布消息后,订阅者才能收到消息,类似离线消息的模式nats不支持。就算先完成订阅,后发送消息,消息发送方也不知道是否有订阅者收到了消息,请求响应模式就是应...

2019-09-17 14:21:08

golang nats[3] queue模式

队列订阅模式此模式中,订阅者要指定两个属性,主题和队列(queue,其实就是队列名称)注意:下面所有前提=必须订阅同一个主题发布消息后,N个具有同样的主题和queue的订阅者,只有一个会收到消息。(random算法)说明:queue=工作组,工作组中有N个worker,发布消息后,同一个工作组中,仅有一个worker会收到消息。相同主题,不同queue的订阅者...

2019-09-17 14:00:42

做程序开发的你如果经常用Redis,这些问题肯定会遇到

分布式缓存Redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等多种场景。Redis使用ANSI C语言编写,提供字符串(String)、哈希(Hash)、列表(List)、集合结构(Set、Sorted Set)、流(Stream)等数据类型的直接存取。数据读写基于内存,同时可持久化到磁盘。在我们做开发的过程中经常会用到Redis,小编在这里就...

2019-09-17 11:07:20

golang nats[2] 发布订阅模式

发布订阅-模式要求:发布消息时,订阅者必须已经完成订阅且处于激活状态。注意:nc.Subscribe这个方法不是同步的。类似:发布广播,所有的订阅者都会收到消息。消息会被所有的订阅者消费。package mainimport ( "fmt" "github.com/nats-io/go-nats" "log" "time")const ( url = "nat...

2019-09-12 11:34:35

golang nats[1] 安装

下载[root@localhost ~]# weget https://github.com/nats-io/gnatsd/releases/download/v1.2.0/gnatsd-v1.2.0-linux-amd64.zip解压[root@localhost ~]# unzip gnatsd-v1.2.0-linux-amd64启动[root@local...

2019-09-12 09:54:51

MySQL 数据库铁律

MySQL 数据库铁律 ...

2019-09-11 18:02:33

Nats的消息通信模型

消息通信模型  NATS的消息通信是这样的:应用程序的数据被编码为一条消息,并通过发布者发送出去;订阅者接收到消息,进行解码,再处理。订阅者处理NATS消息可以是同步的或异步的。   * 异步处理  异步处理使用回调消息句柄处理消息,当有消息到来时,已注册的回调句柄接收并控制处理消息。整个过程客户端不会被阻塞,可以同步执行其它任务。异步处理可以采用多线程调度的设计。 * 同步处...

2019-09-11 16:51:20

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。