自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 吴恩达机器学习笔记:第 8 周-14降维(Dimensionality Reduction) 14.1-14.2

有时可能有几个不同的工程团队,也许一个工程队给你二百个特征,第二工程队给你另外三百个的特征,第三工程队给你五百个特征,一千多个特征都在一起,它实际上会变得非常困难,去跟踪你知道的那些特征,你从那些工程队得到的。将数据从二维降至一维: 假使我们要采用两种不同的仪器来测量一些东西的尺寸,其中一个仪器测量结果的单位是英寸,另一个仪器测量的结果是厘米,我们希望将测量的结果作为我们机器学习的特征。过程是与上面类似的,我们将三维向量投射到一个二维的平面上,强迫使得所有的数据都在同一个平面上,降至二维的特征向量。

2024-04-26 17:23:39 146

原创 吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.6-1.8

假设你在训练上图这样的神经网络,它存在过拟合,这就是 dropout 所要处理的,我们复制这个神经网络,dropout 会遍历网络的每一层,并设置消除神经网络中节点的概率。假设网络中的每一层,每个节点都以抛硬币的方式设置概率,每个节点得以保留和消除的概率都是 0.5,设置完节点概率,我们会消除一些节点,然后删除掉从该节点进出的连线,最后得到一个节点更少,规模更小的网络,然后用 backprop 方法进行训练。中的对应值为 1 的概率都是 0.8,对应为 0 的概率是 0.2,随机数字小于 0.8。

2024-04-23 20:27:18 757

原创 吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.3-13.5

迭代的过程一定会是每一次迭代都在减小代价函数,不然便是出现了错误。回顾刚才给出的: K-均值迭代算法,我们知道,第一个循环是用于减小。我们的的优化目标便是找出使得代价函数最小的。引起的代价,而第二个循环则是用于减小。

2024-04-23 15:17:41 1013

原创 吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

在这个视频中,我将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。那么,什么是非监督学习呢?在课程的一开始,我曾简单地介绍过非监督学习,然而,我们还是有必要将其与监督学习做一下比较。在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数。

2024-04-18 14:40:22 629

原创 吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.4-1.5

我们来看最后一个细节,𝜆是正则化参数,我们通常使用验证集或交叉验证集来配置这个参数,尝试各种各样的数据,寻找最好的参数,我们要考虑训练集之间的权衡,把参数设置为较小值,这样可以避免过拟合,所以 λ 是另外一个需要调整的超级参数,顺便说一下,为了方便写代码,在 Python 编程语言中,𝜆是一个保留字段,编写代码时,我们写成𝑙𝑎𝑚𝑏𝑑,以免与 Python 中的保留字段冲突,这就是在逻辑回归函数中实现𝐿2正则化的过程,如何在神经网络中实现𝐿2正则化呢?

2024-04-18 11:06:35 1185

原创 吴恩达机器学习笔记:第 7 周-12支持向量机(Support Vector Machines)12.4-12.6

因此ℎ𝜃(𝑥) = θ_0 + θ_1f_1 + θ_2f_2 +θ_3f_3 > 0,因此预测𝑦 = 1。同理可以求出,对于离l^{(2)}$较近的绿色点,也预测𝑦 = 1,但是对于蓝绿色的点,因为其离三个地标都较远,预测𝑦 = 0。这样,图中红色的封闭曲线所表示的范围,便是我们依据一个单一的训练实例和我们选取的地标所得出的判定边界,在预测时,我们采用的特征不是训练实例本身的特征,而是通过核函数计算出的新特征。

2024-04-15 15:58:40 1041

原创 吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.1-1.3

目前为止,我觉得,对于很多应用系统,即使是经验丰富的深度学习行家也不太可能一开始就预设出最匹配的超级参数,所以说,应用深度学习是一个典型的迭代过程,需要多次循环往复,才能为应用程序找到一个称心的神经网络,因此循环该过程的效率是决定项目进展速度的一个关键因素,而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率。总结一下,在机器学习中,我们通常将样本分成训练集,验证集和测试集三部分,数据集规模相对较小,适用传统的划分比例,数据集规模较大的,验证集和测试集要小于数据总量的 20%或 10%。

