朱小厮的博客

其他

TiDB 在知乎万亿量级业务数据下的实践和挑战

14),缓冲节点以标签的方式做隔离,不同的业务使用不同的缓冲节点,不同缓冲节点搭配不同的缓冲策略,达到更高的投入产出比,同时也能隔离各个不同的租户,防止他们之间互相产生影响。3.3
2021年4月26日
其他

面试官:Redis新版本开始引入多线程,谈谈你的看法?

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料Redis作为一个基于内存的缓存系统,一直以高性能著称,因没有上下文切换以及无锁操作,即使在单线程处理情况下,读速度仍可达到11万次/s,写速度达到8.1万次/s。但是,单线程的设计也给Redis带来一些问题:只能使用CPU一个核;如果删除的键过大(比如Set类型中有上百万个对象),会导致服务端阻塞好几秒;QPS难再提高。针对上面问题,Redis在4.0版本以及6.0版本分别引入了Lazy
2021年3月27日
其他

喜马拉雅自研网关架构演进过程

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料背景网关是一个比较成熟了的产品,基本上各大互联网公司都会有网关这个中间件,来解决一些公有业务的上浮,而且能快速的更新迭代,如果没有网关,要更新一个公有特性,就要推动所有业务方都更新和发布,那是效率极低的事,有网关后,这一切都变得不是问题,喜马拉雅也是一样,用户数增长达到6亿多的级别,Web服务个数达到500+,目前我们网关日处理200亿加次调用,单机QPS高峰达到4w+。网关除了要实现最基本的功能反向代理外,还有公有特性,比如黑白名单、流控、鉴权、熔断、API发布、监控和报警等,我们还根据业务方的需求实现了流量调度、流量Copy、预发布、智能化升降级、流量预热等相关功能,下面就我们网关在这些方便的一些实践经验以及发展历程,下面是喜马拉雅网关的演化过程:第一版:Tomcat
2021年3月21日
其他

收藏:存储知识全面总结

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料存储基础知识总结,内容涉及RAID、磁盘COW/ROW快照、备份、CDP、集群、VTL虚拟带库等存储技术。想知道更多?扫描下面的二维码关注我后台回复"技术",加入技术群后台回复“k8s”,可领取k8s资料【精彩推荐】原创|OpenAPI标准规范中台不是万能药,关于中台的思考和尝试ClickHouse到底是什么?为什么如此牛逼!原来ElasticSearch还可以这么理解面试官:InnoDB中一棵B+树可以存放多少行数据?微服务下如何解耦?对于已经紧耦合下如何重构?如何构建一套高性能、高可用、低成本的视频处理系统?架构之道:分离业务逻辑和技术细节星巴克不使用两阶段提交点个赞+在看,少个
2021年3月14日
其他

微博千万级规模高性能高并发的网络架构设计

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料架构以及我理解中架构的本质在开始谈我对架构本质的理解之前,先谈谈自己的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上要重视它
2021年3月6日
其他

中台不是万能药,关于中台的思考和尝试

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料围绕中台的争议非常多,但是往往争议的原因是连中台这个概念都完全没有达成共识,可以说是毫无意义的争吵。在
2020年12月27日
其他

架构 | 微服务架构下如何解耦,对于已经紧耦合下如何重构?

点击上方“朱小厮的博客”,选择“设为星标”当当满200减40优惠码「J2KNAE」来源:知乎今天准备谈下微服务架构下各个微服务间如何解耦,以及对于已经紧耦合的微服务如何进行重构。要明白实际上微服务后续出现的诸多问题往往都是一开始微服务模块划分就不合理导致,对于具体的模块划分方法和原则,我总结出了以下几点。原则1:划分为
2020年11月3日
其他

如何构建一套高性能、高可用性、低成本的视频处理系统?

