go
秋叶原の黑猫
这个作者很懒,什么都没留下…
展开
-
go基础问题
**在 Go 语言中支持两个字符类型,一个是 byte (实际上是 uint8 的别名),代表字符串 的单个字节的值,用来储存ASCII码,表示一个ASCII码字符;另一个是 rune(实际上是int32),代表单个 Unicode字符,常用来处理unicode或utf-8字符(一切字符),就是rune的使用范围更大。s:=“3”;rune字符类型int32,专用于存储unicode编码byte字节型uint8。原创 2023-12-20 17:12:42 · 2452 阅读 · 1 评论 -
23届万兴校招golang一面面经
Ps:接口:Go语言中的接口类型是一种特殊的类型,它定义了一组方法的集合,这些方法可以被其他类型实现。一个类型只要实现了接口中定义的所有方法,就可以被认为是该接口的实现类型。go语言的基本概念和语法,上手golang开源项目跟架构(gin,gorm),资料找官网。Gin路由使用了前缀树算法,beego路由使用的正则算法和较为重量级的上下文处理机制。泛型可以理解为一种特殊的接口类型,运行编写通用的代码而不需要提供具体的数据类型。流量控制里,使用市面上常用的两种方法结合去使用。1、你是如何学习go的(扩展讲)原创 2023-11-23 05:08:25 · 396 阅读 · 0 评论 -
session无法读取问题解决(cookie浏览器权限)
在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个cookie1的path为/test/,cookie2的path为/test/cd/,那么test下的所有页面都可以访问到cookie1,而/test/和/test/dd/的子页面不能访问cookie2。了解了基本概念,解决问题就很简单了。domain表示的是cookie所在的域,默认为请求的地址,如网址为www.test.com/test/test.aspx,那么domain默认为www.test.com。原创 2023-07-30 09:32:32 · 694 阅读 · 0 评论 -
go gorm获取数据库报错:goexit: BYTE $0x90 // NOP
这代码乍一看没啥问题,但如果结合报错内容来看就可以知道,db初始化后没有获取到。解决办法也很简单,把err也声明为全局变量。报错内容很多,其实看下来有用的其实就几条。最后我在论坛里找到答案:在go中使用。进行初始化声明得到的是局部变量。原创 2022-12-10 23:18:55 · 1250 阅读 · 1 评论 -
rpc通信的实现方式(以grpc为例)以及proto的语法详解
RPC(Remote Procedure Call):远程过程调用。它是一种调用方式,可以像调用本地方法那样调用远端方法。protobuf(Protocol Buffers):一种开源跨平台的序列化数据结构的协议,是一种体积小、传送快的数据格式。IDL(Interface description language):接口描述语言。RPC需要解决的三个问题(工作原理):通信问题(网络传输协议)序列化和反序列问题(编译)call ID 映射问题(函数映射)原创 2022-11-13 23:58:18 · 1902 阅读 · 0 评论 -
简单实现一个go协程池
协程池简单来说就是一个管道进,一个管道出,多个协程工作。原创 2022-11-02 23:00:05 · 201 阅读 · 0 评论 -
go 使用channel交叉打印奇偶数
使用两个协程一个管道,一个协程输入,另一个协程接收,保证i在两个协程中的值一样。原创 2022-11-02 09:37:31 · 266 阅读 · 0 评论 -
go http服务出现两次请求以及处理favicon.ico
http服务出现两次请求以及处理favicon.ico。原创 2022-11-02 08:37:29 · 406 阅读 · 0 评论 -
GO中redis(gomodule/redigo库)的简单使用(包括如何使用密码登录)
目前中文互联网上大部分介绍redigo库用的都是garyburd,而新版已经迁移到gomodule中,garyburd现已处于维护状态。新版redigo库除了地址迁移以外,还有部分改动,比如已被弃用,以及更改了使用密码连接的方式等,这些问题均可在官网上找到答案。......原创 2022-07-29 01:22:47 · 2411 阅读 · 0 评论 -
在Go中使用正则表达式提取匹配的字符串
FindStringSubmatch方法是提取出匹配的字符串,然后通过[]string返回。第1个匹配到的是这个字符串本身,从第2个开始,才是我们想要的字符串。使用Compile函数或者MustCompile函数进行编译。FindString方法是提取出匹配的字符串本身。我们应该先编译正则表达式,否则性能将变得很差。我们用到regexp库。...原创 2022-07-28 19:42:01 · 1720 阅读 · 0 评论 -
go语言处理中文字符串及其他非纯字符字符串(使用rune类型)
将字符串转成rune数组类型即可。原创 2022-07-28 05:03:13 · 620 阅读 · 0 评论 -
html内容溢出,overflow:auto导致出现滑动条 或者 overflow:hidden导致丢失元素边缘内容解决方法(附带分享自用重置浏览器样式代码)
如标题所说,在子元素内容的宽度并没有超过屏幕大小的情况下,设置了width100%后,再设置overflowauto会出现无意义的左右滚动条(如下图)。又或者设置了overflowhdden,会出现右边内容显示不全,但左边外边框显示正常的情况。...原创 2022-07-26 08:59:18 · 4220 阅读 · 0 评论 -
golang常见的请求接口方法
无论是get方法还是post方法,最终是会调用net/http包的NewRequest函数。多种多样的请求形式,也仅仅是封装的不同而已。2、利用http.client结构体的Do方法,将request实体传入Do方法中。1、使用http.NewRequest函数获得request实体。.........原创 2022-07-25 10:45:30 · 1327 阅读 · 0 评论 -
阿拉伯数字转中文(go语言实现)
这道题在笔试中还挺常见的,如果初次碰到还真没啥头绪。但其实仔细想想也就四种情况:1、数字为02、数字大于等于103、数字中间有多个04、个位数为0处理好这四种情况即可解题原创 2022-06-15 00:25:58 · 1178 阅读 · 0 评论 -
记一次go项目上云服务器运行过程,将golang项目部署到linux(mysql,docker)
此次将项目部署到linux服务器的过程花费了九牛二虎之力,踩了许多坑,总结出了一些经验。写这篇博客既是希望帮助大家少走一些弯路,同时也是给自己的踩坑记录留个档。本次使用xshell6/putty工具与云服务器ubuntu进行连接,使用winSCP在windows和linux传文件(也可以使用scp命令),使用docker实现快速部署,在windows和linux中均安装了Docker,同时已经注册了docker hub账号。项目需要用到mysql和redis,mysql安装在linux中,redis安装在d原创 2022-06-12 03:38:21 · 2594 阅读 · 0 评论 -
dgrijalva/jwt-go类库存在安全隐患,需要升级版本
github自动检测出项目里面的jwt-go 有安全漏洞,因此现在升级一下把github.com/dgrijalva/jwt-go 替换为github.co m/golang-jwt/jwt/v4然后go mod tidy就行原创 2022-05-28 16:47:19 · 615 阅读 · 0 评论 -
go 使用viper包读取toml和yml配置文件
什么是viper包?Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。有了viper包,不用再费尽心思去寻找不同格式的配置文件对应的操作库,轻松读取配置信息。目前viper包支持JSON、TOML、YAML、HCL、envfile和Java properties等格式。viper非常的容易上手。读取toml文件test.toml[database]server = "192.168.1.1"ports = [ 8001, 80原创 2022-04-28 18:25:26 · 3169 阅读 · 0 评论 -
分治策略算法—循环赛日程表 go实现
func roundRobinSchedule(n int) { if n < 2 { fmt.Println("error") return } k:=int(math.Pow(2.0,float64(n))) dp:=make([][]int,k) for i := range dp { dp[i]=make([]int,k) } dp[0][0],dp[0][1],dp[1][0],dp[1][1]=1,2,2,1 var gen func(x,y,d int)原创 2021-12-10 17:22:28 · 132 阅读 · 0 评论 -
golang中使用validator进行数据校验及自定义翻译器
目录一、概述二、使用官方标记符进行数据效验三、自定义标记符和翻译器进行数据效验一、概述在接口开发经常需要进行数据校验,validator包是一个比较强大的校验工具包。下面是一些学习总结,全文使用gin框架进行讲解,详细内容可以查看validator二、使用官方标记符进行数据效验下面我以“required”进行代码演示,要查看更多标记符可以查看官方文档导包import ( "errors" "fmt" "github.com/gin-gonic/gin" "github.com/go-pl原创 2021-12-01 17:21:46 · 3008 阅读 · 1 评论 -
判断中文和日文的正则表达式
日文的unicode编码:[/u30a1-/u30f6/u3041-/u3093/uFF00-/uFFFF/u4e00-/u9fa5]中文的unicode编码:[/u4e00-/u9fa5] str:="我の生活123abc" reg := regexp.MustCompile("[\u30a1-\u30f6\u3041-\u3093\uFF00-\uFFFF\u4e00-\u9fa5 \u4e00-\u9fa5a-zA-Z0-9_-]+") fmt.Println(reg.FindAllStr原创 2021-11-25 20:57:07 · 2332 阅读 · 0 评论 -
go 设置session的有效时间
我用到了gin框架和session包这里以session包里的例子来举例package mainimport ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/redis" "github.com/gin-gonic/gin")func main() { r := gin.Default() store, _ := redis.NewStore(10, "tcp", "localhost原创 2021-11-21 15:30:10 · 1963 阅读 · 0 评论 -
go报错:panic: cannot create context from nil parent
go项目版本不一致造成代码修改 由func SetCtXXXXX(ctx context.Context) context.Context { ctx = context.WithValue(ctx, XXXX, XX) ctx = context.WithValue(ctx, SS, 0) ctx = context.WithValue(ctx, CC, 0) return ctx}改为func SetCtXXXXX(ctx context.Context) co原创 2021-11-10 19:39:14 · 831 阅读 · 0 评论 -
GORM CRUD指南
https://www.liwenzhou.com/posts/Go/gorm_crud/原创 2021-09-13 14:20:55 · 120 阅读 · 0 评论