<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pipi的奇思妙想]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Belingda</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Belingda]]></copyright><item><title><![CDATA[写给小白的分布式系统简介]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/130455554</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/130455554</guid><author>Belingda</author><pubDate>Mon, 01 May 2023 13:45:46 +0800</pubDate><description><![CDATA[如果你从事后台开发，你或许会接触到分布式系统的相关概念，但可能你对分布式系统还没有一个整体的认知。本文从一个简单的单体应用入手，帮你建立起对分布式系统的整体概念，希望能给你一些学习分布式系统的“方向感”。以下是本文的大纲。以上通过一个简单的图片托管服务的例子，大致讲解了从单体应用到分布式系统的演变过程，涉及到了分布式系统的一些基本概念和策略。实际上根据具体业务，分布式系统要复杂的多，也并不是每一个分布式系统都会用到分布式系统所有的理论和策略。对于一些已有架构的系统而言，分布式的演变也是一步一步慢慢进行的。]]></description><category></category></item><item><title><![CDATA[leetcode题目-战争和摩尔投票有什么关系？]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/116703267</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/116703267</guid><author>Belingda</author><pubDate>Thu, 13 May 2021 11:50:43 +0800</pubDate><description><![CDATA[微信搜索：pipi的奇思妙想
解锁更多有趣的动画~

这是一道leetcode上的题目，题目链接戳：多数元素
题目描述

解法
这道题的解法有很多，在这里解释一种比较特别的方法：摩尔投票法。
这里有个小视频说明了摩尔投票~
题目中我们需要查找的数字超过数组长度的一半，也就是说，要查找的数字target的个数会超过其他数字个数。
假设不同数字相互抵消，那么最后剩下的数字，就是我们要找的多数元素。
我们可以把这个过程打个比方，比如现在多军对峙，假设阵营A士兵人数比其他方的人数都多，阵营A士兵能以一杀一，那么只要]]></description><category></category></item><item><title><![CDATA[春招必备MySQL高频面试题 - 关于索引的那些事]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/113946638</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/113946638</guid><author>Belingda</author><pubDate>Mon, 22 Feb 2021 18:00:29 +0800</pubDate><description><![CDATA[在文章MySQL 高频面试题 - 为什么 B+ 树比 B 树更适合应用于数据库索引？中我们了解了，在InnoDB存储引擎中，MySQL的索引底层之一是B+树。那么具体索引树中是怎么组织数据的呢？什么是聚集索引（或者叫做聚簇索引），什么是覆盖索引呢？什么又是最左匹配原则呢？我们继续来探索关于面试中索引的那些常考点。
更多技术面试系列，欢迎关注微信公众号：
pipi的奇思妙想

本文目录

正文
主键索引和普通索引有什么区别
我们在建一些需要明确有唯一标识字段的表的时候通常都会显示的建立主键索引，例如
crea]]></description><category></category></item><item><title><![CDATA[Mysql高频面试题 -为什么 B+ 树比 B 树更适合应用于数据库索引？]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/111322613</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/111322613</guid><author>Belingda</author><pubDate>Thu, 17 Dec 2020 22:42:35 +0800</pubDate><description><![CDATA[Mysql数据库面试问题系列持续更新，想追更请关注
微信公众号：pipi的奇思妙想

你可能已经知道B+树被用于Mysql的索引底层实现，那么，为什么是B+树呢？本文由浅及深，带你探索数据库索引底层实现。

由一个例子总结索引的特点
加索引是数据库加速查询的一种方式，那么为什么用索引可以加快查询呢？
讲到索引，其实我们经常会听到一个图书馆的例子，图书馆里的书目繁杂，我们如何从若干本书里面找到一本我们想要的书呢？
我们根据图书馆系统检索，可以找到某本书对应的图书编号。
在基于书籍按照一定规则排列的前提下，我们]]></description><category></category></item><item><title><![CDATA[Mysql面试题系列-什么是crash-safe能力？什么是两阶段提交？]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/107172933</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/107172933</guid><author>Belingda</author><pubDate>Fri, 10 Jul 2020 18:28:20 +0800</pubDate><description><![CDATA[Innodb的crash-safe,以及redo log 和binlog的2pc提交方式
Innodb引擎具有crash-safe能力，这种crash-safe 能力，是通过引擎层的redo log 来实现的
一、redo log是什么
事务在提交写入磁盘前，会先写到redo log里面去，再写入磁盘，这样即使Mysql 进程异常重启了，系统也会自动去检查redo log，将未写入到Mysql的数据从redo log恢复到Mysql中去。
（个人理解）为什么不直接写到Mysql中去？这是因为数据写到Mysq]]></description><category></category></item><item><title><![CDATA[超可爱！动画教你如何删除链表的倒数第n个结点]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/106739673</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/106739673</guid><author>Belingda</author><pubDate>Sun, 14 Jun 2020 19:03:38 +0800</pubDate><description><![CDATA[这是leetcode上一道题目：
https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/comments/

对于链表类题目，对某一个特定索引的元素进行操作往往会成为增加时间复杂度的瓶颈，因此如何使用尽可能少的遍历次数寻找到所要操作的元素就成为减少时间复杂度的关键。
比如这道题，由于我们不知道链表的长度，并且只能从头部开始遍历，假设我们不运用任何技巧，两次遍历可以解决这个问题。
第一次遍历可以得知链表的长度L，第二次遍历从头找到L]]></description><category></category></item><item><title><![CDATA[教你用浪漫的方式找到两个单链表相交的起始节点]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/105612209</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/105612209</guid><author>Belingda</author><pubDate>Sun, 19 Apr 2020 18:56:29 +0800</pubDate><description><![CDATA[你以为我打算讲算法，其实我准备讲爱情…
故事的开始，是一道算法题：
题目：
如何找到两个单链表相交的起始节点。
要求：
如果两个链表没有交点，返回 null.
在返回结果后，两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度，且仅用 O(1) 内存。
题目链接：https://leetcode-cn.com/problems/intersection-...]]></description><category></category></item><item><title><![CDATA[以前我不懂并查集，直到看了古惑仔...]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/105026072</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/105026072</guid><author>Belingda</author><pubDate>Sun, 22 Mar 2020 12:45:01 +0800</pubDate><description><![CDATA[今天我们来讲讲并查集
什么是并查集？事实上并查集并不难，pipi用一个生动的例子带你了解并查集。

                    
                    古惑仔之有趣的并查集～
                  
在这个视频例子中， 我们主要需要解决几个问题：
1.如何判断两个小弟（小a和小c）是否在同一个帮
2.如何合并两个帮派
我们来解析例子：
我们通过例子从以下...]]></description><category></category></item><item><title><![CDATA[为了解决笔记本外接显示器导致Ubuntu显示异常的问题，我做了这么多事情...]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104869129</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104869129</guid><author>Belingda</author><pubDate>Sun, 15 Mar 2020 16:46:17 +0800</pubDate><description><![CDATA[问题描述：
我的笔记本电脑外接了一个显示器，本来以为和Windows下一样，笔记本显示器和外接显示器会同步显示，结果ubuntu下外接显示器和笔记本显示不一致，感觉像是被强制分屏了。体验非常不好，感觉还影响了I/O设备，把外接显示器拔了结果鼠标和键盘都不太能动了，重启在没外接显示器的前提下鼠标和键盘才恢复正常。
问题解决方案：
一.关闭笔记本显示器
上网查了一下，发现网上这篇文章
https://...]]></description><category></category></item><item><title><![CDATA[一个视频让你明白如何判断一个链表是否有环，绝对生动形象]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104829139</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104829139</guid><author>Belingda</author><pubDate>Thu, 12 Mar 2020 22:56:02 +0800</pubDate><description><![CDATA[这其实是一个披着算法题外衣的xxxx视频…
题目：如何判断一个链表是否有环
题目链接：https://leetcode-cn.com/problems/linked-list-cycle/
（题目描述如标题…相信你一看就知道了，就不放题目描述了…）
解法一：（非o(1)空间复杂度解法）
遍历链表，每次遍历到一个新的结点时，判断该结点是否在集合set中，如果在集合set中说明链表有环，否则记录在se...]]></description><category></category></item><item><title><![CDATA[leetcode122题目：贪心算法]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714868</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714868</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 21:24:09 +0800</pubDate><description><![CDATA[题目：
给出每天股票的价格列表，求买卖股票的最大收益。
限制：每天只能持有1股，可以买进和卖出无数次
leetcode122题目
贪心算法介绍：
关键总结：
在对问题求解时，总是做出在当前看来是最好的选择
与动态规划的区别：
贪心算法对子问题的解决方案都做出选择且不能回退，而动态规划则是保存以前子问题的结果，并根据以前的结果对当前的问题进行选择，相当于相对贪心算法动态规划有回退功能。
适用场景：...]]></description><category></category></item><item><title><![CDATA[leetcode题目：求一个非负数n的平方根]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714926</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714926</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 21:23:32 +0800</pubDate><description><![CDATA[题目：
leetcode69题
求一个非负数n的平方根
算法思路：
核心思想：二分查找
在1到n中进行查找，每次取中间元素mid求平方，如果求的平方值等于n或者求的平方值小于n且mid+1的平方值大于n，说明找到了目标值；如果mid+1的平方值大于n，说明应该在左边部分查找，否则在右边部分继续查找
代码如下：
class Solution(object):
    def mySqrt(self,...]]></description><category></category></item><item><title><![CDATA[leetcode题目：众数相关]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714940</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714940</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 21:22:43 +0800</pubDate><description><![CDATA[题目：
leetcode169
给定一个长度为n的数组，求其中出现次数超过n/2次的元素，题目规定该元素必定存在。
算法思路
方法一：
以数组元素为key，出现次数为value,遍历数组，将每个元素出现的次数记录在字典中，然后求字典中统计次数最大的key值。
时间复杂度为o(n)，用到了字典，所以空间复杂度也是o(n)
代码如下：
class Solution(object):
    def m...]]></description><category></category></item><item><title><![CDATA[leetcode题目：寻找二叉搜索树中两个结点的最近公共父结点]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714967</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714967</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 21:21:09 +0800</pubDate><description><![CDATA[寻找二叉搜索树的两个结点的最近公共父结点
一、二叉搜索树定义
是指一棵空树或者具有下列性质的二叉树：
若任意节点的左子树不空，则左子树上所有节点的值均小于它的根节点的值；
若任意节点的右子树不空，则右子树上所有节点的值均大于它的根节点的值；
任意节点的左、右子树也分别为二叉查找树；
没有键值相等的节点
参考链接：维基百科
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img...]]></description><category></category></item><item><title><![CDATA[数独的一种实现方法]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714728</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714728</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 14:50:10 +0800</pubDate><description><![CDATA[本文首发于我的简书账号，最近迁移到csdn博客、
最近想学学算法，无意中从书中看到对一些小游戏的分析和算法实现，其实也是蛮有意思的。
今天我们来讲一讲数独。
首先我们来简单介绍下数独的规则。

标准的数独是一个由99个1-9数字组成的矩阵，其中矩阵中的数字需满足：
1）每个数字所在的每一行、每一列的数字都不能重复。
2）每个数字所在的33矩阵的数字都不能重复。
3）所填的数字范围需为1-9的整数
...]]></description><category></category></item><item><title><![CDATA[leetcode上的题目：两数之和]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714623</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714623</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 14:41:52 +0800</pubDate><description><![CDATA[本文首发于我的简书账号，最近迁移到csdn博客
leetcode上的一道题目：
两数之和：https://leetcode-cn.com/problems/two-sum/
两数之和
给定一个整数数组和一个目标值，找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案，且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 n...]]></description><category></category></item><item><title><![CDATA[Python 引用、浅复制和深复制]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714478</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714478</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 14:34:11 +0800</pubDate><description><![CDATA[在python中，一切皆对象。
python 引用
先来看一个例子
a={1:{2:3}}
b=a
b[1][2]=4
print("b=%s a=%s"%(b,a))

输出结果
b={1:{2:4}} a={1:{2:4}} 

即 修改了b,a的值也被修改了
这是因为在python中，b 和 a 指向相同的地址空间，b并不是一个新的对象，所以改变b的值也会改变a的值。
这种设计的方便在于，只...]]></description><category></category></item><item><title><![CDATA[python 动态编译执行字符串代码]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104714413</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104714413</guid><author>Belingda</author><pubDate>Sat, 07 Mar 2020 14:31:27 +0800</pubDate><description><![CDATA[文章首发于我的简书账号，最近迁移到csdn博客
python 中
compile()方法支持将代码字符串编译为字节码，exec()方法可以执行代码字符串或者通过compile()转化的字节码。
compile()
https://www.runoob.com/python/python-func-compile.html
exec()
https://www.runoob.com/python/p...]]></description><category></category></item><item><title><![CDATA[一个视频让你明白什么是递归]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104706945</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104706945</guid><author>Belingda</author><pubDate>Fri, 06 Mar 2020 23:50:35 +0800</pubDate><description><![CDATA[什么是递归？这里有一个形象的解释~
电影院里，有人问你你坐在第几排，你懒得数，于是你问坐在你前一排的人他坐在第几排，这样在他回答的排数上加一你就可以知道你坐在第几排了。坐在你前一排的人也懒得数，于是就继续去问坐在他前一排的人相同的问题，这样一直下去直到问到坐在第一排的老哥，第一排的老哥当然会告诉你他坐在第一排。于是这个消息会从第一排开始一排一排再传回到你这里，当然每个接受到这个消息的人会在这个结果...]]></description><category></category></item><item><title><![CDATA[面试题：python2类继承object和不继承object有什么区别]]></title><link>https://blog.youkuaiyun.com/Belingda/article/details/104707236</link><guid>https://blog.youkuaiyun.com/Belingda/article/details/104707236</guid><author>Belingda</author><pubDate>Fri, 06 Mar 2020 23:41:37 +0800</pubDate><description><![CDATA[​python2中定义类时继承object和不继承object有什么区别？



stackoverflow上也有人提出了这样的问题:

https://stackoverflow.com/questions/332255/difference-between-class-foo-and-class-fooobject-in-python



首先说明，这个区别只存在于python2,pyt...]]></description><category></category></item></channel></rss>