自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 谈一谈grpc

grpc:谷歌开发的一款用于微服务通信的协议。特点:1、基于protobuf传输2、基于http/2.0传输优势:protobuf二进制传输,相较于json的文本传输速率有大幅度提高http/2.0支持流式传输,并且提供超时机制劣势:部分语言并不支持protobuf,应用面相对较窄...

2022-01-25 00:15:50 307

原创 MySQL 查询并计算百分数

sql语句CONCAT(CAST(CONVERT(100 * CAST(count(*) AS DECIMAL) / CAST((SELECT COUNT(*) FROM thy_ams.host_endpoint) AS DECIMAL), DECIMAL) AS CHAR) ,'%') AS percentage//CONCAT 合并连个字段//CAST 转换字符类型示例SELECT *,COUNT(e.id) total,CONCAT(CAST(CONVERT(100 * CAST(c

2022-01-24 15:53:22 1581

原创 Gorrila算法论文学习

Gorrila一、Goriila的特点在保证高可靠的读写性能的同时,通过对时间戳和value的存储空间量压缩,使数据得以写入内存中,大幅度提高查询的效率。二、为什么要设计Goriila根据facebook业务场景,超过85%的查询需求都集中在26h内的数据,内存型的数据更符合运维人员的查询分析需求;此外,Gorilla可以作为缓存来平衡内存的写入速度和硬盘的读写速度。Operation Data Store(ODS)读性能缺陷ODS由TSDB、查询服务、服务发现、告警系统组成。其中TSDB使基于

2022-01-11 17:34:49 1538

原创 go get下载依赖报错is not using a known version control system

背景goland 输入命令C:\Users\HI\go\GoPack> go get -u github.com/gin-gonic/gin报错如下package github.com/gin-gonic/gin: directory "C:\\Users\\HI\\go\\src\\github.com\\gin-gonic\\gin" is not using a known version control system分析该问题属于依赖管理, go module是Go1.11版本

2021-11-05 14:19:47 2325

原创 递归算法在Go项目实战的应用

递归算法在Go项目实战的应用生成树形结构//结构体type MenuNode struct { Id int `json:"id"` Pid int `json:"parentId" tag:"parentId"` TypeName string `json:"label"` Noted string `json:"noted"` Updated time.Time `json:"updated" xorm:"updated"` Cr

2021-11-01 15:05:59 97

原创 MySQL出现ERROR 1205(HY000):Lock wait timeout exceeded; try restarting transaction的解决办法

见此文章

2021-10-30 20:47:43 264

原创 go语言rune、[]byes、string

go语言rune、[]byes、string字符编码在讲述三种类型前,首先要明确字符编码的几个概念1 ASCII最早只有127个字母被编码到计算机里,即ASCII码的127个字符,包括英文大小写、数字及符号。缺点:只适用于英文编码,与其它国家语言字符不兼容。优点:占用空间小。2 Unicode解决了不同国家编码兼容的性问题,Unicode将不同编码统一到一个格式当中缺点:占用内存大,纯英文编码比ASCII大一倍内存占用空间。优点:解决编码统一性问题。3 UTF-8可变长度Unicod

2021-10-25 15:29:20 368

原创 # Golang项目实战(一)后端分页处理

Golang项目实战(一)后端分页处理目录Golang项目实战(一)后端分页处理背景实现测试背景分页:根据设定页码及页面容量展示数据。简单来说,就是点击页码,例如1,即返回10条(容量)数据。web项目开发经常需要将后台查询的表数据返回至前端展示,若返回全量数据前端不便处理。所以后端需根据前端传入的参数调整查表的逻辑。实现由于我们需要将表的数据进行分段处理,为了标记及计算当前处理的数据位置,需要引入两个参数,1、偏移量offset、2、单页容量limit,它们根据前端传入的页数pageNum,和

2021-09-30 19:44:59 2695

原创 Golang算法-双指针 (剑指 Offer 57. 和为s的两个数字)

