自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库缓存一致性问题

数据库缓存一致性

2022-11-22 08:46:21 341 1

原创 go语言刷题:257. 二叉树的所有路径

题目:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。注:叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]示例 2:输入:root = [1]输出:[“1”]代码:func binaryTreePaths(root *TreeNode) []string { // 如果根节点为空,则返回空节点 if root == nil { return

2022-05-30 16:33:24 212

原创 go语言刷题:79. 单词搜索

题目:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]],word = “ABCCED” 输出:true示例

2022-05-30 09:36:23 184

原创 系统的信号值

信号值功能SIGHUPSIGHUP 1 终端控制进程结束(终端连接断开)SIGINT 2 用户发送INTR字符(Ctrl+C)触发SIGQUIT 3 用户发送QUIT字符(Ctrl+/)触发SIGKILL 9 无条件结束程序(不能被捕获、阻塞或忽略)SIGUSR1 10 用户保留SIGUSR2 12 用户保留SIGPIPE 13 消息管道损坏(FIFO/Socket通信时,管道未打开而进行写操作)SIGALRM 14 时钟定时信号SIGTERM 15 结束程序....

2022-05-28 10:43:19 109

原创 redis基础

常用命令127.0.0.1:6379> ping #查看当前连接是否正常,正常返回PONGPONG127.0.0.1:6379> clear #清楚当前控制台(为了更好的看到下面输入的命令)127.0.0.1:6379> keys * #查看当前库里所有的key1) "db"127.0.0.1:6379> FLUSHALL #清空所有库的内容OK127.0.0.1:6379> keys * (empty array)127.0.0.1:6379&.

2022-05-10 10:58:02 225

原创 ubuntu安装mysql

安装mysql//更新apt-getsudo apt-get update//安装mysql服务端和客户端sudo apt-get install -y mysql-server mysql-client查看mysql版本mysql --version重新设置密码,mysql安全设置sudo mysql_secure_installation查看mysql运行状态systemctl status mysql//或者service mysql status登陆mysql.

2022-04-29 09:42:51 679

原创 ubuntu安装redis

redis安装和配置教程

2022-04-28 14:24:46 3102

原创 vs code配置go环境

安装gogo下载地址//ubuntu安装tar -C /usr/local -xzf xxxx.tar.gz安装go插件vscode 中,输入 ctrl + shift +p 打开窗口Go:Install/Update Tools设置代理go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct添加环境变量export GOROOT=/usr/local/go #go的安装目录expo.

2022-04-24 10:32:23 441

原创 搜索算法的思想

BFS广度优先搜索广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。第一层:0 -> {6,2,1,5}第二层:6 -> {4}2 -> {}1 -> {}5 -> {3}第三层:4 -> {}3 -> {}每一层遍历的节点都与根节点距离相同。设 di 表示第 i 个节点与根节点的距离,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j.

2022-04-23 16:14:31 132

原创 git用法

配置邮箱和用户名称git config --global user.name "你的名字或工号或昵称"(注意双引号是英文格式)git config --global user.email "你的邮箱"下载项目git clone github项目连接上传改动的项目git add .git commit -m "update"git pull...

2022-04-23 11:12:25 75

原创 回溯算法思想

Backtracking(回溯)属于 DFS。普通 DFS 主要用在 可达性问题 ,这种问题只需要执行到特点的位置然后返回即可。而 Backtracking 主要用于求解 排列组合 问题,例如有 { ‘a’,‘b’,‘c’ } 三个字符,求解所有由这三个字符排列得到的字符串,这种问题在执行到特定的位置返回之后还会继续执行求解过程。因为 Backtracking 不是立即返回,而要继续求解,因此在程序实现时,需要注意对元素的标记问题:在访问一个新元素进入新的递归调用时,需要将新元素标记为已经访问

2022-04-10 15:55:41 63

原创 go语言刷题:417. 太平洋大西洋水流问题

题目有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r][c] 表示坐标 (r, c) 上单元格 高于海平面的高度 。岛上雨水较多,如果相邻单元格的高度 小于或等于 当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。返回 网格坐标 res.

2022-04-09 17:21:07 493

原创 go语言刷题:130. 被围绕的区域

题目给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例 1:输入:board =[[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“X”]]解.

2022-04-08 08:56:03 118

原创 go语言刷题:695. 岛屿的最大面积