2024-04-15 11:00:41 708

原创 python中的正则表达式

正则表达式是指专门用于描述或刻画字符串内在规律的表达式。

2024-04-10 11:13:28 398

原创 吴恩达机器学习笔记:第 7 周-12支持向量机(Support Vector Machines)12.1-12.3

你知道,就是第一项和第二项我们依照惯例使用一个不同的参数称为𝐶,同时改为优化目标,𝐶 × 𝐴 + 𝐵因此,在逻辑回归中,如果给定𝜆,一个非常大的值,意味着给予 B 更大的权重。首先,我们要除去1/𝑚这一项,当然,这仅仅是由于人们使用支持向量机时,对比于逻辑回归而言,不同的习惯所致,但这里我所说的意思是:你知道,我将要做的是仅仅除去1/𝑚这一项,但是,这也会得出同样的 𝜃 最优值,好的,因为1/𝑚 仅是个常量,因此,你知道在这个最小化问题中,无论前面是否有1/𝑚 这一项

2024-04-08 19:54:51 792

原创 吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.5-4.8

比如当你想要建一个语音识别系统的时候,需要解决的就是如何可视化语音,比如你输入一个音频片段,那么神经网络的第一层可能就会去先开始试着探测比较低层次的音频波形的一些特征,比如音调是变高了还是低了,分辨白噪音,咝咝咝的声音,或者音调,可以选择这些相对程度比较低的波形特征,然后把这些波形组合在一起就能去探测声音的基本单元。面部探测器就会针对于大一些的区域,但是主要的概念是,一般你会从比较小的细节入手,比如边缘,然后再一步步到更大更复杂的区域,比如一只眼睛或是一个鼻子,再把眼睛鼻子装一块组成更复杂的部分。

2024-04-08 16:51:18 1058

原创 吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.1-4.4

尽管对于任何给定的问题很难去提前预测到底需要多深的神经网络,所以先去尝试逻辑回归,尝试一层然后两层隐含层,然后把隐含层的数量看做是另一个可以自由选择大小的超参数,然后再保留交叉验证数据上评估,或者用你的开发集来评估。我们可以看到,第一层(即左边数过去第二层,因为输入层是第 0 层)有 5 个神经元数目,第二层 5 个,第三层 3 个。,这层是第 0 层,这层左边的隐藏层是第 1 层,由此类推。注意,神经网络的层数是这么定义的:从左到右,由 0 开始定义,比如上边右图,是等于这个神经网络所预测的输出结果。

2024-04-02 19:16:06 1163

原创 吴恩达机器学习笔记:第 6 周-11机器学习系统的设计(Machine Learning System Design)11.1-11.5

因此,不要担心你的算法太简单,或者太不完美,而是尽可能快地实现你的算法。另一件事是:假设你有了一个快速而不完美的算法实现,又有一个数值的评估数据,这会帮助你尝试新的想法,快速地发现你尝试的这些想法是否能够提高算法的表现,从而你会更快地做出决定,在算法中放弃什么,吸收什么误差分析可以帮助我们系统化地选择该做什么。因此,当你在构造学习算法的时候,你总是会去尝试很多新的想法,实现出很多版本的学习算法,如果每一次你实践新想法的时候,你都要手动地检测这些例子,去看看是表现差还是表现好,那么这很难让你做出决定。

2024-04-02 14:27:29 938

原创 吴恩达机器学习笔记:第 6 周-10 应 用 机 器 学 习 的 建 议 (Advice for Applying Machine Learning)10.4-10.7

