Golang面试基础整理

发布时间:2022-12-08 17:43:32   分类:golang

1、Golang中的panic(异常)和recover(捕获异常)      panic的作用就是抛出一条错误信息,从它的参数类型可以看到它可以抛出任意类型的错误信息。在函数执行过程中的某处调用了panic,则立即抛出一个错误信息,同时函数的正常执行流程终止,但是该函数中panic之前定义的defer语句将被依次执行。之后该goroutine立即停止执行。recover()用于将panic的信息捕捉。recover必须定义在panic之前的defer语句中。在这种情况下,当panic被触发时,该goroutine不会简单的终止,而是会执行在它之前定义的defer语句。2、Golang 之 struct能不能比较 

Kafka为什么性能这么快

发布时间:2022-12-08 17:42:05   分类:其他

  Kafka 是基于操作系统 的页缓存(page cache)来实现文件写入的,我们也可以称之为 os cache,意思就是操作系统自己管理的缓存。   Kafka 在写入磁盘文件的时候,可以直接写入这个 os cache 里,也就是仅仅写入内存中,接下来由操作系统自己决定什么时候把 os cache 里的数据真的刷入磁盘文件中。  kafka 写数据的时候,是以磁盘顺序写的方式来写的,也就是说仅仅将数据追加到文件的末尾,不是在文件的随机位置来修改数据。  通过 零拷贝技术,就不需要把 os cache 里的数据拷贝到应用缓存,再从应用缓存拷贝到 Socket 缓存了,两次拷贝都省略了,所以叫做零拷贝

golang 错误:exec: “\\go-build\\b001\\exe\\t“: file does not

发布时间:2022-11-15 18:23:37   分类:golang

错误原因,是因为我们使用的系统本身是Windows 系统。 想交叉编译Linux系统。将go语言环境变量,GOOS 设置成了 linux,导致项目运行失败解决办法:将环境变量中的GOOS属性,改成windows属性即可。go env -w GOOS=windows

golang gorm 数据库连接池不回收,累计增加

发布时间:2022-11-09 10:53:00   分类:php

sqlDB.SetConnMaxLifetime(time.Second * 60)  设置时间 func DB() *gorm.DB {    var config config.Config    conf := config.GetConf()    dsn := conf.Database.Source //"root:root@tcp(localhost:3306)/db?charset=u

CentOS 8 yum 安装Redis ,安装Golang,RPM安装MySQL

发布时间:2021-11-11 14:06:17   分类:php

国内的话建议修改yum源为阿里云,修改方法参考: CentOS 8修改yum源为国内源;1.添加EPEL仓库在CentOS或Red Hat系统中,需要先添加EPEL仓库 #添加EPEL仓库 sudo yum install epel-release #更新yum源sudo yum update2.安装yum install redis3.启动systemctl start redis4.设置开机自启systemctl enable redis5.修改配置打开/etc/redis.conf文件。1)允许远程连接找到下面这一行,注释掉:b

git 错误 error: The following untracked working tree files would be overwritten by merge:XXX

发布时间:2021-10-15 10:23:49   分类:其他

问题类型#相信很多小伙伴在创建新的git仓库后,会选上添加README.md文件,开始我也没太在意,应该也没有什么问题。但是当我通过git添加远程仓库,给这个仓库上传代码时,出现了如下问题:error: The following untracked working tree files would be overwritten by merge:README.md问题分析#出现这个问题,其实很简单,就是因为我们在本地的仓库中,也写了自己的README.md文件,在上传的时候与远程的冲突了,这时候就会抛出这个错误,解决方法#这里看我们需要哪一个README.md,如果我们需要保留远程的README.md,那我们需要删除本地的。1.删除本地的README

mysql 去掉字段空格 tab 换行键 回车键

发布时间:2021-10-15 10:08:19   分类:MySQL

msyql有去掉两边trim,左侧ltrim,右侧rtrim的函数可以直接用update 表名 set 字段名=ltrim(字段名)有时候不顶事可以用下面解决,去掉空格update `sptcs_warrior` set `ID_number`=replace(`ID_number`,'','')如果excel导表不小心产生了空格update `表名` set 字段名= replace(replace(replace(字段名,char(9),''),char(10),''),char(13)

golang 获取当前年月日周

发布时间:2021-09-10 10:35:47   分类:golang

func WeekByDate(t time.Time) (y int, m int, w int, d string) {    yearDay := t.YearDay()    yearFirstDay := t.AddDate(0, 0, -yearDay+1)    firstDayInWeek := int(yearFirstDay.Weekday()) &

golang 获取2个时间的月分

发布时间:2021-09-10 10:34:33   分类:golang

//获取2个时间的月分 func GetMoths(starttime, endttime time.Time) []string {    arr := []string{}    if starttime.Sub(endttime) > 0 {       cyears := starttime.Year()       cmo

golang 将开始时间和结束时间分割为周为单位

发布时间:2021-09-10 10:33:49   分类:golang

// 将开始时间和结束时间分割为周为单位 func GroupByWeekDate(startTime, endTime time.Time) []WeekDate {    weekDate := make([]WeekDate, 0)    diffDuration := endTime.Sub(startTime)    days := int(math.Ceil(float64(diffDuration/(time.Ho