点击上方“朱小厮的博客”,选择“设为星标”当当满200减40优惠码「J2KNAE」来源:阿里巴巴中间件前言近些年,在线教育行业飞速发展,为整个社会的知识传播提供了前所未有的便利性。通过多种形式的在线教育平台,学员与教师即使相隔万里也可以开展教学活动。借助丰富的网络课件,学员还可以随时随地的进行学习,真正打破了时间和空间的限制。在各种形式的网络课件中,视频课件自然是最直观表现力最丰富的形式,因此视频课件的市场占有率也在逐年提升。视频处理需求分析对于在线教育领域的视频课件出品方而言,每天都要对大量视频内容进行处理,下图展示了一个比较典型的场景:1、用户上传一个视频到平台后,会先在对象存储中对视频源文件进行暂存。2、平台对视频进行预处理,并打上水印。3、平台将视频文件转换为其他格式,并对分辨率进行调整,以适配各种不同的终端设备的要求。4、将处理好的视频文件保存回对象存储,并同步到
2020年11月1日
其他

架构之道:分离业务逻辑和技术细节

Layer)主要负责获取输入,组装上下文,做输入校验,调用领域层做业务处理,如果需要的话,发送消息通知。当然,层次是开放的,若有需要,应用层也可以直接访问基础实施层。3)领域层(Domain
2020年10月28日
其他

星巴克不使用两阶段提交

那相比斥巨资实现一种复杂的错误处理机制,销账的方式还是更划算的。例如,我曾为多家因特网服务提供商(ISP)工作,在他们的业务中,如果计费发生错误,他们就会选择销账的方式。其导致的结果是,客户可能会
2020年10月27日
其他

面试官:InnoDB中一棵B+树可以存放多少行数据?

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取来源:r6a.cn/fUA9InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一个页的大小是16K。下面几张图可以帮你理解最小存储单元:文件系统中一个文件大小只有1个字节,但不得不占磁盘上4KB的空间。innodb的所有数据文件(后缀为ibd的文件),他的大小始终都是16384(16k)的整数倍。磁盘扇区、文件系统、InnoDB存储引擎都有各自的最小存储单元。在MySQL中我们的InnoDB页的大小默认是16k,当然也可以通过参数设置:mysql>
2020年9月19日
其他

如此简单 | ElasticSearch 最全详细使用教程

查看集群的健康状况http://localhost:9200/_cathttp://localhost:9200/_cat/health?v说明:v是用来要求在结果中返回表头状态值说明Green
2020年9月6日
其他

原来 Elasticsearch 还可以这么理解

File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。从上图我们可以了解到倒排索引主要由两个部分组成:词典倒排文件词典和倒排表是
2020年9月5日
其他

ClickHouse到底是什么?凭啥这么牛逼!

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取随着业务的迅猛增长,Yandex.Metrica目前已经成为世界第三大Web流量分析平台,每天处理超过200亿个跟踪事件。能够拥有如此惊人的体量,在它背后提供支撑的ClickHouse功不可没。ClickHouse已经为Yandex.Metrica存储了超过20万亿行的数据,90%的自定义查询能够在1秒内返回,其集群规模也超过了400台服务器。虽然ClickHouse起初只是为了Yandex.Metrica而研发的,但由于它出众的性能,目前也被广泛应用于Yandex内部其他数十个产品上。初识ClickHouse的时候,我曾产生这样的感觉:它仿佛违背了物理定律,没有任何缺点,是一个不真实的存在。一款高性能、高可用OLAP数据库的一切诉求,ClickHouse似乎都能满足,这股神秘的气息引起了我极大的好奇。刚从Hadoop生态转向ClickHouse的时候,我曾有诸多的不适应,因为它和我们往常使用的技术"性格"迥然不同。如果把数据库比作汽车,那么ClickHouse俨然就是一辆手动挡的赛车。它在很多方面不像其他系统那样高度自动化。ClickHouse的一些概念也与我们通常的理解有所不同,特别是在分片和副本方面,有些时候数据的分片甚至需要手动完成。在进一步深入使用ClickHouse之后,我渐渐地理解了这些设计的目的。某些看似不够自动化的设计,反过来却在使用中带来了极大的灵活性。与Hadoop生态的其他数据库相比,ClickHouse更像一款"传统"MPP架构的数据库,它没有采用Hadoop生态中常用的主从架构,而是使用了多主对等网络结构,同时它也是基于关系模型的ROLAP方案。本文就让我们抽丝剥茧,看看ClickHouse都有哪些核心特性。01ClickHouse的核心特性ClickHouse是一款MPP架构的列式存储数据库,但MPP和列式存储并不是什么"稀罕"的设计。拥有类似架构的其他数据库产品也有很多,但是为什么偏偏只有ClickHouse的性能如此出众呢?通过上一章的介绍,我们知道了ClickHouse发展至今的演进过程。它一共经历了四个阶段,每一次阶段演进,相比之前都进一步取其精华去其糟粕。可以说ClickHouse汲取了各家技术的精髓,将每一个细节都做到了极致。接下来将介绍ClickHouse的一些核心特性,正是这些特性形成的合力使得ClickHouse如此优秀。1.
2020年9月4日
其他

Linux系统内存知识总结

等8、进程内存空间用户进程通常情况只能访问用户空间的虚拟地址,不能访问内核空间虚拟地址内核空间是由内核负责映射,不会跟着进程变化;内核空间地址有自己对应的页表,用户进程各自有不同额页表Linux
2020年8月20日
其他

深度好文:Netflix奈飞微服务架构设计解析

后端架构如前所述,后端要处理几乎所有内容,从注册、登录、计费到更复杂的处理任务,如视频转码和个性化推荐等无所不包。为同时支持在同一底层基础架构上运行的轻量与重量级负载,Netflix
2020年8月19日
其他

耗时3天,上亿数据如何做到秒级查询?

点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取来源:sohu.gg/jIp59N最近在忙着优化集团公司的一个报表。优化完成后,报表查询速度由从半小时以上(甚至查不出)到秒查的质变。从修改
2020年8月15日
其他

原创 | OpenAPI 标准规范

Timeout作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。505HTTP
2020年7月22日
其他

面试官:为什么 HashMap 的加载因子是0.75?

点击上方“朱小厮的博客”,选择“设为星标”后台回复"加群",加入新技术来源:8rr.co/8V9Q有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0.75?本文主要对以下内容进行介绍:为什么HashMap需要加载因子?解决冲突有什么方法?为什么加载因子一定是0.75?而不是0.8,0.6?为什么HashMap需要加载因子?HashMap的底层是哈希表,是存储键值对的结构类型,它需要通过一定的计算才可以确定数据在哈希表中的存储位置:static
2020年6月19日
其他

日志采集系统都用到哪些技术?

点击上方“朱小厮的博客”,选择“设为星标”后台回复"加群",加入新技术来源:8rr.co/85Mc概述日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师,他们通过读取日志来排查问题,如今,大量机器日夜处理日志数据以生成可读性的报告以此来帮助人类做出决策。在这个转变的过程中,日志采集Agent在其中扮演着重要的角色。作为一个日志采集的Agent简单来看其实就是一个将数据从源端投递到目的端的程序,通常目的端是一个具备数据订阅功能的集中存储,这么做的目的其实是为了将日志分析和日志存储解耦,同一份日志可能会有不同的消费者感兴趣,获取到日志后所处理的方式也会有所不同,通过将数据存储和数据分析进行解耦后,不同的消费者可以订阅自己感兴趣的日志,选择对应的分析工具进行分析。像这样的具备数据订阅功能的集中存储业界比较流行的是Kafka,对应到阿里巴巴内部就是DataHub还有阿里云的LogHub。而数据源端大致可以分为三类,一类就是普通的文本文件,另外一类则是通过网络接收到的日志数据,最后一类则是通过共享内存的方式,本文只会谈及第一类。一个日志采集Agent最为核心的功能大致就是这个样子了。在这个基础上进一步又可以引入日志过滤、日志格式化、路由等功能,看起来就好像是一个生产车间。从日志投递的方式来看,日志采集又可以分为推模式和拉模式,本文主要分析的是推模式的日志采集。推模式是指日志采集Agent主动从源端取得数据后发送给目的端,而拉模式指的是目的端主动向日志采集Agent获取源端的数据。业界现状目前业界比较流行的日志采集主要有Fluentd、Logstash、Flume、scribe等,阿里巴巴内部则是LogAgent、阿里云则是LogTail,这些产品中Fluentd占据了绝对的优势并成功入驻CNCF阵营,它提出的统一日志层(Unified
2020年6月18日
其他

日志系统新贵Loki,确实比笨重的ELK轻

点击上方“朱小厮的博客”,选择“设为星标”后台回复"加群",加入新技术来源:suo.im/5EZQaP最近,在对公司容器云的日志方案进行设计的时候,发现主流的ELK或者EFK比较重,再加上现阶段对于ES复杂的搜索功能很多都用不上最终选择了Grafana开源的Loki日志系统,下面介绍下Loki的背景。背景和动机当我们的容器云运行的应用或者某个节点出现问题了,解决思路应该如下:我们的监控使用的是基于prometheus体系进行改造的,prometheus中比较重要的是metric和alert,metric是来说明当前或者历史达到了某个值,alert设置metric达到某个特定的基数触发了告警,但是这些信息明显是不够的。我们都知道,k8s的基本单位是pod,pod把日志输出到stdout和stderr,平时有什么问题我们通常在界面或者通过命令查看相关的日志,举个例子:当我们的某个pod的内存变得很大,触发了我们的alert,这个时候管理员,去页面查询确认是哪个pod有问题,然后要确认pod内存变大的原因,我们还需要去查询pod的日志,如果没有日志系统,那么我们就需要到页面或者使用命令进行查询了:如果,这个时候应用突然挂了,这个时候我们就无法查到相关的日志了,所以需要引入日志系统,统一收集日志,而使用ELK的话,就需要在Kibana和Grafana之间切换,影响用户体验。所以
2020年6月17日
其他

超清晰的 DNS 原理入门指南

是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作。我的目标是,读完此文后,你就能完全理解DNS。一、DNS
2020年6月16日
其他

深入理解Java Stream流水线

点击上方“朱小厮的博客”,选择“设为星标”后台回复"加群",加入新技术来源:8rr.co/76nW前面我们已经学会如何使用Stream
2020年6月15日
其他

干掉 Swagger,试试这个!

点击上方“朱小厮的博客”,选择“设为星标”后台回复"加群",加入新技术JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后端代码都是自己写的,否则API文档将是前后端协作中一个不可或缺的沟通界面。既然不可避免,那就想办法弄个轮子吧。人生苦短,必须偷懒。无图无真相,生成文档的效果如下:相比Swagger要写一堆注解,Spring
2020年6月14日
其他

干掉GuavaCache:Caffeine才是本地缓存的王

点击上方“朱小厮的博客”,选择“设为星标”后台回复"加群",加入新技术话说,中间件的选择上,Spring(SpringBoot)一直是业界的风向标。比如Spring一直使用「Jackson」,而没有使用Gson和fastjson。SpringBoot2.0默认数据库连接池从TomcatPool换到了「HikariCP」。在本地缓存方面,SpringFramework5.0(SpringBoot2.0)放弃了Google的GuavaCache,选择了「Caffeine」(Drop
2020年6月13日
其他

如何用ELK搭建TB级的日志监控系统?

级别的日志。在成本、资源的有限条件下,所有所有的日志是不现实的,即使资源允许,一年下来将是一比很大的开销。所以我们采用了过滤、清洗、动态调整日志优先级采集等方案。首先把日志全量采集到
2020年6月12日
其他

深度好文:Linux系统内存知识

原理它允许多个不相关的进程去访问同一部分逻辑内存两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案两个运行中的进程共享数据,是进程间通信的高效方法,可有效减少数据拷贝的次数2)
2020年6月11日
其他

原创 | 科普一个 Star 数为 28.5k 的云原生网关

Router),是你整个平台的大门,拦截并路由每个传入的请求:它知道所有的逻辑和规则,这些规则确定哪些服务处理哪些请求;传统的反向代理需要一个配置文件,其中包含路由到你服务的所有可能路由,而
2020年5月3日
其他

原创 | 微服务网关 Kong 科普

--rm来初始化数据库,该命令执行后会退出容器而保留内部的数据卷(volume)。这个命令我们还是要注意的,一定要跟你声明的网络,数据库类型、host名称一致。同时注意Kong的版本号,注:当前
2020年4月29日
其他

OpenResty 概要及原理科普

world”,真实使用场景下,肯定会包含大堆的代码,如果这些代码全部包含在nginx.conf配置文章中,那么可阅读性和可维护性是会大大降低的。所以,我们要进一步地将Lua代码抽离出来。我们在
2020年4月23日
其他

面试官给我挖坑:单台服务器并发TCP连接数到底可以有多少 ?

精彩推荐】Paxos、Raft不是一致性算法嘛?越说越迷糊的CAP面试官居然问我Raft为什么会叫做Raft!面试官给我挖坑:URI中的//有什么用网关Zuul科普网关Spring
2020年4月22日
其他

原创 | Nginx 架构原理科普

共享的问题。fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配。响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少。Nginx
2020年4月17日
其他

a[i][j] 和 a[j][i] 还有这些旁门左道?!

精彩推荐】Paxos、Raft不是一致性算法嘛?越说越迷糊的CAP面试官居然问我Raft为什么会叫做Raft!面试官给我挖坑:URI中的//有什么用网关Zuul科普网关Spring
2020年4月14日
其他

原创 | 分布式事务科普(终结篇)

接口调用成功,主业务服务提交本地事务;若调用失败,主业务服务回滚本地事务。若主业务服务提交本地事务,则TCC模型分别调用所有从业务服务的Confirm接口;若主业务服务回滚本地事务,则分别调用
2020年4月11日
其他

分布式事务科普(初识篇)

"准备提交"请求,数据库(参与者)收到请求后执行数据修改和日志记录等处理,处理完成后只是把事务的状态改成"可以提交",然后把结果返回给事务管理器(协调者)。第二阶段协调者根据第一阶段中各个参与者
2020年4月10日
其他

网关Spring Cloud Gateway科普

同时存在于同一个路由时,请求必须同时满足所有的条件才被这个路由匹配。过滤器网关经常需要对路由请求进行过滤,执行一些操作,如鉴权之后构造头部之类的。过滤的种类很多,如增加请求头、增加请求参数
2020年4月6日
其他

网关Zuul科普

点击上方“朱小厮的博客”,选择“设为星标”后台回复”加群“获取公众号专属群聊入口为什么要使用网关不同的微服务一般会有不同的网络地址,而外部客户端(例如手机APP)可能需要调用多个服务的接口才能完成一个业务需求。例如一个电影购票的手机APP,可能会调用多个微服务的接口,才能完成一次购票的业务流程,如下图所示。如果让客户端直接与各个微服务通信,会有以下的问题:客户端会多次请求不同的微服务,增加了客户端的复杂性。存在跨域请求,在一定场景下处理相对复杂。认证复杂,每个服务都需要独立认证。难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。某些微服务可能使用了防火墙/浏览器不友好的协议,直接访问会有一定的困难。以上问题可借助微服务网关解决。微服务网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关。使用微服务网关后,架构如下所示。此时,微服务网关封装了应用程序的内部结构,客户端只须跟网关交互,而无须直接调用特定微服务的接口。这样,开发就可以得到简化。不仅如此,使用微服务网关还有以下优点:易于监控。可在微服务网关收集监控数据并将其推送到外部系统进行分析。易于认证。可在微服务网关上进行认证,然后再将请求转发到后端的微服务,而无须在每个微服务中进行认证。减少了客户端与各个微服务之间的交互次数。Zuul
2020年3月30日
其他

面试官给我挖坑:URI中的 “//” 有什么用?

点击上方“朱小厮的博客”,选择“设为星标”后台回复”加群“获取公众号专属群聊入口我们在浏览网页的时候,需要在浏览器中输入http://或者https://开头的URL地址,类似http://honeypps.com,那么这里的"://"或者"//"有什么用呢?说到URL就不得不提URI了。用什么来标记服务器上的资源呢?用的就是URI(Uniform
2020年3月29日
其他

Raft当初为什么会被命名为Raft?

log)的共识算法。(共识,即consenus,关于consistency和consensus的争论可以参考《Paxos、Raft不是一致性算法/协议?》。)Raft
2020年3月27日
其他