当你运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。在这段视频中,我想更深入地探讨一下有关偏差和方差的问题,希望你能对它们有一个更深入的理解,并且也能弄清楚怎样评价一个学习算法,能够判断一个算法是偏差还是方差有问题,因为这个问题对于弄清如何改进学习算法的效果非常重要,高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。但是随着 𝑑 的增长,误差呈现先减小后增大的趋势,转折点是我们的模型开始过拟合训练数据集的时候。

2024-03-29 16:05:07 440

原创 吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.9-3.11

以上就是正向传播的 4 个方程和反向传播的 6 个方程,这里我是直接给出的,在下个视频中,我会讲如何导出反向传播的这 6 个式子的。目前为止,我们计算的都和 Logistic 回归十分相似,但当你开始计算反向传播时,你需要计算,是隐藏层函数的导数,输出在使用 sigmoid 函数进行二元分类。在这个视频中,我会给你实现反向传播或者说梯度下降算法的方程组,在下一个视频我们会介绍为什么这几个特定的方程是针对你的神经网络实现梯度下降的正确方程。这些参数,还有个𝑛𝑥表示输入特征的个数,,就是一个的列向量。

2024-03-29 14:50:17 1123

原创 吴恩达机器学习笔记:第 6 周-10 应 用 机 器 学 习 的 建 议 (Advice for Applying Machine Learning)10.1-10.3

幸运的是,有一系列简单的方法能让你事半功倍,排除掉单子上的至少一半的方法,留下那些确实有前途的方法,同时也有一种很简单的方法,只要你使用,就能很轻松地排除掉很多选择,从而为你节省大量不必要花费的时间。在这一系列的视频中我们将介绍具体的诊断法,但我要提前说明一点的是,这些诊断法的执行和实现,是需要花些时间的,有时候确实需要花很多时间来理解和实现,但这样做的确是把时间用在了刀刃上,因为这些方法让你在开发学习算法时,节省了几个月的时间,因此,在接下来几节课中,我将先来介绍如何评价你的学习算法。

2024-03-27 18:25:35 547

原创 数据结构与算法之美学习笔记:《数据结构与算法之美》学习指导手册

本节课程思维导图:在设计专栏内容的时候,为了兼顾不同基础的同学,我在内容上做到了难易结合,既有简单的数组、链表、栈、队列这些基础内容,也有红黑树、BM、KMP 这些难度较大的算法。但是,对于初学者来说,一下子面对这么多知识,可能还是比较懵。我觉得,对于初学者来说,先把最简单、最基础、最重要的知识点掌握好,再去研究难度较高、更加高级的知识点,这样由易到难、循序渐进的学习路径,无疑是最合理的。基于这个路径,我对专栏内容,重新做了一次梳理,希望给你一份具体、明确、有效的学习指导。

2024-03-26 11:38:50 897

原创 吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.6-3.8

当使用𝑧的导数时,𝑧=0 的导数是没有定义的。但是当编程实现的时候,𝑧的取值刚好等于 0.00000001,这个值相当小,所以,在实践中,不需要担心这个值,𝑧是等于 0 的时候,假设一个导数是 1 或者 0 效果都可以。第一,在𝑧的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中,使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。

2024-03-26 11:12:30 1131

原创 吴恩达深度学习笔记:深度学习引言1.1-1.5

如果你听说过端对端深度学习,你也会在第三门课中了解到更多,进而了解到你是否需要使用它,第三课的资料是相对比较独特的,我 将和你分享。在第一门课中(神经网络和深度学习),你将学习神经网络的基础,你将学习神经网络和深度学习,这门课将持续四周,专项课程中的每门课将持续 2 至 4 周。因此,通过这些课程,你将学习深度学习的这些工具,你将能够去使用它们去做一些神奇的事情,并借此来提升你的职业生涯。举个例子:你分割数据的方式,分割成训练集、比较集或改变的验证集,以及测试集合,改变了深度学习的错误。

2024-03-25 10:42:41 1472

