自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

原创 Go语言-HTTP编程

目录前言1、服务器配置2、客户端配置3、请求方法4、panic宕机恢复5、模板6、MYSQL前言Go原生支持http,直接使用import("net/http")即可,http服务性能和nginx非常接近,都具备高并发支持的能力,代码实现起来比较简单。1、服务器配置package mainimport ( "fmt" "net/http")//HTTP服务端配置//业务请求相应处理func hello(res http.ResponseWr

2022-05-01 02:25:12 1329

原创 Go语言-UDP编程

目录前言1、服务端配置2、客户端配置3、多客户端对接消息前言UDP是用户数据报协议,是一种无连接传输协议,不需要建立连接就可以直接发送和接收数量,属于不可靠的,没有时序的通信,UDP实时性好,适合直播环境。1、服务端配置package mainimport ( "fmt" "net")//UDP服务端配置func main() { //1:启动监听 listener, err := net.ListenUDP("udp", &net.UDPA

2022-04-30 01:27:43 602

原创 Go语言-TCP编程

目录1、客户端和服务端模型2.、服务器端配置3.、客户端配置4、优化聊天模式1、客户端和服务端模型socket: BSD UNIX的进程通信机制,通常也称作套接字”,用于描述IP地址和端口,是一个通信链的句柄。socket可以理解为TCPIP网络的API,它定义了许多函数,程序员可以使用它来开发TCPIP网络的应用程序。计算机上运行对应用程序通常通过“套接字”向网络发出请求或者应答网络请求。服务端处理流程:① 监听端口。② 接收客户端连接。③ 创建go

2022-04-30 00:02:02 659

原创 Go语言-单元测试

目录前言1、函数测试2、结构体测试前言在提交测试工程师代码前,先进行单元测试自检,没有问题,方可提交代码,对于模块或者函数需要自行测试用例。规则:1、文件名必须以_test.go结尾;2、如果是测试函数,必须以Test开头。1、函数测试calc.gopackage main//加法func add(a, b int) int { return a + b}//减法func sub(a, b int) int { return a - b}ca

2022-04-29 00:08:14 737

原创 Go语言-并发控制和锁

目录1、互斥锁2、读写互斥锁3、sync.Once4、sync.Map5、定时器1、互斥锁互斥锁是一种常用的控制共享资源访问的方法,它能够保证只有一个 goroutine 访问共享资源。互斥锁作用:同一时间有且仅有一个 goroutine 进入临界区,其他 goroutine 则在等待锁,等互斥锁释放后,等待的 goroutine 才可以获取锁进入临界区,多个 goroutine 都在等待一个锁时,唤醒机制是随机的。示例:package mainimport

2022-04-28 10:20:22 200

原创 Go语言-高并发

目录1、基本概念2、sync.WaitGroup3、goroutine和线程4、channel5、无缓冲通道和缓冲通道6、生产者和消费者模型7、select 多路复用8、单向通道总结1、基本概念并发:是指一个时间段中几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,担任一个时刻点上只有一个程序在处理机上运行。同一时间段同时在做多个事情。并行:在操作系统中指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。同

2022-04-27 23:47:35 2365

原创 Go语言-文件操作

目录前言1、打开和关闭文件2、读取文件3、写入文件前言计算机中的文件是存储在外部介质(硬盘)上的数据集合,文件分为文本文件和二进制文件。1、打开和关闭文件os.Open()函数能够打开一个文件,返回一个*File和一个err,对得到的文件示例close()方法能够关闭文件。示例:package mainimport ( "fmt" "os")//文件的打开和关闭func main() { //打开当前目录下的abc.txt文件 file, e

2022-04-19 01:39:25 773

原创 Go语言-反射

目录前言1、reflect2、ValueOf3、Value.Set4、结构体反射5、函数反射6、方法反射前言概念:运动时动态的获取变量信息。1、reflectreflect.TypeOf,获取变量的类型,返回reflect.Type。reflect.ValueOf,获取变量的值,返回reflect.Value类型。reflect.Value.Kind,获取变量的类别,返回一个常量。reflect.Value.Interface(),转换成interfa