大公司为什么都有API网关?没你想的那么简单!

在微服务架构中,有一个组件可以说是必不可少的,那就是微服务网关,微服务网关处理了负载均衡,缓存,路由,访问控制,服务代理,监控,日志等。API网关在微服务架构中正是以微服务网关的身份存在。
2020年3月25日
其他

字节跳动内推召集令

简历投递成功之后,如果需要查看自己的简历进度、内推信息等。可以添加上面的微信,留下:自己的大名+说明来意即可。如果人数过多,一般会在凌晨处理,请耐心等候。
2020年3月21日
其他

聊一聊 Java 服务端中的乱象

项目(example-dubbo)打包成一个服务,向业务层项目(example-webapp)或其它业务项目(other-service)提供API项目(example-api)中定义的接口函数。
2020年3月20日
其他

深入理解 MySQL 索引底层原理

id,而主键一般默认都是自增的,如果采取二叉树这种数据结构作为索引,那上面介绍到的不平衡状态导致的线性查找的问题必然出现。因此,简单的二叉查找树存在不平衡导致的检索性能降低的问题,是不能直接用于实现
2020年3月19日
其他

越说越迷糊的CAP

https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/
2020年3月18日
其他

聊聊 Java 的几把 JVM 级锁

若是,则设置第一个读线程firstReader为空,否则,将第一个读线程占有的资源数firstReaderHoldCount减1;
2020年3月16日
其他

