自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go中的Map实现机制

go中我们常用到的map的底层实现机制知识

2023-03-29 14:24:17 519

原创 Go实现两个Goroutine通信

实现两个goroutine通信,要求如下实现pingpong效果保证程序能任意时长执行,且收到ctrl+c信号之后,全身而退(即保证各个goroutine完整退出)在第三个goroutine中,可随时查找前两个goroutine各自发送了多少个消息,并可设置各自pingpong的频率,如果同时有一万个goroutine过来查找呢符合编码规范的前提下,代码质量控制在两位数答案package mainimport ( "fmt" "os" "os/signal" "syscall"

2022-02-28 16:10:23 594

原创 Go 算法 leetcode 019 删除链表的倒数第 N 个结点

这里写目录标题题目链接答案题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。链接leetcode 019 删除链表的倒数第 N 个结点答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func removeNthFromEnd(head *ListNode, n int) *ListNode {

2022-02-26 22:10:12 572

原创 Go 算法 leetcode 143 重排链表

这里写目录标题题目链接答案题目给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。链接leetcode 143 重排链表答案/** * Definition for singly-linked list. * type ListNode struct { *

2022-02-26 18:19:26 476

原创 Go 算法 leetcode 237 删除链表中的节点

Go 算法 leetcode 237 删除链表中的节点题目链接答案题目请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。链接leetcode 237 删除链表中的节点答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *L

2022-02-26 13:25:16 253

原创 Go 算法 leetcode 086 分隔链表

这里写目录标题题目链接答案题目给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。链接leetcode 086 分隔链表答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func pa

2022-02-26 13:17:48 279

原创 Go 算法 leetcode 148 排序链表

Go 算法 leetcode 148 排序链表题目链接答案题目给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。链接leetcode 148 排序链表答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func sortList(head *ListNode) *ListNode { i

2022-02-26 10:22:42 341

原创 Go 算法 leetcode 092 反转链表 II

Go 算法 leetcode 092 反转链表 II题目链接答案题目给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。链接leetcode 092 反转链表 II答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *

2022-02-25 15:26:36 396

原创 Go 算法 leetcode 025 K 个一组翻转链表

这里写目录标题题目链接答案题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。链接leetcode 025 K 个一组翻转链表答案/** * Definition for singly-linked list. * type ListN

2022-02-25 14:20:59 181

原创 Go 算法 leetcode 024 两两交换链表中的节点

Go 算法 leetcode 024 两两交换链表中的节点题目链接答案题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。链接leetcode 024 两两交换链表中的节点答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func s

2022-02-25 13:48:02 247

原创 Go 算法 leetcode 206 反转链表

Go 算法 leetcode 206 反转链表题目链接答案题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。链接leetcode 206 反转链表答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func reverseList(head *ListNode) *ListNode { va

2022-02-25 13:46:11 242

原创 Go 算法 leetcode 021 合并两个有序链表

Go 算法 leetcode 021 合并两个有序链表题目链接答案题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。链接leetocde 021 合并两个有序链表答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func mergeTwoLists(list1 *Li

2022-02-25 13:38:19 183

原创 Go 算法 leetcode 002 两数相加

Go 算法 leetcode 002 两数相加题目链接答案题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。链接leetcode 002 两数相加答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func addTwoNumbers(l1 *L

2022-02-25 13:35:44 117

原创 Go channel知识总结

Go goroutine什么时候用channel,什么时候用锁或者waitgroup什么是channel简介channel的内部结构创建channel什么是channel简介Go语言的一大核心思想就是“以通信的手段来共享内存”,channel就是其最佳的体现。channel提供一种机制,可以同步两个并发执行的函数,还可以让两个函数通过互相传递特定类型的值来通信channel有两种初始化方式,分别是带缓存的和不带缓存的make(chan int, 0)make(chan int, 10)使用

2022-02-24 23:17:41 398

原创 Go 算法 leetcode160 相交链表

Go 算法 leetcode160 相交链表题目答案题目给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func getIntersectionNode(headA, headB

2022-02-24 16:25:47 713

原创 Go 算法 leetcode234 回文链表

算法 leetcode234 回文链表题目答案题目给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。答案/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func isPalindrome(head *ListNode) bool { if head

2022-02-24 16:11:39 274

原创 Go 通过IP查询城市

Go 通过IP查询城市条件答案条件现有一堆IP,每个IP有对应的城市,给一个IP,查询到对应的城市答案package mainimport ( "bytes" "encoding/binary" "net")type IpRange struct { Begin uint32 End uint32 City string}type IpData []*IpRangefunc (id *IpData) Length() int { return len(*id)

2022-02-24 15:43:07 2074

原创 实现MySQL和Redis数据一致性的方案

实现MySQL和Redis缓存一致的方案延时双删策略操作步骤示例代码异步更新缓存(基于订阅binlog的同步机制)操作步骤示例代码延时双删策略操作步骤示例代码异步更新缓存(基于订阅binlog的同步机制)操作步骤示例代码...

2022-02-24 14:51:12 3928 1

原创 Go context知识总结

Go context相关知识

2022-02-20 23:31:13 690

原创 m1 mac安装docker、k8s(成功案例)

m1 mac安装docker、k8s(成功案例)一、安装docker二、安装kubernetes一、安装docker1.先要清理旧数据(讲道理这一步重不重要我还真没试过,毕竟在docker desktop中也有clean的选项)rm -rf ~/.kuberm -rf ~/.minikuberm -rf /usr/local/bin/minikuberm -rf ~/Library/Group\ Containers/group.com.docker/pkirm -rf ~/.kube2.

2021-12-05 18:58:39 4999 1

原创 vscode统计项目代码行数插件——vecode counter

vscode统计项目代码行数插件——vscode countervscode counter安装插件使用方式插件缺点(仅针对go来说的)vscode counter安装插件按照途中的地方进行搜索就能找到该插件的入口,点击install就可以安装了(图中没有install按钮是因为我已经安装了,懒得去重走一遍)使用方式通过键盘按F1或者同时按ctrl+shift+p,显示vscode的命令面板输入counter,会出现一下的几个选项,选择check available director

2021-09-16 17:01:52 10413

原创 【Linux】知识点与面试题——后端开发工程师面试必考

Linux知识点与面试题二级目录三级目录二级目录三级目录

2021-06-19 01:45:47 264

转载 MySQL查询性能优化方式

MySQL查询性能优化使用 Explain 进行分析Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。比较重要的字段有:select_type : 查询类型,有简单查询、联合查询、子查询等key : 使用的索引rows : 扫描的行数优化数据访问减少请求的数据量只查询必要的列:避免select *的用法只查询必要的行(数据量):用limit限制查询的数据量缓存重复查询的数据:使用缓存可以避免在数据库中进行查询,特别在要

2021-06-14 23:01:29 87

原创 golang面试题题目归纳

golang面试题题目归纳2021.06.01defer2021.06.02go的调度2021.06.01defer知识点面试题下面这段代码输出的内容package main import ( "fmt" ) func main() { defer_call() }func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中

2021-06-06 21:41:15 2503 2

原创 go for range循环取值问题

for range循环取值下面这段代码输出什么,说明原因:func main() { slice := []int{0,1,2,3} m := make(map[int]*int) for key,val := range slice { m[key] = &val } for k,v := range m { fmt.Println(k,"->",*v) }}0->31->

2021-06-02 21:22:27 610

原创 go defer先进后出&例子

defer下面这段代码输出的内容package main import ( "fmt" ) func main() { defer_call() }func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() panic("触发异常"

2021-06-01 22:21:41 466

原创 win10下protoc-gen-go不是内外部命令的方案

问题在windows下使用go-micro测试时需要安装protobuf并生成go版的proto,但是在生成的时候提示错误:'protoc-gen-go' 不是内部或外部命令,也不是可运行的程序或批处理文件。--go_out: protoc-gen-go: Plugin failed with status code 1.解决方案网上找到的方案有两种,并且我都进行了测试方案一(实测好像没作用,不知道是不是因为windows的版本问题,未确定,但确实没作用)进入vscode的termin

2021-05-26 23:26:24 4540 2

原创 RPC原理

关于RPC原理RPC简介RPC(remote procedure call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层昂罗技术的协议。RPC它假定有些协议的存在,例如TCP/UDP等,为通信程序之间携带信息数据。在OSI七层网络模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用更加容易RPC模式RPC采用服务端-客户端的模式,通过request-response消息模式实现RPC的三个过程1.通讯协议2.寻址3.数据序列化为什

2021-05-24 23:28:06 152

原创 【数据库】基础知识与题解——后端开发工程师面试必考

sql面试练习题总结(每日不定量更新)Sql语法一、基础Sql面试练习题595. Big Countries627、 变更性别620、有趣的电影596、超过5名学生的课182、查找重复的电子邮箱196、删除重复的电子邮箱181、超过经理收入的员工183、从不订购的客户184、部门工资最高的员工176、第二高的薪水177、第N高的薪水178、分数排名180、连续出现的数字626、换座位数据库系统原理MySQLRedisSql语法一、基础Sql面试练习题595. Big Countriesleetco

2021-05-21 16:51:47 955

原创 【leetcode】算法题解——后台开发面试必考

leetcode算法题解集合(每日更新,更新数量不定)算法题解github地址(感兴趣的点个star)算法思想双指针001、两数之和002、两数平方之和003、反转字符串中的元音字符004、排序贪心思想二分查找分治搜索动态规划数学数据结构二级目录树栈和队列哈希表字符串数组与矩阵图位算法算法题解github地址(感兴趣的点个star)算法思想双指针001、两数之和167、两数之和II——有序数组题目链接1.解题思路(hashmap解法)遍历数组,每取一个数就判断hashmap中是否存在该值,如果

2021-05-19 18:22:15 150 2

原创 用脚本初始化一个git项目

前言第一次这样子自己写一个脚本,所以存在很多缺陷,目前已知的缺陷已经列出TODO里面了,后续会更新上脚本存在是为了简化日常繁琐的操作,方便人们将重心放在主要的开发任务中,所以创建这个脚本的目的是为了平时写demo或者项目的时候可以快速搭建一个git项目环境而不比再去进行一系列繁琐的初始化操作脚本内容创建git环境,包括git init、.gitignore等,并导入了部分平时会遇到的内容,创建readme.md,并导入相关的markdown格式的目录(TODO,目前还没有自己写过的一个完整的ma

2021-01-19 17:37:18 189

原创 关于windows安装wsl,出现WslRegisterDistribution failed with error: 0x8007019e The Windows Subsystem错误的解决方案

前倾概要在Microsoft store安装ubuntu 18.04成功启动后,出现了该错误并提示按任意键退出(如下图所示,由于我忘了截图,所以只能去别的博主那盗图)解决方案首先需要安装windows的子系统支持步骤:1、win+x,选择windows + powershell(管理员)2、输入Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux(如下图所示)3、回车,输入

2020-11-13 10:40:14 97632 11

原创 关于vscode在用ctrl+左键打开一个新文件时会覆盖当前窗口的解决方案

当我在进行源码阅读时时常需要通过Ctrl+左键打开一个函数/结构体/接口,但是当前窗口却会被覆盖为新的窗口,导致无法返回查看上一个窗口,针对该情况我从其他文章找到了相关的解决方案步骤打开vscode的settings快捷键Ctrl+shift+p打开vscode的搜索框并输入settings(如下图所示)并找到open user settings的选项,关闭enable Preview打开它后会进入一个settings的窗口,在里面的搜索框输入enablePreview,查找到一个设置选项为Wor

2020-10-29 16:57:56 2430

原创 go 关于olivere/elastic在search时数据搜索被限制在10000的解决方案

首先放上第三方库的地址https://github.com/olivere/elastic在我自己使用时遇到search数据时,出来的结果调用TotalHits()被限制在10000(代码如下)resp, err := h.client. Search("dating_profile"). Query(elastic.NewQueryStringQuery(rewriteQueryString(q))). From(from). Do(context.Background()) if

2020-10-18 19:10:33 1484

原创 ubuntu下从安装git到上传项目到Github

Ubuntu下git的安装与配置git安装最开始肯定是要安装好git安装git只需要很简单的一条指令sudo apt-get install git就可以在ubuntu下安装好git并且通过git来确定是否已经安装成功(如下图所示)git配置首先需要配置自己在GitHub上注册的账号、用户名git config --global user.name "xxx" //设置你的用户名git config --global user.email "xxx.com" //设置你的em

2020-10-10 02:13:25 126

原创 golang知识点——爬虫实战(单任务版)

爬虫项目介绍有一定的复杂性可以灵活调整项目的复杂性平衡语言/爬虫之间的比重通用爬虫,如baidu,google聚焦爬虫,从互联网获取结构化数据把网页转换成数据go语言的爬虫库/框架henrylee2cn/pholcusgocrawlcollyhu17889/go_spider不使用现成爬虫库/框架来写一个爬虫项目使用elasticsearch作为数据存储使用Go语言标准模板库实现http数据展示部分爬虫的法律风险robots协议技术上没有约束力法律上仅作

2020-10-09 23:38:31 485

原创 golang知识点——http及其他标准库

http标准库package mainimport ( "fmt" "net/http" "net/http/httputil" _ "net/http/pprof")func main() { request, err := http.NewRequest(http.MethodGet, "http://www.imooc.com", nil) request.Header.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone O

2020-10-01 22:43:32 130

原创 go类型转换(string、int、byte)——持续更新中

go类型转换string转其他类型

2020-10-01 21:36:17 261

原创 golang学习笔记——迷宫的广度优先搜索

迷宫算法在这里插入代码片为爬虫实战项目做好准备应用广泛,综合性强面试常见的问题用循环来创建一个二维slice使用slice来实现队列用Fscanf读取文件对point的抽象

2020-09-25 23:57:30 218

原创 golang学习笔记——channel

channel在这里插入代码片

2020-09-24 22:43:15 182

空空如也

空空如也

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

TA关注的人

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