架构师 架构师之路

Java 并发编程之美:线程相关的基础知识

  |   0 评论   |   154 浏览

借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了;相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的。

并发编程相比 Java 中其他知识点学习起来门槛相对较高,学习起来比较费劲,从而导致很多人望而却步;而无论是职场面试和高并发高流量的系统的实现却都还离不开并发编程,从而导致能够真正掌握并发编程的人才成为市场比较迫切需求的。

作为 Java 并发编程之美系列的开篇,首先通过通俗易懂的方式先来和大家聊聊多线程并发编程线程有关基础知识(本文结合示例进行讲解,定会让你耳目一新),具体内容如下:

Java 并发编程之美:并发编程基础晋级篇

  |   0 评论   |   211 浏览

本章主要介绍了并发编程的基础知识,为后面高级篇讲解并发包源码提供了基础,通过图形结合讲述了为什么要使用多线程编程,多线程编程存在的线程安全问题,以及什么是内存可见性问题。然后讲解了 synchronized 和 volatile 关键字,并且强调了前者既保证了内存可见性同时也保证了原子性,而后者则主要做到了内存可见性,但是它们的内存语义还是很相似的,最后讲解的什么是 CAS 和线程间同步以及各种锁的概念,都为后面讲解 JUC 包源码奠定了基础。

Spring Boot 工程化最佳实践

  |   0 评论   |   278 浏览

Spring Boot 已经成为 Java 后端事实上的标准开发框架,目前已经演进到了 2.1.5 版本。在项目开发过程中,也逐渐形成了一些公认的不错的做法或者规范,本文试图将其沉淀总结为最佳实践,供后来人学习和使用。这些实践包含实际项目开发中的方方面面,包含但不限于工程实践、技术细节、规范流程、技术选型等,希望能让读者少走弯路,同时能在团队中形成相对统一的规范与实践,减少不同项目之间切换的学习成本。

适合人群:Java 后端开发人员、架构师、技术管理者。

带你全面了解高级 Java 面试中需要掌握的 JVM

  |   0 评论   |   155 浏览

如果在大学里学过或者在工作中使用过 C 或者 C++ 的读者一定会发现这两门语言的内存管理机制与 Java 的不同。在使用 C 或者 C++ 编程时,程序员需要手动的去管理和维护内存,就是说需要手动的清除那些不需要的对象,否则就会出现内存泄漏与内存溢出的问题。

如果你使用 Java 语言去开发,你就会发现大多数情况下你不用去关心无用对象的回收与内存的管理,因为这一切 JVM 虚拟机已经帮我们做好了。了解 JVM 内存的各个区域将有助于我们深入了解它的管理机制,避免出现内存相关的问题和高效的解决问题。

50 | 架构实战:架构设计文档模板

  |   0 评论   |   248 浏览

在前面的专栏里,有同学留言说想看看具体的架构设计文档。由于信息安全的原因,再加上稍微复杂的系统,设计文档都是几十页,因此专栏无法直接给出详细的文档案例。但我认为提供一个架构设计文档模板还是很有必要的,可以方便你在实际进行架构设计的时候更好地编写相关文档。我还以前面讲过的“前浪微博”消息队列为例,给出架构设计中最重要的两个文档的模板和关键说明。这个案例文档仅给出一些关键内容供你参考,部分细节无法全面覆盖或者完全保证正确。

49 | 谈谈App架构的演进

  |   0 评论   |   258 浏览

专栏截止到上一期,架构设计相关的理念、技术、实践已经基本讲完,相信你一路学习过来会有一种感觉,这些内容主要都是讲后端系统的架构设计,例如存储高可用、微服务、异地多活等,都是后端系统才会涉及。事实上确实也是如此,通常情况下我们讲架构设计,主要聚焦在后端系统,但这并不意味着App、前端就没有架构设计了,专栏所讲述的整套架构设计理念,虽然是来源于我的后端设计经验,但一旦形成完善的技术理论后,同样适应于App和前端。

44 | 互联网架构模板:“平台”技术

  |   0 评论   |   280 浏览

当业务规模比较小、系统复杂度不高时,运维、测试、数据分析、管理等支撑功能主要由各系统或者团队独立完成。随着业务规模越来越大,系统复杂度越来越高,子系统数量越来越多,如果继续采取各自为政的方式来实现这些支撑功能,会发现重复工作非常多。因此我们自然而然就会想到将这些支撑功能做成平台,避免重复造轮子,减少不规范带来的沟通和协作成本。

今天,我就来聊聊互联网架构模板的“平台”技术。由于每个平台本身都是一个庞大的体系,专栏只是介绍一下平台的核心职责和关键设计点,具体细节就不详细展开了。