- 博客(130)
- 资源 (1)
- 收藏
- 关注
原创 计算机网络基础(十七)---传输层-TCP连接的四次挥手
文章目录TCP四次挥手过程第一次挥手第二次挥手第三次挥手第四次挥手等待计时器为什么需要等待计时器?为什么是2MSL?文章内容概览上一篇文章中分享了TCP的三次握手,本文是相反的过程,是对TCP连接的释放TCP四次挥手过程还是假设这里有一个发送方结算机和一个接收方计算机,纵向为时间轴。连接正常的时候,双方是可以一直进行数据传输的。假设数据传输完成了,此时就会进行TCP连接的释放。假设发送方主动的进行了连接的释放第一次挥手发送方发送第一次挥手的报文,报文内容:FIN=1:该标记表示需要释放连
2021-01-23 23:50:30
355
原创 计算机网络基础(十六)---传输层-TCP的三次握手
文章目录TCP的三次握手TCP标记TCP三次握手过程第一次握手第二次握手第三次握手三次握手中关键的信息为什么发送方要发出第三个确认报文呢?为什么两次不行?三次握手是如何解决两次握手导致的问题?文章内容概览TCP的三次握手TCP标记TCP标记是TCP首部的其中一个字段。TCP标记占6个比特位,每位都有不同的含义对于三次握手,主要关注下边三个标记TCP三次握手过程假设有一个发送方计算机和一个接收方计算机,纵向为时间轴第一次握手假设首先是发送方主动和接收方建立连接,所以,发送方会第一次发
2021-01-23 23:08:52
1637
原创 计算机网络基础(十五)---传输层-TCP的拥塞控制
文章目录TCP的拥塞控制网络拥塞的根源TCP的拥塞控制和TCP的流量控制有什么区别?拥塞控制的两个算法慢启动算法拥塞避免算法文章内容概览TCP的拥塞控制当网络中的数据报文过多的时候,就会造成网络的拥塞网络拥塞的根源一条数据链路经过非常多的设备数据链路的各个部分都可能成为网络传输的瓶颈(网络中各种路由器的性能可能不一样、或者传输媒介性能有差别)网络对一些硬件设备的性能要求,大于可用资源,因此就导致了拥塞TCP的拥塞控制和TCP的流量控制有什么区别?流量控制考虑点对点的通信量控制(主
2021-01-23 22:31:13
510
2
原创 计算机网络基础(十四)---传输层-TCP的流量控制
文章目录TCP协议的流量控制文章内容概览TCP协议的流量控制流量控制是TCP协议特有的功能,对于UDP或者其它的一些协议,是没有流量控制流量控制,简单的来说就是,接收方希望发送方将数据发送的慢一些。一般来说,我们是希望越快越好,但是,还是需要考虑一些实际的情况。比如接收方不能那么快的去接收很大的流量,所以希望发送方的流量慢一些。这就是流量控制流量控制指让发送方发送速率不要太快流量控制是使用滑动窗口来实现的在TCP首部中有窗口这个字段,它占16个比特位,用来指明允许对方发送的数据量。在可靠
2021-01-23 15:51:12
927
原创 计算机网络基础(十三)---传输层-TCP的可靠传输
文章目录TCP协议的可靠传输选择重传文章内容概览TCP协议的可靠传输TCP的可靠传输是基于连续ARQ协议的ARQ协议中有两个重要的概念:滑动窗口和累计确认。这两个概念在TCP的可靠传输中同样适用TCP的滑动窗口以字节为单位假设有一段的字节流需要传输,滑动窗口的大小为7,这里是为了方便理解,所以窗口设的很小,实际情况下的窗口是很大的。窗口中的7个字节表示都是可以传输的,窗口左边的是已经确认的字节序号,窗口右边的是不允许发送的字节序号。图中的23表示的就是对方期待接收到的下一个字节,其实也就是
2021-01-22 23:46:19
214
原创 计算机网络基础(十二)---传输层-可靠传输的基本原理
文章目录停止等待协议情景1:发送方将数据发送出去之后,发生了丢失情景2:确认消息在传输过程中发生丢失情景3:确认消息很久才到达发送方连续ARQ协议文章内容概览停止等待协议假设现在将计算机分为发送方和接收方,之前的文章中有说到TCP是全双工通道的协议,也就是同一时刻计算机可以当做发送方,也可以当做接收方。下边是发送方计算机和接收方计算机的时间轴,停止等待协议的工作原理如下:发送方生成TCP数据(消息1),然后将其发送出去,经过一段时间之后,到达接收方接收方在接收到之后,再发送一个确认的消息,表示
2021-01-22 16:03:29
346
原创 计算机网络基础(十一)---传输层-TCP协议详解
文章目录TCP协议简介TCP协议的特点1.TCP是面向连接的协议2.TCP的一个连接有两端(点对点通信)3.TCP提供可靠的传输服务4.TCP协议提供全双工的通信5.TCP是面向字节流的协议文章内容概览TCP协议简介TCP(Transmission Control Protocol:传输控制协议)TCP协议是计算机网络中非常复杂的一个协议TCP数据报所处的位置TCP协议的特点1.TCP是面向连接的协议在上一篇UDP协议详解中有对面向连接进行了介绍,也就是在通信之前会先建立连接2..
2021-01-22 15:44:45
426
原创 计算机网络基础(十)---传输层-UDP协议详解
文章目录UDP协议简介UDP的特点1.UDP是一个「无连接」的协议2.UDP「不能保证可靠」的交付数据3.UDP是「面向报文传输」的4.UDP没有拥塞控制5.UDP的首部开销非常小文章内容概览UDP协议简介UDP(User Datagram Protocol:用户数据报协议)UDP相对于TCP来说,是一个非常简单的协议「数据报」:指的就是应用层所传输过来的一个完整的数据,「UDP不会对这个完整的数据进行处理,不会进行拆分,也不会进行合并了再传输」「从数据报的定义可以看出,UDP协议的数据长
2021-01-21 22:11:37
590
原创 计算机网络基础(九)---网络层-路由概述
文章目录文章内容概览在之前的文章中有了解到跨设备传输时,需要借助路由表来知道数据报下一跳的IP在路由表中有两列重要的信息,分别是:目的IP地址和下一跳IP地址,这两个IP形成映射的关系。在前边了解数据报转发时,都是直接使用的路由表,这样就会存在几个疑问「路由表中的下一跳地址是怎么来的?」「下一跳地址是唯一的吗?」「下一跳的地址是最佳的吗?」「路由器这么多,他们之间是怎么协调工作的?」这些问题就是网络层路由需要解决的问题,其实也就是需要一个好的「算法」去解决这些问题。所以,了解网络层
2021-01-21 20:21:48
317
原创 计算机网络基础(八)---网络层-ICMP协议
文章目录ICMP协议详解ICMP报文首部ICMP协议报文的两个种类差错报告报文询问报文ICMP协议的应用Ping应用Traceroute应用文章内容概览ICMP协议详解网际控制报文协议(Internet Control Message Protocol)该协议主要是用于辅助IP协议进行数据传输的ICMP协议可以报告错误信息或者异常情况ICMP的报文数据是通过封装在IP数据报中进行数据传输的。ICMP的报文分为两个部分:ICMP报文首部和ICMP报文数据ICMP报文首部「类型」:主
2021-01-21 17:19:37
390
原创 计算机网络基础(七)---网络层-网络地址转换NAT技术
文章目录内网地址和外网地址内网地址文章内容概览因为IP地址不够用了,所以才使用到了网络地址转换NAT技术IPv4最多有40+亿个IP地址(如果合理使用,一般是不会不够用的)早期IP地址的不合理规划导致IP号浪费在之前的文章中介绍到,网络的边缘部分有家庭网络,有终端设备、路由器、网关、地区ISP在实际情况下,其实很多的家庭只有「一个」外网的IP地址。那么,很多的内网设备是如何进行通信的?因为我们知道网络层在进行通信的时候,需要有一个唯一的IP地址,这个时候,一个家庭如果只有一个IP地址,是
2021-01-21 16:40:34
433
原创 计算机网络基础(六)---网络层-IP地址的子网划分
文章目录分类的IP地址特殊的主机号特殊的网络号回环地址划分子网子网号是如何进行工作的子网掩码子网掩码是如何进行快速的子网判断的无分类编址CIDR斜线记法文章内容概览前边的文章中介绍到IP地址长度为「32」位,常分成4个8位IP地址常用「点分十进制」来表示(0-255.0-255.0-255.0-255)32位的IP地址一共可以表示42亿个IP,如果没有一个合理的分配IP的方式,整个分配是非常麻烦的。因此需要对IP地址进行一个合理的规划和分配分类的IP地址将一个IP地址分为两个部分,分别是「
2021-01-19 23:32:10
869
原创 计算机网络基础(五)---网络层-ARP协议与RARP协议
文章目录ARP协议ARP协议的报文信息RARP协议文章内容概览还是看在上一篇文章中提到的这张图,计算机A将数据跨设备传输给C。A发出目的地为C的IP数据报,查询路由表发现下一跳为E,A将IP数据报交给数据链路层,「并告知目的MAC地址是E」。那么A是如何知道E的MAC地址的?这个是本文要介绍的ARP协议「ARP」(Address Resolution Protocol)地址解析协议「作用」:把网络层32位的IP转换成数据链路层48位的MAC地址,在这个过程中有一个很重要的表,/「ARP缓存表」
2021-01-19 22:18:14
340
原创 计算机网络基础(四)---网络层-IP协议的转发流程
文章目录路由表简介IP协议的转发流程文章内容概览在上一篇文章中提到,计算机A在给计算机B发送数据的时候,数据的路径,可能是通过中型网络、大型网络、中型网络、小型网络,然后到达计算机B现在把这条路径抽取出来并且将其压平,可以看到计算机A通过中间的3个网络和路由器,将数据报文传输给了B关于数据的转发过程,有一个概念叫:逐跳(hop-by-hop)。意思就是计算机A发送的报文是一跳一跳的来到计算机B的,网络1==》路由器1==》网络2==》路由器2==》网络3==》计算机B路由表简介在前边介绍
2021-01-18 23:44:50
849
3
原创 计算机网络基础(三)---网络层-IP协议详解
文章目录虚拟互联网络IP协议简介MAC地址和IP地址不同之处IP地址IP协议文章内容概览虚拟互联网络从上一篇文章最后提到的一个问题来引出虚拟互联网络对这个网络拓扑,上篇文章中提出了一个非常重要的问题:计算机A如何跨设备传输数据到计算机C?在这个大型网络拓扑中,计算机A如何将数据传输给计算机B,这个的性质和上边那个简单的网络拓扑的性质是一样的。这个网络其实有很多的路径可以把计算机A的数据传输给计算机B,比如:计算机A的数据先经过中型网络、大型网络、中型网络、小型网络,然后到达计算机B。除了上图的
2021-01-18 17:38:17
418
原创 计算机网络(二)---物理层与数据链路层
文章目录物理层概述物理层的作用传输介质信道的基本概念分用-复用技术数据链路层概述物理层概述物理层的作用如果是OSI七层模型的话,物理层是处于最底层的位置。对于TCP/IP四层模型,它是属于最底层的网络接口层。物理层的作用是连接不同的物理设备(比如路由器到计算机通过网线进行连接)传输比特流(比特流就是0、1这样的高低电平,或者说是数字信号)传输介质连接不同物理设备的介质,包括有线介质和无线介质,其中有线介质包括双绞线、同轴电缆、光纤、比特流信道的基本概念信道是往一个方向传递信息的媒
2021-01-17 22:39:03
4152
原创 计算机网络(一)---计算机网络概览篇
文章目录了解计算机网络及其分类什么是计算机网络计算机网络的分类计算机网络的层次结构现代互联网的网络拓扑边缘部分核心部分了解计算机网络及其分类什么是计算机网络计算机网络主要由一些通用的、可编程的硬件互联而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用计算机网络不仅仅是软件的概念,它还包含硬件设备(网卡、网线、路由器)计算机网络不仅仅是信息通信,还可以支持广泛的应用计算机网络的分类1、按照网络作用的范围,可以将计算机网络分为广域网(WAN)城域网(MAN)
2021-01-10 11:47:18
454
原创 配置文件的读取
读取json文件{ "go-micro":{ "db": { "ip": "10.0.0.1", "port": 3306 }, "redis": { "ip": "10.0.0.1", "port": 6379 } }}package mainimport ( "fmt" "github.com/micro/go-micro/v2/config" "log")type DB struct {
2021-01-02 19:33:09
107
原创 go-micro集成gin开发http api
package mainimport ( "context" "fmt" "github.com/gin-gonic/gin" "github.com/micro/go-micro/v2/client/grpc" "github.com/micro/go-micro/v2/web" "go-micro-train/src/course" "log" "net/http")func main() { // 手动创建client client := grpc.NewClient(
2020-12-31 15:30:34
550
原创 手动实现http api以及调用grpc服务
有的api只需要展示数据,不需要使用到grpc这时的http api也可以调用grpc服务http api结合nginx使用grpc不让用户通过grpc访问,grpc只在内部进行流转,用户仅仅是通过http api访问package mainimport ( "fmt" "github.com/micro/go-micro/v2/web" "net/http")func main() { service := web.NewService( web.Name("go.t..
2020-12-31 15:04:25
1058
原创 使用etcd注册服务、web管理界面、api网关
我们编写的api是部署到内网的,外部浏览器无法直接访问到从etcd中获取服务的地址进而访问到api使用etcd注册服务run.batset MICRO_REGISTRY=etcdset MICRO_REGISTRY_ADDRESS=localhost:2379go run src/cmd/server.go在windows中编写run.bat文件,如果在linux/mac则可以写在一行在实际的生产环境中应该使用docker部署查看etcd的值web管理界面web.bat.
2020-12-30 18:01:08
678
2
原创 golang使用etcd以及go-micro时 clientv3 报错
github.com/coreos/etcd/clientv3/balancer/resolver/endpoint../../pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption../../pkg/mod/github.com/coreos/etcd@v3.3.18+incomp
2020-12-30 16:48:22
761
1
原创 Golang的GMP原理与调度
Golang的GMP原理与调度一、Golang “调度器” 的由来(1)单进程时代不需要调度器(2)多进程 / 线程时代有了调度器需求(3) 协程来提高 CPU 利用率三种方式(4)Go 语言的协程 goroutine二、Goroutine 调度器的 GMP 模型的设计思想(1)GMP 模型(2)调度器的设计策略(3)go func () 调度流程(4)调度器的生命周期三、Go 调度器调度场景过程全解析四、小结一、Golang “调度器” 的由来(1)单进程时代不需要调度器我们知道,一切的软件都是跑
2020-12-22 21:58:12
2780
6
原创 groutine与多线程的区别
从使用上讲goroutine 比线程更轻量级,可以创建十万、百万不用担心资源问题。goroutine 和 chan 搭配使用,实现多线程、高并发 实现起来要方便很多。虽然go的并发用起来很方便,但多线程还是要小心不要产生 数据竞态,以及共享锁还是互斥锁的选择问题、并发操作的数据同步问题(多核心,不同的cpu缓存操作,同步到内存使其他协程感知)。从实现上讲从资源上讲,线程的栈内存大小一般是固定的一般为2MB,虽然这个数值可以设置,但是 太大了浪费,太小了容易不够用。而 gorou
2020-12-21 21:59:01
243
原创 初识go-micro
简介http://wen.topgoer.com/docs/mindoc/changjianwenti学习rpc与grpc https://www.liwenzhou.com/posts/Go/gRPC/学习etcd https://www.liwenzhou.com/posts/Go/go_etcd/学习protobuf https://www.liwenzhou.com/posts/Go/protobuf/安装go get github.com/micro/go-micro/v
2020-12-21 10:42:16
360
原创 Golang垃圾回收机制
垃圾回收算法目前比较常见的垃圾回收算法有三种:引用计数:为每个对象维护一个引用计数,当引用该对象的对象销毁时,引用计数 -1,当对象引用计数为 0 时回收该对象。代表语言:Python优点:对象回收快,不会出现内存耗尽或达到某个阈值时才回收。缺点:不能很好的处理循环引用,而实时维护引用计数也是有损耗的。标记-清除:从根变量开始遍历所有引用的对象,标记引用的对象,没有被标记的进行回收。代表语言:Golang(三色标记法)优点:解决了引用计数的缺点。缺点:需要 STW,暂时停掉程
2020-12-20 10:27:15
1164
1
原创 etcd
etcd简介etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。类似项目有zookeeper和consul。etcd具有以下特点:完全复制:集群中的每个节点都可以使用完整的存档高可用性:Etcd可用于避免硬件的单点故障或网络问题一致性:每次读取都会返回跨多主机的最新写入简单:包括一个定义良好、面向用户的API(gRPC)安全:实现了带有可选的客户端证书身份验证的自动化TLS快速:每秒10000次写入的基准速度可靠:使用R
2020-12-19 11:53:16
2799
1
原创 Pod控制器
Pod控制器Pod简介Pod 是 Kubernetes 的基本构建块,它是 Kubernetes 对象模型中创建或部署的最小和最简单的单元。 Pod 表示集群上正在运行的进程。Pod 封装了应用程序容器(或者在某些情况下封装多个容器)、存储资源、唯一网络 IP 以及控制容器应该如何运行的选项。 Pod 表示部署单元:Kubernetes 中应用程序的单个实例,它可能由单个容器或少量紧密耦合并共享资源的容器组成。一个pod内部一般仅运行一个pod,也可以运行多个pod,如果存在多个pod时,其中一个为主
2020-12-18 20:01:04
343
原创 kubernetes组件介绍
kubernetes组件介绍1. kubernetes介绍1.1. kubernetes介绍kubernetes是一种开源的容器编排工具,通过调度系统维持用户预期数量和状态的容器正常运行。kubernetes提供的功能:服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。存储编排Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等自动部署和回滚您可以
2020-12-18 16:53:01
292
1
原创 FDFS客户机上传文件
通过Docker安装了FastDFS并且开启了tracker容器以及storage容器1.安装FastDFS客户端扩展可以在ubuntu中以及windows中安装pip install fdfs_client-py-master.zippip install mutagenpip isntall requestswindows安装报错: error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for.
2020-10-08 11:36:47
430
1
原创 Docker
1. Docker介绍Docker中文社区文档Docker 是一个开源的软件部署解决方案。Docker 也是轻量级的应用容器框架。Docker 可以打包、发布、运行任何的应用。Docker 就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。Docker 是一个客户端-服务端(C/S)架构程序。客户端只需要向服务端发出请求,服务端处理完请求后会返回结果。Docker 包括三个基本概念:镜像(Image)Docker的镜像概念
2020-10-07 21:44:58
365
原创 FastDFS
1. FastDFS介绍用c语言编写的一款开源的轻量级分布式文件系统。功能包括:文件存储、文件访问(文件上传、文件下载)、文件同步等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。可以帮助我们搭建一套高性能的文件服务器集群,并提供文件上传、下载等服务。2.流程程序员参与的步骤:1 -> 8 -> 9FastDFS架构 包括Client
2020-10-06 19:45:51
114
原创 SpringMVC学习
使用Maven创建springMVC时的加速操作添加键值对key:archetypeCatalogvalue:internal需要导入的jar包坐标<!-- 版本锁定 --><properties><spring.version>5.0.2.RELEASE</spring.version></properties><!-- 导入依赖--><dependencies><dependency>
2020-08-10 23:36:37
116
原创 Spring学习
添加坐标<packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2
2020-08-04 22:23:13
135
原创 MyBatis学习
1.添加坐标<packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version&
2020-07-31 22:19:42
182
原创 Django集成TinyMCE
安装pip install django-tinymce使用将tinymce文件夹复制到你自己的project里面,tinymce相当于是一个APP;在project文件夹的setting里注册tinymce:在settings.py里找到INSTALLED_APPS;3. 上面两步已经将tinymce成功引入了project,那么怎么用呢?打开你自己的app,比如我的是Book/models.py,使用from tinymce.models import HTMLFie
2020-05-30 01:10:14
277
原创 推荐系统之特征工程
数据预处理数据可划分为结构化数据与非结构化数据,定义如下:结构化数据代表性的有数值型、字符串型数据非结构化数据代表的有文本型、图像型、视频型以及语音型数据结构化数据预处理预处理一般可分为缺失值处理、离群值(异常值)处理以及数据变换缺失值处理一般来说,未经处理的原始数据中通常会存在缺失值、离群值等,因此在建模训练之前需要处理好缺失值。缺失值处理方法一般可分为:删除、统计值填充、统一值填充、前后向值填充、插值法填充、建模预测填充和具体分析7种方法。直接删除缺失值最简单的处理方法是删除
2020-05-15 13:30:46
440
原创 推荐系统简介
推荐系统推荐系统是信息过载所采用的措施,面对海量的数据信息,从中快速推荐出符合用户特点的物品。解决一些人的“选择恐惧症”;面向没有明确需求的人。解决如何从大量信息中找到自己感兴趣的信息。解决如何让自己生产的信息脱颖而出,受到大众的喜爱。推荐系统的目的让用户更快更好的获取到自己需要的内容让内容更快更好的推送到喜欢它的用户手中让网站(平台)更有效的保留用户资源推荐系统的应用推荐系统的基本思想推荐系统的数据分析要推荐物品或内容的元数据,例如关键字,分类标签,基因描述等;系统
2020-05-12 00:37:47
292
原创 神经网络(线性神经网络)
线性神经网络线性神经网络在结构上与感知器非常相似,只是激活函数不同。在模型训练时把原来的sign函数改成了purelin函数:y = x线性神经网络结构代码示例import numpy as npimport matplotlib.pyplot as plt#输入数据X = np.array([[1,3,3], [1,4,3], ...
2020-04-27 21:30:51
967
原创 神经网络(单层感知器)
感知器介绍感知器是神经网络中的一个概念,在1950s由Frank Rosenblatt第一次引入。单层感知器是最简单的神经网络。它包含输入层和输出层,而输入层和输出层是直接相连的。与最早提出的MP模型不同,神经元突触权值可变,因此可以通过一定规则进行学习。可以快速、可靠地解决线性可分的问题。单层感知器由一个线性组合器和一个二值阈值元件组成。输入向量为x,权重向量为w,w0为偏执。...
2020-04-27 14:44:57
1288
Docker源码用于安装
2020-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人