自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Go 空结构体

为什么使用空接口类型节省空间Go 语言中几种常见的类型宽度大小空结构体的特殊性空结构体在各类系统中频繁出现的原因之一,就是需要一个占位符。而恰恰好,Go 空结构体的宽度是特殊的。使用场景(1)实现方法接收者。type T struct{}func (s *T) Call() { fmt.Println("kkkk")}func main() { var s T s.Call()}(2)实现集合类型。在 Go 语言的标准库中并没有提供集合(Set)的相关实现,因此一般

2021-05-31 23:52:17 28

转载 vue 疑难杂症

错误:template syntax error Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.翻译结果:模板语法错误组件模板应该正好包含一个根元素,如果你使用的是v-if多元素,使用v-else-if链他们。错误原因:vue模板只支持一个元素,不能并列包含两个及以上。解

2021-05-28 16:36:06 11

转载 go死锁情况

channel死锁https://juejin.cn/post/6844903881843933197

2021-05-26 15:53:22 15

转载 go 定时任务

定时任务手册:https://www.gairuo.com/p/cron-expression-sheet

2021-05-20 17:12:37 17

转载 漏桶与令牌桶

区别漏桶算法能够强行限制数据的传输速率。令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的,所以即使网络中没有发生拥塞,漏桶算法也不能使某一个单独的数据流达到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌桶算法则能够满足这些具有突发特性的流量。总结如果要让自己的系统不被打垮,用令牌桶。如果保证被别人的系统不被打垮,用漏桶算法。https://blog.csdn.net/qiansha

2021-05-19 19:45:11 7

原创 gin 中间件使用问题

gin.Engine添加的中间件func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes { engine.RouterGroup.Use(middleware...) engine.rebuild404Handlers() engine.rebuild405Handlers() return engine}中间件作用于同一Enginee.Group 添加中间件中间件只作用于当前group...

2021-05-19 11:41:17 30

原创 Swaggo使用 swag init 错误:failed to get package name in dir

错误2021/05/18 15:53:04 warning: failed to get package name in dir: ./, error: execute go list command, exit status 1, stdout:, stderr:no Go files in ***2021/05/18 15:53:04 cannot parse source files ***: open /Users/liuqiuhong/go/src/lioncat/main.go: no su

2021-05-18 16:10:37 151

原创 gorm中的一些错误

解决:在open连接后拼接参数:parseTime=true 即可

2021-05-12 17:50:06 50

转载 .golangci.yml配置说明

# 运行配置run: # 要使用的CPU核心数 concurrency: 4 # 分析超时,例如 30s, 5m,默认是 1m timeout: 5m # 包管理模式,go modules使用readonly # 可用的值范围 readonly|release|vendor modules-download-mode: readonly # 当有多少个问题存在时则退出检查,默认是1 issues-exit-code: 10 # 是否包含测试文件 test

2021-05-11 17:48:10 154

原创 gitlib搭建

1、简介GitLab 是一个利用Ruby on Rails 开发的开源版本控制系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。开源中国代码托管平台 码云 就是基于GitLab项目搭建。GitLab

2021-04-25 17:59:21 15

转载 goland依赖一直飘红解决 MAC GOLANG

golang依赖飘红难受把go modules 打开,然后evironment里的值设置为下图点击apply,ok 就解决了另外还要记得要给项目生成一个go.mod文件go mod init xxxgo mod tidy 就可以了

2021-04-22 18:05:52 278

原创 电话号码的字母组合