原创 吴恩达深度学习笔记:神经网络的编程基础2.1-2.4

同样的道理,为了能更加容易地实现一个神经网络,将标签𝑦放在列中将会使得后续计算非常方便,所以我们定义大写的𝑌等于𝑦(1), 𝑦(𝑚), . . . , 𝑦(𝑚),所以在这里是一个规模为 1 乘以𝑚的矩阵,同样地使用 Python 将表示为 Y.shape 等于(1, 𝑚),表示这是一个规模为 1 乘以𝑚的矩阵。𝑋 = [𝑥(1), 𝑥(2), . . . , 𝑥(𝑚)]:表示所有的训练数据集的输入值,放在一个 𝑛𝑥 × 𝑚的矩阵中,其中𝑚表示样本数目;

2024-03-25 10:40:25 1400

原创 吴恩达深度学习笔记:神经网络的编程基础2.5-2.8

请看绿色高亮部分的这个小三角形,如果向右移动 0.001,那么𝑓(𝑎)增加 0.003,𝑓(𝑎)的值增加 3 倍于右移的𝑎,因此我们说函数𝑓(𝑎)在𝑎 = 2,.是这个导数的斜率,或者说,当𝑎 = 2时,斜率是 3。导数的一个特性是:这个函数任何地方的斜率总是等于3,不管𝑎 = 2或 𝑎 = 5,这个函数的斜率总等于 3,也就是说不管𝑎的值如何变化,如果你增加 0.001,𝑓(𝑎)的值就增加 3 倍。即在𝑎 = 5 时,

2024-03-25 10:38:40 1197

原创 吴恩达深度学习笔记:神经网络的编程基础2.9-2.14

因此,为了使得逻辑回归中最小化代价函数𝐿(𝑎, 𝑦),我们需要做的仅仅是修改参数𝑤和𝑏的值。因为我们想要计算出的代价函数𝐿(𝑎, 𝑦)的导数,首先我们需要反向计算出代价函数𝐿(𝑎, 𝑦)关于𝑎的导数,在编写代码时,你只需要用𝑑𝑎 来表示。那么如果你非常熟悉微积分,我们鼓励你主动推导前面介绍的代价函数的求导公式,使用微积分直接求出𝐿(𝑎, 𝑦)关于变量𝑎的导数。假设样本只有两个特征𝑥1和𝑥2,为了计算𝑧,

2024-03-25 10:38:33 1512

原创 吴恩达深度学习笔记:神经网络的编程基础2.15-2.17

用一个 2 × 3的矩阵和一个 1 × 3 的矩阵相加,其泛化形式是 𝑚 × 𝑛 的矩阵和 1 × 𝑛的矩阵相加。这是一个不同食物(每 100g)中不同营养成分的卡路里含量表格,表格为 3 行 4 列,列表示不同的食物种类,从左至右依次为苹果,牛肉,鸡蛋,土豆。首先,按列求和,计算每种食物中(100g)三种营养成分总和,然后分别用不用营养成分的卡路里数量除以总和,计算百分比。axis 用来指明将要进行的运算是沿着哪个轴执行,在 numpy 中,0 轴是垂直的,也就是列,而 1 轴是水平的,也就是行。

2024-03-25 10:37:00 648

原创 吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.1-3.5

本周你将学习如何实现一个神经网络。在我们深入学习具体技术之前,我希望快速的带你预览一下本周你将会学到的东西。如果这个视频中的某些细节你没有看懂你也不用担心,我们将在后面的几个视频中深入讨论技术细节。现在我们开始快速浏览一下如何实现神经网络。上周我们讨论了逻辑回归,我们了解了这个模型(见图 3.1.1)如何与下面公式 3.1 建立联系。接下来使用𝑧就可以计算出𝑎。我们将的符号换为表示输出𝑦^ ⟹ 𝑎 = 𝜎(𝑧),然后可以计算出 loss function 𝐿(𝑎, 𝑦)。

