昨天了解一下 mysql 的幻读,然后寻找解决幻读的答案,又会出现关键词mvcc
和间隙锁
,顺着两个关键词寻找我又发现新的Next-key Locks
关键词,接着再通过Next-key Locks
关键词,又弹出Innodb 锁机制
与Myisam 锁机制
,随着关键词的不断深入,自已会发现不知道看什么内容了,也记不清太多的知识点描述.这样一天时间就浪费了,而问题始终没有解决,只是心里知道个大概样子. 请问你们如何避免这种情况呢
![]() | 1 wangritian 2020-09-24 10:29:45 +08:00 先简单了解 BCD 的概念,回来看完 A 问题后,再去学习 BCD 的细节 |
2 gugugagadun 2020-09-24 10:31:45 +08:00 看书 |
![]() | 3 kop1989 2020-09-24 10:35:09 +08:00 ![]() 说明你的信息源是垃圾。 一个好的技术文章,是绝对不会瞎增加概念的。 打个比方,你想知道 1+1 等于几。好的技术文章会告诉你等于 2,1 个苹果,再加一个苹果,就是两个苹果。所以 1+1=2 。然后 1+1=2 应该在哪里用,不能再哪里用。 烂的文章会告诉你,1+1 在算错的情况下等于三,0.1+0.1 不一定等于 0.2,懂得都懂,不懂得我也不想说,说就是利益太大。1+1 还有个关键问题就是哥德巴赫猜想…… 反正兜兜转转就是不告诉你等于几,也不告诉你 1+1 的用法和坑。 |
![]() | 4 zycpp 2020-09-24 10:39:15 +08:00 via Android ![]() 你这是深度优先学习,想避免的话,可以设置一个最大深度,超过这个深度,就不必要再挖掘了。 |
5 zxCoder 2020-09-24 10:40:57 +08:00 哈哈 很真实,学习的时候经常会这样 |
![]() | 6 francis59 2020-09-24 11:01:10 +08:00 把 BCD 的问题先记下来,以后再研究 |
7 cs5117155 OP @wangritian 比如我项目明明就要解决 A 问题,可能我理解能力会比较慢,花很长时间去理解 BCD 的概念,这样等于我项目被拖延,好像不太值得呀 |
![]() | 8 Tloudalo 2020-09-24 11:05:17 +08:00 ![]() 这种情况下一般会导致浏览器开好几十个 tab,我一般是针对每个概念都点开 google 前几篇文章 - 排版差的,不要 - 过于抽象的,不要 - 一看就不专业的,不要 理解要求随离最初目标的距离逐渐递减。 对概念其实有个大概理解就好,达到真正的学习还是要应用。 但现实情况往往是,还有 n 个没看突然有事情 /不想学了,点一下 OneTab 然后让它们永久吃灰 |
9 xuxu5112 2020-09-24 11:08:07 +08:00 ![]() 把问题 B 、C 、D 当成接口,知道概念即可,细节不要进去。始终关注 A 的流程。 |
10 cs5117155 OP @gugugagadun 我以前也想过看书从 0 开始的,但是后面发现有写书直接告诉你这样,但是在我的认知世界里,觉得为什么要这样运行,会排斥,然后导致过一个月你不用,基本就忘记了 |
11 cs5117155 OP @Tloudalo 你说对我了,有时候我搜索问题,真是会几十个 tab,后面根本就不知道看哪些了. 达到真正的学习还是要应用。这句很赞同 |
![]() | 13 xiaojianghu 2020-09-24 11:18:12 +08:00 我也是这样,我觉得这不完全是坏事吧,如果你时间紧张的话,你可以点进去 BCD 先看文章上面的简介再看下最底下的总结,了解个大概回来看 A 。 |
![]() | 14 anzu 2020-09-24 11:31:01 +08:00 Yak Shaving |
15 cs5117155 OP @kop1989 这个我也很有体会,记得以前写个 socket 时,网上写让我看 TCP/IP 的书,看完再来写.但是我偶尔看到一个篇文章直接有例子,ctrl+c ctrl+v,改改端口就可以简单使用了,少看很多概念 |
![]() | 18 lewis89 2020-09-24 11:52:14 +08:00 ![]() 你只是缺一本书而已,MySQL 技术内幕 可以看看,虽然很大程度上是翻译官方文档,但是质量还是有保证的 |
![]() | 19 otakustay 2020-09-24 11:56:30 +08:00 ![]() 这不就是问题不够紧急么,急到线上一分钟 200W 操作,3000W 用户排队等资源,客服和运营拿刀在你身后要你解决,我就不信你还能研究 BCD 不是说问题都应该这种紧急,而是我们自己内心到底是怎么认定这问题的,是“我就是一定要快速解决它”还是“能解决就解决了,解决不了拖一拖也没事” |
20 krixaar 2020-09-24 12:02:13 +08:00 ![]() 就好比你要查牛二来解决一个简单的宏观低速问题,本来只是要看 F=ma,结果你手头的教程公式里出现了光速 c,然后你非得想搞明白这是什么鬼,于是去啃狭义相对论,然后感觉牛二怎么这么难,就偏离你的初衷了。 |
![]() | 21 zjsxwc 2020-09-24 12:11:44 +08:00 ![]() 限制搜索 Depth |
22 littlewing 2020-09-24 13:02:22 +08:00 可以看广度优先遍历 |
![]() | 23 jdhao 2020-09-24 13:38:29 +08:00 在你的知识不够广的时候,很容易遇到这种问题。可以先解决最相关的问题,其余引出的问题,如果有时间,再去深入理解。 |
![]() | 24 laqow 2020-09-24 13:42:49 +08:00 via Android 就是相关领域的基础不扎实,但不可能每件事都等扎实了才做,所以掌握到能把相关关键词记住,需要的时候能 google 出来就可以了 |
![]() | 25 anthow 2020-09-24 14:11:38 +08:00 可以把这个过程整个一个脑图,就成体系了 |
26 banishee 2020-09-24 14:37:51 +08:00 同好,我也一直有这个烦恼,还是因为技术太菜了 |
![]() | 27 bjking2014 2020-09-24 14:42:53 +08:00 要学会抓大放小,了解 mvcc 和间隙锁已经足够解决幻读问题了。就此停住就行,你要解决的是幻读问题而不是 MVCC 的底层原理 |
28 HENQIGUAI 2020-09-24 14:48:51 +08:00 ![]() |
![]() | 30 blindie 2020-09-24 15:03:39 +08:00 via Android 当黑盒就可以 |
![]() | 33 xwhxbg 2020-09-24 15:34:40 +08:00 信息源垃圾+1,这种跟我遇到很多大学教授一样,出来就各种名词堆砌,其实问题很简单,底层细节完全不需要暴露 |
![]() | 35 wangritian 2020-09-24 15:54:03 +08:00 @cs5117155 理解概念类似于阅读一个函数的参数和返回值,或者一个接口的文档。比如间隙锁是范围多行锁,就可了 |
![]() | 37 kop1989 2020-09-24 16:22:53 +08:00 @luohuanlh #36 我想了想,有两个方向: 一个是可以灵活运用带评分机制的社区,比如栈溢出,比如国内的仿品思否。充分利用社区的筛选机制,高赞最起码不会太差。如果问题覆盖范围相对大(不好检索),而且并不是具体问题的话,比如 lz 说的“mysql 幻读”,可以尝试拆解、改变描述问题。 一个是多点开几个“科普”这个问题的文章,快速浏览其行文,如果出现 A 就是 B,C,然后 D,且自己读不懂的这种句式,果断右上角 x 掉。 比如还是 lz 幻读的这个例子。对于我这个 DB 白痴而言,https://segmentfault.com/a/1190000016566788 这篇文章就是典型的垃圾(对我个人而言),不是说他写的不对或者技术不好,是我看不懂,我看了一页依然不明白到底什么是幻读…… 但这个文章就说明白了: https://database.51cto.com/art/201905/597093.htm ,而且这篇文章详细阐述了浏览这篇文章所需的技术基础。我就明白了这篇文章的技术深度以及知识依赖,是有限度的,也能预估我的学习时间。 总结:利用社区筛选+快速挑选适合自己知识储备的文章。 |
![]() | 38 Hodor 2020-09-24 17:48:46 +08:00 C 和 D 问题,不必知道原理,能用就行。 |
![]() | 39 URGERKING 2020-09-24 17:48:53 +08:00 via Android 就我个人经验而言,如果 BCD 问题不是太过于复杂(不如在两小时内能够理解明白)或者又跳到 EFG, 应该看完的比较好 总感觉讲了个废话 ww |
![]() | 41 vindurriel 2020-09-24 20:43:41 +08:00 via iPhone 磨刀不误砍柴工 任何领域的知识都是有限的 我现在看到不认识的词会很开心 |
![]() | 42 jeeyong 2020-09-25 00:47:11 +08:00 说明懂得不够多 |
![]() | 43 godblessumilk 2020-09-25 01:10:02 +08:00 via Android 我最近在恶补上学时候学的 cs 专业课,因为越来越发觉这些才是内功,尤其是编译原理,操作系统,计算机组成原理,计算机网络,如果这些学得好,mysql 这种应用层的玩意儿几天就能上手。。。 |
44 Jooooooooo 2020-09-25 02:00:06 +08:00 说明知识面太窄了 我研究锁的时候才接触到 MESI 然后 CPU 那一套内存一致性的问题才真正了解 |
![]() | 45 raaaaaar 2020-09-25 07:57:14 +08:00 via Android 这就是我的日常学习状态。。 |
46 krixaar 2020-09-25 08:40:45 +08:00 @URGERKING #40 “透”也分三六九等,啃到分子就能解决问题的话,硬啃到夸克确实够透了,但是不见得对于分子级别的问题有多大帮助。还是像#4 说的,啃到一个能解决问题的深度就可以停了。 |
![]() | 47 kamal 2020-09-25 09:45:43 +08:00 @Tloudalo #8 老哥明白人,特别有感触,排版差的内容一定差。 内容农场爬多家网站,样式都不会重新整理,能塞进去就行,只让搜索引擎看到文字就行。 |
48 cs5117155 OP @Jooooooooo 都研究那么深入的吗,刚刚我又把你关键词`MESI`搜索了一下,不然再往下深入了 |
![]() | 51 luohuanlh 2020-09-25 22:38:46 +08:00 @kop1989 我在想能否弄一个访微信阅读里面的机制。就是提问里面,关键词又成为了问题。很多人给出自己的评论和链接。通过这些链接再找到知识的出处,构建成知识体系。毕竟,知识还是要成系统才能被认知。 |
53 tkl 2020-09-26 12:18:32 +08:00 知识点从来都不是一座座孤岛,而且一张张错综复杂的蜘蛛网,还会有各种各样的跨学科问题,比如造 CPU 。 现在的计算机科学经过前人的不断完善,各种封装,可以很简单应用于各行各业,但是当你想要了解内部的原理,只能一层一层的打破沙锅问到底。 还有经常说的结果导向和过程导向,当你遇到问题可以 google 一下,面向 stackoverflow 编程,但是当你找原因,写回答的时候才能真正考验你的能力。 我希望自己逐渐成为后者。 怎么还扯到 XY 问题? |