题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/解题var phoneMap map[string]string = map[string]string{ "2":"abc", "3":"def", "4":"gh

2021-04-20 19:08:40 18

原创 Elasticsearch 学习(todo)

1、Elasticsearch简介Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。想要发挥其强大的作用,你需使用Java并要将其集成到你的应用中。Lucene非常复杂,你需要深入的了解检索相关知识来理解它是如何工作的。Elasticsearch也是使用Java编写并使用Lucene来建立索引并实现搜索功能,但是它的目的是通过简单连贯的RE

2021-04-20 15:08:48 16

原创 《go语言核心编程》读书笔记(todo)

读这本书的目的是对已有的go知识进行查漏补缺基础知识函数类型系统接口并发反射语言陷阱

2021-04-20 10:09:04 14

原创 wrk学习

1、简介wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。PS: 其实,wrk 是复用了 redis 的 ae 异步事件驱动框架,准确来说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl 的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而被大家所熟知。2、优势、劣势优势:劣势:wrk 目前仅支持单机压测

2021-04-19 19:52:56 25 1

原创 JWT学习

1、简介`Json web token (JWT)`, 是为了在网络应用环境间传递声明而执行的一种基于`JSON`的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的`单点登录(SSO)场景`。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。2、JWT 的几个特点(1)JWT 默认是不加密,但也是可以加密的。生成原始

2021-04-19 15:58:12 17

原创 go 数据库迁移工具sql-migrate

migrate 软件https://github.com/rubenv/sql-migrate 下载安装go get -v github.com/rubenv/sql-migrate/...教程:https://github.com/rubenv/sql-migrate 使用sql-migrate 命令\$ sql-migrate --helpusage: sql-migrate [--version] [--help] <command> [<args>]A

2021-04-16 14:45:56 124

原创 golang中生成读取二维码

skip2/go-qrcode 生成二维码github地址:https://github.com/skip2/go-qrcodepackage mainimport qrcode "github.com/skip2/go-qrcode"import "fmt"func main() { err := qrcode.WriteFile("https://github.com/skip2/go-qrcode", qrcode.Medium, 256, "qr.png") if err != n

2021-04-15 17:35:16 27

原创 apollo下载、安装与使用

安装java SDK访问Oracle官网 https://www.oracle.com/index.html 下载javaSDK参考连接:https://www.jianshu.com/p/194531d106ae安装Appollohttps://github.com/ctripcorp/apollo/wiki/Quick-Start导入sql语句source /your_local_path/sql/apolloportaldb.sqlsource /your_local_path/sql/

2021-04-15 15:42:54 149

原创 go kafka流式处理

goka框架:https://blog.csdn.net/studyhard232/article/details/88557962https://studygolang.com/articles/24483https://www.ctolib.com/lovoo-goka.htmlpackage mainimport ( "context" "fmt" "log" "os" "os/signal" "syscall" "github.com/lovoo/goka" "githu

2021-04-15 12:08:54 39

转载 Golang 中使用 JSON 的小技巧

1、临时粘合两个structtype BlogPost struct { URL string `json:"url"` Title string `json:"title"`}type Analytics struct { Visitors int `json:"visitors"` PageViews int `json:"page_views"`}json.Marshal(struct{ *BlogPost *Analytics}{po

2021-04-14 16:11:25 8

原创 gin 兼容字符串整型

1、概述Gin 框架中,处理 JSON 格式的参数绑定时,默认采用的标准包 encoding/json,然而标准包不能满足我们的一些要求,比如兼容字符串整型、PHP空数组、时间格式等。jsoniter ( json-iterator )是一款快且灵活的 JSON 解析器Jsoniter 是最快的 JSON 解析器。它最多能比普通的解析器快 10 倍之多,独特的 iterator api 能够直接遍历 JSON ,极致性能! 0 内存分配!这样的 iterator 你绝对没有用过github地址:h

2021-04-14 16:00:21 37

原创 《深入理解kafka核心设计与实现原理》读书笔记

基础篇主题:主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。offset 是消息在分区中的唯一标识,Kafka 通过它来保证消息在分区内的顺序性,不过 offset 并不跨越分区,也就是说,Kafka 保证的是分区有序而不是主题有序。分区:Ka

2021-04-14 15:36:50 52 2

原创 二叉搜索树节点最小距离

二叉搜索树节点最小距离https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes//** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ import "math"func minDiffInBST(roo

2021-04-13 17:50:07 7

原创 最大数

最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。https://leetcode-cn.com/problems/largest-number/import ( "sort" "strconv" "strings")type Compare []stringfunc (c Compare) Len() int{ return len(c)}func (c Compar

2021-04-12 17:33:33 8

原创 跳跃游戏

跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。https://leetcode-cn.com/problems/jump-game/func canJump(nums []int) bool { pos := 0 // 最远的距离 for i,item := range nums{ if i <= pos { if i+ite

2021-04-12 16:48:08 12

原创 买卖股票的最佳时机

买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/func maxProfit(prices []int)

2021-04-12 15:51:48 14

原创 岛屿类问题的通用解法、DFS 遍历框架

岛屿的最大面积https://leetcode-cn.com/problems/max-area-of-island/func maxAreaOfIsland(grid [][]int) int { max := 0 for x,item := range grid { for y := range item { tmp := getIslandArea(grid,x,y) if tmp > max {

2021-04-09 16:47:31 18

原创 回溯算法

// todo

2021-04-07 17:43:04 24

转载 动态规划

概念动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。基本思想与策略基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。由于动态规划解决的问题多数有重叠子问题这

2021-04-07 17:22:41 20

转载 分治算法

// todo

2021-04-07 17:13:00 19

原创 贪心算法

// todo

2021-04-07 17:12:07 27

原创 go读取csv文件

package mainimport ( "encoding/csv" "fmt" "os")const ( // 文件路径 filePath = "source.csv" // 处理过后新文件路径 newFilePath = "dest.csv")func main(){ // 绝对路径 fs, err := os.Open(filePath) if err != nil { fmt.Println(fmt.Sprintf("can not open the f

2021-04-06 18:33:14 24

原创 《Redis 设计与实现》阅读

1、资料如何阅读 Redis 源码?Redis 设计与实现redis3.0源码2、读后感// 待续

2021-03-31 19:05:23 21

转载 gorm添加数据库排他锁,for update

适用于先读后更新的数据竞争场景,且应该将加锁操作放到事务中,防止锁被自动释放func UpdateUser(db *gorm.DB, id int64) error { tx := db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() if err := tx.Error; err != nil { re

2021-03-31 18:33:41 39

原创 《Redis 深度历险: 核心原理和应用实践》读后小结

基础https://lioncat.blog.csdn.net/article/details/107006707https://lioncat.blog.csdn.net/article/details/106931908redis命令中心数据结构https://blog.csdn.net/weixin_39684228/article/details/113315662分布式锁使用 setnx(set if not exists) 指令,只允许被一个客户端占坑。先来先占, 用 完了,再调用

2021-03-31 17:57:07 10

转载 Yapi直接运行接口

下载https://github.com/xiuxiuing/cross-request安装https://cloud.tencent.com/developer/article/1517980

2021-03-31 13:28:07 54

原创 go一些小的坑

1、gin 路由/aa/bb/aa/:id两个路由会出现冲突2、web参数传递前段传的是json,需要按字符串接收后,再进行解码(json.Unmarshal())3、遍历指针切片for _,item := range []*int{tmpItem := item.....}go中一切处理都是复制,item接收的地址指向的空间不断变化,导致item的值都是切片的最后一个值,需要用临时变量处理4、mysql group bymysql5.7以后默认禁用全量group by如果一

2021-03-29 14:21:41 11

转载 kafka学习记录

简介kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。kafka对外使用topic的概念,生产者往topic里写消息,消费者从读消息。为了做到水平扩展,一个topic实际是由多个partition组成的,遇到瓶颈时,可以通过增加partition的数量来进行横向扩容。单个parition内是保证消息有序。每新写一条消息,kafka就是在对应的文件append写,所以性能非

2021-03-19 13:12:28 54

原创 记录 mac下载sentry

1.下载安装docker很多种方法:brew:https://www.jianshu.com/p/9142187552db桌面:https://www.docker.com/products/docker-desktop2.下载安装sentry有一些文章是说需要通过命令生成密钥,目前已有 install.sh 脚本,所以简化了配置过程,不需要手动调整密钥,快结束的时候会让你输入 邮箱+密码,来作为登陆 sentry 的管理员账号。git clone https://github.com/ge

2021-03-18 19:12:05 29

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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