16_Java_JIT编译器(四):Graal的后端是如何工作的?
你好,我是宫文学。
前面两讲中,我介绍了 Sea of Nodes 类型的 HIR,以及基于 HIR 的各种分析处理,这可以看做是编译器的中端。
可编译器最终还是要生成机器码的。那么,这个过程是怎么实现的呢?与硬件架构相关的 LIR 是什么样子的呢?指令选择是怎么做的呢?
你好,我是宫文学。
前面两讲中,我介绍了 Sea of Nodes 类型的 HIR,以及基于 HIR 的各种分析处理,这可以看做是编译器的中端。
可编译器最终还是要生成机器码的。那么,这个过程是怎么实现的呢?与硬件架构相关的 LIR 是什么样子的呢?指令选择是怎么做的呢?
回顾之前讲的内容,原理篇重在建立直观理解,帮你建立信心,这是第一轮的认知迭代。应用篇帮你涉足应用领域,在解决领域问题时发挥编译技术的威力,积累运用编译技术的一手经验,也启发你用编译技术去解决更多的领域问题,这是第二轮的认知迭代。而为时三节课的算法篇将你是第三轮的认知迭代。
15 | Nio2Endpoint组件:Tomcat如何实现异步I/O?
我在专栏上一期里提到了 5 种 I/O 模型,相应的,Java 提供了 BIO、NIO 和 NIO.2 这些 API 来实现这些 I/O 模型。BIO 是我们最熟悉的同步阻塞,NIO 是同步非阻塞,那 NIO.2 又是什么呢?NIO 已经足够好了,为什么还要 NIO.2 呢?
15 | Python对象的比较、拷贝
你好,我是景霄。
在前面的学习中,我们其实已经接触到了很多 Python 对象比较和复制的例子,比如下面这个,判断 a 和 b 是否相等的 if 语句:
你好,我是蔡元楠。
今天我要与你分享的内容是“Spark Streaming”。
通过上一讲的内容,我们深入了解了 Spark SQL API。通过它,我们可以像查询关系型数据库一样查询 Spark 的数据,并且对原生数据做相应的转换和动作。
在上一篇文章中我向你介绍了 WebRTC 可以获得哪些统计信息,以及如何使用 RTCPeerConntction 对象的 getStats 方法获取想要的统计信息。
那本文我们在上一篇文章的基础之上,继续对 WebRTC 中的统计信息做进一步的讨论,了解它更为详细的内容。
现在你已经非常清楚,通过 RTCPeerConnection 对象的 getStats 方法可以很轻松地获取到各种统计信息,比如发了多少包、收了多少包、丢了多少包,等等。但实际上对于收发包这块儿的统计还可以从其他方法获取到,即通过 RTCRtpSender 的 getStats 方法和 RTCRtpReceiver 的 getStats 方法也能获取收发包的统计信息。
你可能还记得,我们在讲 HDFS 和 HBase 架构分析时都提到了 ZooKeeper。在分布式系统里的多台服务器要对数据状态达成一致,其实是一件很有难度和挑战的事情,因为服务器集群环境的软硬件故障随时会发生,多台服务器对一个数据的记录保持一致,需要一些技巧和设计。
15 | 编写规范代码的检查清单
通过前面十几讲的学习,我们已经把代码“规范”篇的内容学习完了。今天,我们一起把前面讨论到的观点总结一下,并探索一下编写规范代码时的最佳实践检查清单。一份有效的检查清单,可以帮助我们记忆、遵循和执行代码的一系列规范。
15 | 产品案例分析:Mimo与Learn Python的导学之趣
Mimo 和 Learn Python 是两款针对基础 IT 教育的应用。
教育类的应用是最难做的应用类型之一,尤其是需要学习者自我驱动的教育类应用更是难上加难,在 IT 这种实践性非常强的领域内,除了要基于用户或者说学习者自我的驱动力之外,还需要产品的设计者给出足够循循善诱的学习计划。除此之外,设计者还需要在学习者使用的过程中,随时观察他的状态、设计复杂的成就系统,给予他恰如其分的鼓励。
15 | 答辩技巧:回答评委提问有哪些技巧?
你好,我是华仔。
面评主要分为三个环节,准备、自述和答辩。前三讲我已经介绍了准备环节写 PPT 的技巧,以及自述环节讲 PPT 的技巧,这一讲我接着来介绍答辩环节回答评委提问的技巧。