Code Monkey home page Code Monkey logo

javabook-base's Introduction

这是《Java深度探索:开发基础、高级技术与工程实践》的第一篇《开发基础篇》的配套源代码。

《开发基础篇》包括第1章编程常识,第2章Java关键特性,第3章多线程,第4章JVM GC,第5章函数式编程,第6章反应式编程,第7章Java协程,共七章。

  • 第1章讲解了开发人员应该掌握的计算机编程常识的最小集合,包括冯诺依曼架构、二进制的内涵、算法与数据结构、同步异步和回调、并行与并发、缓冲与缓存、http与https、国际化与本地化等。这些看似简单的常识与具体编程语言和工作性质无关,但对于提高自身的技术素养并向更高层次迈进,却是不可或缺的。

  • 第2章讲解了Java中的关键特性,包括数据类型、抽象类和接口、泛型、注解、反射和代理。目前大多数主流的开源开发框架,如Spring中所使用的主要技术,无非就是这几个Java特性的组合而已。在彻底理解它们的基础之上,再去阅读那些优秀开源项目的源码时,才会真正吃透作者的设计**和实现思路。

  • 第3章从多线程生命周期的厘清开始,一直讲到JUC(java.util.concurrent,Java并发工具包),为读者详细梳理了一番作为Java“镇教之宝”的多线程。对于大多数工程师来说,多线程既难于理解掌握,又是面试官最爱问的杀手锏问题。笔者在此深入浅出,带着读者领略多线程别样的魅力。

  • 第4章通过一步一图的方式,将JVM的设计理念、分代模型、触发机制、日志分析以及各种不同的垃圾回收方式向读者娓娓道来。和多线程一样,JVM也是Java中比较晦涩难懂的存在。笔者结合自身实际开发和调优经验,通过一个个鲜活的案例和代码,让读者对JVM越学越上瘾,越学越忍不住跃跃欲试。

  • 第5章讲解了首次在Java 8中发布的函数式编程范式。由于Lambda表达式“怪异”的语法让诸多新手感觉不适应,故而笔者从它产生的源头开始讲起,到如何平滑地过渡到习惯使用Lambda表达式和函数式接口,直至它如何与“流”及流式计算相配合,完美地解决以往开发工作中面临的诸多的“小麻烦”。

  • 第6章介绍了Java的反应式编程范式。作为一种“另类”的编程方式,它不仅全盘继承了函数式编程的全部特性,而且又融入了发布-订阅的观察者模式、变动传递、背压、异步边界等诸多新特性。由于它天然的异步特性,因此非常适合用于构建分布式、高响应度的应用服务后台,以及在不牺牲性能的前提下处理大量且异步的实时数据流,例如社交应用。

  • 第7章讲解了Java中最新的协程技术。它最早随着JDK 19在JEP 425中作为预览版发布,称为Virtual Threads虚拟线程,最终JDK 21将其在JEP 444中正式确定下来。虚拟线程,即协程作为实际物理线程的映射,突破了操作系统物理线程数量的限制,而且由JDK完全控制。这样既避免了上下文切换的额外损耗,兼顾了多线程的优点,又能显著地提高应用程序的吞吐量。

另外:在第6章反应式编程中,我在Spring WebFlux实例代码里集成了“MMR”(MySQL + MongoDB + Redis),基本上90%以上的开发需求都可以满足了,这可以作为一个微服务架构的核心代码,也可以在此基础上集成并加入更多的业务功能,最终把它变成自己的反应式编程框架。

javabook-base's People

Contributors

xiangwang9527 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.