自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知识点滴

追寻唯一真理、极致、最优

  • 博客(79)
  • 资源 (1)
  • 收藏
  • 关注

原创 OkHTTP

一:概述本章内容着重点在于简单封装GET与POST请求的工具类,并介绍OkHttpClient框架相关重要组件源码。二:常用工具类简单封装2.1 GET请求 public static String getTest() throws IOException { // 创建客户端 OkHttpClient client = new OkHttpClie...

2020-05-20 10:59:14 385 6

原创 TCP(七) -- 四次挥手

一:摘要概述相见时难别亦难,东风无力百花残。经历三次握手顺利会师,MTU与MSS对数据包大小限制,滑动窗口对于发送端流量控制,拥塞控制对网络状态的控制,以及三次握手过程中的连接队列详解。最后就是尘归尘土归土,来到了释放连接说再见的时刻。本文将详细阐述四次挥手的过程、状态变化以及是否可以不需要四次挥手的一些验证!本文中很多图是来源于张师傅的掘金小册,已经和作者联系同意,大家有兴趣可以购买改小册仔细...

2019-12-31 14:31:08 362

原创 TCP(六) -- 重传与确认

一:摘要概述TCP是可靠的传输层协议,网络层采用不靠谱的IP协议导致其自身必须保证数据传输的可靠。其中最终要的就是将丢失的数据包进行重传,当数据包发送后TCP就会开启计时器,当计时器达到阈值且发送的数据包未被数据接收方确认就会重新传递丢失的数据包。当然,重传的前提就是需要确认机制。本文将详细介绍重传与确认,也会涉及到快速重传与延迟确认的概念二:超时重传模拟如下编辑一段packetdrill脚...

2019-12-26 08:52:10 1476

原创 TCP(五) -- 连接队列

一:摘要概述客户端与服务端经过三次握手环节创建连接,详细过程已经在文章TCP(二) – 三次握手中阐述。但是文中还存在关键性疑问:服务端如何保存创建的连接当连接数量超过限制时服务端如何处理二:...

2019-12-23 11:43:10 633

原创 TCP(四) -- 流量控制

一:摘要概述TCP作为一个可靠的传输层协议,其精髓就是一系列如滑动窗口、拥塞避免等手段控制流量。可以根据服务器处理速度以及网络情况调整数据传输速率,当然整个过程对于开发人员来讲是透明的。本文将从滑动窗口、拥塞控制两个方面详解TCP对流量控制做的操作二:接收窗口服务器处理数据的能力有限,不可能无限制的接收数据。在三次握手的过程中有一个字属性专门用于标记接收窗口大小,三次握手过程告诉对方接收窗口...

2019-12-17 17:21:17 590

原创 TCP(三) -- MTU/MSS

一:摘要概述经过系列文章第二篇TCP(二) – 三次握手之后,已经清晰TCP建立连接过程。但是最终的的操作还是要落地到数据传输,不管怎么设计每一步都是为数据传输做铺垫与保障。当客户端亦或是服务端需要向对方发送100M数据,会直接一次性发送?如果不是一次性发送那么会对该数据包做什么操作?这些操作的根据又是什么?接下来就需要带着问题一一解答二:以太网限制网络传输中数据经由应用层 – 传输层 –...

2019-12-17 11:33:54 710

原创 TCP(二) -- 三次握手

一:摘要概述系列第一文TCP(一) – 初识TCP中描述了TCP是一个面向连接的传输层协议,这也是TCP协议保证可靠性的重要一环。客户端与服务端建立连接的方式就是通过三次握手,三次握手的过程中将会交换大量数据信息。本文的目的就是详细解释TCP三次握手的过程、状态变更以及交换的初始数据信息二:协议标志第一篇文章中提到TCP协议头有一个Flags标志,标志中的信息代表了数据包的类型。三次握手的...

2019-12-16 16:26:05 334

原创 K8S之路(一) -- Kubeadm搭建K8S集群

一:摘要概述Kubernetes简称K8S,8指代中间八个字母,希腊语舵手。大众理解的K8S都是对容器进行管理,Docker另外含义集装箱,命名K8S的初衷就是希望可以对这些集装箱进行管理。有伟大愿景的组织才能做出伟大的贡献,K8S的划时代后续正文中慢慢体会,本文将帮助小白新手搭建K8S集群。别被集群吓到,直白点就是K8S运行环境,只不过多加点节点机器二:软硬件准备硬件的相关要求官网上有明确...

2019-12-06 11:24:53 327

原创 Docker(五) -- Harbor镜像仓库

一:摘要概述Docker制作的应用镜像需要进行保存,Docker自身提供的仓库仅仅满足基本的存储等行为。对于鉴权、UI等方面支持薄弱,市面上比较流行的私有镜像仓库就是使用Harbor。本文将详细介绍Harbor的安装、HTTP的支持、基本的镜像上传下载操作,其余更多高级功能留待自行了解二:软件安装Harbor对于目标机器配置、相关软件版本都有着不同的要求,具体将会在下面一一描述2.1 硬件...

2019-12-03 16:09:28 198

原创 Docker(四) -- Dockerfile文件编写

一:摘要概述前面的文章中详细介绍了Docker的镜像、容器、文件组件,但是使用Docker最关键的一步还是编写Dockerfile文件,通过Dockerfile文件将应用项目构建为镜像使用。下面将详细介绍如下几个部分:远程连接DockerDockerfile常用命令编写文件注意事项应用镜像构建实战二:远程连接DockerDocker安装的文章中介绍过Docker Engine包括...

2019-12-02 16:06:24 737 1

原创 Junit5(一) -- 参数化测试数据来源

一:摘要概述本系列文章将学习使用Junit5框架设计单元测试用例,单元测试是很多开发人员不愿意写也无意识操作的事情。但是经过实践发现,单元测试的编写不仅仅可以充分拆解代码逻辑,并且对于代码设计,代码质量把控有着很积极的意义二:依赖引入 <dependency> <groupId>org.junit.platform</gro...

2019-11-29 14:00:35 1994

原创 NFS挂载 CentOS7

一:服务端安装准备NFS直接理解就是文件分享,分享肯定涉及到服务端与客户端,但是强调一台物理主机既可以做服务端,也可以做客户端。构建NFS文件分享需要安装nfs服务与rpcbind// 检查服务是否安装rpm -qa | grep nfsrpm -qa | grep rpcbind// 如果本机有相关安装想要重新卸载安装执行如下命令yum remove -y 上面命令查询到的结果y...

2019-11-27 13:38:36 320

原创 Centos7 -- Docker安装

一:文件下载官方下载地址:https://download.docker.com/linux/static/stable/x86_64/官方安装文档:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries二:文件安装将下载的tgz压缩包解压后得到docker文件夹,将文件夹所有可执行...

2019-11-26 13:25:01 124

原创 Docker(三) -- 文件存储

一:简要概述21世纪最重要的是什么?数据!数据!数据!数据分析,大数据时代,掌握海量有意义数据等于掌握未来。任何应用迭代、升级、优化都需要依赖数据说话,精准推送,用户画像等等。Docker的文件系统处于沙盒环境中,也就是随着容器销毁数据也就灰飞烟灭,显然这不是喜闻乐见的结果,为了数据实现安全、共享、持久等特点,必须将沙盒环境的文件持久化到宿主机系统中。Dokcer中提供三种数据文件交换的方式,B...

2019-11-25 13:46:23 599

原创 Docker(二) -- 容器Container

一:简要概述上一节Docker镜像中详细讲解了相关Docker安装以及Docker基础镜像的知识,但是Docker的核心还是容器。它是Docker封装管理应用程序的集装箱,可以理解为一个箱子。本节的要点就是介绍有关容器Create、Start、Run、Pause、Delete、Stop、Exec等知识二:容器状态本图片复制于有明大佬掘金Docker小册,感兴趣的朋友推荐购买这个小册,理论知...

2019-11-21 11:00:26 279

原创 Docker(一) -- 镜像Images

一:简要概述Docker目前主流虚拟容器化技术代表,吹逼不会Docker那简直就像是疯狂原始人,太LOW!!认识使用Docker没必要理解那些晦涩的概念,随着使用深入领悟它的好处就够了。Docker生态中接触最多的其实就是Docker Engine,典型的C/S架构。包括后续文章将会分析的四大组件镜像、容器、网络、数据卷都属于Docker daemon管理,命令交互都属于Docker cli部分...

2019-11-19 17:26:05 633

原创 网络协议(五) -- 传输限制

一:前情概述下载100M资源数据传输的过程一帆风顺么?100M的数据瞬间写入?前面介绍TCP首部的时候讲到序列号就提到其核心作用为数据接收端将拆分的数据包进行重新组装。也就是说一个完整的应用层数据包会在传输过程中经历拆分的过程。同时,还有一个问题值得思考的是如果接收端是一个小霸王,内存和处理能力都有限,那么数据发送端还要一直不停的发送数据?综上,引出本文两个核心的议题:数据包传输过程中的拆包...

2019-11-18 08:50:14 801

原创 网络协议(四) --谈谈TCP首部

一:前情概述应用层数据报文到传输层时,若采用TCP协议则会在其报文头部添加TCP报文头,同理当服务端接收到数据报文解析到传输层时也会根据TCP报文头进行相应的逻辑处理。TCP首部蕴藏大量协议数据信息,学习TCP必须抽丝剥茧将其吃透二:端口PortWireshark抓包显示在TCP首部前两个字段就是源端口与目的端口,端口号为什么要在传输层协议中携带?真相只有一个,定位!!网络数据包如何确定...

2019-11-13 17:09:05 314

原创 网络协议(三) -- 三次握手与四次挥手

一:前情概述TCP是可靠的面向连接的双全工协议,面向连接的特性一定程度上保证了TCP协议的可靠性,横向对比同是传输层的无连接UDP协议

2019-11-13 11:07:54 356

原创 网络协议(二) -- 子网与子网掩码

一:前情概述通过上一篇文章网络协议(一) – 网络基础TCP/IP大概可以知道的是该模型中将网络数据传输过程划分为四层,应用层处理用户数据、传输层逻辑通信、网络层目标计算机定位连接、链路层数据传输。任何交流的开始理所当然都需要建立连接,本文将涉及到DNS、IP、ARP、子网掩码、MAC等相关知识二:广播传递同一个网络线路有许多的计算机连接,所以消息的传递使用广播的方式进行。也就是当你传递给...

2019-10-28 11:18:11 668

原创 TCP(一) -- 初识TCP

一:前情概述互联网将世界角落的计算机连接成一体的网络,沟通就需要定制通用协议标准进行规范。如HTTP、SMTP、NFS、SNMP、IP、TCP、UDP等等耳熟能详的协议,单一职责是优秀的设计理念,TCP/IP协议模型可以理解为不同职责协议的组合,从而形成完整的国际协议标准模型二:网络分层优秀的架构理所当然需要保持模块独立,各司所职,TCP/IP协议模型将不同职责的协议划分为四个分层即:应用层...

2019-10-24 15:54:43 194

原创 RbbitMQ(五) -- 100%消息投递消费

一:前言概述生产者生产消息到消费者消息消费,中间需要生产者将消息发送到交换器,再由交换器路由到队列存储,然后消费者进行消息消费。在没有任何设置情况下,中间可能存在以下几种情况导致消息丢失:消费者将消息发送到交换器因为RabbitMQ内部原因丢失消息交换器将消息路由到队列,因为队列不存在等因素导致消息丢失队列中存储的消息在消费者未消费时RabbitMQ服务宕机导致消息丢失消费者消费消息...

2019-10-15 17:28:49 298

原创 Dubbo调优 -- 限流策略

一:前情导读高并发环境下若生产者不能及时处理请求造成大量请求线程积压,最终会演变为大面积服务崩溃现象产生。根据服务特点设定合理的请求拒绝策略,保证服务正常运行是本文重点。当然必须区别于负载均衡只能分配流量而不能限制流量二:消费端connections二:生产端executes一个只能在生产者即dubbo:service亦或是其子标签dubbo:method中配置的属性,消费者中配置不会生效...

2019-10-11 17:43:57 1161

原创 ES(一) -- ES 6.5.4部署

一:摘要概述是什么:ElasticSearch为目前比较流行的全文搜索引擎,底层技术封装Apache Lucene实现扩展点:相对于Apache Luence而言ES还实现分布式文件存储、实时数据分析、通过服务器扩展可以达到PB级别结构化/非结构化数据处理进步性:Apache Luence操作及其复杂,不信自己去试试。但是ES封装以后对外提供RESTFull Web接口,入门堪称精简H...

2019-09-23 19:30:15 1010

原创 RabbitMQ(四) --消费者Consumer

一:摘要概述经过前面三篇文章的学习,对于RabbitMQ中间件应该处于拨开云雾见青天阶段。本文将趁热打铁,完善RabbitMQ基础应用最后一个消费版块。当然文中会持续深入讲解有关消息分发、消费端确认等中阶特性二:消息消费MQ队列可以理解为物品寄存中心,放进去总要拿出来用,一直放着没有利息还会持久增加成本引发系列问题。MQ存储的消息使用有两种途径,RabbitMQ服务推送、消费者客户端拉取2...

2019-09-18 19:29:08 4611

原创 RabbitMQ(三) -- 消息与队列进阶

一:前请概述RabbitMQ(一) – 初识RabbitMQ :通过AMQP协议触摸RabbitMQ整体结构设计RabbitMQ(二) – 交换器与队列API探索 :完成RabbitMQ服务端结构基础学习RabbitMQ(三) – 消息与队列进阶:本文将会是RabbitMQ基础篇最倒数第二篇,同时也是进阶RabbitMQ第一篇文章。内容将会由基础消息生产衍生到TTL、Priority、Ma...

2019-09-16 23:54:06 312

原创 RabbitMQ(二) -- 交换器与队列API探索

一:前情概述第一篇文章RabbitMQ(一) – 初识RabbitMQ中对RabbitMQ整体进行了简介,旨在帮助阅读本系列文章的朋友建立初步的概念。前文中使用到的API并未深入的进行学习理解,本文将从RabbbitMQ应用服务部分即Broker所包含的交换器与队列两方面深入学习二:深入交换器分类交换器可以理解为生产者与队列的第三者,队列是RabbiMQ最终存储数据的位置,但是生产者并不会与...

2019-09-10 15:05:06 308

原创 RabbitMQ(一) -- 初识RabbitMQ

一:RabbitMQ简介RabbitMQ是使用Erlang开发基于AMQP协议,支持多客户端的一个目前比较流行的消息队列中间件,相对的还有很多开源的MQ产品如RocketMQ、ActiveMQ、Kafka等等。本文不会对繁多的MQ产品做技术选型比较,重点在于介绍MQ相关知识,个人理解消息队列与数据库在某些方面如数据存储来讲并无区别。只不过因为某些特点所以在特定场景下需要使用到消息队列,某些场景下...

2019-09-04 11:04:49 288

原创 Rpm -- MySQL8.0 -- CentOS7

一:概述前面的准备工作与安装MySQL5.7一致,都需要先清理掉原来的MySQL依赖与mariadb数据库。本文将通过rpm的方式安装MySQL8数据库二:相关操作2.1 数据库安装// 安装yum存储库yum -y install mysql80-community-release-el7-1.noarch.rpm// 安装MySQL服务yum -y install mysql-...

2019-09-03 19:11:33 80

原创 Erlang 21.x _ RabbitMQ3.7.17 _ CentOS7

一:概述本文将描述在CentOS7上安装RabbitMQ3.7.17,当然前提是需要安装Erlang,本文采用Erlang版本为21.x。具体相关RabbitMQ与Erlang版本兼容可以查阅RabbitMQ官网,RabbitMQ安装的方式很多,接下来介绍的将是通过yum安装。Erlang采用RabbitMQ官网剥离的零依赖版本,通过Bintray Yum存储库下载安装。其余CentOS版本亦或...

2019-09-03 14:46:26 677

原创 JVM(三)-- 垃圾回收

一:风骚概述JVM中垃圾收集算法主要有复制算法、标记–清除、标记–整理、分代收集,每种垃圾收集器可以说都是一种或多种垃圾收集算法的实现。堆空间分代、垃圾收集器、垃圾收集算法三者的关系可以用以下特点概括:堆空间:不同对象根据存活时间内存大小等特点分布在堆不同空间收集算法:不同堆空间对象回收率等存在明显差异,选用不同特点垃圾收集算法收集器:收集算法实例即垃圾收集器二:回收算法不同垃圾收...

2019-08-27 17:52:44 155

原创 Rpm -- MySQL5.7.27 -- CentOS7

一:下载准备如题所示,本文介绍通过Rpm方式在CentOS7系统中安装MySQL5.7.27。开始前需要下载相关Rpm依赖包,个人喜欢通过官网下载。既然都来百度安装方法了就最简单粗暴的操作下载第一个如下图所示506.5M安装包即可二:清理环境2.1 删除MySQL首先系统中可能已经安装过MySQL相关组件,避免版本冲突等问题需要先清理相关内容// 查询MySQL安装组件信息rpm -...

2019-08-21 11:31:24 567

原创 JVM(二) -- 对象详解

一:基础概述JVM(一) 内存分配文章中谈了虚拟机运行时内存区域的划分,其中堆作为最大的内存区域存储几乎所有对象实例。本文将从对象结构、内存分配、对象访问、死亡判断、引用类型等几方面针对对象进行系列阐述,更深层次认识面向对象到底面向的是什么二:对象结构2.1 对象头区域划分为三块区域,其中类型指针与数组长度都比较特殊,有可能并不存在该内存区域哈希码、GC年龄、偏向锁标志等信息为对象自...

2019-08-20 21:57:01 168

原创 弱肉强食信号量 --Semaphore

一:风骚概述前面介绍了计数器CountDownLatch与栅栏CyclicBarrier,本文介绍最后一个并发工具类Semaphore信号量。该工具类用于限流,有点类似于令牌桶。使用共享锁实现,线程争抢桶中令牌,成功则执行,失败则等待二:初始化令牌桶中令牌初始化数量在实例化对象时传入,使用AQS锁标记state维护保存。需要注意这个令牌数量并不是固定值,可以在程序运行过程中动态增长,这一点后...

2019-08-07 19:45:43 248

原创 JVM(一) --内存区域

一:运行内存示意图学习JVM虚拟机第一步永恒的主题一定是内存划分,只有清晰知道运行时内存区域结构划分、对应内存内容才能更好的理解垃圾回收、对象内存分配等知识。整体来讲辨识运行时内存五块区域可以从线程安全、内存作用等方面掌握二:堆内存程序运行过程中几乎所有对象实例、数组等都被存放在堆内存中,可以说堆内存是内存占用最大的一个区域。当然,占用内存自然也要释放内存,后续学习的垃圾回收主战场将在堆展...

2019-08-06 19:38:05 142

原创 相濡以沫共进退 -- CyclicBarrier

一:风骚概述LOL进入游戏等待,很多召唤师都喜欢说你家用的小霸王吧?等待最慢一个召唤师加载100%后再开始展开召唤师峡谷的剧情,保证游戏公平。其实对于倒数计数器CountDownLatch与栅栏CyclicBarrier的区别个人认为仁者见仁智者见智,场景有重叠与特例,只要掌握其核心实现原理与功能,才能选择最佳的实现方式二:重要属性lock:独占锁保障线程安全trip:conditio...

2019-08-01 13:10:34 233

原创 执子之手与子偕老 -- CountDownLatch

一:风骚概述当方法A包含五个模块,如果串行执行将会消耗五个方法耗时之和。如果让五个模块在多线程作用执行,主线程等待子线程执行完毕后再返回,耗时将是最长子线程耗时。等待线程执行猛然想到join(),但是这里需要各个模块并发执行,重点就在于主线程与子线程执行状态的通信。JDK中提供并发工具类CountDownLatch实现该场景,若不具备AQS知识请绕道避免浪费时间二:线程等待API十分简单,若...

2019-07-30 11:09:41 144

原创 CAS原子操作 -- JDK实现原子操作类

一:概述多线程的数据安全问题一直是比较常见的多线程问题,衍生出系列如 ++ 运算线程安全,dubbo、long等64位操作数据安全问题。Java自JDK1.5开始,为基本类型、数组、引用对象类型等数据都提供了对应的原子操作类,即线程安全的操作类,其底层采用Unsafe类实现二:基础类型基本类型原子操作类JDK中提供三种实现,AtomicInteger、AtomicLong、AtomicBoo...

2019-07-29 15:59:06 153

原创 Spring应用 -- Scheduled

一:简述定时任务定时任务经常有文章拿Scheduled、Quartz、Timer进行比较,确实三者的差距还是比较明显的。而且对于一个初学者并不是很友好,特别是Scheeduled、Quartz容易搞混。这篇文章将专门介绍Spring提供的定时任务Scheduled使用方法及注意事项,后面再讲解Quartz定时任务然后再做比较。至于Timer比较简单,一笔带过即可二:XML配置经过前面Spri...

2019-07-17 20:11:10 340

原创 唯一限定私有量 -- ThreadLocal

一:概述首先搞清楚这个类作用在于为线程提供局部变量操作,其次就需要根据这个作用讨论它的实现原理以及一些可能出现的问题如内存泄漏等二:ThreadLocalMapThreadLocal与ThreadLocalMap的关系我理解为包装袋与包装品的关系,ThreadLocal只是为其内部类ThreadLocalMap提供一层包装,撕开虚伪的面具,发现面具下隐藏就是ThreadLocalMap2....

2019-07-16 13:47:10 416 2

Redis读书笔记(设计实现PDF)

历时两个月学习Redis整理的读书笔记,经过三次修改整合。主要资源信息来自于黄建宏大神的Reids设计与实现原理第二版、老钱在掘金小册书写的Redis深度探险。内附Redis设计与实现原理PDF第二版

2018-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除