- 博客(247)
- 资源 (3)
- 收藏
- 关注
原创 Gin框架的post方法实现传递信息到后台
html页面form表单调用了post方法,路由是getUserInfo。表单提交后,服务器控制台收到了,post传递过来的表单信息。
2023-11-15 22:38:33
274
原创 gin架构下实现页面的数据调用
运行结果,数组和切片可以通过{{rang ,}} {{.}}{{end}} 来实现遍历。其他如 map,struct可以使用键值对。
2023-11-14 20:40:32
324
原创 golang 2018,go 1.19安装Gin
一致提示URL不能有点,给我整郁闷了,换了这个地址好了。但是一致提示zip的包问题,最后还是不行又换回七牛。
2023-11-09 22:33:53
818
原创 golang的管道阻塞问题
但是这里面wg.Add(2)主从协程我没明白。我起一个的时候是不会阻塞的,起两个会。跟容量就没关系,只要不读就会阻塞。读写频率不同,也是可以,有读就不会阻塞。
2023-11-07 22:29:34
369
原创 golang的文件操作
os.OpenFile,OS包的方法打开文件,将程序的内容写入到缓存中,传给变量,来展示。ioutil.ReadFile 读取文件,写入到变量,传入到路径下。
2023-11-02 22:17:31
249
原创 golang中的string与其他格式数据的转换方法
strconv包下有多个方法,可以实现string to int 类型,但是strconv.Parse*可以实现更多的格式。
2023-10-23 21:53:07
340
原创 golang中的闭包的再说明
f:= getSum() //没用形参的函数,赋值给F,f()调用的复制,相当于给getSum的返回值赋值,也就是func(int)int{},这个匿名函数的形参num =1。//不使用闭包,想保留的值不可以反复使用,闭包可以保留上次引用的某个值,传入一次就可以反复使用。// 返回的是一个匿名函数,但是这个匿名函数引用到的函数外的变量参数,因此这个匿名。//函数返回值为一个函数,函数的参数是一个int的参数,返回值也是int。//闭包的本质,是一个匿名函数,这个匿名函数需要引入外部的参数。
2023-10-19 22:04:34
399
原创 goland 旧版本使用1.19环境
这样就可以引入了,不需要写很长的go path:src:一串的地址。但是我也没使用go mod呀,不知道为啥。
2023-10-12 22:39:15
424
原创 minikube安装
修改docker 下载加速地址, systemctl deamon-reload。minikube也是需要docker环境的,首先看一下docker。通过repo里面查找最新的docker。下载docker.repo源到本地。开始安装docker。下载minikube。初始化的时候还是卡主了。
2023-08-22 22:13:36
210
原创 ES安装到win10
中间报错了几次,需要根据log的提示调整,主要是jvm或者java环境,或者xpack的问题。因为安装的8.6最新版的es,所以需要禁用xpack否则登录是需要配置秘钥比较麻烦。首先安装java,设置环境变量 JAVA_PATH JAVA_HOME PATH。win版本默认是不支持集群的,所以需要开启http.cors.enabled。登录localhost:9200之后有一个keystore存储在本地。jvm.options 可以调整jvm的内存大小。开启了集群,所以kibana直接接管的效果。
2023-02-09 21:05:38
351
1
原创 Anlios装grouplist 组件之后报错,安装tiger-vncserver
因为之前升级了一个epel-release源,然后containerd也装进去了,但是版本太低。不想要了可以 vncserver -kill :1 删了就保留有一个,根据端口号链接。可以新增 然后就可以查看,该了之后需要systemctl daemon-reload。编辑/etc/systemd/system/vnvserver@1:service。中间一度以为是源时间不同步更新了一个ntpdate发现没有卵用。然后以为是runc挡住了,发现没有runc。删完了containerd就可以装了。
2022-12-20 17:45:10
869
原创 golang中的函数,方法,接口,反射
golang语言代码简洁,编写简单,很大程度上是因为go提供给工程师的语言特性少。go中的功能封装是通过函数进行的,不同结构体之间可以通过接口来进行统一,再结合反射特性就可以开发大型复杂的项目。
2022-10-11 17:55:17
619
原创 golang中struct
前面已经介绍的数组,slice,map有一定的相同之处,即处理的都是相同类型的元素,map中的key和value属于相同的类型,但如果要把多个类型的元素放到一起进行处理,则要使用go语言为我们提供的数据结构structstruct非常适合定义一个有意义的对象,可以用于定义属性和方法,这和c语言的结构体,java,class类有些相似。当然struct肯定不是classstruct也是复合类型,而非引用类型,复合类型和引用类型是有区别的,复合类型是值传递,引用类型是引用传递。
2022-10-11 15:18:59
3165
原创 golang中map
其中k是键,在同一个map中所有k必须是同一个类型,而且只有可以比较,或者说只有可以使用== 符号比较的类型才可以作为K,显然bool类型作k 并不灵活,而使用浮点型作为k,可能会因为不同机器和系统对于精度定义的不同而导致异常。map的遍历顺序是不固定的,不同的机器可能对HASH算法的使用会有所不同,而且从实际应用来看,mao的遍历顺序确实体现出无序的特征。上例中,delete函数执行时,没有元素也不会报错,虽然map中没有该键,但是不会报错,而是会返回值类型的默认值初始值,int的初始值就是0。
2022-10-11 09:55:05
303
原创 golang中slice结构定义
数组可以为空,也就是有0个元素,切片也可以为空,长度可以为0,但容量不为0,也可以两者都为0。因为slice是通过指向的底层数组来存储数据的,而且可能有多个slice指向同一个底层数组,这样就会导致一个情况,如果一个小的切片指向这个底层数组,将会导致底层数组处于使用状态而无法被垃圾回收。append为切片a在尾部追加了一个元素333,cap变成了6,这是slice的自动扩容,如果发现当前的容量不足以容纳新元素,则自动扩展为原来的2倍,当长度太长时,是1.5倍。可知ss切片其实是指向数组a的引用。
2022-10-09 14:41:41
824
原创 golang数组
d := [...]int{4,4:1,1:2} 可以看到后面并没有给所有的元素赋值,而且赋值使用了index:value,比如4:1的意思就是下标为4的元素赋值1,这时候数组长度根据出现的最大下标确定,因为定义时没有指定,所以此时数组长度4.[4 2 0 0 1]var b [3] int = [3] int {1,2,3} 定义数组的同时进行初始化的赋值,这种定义方式有些冗余,精简操作就是把比变量b后面的[3]int取消, var b =[3]int {1,2,3}
2022-09-27 17:56:29
529
原创 golang中的格式化说明符
UTF-8是unicode标准是一种具体表现,其特点是字符长度可变,长度为1到字节不等,以内具有这个特点,所以塔可以无缝对接ASCII码,如果UTF-8编码的第一个bit位是0,那么长度为一个字节,即只使用第一字节剩下的7位存储字符,这正好能覆盖ASCII字符集。字符串的赋值是需要注意的地方,比如在对s1,s2这两个字符串进行s1=s2的赋值操作时,本质不会进行赋值,仅会传递字符串的地址和字节长度,因为字符串不可变,就没必要再复制一份了。实际上字符串对应的字节序列,存储byte类型的0值也是可以的。
2022-09-27 10:42:32
1156
原创 go语言的基本数据类型
算术运算符+ — * / 适用于整型,浮点型和复数,但是取模运算符% 仅用于整型件的运算,取模运算符的符号和被取模数的符号总是一致的,除法运算符/ 的行为则依赖于操作数的类型,;float32输出的结果明显是不对的,这是因为float32是按照默认小数位输出的,但默认的小数点位数并不准确,float64则输出了正确的结果,所以,在使用浮点型是,应尽量使用float64。rune是int32的别名,使用utf-8进行编码,如果要访问字符串中的字符,比如遍历字符串中的每个字符,可以使用这个类型。
2022-09-21 17:42:05
420
原创 golang选择和循环
i的作用域是这个for循环,我们可以在大括号内使用i,如果要在100次循环完成前结束循环,可以用break,如果仅仅是结束本次循环代码块内上虞的代码然后继续开始下一次循环,可以用continue。go语言的循环只提供了for关键字,没有while等其他关键字,因为for完全可以替代while,这一点符合go语言简洁的风格。go语言的垃圾回收也是自动实现的,本节将介绍go语言的垃圾自动回收功能,所谓垃圾回收,就是释放那些不会再使用的程序所占的空间,比如已经没有引用的变量,垃圾回收过程是go程序并发执行的。
2022-09-21 14:06:59
653
1
原创 golang 中的go指针
上面的例子是基本类型,其实符合类型也是变量,他们也有一个地址,也是可以通过指针操作的,复合类型内的具体元素同样有地址,并且可以通过指针进行操作。对于上礼中的p,我们称之为指针类型,指针类型的默认初始值为nil,可以通过p==nil来判断是否取得地址,nil就是未取得。go语言是支持指针的,假设有一个int型变量x,&x表示取x的地址,将此值赋给p,那么p就是指针。go语言中,除非显示的使用指针,否则所有的值传递都是具体值的复制,包括数组等复合数据,对于指针的介绍,go的指针比c++的安全多。
2022-09-08 16:24:38
1110
1
原创 golang 指针变量赋值
以上两种用法中,第一种会根据等号右侧表达式的值推测出其string类型,需要指出的是,第一种用法是go语言中的无类型用法,这种无类型也是一种类型,是一种比基础类型精度更高的类型,至少可以达到256位,比机器硬件精度更高。其中,无类型的 go语言中六种:无类型布尔,无类型整数,无类型文字符号,无类型浮点数,无类型复数,以及无类型字符串。声明常量时可以使用常量生成器iota,iota可以通过枚举创建一系列相关的值,而且不需要明确定义类型,iota每次从0开始取值,逐次加1。通过左移运算符达到乘以2的幂的效果。
2022-09-08 14:25:09
1710
原创 golang写第一http接口
使用go语言开发web服务是不需要用户单独阿壮其他服务器的,直接使用标准的net/http包就可以构建web服务了,正如上面的代码所示,这段代码的功能非常简单,通过fmt.Fprintf函数向http请求打印字符串,执行本程序后,可以看到在控制台上输出 server start,然后在浏览器中访问localhost:1234 就可以看到页面显示。函数handler的定义,其参数是固定,因为要满足接口的要求。http.Request代表一次请求,是一个结构体,指针和结构体都会在后文介绍。
2022-09-07 17:08:09
930
原创 golang环境安装 学了8个月K8S 复习一下go
GOPATH% pkg下clone之后 对了一个项目,同时bin下多了一个mod。右下角装mod的时候选全部安装,没有 的时候去git拉。装不过去的mod的有点难受。
2022-09-07 12:05:51
134
原创 查看启动日志和常见状态码
常见的web 状态码 500 501 502 503 504。也可以直接dmesg 查看启动相关的。nginx优化关注一下。
2022-08-25 14:50:38
117
原创 面试的时候被问到的两个小工具 nload sar
apt install nload nload apt install sysstat sar 1 n
2022-08-24 13:18:22
193
原创 root@cn0614010484l:/var/lib/dpkg# ls -l status-rw-r--r-- 1 root root 2037605 8月 15 12:25 statusr
rw-r--r-- 1 root root 2037605 8月 15 12:25 status。只需要清楚 /var/lib/dpkg/status 文件 相当于centos里面的repo下的。-rw-r--r-- 1 root root 0 8月 15 12:50 status。
2022-08-15 12:54:01
302
原创 firewall-cmd 规则新建与删除
firewall-cmd --zone=trusted --list-all查看指定区域下的规则。firewall-cmd --get-zone 拿一个区域。
2022-08-12 14:47:09
2486
原创 firewall-cmd修改ssh接口转发
ssh远程协议是基于TCP22端口传输控制指令的,如果想让用户通过其他端口号也可能访问ssh服务,就可以试试转发技术了。通过这项技术,新的端口在收到用户请求后会自动转达到原本服务的端口上。把原来访问本机8888端口的流量转发到22端口,--permanent。实现了基于firewalld的端口转发。然后对应的zone修改。...
2022-08-11 11:37:33
438
原创 win10装Ubuntu双系统和装CUDA
以前try ubuntu的时候可以直接装到M2上,但是这次不行。然后只能手动先分区,然后不格式化,手动选分区装。装到boot loader里,不然grub2就检测不到。 装完之后装cuda的时候 nvidia-smi已经能看到cuda的版本,但是nvcc -V检查不到。开始是以为没装tookkit,后来发现是没有变量。sudo apt-get install aptitudesudo aptitude install cuda 然后装的时候因为先装了显卡驱动,run包装的时候最好不要选驱动包,否则会显
2022-07-06 15:22:20
385
原创 helm kubernetes包管理工具
helm可以帮助我们管理kubernetes应用程序,helm Charts可以定义,安装和升级复杂的kubernetes应用程序,charts包很容易创建,版本管理,分享和分布。helm对于kubernetes来说就相当于yum对于centos来说,如果没有yum的话,我们在centos下面要安装一些应用程序是极度麻烦的。首先当然需要一个可用的kubernetes集群,然后在我们使用helm的节点上已经配置好可以通过kubectl访问集群,因为helm其实就是读取的kebeconfig文件来访问集群的。由
2022-06-30 17:14:01
232
原创 ceph 原理
ceph是一个统一的分布式存储系统,提供较好的性能,可靠性,可扩展性。简介:高性能抛弃了传统的集中式存储寻址方案,采用CRUSH算法,数据分布均衡,并行度高考虑了容灾域的隔离,能够实现各类负载的副本设置规则,例如跨机房,机架感知等能够支持上千个存储节点的规模,支持TB到PB的数据高可用性副本数可以灵活控制支持故障域分离,数据强一致性多种故障场景自动进行修复自愈没有单点故障,自动管理高可扩展性去中心化扩展灵活随着节点增加而线性增长特性丰富支持三种存储接口,块存储,文件存储,对象存储支持自定义接口,支持多种语言
2022-06-30 14:41:55
503
原创 k8s-local存储
前面我们有通过hostPath或者emptydir的方式来持久化我们的数据,但是显然我们还需要更加可靠的存储来保存应用的持久化数据,这样容器的重建后,依然可以使用之前的数据,但是存储资源和CPU资源以及内存资源有很大不同,问了屏蔽底层的技术实现细节,kubernetes便引入了pv和pvc两个重要的资源对象来实现对存储的管理。pv的全称是persistentVolume持久化,是对底层共享存储的一种抽象,pv由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如Ceph,GlusterFs
2022-06-29 16:53:06
1165
原创 k8S-调度器
kube-scheduler是kubernetes的核心组件之一,主要负责整个集群资源的调度功能,根据特定的调取算法和策略,将pod调度到最优的工作节点上去,从而更加合理充分的利用集群的资源。默认情况下,kube-scheduler提供的默认调度器能满足我们绝大多数的需求,我们前面和大家接触的实例也基本上用的默认的策略,都可以保证我们的pod可以被分配到资源充足的节点上运行,但是在实际的线上项目中,可能我们自己会比kubernetes更加了解我们自己都应用。比如我我们希望pod可以运行在特定的几个节点上。或
2022-06-29 10:50:31
1169
原创 树莓配装ubuntu
ubuntu-ports镜像-ubuntu-ports下载地址-ubuntu-ports安装教程-阿里巴巴开源镜像站 (aliyun.com)这个源版本是不对的%s /ubuntu/ubuntu-tops/ 替换 装图形装完之后卡的不行,不装图形准备跑个casaos,但是发现这个性能有点差apt install ubuntu-desktop随后刷了lineage OS lineage OS tv 然后刷不起来recovery,所以没法装谷歌助手,最后刷了当贝。还可以 看视频凑合装APP 比较困难,只能adb
2022-06-23 15:27:44
781
原创 给你的win10装一个wget
GNU Wget 1.21.3 for Windows (eternallybored.org) 这样你就拥有了一个wget的命令 同时你就可以使用wget -O 重命名 wget -P 制定路径保存 wget -d 显示连接信息就能看到握手的过程了
2022-06-21 16:38:38
440
原创 k8s-configMap
可变配置管理,前面我们学习了一些常用的资源对象的使用,但是单纯依靠这些资源对象,还不足以满足我们的资产需求,一个重要的需求就是应用的管理配置,敏感信息的存储和使用,容器运行资源的配置,安全管控,身份认证等等对于应用的可变配置在kubernetes中是通过一个configMap资源对象来实现的,我们知道许多应用经常会从配置文件,命令行参数或者环境变量中读取一些配置信息的需求,这些配置信息我们肯定不会直接写死到应用程序中去,比如你一个应用连接一个redis服务,下一次想换一个还得重新袖带代码,重新制作一个镜
2022-05-27 11:49:10
400
原创 k8s-job和cronjob
今天我们来给大家介绍另外一个资源对象job,我们在日常工作中,经常遇到一些需要进行批量数据处理和分析的需求,当然也会按照时间来进行调度的工作,我们的kubernetes集群中为我们体统了job和cronjob两种资源对象应对我们的需求job负责处理任务,即仅执行一次任务,它保证批处理任务的一个或多个pod成功结束,而cornjob则就是在job上加时间调度[root@master1 ~]# kubectl describe job job-demoName: .
2022-05-11 18:00:59
651
原创 k8s-daemonSet控制器
通过该控制器的名称我们可以看出他的用法daemon,就是用来部署守护进程的,daemonSet用于在每个kubernetes节点中将守护进程的副本作为后台进程运行,说白了就是每个节点部署一个pod副本,当节点加入到kubennetes集群中,pod会被调度到该节点上运行,当节点从集群只能够被移除后,该节点上的pod也会被移除,当然我们删除daemonSet,所有和这些对象相关的pods都会被删除。集群存储守护程序,glusterd ceph要部署在每个节点上提供持久性存储节点监控守护进程,prome
2022-05-11 15:20:17
453
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人