2024-03-25 10:34:03 1384

原创 数据结构与算法之美学习笔记:总结课 | 在实际开发中,如何权衡选择使用哪种数据结构和算法?

本节课程思维导图:今天是一篇总结课。我们学了这么多数据结构和算法,在实际开发中,究竟该如何权衡选择使用哪种数据结构和算法呢?今天我们就来聊一聊这个问题,希望能帮你把学习带回实践中。我一直强调,学习数据结构和算法,不要停留在学院派的思维中,只把算法当作应付面试、考试或者竞赛的花拳绣腿。作为软件开发工程师,我们要把数据结构和算法,应用到软件开发中,解决实际的开发问题。不过,要想在实际的开发中,灵活、恰到好处地应用数据结构和算法,需要非常深厚的实战经验积累。

2024-03-22 16:44:10 760

原创 数据结构与算法之美学习笔记:不定期福利第三期 | 刘超:我是怎么学习《数据结构与算法之美》的?

本节课程思维导图:你好,我是刘超,是隔壁《趣谈网络协议》专栏的作者。今天来“串个门儿”,讲讲我学习《数据结构与算法之美》这个专栏的一些体会和感受。《数据结构与算法之美》是目前“极客时间”订阅量最多的专栏,我也是其中最早购买的一员。我之所以一看就心动了,源于王争老师在开篇词里面说的那段话:基础知识就像是一座大楼的地基,它决定了我们的技术高度。那技术人究竟都需要修炼哪些“内功”呢?我觉得,无外乎就是大学里的那些基础课程,操作系统、计算机网络、编译原理等等,当然还有数据结构和算法。

2024-03-14 10:54:24 874

原创 数据结构与算法之美学习笔记:不定期福利第二期 | 王争:羁绊前行的,不是肆虐的狂风,而是内心的迷茫

本节课程思维导图:专栏更新过半,我发现有些小伙伴已经掉队,虽然有人掉队也挺正常,但是我还是想尽量拉一把。于是,周末的时间,我就在想,究竟是什么原因让有些小伙伴掉队了?是内容本身太难了吗?是我讲得不够清楚吗?还是小伙伴本身基础太差、不够努力、没有掌握学习方法?我觉得都不是,让你掉队的原因,从根儿上讲,是你内心的迷茫。如果我们不那么确信能不能看懂、能不能学会的时候,当面对困难的时候,很容易就会否定自己,也就很容易半途而废。

2024-03-11 17:19:05 911

原创 数据结构与算法之美学习笔记:不定期福利第一期 | 数据结构与算法学习书单

本节课程思维导图:欢迎来到不定期更新的周末福利时间。专栏已经上线两周了,看到这么多人在留言区写下自己的疑惑或者观点,我特别开心。在留言里,很多同学让我推荐一些学习数据结构与算法的书籍。因此我特意跟编辑商量了,给你一个周末福利。所以这一期呢,我们就来聊一聊数据结构和算法学习过程中有哪些必读书籍。有的同学还在读大学,代码还没写过几行;有的同学已经工作数十年,这之间的差别还是挺大的。而不同基础的人,适宜看的书是完全不一样的。因此,针对不同层次、不同语言的同学,我分别推荐了不同的书。

2024-03-07 11:46:00 934

原创 hive中split函数相关总结

split 函数一直再用,居然发现没有总结,遂补充一下;

2024-03-06 15:59:11 697

原创 深度学习相关概念及术语总结

CV通常指的是“Computer Vision”(计算机视觉)。然而,传统的RNN模型存在梯度消失和梯度爆炸等问题,为了克服这些问题,后来出现了许多改进的RNN变体,如长短时记忆网络(LSTM)和门控循环单元(GRU)等。在学术和工业界,计算机视觉一直是一个活跃的研究领域,并且随着深度学习和大数据的发展,计算机视觉技术取得了显著的进步,为图像和视频分析提供了更准确和高效的解决方案。总的来说,LSTM的设计使其能够更好地处理和记忆序列数据中的长期依赖关系,因此在处理具有长期依赖的序列数据时具有很强的表现力。

