- 博客(47)
- 收藏
- 关注
原创 Pod进阶(容器本质,Pod实现,容器设计模式)
容器的本质 一个视图被隔离,资源受限制的进程 容器里PID = 1 的进程就是应用本省 管理虚拟机 = 管理基础设施; 管理容器 = 直接管理应用本身 Kubernetes = 操作系统容器 =进程Pod = 进程组Pod 一个逻辑单元,多个容器的组合,Kubernetes的院子调度单元亲密关系-调度解决 两个应用需要运行在同一台宿主机上 超亲密关系-Pod 解决(pod) 会发生直接的文件交互 使用localhost或者s
2020-11-18 15:40:16
2928
原创 Go Web(接收请求,处理请求,内容展示)
Go web工作流程客户端向服务器发送请求多路复用器接收到请求,并将其重定向到正确的处理器处理器对请求进行处理在需要访问数据的情况下,处理器会使用一个或多个数据结构,这些数据结构都是根据数据库中的数据建模而来的当处理器调用与数据结构有关的函数或者方法时,这些数据结构背后的模型会与数据库进行连接,并执行相应的操作。当请求处理完毕时,处理器会调用模板引擎,有时候还会向模板引擎传递一些通过面模型获取到的数据模板引擎会对模板文件进行语法分析并创建对应的模板,而这些模板又会与处理器传递的数据一起合并
2020-10-18 22:52:27
4619
原创 包结构和内置工具(Go语言)
包结构工作空间依照规范,工作空间(workspace)由src,bin,pkg三个目录组成。通常需要将空间路径添加到GOPATH环境变量列表中,以便相关工具能正常工作。在工作空间里,包括子包在内的所有源码文件都包村在src目录下。至于bin,pkg两个目录,其主要影响go install/get命令,它们会将编译结果(可执行文件或静态库)安装到这两个目录下,已实现增量编译。环境变量编译器等相关工具按GOPATH设置的路径搜索目标。也就是在导入目标库是,排在表前面的路径比当前工作空间优先级更高。go
2020-10-09 08:50:56
3774
原创 并发(通道,互斥锁,读写锁。Go语言学习笔记)
并发定义并发: 逻辑上具备同时处理多个任务的能力并行: 物理上在同一时刻执行多个并发任务通常会说程序是并发设计的,也就是说程序允许多个任务同时执行,但实际上并不一定会在同一时刻发生。在单核处理器上,程序能以间隔方式切换执行。并行则依赖多核处理器等物理设备,让多个任务真正在同一时刻执行,它代表了当前程序运行状态。并行是并发设计的理想执行模式。多线程或多进程是并行的基本条件,但单线程也可用协程(coroutine)做到并发。尽管协程在单个线程上通过主动切换来实现多任务并发。协程优点:将因阻
2020-10-08 17:02:31
4057
原创 分布式理论(ACID,CAP,BASE)
ACID事务(transaction)是由一系列对系统中数据进行访问于更新的操作所组成的一个程序执行逻辑单元,狭义上的事务特指数据库事务。事务具有四个特性,分别是原子性,一致性,隔离性和持久性。原子性事务的院子性是指事务必须是一个原子的操作序列单元。事务中包含的个项操作在以此执行过程中,只允许出现以下两种状态之一:全部成功执行。全部不执行。任何一项操作失败都将导致整个事务失败。同时其他已经瘪执行的操作都将被撤销并回滚,只有所有的操作全部成功,整个事务才算是成功完成。一致性事务的一致性是
2020-10-02 20:58:45
4195
原创 SQL基础(数据查询,聚合,分组,数据更新,视图,子查询,谓词)
SQL语句及其种类SQL用关键子,表名,列名等组合而成的一条语句来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词,存在包含“对表进行查询”或者“参考这个表”等各种意义的关键字。SQL语句客分为以下三类:DDL DDL(Data Definition Language, 数据定义语言)用来创建或删除存储数据用的数据库以及数据库中的表对象。CREATE:创建数据库和表等对象DORP: 删除数据库和表等对象ALTER:修改数据库和表等对象的结构。DMLDML(Da
2020-09-28 15:49:58
4750
原创 方法和接口进阶(Go语言)
方法定义方法是与对象实例绑定的特殊函数。方法是面向对象编程的基础概念,用于维护和展示对象的自身状态。对象是内敛的,每个实例都有各自不同的独立特征,以属性和方法来暴露对外通行接口。普通函数则是专注于算法流程,通过接收参数来完成特定逻辑运算,并返回最终结果。方法是有关联状态的,函数是没有的。方法和函数语法区别在于前者有前置实例接收参数(receiver),编译器以便确定方法所属类型。在某些语言里,尽管没有显式定义,但会在调用时隐式传递this实例参数。可以为当前包,以及除接口和指针以外的任何类型定义
2020-09-25 17:34:27
3988
原创 数据结构进阶(Go语言)
字符串字符串是不可变字节(byte)序列,其本身是一个复合结构。type stringStruct struct{ str unsafe.Pointer len int}头部指针指向字节数组,但没有NULL结尾。默认以utf-8编码存储Unicode字符,字面量里允许使用十六进制,八进制和UFT编码格式。字符串默认值不是nil是“”。使用“ ‘ ” 定义不做转义处理的原始字符串,支持跨行(\n)。支持“!= ,==,< ,>,=,+=”操作符允许以索引访问字节数组
2020-09-23 16:12:51
4100
原创 函数进阶(Go语言)
函数定义函数是结构话编程的最小模板单元。它将复杂的算法过车分解为若干较小任务,隐藏相关细节,使得程序结构更加清晰,易于维护。函数设计成相对对立,通过接收输入参数完成一段算法指令,输出或存储相关结果。函数是代码复用和测试的基本单元。关键字func用于定义函数。Go中的函数有些不太方便的限制,但也借鉴了动态语言的某些优点。无须前置声明不支持命名嵌套不支持同名函数重载不支持默认参数支持不定长变参支持多返回值支持命名返回值支持匿名函数和闭包函数属于第一类对象,具备相同签名(参数及返回值列
2020-09-21 23:59:06
5683
原创 数组和切片(Go语言)
数组(array)定义Go语言提供了数组类型的数据结构。数组是具有相同类型的一组长度固定的数据序列,这种类型可以使任意的基本数据类型或复合数据类型及自定义类型。数组元素可以通过索引下标(位置)来读取或修改元素数据。索引从0开始,第一个元素索引为0,第二个索引为1,以此类推。数组的下标取值范围是从0开始,到长度减1。数组一旦定义后,大小不能更改。语法声明数组Go语言数组声明需要制定元素类型及元素个数,var 变量名 [数组长度]数据类型 // 一维数组定义数组长度必须是整数且大于0为初始
2020-09-11 00:00:32
4431
原创 指针和参数传递(Go语言)
指针概述指针是存储另一个变量的内存地址的变量变量是一种使用方便的占位符,变量都指向计算机的内存地址一个指针变量可以指向任何一个值的内存地址获取变量的地址 Go语言的取地址符&,一个变量前使用&,会返回该变量的内存地址。func main(){ a := 110 fmt.Printf("变量的地址:%x\n",&a)} 指针特点指针不能运算(不同于c语言)Go语言中如果对指针进行运算会报错声明指针*T是指针变量的类型,它指向T类
2020-09-09 21:23:05
5912
原创 函数入门(Go语言)
函数定义函数是组织好的,可重复使用的执行特定任务的代码块。可以提高应用程序的模块性和代码的重复利用率。Go语言支持普通函数,匿名函数和闭包。Go语言的函数属于first-class函数本身可以作为值进行传递支持匿名函数和闭包函数可以满足接口声明函数普通函数需要先声明才能调用,一个函数的声明包括参数和函数名等。编译器通过声明才能了解函数应该怎样在调用代码和函数体之间传递参数和返回参数。语法格式func 函数名 (参数列表) (返回参数列表){ //函数体}fun
2020-09-08 15:00:33
4456
原创 变量和常量(Go语言)
变量概念变量是计算机语言中存储数据的抽象概念。变量的功能是存储数据。变量通过变量名访问。变量的本质是计算机分配的一小块内存,专门用于存放指定数据,在程序运行过程中该数值可以发生改变。变量的存储往往具有瞬时性,或者说是临时存储,当程序运行结束,存放该数据的内存就会释放,而该变量就会消失。Go语言的变量名有字母,数字,下划线组成,首个字符不能为数字。Go语法规定,定义的局部变量若没有被调用则编译错误。命名:驼峰标识,不建议用下划线连接多个单词。声明变量变量声明有多种形式//未初始化的标准格式
2020-09-07 16:04:19
4684
原创 Chaos Mesh Test(在k8s对mysql,redis zookeeper 进行chaos 测试)
githu地址 https://github.com/zhuxiatong/chaos-mesh-testIndexChaos Mesh TestKubernetes 环境准备 Kubernetes项目节点硬件配置 Kubernetes项目节点软件配置 Kubernetes项目节点系统安装步骤 Kubernetes 选择安装语言 Kubernetes 选择是否更新系统 Kubernetes 硬盘选择 Kubernetes 网络配置 Kubernete
2020-08-15 16:04:37
8448
原创 Lock接口和AQS原理与实现(Java并发编程的艺术整理)
Lock接口锁是用来控制多个线程访问共享资源的方式,一个锁能够防止多个线程同时访问共享资源(但有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。使用synchronized关键字会将隐式地获取锁,但是将锁的获取和释放固化了,也就是先获取在释放。缺点就是扩展行没有显示的锁获取和释放来的号。#Lock特性特性详解尝试非阻塞地获取锁当前线程尝试获取锁,如果这一时刻没有被其他线程获取到,则成功获取并持有锁能被中断地获取锁于synchronized不同,获取到锁的线程能够响
2020-07-11 22:57:10
5378
原创 Java内存模型(Java并发编程的艺术整理)
内存模型基础并发模型的两个关键问题在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令是编程中,线程之间的通信机制由了两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公告状态,线程之间必须通过发送消息来显示进行通信。同步是指程序中用于控制不同线程间操作发生相对顺序的机制。在共享内存并发模型里,同步时显示进行的。程序员必须显示指定某
2020-07-11 11:12:28
5256
原创 Java并发机制的底层实现原理(Java并发编程的艺术整理)
volatilevolatile是轻量级的synchronized,他在多级处理器开发中保证了共享变量的"可见性"。可见性的意思是当一个线程修改一个共享变量是,另一个线程能读到这个修改值。定义与原理实现Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有的线程看到这个变量的值是一致的。前置知识 CPU术语定义术语英文单词术语描述内存屏障memory barriers是一组处理器指令,用于实现对内
2020-07-05 23:46:40
5438
原创 Java NIO(Netty,Redis,Zookeeper高并发实战整理)
Java NIONIO与OIO的对比1.OIO事面向流的,NIO是面向缓冲区的。OIO是面向字节流或字符流的,在一般的OIO操作中,一流式的方法顺序地从一个流中读取一个或多个字节,因此,不能随意地改变读取指针的位置。NIO中引入了Channel(通道)和Buffer(缓冲区)的概念。读取和写入,只需要从通道中读取数据到缓冲区中,或将数据从缓冲区中写入到Channel中。可以随意地读取Buffer中任意位置的数据。2.OIO的操作是阻塞的,而NIO的操作是非阻塞的。3.OIO没有选择器的概念,而NIO
2020-07-01 20:19:44
6020
原创 IO模型(Netty,Redis,Zookeeper高并发实战整理)
IO的基本概念read系统调用,并不是直接从物理设备把数据读取到内存中;write系统调用,也不是直接把数据写入到物理设备。上层应用无论是调用操作系统的read,还是调用操作系统的write,都会涉及缓冲区。具体来说,调用操作系统的read,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用,是把数据从进程缓冲区复制到内核缓冲区。缓冲区意义外部设备的直接读写,设计操作系统的中断,发生系统中断时,需要保存之前的进程数据和状态等信息,而结束中断之后,还需要恢复之前的进程数据和状态等信息,为了减少这
2020-06-30 00:11:46
6039
原创 Windows安装WSL(解决VMware Workstation和Hyper-V不兼容)
VMware 和Hyper-V不兼容,然而Linux不能使用VMware虚拟机启动,但是如果卸载Hyper-V,之后Docker就不能使用了。在window下Docker和用VMware创建的虚拟机会产生冲突。两种虚拟化技术都是基于CPU等底层硬件的Hypervisor(虚拟机监视器)机制来实现的。所以考虑使用linux 虚拟机使用Window自带的WSL.WSL安装前提打开Windows功能...
2020-03-28 22:06:37
13993
1
原创 Java垃圾回收
垃圾回收机制特性垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接,网络IO等资源)程序无法精确控制垃圾回收的运行,垃圾回收会在合适的时候进行。在垃圾回收机制回收任何对象之前,总会先调用该对象的finalize()方法,该方法可能使该对象重新复活,从而导致垃圾回收机制取消。也能在这个方法内回收垃圾回收机制无法回收的物理资源.堆gc对象在内存中的状态可达状态...
2020-02-22 20:23:15
5427
原创 基于manjaro的开发环境的搭建(笔记本安装manjaro)
本着学习探索linux的态度,决定将自己的机器从win10系统,该成linux。在ubuntu的多次回滚之后。debian系统不太兼容外部显示器,我决定信仰arch教。 但是arch linux安装太过繁琐。于是就选择了manjaro。arch linux 中最为安装简单的。 以下为搭建manjaro开发环境的步骤安装manjaro准备一个u盘,并下载好https://manjaro.o...
2020-01-28 18:02:54
9371
原创 裁剪JRE(嵌入式设备的java环境移植)
将jvm移植在Linux环境上,ubuntu或centos上,并成功用JVM运行Java程序在命令行里面输出hello world。通过所需要运行的java程序所需要的依赖配置来生成所对应的jre。来运行java程序。实现定制化配置。准备编译JRE的JDK开发环境 在虚拟中运行进行jdk的安装 sudo apt-get install openjdk-8-jdk 查看java版本...
2019-12-31 12:16:48
6639
1
原创 利用github和dockerhub获取k8s构建所需要的镜像(亲测可用)
在构建k8s环境的时候,需要一下镜像:k8s.gcr.io/kube-apiserver:v1.17.0k8s.gcr.io/kube-controller-manager:v1.17.0k8s.gcr.io/kube-scheduler:v1.17.0k8s.gcr.io/kube-proxy:v1.17.0k8s.gcr.io/pause:3.1k8s.gcr.io/etcd:3....
2019-12-17 18:06:43
6643
原创 Deepin Linux系统安装及显示器配置教程(可竖屏)
对于Windows mac linux 爱折腾的小白的感觉用过win10感觉Windows系统总是和linux操作系统不一样,不能满足一个爱折腾星人的欲望(为了把小娜给卸载了,结果注册表删错了,导致win10系统开关机都不能)。mac 安装过黑苹果(没钱买正苹果 ),折腾了好长时间,最后发现硬件不兼容。没有办法多屏显示,我的外接显示器没有办法接入。WiFi也不行。必须要在某宝上买一个外接网卡。...
2019-10-22 16:17:29
8426
原创 Error:java: 无效的标记 xxxxxxxxxxxxxxxxxxxxxxxxxx 编译错误的解决办法
在导入之前的jfinal项目的时候,出现了Error:java: 无效的标记: G:\clouldlab/src/main/webapp/WEB-INF/lib 这个错误下面是全部的报错信息Information:java: Errors occurred while compiling module 'zxt'Information:2019/10/14 20:09 - ...
2019-10-14 20:33:32
10789
原创 k8s资源对象总结(官方Java api调用)
pod 资源k8s集群最小的调度单位。一个或多个container组成的pod,同一个命名空间下的不同pod共享资源一个pod可以运行多个container。可以通过同一个ClusterIP+不同的端口访问同个pod里面的container。下面是个标准创建pod的yamlapiVersion: v1kind: Podmetadata: name: nginxspec: ...
2019-08-22 14:34:11
11433
原创 k8s api(官方api)调用(java版)
获取API在GitHub上找到该项目 https://github.com/kubernetes-client/java/下载到Maven仓库在maven仓库的文件夹里面执行下面代码git clone --recursive https://github.com/kubernetes-client/javacd javamvn install这样在maven就可以直接导入给项目(可...
2019-08-12 16:07:57
12196
3
原创 k8s实例(MySQL实例,tomcat实例)
MySQL实例定义描述文件apiVersion: v1kind: ReplicationController #副本控制器RCmetadata: name: mysql #RC的名称,全局唯一spec: replicas: 2 ...
2019-08-07 10:50:48
5765
原创 Kubernetes(ubuntu 三节点)在自己本机上搭建过程
最近在学习k8s,一直在线上学习。决定自己搭建一个在自己本地跑的k8s环境。为了检验自己在学习成果之外,更是让自己学了会用起来。部署软件版本Docker: `docker-ce 18.06`Kubernetes: `k8s 1.13.1必要条件1.准备三台ubuntu虚拟机(要是有三台主机的请忽略这一点),在本地搭建环境的化,推荐安装server版的没有Desktop,节省资源。可...
2019-08-02 16:14:58
6547
原创 ubuntu服务版安装ssh及配置root用户登录
ssh在选择安装系统的时候,可以选择配置的,这个虚拟机准备的是在自己电脑上搭建k8s集群联系和学习的,所以在安装系统的时候没有选择安装。但是服务版的没有桌面图像,不方便管理集群和几个虚拟机之间的切换,就想着用xshell远程控制这个几个ubuntu虚拟机,不仅可以方便切换,而且方便宿主机和虚拟机之间的数据交互。安装···//打开终端sudo apt-get install openssh-...
2019-07-29 17:19:02
7149
原创 目录属性及系统调用(C语言)
mkdir()/tmdir()系统调用功能创建/删除一个空目录头文件#include<sys/stat.h>#include<sys/types.h>函数原型int mkdir(const char *pathname,mode_t mode);int rmdir(const char *pathname);返回值成功时返回0失败时...
2019-07-29 10:13:37
5618
原创 文件属性及系统调用(C语言)
stat()/fstat()/lstat()功能获取文件状态头文件#inlcude<sys/types.h>#include<sys/stat.h>#include<unistd.h>函数原型int stat(const char file_name,struct statbuf);int fstat(int filedes,st...
2019-07-29 10:11:57
6154
原创 基本IO系统调用(C语言)
文件描述符非负整数定义形式int fd;标准文件描述符定义STDIN_FILENO(0)STDOU_FILENO(1)STDERR_FILENO(0)文件操作的一般过程打开-读/写/-[定位]-关闭出错处理UINX风格返回值"errno"变量(“/usr/include/errno.h”)strerror#include<string.h&g...
2019-07-29 10:11:07
6044
原创 Linux 文件系统(C语言)
文件可被读写的对象具备一定权限属性,包含访问权限,类型等文件类型1.普通文件(文本文件,shell脚本,二进制的可执行程序等)2.目录文件3.设备文件(字符设备文件/块设备文件)4.FIFO文件(如管道文件)5.Socket文件6.连接文件(硬链接文件,软连接文件)硬链接文件硬链接文件相当于源文件的一个别名,和源文件指向相同的inode节点...
2019-07-29 10:09:05
6495
原创 linuxC语言程序内存结构
各段说明:代码段(text segment)。加载的是可执行文件代码段,其加载到内存中的位置是由加载器完成。全局初始化数据段区/静态数据段(data segment)加载的是可执行文件的数据段,存储与数据段(全局初始化,静态初始化数据)的数据的生存周期为整个程序运行过程栈区(stack)。由编译器自动分配释放,存放函数的参数值,返回值,局部变量等。在程序运行过程中实时加载和释...
2019-07-29 10:03:16
5513
原创 kubernetes基本概念和术语
masterkubernetes里的master指的是集群控制节点,每一个kubernetes集群里都需要一个Master节点来负责整个集群的管理和控制,基本上kubernetes所有的控制命令都是发给它,它来负责具体的执行过程,所有执行命令都是在master上运行的。Master节点通常会占据一个独立的X86服务器(或者一个虚拟机),一个主要的原因是它太重要了,他是整个集群的首脑,如果它宕机...
2019-07-23 16:08:46
6093
原创 Linux基础知识
编辑器,编译调试工具使用vim geditGCCGDBMakefileLinux下C程序开发ANSI C 库函数POSIX 系统调用在线文档man 手册:Linux系统手册info 手册:GNU的超文本帮助系统获取错误信息在调用库函数或系统调用函数后,绝大多数情况下如果执行成功将返回0或者0或者正确值:如果执行失败,返回-1,并把系统全局...
2019-07-23 08:55:42
5659
原创 Linux概述及安装
Linux 系统安装安装方式按安装距离分类本地安装:可分为光盘安装和硬盘安装。光盘安装既直接通过光盘进行安装;硬盘安装即将ISO文件复制到硬盘后,再进行安装网络安装:适合缺乏大容量存储设备,但具备网络连接的情况。根据所采用方式不同,又可分为Http服务网络安装,NFS服务网络安装及Ftp服务网络安装按安装复制度分类完整安装:该方式最为常用和方便,非常适合初学者,总能满足用户的安装需要...
2019-07-23 08:50:11
5517
原创 docker网络原理
容器互联可以使用 --link参数来是容器互联但是建议将容器加入自定义的Docker网络来连接多个容器,而不是使用–link参数新建网络docker network create -d bridge my-net-d 参数指定 Docker 网络类型,有 bridge overlay连接容器运行一个容器并连接到新建的my-net网络docker run -it --rm --na...
2019-07-23 08:39:26
5427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人