11丨面试:如何准备简历和面试?
在上篇文章中,我们聊了聊换工作之前要思考的问题。接下来我们趁热打铁,聊聊身为程序员的我们,应该如何面试?
面试的时候,不知道你会不会有这几个感觉?
在上篇文章中,我们聊了聊换工作之前要思考的问题。接下来我们趁热打铁,聊聊身为程序员的我们,应该如何面试?
面试的时候,不知道你会不会有这几个感觉?
我在上篇文章讲到,软件设计应该为需求变更而设计,应该能够灵活、快速地满足需求变更的要求。优秀的程序员也应该欢迎需求变更,因为持续的需求变更意味着自己开发的软件保持活力,同时也意味着自己为需求变更而进行的设计有了用武之地,这样的话,技术和业务都进入了良性循环。
在学习编解码章节的过程中,我们看到 Netty 大量使用了自己实现的 ByteBuf 工具类,ByteBuf 是 Netty 的数据容器,所有网络通信中字节流的传输都是通过 ByteBuf 完成的。然而 JDK NIO 包中已经提供了类似的 ByteBuffer 类,为什么 Netty 还要去重复造轮子呢?本节课我会详细地讲解 ByteBuf。
在上一讲,我们深入分析了MyBatis 初始化过程中对 mybatis-config.xml 全局配置文件的解析,详细介绍了其中每个标签的解析流程以及涉及的经典设计模式——构造者模式。这一讲我们就紧接着上一讲的内容,继续介绍 MyBatis 初始化流程,重点介绍Mapper.xml 配置文件的解析以及 SQL 语句的处理逻辑。
上一讲,我们介绍了事务的基本概念和数据库恢复流程,其中涉及了事务持久性是如何保证的,那么这一讲,我们就重点介绍事务的隔离性。
数据库最强的隔离级别是序列化,它保证从事务的角度看自己是独占了所有资源的。但序列化性能较差,因此我们引入了多种隔离界别来提高性能。在本讲的最后我会介绍分布式数据库中常用的并发控制手段,它们是实现隔离级别的有效方案,其中以多版本方式实现快照隔离最为常见。
前两个课时,我们重点围绕 SkyWalking 进行了原理解析。讲完了 SkyWalking,接下来我们就进入 Sentinel。
这一讲开始,我将用两个课时围绕 Sentinel 的技术骨架展开,来带你学习它的原理。今天我们先学习 APM 系统的无侵入实现的通用设计,以及 Sentinel 的资源节点树实现原理。
回溯算法本质上是一种 DFS 算法,在一些小的数据集上能够找到最优解。因此,遇到穷举所有路径的问题时,就需要用到回溯。比如,在一些外卖派单系统中,大数据系统给骑手派单,在某个单位时间内累积的订单总是有限的,此时就可以利用回溯算法求解最优派送时间。
你好,我是周爱民。欢迎你回到我的专栏。
如果你听过上一讲,那么你应该知道,接下来我要与你聊的是 JavaScript 的面向对象系统。
最早期的 JavaScript 只有一个非常非常弱的对象系统。我用过 JavaScript 1.0,甚至可能还是最早尝试用它在浏览器中写代码的一批程序员,我也寻找和收集过早期的 CEniv 和 ScriptEase,只为了探究它最早的语言特性与 JavaScript 之间的相似之处。
你好,我是鸟窝。
前面我们在学习 Mutex、RWMutex 等并发原语的实现时,你可以看到,最底层是通过 atomic 包中的一些原子操作来实现的。当时,为了让你的注意力集中在这些原语的功能实现上,我并没有展开介绍这些原子操作是干什么用的。
你好,我是胡夕。上节课,我们深入研究了 ControllerContext.scala 源码文件,掌握了 Kafka 集群定义的重要元数据。今天,我们来学习下 Controller 是如何给其他 Broker 发送请求的。
掌握了这部分实现原理,你就能更好地了解 Controller 究竟是如何与集群 Broker 进行交互,从而实现管理集群元数据的功能的。而且,阅读这部分源码,还能帮你定位和解决线上问题。我先跟你分享一个真实的案例。