- 博客(381)
- 资源 (27)
- 收藏
- 关注
原创 Golang:微服务常用代码分层结构
代码分层结构是一个老生常谈的话题,好的代码结构能够使得系统易于理解、开发及维护,如果代码结构很混乱就会使得不同层级的代码块耦合,导致难以维护和拓展。
2023-09-02 17:57:50 1013
原创 系统设计:通用思路之4S分析法
系统设计是一个定义系统架构、功能模块、服务及接口和数据存储等满足特定需求的过程。系统设计是在面向对象设计的基础上更高层次的设计,关注整个系统的架构、组件之间的协作和通信,以及满足系统需求的实现。关键点在于:满足实际需求、具备可拓展性、稳定性等,常见如Twitter、网约车系统设计。
2023-08-13 17:58:14 585
原创 Golang:reflect反射的使用例子
reflect包定义了“反射”相关能力,“反射”在计算机学中是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。基于反射特性可以通用化地解决一些需要频繁修改代码及硬编码问题,但是执行效率会被降低。
2023-02-20 09:22:55 473
原创 Golang原理分析:闭包及for range延迟绑定问题原理及解决
当一个函数引用了环境的变量,被引用的变量与该函数同时存在组成的系统,被称为闭包。
2022-12-17 18:32:54 956
原创 Golang原理分析:切片(slice)原理及扩容机制
Go切片的特性:切片的本质是引用底层数组头指针+当前切片长度+底层数组大小:即array、len和cap:使用时通过make关键字来进行初始化切片分配一个新的底层数组,或者是基于指定的数组进行切片化。
2022-12-04 19:17:02 2024
原创 Golang开发习惯:变量、常量声明&使用惯例
Golang开发中,可遵守简单且一致的命名原则,力求命名精简、易懂和一致。变量声明已存在类型信息时,不要重复类型信息:使用驼峰形式来声明变量,而不是下划线形式:常量声明使用驼峰形式来声明变量,而不是下划线形式:对于专有名词或特定常量,可使用全大写形式:
2022-12-04 12:29:26 660
原创 Golang源码分析:golang/sync之singleflight
golang/sync库拓展了官方自带的sync库,提供了errgroup、semaphore、singleflight及syncmap四个包,本次分析singlefliht的源代码。singlefliht用于解决单机协程并发调用下的重复调用问题,常与缓存一起使用,避免缓存击穿。
2022-11-06 16:18:02 548
原创 Golang源码分析:golang/sync之errgroup
golang/sync库拓展了官方自带的sync库,提供了errgroup、semaphore、singleflight及syncmap四个包,本次先分析第一个包errgroup的源代码。errgroup提供了类似于WaitGroup的组织子任务运行的能力,但是提供了错误处理和通过ctx取消子任务的能力。
2022-10-30 17:41:16 729
原创 Golang源码分析:本地缓存库cache2go
cache2go是一款由golang实现的本地缓存库,提供并发安全的读写操作,具有过期时间控制等特性。
2022-10-19 12:27:06 1021
原创 缓存读写策略:CacheAside、Read/WriteThrough及WriteBack策略
对于缓存的读写来说,通常存在三种使用方式,也就是缓存的三种读写策略:CacheAside、Read/WriteThrough及WriteBack策略。
2022-07-23 22:05:05 1512
原创 如何做数据平滑迁移:双写方案
数据迁移指的是将一批数据从同构存储系统(如MySQLA到MySQLB)或异构存储系统(如MySQL-MongoDB)间搬运迁移。数据双写迁移是最常用的一种数据迁移方案,可以保证迁移过程是在线的、迁移前后数据是一致的、迁移过程是可回滚的。数据双写迁移方案分为五大步,分别是:同步、双写、校验、切读、切写。...
2022-07-22 10:16:08 6872 5
原创 数据库查询优化:主从读写分离及常见问题
大部分系统的访问模型是读多写少,读写请求量的差距可能达到几个数量级。当单机MySQL无法承受过高的QPS时,可以组建MySQL主从读写分离集群来将读请求分摊到多个从节点中,以实现水平拓展。
2022-06-25 15:36:52 857
原创 高并发系统设计:通用的设计方法及架构分层
极客高并发系统设计课程学习笔记:高并发系统设计常用方法是水平拓展、异步及缓存,并通过系统分层来达到单一职责、易维护及拓展的特性。
2022-06-14 22:35:46 2121 1
原创 MongoDB:常见概念及问题总结
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。 MongoDB 文档类似于 JSON 对象的BSON格式存储(实质上是序列化的JSON,存储空间更小)。字段值可以包含其他文档,数组及文档数组。
2022-05-14 22:57:34 1296
原创 minikube无法启动:“minikube service hello-minikube”无法访问问题解决
使用minikube可以快速地在本机搭建kubernetes实验集群,用于学习和模拟kubernetes集群操作,但是在跟着官网下载好kubernetes和minikube后,在执行`minikube service hello-minikube`时启动了浏览器,但是却无法看到内容,说明hello-minikube部署出现问题,不合符预期
2022-04-10 16:57:35 4039
原创 容器化的演进:从Docker到Kubernetes
当前,Docker这门容器化技术已经被很多公司采用,从单机走向集群已成为必然,所以对于大规模容器的管理,如果只是依赖于人工手动运维,那么会出现难以管理、管理混乱的问题,而Kuberentes就是为了解决大量容器的管理和运维问题而出现的容器管理平台。
2022-04-10 10:01:20 1119
原创 一文带你学会Linux Shell:核心操作及命令总结
Shell的中文意识为“壳”,这层壳套在kernel(内核)之外,是用户与Linux 操作系统之间交互的一个命令解释器,是用户与Linux操作系统之间的桥梁。本文总结了十大块Linux Bash Shell常用操作及命令,带你快速入门Shell的世界。
2022-04-05 10:54:23 446
原创 SpringCloud:核心组成架构
Spring Cloud基于Spring Boot框架构建微服务架构,用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
2022-04-03 12:04:31 709
原创 计算机组成原理核心总结
冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机结构。计算机组成原理围绕着该体系结构展开,介绍了运算器、控制器及存储器原理。
2022-03-20 16:41:27 3742
原创 分布式基础-常见分布式ID生成方案
分布式ID即指的是在分布式系统中,全局的唯一标识;分布式ID其实与单机下的ID区别不大,其作用都是起到标识某个订单或数据、消息等,使其在分布式系统中全局唯一。
2022-03-19 11:41:32 1084
原创 RocketMQ:核心特性及基本原理总结
本文介绍RocketMQ核心特性:主从复制、刷盘及复制策略、顺序写入、零拷贝机制、事务消息、有序消息等基本原理。
2022-01-23 17:07:41 2135
原创 RocketMQ:与Kafka对比应用场景及组成架构
RocketMQ 是阿里巴巴开源的分布式消息中间件,前身为阿里内部消息系统Notify及MetaQ。RocketMQ被广泛应用于电商、订单、金融等分布式应用领域。
2022-01-15 17:26:22 1891
原创 ElasticSearch:相关性评分原理及应用
相关度是指两个事物间相互关联的程度,在检索领域特指检索请求与检索结果之间的相关程度。在ES中返回的每一条结果中都会包含一个_score字段,这个字段的值就是当前文档匹配检索请求的相关性评分。
2022-01-03 17:47:12 2105
原创 ElasticSearch:全文检索及倒排索引原理
全文检索一般是查询包含某一或某些关键字记录,所以通过文档整体值建立的索引对提高查询速度是没有任何帮助的。为了解决这个问题,人们创建了一种新索引方法,这种索引方法就是倒排索引。
2021-12-18 15:32:22 2496
原创 ElasticSearch:文档字段类型及存储
文档的具体内容都以字段为单元保存,在ElasticSearch中建立的倒排索引本质上是对字段及词项建立的索引,本文将介绍文档的字段类型及存储方式。
2021-12-14 12:41:24 3241 2
原创 MongoDB:海量存储基础-分片架构
分片是数据库中常用的提升存储容量的方式,它基于水平拓展的思想,将大量的数据按一定规则分配到不同的服务器中存储,比如MySQL集群可以借助Sharding-JDBC等外部框架对数据进行分片存储,而MongoDB则提供了原生的分片能力支持。
2021-12-11 16:26:42 4062
原创 MongoDB:高可用基础-副本集原理
在生产环境中,不建议使用单机版的MongoDB服务器,因为有可能出现单点问题:单机版的MongoDB无法保证可靠性,一旦进程发生故障或是服务器宕机,业务将直接不可用,一旦服务器上的磁盘损坏,数据会直接丢失,而此时并没有任何副本可用。为了保证MongoDB正常对外提供服务,需要搭建主备架构,确保在主节点发生故障时能够有从节点继续对外提供服务。MongoDB在设计时已考虑到可用性问题,在其设计中原生支持了主备架构,也就是所谓的副本集架构。
2021-12-08 10:00:48 2409
原创 Golang:gomonkey ApplyMethod 失效解决方式
记录一次gomonkey ApplyMethod 失效问题的解决方式。
2021-09-15 16:47:38 7626 5
原创 Yarn:分布式资源调度原理分析
Yarn(Yet Another Resource Manager)是Hadoop 2.0版本推出的一款计算资源管理调度框架,用于统一对MapReduce、Hive等大数据计算任务提供资源调度管理服务。
2021-09-12 17:58:09 681
原创 MapReduce:分布式计算工作原理分析
为了解决大量数据的计算问题,分布式计算诞生了。在MapReduce出现前其实就存在了分布式计算的模式,但是MapReduce为分布式计算实现了一套通用化的流程与规范。MapReduce是Hadoop架构下的计算层,它把任务分割成小任务并分发到集群的机器上并行执行。
2021-09-05 17:41:01 2577
原创 HDFS:NameNode和2NN工作原理分析
在HDFS的组成中,最重要的两个核心进程分别为NameNode和DataNode,NameNode负责存储元数据信息,而DataNode则用于存放数据,而另一个进程被称为2NN(Secondary NameNode),它的作用在于辅助NameNode做日志合并,防止元数据丢失。
2021-08-28 22:36:02 669
Java面试题库
2018-11-10
springboot2.0快速整合配置大全
2018-11-10
《第一本Docker书》高清带目录pdf版
2018-10-13
分布式系统采用技术及案例分析
2018-10-09
sqldeveloper
2018-09-07
java开发的bos物流项目(ssh框架)
2018-08-06
html_css_javascript语法手册
2018-05-16
用原生Servlet+Jsp写的商城Demo 解压密码:pbrshop
2018-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人