11 2020 档案
摘要:相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢?
拿我自己来说吧!我本人曾经使用 Dubbo 来做分布式项目的时候,使用了 ZooKeeper 作为注册中心。为了保证分布式系统能够同步访问某个资源,我还使用 ZooKeeper 做过分布式锁。另外,我在学习 Kafka 的时候,知道 Kafka 很多功能的实现依赖了 ZooKeeper。
阅读全文
摘要:
好的命名习惯不仅能够提升开发效率,也能够提升团队之间的合作效率,而且一个好的命名规则在一定程度上提升 debug 效率,以及后期的维护成本。所以总的来说好的命名习惯是一本万利的,在工作中也更容易融入任何开发团队,使得工作更好进行。
阅读全文

摘要:
学会问问题非常重要,向别人提问,如果你问题问的精准那么你就能够快速的获得你的答案。特别是我们作为程序员,会问问题能够大幅提升我们的开发效率,而且一个好的问题别人也很乐意给你解答。如果你不学会聪明的问问题,那么久而久之别人就会对你问的问题感到反感。聪明的问问题也体现了一个人的学习能力,聪明的才能问出好问题,经常问出愚蠢问题,久而久之大家就会主观的认为你是一个愚蠢的人。读完了这篇文章你就会杜绝这种情况,也学会聪明的问问题,做一个聪明的人。
阅读全文

摘要:
程序员加班是常事,大众都知道程序员加班特别频繁,但是很少有人知道作为程序员的我们为什么加班?除了赶项目之外,加班的情况还有很多,每个人加班的情况不尽相同。那么我为什么加班呢?看了此文之后你就知道了。
阅读全文

摘要:
计算机网络基础是我们认识计算机,了解计算机网络的入门学科,只要了解什么计算机网络,了解了信息怎么发送接收,我们才能更好的从事这个学科相关的职业。21世纪以来,网络越来越亲民,当下无论男女老幼都在使用网络,网络技术也得到了前所未有的普及。作为新青年和计算机网络相关专业从业者的我们,了解计算机网络的基础及原理势在必行。接下来带大家全面了解计算机网络基础。
阅读全文

摘要:
很多朋友,只知道缓存可以提高系统性能以及减少请求相应时间,但是,不太清楚缓存的本质思想是什么。
缓存的基本思想其实很简单,就是我们非常熟悉的空间换时间。不要把缓存想的太高大上,虽然,它的确对系统的性能提升的性价比非常高。
其实,我们在学习使用缓存的时候,你会发现缓存的思想实际在操作系统或者其他地方都被大量用到。 比如 CPU Cache 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。 再比如操作系统在 页表方案 基础之上引入了 快表 来加速虚拟地址到物理地址的转换。我们可以把快表理解为一种特殊的高速缓冲存储器(Cache)。
回归到业务系统来说:我们为了避免用户在请求数据的时候获取速度过于缓慢,所以我们在数据库之上增加了缓存这一层来弥补。
阅读全文

摘要:
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间等等。你会发现这个时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以,我们有必要重新出发,好好认识一下这个东西。
这是一篇短小精悍的文章,仔细阅读一定能学到不少东西!
阅读全文

摘要:
非常不错的总结,强烈建议保存下来,需要的时候看一看。
阅读全文

摘要:
事务是逻辑上的一组操作,要么都执行,要么都不执行。
事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。
阅读全文

摘要:
本篇文章会分析下一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。
在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成已经这些组件的作用是什么,可以帮助我们理解和解决这些问题。
阅读全文

摘要:什么是索引?
索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B树, B+树和Hash。
索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。
阅读全文
摘要:为什么要使用索引?
1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
2. 可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。
3. 帮助服务器避免排序和临时表。
4. 将随机IO变为顺序IO
5. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
阅读全文
摘要:要理解为什么将 ArrayBuffer 和 SharedArrayBuffer 添加到 JavaScript 中,你需要了解一些关于内存管理的内容。
你可以将机器中的内存看作一堆盒子。就像你在办公室里的邮箱,或是小孩子们使用的收纳箱。
如果你想要为其他孩子留下一些东西,你可以把它放在一个盒子里。
阅读全文
摘要:不管前端还是后端,了解一些 Linux 命令是必要的素养,特别是后端开发人员。当下项目管理和维护都会用到 Linux 相关操作或命令,该篇文章简单介绍作为一个优质程序员必知的 Linux 的一些概念以及常见命令。
阅读全文
摘要:在日常的开发中,验证用户的注册信息的情况经常遇到,有了这些正则表达式,那么就省去了很多取值对比的环节,也节省了我们写分支语句的时间。一条好的语句能够很好的提升我们的开发效率,使得我们更高效的完成开发任务。
阅读全文
摘要:海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!
下面我们将分为几个方面来介绍布隆过滤器:
1. 什么是布隆过滤器?
2. 布隆过滤器的原理介绍。
3. 布隆过滤器使用场景。
4. 通过 Java 编程手动实现布隆过滤器。
5. 利用Google开源的Guava中自带的布隆过滤器。
6. Redis 中的布隆过滤器。
阅读全文
摘要:学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。
很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做Linux运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是shell编程也是我们必须要掌握的!
目前Linux系统下最流行的运维自动化语言就是Shell和Python了。
两者之间,Shell几乎是IT企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止、数据备份及处理、日志分析等环节里,shell是不可缺的。Python 更适合处理复杂的业务逻辑,以及开发复杂的运维软件工具,实现通过web访问等。Shell是一个命令解释器,解释执行用户所输入的命令和程序。一输入命令,就立即回应的交互的对话方式。
另外,了解 shell 编程也是大部分互联网公司招聘后端开发人员的要求。下图是我截取的一些知名互联网公司对于 Shell 编程的要求。
阅读全文