2024-03-05 17:13:43 1051

原创 吴恩达机器学习笔记:第5周-9 神经网络的学习(Neural Networks: Learning)9.4-9.8

并且,类似的,这一条白亮的区段显示的就是神经网络在这里选择的行驶方向,是稍微的左转,并且实际上在神经网络开始学习之前,你会看到网络的输出是一条灰色的区段,就像这样的一条灰色区段覆盖着整个区域这些均称的灰色区域,显示出神经网络已经随机初始化了,并且初始化时,我们并不知道汽车如何行驶,或者说我们并不知道所选行驶方向。显示出一个具体的行驶方向这就表示神经网络算法,在这时候已经选出了一个明确的行驶方向,不像刚开始的时候,输出一段模糊的浅灰色区域,而是输出一条白亮的区段,表示已经选出了明确的行驶方向。

2024-03-05 11:35:55 1243

原创 机器学习相关概念及术语总结

再比如垃圾邮件筛选器,经验E就是程序从垃圾邮件成千上万次的自我练习的经验而任务是当邮件过来时,给邮件分类是正常邮件还是垃圾邮件,性能P就是对垃圾邮件正确分类的准确率;与监督学习不同,无监督学习不需要已知输出的训练数据,而是通过对数据进行聚类、降维、关联规则挖掘等技术来发现数据中的隐藏结构和模式。监督学习是机器学习的一种方法,它使用已知输入和对应的输出数据来训练模型,以便模型能够预测新的输入数据对应的输出。在监督学习中,训练数据包括输入特征和目标输出,模型通过学习输入和输出之间的关系来进行预测。

2024-03-01 16:39:37 499

原创 吴恩达机器学习笔记:第5周-9 神经网络的学习(Neural Networks: Learning)9.1-9.3

这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出𝐾个预测,基本上我们可以利用循环,对每一行特征都预测𝐾个不同结果,然后在利用循环在𝐾个预测中选择可能性最高的一个,将其与𝑦中的实际数据进行比较。后,每一层的𝜃 矩阵的和。假设神经网络的训练样本有𝑚个,每个包含一组输入𝑥和一组输出信号𝑦,𝐿表示神经网络层数,𝑆𝐼表示每层的 neuron 个数(𝑆𝑙表示输出层神经元个数),

2024-03-01 15:55:54 954

原创 数据结构与算法之美学习笔记:56 | 算法实战(五):如何用学过的数据结构和算法实现一个短网址系统?

本节课程思维导图:短网址服务你用过吗?如果我们在微博里发布一条带网址的信息,微博会把里面的网址转化成一个更短的网址。我们只要访问这个短网址,就相当于访问原始的网址。比如下面这两个网址,尽管长度不同,但是都可以跳转到我的一个 GitHub 开源项目里。其中,第二个网址就是通过新浪提供的短网址服务生成的。原始网址:https://github.com/wangzheng0822/ratelimiter4j短网址:http://t.cn/EtR9QEG。

2024-03-01 14:46:00 982

原创 数据结构与算法之美学习笔记:55 | 算法实战(四):剖析微服务接口鉴权限流背后的数据结构和算法

本节课程思维导图:微服务是最近几年才兴起的概念。简单点讲,就是把复杂的大应用,解耦拆分成几个小的应用。这样做的好处有很多。比如,这样有利于团队组织架构的拆分,毕竟团队越大协作的难度越大;再比如,每个应用都可以独立运维,独立扩容,独立上线,各个应用之间互不影响。不用像原来那样,一个小功能上线,整个大应用都要重新发布。不过,有利就有弊。大应用拆分成微服务之后,服务之间的调用关系变得更复杂,平台的整体复杂熵升高,出错的概率、debug 问题的难度都高了好几个数量级。

