年度归档: 2022 年

13 篇文章

速通HDD与SSD基本原理
速通HDD与SSD基本原理 作为MIS专业的小弱鸡,对硬件组成的了解并不深入,而本人正在学习LSM-T结构的存储引擎,发现有些内容一定是要对硬件有所了解之后才能又更好的认知,比如在阅读了LSM-T的经典开山论文后,有了解到LSM-T结构化随机写为顺序写的特性,可以契合HDD的特点可以极大的加快磁盘写入的速度。而在Wiskey论文中,又提出了对SSD友好的KV分离式存储结构,并通过并行读取最大化发挥…
速通WebSocket协议 – 建立在HTTP之上的应用层”TCP”协议
由于最近在看一些IM系统相关的内容,学习到了webSocket协议,感觉很有意思,但是感觉感觉网上没有找到很清晰描述webSocket的文章,故有此篇,文章整理了网络上的一些资料并加上我的个人理解,如有错误,欢迎指出 WebSocket WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推…
WEB服务端系统架构演进概述 – CFC例会2022.9.18
注:本系列内容为个人整理与总结的架构演进的鸟瞰图,其中部分概念的解释由我个人总结得出,仅代表我个人的理解,难免存在纰漏,如有任何问题均可随时提出并指正 服务端 or 客户端 什么是服务端和客户端,它和前端后端有什么关联和区别 认识 “服务” 服务,是根据功能抽象出的概念。比如说,处理用户登录信息的认证服务,负责持久化存储数据的数据库服务,以及为了加快查询速度的缓存服务等 服务、进程、端口? 端口的…
记一次gorm.ErrRecordNotFound踩坑记录
在某个项目中,有个数据验证的业务,即在数据库中查询数据是否存在,若数据已存在则返回错误并给前端提示。稍想了一下就能写出如下代码Func01 Func01 func (t *ServiceInfo) Find(c *gin.Context, tx *gorm.DB, search *ServiceInfo) (*ServiceInfo, error) { out := &ServiceInf…
Golang实现支持中间件的简易TCP框架
在golang的标准库中没有为tcp直接提供像http那样简单易用的服务框架,我们不妨自己手动实现一个 主体思路 我们的实现的主题思路分为以下四个内容 监听服务 获取构建新连接对象并设置超时时间及keepalive 设置方法退出时连接关闭 调用回调接口 TcpHandler 主要结构体和接口 首先是TCPServer的结构体,我们希望用户可以自由构建TcpServer并设置超时时间等自定义选项 t…
Golang实现四种负载均衡算法
负载均衡算法实现 在这篇文章中,我将实现最常见的四种负载均衡算法,即随机负载、轮询负载、加权负载和一致性hash负载 随机负载 随机挑选目标服务器ip type RandomBalance struct { curIndex int rss []string } // 添加新的服务ip func (r *RandomBalance) Add(params ...string) error { if…
MySQL索引及其优化总结 – CFC例会2022.4.17
MySQL索引及其优化 MySQL的基础架构 Server层 :核心服务功能与跨引擎功能的实现(如所有的内置函数、存储过程、触发器等) 连接器:管理连接,权限验证 命中缓存:命中缓存则直接返回结果(8.0版本后删除) 分析器:词法分析,语法分析 优化器:执行计划生成,索引选择 执行器:操作引擎返回结果 存储引擎:数据的存储与提取,插件式的架构模式 InnoDB * MyISMA SQL语句的执行流…
《Java并发编程的艺术》学习笔记(四) – Volatile 全解读
Volatile 全解读 Volatile 的定义 在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,…