<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ilini的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ilini</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ilini]]></copyright><item><title><![CDATA[分库分表会带来读扩散问题？怎么解决？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/125076751</link><guid>https://blog.youkuaiyun.com/ilini/article/details/125076751</guid><author>ilini</author><pubDate>Wed, 01 Jun 2022 07:36:42 +0800</pubDate><description><![CDATA[今天这篇文章，其实也是我曾经面试中遇到过的真题。分库分表大家可能听得多了，但读扩散问题大家了解吗？这里涉及到几个问题。分库分表是什么？读扩散问题是什么？分库分表为什么会引发读扩散问题？怎么解决读扩散问题？能不能不要在评论区叫我刁毛？不好意思，失态了。这些问题还是比较有意思的。相信兄弟们也一定有机会遇到哈哈哈。我们先从分库分表的话题聊起吧。我们平时做项目开发。一开始，通常都先用一张数据表，而一般来说数据表写到2kw条数据之后，底层B+树的层级结构就可能会变高，不同层级的数据页一般都放在磁盘里不同的地方，换言之]]></description><category></category></item><item><title><![CDATA[mysql查询 limit 1000,10 和limit 10 速度一样快吗？如果我要分页，我该怎么办？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/124675319</link><guid>https://blog.youkuaiyun.com/ilini/article/details/124675319</guid><author>ilini</author><pubDate>Mon, 09 May 2022 21:44:30 +0800</pubDate><description><![CDATA[刷网站的时候，我们经常会遇到需要分页查询的场景。比如下图红框里的翻页功能。我们很容易能联想到可以用mysql实现。假设我们的建表sql是这样的mysql建表sql建表sql大家也不用扣细节，只需要知道id是主键，并且在user_name建了个非主键索引就够了，其他都不重要。为了实现分页。很容易联想到下面这样的sql语句。select&nbsp;*&nbsp;from&nbsp;page&nbsp;order&nbsp;by&nbsp;id&nbsp;limit&nbsp;offset,&nbsp;size;]]></description><category></category></item><item><title><![CDATA[都是同样条件的mysql select语句，为什么读到的内容却不一样？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/124464707</link><guid>https://blog.youkuaiyun.com/ilini/article/details/124464707</guid><author>ilini</author><pubDate>Thu, 28 Apr 2022 06:28:50 +0800</pubDate><description><![CDATA[假设当前数据库里有下面这张表。user表数据库原始状态老规矩，以下内容还是默认发生在innodb引擎的可重复读隔离级别下。都是select结果却不同大家可以看到，线程1，同样都是读 age &gt;= 3 的数据。第一次读到1条数据，这个是原始状态。这之后线程2将id=2的age字段也改成了3。线程1此时再读两次，一次读到的结果还是原来的1条，另一次读的结果却是2条，区别在于加没加for update。为什么同样条件下，都是读，读出来的数据却不一样呢？可重复读不是要求每次读出来的内容要一样吗？要回答这个问题]]></description><category></category></item><item><title><![CDATA[Mysql的索引为什么使用B+树而不使用跳表？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/124291866</link><guid>https://blog.youkuaiyun.com/ilini/article/details/124291866</guid><author>ilini</author><pubDate>Wed, 20 Apr 2022 10:44:34 +0800</pubDate><description><![CDATA[在我们的印象中，mysql数据表里无非就是存储一行行的数据。跟个excel似的。直接遍历这一行行数据，性能就是O(n)，比较慢。为了加速查询，使用了B+树来做索引，将查询性能优化到了O(lg(n))。但问题就来了，查询数据性能在 lg(n) 级别的数据结构有很多，比如redis的zset里用到的跳表，也是lg(n)，并且实现还贼简单。那为什么mysql的索引，不使用跳表呢？我们今天就来聊聊这个话题。B+树的结构之前的一篇文章里，已经提到过B+树的结构了。文章不长，如果没看过，建议先看下。当然，不看也行。在这]]></description><category></category></item><item><title><![CDATA[​Mysql数据库查询好慢，除了索引，还能因为什么？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/124139560</link><guid>https://blog.youkuaiyun.com/ilini/article/details/124139560</guid><author>ilini</author><pubDate>Wed, 13 Apr 2022 08:37:53 +0800</pubDate><description><![CDATA[我熟练应用ctrl c和ctrl v 开发curd代码好多年了。
mysql查询为什么会慢，关于这个问题，在实际开发经常会遇到，而面试中，也是个高频题。
遇到这种问题，我们一般也会想到是因为索引。
那除开索引之外，还有哪些因素会导致数据库查询变慢呢？
有哪些操作，可以提升mysql的查询能力呢？
今天这篇文章，我们就来聊聊会导致数据库查询变慢的场景有哪些，并给出原因和解决方案。
数据库查询流程
我们先来看下，一条查询语句下来，会经历哪些流程。
比如我们有一张数据库表
CREATE&nbsp;TABLE&nb]]></description><category></category></item><item><title><![CDATA[为什么大家说mysql数据库单表最大两千万？依据是啥？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/123979938</link><guid>https://blog.youkuaiyun.com/ilini/article/details/123979938</guid><author>ilini</author><pubDate>Tue, 05 Apr 2022 23:14:49 +0800</pubDate><description><![CDATA[故事从好多年前说起。想必大家也听说过数据库单表建议最大2kw条数据这个说法。如果超过了，性能就会下降得比较厉害。巧了。我也听说过。但我不接受它的建议，硬是单表装了1亿条数据。这时候，我们组里新来的实习生看到了之后，天真无邪的问我："单表不是建议最大两千万吗？为什么这个表都放了1个亿还不分库分表"？我能说我是因为懒吗？我当初设计时哪里想到这表竟然能涨这么快。。。我不能。说了等于承认自己是开发组里的毒瘤，虽然我确实是，但我不能承认。我如坐针毡，如芒刺背，如鲠在喉。开始了一波骚操作。"我这么做是有道理的""虽然这]]></description><category></category></item><item><title><![CDATA[给32位系统装8g内存条能用吗？为什么？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/123417657</link><guid>https://blog.youkuaiyun.com/ilini/article/details/123417657</guid><author>ilini</author><pubDate>Fri, 11 Mar 2022 10:02:48 +0800</pubDate><description><![CDATA[关于32位和64位，这个概念一直让人比较懵。在买电脑的时候，我们看到过32位和64位CPU。下软件的时候，我们也看到过32位或64位的软件。就连装虚拟机的时候，我们也看过32位和64位的系统。在写代码的时候，我们的数值，也可以定义为int32或者int64。我们当然很清楚，装软件的时候，一般64位的系统就选64位的软件，肯定不出错，但是这又是为什么呢？既然CPU，软件，操作系统，数值大小都有32位和64位，他们之间就可以随意组合成各种问题，比如32位的系统能装64位的软件吗？32位的系统能计算int64的数]]></description><category></category></item><item><title><![CDATA[大学生毕业找工作，该选择哪个方向？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/121601647</link><guid>https://blog.youkuaiyun.com/ilini/article/details/121601647</guid><author>ilini</author><pubDate>Mon, 29 Nov 2021 12:21:23 +0800</pubDate><description><![CDATA[兄弟们。出来说骚话啊。考虑到，读者里面，有不少是还未踏入社会的学生党。今天在这里想简单介绍下行业的区别。虽然都是写代码，虽然大家都叫程序员，但其实，分为很多种类。程序员大体上分为前端和后端。因为我不懂前端，所以这里主要讲下后端吧。而后端，可以从很多角度进行分类。我们从大家最熟悉的大学专业开始展开吧。非计算机专业一般提到程序员，都会以为都是计算机专业的，但其实除了计算机专业外，还有一些专业，比如电气工程、自动化、通信工程等，都会有不少相关的对口程序员工种。比如大学时候学的51单片，STM32之类的相关，那个其]]></description><category></category></item><item><title><![CDATA[动图图解，怎么让goroutine跑一半就退出？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/121454248</link><guid>https://blog.youkuaiyun.com/ilini/article/details/121454248</guid><author>ilini</author><pubDate>Sun, 21 Nov 2021 15:21:27 +0800</pubDate><description><![CDATA[光看标题，大家可能不太理解我说的是啥。我们平时创建一个协程，跑一段逻辑，代码大概长这样。package main
 
import (
    "fmt"
    "time"
)
func Foo() {
    fmt.Println("打印1")
    defer fmt.Println("打印2")
    fmt.Println("打印3")
}
 
func main() {
    go  Foo()
    fmt.Println("打印4")
    time.Sleep(1000*ti]]></description><category></category></item><item><title><![CDATA[动图图解！代码执行send成功后，数据就发出去了吗？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/119101337</link><guid>https://blog.youkuaiyun.com/ilini/article/details/119101337</guid><author>ilini</author><pubDate>Mon, 26 Jul 2021 08:57:38 +0800</pubDate><description><![CDATA[今天又是被倾盆的需求淹没的一天。

有没有人知道，那种“我用3句话，就让产品为我砍了18个需求”的鸡汤课在哪报名，想报。
"听懂掌声"的那种课就算了，太费手了。

扯远了，回到我们今天的正题，我们了解下这篇文的目录。

代码执行send成功后，数据就发出去了吗？
回答这个问题之前，需要了解什么是Socket 缓冲区。

Socket 缓冲区
什么是 socket 缓冲区
编程的时候，如果要跟某个IP建立连接，我们需要调用操作系统提供的 socket API。
socket 在操作系统层面，可以理解为一个文件]]></description><category></category></item><item><title><![CDATA[连接一个 IP 不存在的主机时，握手过程是怎样的？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/118565606</link><guid>https://blog.youkuaiyun.com/ilini/article/details/118565606</guid><author>ilini</author><pubDate>Thu, 08 Jul 2021 08:37:38 +0800</pubDate><description><![CDATA[文章首发于个人公众号「小白debug」
 原文链接：连接一个 IP 不存在的主机时，握手过程是怎样的？

鸽了好长时间了，最近很忙。以前工作忙完，就抽空写文章。
现在忙完工作，还要一三五学驾照，二四六看家具。有同感的老铁们不要举手，拉到右下角点个&quot;在看&quot;就好了。
真的，全怪某音。

扯远了，回到今天的主题。
方兄最近写了篇很赞的文章 写给想去字节写 Go 的你 ，里面提到了两个问题。
连接一个 IP 不存在的主机时，握手过程是怎样的？
连接一个 IP 地址存在但端口号不存在的主机时，握.]]></description><category></category></item><item><title><![CDATA[硬核图解！断网了，还能ping通 127.0.0.1 吗？为什么？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/117983383</link><guid>https://blog.youkuaiyun.com/ilini/article/details/117983383</guid><author>ilini</author><pubDate>Thu, 17 Jun 2021 10:10:57 +0800</pubDate><description><![CDATA[首发于个人公众号：golang小白成长记
原文地址：硬核图解！断网了，还能ping通 127.0.0.1 吗？为什么？

你女神爱不爱你，你问她，她可能不会告诉你。
但网通不通，你 ping 一下就知道了。
可能看到标题，你就知道答案了，但是你了解背后的原因吗？那如果把 127.0.0.1 换成 0.0.0.0 或 localhost 会怎么样呢？ 你知道这几个IP有什么区别吗？
以前面试的时候就遇到过这个问题，大家看个动图了解下面试官和我当时的场景，求当时小白的心里阴影面积。

话不多说，我们直接开车。.]]></description><category></category></item><item><title><![CDATA[爷青回！最近很火的朋友圈怀旧小电视源码来啦！看到最后一个视频我大呼好家伙！]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/117396412</link><guid>https://blog.youkuaiyun.com/ilini/article/details/117396412</guid><author>ilini</author><pubDate>Sun, 30 May 2021 11:51:19 +0800</pubDate><description><![CDATA[原文首发于公众号：【golang小白成长记】
爷青回！最近很火的朋友圈怀旧小电视源码来啦！看到最后一个视频我大呼好家伙！

体验一把怀旧小电视
最近朋友圈被怀旧小电视刷爆啦！
点开来，是一台老式电视机！
点开右下角的小按钮，电视机能被打开！
这就相当有趣了。
熟悉的小叮当就播起来了~

右边的两道杠，还能调音量。这就相当逼真了。
出于好奇心，关掉电视机，再打开，还有一定的几率能换台哈哈哈哈！
我尝试了几次，有
黑猫警长
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0s8O.]]></description><category></category></item><item><title><![CDATA[动图图解！GMP模型里为什么要有P？背后的原因让人暖心]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/116723038</link><guid>https://blog.youkuaiyun.com/ilini/article/details/116723038</guid><author>ilini</author><pubDate>Wed, 12 May 2021 22:18:53 +0800</pubDate><description><![CDATA[文章持续更新，可以微信搜一搜「golang小白成长记」第一时间阅读，回复【教程】获golang免费视频教程。本文已经收录在GitHub https://github.com/xiaobaiTech/golangFamily , 有大厂面试完整考点和成长路线，欢迎Star。

GM模型是什么

在 Go 1.1版本之前，其实用的就是GM模型。

G，协程。通常在代码里用  go  关键字执行一个方法，那么就等于起了一个G。

M，内核线程，操作系统内核其实看不见G和P，只知道自己在执行一个线程。G和P都是在.]]></description><category></category></item><item><title><![CDATA[i/o timeout ， 希望你不要踩到这个net/http包的坑]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/115896742</link><guid>https://blog.youkuaiyun.com/ilini/article/details/115896742</guid><author>ilini</author><pubDate>Tue, 20 Apr 2021 10:47:00 +0800</pubDate><description><![CDATA[文章持续更新，可以微信搜一搜「golang小白成长记」第一时间阅读，回复【教程】获golang免费视频教程。本文已经收录在GitHub https://github.com/xiaobaiTech/golangFamily , 有大厂面试完整考点和成长路线，欢迎Star。




问题

我们来看一段日常代码。


 1packagemain
 2
 3import(
 4"bytes"
 5"encoding/json"
 6"fmt"
 7"io/iouti...]]></description><category></category></item><item><title><![CDATA[连nil切片和空切片一不一样都不清楚？那BAT面试官只好让你回去等通知了]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/115518988</link><guid>https://blog.youkuaiyun.com/ilini/article/details/115518988</guid><author>ilini</author><pubDate>Thu, 08 Apr 2021 14:07:09 +0800</pubDate><description><![CDATA[[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jp1TlBFy-1617862011452)(http://qh1adizvv.hn-bkt.clouddn.com/nil%E5%88%87%E7%89%87%E5%92%8C%E7%A9%BA%E5%88%87%E7%89%87%E5%B0%81%E9%9D%A2.png)]
连nil切片和空切片一不一样都不清楚？那BAT面试官只好让你回去等通知了。
问题
package main

import (
	"fmt"
	"re]]></description><category></category></item><item><title><![CDATA[程序猿的第一本互联网黑话指南]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/115505212</link><guid>https://blog.youkuaiyun.com/ilini/article/details/115505212</guid><author>ilini</author><pubDate>Thu, 08 Apr 2021 09:39:29 +0800</pubDate><description><![CDATA[文章持续更新，可以微信搜一搜「golang小白成长记」第一时间阅读，回复【教程】获golang免费视频教程。本文已经收录在GitHub https://github.com/xiaobaiTech/golangFamily , 有大厂面试完整考点和成长路线，欢迎Star。


很烦，小侄子最近不给我打电话了。
放下作为叔叔的面子，拨通电话。

他说，他最近很烦。
我以为他长大了，谈恋爱了。
他说，最近他们学校，换了个校长。
喜欢在早上升国旗之后发表演讲。
“发表演讲挺好的啊，德智体美。”
他说他听不懂。..]]></description><category></category></item><item><title><![CDATA[TCP粘包为什么会粘包？ 背后的原因让人暖心]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/115108861</link><guid>https://blog.youkuaiyun.com/ilini/article/details/115108861</guid><author>ilini</author><pubDate>Tue, 23 Mar 2021 08:37:10 +0800</pubDate><description><![CDATA[事情从一个健身教练说起吧。

李东，自称亚健康终结者，尝试使用互联网+的模式拓展自己的业务。在某款新开发的聊天软件琛琛上发布广告。
键盘说来就来。疯狂发送"李东"，回车发送！，“亚健康终结者”，再回车发送！

还记得四层网络协议长什么样子吗？

四层网络模型每层各司其职，消息在进入每一层时都会多加一个报头，每多一个报头可以理解为数据报多戴一顶帽子。这个报头上面记录着消息从哪来，到哪去，以及消息多长等信息。比如，mac头部记录的是硬件的唯一地址，IP头记录的是从哪来和到哪去，传输层头记录到是到达目的主机后具.]]></description><category></category></item><item><title><![CDATA[女朋友看了会生气的回答: URI和URL有什么区别？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/114075013</link><guid>https://blog.youkuaiyun.com/ilini/article/details/114075013</guid><author>ilini</author><pubDate>Thu, 25 Feb 2021 12:54:10 +0800</pubDate><description><![CDATA[URL是什么
URL 代表着是统一资源定位符（Uniform Resource Locator）。作用是为了告诉使用者 某个资源在 Web 上的地址。这个资源可以是一个 HTML 页面，一个 CSS 文档，一幅图像或一个猫片等等。上面我们请求猫片的URL就是
https://upos-sz-staticks3.bilivideo.com/cmaskboss/164203142_30_1.jpg
这里面细分，又可以分为好几个部分。

协议部分

表示该URL的协议部分为http还是https，会用**//为分]]></description><category></category></item><item><title><![CDATA[女朋友看了会生气的回答: URI和URL有什么区别？]]></title><link>https://blog.youkuaiyun.com/ilini/article/details/114055545</link><guid>https://blog.youkuaiyun.com/ilini/article/details/114055545</guid><author>ilini</author><pubDate>Thu, 25 Feb 2021 07:21:14 +0800</pubDate><description><![CDATA[URL是什么
URL 代表着是统一资源定位符（Uniform Resource Locator）。作用是为了告诉使用者 某个资源在 Web 上的地址。这个资源可以是一个 HTML 页面，一个 CSS 文档，一幅图像或一个猫片等等。上面我们请求猫片的URL就是
https://upos-sz-staticks3.bilivideo.com/cmaskboss/164203142_30_1.jpg
这里面细分，又可以分为好几个部分。

协议部分

表示该URL的协议部分为http还是https，会用**//为分]]></description><category></category></item></channel></rss>