Paxos、Raft不是一致性算法/协议?

越是相近的词汇,越要清楚的区分。就算是同一个单词,也会有不同的含义解析,比如CAP和ACID中的C都是Consistency的缩写,但这两者在各自场景下的含义也并不相同。
2020年3月15日
其他

Kafka为什么这么快?

大多数数据库、队列和其他形式的持久性中间件都是围绕全能服务器(或服务器集群)和瘦客户端的概念设计的。客户端的实现通常被认为比服务器端简单得多。服务器会处理大部分的负载,而客户端仅充当服务端的门面。
2020年3月14日
其他

聊一聊Java中的文件锁

要么阻塞直到获得一个锁,要么抛出一个异常。例如,如果指定的区域已锁定,则会引发OverlappingFileLockException。有关可能的异常的完整列表,请参见Javadoc。我们还可以使用
2020年3月12日
其他

硬货 | 浅谈 CAP 和 Paxos 共识算法

假如要满足可用性,因为网络已经隔离,也就没办法达到一致性,这种情况多发生在互联网行业中,比如新闻等对数据一致性要求不高但对可用性要求高的情况下,毕竟,用户压根看不了新闻比看不到及时新闻要重要的多。
2020年3月11日
其他

硬货 | Redis 性能问题分析

倍。)。但节省空间的数据结构,其算法的复杂度可能很高。所以,这里就需要在具体问题面前做出权衡。欢迎关注公众号:朱小厮的博客,回复:1024,可以领取redis专属资料。
2020年3月9日