- 博客(10)
- 收藏
- 关注
原创 3小时带你实现Redis分布式锁(二)学习笔记 day10
如果在完整项目里面使用,需要在根目录下运行mockgen命令:mockgen -package=mocks -destination=mocks/redis_cmdable.mock.go github.com/go-redis/redis/v9 Cmdable。代码中的redis.Cmdable的类型,它是一个接口。最后github.com/go-redis/redis/v9 Cmdable则是说为该报下面的Cmdable接口生成mock代码。packgae:指定生成代码的go代码的package的值。
2023-02-01 00:02:33
201
原创 3小时带你实现Redis分布式锁(一)学习笔记 day9
本文主要是介绍如果用redis实现一个简单的分布式锁。在实现过程主要注意两点,一个是超时问题,一个是在解锁时判断这把锁还是不是原来那把锁。
2023-01-30 23:29:44
182
原创 《程序员的数学基础课》 学习笔记 day8
时间和空间复杂度(上):优化性能是否只是“纸上谈兵”?内容:作者把影响系统性能的因素分为三大类:算法理论上的计算复杂度、开发实现的方案和硬件设备的规格。分析复杂度时,主要考虑三种情况:最差情况,最好情况,平均情况。然后时间和空间复杂度指的是:渐进时间复杂度和空间复杂度总结了六个通用法则四则运算法则主次分明法则齐头并进法则排列组合法则一图千言法则时空互换法则总结:一般而言,我们只需关注算法理论上的计算负责度。无特殊情况下一般考虑平均情况下的时间复杂度。总的来
2023-01-24 23:51:59
80
原创 《程序员的数学基础课》学习笔记 day7
Dijkstra算法在初始的时候会做三件事情。第一,把起始点s的最小权重赋值为0,也就是mw[s]=0.第二,往集合F里添加结点s,F包含且包含s。第三,假设结点s能直接到达的边的集合为M,对于其中的一条边m,则把mw[m]设为w[s,m],同时对于所有其它s不能达到的结点,将通路的权重设为无穷大。然后,Dijkstra算法重复以下这两个步骤。第一步,查找最小mw,第二步,更新权重。重复上述两步,再次从mw中找出最小值,要求mw对应的结点不属于F,直到集合F包含了图的所有结点。
2023-01-22 23:37:24
93
原创 《程序员的数学基础课》学习笔记 day6
如果没有,就回到 a,继续从它出发的广度优先搜索,记录所有二度好友 a_{2},然后看 b 和 b_{1} 是否出现在 a、a_{1} 和 a_{2} 三者的并集中。如果没有,就再从 b 出发,进行广度优先搜索,记录所有一度好友 b_{1},然后看 a 和 a_{1} 是否出现在 b 和 b_{1} 的并集中。我们首先从 a 出发,进行广度优先搜索,记录 a 的所有一度好友 a_{1},然后看点 b 是否出现在集合 a_{1} 中。如此轮流下去,直到找到 a 的好友和 b 的好友的交集。
2023-01-21 23:53:40
80
原创 《程序员的数学基础课》学习笔记 day5
树的广度优先搜索(上):人际关系的六度理论是真的吗?内容作者通过社交关系中的六度理论开篇,逐渐引出树的广度优先搜索——有共同好友的好友可能是你认识的人,然后可以试着去加它,这是二度关系;好友的好友的好友,这是三度关系;逐渐往外拓展。从而引出广度优先搜索的内容:沿着和这个点相连的边向前走,去寻找和这个点距离为1的所有其它点。只有当和起始点距离为1的所有点都被搜索完毕时才开始去搜索距离为3的点。。。总结不同于一条路走到黑的深度优先搜索,广度优先搜索是先把所有有可能的点走一遍,然后再接着往下走,逐
2023-01-20 22:01:42
92
原创 《程序员的数学基础课》学习笔记 day4
树的深度优先搜索:如何才能有效率地查字典内容:承接上篇,继续讲解树的深度优先搜索内容。并且使用递归的方法来实现。首先设置一个treeNode类,表示树的结点和边。然后通过递归的方式不断重复迭代前缀树的构建的查询。从而实现树的深度优先搜索。总结:树的深度优先搜索的核心思想是按照当前通路,不断地前行,当遇到走不通的结点时回退到上一个结点,通过另外一个新的边进行不断的尝试。
2023-01-19 23:30:57
98
原创 程序员的数学基础课 学习笔记 day3
作者介绍深度优先搜索时使用了一种全新的方式,先是通过介绍树的基础知识,然后引出前缀树,接着再慢慢通过介绍前缀树的构造从而引出深度优先搜索的含义。作者没有一上来就开始介绍深度优先搜索晦涩难懂的概念,而是通过数据结构中的简单知识,逐层深入,让人易于接受。即所谓树的深度优先搜索,其实就是从树中的某个节点出发,沿着和这个结点相连的边向前走,找到下一个结点,然后以这种方式不断地发现新的结点和边,一直搜索下去,直到访问了所有和出发点连通的点、或者满足某个条件后停止。树的深度优先搜索(上):如何才能高效地查字典。
2023-01-18 22:42:08
120
1
原创 《程序员的数学基础课》学习笔记 day2
动态规划(下):如何求得状态转移方程并进行编程实现文章内容:作者基础于上一篇文章的内容,分析插入、删除、替换字符这三种情况的编辑距离。得出状态转移方程:d[i,j]=min(d[i-1,j]+1,d[i,j-1]+1,d[i-1,j-1]+r(i,j))。并给出了具体的代码实现。总结起来即是,把两个字符串比较的问题,分解成很多个子串进行比较的问题,然后根据状态转移方程来描述子问题之间的关系,并保留最小值作为当前的编辑距离,直到过程结束。此外,这边文章还提到了钱币组合的新问题,即给定几种面值的钱币和一个总
2023-01-17 23:25:15
78
原创 《程序员的数学基础课》学习笔记 Day1
动态规划(上)如何实现基于编辑距离的查询推荐文章总体内容文章借文本搜索引出查询推荐中的动态规划思想。并且借两个字符串之间的编辑距离距离指出可使用动态规划解决关键字推荐的问题。总结动态规划的核心是状态转移方程。其主要是借用状态转移方程来求解某阶段的最优解。由每个阶段最优解求出最终的最优解。其主要思想是步步最优,从而得到全局最优解。
2023-01-16 23:13:36
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人