自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿的世界

「WHY」每一个你不满意的当下,都有一个你不曾努力的过去。

  • 博客(7)
  • 收藏
  • 关注

原创 Go中闭包的隐含问题

问题package mainimport ( "fmt" "sync")var wg sync.WaitGroupfunc main() { for i := 0; i < 10; i++ { wg.Add(1) go func(){ fmt.Println(i) defer wg.Done() }() } wg.Wait()}[why@localhost] ~/Desktop/go/gin-frame$go run test.go 10

2020-06-26 15:56:43 367

原创 Redis源码之——键过期策略源码解析(惰性删除+定期取样删除)

前言从概念上讲,我只知道redis采用惰性删除加定期随机删除的策略去释放过期键的内存,但是并没有研究过其中的原理实现,今天以get命令为例,追了一下源码,剖析下惰性删除的实现过程。源码追踪命令入口在server.c文件中查找对应的命令函数,对应的方法是getCommandstruct redisCommand redisCommandTable[] = { {"module",moduleCommand,-2, "admin no-script", 0,NU

2020-06-25 17:04:15 2529

原创 Redis源码之——redisObject

定义在server.h文件中redisObject结构体#define LRU_BITS 24#define LRU_CLOCK_MAX ((1<<LRU_BITS)-1) /* Max value of obj->lru */#define LRU_CLOCK_RESOLUTION 1000 /* LRU clock resolution in ms */ #define OBJ_SHARED_REFCOUNT INT_MAXtypedef struct redisO

2020-06-21 19:17:25 509

原创 Redis源码之——SDS

SDS的定义/* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here to document the layout of type 5 SDS strings. */struct __attribute__ ((__packed__)) sdshdr5 { unsigned char flags; /* 3 lsb of type, and 5 msb of strin

2020-06-20 15:20:46 384

原创 HashMap+双向链表,看完之后,再也不怕头条面试官让我手撕LRU算法了

数据结构:双向链表作为LRU队列 链表尾指针 HashMap存储每个元素的地址添加、访问、删除操作:添加:直接通过尾指针加到队尾 修改:通过HashMap拿到对应节点的地址,通过前后指针删除当前节点,再通过尾指针加到队尾 删除:通过HashMap拿到对应节点的地址,通过前后指针删除当前节点代码:<?phpclass ListQueue{ public $head = null; public $tail = null; public $count

2020-06-13 11:14:48 1150

原创 一篇文搞明白RabbitMQ原理和开发应用

首先思考几个问题:什么是消息队列?消息队列可以解决什么问题? RabbitMQ可以做什么? RabbitMQ可以实现消息的过期失效吗? RabbitMQ可以实现延迟队列吗? RabbitMQ为何消息堆积越多,性能越大幅度下降? RabbitMQ的可靠性体现在哪几方面?分别是如何实现的?什么是消息队列提供了以松散耦合的灵活方式集成应用程序的一种机制,为我们提供了基于存储和转发的应用程序之间的异步发送,用于异步、解耦、削峰。生产者:投递消息的一方 消费者:接收消息的一方 虚拟机:用于

2020-06-03 21:44:12 375

原创 RabbitMQ消息队列的可靠性

概述RabbitMQ的可靠性贯穿整个消息的生命周期,主要包含以下三个阶段:消息生产阶段 消息转发阶段 消息消费阶段消息生产阶段通过事务机制或发送方确认机制保证消息已经正确地发送并存储至RabbitMQ中事务机制事务会在一条消息发送之后阻塞发送端,直到收到服务端的响应,所以它是同步阻塞的:try{ channel.txSelect(); //开启事务 channel.BasicPublish(); //消息生产 channel.txComment();

2020-06-03 21:34:31 474

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除