剑指 Offer 57. 和为s的两个数字func twoSum(nums []int, target int) []int { //收尾双指针 left := 0 right := len(nums)-1 for left<right{ if nums[left]+nums[right]==target{ return []int{nums[left],nums[right]} } if nums[l

2021-09-28 23:06:55 93

原创 Golang学习之网络参数请求-Query Params及Path Variables的区别及底层实现

Golang学习之网络参数请求-Query Params及Path Variables的区别及底层实现目录Golang学习之网络参数请求-Query Params及Path Variables的区别及底层实现背景Golang实现总结背景后端向web页面请求参数时,通常会有两种方式,1、Query Params;2、Path Variables,他们的区别在哪里呢?一、Query Params顾名思义,请求参数。由前端通过k-v键值对的形式传入,其值并不是通过url本身获取,例如http://lo

2021-09-28 00:55:58 2798

原创 Golang算法-双指针 (剑指 Offer 63. 股票的最大利润)

剑指 Offer 63. 股票的最大利润func maxProfit(prices []int) int { //双指针法 minprice := -1 maxprofit := 0 for i:=0;i<len(prices);i++{ if minprice == -1 || prices[i]<minprice{ minprice = prices[i] } if prices[i]-

2021-09-26 22:32:36 157

原创 Golang算法-双指针 (剑指 Offer 11. 调整数组顺序使奇数位于偶数前面)

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面func exchange(nums []int) []int { //头尾双指针 left := 0 right := len(nums)-1 for left<right{ if nums[left] % 2 == 0 && nums[right] % 2 ==1{ nums[left],nums[right] = nums[right],nums[l

2021-09-26 22:05:57 111

原创 Golang算法-队列 (剑指 Offer 32 - II. 从上到下打印二叉树 II)

剑指 Offer 32 - II. 从上到下打印二叉树 II/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func levelOrder(root *TreeNode) [][]int { //例外条件 if root == nil{ return

2021-09-25 15:35:36 80

原创 Golang标准库(Regexp)正则匹配

Golang标准库(Regexp)正则匹配简介regexp包实现了golang中正则表达式搜索,详细内容请见文档https://studygolang.com/static/pkgdoc/pkg/regexp.htm工具1、正则表达在线测试https://c.runoob.com/front-end/854/2、正则表达工具文档https://www.runoob.com/regexp/regexp-syntax.html常用库函数1、func Compilefunc Compile(

2021-09-24 23:51:09 2658

原创 Golang算法-双指针 (剑指 Offer 11. 旋转数组的最小数字)

双指针剑指 Offer 11. 旋转数组的最小数字func minArray(numbers []int) int { //特殊条件 if len(numbers)==1{ return numbers[0] } //建立相邻双指针 i:=0 j:=1 //遍历 for numbers[i]<=numbers[j]{ i++ j++ if j>len(numbers

2021-09-24 21:06:39 109

原创 Golang算法-二叉树(剑指 Offer 28. 对称的二叉树)

剑指 Offer 28. 对称的二叉树/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func isSymmetric(root *TreeNode) bool { if root == nil{ return true } return d

2021-09-24 20:50:05 62

原创 Golang算法-二叉树(剑指 Offer 27. 二叉树的镜像)

剑指 Offer 27. 二叉树的镜像/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func mirrorTree(root *TreeNode) *TreeNode { //边界条件 if root == nil{ return nil }

2021-09-24 20:14:57 74

原创 Golang算法-二叉树(剑指 Offer 33. 二叉搜索树的后序遍历序列)

递归剑指 Offer 33. 二叉搜索树的后序遍历序列func verifyPostorder(postorder []int) bool { //入手点:二叉树后续遍历的性质、二叉查找树性质 //二叉树后续遍历最后一个数为根节点,结合这个规律可以使用递归 //二叉查找树根节点大于左右子节点 if len(postorder)<=1{ return true } //一、找到根节点,并标记 root := postorder[

2021-09-23 19:34:14 98

原创 Golang算法-树([剑指 Offer 32 - I. 从上到下打印二叉树)

剑指 Offer 32 - I. 从上到下打印二叉树/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func levelOrder(root *TreeNode) []int { treenums := []int{} //一、处理例外情况 if root =

2021-09-22 22:08:49 119

原创 Golang算法-二维数组查找(剑指 Offer 04. 二维数组中的查找)

剑指 Offer 04. 二维数组中的查找//给二维数组赋值方式//var a = [][]int{// {1,3,4,5},// {2,5,6,8},//} //这就构成了一个2行4列的二维数组func findNumberIn2DArray(matrix [][]int, target int) bool { rows := len(matrix) //特殊条件 if rows == 0 { return false } column := len(matrix[0]

2021-09-22 20:04:40 263

原创 Golang算法-动态规划(剑指 Offer 42. 连续子数组的最大和)

剑指 Offer 42. 连续子数组的最大和func maxSubArray(nums []int) int { //构建dp数组 //dp[i]为以nums[i]为结尾元素的数组和的最大值 //构建递推公式 //当dp[i-1]<0时,dp[i] = nums[i] //当dp[i-1]>=0时,dp[i] = dp[i-1] + nums[i] //初始条件 //dp[0] = nums[0] //例外分析 //len

2021-09-21 17:08:06 137

原创 Golang算法-树(剑指 Offer 07. 重建二叉树)

树剑指 Offer 07. 重建二叉树/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } *///前序二叉树,和中序二叉树的性质//如何利用前序和中序序列构建二叉树func buildTree(preorder []int, inorder []int) *TreeNode {

2021-09-21 15:43:14 103

原创 Golang算法-动态规划(剑指 Offer 10- II. 青蛙跳台阶问题)

动态规划剑指 Offer 10- II. 青蛙跳台阶问题func numWays(n int) int { //例外条件 if n < 0 { return -1 } if n == 0{ return 1 } if n == 1{ return 1 } //初始化条件,注意这里容量大小,题目中存在dp[0]=1这个条件,当n==2时,dp数组长度为3,所以这里len(dp)==n+1

2021-09-20 20:57:00 158

原创 Golang算法-动态规划(lc.64最小路径和)

二维动态规划lc.64. 最小路径和func minPathSum(grid [][]int) int { //初始化条件 rows,columes := len(grid),len(grid[0]) //一、构建二维dp数组 //1、分配内存,先分配行,后分配列 dp := make([][]int,rows) for i:=0;i<rows;i++{ dp[i] = make([]int,columes) } //

2021-09-19 15:57:02 200

原创 解决go.mod文件中require内依赖全部飘红

背景:使用GIN框架时,发现其内部包很多方法未实现,进而查找go.mod文件,发现存在问题。解决方法:依照上述配置即可解决。

2021-09-19 03:08:18 3958 1

原创 腾讯云应用服务器部署MySQL

腾讯云应用服务器部署MySQL背景为方便学习及测试轻量级应用,购买了腾讯官方服务器,配置如下系统:Centos 7.6cpu:2核内存:4GB系统盘:80GB SSD内存云服务器yum源安装mysql出现问题,无法建立socket,参照:https://blog.csdn.net/hi1313732/article/details/113700133 的方法安装成功步骤1:下载 mysql :wget https://dev.mysql.com/get/mysql57-communi

2021-09-16 22:17:19 522

原创 Golang算法-排序算法(快速排序)

快速排序快速排序和递归排序有类似之处,但快速排序是先排序找边界,通过边界分组递归排序,所以快速排序总体分为两部:1、寻找哨兵 pivot ,其左侧的元素都小于它,右侧的元素大于它,采用填坑法,一般先将数组头部定义为pivot并将其取出(其余留位置为一个“坑”)2、递归,简单的递归排序func sortArray(nums []int,left,right int) { //埋坑,比哨兵小的埋入left指针坑,哨兵大的买入right指针坑 //第一递归的边界条件,递归数组长度须>0 if

2021-09-15 23:14:21 619

原创 Golang算法-动态规划(lc524. 通过删除字母匹配到字典里最长单词)

双指针Lc524. 通过删除字母匹配到字典里最长单词func findLongestWord(s string, dictionary []string) string { var a string a = "" for _,dic := range dictionary{ //判断存在子串 if issubstring(s,dic){ //保留长度大的子串 if len(dic)>len(a){

2021-09-14 22:19:41 47

原创 Golang算法-动态规划(lc198.打家劫舍)

Lc198.打家劫舍https://leetcode-cn.com/problems/house-robber///三步走//1、确定状态函数dp[i],前i个房屋能偷到的最高金额//2、确定递归函数,dp[i] = max(dp[i-2]+nums[i],dp[i-1])//3、确定初始条件,dp[0] 为第一间房屋的金额数func rob(nums []int) int { dp := make([]int,len(nums)) if len(nums) == 0{

2021-09-14 20:52:04 100

原创 夜莺监控v3组件分析---Redis

夜莺V3 redis组件使用夜莺通过redis应用推送告警,主要利用了其消息队列功能。v3版本redis客户端采用redigo,夜莺v3的告警架构图如下所示redis告警信息流程如下所示:judge模块直接从transfer中取出指标与其从monapi同步的告警策略匹配,生成的event推送到redis服务器,代码如下一、开启redis连接池func Init(cfg RedisSection) { ... //与monapi开启的连接池不同,这里每一个redis服务器地址匹配一个连接

2021-09-14 14:39:43 530

原创 Golang算法-动态规划(lc338.比特位计数)

动态规划Lc338.比特位计数https://leetcode-cn.com/problems/counting-bits/1、确定dp数组的含义dp[i]:整数i的二进制为1的个数2、确定dp的递归函数0 --> 01 --> 12 --> 103 --> 114 --> 1005 --> 1016 --> 1107 --> 111可以看出if i % 2 == 0,dp[i] = dp[i/2]if i % 2 == 1,d

2021-09-13 22:05:24 181

原创 Golang算法-排序算法(归并排序)

Golang算法-排序算法(归并排序)归并排序归并排序归并排序的主要思想是分治,归-将数组分解为最小单位的数据,通过双指针比较大小,最后将数据合并。主要步骤:1、将数组分解,按len(nums)/2的长度递归分解数组2、双指针比较分解后左右(left,right)数据大小,将小数据添加到结果数组中,指针+1,继续比较。3、合并排序后的数组//主方法func Dividemerge(nums []int)[]int { return dividemerge(nums)}//数组划分为两个

2021-09-04 14:46:16 216

原创 Golang并发编程(一)-sync.WaitGroup

Golang并发编程(一)-sync.WaitGroup 为什么需要sync.WaitGroup?goroutine并发执行的时候需要一段时间,由于是串行编译运行的,有时会出现并发程序还没执行完毕,而后方的程序已经执行而导致错误。通常的处理方式是调用time.sleep延迟并发执行的一段时间如下:func main() { go pf() go pf() time.Sleep(1000 * time.Microsecond)//开启1s的延时等待}func pf() { fmt.Pri

2021-09-04 02:10:34 230

转载 MAC OSX快速安装redis

Redis安装,使用Homebrew安装说明转载自:https://blog.csdn.net/realize_dream/article/details/1062276221、安装Homebrew,安装国内npm/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2、使用Homebrew安装brew install redis安装成功==> Downloading

2021-09-03 15:31:56 121

原创 golang中make和new的区别

golang中make和new的区别golang中make和new的区别一、从使用上来看二、从内存管理来看golang中make和new的区别一、从使用上来看make只能为slice、map、chan类型分配内存,查看make方法可知它的返回值就是自己本身,func make(t Type, size ...IntegerType) Typenew可以为多种数据类型分配内存,例如struct``[]int等,new方法返回的是类型的指针func new(Type) *Type二、从内存管理

2021-09-02 20:21:54 66

原创 github合并master和main

github合并master和main一、背景自建的github仓库存在两个分支:main和master,之前代码push到master分支,需将master分支上的代码合并到main分支。2021年8月后,github默认分支为main二、步骤git checkout main# 切换到分支 'main'# 您的分支与上游分支 'origin/main' 一致git branch# * main# mastergit merge master --allow-unrelated-hi

2021-08-20 10:10:10 7436 1

原创 golang实现文件上传并转存数据库

这里写自定义目录标题欢迎使用前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文

2021-08-17 19:14:38 1353

原创 Mac配置VScode C++环境

Mac配置VScode C++环境配置此环境花费了不少时间,在官方文档、B站、CSDN找了不少资料,最后终于解决问题。主要步骤如下:一、安装VSCODE,官网下载安装即可,此处不多赘述二、安装扩展程序包括如下三、配置tasks.jsonshift+command+p 呼出选择框,输入task,调取clang++。四、配置launch.json在debug界面(小虫子标识...

2021-04-15 21:14:58 1956

空空如也

空空如也

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

TA关注的人

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