- 博客(43)
- 收藏
- 关注
原创 http.header.Set()与Add()区别;
在Go语言中进行HTTP请求时,对象表示HTTP请求或响应的头部信息。是一个类型的结构,用于存储键值对,其中键表示HTTP头字段的名称,值是一个字符串切片,可以存储多个相同名称的头字段值。Set和AddSetSetAddSet-Cookie综上所述,Set方法用于设置头字段的单个值,而Add方法用于向头字段添加多个不同的值。根据你的需求和HTTP头部的具体要求,选择合适的方法来操作HTTP头字段。当使用的Add方法向头部字段添加多个值时,你可以通过对象的Get方法来获取这些值,并打印它们。
2023-10-09 16:30:02 2425
原创 git操作
这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。git push -f origin dev // 强制推送当前分支到远程qzq分支。git checkout -b 本地分支名x origin/远程分支名x。origin 为git地址的标志,可以建立当前分支与远程分支的映射关系。git fetch origin 远程分支名x:本地分支名x。
2023-08-28 10:17:49 826
原创 rpc-remote procedure call demo
2.含有两个可导出类型的参数,返回给客户端的参数必须是指针类型。3.函数必须有一个返回值 error。1.字母大写,即要求是public。
2022-08-04 15:17:16 238 1
原创 go-系统监控
对于那些喜欢Ubuntu基础镜像的人来说,Docker容器镜像是另一种选择。已经封装好了学多功能的API,下载相应功能服务的API即可快速搭建监控系统。拉取指标信息的方式,而非轮循访问,有利用系统性能的提高.。使用Alpinebase镜像的轻量级Docker容器。Prometheusconfiguration在。采集性能指标数据并保存,使用。做系统监控信息的采集,写入。也可以使用docker启动。...
2022-07-20 15:10:29 944
原创 Mysql-视图-存储过程与函数
优点操作简单将经常使用的查询操作定义为视图,极大简化了开发人员对数据库的操作减少数据冗余视图跟实际数据表不一样,它存储的是查询语句。所以,在使用的时候,我们要通过定义视图的查询句来获取结果集。而视图本身不存储数据,不占用数据存储的资源,减少了数据冗余。数据安全MySQL将用户对数据的访问限制在某些数据的结果集上,而这些数据的结果集可以使用视图来实现。用户不必直接查询或操作数据表,可以直接通过视图获取数据表中的信息。这在一定程度上保障了数据表中数据的安全性。1.1理解含义。...
2022-07-19 17:07:16 720
原创 go-etcd
高可用的分布式key-val存储,可以用于配置共享和服务发现类似项目:zookeeper(java)和consul(go)开发语言:go接口:提供restful的http接口,使用简单实现算法:基于raft一致性算法的强一致性、高可用(多个备份)的服务存储目录。etcd 与redis:redis集群一般是一主两从,主写入数据,从读出数据,故可能存在信息更新延迟;etcd的强一致性确保热和任何节点的数据都是一致的。故对与强一致性要求高的选用etcd,一致性要求不是很严的可选用redis,redis的
2022-06-29 21:42:17 417
原创 ubuntu安装elasticserach-golang使用
1.下载资源包https://www.elastic.co/cn/downloads/elasticsearch2.解压,本机解压到/home/yunlongchen/opt/elasticsearch中3.es为了安全性,不允许root用户操作,需使用普通用户模式4.由于第三点的要求,该elasticsearch/config/elasticsearch.keystore文件属于root用户,故需将权限授予给普通用户5.配置 6.启动es7.启动/安装时遇到的问题/注意事项:1.es基于jav
2022-06-28 10:17:35 386
原创 日志收集系统
a. 把机器上的日志实时收集,统一的存储到中心系统b. 然后再对这些日志建立索引,通过搜索即可以找到对应日志c. 通过提供界面友好的web界面,通过web即可以完成日志搜索a. 实时日志量非常大,每天几十亿条b. 日志准实时收集,延迟控制在分钟级别c. 能够水平可扩展4.1 ELK简介通俗来讲,ELK是由Elasticsearch(弹性搜索引擎)、Logstash(日志收集)、Kibana(查看日志/可视化的web界面)三个开源软件的组成的一个组合体,ELK是elastic公司研发的一套完整的日志
2022-06-23 21:44:12 2660 2
原创 k8s v1.24.1安装
简介:Kubernetes是用于自动部署、扩展和容器化应用程序的开源系统,当使用的容器服务多了,面临的访问量增大后,就需要一种工具把这些容器统一管理起来,需要实现对这些容器的自动部署、扩展和管理,也就是俗称的容器编排,简称为K8S。1.放行端口2. 禁用交换区3. hosts文件 域名通信5.为了使Linux节点的iptables能够正确查看桥接流量,请在配置中验证是否将其设置为1。6.kubernets自v1.24.0后,就不再使用docker.shim,替换采用作为容器运行时端点。因此需要安装
2022-06-16 21:35:44 2738 1
原创 Golang-MySQL
一.MySQl1 MySQl安装ubuntu:依次输入指令1.sudo apt-get update2.sudo apt-install mysql-server验证是否成功:systemctl status mysql:"Active:active(running)"则安装成功2MySQL 卸载命令sudo apt pure mysql-*sudo rm -rf /etc/mysql/ /var/lib/mysqlsudo apt autoremovesudo apt autocl
2022-05-24 14:12:24 487
原创 shell
1.shell 概述shell本质上是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。 查看shell的解释器类型echo $SHELL我的ubuntu的解释类型为bash类但sh是链接到dash类型2.shell 脚本入门1创建.sh文件touch hello.sh2.编写代码:vim hello.sh基于bash解释器的命令3编译运行:方法一:bash 文件路径/文件名开辟子shell,在子shell里解析语句,主shell不受影响方法二:省略bash,文
2022-05-19 16:26:24 294
原创 ubuntu常用指令
1.vim编辑指令:一般模式下:复制:(n )yy(复制n行) yw(复制该单词)粘贴:p指向行首:^指向行尾巴:$指向屏幕行首:gg/H指向最后一行行首:L替换:r撤销:u合并两行:J写入:插入:i;到行首插入:I附加:a;在行末附加:A换行写入:o保存:写入::w退出::q保存退出: :wq查找替换:查找:/world(查找的单词)替换:替换一个(:s/old/new);替换一行的(:s/old/new/g);全文替换(%s/old/new/g)2. 进程查
2022-05-16 20:39:21 16287
原创 ubuntu-VSCode中Go插件的配置问题解决
2. go mod 代理(为了)# 配置 GOPROXY 环境变量export GOPROXY=https://proxy.golang.com.cn,direct# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)export GOPRIVATE=git.mycompany.com,github.com/my/private3. 执行命令go install github.com/ramya-rao-a/go-outline@latestgo i
2022-05-11 10:04:35 447
原创 ubuntu操作系统firefox浏览器安装flashplayer后仍无法播放的问题解决
更新源 sudo apt-get update 更新flashplayer sudo apt install flashplugin-installer 安装flahplyer sudo apt install browser-plugin-freshplayer-pepperflash 第三步骤至关重要,对于flashplayer的安装(系统可能会不询问直接安装,也可能不询问也不操作),针对flashplayer更新后,浏览器仍然无法播放视频的问题,操作步骤三即可解决。...
2022-05-10 10:48:23 714
原创 贪心和动态规划Golang
贪心和动态规划共同点:取最优子结构的解,一步一步解决问题不同点:贪心取局部最优作为全局最优,动态规划递推全局最优深层区别:贪心是动态规划在最优子结构评价纬度单一(评价条件单一时)的一种特殊解法动态规划:典型应用——背包问题贪心适用模板://评价最优条件是什么?//循环->未解决的问题&&还有解//从可能的解中取最优解//执行最优解//缩小问题规模->双指针,for循环、减去最优解…案例:1.按饥饿度分配饼干,使得不挨饿的人数最多。评价条件:
2022-04-22 16:25:51 580
原创 Golang-数据结构
数据结构1. 数据结构(算法)介绍数据结构是一门研究算法的学科,好的数据结构可以编写出更加漂亮、更加有效率的代码。算法是程序的灵魂。数据结构来源于现实问题。2. 稀疏数组sparse array问题引出:编写五子棋程序中,存在存盘退出和续上盘的功能。按照原始的二维数组方式记录,很多重复数据(0)没有意义,浪费空间和操作时间基本介绍:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1.记录原数组几行几列及共性值,与有多少个不同的值
2022-04-11 09:48:21 1446
原创 海量用户即时通讯系统
3.海量用户即时通讯系统3.1项目开发流程需求分析——>设计阶段——>编码实现——>测试阶段——>实施需求分析:用户注册用户登录显示在线用户列表群聊(广播)点对点聊天离线留言3.2界面设计3.3 项目开发前技术准备项目需要保存用户信息和消息数据,因此需要运用到数据库(Redis或MySQL)的知识,先了解在Golang中运用Redis。Redis 快速入门3.4 实现功能-显示客户端登录菜单代码演示:由于login.go文件依然打包在main
2022-03-28 19:29:07 1393
原创 Go-tcp编程和Redis
tcp编程1.网络编程基本介绍Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信是服务端程序必不可少的也是至关重要的一部分。网络编程有两种:1)Tcp socket(tcp 套接字)编程(c/s结构),是网络编程的主流。之所以加Tcp socket编程,是因为底层是基于Tcp/ip协议的,例如:QQ聊天2)b/s结构的http编程,使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是用tcp socket实现的。例如:京东商城【属于go web开发范畴】1.1
2022-03-13 20:48:31 4915
原创 Go-反射
反射反射的最大用处用于写go框架1. 反射的使用场景1)json序列化和反序列化时,使用到的tag功能实质上就是使用到了反射。2)使用反射机制编写函数的适配器/桥连接2. 反射的基本介绍1)反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind)。基本类型变量的类型和类别是相同的。2)如果是结构体变量/实例,还可以获取到结构体本身的信息(包括其字段、方法)3)通过反射可以修改变量的值,可以调用关联的方法4)使用反射,需要import "reflect"包
2021-12-30 19:35:56 626
原创 Go-常量
常量1.常量的介绍1)常量使用const定义2)常量在定义时必须要初始化3)常量不能修改4)常量是不变的,故常量只能修饰基本数据类型(bool、整数、浮点数、字符串类型)5)使用语法const identifier [type] = value案例演示,代码如下:// 常量说明func main() { // 1.常量定义和修改使用const // 2. 常量在定义的时候必须初始化 const num int = 10 // 3.由于常量是不变的,故常量只能修饰基本数据类型 co
2021-12-24 21:34:14 241
原创 Go-goroutine(协程)和channel(管道)
Go-goroutine(协程)1.goroutine基本介绍1.1 进程和线程说明:1)进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。2) 线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单位。3)一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行。4)一个程序至少有一个进程,一个进程至少有一个线程1.2 并发和并行1)多线程程序(进程中含有多个执行实例/线程)在单核上运行,就是并发。2)多线程程序在多核上运
2021-12-17 10:37:51 1642
原创 Golang-协程、管道和文件操作综合练习题
协程、管道和文件操作综合练习题案例一:要求://1.启动一个协程,将1-2000的数字放到channel(numChan)中// 2.启动8个协程,从numChan取出数(n),并计算1+…+n的值,存放到resChan// 3.最后8个协程协同完成工作后,再遍历resChan,显示结果如res[1]=1…res[10]=55// 4.注意考虑resChan chan int是否合适?代码:package mainimport ( "fmt" "sync")// 要求:1.启动
2021-12-15 10:24:30 570
原创 Golang-单元测试
单元测试针对使用传统方式测试代码块的不足:1)测试代码块需要在main函数中去调用,需要修改main函数,若项目正在运行,就可能去停止项目,不方便2)不利于管理,当需要测试多个函数或多个模块时,都需要在main函数,不利于我们管理和清晰思路3)引出单元测试。testing测试框架,很好解决上述问题。1. 基本介绍Go语言自带有一个轻量级的测试框架testing和自带的 go test命令实现单元测试和性能测试。testing框架和其它语言中的测试框架类似,可以基于这个框架写针对相应函数的测试用例
2021-12-09 20:08:54 4950 2
原创 Golang文件操作续-json
josn1.JOSN基本介绍json(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,经典的使用方式采取key-val形式来描述信息。JSON易于机器解析和生成,并有效地提升网络传输效率,通常程序在网络传输时会先将数据(结构体、map等)序列化为json字符串;接收方得到json字符串后,在反序列化恢复成原来的数据类型(结构体、map等)。这种方式已然成为各个语言的标准。json应用场景示意图2.json数据格式说明在JS语言中,一切变量/
2021-12-08 15:51:20 206
原创 Golang文件操作
文件操作文件的基本介绍文件是数据源(保存数据的地方)的一种,比如经常使用的Word文档、txt文件、Excel文件…都是文件。文件的主要主用就是保存数据,它既可以保存图片,也可以保存视频、音频等。(数据库本质上也是文件,一种特殊格式的文件 )输入流和输出流文件在程序中是以流的形式进行操作的。流:数据在数据源(文件)和程序(内存)之间经历的路径输出流:数据从程序(内存)到数据源(文件)的路径输入流:数据从数据源(文件)到程序(内存)的路径Golang提供的os包中定义了文件对象。
2021-12-07 20:30:22 1208
原创 Golang中键盘输入,提示显示多次的解决方法
解决一些不恰当操作导致的系统内部产生错误,导致代码运行有误的现象例如当使用键盘输入给一个int类型变量赋值时,错输成字符类型,会导致fmt.Scanln()在二次运行时,产生一个unexpected newline错误。案例演示:id := 0 for { _, err := fmt.Scanln(&id) if err == nil { break } else { fmt.Println(err) fmt.Println("指令输入错误,请输入正确的客户编号
2021-12-03 22:14:52 626
原创 Go面向对象编程的三大特性
Go面向对象编程的三大特性1.基本介绍Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样。2.面向对象编程思想-抽象抽象:在定义一个结构体类型时,实际上就是把一类事物共有的属性(字段)和行为(方法)提取出来形成一个物理模型。案例演示:type Account struct { AccountNo string Pwd string Balance float64}//方法func (account *Account)
2021-12-01 19:52:35 233
原创 Golang-工厂模式
工厂模式Golang中的结构体没有构造函数,通常使用工厂模式来解决这个问题。即:当结构体的首字母小写时,为了在其它包也能创建该结构体的实例,这时就需要工厂模式来解决(通常使用编写一个函数实现功能)。同理,当字段名小写时,为了能在其它包也能调用该字段,通常使用编写一个方法来实现。案例演示:model包package modeltype Student struct { Name string Score float64}type person struct { Name stri
2021-11-28 14:36:51 319
原创 面向对象编程应用实例
面向对象编程应用实例1.步骤1)申明/定义结构体,确定结构体名2)编写结构体字段/属性3)编写结构体方法2.案例案例一:要求:(1)辨析一个Student结构体,包含name、gender、age、ID、score字段,分别为string、string、int、int、float64类型。(2)结构声明一个say方法,返回string类型,方法返回信息中包含所有字段值。(3)在main方法中,创建Student结构体实例(变量),访问say方法,并将结果打印。type Student str
2021-11-28 13:07:18 1010
原创 Golang面向编程-方法
方法Golang中的方法是作用在指定的数据类型上的,即和指定的数据类型是绑定的,因此自定义类型(使用type定义的类型),都可以有方法(包括但不仅仅是struct类型)。1.方法的声明和调用> type A struct{> Num int> }> func (a A)test(){> a.Num = 10> fmt.Println(a.Num)> }> func main(){> var a A > a.name
2021-11-27 20:36:25 219
原创 Golang面向对象编程-结构体
面向对象(变量)编程-结构体1.结构体type 结构体名词 struct{字段/属性 type }与隐射map[type1]map[type2][type3]所含的元素必须是相同类型相较,struct能包含更多类型的元素,即使得一个物品的不同属性得到表示,并且更利于数据的管理和维护。案例说明type Cat struct { Name string Age int Color string}func main() { var cat1 Cat fmt.Println(cat1
2021-11-26 11:08:10 459
原创 Golang中map的操作
mapGolang中map官方定义为映射。基本介绍map是key-value数据结构,一种键值对形式的集合,又称为字段或者关联数组。类似其它编程语言的集合,在编程中经常使用到。基本语法var m变量名 map[关键字类型type] 指定值类型typekey的类型: golang中map的key具有多种类型,比如bool、数值、string、指针、管道channel,还可以是包含前面几个类型的接口,结构体、数组。通常为int、string类型。注意:slice,map,function不可以作为k
2021-11-25 09:43:43 2837
原创 Golang二维数组
二维数组二维数组入门案例:func main() { //转置 var a1 = [3][4]int{ {1, 2, 3, 6}, {4, 5, 6, 15}, {7, 8, 9, 24}} b1 := [4][3]int{} for i := 0; i < 3; i++ { for j := 0; j < 4; j++ { if i != j { b1[j][i] = a1[i][j] } else { b1[j][i] = a1[i
2021-11-23 21:28:42 774
原创 排序和查找
排序排序介绍排序是将一组数据,依指定的顺序进行排列的过程。排序的分类:1)内部排序:将所需要处理的所有数据都加载到内部存储器中进行排序。包括:交换式排序法、选择式排序法和插入式排序法2)外部排序:数据量过大时,无法全部加载到内存中,需要借助外部存储器进行排序。有:合并排序法 和 直接合并排序法交换式排序法运用数据比较后,以判断规则对数据位置进行交换,以达到排序的目的。交换式排序法又可分为:1)冒泡排序法(Bubble sort)2)快速排序法(Quick sort)冒泡排序:1
2021-11-21 21:18:01 415
原创 数组和切片
数组介绍数组可以存放多个同一类型数据。数值本身也是一种数据类型,在Go中,数组是值类型,故遵守值类型的使用方法,赋值,取值等。数组定义和内存布局1.数组定义var name [容量]int类型2.内存布局数组的地址为其第一个元素的地址(数组的首地址)数组相邻元素的地址间隔是依据数组的类型决定的,例如int64:隔8个字节,int32:隔4个字节package mainimport "fmt"func main() { var intArr [3]int //int(64位操作系
2021-11-21 15:14:16 2064
原创 Golang
函数参数传递方式基本介绍函数传递方式有两类:值类型和引用类型。值类型参数默认就是值传递,引用类型参数默认为引用传递。两种传递方式1)值传递2)引用传递实际上不管是值传递还是引用传递,传递给函数的都是变量的副本,不同的是,值传递是值的拷贝,引用传递的是地址的拷贝。一般情况下,地址拷贝效率高,因为其数据量小,而值拷贝取决于拷贝的数据大小,数据越大,效率越低。值类型和引用类型1)值类型:基本数据类型(int float系列,bool string complex64/128等),数组和结构体2
2021-11-18 20:39:45 373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人