- 博客(16)
- 收藏
- 关注
转载 Gossip协议
一、背景我是一个小病毒,其他病毒都叫我小 B,我长得就是下图这个样子了。冠状病毒我现在已经有 100 nm 大小了,我还有很多触角,人类把我的触角称为冠,所以给我起了个学术名:冠状病毒。对于这个学术名,我一直不满意,怎么能用外貌来取名呢,这是以貌取毒。我出生在一个蝙蝠身上,每到晚上,这只动物就到处觅食,它最喜欢的就是在森林中觅食,但最近森林的范围急剧减少,它不得不到人类居住的城市来觅食,看着五颜六色的灯光,我如痴如醉。出生在一只蝙蝠身上这只蝙蝠携带了 100 多种病毒,比如埃博拉病毒、MER
2022-05-15 23:07:46
752
转载 TCP 重传、滑动窗口、流量控制、拥塞控制
相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。那么,TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。今天,将重点介绍 TCP 的重传机制、滑动窗口、流量控制、拥塞控制。重传机制TCP 实现可靠传输的方式之一,是通过序列号与确认应答。在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答
2021-05-25 16:48:05
318
转载 SpringBoot——自动装配原理
先看看SpringBoot的主配置类:里面有一个main方法运行了一个run()方法,在run方法中必须要传入一个被@SpringBootApplication注解的类。@SpringBootApplicationSpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就会运行这个类的main方法来启动SpringBoot项目。那@SpringBootApplication注解到底是什么呢,点进去看看:发现@@SpringBootApplicati
2021-05-20 15:30:54
208
转载 HTTPS详解
每篇文章都希望你能收获到东西,这篇将带你深入 HTTPS 加解密原理,希望看完能够有这些收获:明白 HTTPS 到底解决了什么问题理解对称加密与非对称加密的原理和使用场景明白 CA 机构和根证书到底起了什么作用Why HTTPS近几年来,各大公司都在大力推进 HTTPS 的建设。Google Chrome将非 HTTPS 的网站标注为「不安全」,苹果要求 APP 中需要使用HTTPS进行通信,微信小程序也要求使用HTTPS协议。那么,我们为什么非要做这么一件事呢?我们先来看看H
2021-05-14 14:30:24
1726
转载 Seata分布式事务框架
1. Seata 概述Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。目前github上已经有 12267 颗星了,也很活跃,最新的提交时间很多都是几天前。首先我们回顾一下在单体应用中,例如一个业务调用了3个模块,他们都使用同一个数据源,是靠本地事务来保证事务一致性。但在微服务架构中,这3个模块会变为3个独立的微服务,各自有
2021-04-28 17:41:40
136
转载 DDD领域驱动设计
从遇到问题开始当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的。再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备。但是最近由于各种原因,导致服务经常出故障。所以,我们希望通过各种措施提高服务的质量和稳定性。其中的一个措施就是希望能做一个灰度发布的平台,这个平台可以提供
2021-04-27 16:33:03
115
转载 DMA和零拷贝
前言磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效的减少磁盘的访问次数。这次,我们就以「文件传输」作为切入点,来分析 I/O 工作方式,以及如何优化传输文件的性能。正文为什么要有 DMA 技术?在没有 DMA 技术前,I/O 的过程是这样的:CPU 发出对应的指令给磁盘控制器,然后返回;磁盘控制器收到指令后
2021-04-16 15:03:16
844
1
转载 IO多路复用
为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势。为了方便理解,以下所有代码都是伪代码,知道其表达的意思即可。Let’s go阻塞 IO服务端为了处理客户端的连接和请求的数据,写了如下代码。listenfd = socket(); // 打开一个网络通信端口bind(listenfd); // 绑定listen(listenfd); // 监听while(1) { connfd = acce
2021-04-15 23:58:03
108
转载 Java8 全新Stream 机制详解
Java8 全新Stream 机制详解课程:stream概要与产生背景lambada 表达示详解Stream执行机制解密stream 概要首先要澄清的是 java8 中的stream 与InputStream和OutputStream是完全不同的概念, stream 是用于对集合迭代器的增强,使之完成 能够完成更高效的聚合操作(过滤、排序、统计分组)或者大批量数据操作。此外与stream 与lambda 表达示结合后编码效率与大大提高,并且可读性更强。下面展示一些 内联代码片。// 获取所有
2021-04-15 23:38:41
358
转载 OIDC认证+授权
五分钟理解什么是 OIDC (OpenID Connect)什么是 OIDC?OIDC 的全称是 OpenID Connect,是一套基于 OAuth 2.0 的认证 + 授权协议,用于用户身份认证,将用户数据安全地暴露给第三方。OIDC 与 OAuth 2.0 有何不同?OAuth 2.0 是用于授权的行业标准协议。OAuth 2.0 致力于简化客户端开发人员的工作,同时为 Web 应用程序,桌面应用程序,移动电话和物联网设备提供特定的授权流程。以上是 OAuth 2.0 的官方定义。我们举一
2021-04-13 01:04:29
5502
原创 Redis知识点总结
1.在分布式数据库中CAP原理CAP+BASECAPC:Consistency(强一致性)A:Availability(可用性)P:Partition tolerance(分区容错性)注意:分布式架构的时候必须做出取舍。一致性和可用性之间取一个平衡。多余大多数web应用,其实并不需要强一致性。因此牺牲C换取P,这是目前分布式数据库产品的方向经典CAP图CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。因此,根
2021-04-11 16:56:32
388
原创 MySQL总结
一、为什么要学习数据库数据库的好处1.持久化数据到本地2.可以实现结构化查询,方便管理二、数据库的相关概念 1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 3、SQL:结构化查询语言,用于和DBMS通信的语言三、数据库存储数据的特点 1、将数据放到表中,表再放到库中 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 3、表具有一些特性,这些特性定义了数据在表中如何存
2021-04-11 16:27:23
281
原创 Java并发编程总结
1进程/线程是什么?进程是“执行中的程序”,进行资源分配和调度的独立单位,线程是进程的实体,一个进程可以拥有多个线程,线程的上下文切换比进程要快,线程之间共享地址空间和其他资源。2线程状态?Thread 的源码中定义了6种状态:new(新建)、runnnable(可运行)、blocked(阻塞)、waiting(等待)、time waiting (定时等待)和 terminated(终止)。线程状态转换如下图所示:join()在线程中调用另一个线程的 join() 方法,会将当前线程挂起
2021-04-11 15:51:58
568
1
原创 JVM知识点总结
java 程序编译和运行过程详解java整个编译以及运行的过程相当繁琐,这里有个简单的例子。Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode);2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言(“semi-interpreted” language)。[外链图片转存失败,源站 Java 程序运行过程第一步(编译过程)创
2021-04-11 05:50:28
491
原创 Java集合
一、概览Collection是否有序是否允许元素重复是否允许null值实现优点缺点默认容量扩容因子扩容ListArrayList是是是数组实现无容量限制,查询快,轻量级增删慢,线程不安全1011.5倍LinkedList是是是链表实现增删快查询慢,双向链表,线程不安全1011.5倍Vector是是否数组实现线程安全,查询快重量级,存在性能问题,增删慢1012倍SetHashSet否否
2021-04-10 01:58:38
270
原创 Java基础知识点
一、数据类型数据类型分类:Java的数据类型分为两大类:基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔 。引用数据类型:包括 类 、 数组 、 接口 。基本数据类型四类八种基本数据类型:boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。
2021-04-10 01:38:17
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人