自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

如是说的博客

读史使人明智 读诗使人灵秀 数学使人周密 科学使人深刻 伦理学使人庄重 逻辑修辞之学使人善辩

  • 博客(290)
  • 收藏
  • 关注

原创 《redis设计与实现》-读书笔记

文章目录常见数据结构SDS链表字典哈希算法rehash与渐进式rehashrehash步骤:rehash条件渐进式rehash跳跃表整数集合集合升级压缩列表快速列表为什么使用快速列表?ziplist切割大小压缩深度对象内存回收对象共享数据库RDB持久化创建与载入AOF持久化AOF重写事件复制旧版主从复制实现新版主从复制实现主从复制实现心跳检测哨兵模式(Sentinel)发布和订阅Stream事务事务实现ACID性质排序慢日志监视器常见数据结构动态字符串SDS链表字典跳跃表整数集合压缩列表快

2022-01-25 21:11:37 1417

原创 字典树

package 字典树;import java.util.LinkedList;public class TrieNode { TrieNode preNode = null; int isEnd = 0; int deep = 0; char content = '0'; LinkedList<TrieNode> child = new LinkedList<TrieNode>(); TrieNode() { } public TrieNo

2020-08-16 17:34:33 372

原创 关于个人求职简历的一些见解

本文只是个人在求职时对于简历书写的一些看法,更多的使用与IT方向,存在个人眼光局限性,欢迎指正和补充。注意:以下内容仅是针对我的简历进行撰写,不权威,不保证合适,不确保正确,仅供参考。众所周知,软件研发说白了就是“写代码的”,而写代码的对于技术的要求是很高的,不同的IT公司会有不同的技术要求,在招聘时会有针对性的进行技术考察,所以你的技术就是你的标签,是你的亮点,是突出自己优越性的重要手段。个人信息一般我们的个人信息放在简历开始处,目的是为了方便公司能够快速审阅你的信息,或者方便HR或面试官找到你的

2020-07-11 17:08:57 1130

原创 goland fatal error: 'CoreFoundation/CoreFoundation.h' file not found

Copy/Merge all of the Framework files under /Library/Developer/CommandLineTools/SDKs/MacOS10.14.SDK/System/Library/Frameworks to /System/Library/Frameworks.It seems the new version of CommandLineTool...

2020-04-24 13:29:49 1611

转载 Go中的命名规范

1.命名规范#1.1 Go是一门区分大小写的语言。命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名。 Go语言从语法层面进行了以下限定:任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Analysize,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要...

2020-04-22 23:39:27 1112 1

原创 Mac下安装Gin遇到的问题记录

背景毕设中后端打算用gin,之前装好了,莫名其妙的崩了,忍不住的F**k。安装没什么说的,看文档:https://www.kancloud.cn/shuangdeyu/gin_book/949412问题描述package google.golang.org/protobuf/encoding/protojson: unrecognized import path "google.gola...

2020-04-22 00:09:38 1884

原创 解决unrecognized import path "golang.org/x/.."类问题

背景安装Gin时,通过go get下载并安装gin软件包$ go get -u github.com/gin-gonic/gin问题package golang.org/x/sys/unix: unrecognized import path "golang.org/x/sys/unix" (https fetch: Get https://golang.org/x/sys/unix?g...

2020-02-03 15:04:57 6695

原创 290. 单词规律

题目描述解题思路类似于同构字符串(205. 同构字符串)的思路,使用两个map来分别记录从pattern到str的映射和str到pattern的映射。注意需要先把str字符串分割成字符串数组,然后思路相同,不赘述了。代码func wordPattern(pattern string, str string) bool { arr := strings.Split(str, " "...

2020-01-16 17:27:09 235

原创 268. 缺失数字

题目描述思路一排序,不多解释,估计都能想到。func missingNumber(nums []int) int { sort.Ints(nums) if nums[len(nums) - 1] != len(nums) { return len(nums) } if nums[0] != 0 { return 0 ...

2020-01-14 20:48:35 242

原创 算法思维 ---- 回溯算法

回溯算法回溯实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。说到底,实际上回溯算法就是一个N叉树的前序遍...

2020-01-14 13:09:55 497

原创 257. 二叉树的所有路径

题目描述思路分析在递归遍历二叉树时,需要考虑当前的节点和它的孩子节点。如果当前的节点不是叶子节点,则在当前的路径末尾添加该节点,并递归遍历该节点的每一个孩子节点。如果当前的节点是叶子节点,则在当前的路径末尾添加该节点后,就得到了一条从根节点到叶子节点的路径,可以把该路径加入到答案中。/** * Definition for a binary tree node. * type Tr...

2020-01-09 13:23:59 199

原创 237. 删除链表中的节点

题目描述思路分析我要吐槽,这鬼题,我以为是出错题了。找了半天的head,直到看看官方解题才反应,这是要求不让访问被删节点的前置节点下,如何删除被删节点。脑筋急转弯系列。。。。思路就是将被删节点的值替换成被删节点后置节点的值,然后删除被删节点的后置节点。func deleteNode(node *ListNode) { node.Val = node.Next.Val no...

2020-01-09 11:31:24 158

原创 235. 二叉搜索树的最近公共祖先

题目描述思路一二叉搜索树一定是二叉树,可以用二叉树的最近公共祖先的思想来求解。对每一个节点A,在其两棵子树上求p和q的公共祖先。假设在左子树上求的公共祖先L,在右子树上求的公共祖先R,之后开始分情况进行讨论:当L == null & R == null时,说明p和q没有出现在A子树上,返回空当L == null & R != null时,说明p和q的公共祖先出现在...

2020-01-09 11:17:49 157

原创 234. 回文链表

题目描述思路分析这道题是一道很典型的双指针中快慢指针类型的问题,思路是先通过快慢指针找到中心节点,如果链表个数是奇数的话,中间节点是中心节点;如果链表个数是偶数的,中间节点是中心节点偏左的节点。然后对前半部分或后半部分链表进行反转链表操作,最后比较这两个长度相同的子链表每个节点值是否相同,如果都相同,那么这个链表就是回文链表。代码/** * Definition for singly-...

2020-01-09 10:30:46 212

原创 算法思维----滑动窗口

滑动窗口作为一种高级双指针技巧的框架,在日常算法中尤其是字符串匹配查询中经常用到。所以总结一下滑动窗口的框架思维。首先需要熟悉一下滑动窗口常用的数据结构:哈希表,也称为字典、散列表,是一种 k => v 结构,这里就不细讲什么是哈希和哈希表了,因为作为基础的数据结构,应该大家都理解。滑动窗口的思想一般是这样的:在字符串S中使用双指针的左右指针技巧,初始化left=right=0,我们...

2020-01-08 14:05:15 585

原创 205. 同构字符串

题目描述思路两个字符串同构的含义就是s可以唯一映射到t,t也可以唯一的映射到s.egg 和 add 同构,就意味着下边的映射成立e -> ag -> d也就是将 egg 的 e 换成 a, g 换成 d, 就变成了 add同时倒过来也成立a -> ed -> g也就是将 add 的 a 换成 e, d 换成 g, 就变成了 egg使用一个map,...

2020-01-07 11:38:00 298

原创 204. 计数质数

题目描述思路一暴力法具体就不说了,轮询着一个一个的判断,时间复杂度是O(n2n^2n2)。思路二The Sieve of Eratosthenes(埃拉托色尼筛选法)在了解这个算法之前,我们需要了解一下质数的定义和性质定义质数(prime number)也叫素数,为大于1的且除1和本身以外不再有其他因数的自然数,与之相对的是合数。质数有无限个。性质质数只有两个因数:1...

2020-01-06 13:06:11 281

原创 202. 快乐数

题目描述思路一集合判断如果一个数是快乐数,那么最终会变回到1,确定了循环的终止条件;若不是快乐数,会进入死循环,如何终至死循环,将每次变换过后的值存入Set中,判断是否出现过重复值,出现则return false;思路二快慢指针“快指针”每次走两步,“慢指针”每次走一步,当二者相等时,即为一个循环周期。此时,判断是不是因为1引起的循环,是的话就是快乐数,否则不是快乐数。func ...

2020-01-06 10:42:13 220

原创 198. 打家劫舍

题目描述思路动态规划思路设f(k)是从前k个房屋中能抢劫到的最大数额,AiA_iAi​是第i个房间的金额数当n=1,显然有f(1)=A1A_1A1​当n=2时,f(2)=max(A1A_1A1​, A2A_2A2​)当n=3时,有两个选项:抢第三个房子,和第一个房子的金额相加不抢第三个房子,保持现有最大数额于是,可以总结出公式:f(k)=max(f(k-2)+AkA_k...

2020-01-03 11:44:18 264

原创 191. 位1的个数

题目描述汉明距离与汉明重量汉明距离:它是一种概念。即两个等长的字符串对应位置上的字符不同的 个数 。汉明重量: 它是一种特殊的汉明距离。指一个字符串与一个等长的“零”字符串 的汉明距离,即一个字符串中非零的字符个数思路一对二进制数字逐个位进行比较,并用count记录为1的数量。//思路一,逐个位遍历比较func hammingWeight(num uint32) i...

2020-01-03 11:10:48 493

原创 聊一聊RPC协议 & 简单实现

什么是RPCRPC协议(Remote Procedure Call)就是远程过程调用,即被调用的方法的具体实现不在本地,而是在其他地方。主要应用于不同系统或服务器之间的远程通信和相互调用。RPC假定某些传输协议是存在的,如TCP/UDP,在OSI中,RPC位于第五层会话层,跨过了传输层和应用层,使得包括网络分布式多程序在内的应用程序更加容易。RPC协议主要采用C/S模式。客户机调用进程发送一个...

2020-01-03 00:10:11 481

原创 190. 颠倒二进制位

题目描述思路一用一个变量res存储结果, 依次得到要转换数字的低位,然后保存在res中,res每得到一位后进行左移腾出一位用来保存下一位。一个例子原数字 1011 ,res = 0 res 左移一位,res = 0,得到 1011 的最低位 1 加过来, res = 11011 右移一位变为 101 res = 1 左移一位,res = 10,得到 101 的最...

2019-12-30 14:12:46 236

原创 189. 旋转数组

题目描述思路一使用额外空间。就是说之前位置为下标i的值,经过移动后值的位置变成了(i+k) % len(nums),所以使用一个额外的数组空间进行存储,再将新数组赋值给nums。func rotate(nums []int, k int) { temp := make([]int, len(nums)) for i, val := range nums { ...

2019-12-30 10:55:11 131

原创 172. 阶乘后的零

题目描述思路分析具体对于5! = 5 * 4 * 3 * 2 * 1 = 120,结果有一个0,原因是存在一对2 * 5 = 10,对于10来说,只有2 * 5可以构成,所以需要在阶乘中查找有多少对2 * 5。在看一个例子:11! = 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 11 * (2 * 5) * 9 * (4 * 2) * 7 ...

2019-12-18 10:58:16 176

原创 171&168. Excel表列序号转换

Excel表列名称给定一个正整数,返回它在 Excel 表中相对应的列名称。例如: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”本质上...

2019-12-18 09:55:52 413

转载 什么是倒排索引?(转)

转自:什么是倒排索引 什么是倒排索引?   不多说,直接上干货!     见其名知其意,有倒排索引,对应肯定,有正向索引。     正向索引(forward index),反向索引(inverted index)更熟悉的名字是...

2019-12-17 16:06:17 221

原创 169. 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2方法一:哈希表时间复杂度:O(n)我们将 nums 迭代一次,哈希表的插入是常数时间的。所以总时间复杂度...

2019-12-17 11:39:32 197

原创 160. 相交链表

这道题也是面试当中很常见的考察题,难度简单,但是确实在面试中很考验。编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA= 2, skipB = 3输出:Reference of the node...

2019-12-17 10:17:10 137

原创 155. 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);...

2019-12-16 11:43:28 107

原创 122. 买卖股票的最佳时机 II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易...

2019-12-12 10:33:57 123

原创 121. 买卖股票的最佳时机

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润...

2019-12-11 10:59:22 143

原创 100. 相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。递归方法:/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * }...

2019-12-03 00:18:33 142

原创 70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。方法一:暴力法func climbStairs(n int) int { if n <= 3 { return n } return climbStairs(n - 1) + climbStairs(n - ...

2019-12-02 10:55:09 153

原创 14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。采用自顶向下的二分查找,最终比较相邻两个的公共前缀,在一层一层的往上。func longestCommonPrefix(strs []string) string { if len(strs) == 0 { return "" } else if len(strs)...

2019-11-29 18:15:31 105

原创 13. 罗马数字转整数

给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。func romanToInt(s string) int { arr := []rune(s) var rev rune = 0 m := map[string]rune{"IV":4, "IX":9, "XL":40, "XC":90, "CD":400, "CM":900} m2 :=...

2019-11-29 18:11:41 137

原创 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。从后往前进行反转,反转后的数字和反转前数字进行比较,如果相同的话就是回文数。func isPalindrome(x int) bool { if x < 0 { return false } var rev int = 0 temp := x...

2019-11-29 18:09:52 140

原创 整数反转

题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。分析重复...

2019-11-27 10:10:12 186

原创 Golang 整数类型最大值和最小值的定义

在写一道算法时需要用到int32类型的最大值和最小值,但是查了查在go的标准库中没有定义这些变量,所以当需要使用整数类型的最大值和最小值的时候,我们需要自己手动去定义。无符号整型uint其最小值是0,那么二进制表示就是所有位都为0:const UINT_MIN uint = 0其最大值二进制表示所有位数表示为1,通过位运算:const UINT_MAX uint = ^uint(0)...

2019-11-27 09:57:24 14134 1

原创 MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded

错误信息详情:MySQL said: Authentication plugin ‘caching_sha2_password’ cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found环境背景:我在Mac上通过MYSQL Workbench连接时Mysql8出现...

2019-11-19 10:15:36 1556

原创 六大排序实现和比较

常见的排序算法冒泡排序两两比较相邻记录的关键字,如果是反序则交换,直到没有反序的记录位置public static void bubbleSort(int[] arr) { boolean flag = true; for(int i = 1; i < arr.length; i ++) { flag = false; for(int j = arr.len...

2019-09-20 22:56:29 220

空空如也

空空如也

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

TA关注的人

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