- 博客(116)
- 收藏
- 关注
原创 肝到头秃!百度强推并发编程笔记我爱了,原来这才叫并发
并发编程随着Java程序员的大幅增长,人们对Java程序员的要求也是越来越严苛。从现在Java岗的招聘需求来看,并发编程已经是我们Java程序员避不开的坎了!编写正确的程序并不容易,而编写正确的并发程序就更难了。与顺序执行的程序相比,并发程序中显然更容易出现错误。而且并发性错误通常并不会以某种确定的方式显现出来。当这些错误出现时,通常是在最糟糕的时刻,例如在正式产品中,或者在高负载的情况下,当并发性错误被发现时,情况总是比较紧急甚至可以打倒整个项目团队,毁掉整个项目。但现在其实挺多人对于并发是知其然
2021-02-25 13:53:57 294
原创 扫盲帖:聊聊微服务与分布式系统
今天和大家聊一聊分布式系统的相关概念及其常见分布式组件和设计思想(不涉及计算机科学中分布式系统的技术理论之类的东西),之前为了准备这次的面试我是把市面上的很多分布式组件都看了一遍,我们公司所用的分布式组件基本也没出我了解的那个知识圈(公司用了Apollo我没提前了解,大E了)单体应用与集群单体应用、集群和微服务,这个标题一出你们可能就知道我想说啥了,emm,就是架构的演进过程,很多人可能都看过相关知识,不过我为了文章的完整性还是打算简单讲一讲。首先是单体应用,在一个业务的起步阶段,往往.
2021-02-25 13:53:26 380
原创 漫谈分层架构:为什么要进行架构分层?
为什么要分层高内聚:分层的设计可以简化系统设计,让不同的层专注做某一模块的事 低耦合:层与层之间通过接口或API来交互,依赖方不用知道被依赖方的细节 复用:分层之后可以做到很高的复用 扩展性:分层架构可以让我们更容易做横向扩展如果系统没有分层,当业务规模增加或流量增大时我们只能针对整体系统来做扩展。分层之后可以很方便的把一些模块抽离出来,独立成一个系统。2、传统MVC架构优点:关注前后端分离缺点:模型层分层太粗,融合了数据处理、业务处理等所有的功能。核心的复杂业务逻辑都放到模型层,导
2021-02-25 13:52:51 825
原创 SpringBoot事件监听机制及观察者/发布订阅模式详解
本篇要点介绍观察者模式和发布订阅模式的区别。 SpringBoot快速入门事件监听。什么是观察者模式?观察者模式是经典行为型设计模式之一。在GoF的《设计模式》中,观察者模式的定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。如果你觉得比较抽象,接下来这个例子应该会让你有所感觉:就拿用户注册功能为例吧,假设用户注册成功之后,我们将会发送邮件,优惠券等等操作,很容易就能写出下面的逻辑:@RestController@RequestMap
2021-02-25 13:52:20 364
原创 从根上理解高性能、高并发:深入计算机底层,理解线程与线程池
前言作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然于胸,什么线程池、零拷贝、多路复用、事件驱动、epoll等等名词信手拈来,又或许你对具有这些技术特征的技术框架比如:Java的Netty、Php的workman、Go的nget等熟练掌握。但真正到了面试或者技术实践过程中遇到无法释怀的疑惑时,方知自已所掌握的不过是皮毛。本篇概述本篇主要是从CPU这一层来讲解多线程以及线程池原理,力求避免复杂的技术概念罗列,尽量做到通俗易懂、老少皆宜。一切要从CPU说起你可能会有疑问,讲
2021-02-25 13:51:50 139
原创 创新!阿里首发微服务实施手册我粉了,原来微服务还可以这样玩
微服务相信大家在网上会看到很多帖子把分布式跟微服务放在一起讨论。确实,微服务就是一种分布式架构的设计方法。但是,在微服务概念还没有出现之前,分布式这个概念并不能引起人们的强烈关注,如果说自己擅长分布式架构设计,可能没有多少人理你,但如果说自己精于微服务架构设计,情况那就大不一样了。有关于微服务的优点,网上大把的文章已经说的很清楚了,我就不细说了,简单来说微服务能够创建一个“打不垮”的系统。以至于现在,微服务架构已经成为家公司技术 是否先进、是否具有规模发展的标杆配置。微服务虽然有很多实现技术,如Se
2021-02-25 13:51:19 99
原创 面试官:小伙子我们先来唠唠并发编程的几大核心知识点
并发编程算是Java的一个难点,经常做业务相关的程序员基本上用不到juc的包,但是这些知识点十分重要,所以不管在哪里,时刻保持学习真的很重要。(一)AQS概述Java并发编程的核心在于java.concurrent.util包,juc中大多数同步器的实现都围绕了一个公共的行为,比如等待队列、条件队列、独占获取、共享获取等,这个行为的抽象就是基于AbstractQueuedSynchronized(AQS)。AQS定义了多线程访问共享资源的同步器框架。简单来讲,AQS就好比一个行为准则,而并发包中
2021-02-25 13:50:47 132
原创 任务调度框架Quartz快速入门
Quartz是什么Quartz是一个功能强大的开源任务调度库,几乎可以集成到任何Java应用程序中,无论是超小型的独立应用还是超大型电子商务系统。它常用于企业级应用中:Driving Process Workflow:当新订单下达,可以安排一个30分钟内触发的任务,检查订单状态。 System Maintenance:安排每个工作日晚上11点将数据库内容转储到文件的任务。 Providing reminder services:提供提醒服务。Quartz还支持集群模式和对JTA服务。Q
2021-02-25 13:50:16 226
原创 轮子虽好,也要知其所以然!(Lombok操作实例)
前提自从进公司实习后,项目代码中能用 Lombok 的都用了,毕竟这么好的轮子要充分利用好。也可以减少一些 get/set/toString 方法的编写,虽说 IDEA 的插件可以自动生成 get/set/toString 方法,但是使用 Lombok 可以让代码更简洁。下面看看如何在 IDEA中如何安装 Lombok:安装打开 IDEA 的 Settings 面板,并选择 Plugins 选项,然后点击 “Browse repositories”在输入框输入”lombok”,得到搜索结
2021-02-25 13:49:45 124
原创 JVM的艺术-对象创建与内存分配机制深度剖析
引言本章将介绍jvm的对象创建与内存分配。彻底带你了解jvm的创建过程以及内存分配的原理和区域,以及包含的内容。对象的创建类加载的过程固定的类加载执行顺序: 加载 验证 准备 初始化 卸载 的执行顺序是一定的 为什么解析过程没有在这个执行顺序中?(接下来分析)什么时候触发类加载不一定,但是类的初始化如下四种情况就要求一定初始化。 但是初始化之前 就一定会执行加载 验证 准备 三个阶段。触发类加载的过程(由初始化过程引起的类加载)1):使用new ...
2021-02-25 13:49:12 164
原创 细节完美炸裂!GtiHub上点赞已破百万的并发编程四套全彩手册
并发编程的重要性对于各位Java开发的大佬的重要性,想必不需要楼主多BB了吧!同时并发编程这一方面也是面试中经常会问到的知识点,作为一面二面的重点考察内容,不仅要知其然,还要使其所以然!而且马上就是金三银四了,不管你现在想不想面试,准没准备面试,但是多学习一点知识,多做一些准备总是没错的!楼主近期偶然间得到了一份十分详尽的并发编程的四份小册,内容涵盖之广,讲述之深,理解之顺畅,还需各位看官细细品味!由于文章篇幅有限和不浪费大家过多的时间,以下只能为大家展示部分内容,小编已经为大家整合完毕,需要领
2021-02-24 16:18:03 114
原创 抖音上春晚,每秒1亿次“高并发”订单的业务,你怎么实现?
今年的春晚,不知道你有没有看。虽然春晚的内容已经引不起我的兴趣,但我还是特意关注了下。为啥?就冲着抖音花了 12 亿,这春晚如此高的并发流量,能不能顶住!结果……抖音:703 亿次红包互动,全程没有宕机哈哈,还是让我这个想看戏的看客失望了。(围笑)703 亿次,想想,肯定是每秒数以亿计的高并发啊,抖音能顶住,而且,全程没有宕机,说明它专门打造的火山引擎牛,技术也确实牛。就拿这个常见的抢红包来说,看似简单的红包模型,其实覆盖了很多并发点,比如:拆包算法,是用线性切割..
2021-02-24 16:16:14 203
原创 如何分表分库?业界有哪些常用方案?可能存在什么问题?
关于分库分表的这个问题,绝对是一个面试加分项。尽管你没有用过,但是面试官可能不太会追究你是否用过,可能就是考察一下,你是否懂这些知识点。如果能把这些回答出来,至少在面试官那里印象分哗啦啦的上涨。偷偷地告诉你,千万别说自己没用过,先把理论给讲清楚。如果往死里问你是否用过,那就得承认,没用过,你懂的~话不多说,咱们直接入主题。一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库
2021-02-24 16:14:02 135
原创 谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档
前言随着微服务和云原生相关技术的发展,应用程序的架构模式已从传统的单体架构或分层架构转向了分布式的计算架构。尽管分布式架构本身有一定的开发成本和运维成本,但它所带来的收益是显而易见的。在实现分布式应用程序时,我们必须考虑两个因素:网络协议和传输载荷的编码。从最早的 RMI+Java 原生序列化,到 HTTP+JSON/XML,业界一直在尝试寻找一种兼具高效性和可读性的方案。虽然在实践微服务的过程中,大家普遍愿意采用更具语义化的 HTTP+JSON 形式,但这种形式有其自身的局限性,比如其网络传输载荷
2021-02-21 15:31:50 1371 3
原创 springcloud实战:服务间通信——OpenFeign
Spring Cloud OpenFeignSpring Cloud OpenFeign是一个声明式的 HTTP客户端,它简化了HTTP客户端的开发,使编写Web服务的客户端变得更容易。使用Spring Cloud OpenFeign,只需要创建一个接口并注解,就能很容易地调用各服务提供的HTTP接口。Spring Cloud OpenFeign基于OpenFeign实现,它除了提供声明式的 HTTP客户端外,还整合了Spring Cloud Hystrix,能够轻松实现熔断器模型。Spr.
2021-02-21 15:31:18 273
原创 springcloud实战:服务间通信OpenFeign熔断
Spring Cloud OpenFeign熔断前面讲述了服务之间的相互通信,通过注解的形式,OpenFeign 的声明式HTTP客户端很容易做到不同服务之间的相互调用。我们的服务最终会部署在服务器上,由于各种原因,服务难免会发生故障,这时其他服务将无法调用故障服务,可能会一直卡在那里,导致用户体验差。针对这个问题,我们需要对服务接口进行错误处理,一旦发现无法访问,立即返回并报错,即捕捉到异常后立刻以可读化的字符串的形式返回到前端。基于以上问题,业界提出了熔断器模型。在Spring C.
2021-02-21 15:30:44 960
原创 springcloud实战:服务链路追踪Sleuth
服务链路追踪:Spring Cloud Sleuth我们知道,微服务之间通过网络进行通信,但在我们提供服务的同时,不能保证网络一定是畅通的。相反地,网络是很脆弱的,网络资源也有限,因此我们有必要追踪每个网络请求,了解它们经过了哪些微服务,延迟多少,每个请求所耗费的时间等。只有这样能更好地分析系统瓶颈,解决系统问题。在Spring Cloud 中,我们可以使用Spring Cloud Sleuth组件来实现微服务追踪。Spring Cloud Sleuth简介我们知道,Spring Cloud
2021-02-21 15:30:08 400
原创 微服务治理:CloudConsul和ZooKeeper
在前面的章节中,读者已经接触到了SpringCloud默认集成的服务治理框架Spring Cloud NetflixEureka。在本章,我们将接触到新的服务治理框架,以便读者在实际应用中有多种选择。服务治理简介服务治理是微服务架构的核心思想,用于实现各微服务实例的发现与注册。我们常说的服务的注册与发现其实分为两部分:服务注册:在一个微服务架构中,通常会提供一个注册中心,每一个微服务实例都会注册到注册中心。 服务发现:在服务通信中,每个微服务实例都通过注册中心发现其他微服务实例,通过向注册
2021-02-21 15:29:33 190
原创 SpringBoot接口幂等性实现的4种方案!这个我真服气
一、什么是幂等性幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。二、什么是接口幂等性在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第
2021-02-21 15:26:47 183
原创 鬼知道发生了什么?痛述阿里Java岗5轮技术面经历,险幸上岸
写在前面又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。面经分享今天给大家分享一个面试大厂的完整面经,小伙伴们可以对照下,这些面试题自己是否都会了呢?同时后面还整理了这些问题的一套面试解析文档及架构学习笔记资料,有需要的小伙伴麻烦转发后私信回复【面试】即可!一轮技术面(90分钟)hashmap和hash..
2021-02-21 15:26:08 190
原创 入阿里P6?最少啃完这本500页Java并发多线程源码笔记
写在前面:近年来在大厂的面试中,高并发不但占比较多,而且已经不局限于并发工具的使用,更多的会深入到底的层实现原理,这样能考察候程序员的内功,看其是否能知其所以然。关于市面上关于Java并发编程的资料感觉有些知识点不是很清晰,于是展开了对Java并发编程原理的讨论。在这收集整理了这些Java并发编程原理整理成书籍,分享给大家。目录由于笔记的内容太多,篇幅限制,下面只截取了部分内容展示。有想获取完整版笔记的朋友:评论+转发,关注我之后直接私信【笔记】即可来免费获取!...
2021-02-21 15:25:31 91
原创 阿里Java三面:高可用RabbitMQ集群的搭建及原理分析
前言任何一个服务,如果仅仅是单机部署,那么性能总是有上限的,RabbitMQ也不例外,当单台RabbitMQ服务处理消息的能力到达瓶颈时,可以通过集群来实现高可用和负载均衡。RabbitMQ 集群知多少通常情况下,在集群中我们把每一个服务称之为一个节点,在RabbitMQ集群中,节点类型可以分为两种:内存节点:元数据存放于内存中。为了重启后能同步数据,内存节点会将磁盘节点的地址存放于磁盘之中,除此之外,如果消息被持久化了也会存放于磁盘之中,因为内存节点读写速度快,一般客户端会连接内存...
2021-02-21 15:24:59 156
原创 我又吊打面试官了,凭借MySQL海量数据优化(理论+实战)
前言朋友们,又见面了,上篇文章咱们讲到MySQL分库分表的方法,这篇文章咱们就针对上一篇文章模拟在MySQL中海量数据的优化方法,文章干货较多,建议三连。提示:以下是本篇文章正文内容,案例仅供参考一、准备表数据咱们建一张用户表,表中的字段有用户ID、用户名、地址、记录创建时间,如图所示OK,接下来准备写一个存储过程插入一百万条数据CREATE TABLE `t_user` ( `id` int NOT NULL, `user_name` varchar(32) C.
2021-02-21 15:23:27 150
原创 膜拜!华为18级专家3年苦心整理分享深入浅出Docker文档
前言如今Docker无处不在,这是不争的事实。开发人员都很喜欢它,运维工程亦也需要它。他们都需要深入了解如何在关键业务环境中构建和维护符合生产级别要求的容器化应用,本文将帮助读者掌握它。对于认为Docker是开发人员专属工具的人来说,恐怕要准备好颠覆自己的认知了。容器化应用需要有地方运行,也需要有人来管理。如果认为只是开发人员来管理它,那就大错特错了,事实上运维需要构建和运行高性能、生产级别的Docker基础架构。对于专注于运维工作却尚未掌握Docker的朋友来说,日子恐怕不太好过。不过不必焦虑
2021-02-06 22:52:08 118
原创 微服务架构开发实战:ElasticStack实现日志集中化
常见日志集中化的实现方式有许多现成的可用于实现集中式日志记录的解决方案,它们使用不同的方法、体系结构和技术。理解所需的功能并选择满足需求的正确解决方案非常重要。日志托运有一些日志托运组件可以与其他工具结合起来建立一个端到端的日志管理解决方案。不同日志托运工具的功能不同。· Logstash:是一个功能强大的数据管道工具,可用于收集和发送日志文件。它充当经纪人,提供了一种机制来接受来自不同来源的流数据,并将其汇集到不同的目的地。Log4j和Logbackappender也可以用来直接从Spri
2021-02-06 22:51:34 225
原创 微服务架构开发实战日志与监控:微服务日志管理将面临的挑战
微服务的日志与监控:微服务日志管理将面临的挑战日志来自正在运行的进程的事件流。对于传统的JavaEE应用程序而言,有许多框架和库可用于日志记录。Java Logging (JUL)是Java自身所提供的现成选项。除此之外,Log4j、Logback和SLF4J也是其他一些流行的日志框架。这些框架都能很好地支持UDP及 TCP。应用程序将日志条目发送到控制台或文件系统。通常使用文件回收技术来避免日志填满所有磁盘空间。日志处理的最佳实践之一是关闭生产中的大部分日志条目,因为磁盘IO的成本很高。磁盘I
2021-02-06 22:50:58 516
原创 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档
前言对工程师而言,算法既是基础能力,也是进阶突破的必备能力。本文内容深入浅出,不仅涉及算法知识本身,更能让读者解决问题的思维升级。不论是面试准备,还是日常学习,本文都可以成为你进入算法世界的不二选择。相比在网上泛泛地刷题,本文更强调最优解和举一反三的能力。对算法原型的介绍也能帮助程序员更高效地准备面试与提升自己,以及在不断变化的题目中迅速找到思路。也是程序员求职或跳槽刷题人的优选之作!作者用丰富的工作经验和对算法的深刻理解,通过精辟的示例,把代码面试题目最优解解释得简明和“平易近人”。本
2021-02-06 22:50:26 536 2
原创 十年失眠架构师教你使用Docker来构建、运行、发布微服务
使用Docker来构建、运行、发布微服务可以说,Docker是目前市面上比较流行的容器技术之一。本节我们将带领大家一起使用Docker来演示如何构建、运行、发布微服务。Docker的安装原先,Docker只支持Linux环境下的安装。自从微软与Docker展开了深入合作之后,对于Windows平台的支持力度也加大了许多。目前,已经知道支持的Windows平台有Windows 10和Windows Server 2016。本文将基于Windows 10来演示安装的过程。本例所使用.
2021-02-06 22:49:53 161
原创 SpringBoot运行源码分析:Spring应用上下文创建
忽略信息配置经过以上步骤,ConfigurableEnvironment 的初 始化和准备工作已经完成。之后,程序又对环境中的忽略信息配置项“spring.beaninfo.ignore”的值进行获取判断,进而设置为系统参数中的忽略项。private void configureIgnoreBeanInfo(ConfigurableEnvironment environment) {//如果系统参数中 spring. beaninfo. ignore 为 nullif (System. get
2021-02-05 23:08:40 120
原创 SpringBoot运行源码分析:Spring应用上下文准备
Spring应用上下文的准备我们在上一节完成了应用上下文的创建工作,SpringApplication 继续通过 prepareContext方法来进行应用上下文的准备工作。首先,通过图 4-4 来整体了解一下 prepareContext 的核心功能及流程。配合流程图,看一下 SpringApplication 中 prepareContext 方法源代码及功能注解。private void prepareContext(ConfigurableApplicationContext.
2021-02-05 23:08:07 101 1
原创 SpringBoot运行源码分析:Spring应用上下文刷新
Spring应用上下文的刷新Spring 应用上下文的刷新,是通过调用 SpringApplication 中的 refreshContext 方法来完成的。SpringApplication 中 refreshContext 方法相关代码如下。private void refreshContext(ConfigurableApplicationContext context) {//调用 refresh 方法refresh(context);if (this.registerShutdow
2021-02-05 23:07:25 240
原创 java布道者耗尽20年的功力整理完结java实战第2版文档
前言简单地说,Java 8中的新增功能以及Java 9引入的变化(虽然并不显著)是自Java 1.0发布21年以来,Java发生的最大变化。这一演进没有去掉任何东西,因此你原有的Java代码都能工作,但新功能提供了更强大的新习语和新设计模式,能帮助你编写更清晰、更简洁的代码。就像遇到所有新功能时那样,你一开始可能会想:“为什么又要去改我的语言呢?”但稍加练习之后,你就会发觉自己只用预期的一半时间,就用新功能写出了更短、更清晰的代码,这时你会意识到自己永远无法返回到“旧Java”了。本文会帮助你跨过“
2021-02-05 22:53:00 111
原创 七种对象复制工具类,你最看好哪个?
日常编程中,我们会经常会碰到对象属性复制的场景,就比如下面这样一个常见的三层 MVC 架构。当我们在上面的架构下编程时,我们通常需要经历对象转化,比如业务请求流程经历三层机构后需要把它DTO 转为DO然后在数据库中保存。当需要从数据查询数据页面展示时,查询数据经过三层架构将会从 DO 转为 DTO,最后再转为 VO,然后在页面中展示。当业务简单的时候,我们手写代码,通过 getter/setter复制对象属性,十分简单。但是一旦业务变得复杂,对象属性变得很多,呢么手写代码就会成为程序员.
2021-02-04 23:41:16 156
原创 一文带你深扒ClassLoader内核,揭开它的神秘面纱
前言ClassLoader 可以说是 Java 最为神秘的功能之一了,好像大家都知道怎么回事儿(双亲委派模型好像都都能说得出来...),又都说不清楚具体是怎么一回事(为什么需要需要有什么实际用途就很模糊了...)。今天,我们就来深度扒一扒,揭开它神秘的面纱!Part 1. 类加载是做什么的?首先,我们知道,Java 为了实现「一次编译,到处运行」的目标,采用了一种特别的方案:先编译为与任何具体及其环境及操作系统环境无关的中间代码(也就是 .class...
2021-02-04 23:40:39 132
原创 SpringBoot接口幂等性实现的4种方案!这个我真服气
一、什么是幂等性幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。二、什么是接口幂等性在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第
2021-02-04 23:39:38 190
原创 被Netty搞昏了头,先学一下幂等性压压惊吧
一、前言今天本来应该学习netty基础传输的相关内容,但是由于对基础知识掌握的不足,出现学习的瓶颈,先学习一下幂等性压压惊,晚上再梳理一下netty的相关内容,认认真真学习,争取明晚可以完成netty基础传输相关内容,今晚就看一下幂等性吧!二、什么是幂等性?百度百科的解释幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使...
2021-02-02 22:47:40 131
原创 IDEA Spring Boot 自动化构建+部署
本文所有操作都基于Alibaba cloud Toolkit进行操作。1.插件安装在插件市场中下载安装。1.在IntelliJ IDEA顶部菜单栏中选择File>Settings。 2.在Settings对话框的左侧导航栏中单击Plugins。 3.在Plugins区域单击Marketplace。 4.在搜索栏中输入Alibaba Cloud Toolkit。 5.Search Results区域会出现Alibaba Cloud Toolkit,单击Install。6..
2021-02-02 22:46:51 345
原创 太强了,5幅图就拿下了ARP协议
前言在上一篇文章 别再恐惧 IP 协议 中, 我们了解到,网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。也就是说:只要在网络层确定了 IP 地址,就可以向这个目标地址发送 IP 数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。对于这段话不太了解的小伙伴强烈推荐翻看上篇讲解 IP 协议的文章 别再恐惧 IP 协议,有非常详细的解释和图例那么,ARP 就是用来实现由 IP 地址到 MAC 地址转化的一个网络层协议,当然,还有一个
2021-02-02 22:46:20 90
原创 哦哟!才知道,原来大厂的Redis分布式锁都这么设计
本地锁常用的即 synchronize 或 Lock 等 JDK 自带的锁,只能锁住当前进程,仅适用于单体架构服务。 而在分布式多服务实例场景下必须使用分布式锁2 分布式锁2.1 分布式锁的原理厕所占坑理论可同时去一个地方“占坑”:占到,就执行逻辑 否则等待,直到释放锁可通过自旋方式自旋“占坑”可以去Redis、DB、任何所有服务都能访问的地方。2.2 分布式锁演进一阶段// 占分布式锁,去redis占坑Boolean lock = red..
2021-02-02 22:45:18 121
原创 可以了,基于Redis和Lua实现分布式令牌桶限流
限流是一个很大的话题,准备把其中的所有限流器都实现一遍,以此也算全都写过了,到时候再用也不至于会心虚,毕竟真实写完成过。本文主要讲述了如何基于 Redis 与 Lua实现分布式令牌桶的限流方案。读前提问我觉得学习任何东西前都应该有自己的反问,这种反问基于标题给你的大概印象。带着问题来看文章,最后应该比盲目的看有收获,先提出几个基础的问题。限流是什么通过某种手段对某个时间段的并发访问请求进行流量限制,一旦流量达到限制阈值则可以拒绝服务,排队或等待,目的是防止系统因大流量或突发流量导致服务不可用
2021-02-02 22:44:48 269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人