![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术剖析
文章平均质量分 86
对平时遇到的一些技术进行原理剖析。
Kaimar
⚽⚽⚽
展开
-
【计算机网络】Socket原语和通信原理
文章目录1. 什么是Socket2. Socket原语3. Socket通信原理4. 消息接收参考最近面腾讯,问了Socket原语和通信原理的问题,没有答好,因此参考资料总结一下。1. 什么是SocketSocket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。2. Socket原语面试官:socket原语有哪些呢?说一下各自的作用?原创 2022-05-06 20:47:14 · 714 阅读 · 0 评论 -
【分布式缓存源码分析】总结篇
文章目录1.流程1.1 流程回顾1.2 远程访问分布式节点2.参考上一节解决了访问哪个节点的问题,即选择哪个分布式节点获取缓存值,本节实现分布式节点注册和与远程节点的服务端通信。1.流程1.1 流程回顾 是接收 key --> 检查是否被缓存 -----> 返回缓存值 ⑴ | 否 是 |-----> 是否应当从原创 2022-03-24 21:01:20 · 1045 阅读 · 1 评论 -
【分布式缓存源码分析】一致性哈希(五)
文章目录1.什么是一致性哈希2.为什么使用一致性哈希2.1 问题一:普通哈希的扩展性问题(新加节点)2.2 问题二:普通hash的容错性问题(节点下线)2.3 一致性哈希优化2.4 虚拟节点3.代码实现4.验证5.总结参考前面已经首先实现了LRU缓存,然后基于LRU缓存进行了并发访问控制、控制缓存值存储和获取的流程,并对缓存值进行了抽象与封装,其次基于分布式架构,实现了分布式节点相互访问的HTTP服务端。1.什么是一致性哈希对于分布式存储,不同机器上存储不同对象的数据,那么该使用什么方式去找到目原创 2022-02-25 16:58:05 · 492 阅读 · 0 评论 -
【分布式缓存源码分析】HTTP服务端(四)
文章目录1.HTTP服务端2.代码注释1.HTTP服务端为什么需要建立HTTP服务端?这是一个分布式缓存,有很多个分布式的节点,节点之间需要进行通信,那么这里采用HTTP通信,也有其他的方式如RPC等。如果一个节点启动了它的HTTP服务端,那么它就可以被其他节点访问。2.代码注释核心代码是ServeHTTPpackage geecacheimport ( "fmt" "log" "net/http" "strings")/* 本文件提供被其他节点访问的能力(基于htt原创 2022-02-23 23:17:13 · 332 阅读 · 0 评论 -
【分布式缓存源码分析】单机并发缓存(三)
文章目录1.并发访问2.控制存储和获取3.难点-接口型函数4.总结参考上一篇是实现缓存淘汰策略,采用LRU算法实现了对缓存的增删改查。本篇是基于并发访问缓存的场景,对LRU进行并发控制。1.并发访问并发访问就要用到互斥锁sync.Mutex,利用它实现对LRU缓存的并发写。package geecacheimport ( "geecache/lru" "sync")/*本文件完成的是并发控制。add方法中判断lru为空才进行实例化,被称为延迟实例化,即一个对象的延迟初始化意原创 2022-02-21 21:37:14 · 321 阅读 · 0 评论 -
【分布式缓存源码分析】LRU缓存淘汰策略(二)
文章目录1.定义LRU结构体1.1 LRU1.2 数据结构2.实现增删改查3.总结1.定义LRU结构体1.1 LRULRU是最近最少被使用,顾名思义,若要淘汰就要淘汰当前最少使用的。LRU 算法的实现非常简单,维护一个队列,如果某条记录被访问了,则移动到队尾,那么队首则是最近最少访问的数据,淘汰该条记录即可。1.2 数据结构基于上图,可以知道有两个数据结构,一个map,一个双向链表,将所有的值放到双向链表中,这样,当访问到某个值时,将其移动到队尾的复杂度是O(1),在队尾新增一条记录以及原创 2022-02-18 21:05:06 · 497 阅读 · 0 评论 -
【分布式缓存源码分析】Memcached、groupcache和GeeCache(一)
文章目录1. 分布式缓存1.1 背景1.2 面临的问题1.2.1 内存1.2.2 并发写1.2.3 单机性能2. 分布式内存对象缓存系统介绍2.1 Memcached2.1.1 介绍2.1.2 常见的提速方法2.1.3 memcached特征2.1.4 使用场景2.2 groupcache2.3 GeeCache参考首先,项目来自极客兔兔分布式缓存-GeeCache,我们先来谈谈分布式缓存,然后介绍一下项目,后序几篇来进行详细分析以及加一些自己的思考。1. 分布式缓存引用极客兔兔博客中的一句话,原创 2022-02-03 11:35:40 · 553 阅读 · 0 评论 -
【Go的Web框架源码分析】HTTP基础部分(二)
文章目录1. 程序入口分析1.1 版本一1.2 版本二1.3 版本三:Gee框架的雏形2. 总结开篇首先是从程序入口开始。main函数中用到net/http和http.Handler接口。1. 程序入口分析1.1 版本一func main() { // 1. 设置路由 /和/hello,并分别与Handler做绑定 http.HandleFunc("/", indexHandler) http.HandleFunc("/hello", helloHandler) // 2. 启动Web服原创 2022-01-21 16:08:09 · 509 阅读 · 0 评论 -
【Go的Web框架源码分析】Gee和Gin的介绍及Web框架的组成部分(一)
文章目录引言1. Gee和Gin2. Web框架的组成参考引言今天开始阅读go的一个Web框架Gee,这是一个Go进阶的练手项目,它是仿照知名的Go开源Web框架Gin进行编写的,因此我也将结合Gin进行分析。我们首先要搞清楚的是一个Web框架它有哪些组成部分,我们才知道我们要实现什么,怎么去实现,达到什么效果,因此本篇首先简单介绍一下Gee和Gin,然后通过查阅资料列出Web框架的组成部分以及阐述它们的作用。1. Gee和Gin**Gin的描述**Gin is a HTTP web fra原创 2022-01-21 11:49:44 · 1164 阅读 · 0 评论 -
【中间件】RabbitMQ初认识
文章目录1. RabbitMQ是什么?1.1 RabbitMQ1.2 同类的中间件1.3 工作模式2. RabbitMQ的作用?2.1 解耦2.2 异步2.3 削峰3. RabbitMQ的缺点?3.1 可用性降低3.2 复杂度提高3.3 一致性问题4. 一些概念4.1 信道、交换机、路由键、队列4.2 交换机Exchange的四种类型和用法4.2.1 Direct Exchange4.2.2 Fanout exchange4.2.3 Topic Exchange4.2.4 Headers Exchange参原创 2022-01-03 18:04:37 · 1139 阅读 · 0 评论