大纲 1 模块分包原则2 框架扩展原则3 领域划分原则4 接口分离原则5 组件协作原则6 功能演进原则 我将对每个原则进行自己的解读,如有不对,还请指教 :) 1 模块分包原则  ...
阅读(9) 评论(0)
前言 本文主要是写给那些想从事中间件开发的同学看的 :) 如果你没有这个打算,那么本文的学习路线非但不实用,还可能会影响你正常的工作 :) 什么是中间件开发? 随着国内软件行业的发展,国内互联网公司规模越来越大,业务越来越复杂,随之使用...
阅读(11) 评论(0)
前言 由于 Cglib 本身的设计,无法实现在 Proxy 外面再包装一层 Proxy(JDK Proxy 可以),通常会报如下错误: Caused by: java.lang.ClassFormatError: Duplicate...
阅读(15) 评论(0)
目录: 前言 处理方案 简单例子 前言 有的时候,你可能需要在 Spring 环境中放入一些配置,但这些配置无法写死在配置文件中,只能运行时放入。那么,这个时候该怎么办呢? Apollo 就是搞配置的,那么自然会遇到这个问题,他是如...
阅读(32) 评论(0)
前言 之前聊了客户端的一些功能,例如融入 Spring, @value 注解的自动刷新实现,长轮询等,这次从客户端的整体设计来聊聊。 设计 上图是 client 项目的包结构。 其中,核心包就是 internals 包,包含了客户端的...
阅读(31) 评论(0)
前言 如上图所示,Apollo portal 更新配置后,进行轮询的客户端获取更新通知,然后再调用接口获取最新配置。不仅仅只有轮询,还有定时更新(默认 5 分钟一次)。目的就是让客户端能够稳定的获取到最新的配置。 一起来看看他的设计。...
阅读(23) 评论(0)
前言 Spring 作为 Java 世界非官方标准框架,任何一个中间件想要得到良好的发展,必须完美支持 Spring 的各种特性,即:无缝融入 Spring。 Apollo 作为分布式配置中心,服务于 Java 应用程序,Java 应用...
阅读(51) 评论(0)
前言 熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen-before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。 按照官方的说法: 当一...
阅读(49) 评论(0)
前言 楼主今天在面经上看到这个题,挺有意思,小小的题目对多线程的考量还挺多。大部分同学都会使用 synchronized 来实现。楼主今天带来另外两种优化实现,让你面试的时候,傲视群雄! 第一种 synchronized class T...
阅读(33) 评论(0)
前言 楼主离职已有 10 天,这段时间里除了看源码,就是投简历面试了。一共面试了 4 家,说说感受。 XX 汇 XX 汇是一家小型的电商网站,由于楼主的技术栈集中在 Java 语言这里,所以,即使楼主对并发,JVM,Netty,Spri...
阅读(49) 评论(0)
# 前言 对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的。各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题。楼主同样也遇到过这些问题,那么,遇到这些问题该如何解决呢? 首先,出现问题,肯定...
阅读(31) 评论(0)
前言 SOFARPC 提供了多种调用方式满足不同的场景。 例如,同步阻塞调用;异步 future 调用,Callback 回调调用,Oneway 调用。 每种调用模式都有对应的场景。类似于单进程中的调用模式。在单进程中,我们可以使用...
阅读(36) 评论(0)