kubernetes搭建环境
如有笔误,欢迎留言指正或讨论!
环境规划1.1、集群类型 kubernetes集群主要分为两大类:一主多从 、 多住多从
一主多从:一台Mater节点 和 多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境
多住多从:多台Mater节点 和 多台Node节点,搭建麻烦,安全性高,适合用于生产环境
kubernetes基础理论
如有笔误,欢迎留言指正或讨论!
k8s概述1.1、简介 kubernetes本质就是 一组服务器集群,可以在每个节点上运行特定的程序,对节点的容器进行管理。目的就是实现 资源管理的自动化。
自我修复:容器崩溃能迅速启动新的容器(1s左右)
弹性伸缩:可以根据需求,自动对集群中正在运行的容器数量进行调整
服务发现:服务可以通过自动发现形式找到它所依赖的服务(自己找需要的服务)
负载均衡:一个服务启动多个容器,它能够自动实现请求的负载均衡
版本回退:发布的新版本存在问题,可以立即回退到原来的版本
存储编排:可以根据容器自身的需求自动创建存储卷
…
1.2、组件 kubernetes集群主要由 控制节点 、工作节点 构成的,每个节点都会安装不同的组件。
master:集群的控制平面,负责集群的决策(管理)
ApiServer:资源操作唯一入口,接收输入命令,提供认证、授权、API注册和发现等级制(接收操作命令)
Scheduler:负责集群资源调度,按照预定的 调度策略 将Pod调度到相应的node节点上(只负责算出谁干活)
ControllerManager: 负责维 ...
golang基础语法
如有笔误,欢迎留言指正或讨论!
一、了解Golang1.1、为什么用go? Go是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。其次就和其它常用几个编程语言做个比较,如下:
vs
一次编码
一次编译
无需运行环境
没有虚拟损失
无需自行处理GC
面向对象
并发能力
C
否
是
否
是
否
否
否
C++
否
是
否
是
否
是
否
Java
是
否
是
否
是
是
否
Golang
是
否
是
是
是
是
是
1.2、go用途 优秀的Go项目:docker(虚拟化)、kubernetes(管理虚拟化)、etcd(强一致的kv数据库)、codis(redis集群的解决方案)、
falcon(小米公司开源的系统检测)、bilibili、tidb(上海开发强大的关系型数据库)
二、25个关键字
关键字func 定义函数 interface 定义接口
select 监听和channel有关的IO操作 switch 选择结构
case ...
常见数据结构
如有笔误,欢迎留言指正或讨论!
如有笔误,欢迎留言指正或讨论!
常见的数据结构 数据结构是计算机存储、组织数据的方式。不同场景选择的数据结构可以提高高效的运行或存储效率!常见数据结构:数组-array、链表-linkedList、队列-queue、栈-stack,树-tree、散列表-hash、堆-heap、图-graph 。
数组-Array 数组是一种线性结构,而且在 物理内存 中占据着一块连续的内存 。
优点:访问数据简单。数据储存在连续的空间上,每个数据的内存地址都是通过数组下标就可以直接访问数据(也叫:随机访问 如array[2]) 。
缺点:添加、删除比较耗费时间。新增或删除数据,首先保证足够的空间,然后把已有的数据一个个移动 。
链表-Linked List 链表在物理存储单位上是 非连续的、非顺序的存储结构。数据元素是通过链表的指针地址实现,每个元素包含两个节点: 存储元素的数据域(内存空间)、指向下一个节点地址的指针域 。
优点:数据添加和删除方便。只需要更改指定的指向就可以了。
缺点:访问比较耗费时间。因为数据都是分散存储的,所 ...
Lua使用教程
lua介绍Lua 是一种轻量小巧的脚本语言,是由C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
lua特性
轻量级 :由于是c编写,编译后仅仅100K左右,很方便嵌入别的程序中。
可扩展:提供了非常易于使用的扩展接口和机制。
支持面向过程
自动管理内存
语言内置模式匹配、闭包、多线程(协程)
支持面向对象,如数据抽象、虚函数、继承和重载等。
lua 应用场景
嵌入式脚本:如游戏、监控服务,对程序本身的扩展性增强;
独立脚本:独立的脚本语言,完全可以做一些辅助性的开发,如数据分析;
动态配置:应用于应用程序的动态配置部分,客户端和服务端建立连接是,如一些热点数据可以由lua脚本提供;
游戏开发:单纯使用C++开发的成本比较高,而使用 C++ 提供各种基本的功能函数库,可以用lua调用这些库来实现各种逻辑功能,可以实现基本代码库和逻辑代码分离,减低编程成本。
Web应用脚本:Lua 的另一个常见应用场景是编写 Nginx 服务器的脚本。一开始开发者都使用 C/C++ 做 Nginx 开发,但是使用 C/C+ ...
Lua基础知识
lua介绍Lua 是一种轻量小巧的脚本语言,是由C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
lua特性
轻量级 :由于是c编写,编译后仅仅100K左右,很方便嵌入别的程序中。
可扩展:提供了非常易于使用的扩展接口和机制。
支持面向过程
自动管理内存
语言内置模式匹配、闭包、多线程(协程)
支持面向对象,如数据抽象、虚函数、继承和重载等。
lua 应用场景
嵌入式脚本:如游戏、监控服务,对程序本身的扩展性增强;
独立脚本:独立的脚本语言,完全可以做一些辅助性的开发,如数据分析;
动态配置:应用于应用程序的动态配置部分,客户端和服务端建立连接是,如一些热点数据可以由lua脚本提供;
游戏开发:单纯使用C++开发的成本比较高,而使用 C++ 提供各种基本的功能函数库,可以用lua调用这些库来实现各种逻辑功能,可以实现基本代码库和逻辑代码分离,减低编程成本。
Web应用脚本:Lua 的另一个常见应用场景是编写 Nginx 服务器的脚本。一开始开发者都使用 C/C++ 做 Nginx 开发,但是使用 C/C+ ...
操作系统-进制
如有笔误,欢迎留言指正或讨论!
进制介绍
计算机内部运行各种运算时,都是以二进制的方式来运行;
二进制:0 1 满2进1
八进制:0-7 满8进1, 以数字 0 开头
十进制:0-9 满9进1
十六进制:0-9 + A-F 满16进1,0x、0X开头,A-F不区分大小写
二进制重要的三个概念原码、反码、补码!!!在计算机运算的时候,都是以 补码 的方式来运算的。 !!!对于有符号的而言:
二进制的最高位是符号位:0表示正数,1表示负数
首位表示符号位
比如按照byte (字节: 8位):1 ===》[0000 0001] -1 ===》[1000 0001]
正数的原码、反码、补码都一样(三码一致)
负数的反码 = 它的原码符号位 不变,其它取反( 0->1, 1->0)
1 ===》原码[0000 0001] 反码[0000 0001] 补码[0000 0001]
-1 ===》原码[1000 0001] 反码[1111 1110] 补码[1111 1111]
负数的补码 = 它的反码+1
0 的反码、补码都是 0
...
常用算法题
如有笔误,欢迎留言指正或讨论!
快排算法
冒泡算法package main
import "fmt"
func mpPx(arr []int) []int {
tmp := 0
arrLen := len(arr) - 1
//如 arr = [1,2,3,4,5] len = 5
//外循环:4次 内循环:4 - i 前后两个值比较、替换值
// i = 0 j 循环次数:4-0次 4 j > j+1 : 12 23 34 45
// i = 1 j 循环次数:4-1次 3 j > j+1 : 12 23 34
// i = 2 j 循环次数:4-2次 2 j > j+1 : 12 23
// i = 3 j 循环次数:4-3次 1 j > j+1 : 12
for i := 0; i < arrLen; i++ {
for j := 0; j < arrLen-i; j++ {
if arr[j] > arr[j+1] {
tmp = arr[j ...
ElasticSearch
如有笔误,欢迎留言指正或讨论!
数据格式端口号:
9300 对内使用
9200 对外使用
ES是面向 文档 数据库,一条数据在这里就是一个文档。
对应类型这里Type 相当于表,type的概念已经被弱化,在es6.0中,一个 Index 下已经只能包含一个Type,在es7.X中,Type 的概念已经被删除了;
ES
Index(索引)
Type(类型)
Document(文档)
Fields(字段)
Mysql
数据库
表名
行
列
倒排索引:按照 Value 找 Key,Value 分词后关键字每个对应 Key
正排索引:按照 key 找 Value
索引//ES 创建 Index 索引具有冥等性
创建索引 请求地址:PUT 127.0.0.1:9200/索引
查看单个索引 请求地址:GET 127.0.0.1:9200/索引
查看所有索引 请求地址:GET 127.0.0.1:9200/_cat/indices?v
删除索引 请求地址:DELETE 127.0.0.1:9200/索引 ...
常用设计模式
如有笔误,欢迎留言指正或讨论!
六大原则:1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。
2、里氏代换原则(Liskov Substitution Principle) 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
3、依赖倒转原则(Dependence Inversion Principle) 这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽 ...
计算机网络
HTTP
TCP+UDPTCP头部组成部分: 序列号:解决网络包乱序的问题;
确认应答号:解决不丢包的问题;
控制符 4 :SYC 建立链接、ACK 确认应答、RST 异常断开链接、FIN 断开连接;
TCP:是面向链接、可靠的、基于字节流的 传输层 通信协议; 面向连接:一对一才能连接;
可靠的:保证报文一定能够到达接收端;
字节流:是有序的、去重的、没有边节的,多大的消息都可以传输;
TCP连接:保证可靠性 和 流量控制、维护一些状态信息; Socket:IP 和 地址端口号组成;
序列号:解决网络包乱序的问题;
窗口大小:做流量控制;
TCP四元组:源地址、源端口、目标地址、目标源TCP 和 UDP 的区别:1、连接:TCP 是面向连接传输层协议,UDP不需要连接,直接传输数据;2、服务对象:TCP 一对一两点服务,UDP 一对一、一对多、多对多交互通信;3、可靠性:TCP 是可靠交付数据的、不丢失、不重复,UDP 最大努力交付、不可靠交付数据;4、拥堵控制、流量控制:TCP 有拥堵控制、流量控 ...
Redis基础知识
数据类型字符穿 String (key - value) 数据结构:简单动态字符串( SDS) ,可以通过预分配冗余空间的方式来减少内存的频繁分配。
使用场景:缓存、热点数据、计数器(incr、decr)、互斥锁
哈希表 Hash(key - field = > [v1, v2]) 数据结构:压缩列表 / 哈希表
使用场景:用户数据
列表 List (key - [v1, v1, v2]) 数据结构:双向链表 / 压缩列表
使用场景:队列(先进先出的数据结构)
集合 Set (key - [v1, v2]) 数据结构:哈希表 / 整数集合
使用场景:点赞、关注数量、共同好友(交集、并集、差集)
有序集合 Zset (key - score member) 数据结构:压缩列表 / 跳表
使用场景:排序
Redis分布式锁 为了解决一种跨机器的互斥机制来控制共享资源的访问。