plantuml
时序图
我们可以通过一条一条语句来声明步骤,-> 代表实线
123456789@startuml用户 -> 认证中心: 登录操作认证中心 -> 缓存: 存放(key=token+ip,value=token)token用户 <- 认证中心 : 认证成功返回token用户 -> 认证中心: 下次访问头部携带token认证认证中心 <- 缓存: key=token+ip获取token其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务其他服务 -> 用户: 信息@enduml
声明参与者
上面那些框框都是可以变换形状的,我们只需要更改参与者的类型就可以了,可以指定的类型有
actor(角色)
boundary(边界)
control(控制)
entity(实体)
database(数据库)
collections(集合)
queue(队列)
格式就是:
participant “participantname” as participantothername 样式(颜色,顺序)
participant partici ...
node最新版本安装
前言
每次安装完了node,下次需要安装的时候有需要Google一下,每次搜到的教程肯定又不一样,肯定会有偏差,那还不如自己总结好
这个是下载node的官方地址
安装
windows安装node
下载msi文件
下载好后直接打开,中途选择路径的时候放D盘即可,其他直接无脑next,最后点击install就可以了
安装完后检查是否安装成功
这个是帮我们配置好环境变量的,当然我们也可以自己通过下载压缩包,然后把环境变量的方式配置上去,这样也可以,其实也没什么区别,看看他们产生的文件夹的区别吧
linux安装(centos7)
复制下载链接
12345678910111213#下载压缩吧到本地wget -c https://nodejs.org/download/release/v17.5.0/node-v17.5.0-linux-x64.tar.xz#解压压缩包tar -xf node-v17.5.0-linux-x64.tar.xz# 移动到指定目录,并且更改名字mv node-v17.5.0-linux-x64 /usr/local/lib/nodejs#添加到环境 ...
yaml语法
概述
基本语法
使用空格作为缩进
缩进空格数量不做要求,但是相同层级的左侧元素要对齐
低版本的不允许使用tab缩进,只能用空格
使用#做注释符,从字符到行尾,都算注释
使用 – 表示新的yaml文件开始
yaml支持的数据结构
对象
123person: name: djm age: 18
数组
123names: - djm - lpb
1names: [djm, lpb]
k8s环境搭建
背景
传统部署时代: 早期,是直接将应用程序部署在物理机上,无法对应用程序进行资源限制,如果有多个应用,就会出现资源分配的问题,比如一个应用占据大量资源,使用其他应用性能下降,一种解决方案是单个应用放在单个服务器上,这样的话,虽然做到了资源隔离,但是如果一个应用程序资源利用率不高的时候,剩余的资源又无法分配各其他应用程序,而且物理服务器的维护成本变得很高。
虚拟化部署时代: 作为解决方案,引入了虚拟化功能,它允许您在单个物理服务器的 CPU 上运行多个虚拟机VM。虚拟化功能允许应用程序在 VM 之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自由地访问。
容器部署时代: 容器类似于 VM,但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统OS。因此,容器被认为是目前最轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。由于它们与基础架构分离,因此可以跨云和 OS 分发进行移植。而在容器时代,Docker容器引擎是最流行的一个。
Kubernetes 为你提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、 ...
java基础
Math
12345678public static double pow(double a, double b); // 计算a^b 注意返回值是doublepublic static long round(double a); // 四舍五入 注意返回值是longpublic static double random(); // 返回[0,1) 的随机小数public static double sqrt(double a); // 计算根号a, 注意返回值public static double log(double a) ; // 计算log以e为底 a 的值public static double log10(double a); // 以10为底
数组
初始化
1234567891011int[] nums = new int[10];int[] nums = new int[]{1,3,4};// int[] nums = new int[3]{1,3,4} 这种是不行的哦,不能指定长度又赋值int[] nums = { ...
任务清单
想干/学的事情
有想法的日期
开始的日期
做完的日期
正则表达式
2022/12/5
2023/2/17
2023/2/18
PlantUML
2022/12/10
2022/12/28
java基础
2022/12/18
2022/12/19
51单片机
2023/1/4
2023/1/4
电路原理
2023/2/11
2023/2/11
计算机组成原理
2023/2/11
spring/springboot
2023/2/18
test
计算机网络
前言
这个是跟哔哩哔哩湖科大教书匠的视频做的笔记,以及自己的思考与总结
什么是计算机网络
计算机网络是由通信介质将地理位置不同的且相互独立的计算机连接起来,实现数据通信与资源共享。
个人觉得,计算机网络就是实现如何将数据可靠,快速的从一个设备传输到另一个设备
专用术语
实体
实体是指任何可发送或接受信息的硬件或者软件
对等实体是指位于同一个层次的实体
协议
协议是控制两个对等实体进行逻辑通信的规则的集合
三个要素:
语法:定义交换信息的格式(头部)
语义:通信双方需要完成的操作(报文)
同步:定义收发双方的时序关系(tcp建立连接的过程)
服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务
协议是水平的,服务是垂直的
每层之间的数据类型:传输层的报文,网络层的分组,数据链路层的帧,物理层的比特流
计算机网络体系结构
体系结构的作用:
分层
每一层必须要完成的功能
每一层使用的协议(TCP/IP体系结构)
分层的必要性
计算机网络是个非常复杂的系统,分层可以将庞大而复杂的问题,转化为若干个较小的局部问题,而这些较小的局部问题比较容易研究和处理
两个设 ...
单词本
word
ref
stack
dose
notion
formula
bubble
faculty
harnerss
k8s网络基础
文章一
基础知识
向外发送一个数据包
查找目的地址的路由信息,如果是直连路由,则在邻居表中找到他的Mac地址,然后把数据包直接发给他
如果不是直连路由,则在邻居表中找默认路由的Mac地址,把数据包发给默认路由对应的设备
如果找不到路由信息,那么就是不可达
如果邻居表中找不到Mac地址,就发起ARP请求询问
发出去的数据帧,Mac地址一直在变,但是只要不经历nat(snat和dnat),那么ip地址是全程不会变的
接收到一个数据包
如果数据帧的目标Mac地址不是自己的Mac地址,而且也不是广播Mac地址(ff:ff:ff:ff),且网卡没有开启混杂模式,则拒绝收包,混杂模式就是所有的帧我都接受
如果是目标地址是广播Mac地址,那就进入ARP请求处理
如果目标Mac地址就是自己的Mac地址,也要分几种情况讨论
目标ip地址是本机,则上送到上一层协议继续处理
如果目标ip不在本机,如果开启了路由转发,则转发这个分组,否则就丢弃这个分组
对于一台linux主机来说,影响网络方面的配置主要有以下几个:
网卡,网卡的配置,ip地址啊,是否开启,也可以虚拟出一张网卡
端口: 1-6 ...
go总结
环境搭建
Go设置国内镜像源
1go env -w GOPROXY=https://goproxy.cn,direct
基础教程
go.mod 是用来管理我们引入模块的信息,里面记录了我们当前模块的模块名,以及需要的模块的信息
go mod init 名字 用来创建一个模块
go mod tydy 加载模块(本地,或者远程)
init 函数会最先执行,早于main函数
go中**{**不能单独一行
一行代表一个语句结束,如果要多个语句写一起,就必须使用;分隔,但是并不推荐这样做
数据类型
注意一下不同的数据类型就行了
int 这个和c语言不同哦,c语言是int ,不过使用起来是一样的,只是声明的时候不同
函数类型 声明的时候,是可以直接用变量接收一个函数的哦
变量声明方式
方式1 var 名字1,名字2 … type (没有赋值,默认值代替)
方式二 var 名字1,名字2 类型 = 值1,值2 (值类型必须一致
方式三 var 名字 1,名字2= 值1,值2 (根据类型推断)
方式四(局部变量才可以用) 名字1,名字2:=值 相当于 var 名字1 type,va ...