2022-04-15 23:04:47 289

原创 Go语言-接口

目录前言1、接口的定义2、多态3、系统接口调用4、接口嵌套5、类型断言6、链表使用前言接口不需要显示的实现,只需要一个变量,含有接口类型的所有方法,那么这个变量就实现了这个接口,如果一个变量含有多个interface类型的方法,那么这个变量就实现了多个接口。1、接口的定义概念:Interface类型可以定义一组的方法,不需要实现,并且不能包含任何变量,称之为接口。语法格式:type example interface { Method1(参数

2022-04-15 13:42:43 208

原创 Go语言-结构体和方法

目录1、别名定义2、工厂模式3、Tag原信息4、匿名字段5、方法1、别名定义示例:变量别名定义。package mainimport "fmt"//结构体别名type Student struct{ name string}type sss Studentfunc main() { //Student类型结构体为a var a Student a=Student{"zhangsan"} //sss类型结构体为b var b sss

2022-04-12 23:56:27 205

原创 Go语言-二叉树

目录前言1、前序遍历2、中序遍历3、后序遍历前言满足以下两个条件的数就是二叉树:1.本身是有序树;2.树中包含的各个节点的度不能超过2,即只能是0、1或者2。1、前序遍历示例:用递归的方式遍历。(根左右)package mainimport "fmt"//定义结构体type Student struct { Name string Age int Score float32 left *Student right *Student

2022-04-11 00:27:32 835

原创 Go语言-结构体链表

目录前言1、定义struct的三种方式2、存储方式3、链表更新4、头部添加结构体5、指定位置插入6、删除节点前言结构体是自定义复杂的数据结构,struck里面可以包含多个字段(属性),struck类型可以定义方法,和函数有区分,struck属于值类型,且可以做嵌套,Go中没有Class类型,只有struck类型。1、定义struct的三种方式格式方式:1:var struct Student2:var struct *Student = new (St

2022-04-09 15:22:45 868

原创 Go语言-字符串

目录1、字节数组2、头部处理3、位置索引4、替换5、统计次数6、重复7、大小写8、去除字符9、切片处理10、数值处理1、字节数组示例:输出字节数组。package mainimport "fmt"func main() { var ( str1 = "hello" str2 = "world" ) result := str1 + " " + str2 fmt.Printf("数据:%s,长度:%d,数据类型:%T\n", r

2022-04-05 00:17:29 757

原创 Go语言-递归函数

目录前言1、阶乘2、斐波那契数列前言递归函数就是在调用过程中调用自己。语法格式:func recursion() { recursion() //函数调用自身}func main() { recursion()}Go 支持递归。但在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。1、阶乘示例:package mainimport "

2022-04-01 22:34:05 422

原创 Go语言-映射

目录前言1、映射的实现2、元素赋值3、查找与遍历4、元素删除5、将映射传递给函数前言映射是一种数据结构,用于存储一系列无序的键值对,映射基于键来存储。映射功能强大的地方是,能够基于键快速检索数据。键就像索引一样,指向与该键关联的值。与 C++、java 不一样,Go 使用映射 (map) 不需要引入任何库。1、映射的实现因为映射也是一个数据集合,所以也可以使用类似处理数组和切片的方式来迭代映射中的元素。但映射是无序集合,所以即使以同样的顺序保存键值对,每次

2022-04-01 00:11:54 1441

原创 Go 语言-切片

目录前言1、定义切片2、切片的初始化3、len() 和 cap() 函数4、空 (nil) 切片5、切片截取6、append() 和 copy() 函数前言切片是对数组的抽象。数组的长度是不可改变的,在特定的场景中这样的集合就不太合适,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片二点容量增大。1、定义切片可以声明一个未指定大小的数组来定义切片。var identifi

2022-03-30 21:09:18 3211

原创 Go语言-结构体

目录前言1、定义结构体2、访问结构体成员3、结构体作为函数参数4、结构体指针前言数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体表示一项纪录,比如班级的学生信息,每个人有以下属性:Name:姓名Sex:性别Age:年龄ID card :身份证1、定义结构体结构体定义需要使用 type 和 struct 语句。type 语句设定了结构体名称。st

2022-03-29 23:29:22 568

原创 GO语言- 指针

目录前言1、指针概念2、使用指针流程3、空指针4、指针数组5、指向指针的指针6、多重指针7、指针作为函数参数前言Go 中指针很容易,使用指针可以更简单的执行一些任务。变量是一种使用方便的占位符,用于引用计算机内存地址。取地址符号是 & ,放到一个变量前使用就会返回相应变量的内存地址。1、指针概念一个指针变量指向了一个值的内存地址。类似于变量和常量,在使用指针前需要声明指针。声明如下:var var_name *var-name//

2022-03-29 12:42:24 881

原创 Go语言-数组

目录1、声明数组2、初始化数组3、访问数组元素4、多维数组5、向函数传递数组数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如:整型、字符串或者自定义的类型。相对于去声明 number0, number1, ..., number99 的变量,使用数组形式 numbers[0], numbers[1] ..., numbers[99] 更加方便且易于扩展。数组元素可以通过索引(位置)来读取(或者修改),索引从0 开始,第一个元素索引

2022-03-28 10:18:46 4788

原创 Go 语言-包的引入与用法

目录1、包介绍2、标准库3、程序执行顺序1、包介绍包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其他包中导入内容。如同其他一些编程语言中的类库或命名空间的概念,每个 go 文件都属于且仅属于一个包。一个包可以有许多以 .go 为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main 表示可独立执行的程序,每个 Go 应

2022-03-26 12:46:35 1925

原创 GO 函数

目录1、基础函数2、函数参数3、函数作为实参4、回调函数5、函数闭包6、函数方法函数是基本的代码块,用于执行一个任务。Go 程序中最少有个main() 函数。可以通过函数来划分不同功能,逻辑上每个函数执行的是指定任务。函数申明告诉了编译器函数的名称,返回类型和参数。Go 中的标准库提供了多种可动用的内置函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果传入的是字符串则返回字符串的长度;如果传入的是数组,则返回数组中包含的元素个数。1、

2022-03-25 19:42:04 748

原创 GO 控制台输入

对于不同的基础类型之间的转换,GO 提供了 strconv 包,它实现了字符串与其他基本数据类型之间的转换。其中最常见的是数值转化函数是 Atoi 和 itoa,Atoi:可以将字符串类型的数值直接转化为 int 类型的数值;itoa:可以将 int 类型的数值直接转化为 string 类型的数值。示例:package mainimport ( "fmt" "strconv")func main() { var number string //控制台提示语句 fmt.

2022-03-24 21:00:54 1306

原创 GO 循环语句

目录1、for 循环2、循环嵌套3、break 语句4、continue 语句5、goto 语句在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。流程如下:以下几种类型循环处理语句:循环类型 描述 [for 循环] 重复执行语句块 [循环嵌套] 在 for 循环中嵌套一个或多个 for 循环 循环控制语句循环控制语句可以控制循环体内语句的执行过程。以下几种控制语句:控制语句 描述 [

2022-03-22 13:18:17 905

原创 GO条件语句

目录1、if 条件语句2、if…else 语句3、if 语句嵌套4、switch 分支5、Type Switch6、fallthrough7、select 语句条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。Go 语言提供了以下几种条件判断语句:语句 描述 if 语句 if 语句由一个布尔表达式后紧跟一个或多个语句组成。 if…else 语句

2022-03-20 10:38:30 600

原创 GO语言-运算符

目录1、算数运算符2、赋值运算符3、关系运算符4、逻辑运算符5、位运算符6、其他运算符7、运算符优先级1、算数运算符下表列出了所有 Go 语言的算术运算符。假定 A 值为 10,B 值为 20。运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相乘 A * B 输出结果 200 / 相除 B / A 输出结果 2 % 求余

2022-03-18 22:07:37 110

原创 GO的值类型和引用类型

目录1、值类型变量2、引用类型3、空白标识符1、值类型变量所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值。当使用等号 = 将一个变量的值赋值给另一个变量时,如:j = i,实际上是在内存中将 i 的值进行了拷贝可以通过 &i 来获取变量 i 的内存地址,例如:0xc00000a0a0(每次的地址都可能不一样)。package mainimport "fmt"func.

2022-03-17 23:41:33 3674

原创 Go 语言变量

目录1、变量声明2、多变量声明3、全局变量和局部变量1、变量声明第一种:指定变量类型,如果没有初始化,则变量默认为零值var num1 int = 123var num2 float32 // num2 没有赋值,默认为 0package mainimport "fmt"var num1 int = 123var num2 float32func main() { fmt.Println(num1) fmt.Println(num2)}输出结果.

2022-03-17 21:10:44 520

原创 Go 语言数据类型

目录1、分类2、数字类型3、浮点型4、其他数字类型1、分类在 Go 编程语言中,数据类型用于声明函数和变量数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存Go 语言按类别有以下几种数据类型类型 描述 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true 数字类型 整型 int 和浮点型 float32、float64

2022-03-17 20:11:00 74

原创 GO语言基础语法

目录1、GO标记2、行分隔符3、注释类型4、标识符5、字符串连接6、关键字7、Go 语言的空格8、格式化字符串1、GO标记Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成fmt.Println("Hello, World!")1. fmt2. .3. Println4. (5. "Hello, World!"6. )2、行分隔符在Go程序中,一行代表一个语句结束。每个语句不需要

2022-03-15 22:20:57 809

原创 初识GO语言与环境搭建

目录一、Go语言概念二、Go语言用途三、Go语言开发部署一、Go语言概念Go 是一个开源的编程语言,它能让构建简单、可靠且高效的软件变得容易。Go 是从2007年末由Robert Griesemer(罗伯特·格里茨默)、Rob Pike(罗伯·派克)、Ken Thompson(肯·汤普森)主持开发。后来还加入了lan Lance Taylor(伊恩·兰斯·泰勒)、Russ Cox(鲁斯·考斯)等人,并最终于2009年11月开源,在2012年早些的时候发布了Go 1稳定版本。现在G

2022-03-14 22:04:48 481

原创 基于kubernetes平台微服务的部署

目录1、下载 Kubernetes Continuous Deploy 插件2、设置k8s凭证3、在IDEA里配置文件1、下载 Kubernetes Continuous Deploy 插件2、设置k8s凭证在服务器里找到config文件在凭证里面添加获取k8s的id号编写脚本文件def git_address = "http://192.168.100.128:82/kgc/tensquare_back.git" def git_auth

2022-03-14 17:38:00 628

原创 Jenkins+Kubernetes+Docker完成微服务持续集成

目录1、创建一个流水线的新项目2、创建NFS共享目录3、项目里配置参数4、配置harbor凭证5、编写构建Pipeline6、开始构建项目1、创建一个流水线的新项目2、创建NFS共享目录让所有Jenkins-Slave构建指向NFS的Maven的共享仓库目录[root@k8s-master ~]# vim /etc/exports/opt/nfs/jenkins *(rw,no_root_squash)/opt/nfs/maven *(rw,no_roo

2022-03-10 16:06:32 1232

原创 Kubernetes实现Master-Slave分布式构建方案

目录1.传统Jenkins的Master-Slave方案的缺陷2.Kubernates+Docker+Jenkins持续集成架构图3.Kubernates+Docker+Jenkins持续集成方案好处4.Kubeadm安装Kubernetes5.安装环境说明6.安装和配置NFS和harbor配置7.在Kubernetes安装Jenkins-Master8.Jenkins与Kubernetes整合9.构建Jenkins-Slave自定义镜像10.测试Jenkins-Sl

2022-03-09 03:03:40 1142

原创 Jenkins+Docker+SpringCloud微服务持续集成优化

目录1.Jenkins+Docker+SpringCloud部署方案优化2.设计Jenkins集群项目的构建参数3.微服务多服务器远程发布4.Nginx+Zuul集群实现高可用网关1.Jenkins+Docker+SpringCloud部署方案优化上面部署方案存在的问题:①一次只能选择一个微服务部署②只有一台生产者部署服务器③每个微服务只有一个实例,容错率低优化方案:①在一个Jenkins工程中可以选择多个微服务同时发布②在一个Jenkins工程中可以选择

2022-03-07 02:50:02 576

原创 微服务-前后端结合

目录1.部署后端服务2.部署前端静态web网站1.部署后端服务注册中心eureka服务配置指定生产服务器地址服务网关配置指定生产服务器地址认证中心配置,数据库使用Jenkins中的数据库活动微服务配置数据库脚本导入Jenkins服务器中的MySQLmysql> create database tensquare_user;mysql> use tensquare_user;mysql> source /opt/tensqua

2022-03-03 20:20:22 2145 1

原创 微服务持续集成-拉取镜像和发布应用

目录1.在Jenkins安装可以实现远程的插件2.Jenkinsfile构建脚本生成远程调用模板代码1.在Jenkins安装可以实现远程的插件装 Publish Over SSH 插件找不到插件的话,可以尝试升级下Jenkins的版本配置远程部署服务器拷贝公钥从Jenkins服务器拷贝到生产服务器系统配置->添加远程服务器2.Jenkinsfile构建脚本生成远程调用模板代码找到流水线语法修改代码的配置参数添加端口新参数

2022-03-01 17:35:41 94

原创 微服务集成-Dockerfile编译、生成镜像及推送

目录1.编写制作镜像打包的脚本2.利用dockerfile-maven-plugin插件构建Docker镜像3.微服务持续集成上传到Harbor镜像仓库1.编写制作镜像打包的脚本之前的Jenkinsfile脚本添加内容提交项目,进行构建tensquare_back项目进行测试解决办法tensquare_common中pom配置其他微服务pom中的配置部分把整个项目目录再次提交,进行构建开始编译打包所有微服务项目,在Jenkin

2022-02-28 23:47:19 914

原创 微服务代码检查

目录1.微服务持续集成项目代码上传到Gitlab2.微服务持续集成从Gitlab拉取项目源码3.微服务持续集成提交到SonarQube代码审查1.微服务持续集成项目代码上传到Gitlab在IDEA操作即可,参考之前的步骤。包括后台微服务和前端web网站代码在gitlab上创建前后端项目先做后端提交,后端项目先提交给本地git回到gitlab复制URL路径查看gitlab是否提交成功再提交前端项目代码Windows本地

2022-02-25 20:02:10 613

原创 微服务-容器管理

目录1.Dockerfile制作微服务镜像2.环境准备Harbor镜像仓库安装及使用1.Dockerfile制作微服务镜像在之前配置的Jenkins服务器中配置docker环境,还再需要配置一个harbor服务。我们利用Dockerfile制作一个Eureka注册中心的镜像。[root@jenkins ~]# mkdir test[root@jenkins ~]# cd test/编写Dockerfile[root@jenkins test]# vim Docker

2022-02-25 11:46:09 378

原创 Jenkins+Docker+SpringCloud微服务持续集成

目录一、Jenkins+Docker+SpringCloud持续集成流程1.持续集成流程说明二、本地部署SpringCloud微服务部署1.SpringCloud微服务源码概述2.本地部署前端静态web网站3.在IDEA环境中先打包一、Jenkins+Docker+SpringCloud持续集成流程1.持续集成流程说明(1)开发人员每天把代码提交到Gitlab代码仓库(2)Jenkins从Gitlab中拉取项目源码,编译并打成jar包,然后构建成Docker镜

2022-02-21 23:25:06 843

空空如也

空空如也

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

TA关注的人

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