题目给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。示例 1:输入:grid =[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,.

2022-04-06 20:04:36 423

原创 DFS深度优先搜索

DFS广度优先搜索

2022-04-06 19:24:43 232

原创 go语言刷题:127. 单词接龙

题目字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk:每一对相邻的单词只差一个字母。对于 1 <= i <= k 时,每个 si 都在 wordList 中。注意, beginWord 不需要在 wordList 中。sk == endWord给你两个单词 beginWord 和 endWord 和一个字典 wordList ,.

2022-04-05 15:57:59 557

原创 go语言刷题:279. 完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和11 不是。示例 1:输入:n = 12输出:3解释:12 = 4 + 4 + 4示例 2:输入:n = 13输出:2解释:13 = 4 + 9/ 方法func numSquares(n int) int { // 初始化列表 f := make([]int, n+1).

2022-04-04 19:48:16 492

原创 几种经典的负载均衡

随机负载均衡// 随机负载均衡type RandomBalance struct { curIndex int rss []string //观察主体 conf LoadBalanceConf}// 添加服务器地址func (r *RandomBalance) Add(params ...string) error { if len(params) == 0 { return errors.New("param len 1 at least") } addr :=.

2022-04-03 15:34:23 285

原创 go语言刷题:1091. 计算在网格中从原点到特定点的最短路径长度

1、从 {0,0}出发【加入队列】,经过 八个方向2、每次到达一个点,只要满足条件,就加入队列,加入队列意味着下一轮会从该节点出发[也就是 A点出发到达B点,下次以B点为起点出发到达C点,每次到达一个点后,就以到达的点为起点]3、已经被走过的点就不用再走了,应为那个点说明有人提前到过了4、 只有当前到达的点 是 右下角的点 就可以直接返回,不需要遍历剩余的注: 因为是最短路径,需要明确并认同,最先到达右下角的一次走法,最短路径可以理解为,多个人A从点出发去B点,每个人的速度相同,那么最先到达B点.

2022-04-02 21:56:23 433

原创 BFS广度优先搜索

BFS广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。第一层:0 -> {6,2,1,5}第二层:6 -> {4}2 -> {}1 -> {}5 -> {3}第三层:4 -> {}3 -> {}每一层遍历的节点都与根节点距离相同。设 di 表示第 i 个节点与根节点的距离,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di &l

2022-03-18 10:14:09 474

原创 go语言刷题:95. 不同的二叉搜索树 II

给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。示例 1:输入:n = 3输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]示例 2:输入:n = 1输出:[[1]]解决方法func generateTrees(n int) []*TreeNode { if n == 0 { r

2022-03-18 09:56:13 63

原创 regexp.Compile正则匹配的用法

func main() { // 用法1 // 是否匹配字符串 // .匹配任意一个字符 ,*匹配零个或多个 ,优先匹配更多(贪婪) match, _ := regexp.MatchString("H(.*)d!", "Hello World!") fmt.Println(match) //true // 或 match, _ = regexp.Match("H(.*)d!", []byte("Hello World!")) fmt.Println(match) //true // 用

2022-03-13 13:27:50 2110

原创 正向代理与反向代理

函数是一等公民// 新建函数类型type HandlerFunc func(http.ResponseWriter, *http.Request)// 新建函数方法func (f HandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { f(w, r)}// 主函数func main() { // 实例化函数 hf := HandlerFunc(HelloHandler) // 创建response对象.

2022-03-11 15:14:25 1137

转载 session和token验证的差异

传统的session认证http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用就能识别请求来自哪个用户了,这就是传统的基于session认证。但是这种基于

2022-03-08 11:12:13 310

原创 ubuntu20.04搭建detectron2环境

创建conda环境conda create -n detectron2 python=3.8conda activate detectron2安装opencvpip install opencv-pythonpip install opencv-contrib-python安装pytorch和cudapip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://downl.

2022-03-05 12:49:36 3325 2

原创 网络编程基础

经典协议与数据包

2022-03-04 09:45:39 58

原创 ubuntu常用命令

编辑环境变量//打开环境变量gedit ~/.bashrc //使命令生效source ~/.bashrc

2022-03-02 14:19:04 442

原创 第7章 并发

Goroutine,Go 在语言层面对并发编程提供支持,⼀种类似协程,称作 goroutine 的机制。只需在函数调⽤语句前添加 go 关键字,就可创建并发执行单元。开发人员无需了解任何执行细节,调度器会自动将其安排到合适的系统线程上执行。goroutine 是⼀种非常轻量级的实现,可在单个进程里执行成千上万的并发任务。事实上,入口函数 main 就以 goroutine 运行。另有与之配套的 channel 类型,用以实现 “以通讯来共享内存” 的 CSP 模式go func() { fmt..

2022-02-28 19:36:43 210

原创 第6章 接口

接口定义,接口是⼀个或多个方法签名的集合,任何类型的方法集中只要拥有与之对应的全部方法,就表示它 “实现” 了该接口,无须在该类型上显式添加接口声明。所谓对应方法,是指有相同名称、参数列表 (不包括参数名) 以及返回值。当然,该类型还可以有其他方法。• 接口命名习惯以 er 结尾,结构体。• 接口只有方法签名,没有实现。• 接口没有数据字段。• 可在接口中嵌入其他接口。• 类型可实现多个接口。type Stringer interface { String() string}ty.

2022-02-27 23:29:29 113

原创 第5章 方法

5.1方法定义方法总是绑定对象实例,并隐式将实例作为第⼀实参 (receiver)。• 只能为当前包内命名类型定义方法。• 参数 receiver 可任意命名。如方法中未曾使用,可省略参数名。• 参数 receiver 类型可以是 T 或 *T。基类型 T 不能是接口或指针。• 不支持方法重载,receiver 只是参数签名的组成部分。• 可用实例 value 或 pointer 调用全部方法,编译器自动转换。没有构造和析构方法,通常用简单工厂模式返回对象实例type Queue str

2022-02-27 16:38:39 84

原创 第4章 数据

4.1 Array数组是值类型,赋值和传参会复制整个数组,而不是指针数组长度必须是常量,且是类型的组成部分,[2]int 和 [3]int 是不同类型支持 “==”、"!=" 操作符,因为内存总是被初始化过的指针数组 [n]*T,数组指针 *[n]Ta := [3]int{1, 2} // 未初始化元素值为 0。b := [...]int{1, 2, 3, 4} // 通过初始化值确定数组⻓度。c := [5]int{2: 100, 4: 200} // 使⽤索引号

2022-02-24 16:03:27 596

原创 第3章 函数

3.1函数的定义不支持 嵌套 (nested)、重载 (overload) 和 默认参数 (default parameter)• 无需声明原型。• 支持不定长变参。• 支持多返回值。• 支持命名返回参数。• 支持匿名函数和闭包。使用关键字 func 定义函数,左大括号依旧不能另起一行func test(x, y int, s string) (int, string) { // 类型相同的相邻参数可合并。 n := x + y // 多返回值必须⽤括号。 return n, fmt

2022-02-22 16:10:13 148

原创 第2章 表达式

2.1保留字breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypecontinueforimportreturnvar2.2运算符位运算演示fmt.Printf("0110 & 1011 = %v (0010) \n", (0110 & 1011))

2022-02-20 17:04:05 277

原创 第1章 类型

1.1变量多变量赋值时,先计算所有相关值,然后再从左到右依次赋值data, i := [3]int{0, 1, 2}, 0fmt.Printf("初始化变量 data=%v, i=%v \n", data, i)i, data[i] = 2, 100fmt.Printf("赋值后的变量 data=%v, i=%v", data, i)/* 初始化变量 data=[0 1 2], i=0 赋值后的变量 data=[100 1 2], i=2*/重新赋值和定义新的同名变量是有区别的,

2022-02-18 12:46:26 380

原创 新电脑上一键同步VS Code配置信息

原设备上传配置VS Code下载Settings Sync插件。在VS Code程序中任意位置使用快捷键Ctrl+Shift+P,在搜索栏输入sync,点击 Sync: Upload / Update Settings。首次使用快捷键Ctrl+Alt+U可以跳转到sync扩展的登录页面,点击LOGIN WITH GITHUB的按钮,跳转至github登录授权页。正常只要默认的浏览器登录了github,他会自动跳转授权页面,没有登录过的或者没有注册过的用户需要自行注册和登录。在浏览器中授权后,.

2022-02-18 12:13:42 646

原创 go context的用法

背景在go服务器中,对于每个请求的request都是在单独的goroutine中进行的,处理一个request也可能设计多个goroutine之间的交互, 使用context可以使开发者方便的在这些goroutine里传递request相关的数据、取消goroutine的signal或截止日期。Context是Golang官方定义的一个package,它定义了Context类型,里面包含了Deadline/Done/Err方法以及绑定到Context上的成员变量值Valuecontext结构// A

2021-09-18 15:08:32 483

原创 application/x-www-form-urlencoded和multipart/form-data的区别

一、Form表单语法在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。 例如: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,这个一般文件上传时用。 text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。补充二、常用的编码

2021-08-31 11:23:49 2024

原创 go语言刷题:241. 为运算表达式设计优先级

241. 为运算表达式设计优先级import ( "fmt" "strconv")func diffWaysToCompute(input string) []int { // 如果是数字,直接返回 if isDigit(input) { tmp, _ := strconv.Atoi(input) return []int{tmp} } // 空切片 var res []int // 遍历字符

2021-07-18 11:46:24 86

原创 go语言刷题:34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置func searchRange(nums []int, target int) []int { // 寻找开头的第一个target位置 first := FindFirst(nums, target) // 如果长度为0或者数组中没有目标值,返回默认值 if first == len(nums) || nums[first] != target { return []int{-1, -1} } // 寻找开头

2021-07-07 14:05:54 459

原创 git merge master出现的问题

1.问题2.解决办法步骤一: 按键盘上的“i”键,进入插入模式步骤二: 修改最上方的黄色部分,改成想写的合并原因,可不写步骤三: 按键盘上的“Esc”键退出插入模式步骤四: 输入“:wq ”后按回车键...

2021-06-03 10:08:32 526

空空如也

空空如也

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

TA关注的人

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