2024-02-29 17:45:12 1198

原创 数据结构与算法之美学习笔记:54 | 算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法

本节课程思维导图:Disruptor 你是否听说过呢?它是一种内存消息队列。从功能上讲,它其实有点儿类似 Kafka。不过,和 Kafka 不同的是,Disruptor 是线程之间用于消息传递的队列。它在 Apache Storm、Camel、Log4j 2 等很多知名项目中都有广泛应用。之所以如此受青睐,主要还是因为它的性能表现非常优秀。它比 Java 中另外一个非常常用的内存消息队列 ArrayBlockingQueue(ABS)的性能,要高一个数量级,可以算得上是最快的内存消息队列了。

2024-02-27 19:10:15 1014

原创 数据结构与算法之美学习笔记:53 | 算法实战(二):剖析搜索引擎背后的经典数据结构和算法

本节课程思维导图:像百度、Google 这样的搜索引擎,在我们平时的工作、生活中,几乎天天都会用到。如果我们把搜索引擎也当作一个互联网产品的话,那它跟社交、电商这些类型的产品相比,有一个非常大的区别,那就是,它是一个技术驱动的产品。所谓技术驱动是指,搜索引擎实现起来,技术难度非常大,技术的好坏直接决定了这个产品的核心竞争力。在搜索引擎的设计与实现中,会用到大量的算法。有很多针对特定问题的算法,也有很多我们专栏中讲到的基础算法。

2024-02-22 18:53:14 994

原创 数据结构与算法之美学习笔记:52 | 算法实战(一):剖析Redis常用数据类型对应的数据结构

本节课程思维导图:到此为止,专栏前三部分我们全部讲完了。从今天开始,我们就正式进入实战篇的部分。这部分我主要通过一些开源项目、经典系统,真枪实弹地教你,如何将数据结构和算法应用到项目中。所以这部分的内容,更多的是知识点的回顾,相对于基础篇、高级篇的内容,其实这部分会更加容易看懂。不过,我希望你不要只是看懂就完了。你要多举一反三地思考,自己接触过的开源项目、基础框架、中间件中,都用过哪些数据结构和算法。你也可以想一想,在自己做的项目中,有哪些可以用学过的数据结构和算法进一步优化。

2024-02-18 16:12:41 992

原创 SQL面试题挑战15:sql实现分钟级的趋势图

在Hive或者ODPS中,怎么用sql实现分钟级的趋势图?比如从交易表中,如何统计0点到每分钟的交易趋势图?原表:trade_A(trade_id,pay_time(格式是2020-08-05 10:30:28),pay_gmv)。希望用sql实现分钟级的0点到当前分钟的GMV。结果表:result_A(minute_rn(分钟顺序),pay_gmv_td(每分钟的交易额,都是0点到当前分钟的累加值))。

2024-02-07 15:23:52 896

原创 数据结构与算法之美学习笔记:51 | 并行算法:如何利用并行处理提高算法的执行效率?

本节课程思维导图:时间复杂度是衡量算法执行效率的一种标准。但是,时间复杂度并不能跟性能划等号。在真实的软件开发中,即便在不降低时间复杂度的情况下,也可以通过一些优化手段,提升代码的执行效率。毕竟,对于实际的软件开发来说,即便是像 10%、20% 这样微小的性能提升,也是非常可观的。算法的目的就是为了提高代码执行的效率。那当算法无法再继续优化的情况下,我们该如何来进一步提高执行效率呢?我们今天就讲一种非常简单但又非常好用的优化方法,那就是并行计算。

2024-02-07 10:30:00 1296

原创 MIT_线性代数笔记:第 34 讲 总复习

本讲为线性代数课程总复习,复习的方法就是做往年试题。

2024-02-06 19:19:20 957

代码.zip

代码.zip

2023-08-10

空空如也

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

TA关注的人

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