glmapper

glmapper

从程序的世界中全身而退

聊一聊 BeanPostProcessor 不生效
关于 BeanPostProcessor 各位一定不陌生,在 SpringBoot 源码系列-Bean 的生命周期与扩展 这篇文章中,我有介绍过 bean 的创建流程及相关扩展,就有提到 BeanPostProcessor,包括它的作用时机及如何使用,这篇文章提到的这种属于比较常规的流程,因此在绝大多数场景下,都是符合我们认知的。但是最近在排查一个问题时,发现在某些场景下,BeanPostProcessor 不生效了… 问题描述 代码详见:extention-FactoryBean; clone 之后可以直接运行 DemoApplication 即可,可以观察到 控制台不输出 Glmap...
什么是中台?
本文来自 PoemByte 公众号,作者 kayzhao 没有XX台的时代 - 烟囱式的架构​ 在传统IT企业,项目的架构是什么样的呢?无论项目内部的如何复杂,都可简化分为“前台”和“后台”两部分,也就是垂直的烟囱式架构(业内人士把见招拆招、垂直化发展、未做足够抽象通用的架构称之为烟囱型架构)。什么是前台?所谓前台即包括各种和消费者用户直接交互的界面业务功能,比如web页面(PC端),手机app(无线端或移动端)。什么是后台?后台是面向运营人员的配置管理系统,比如商品管理、物流管理、结算管理。后台为前台提供业务管理等。前台、后台、用户之间的关系,可以用下图简单表示: ...
ClassLoader 类加载-type checking 对类加载的影响
Type CheckingType Checking (类型检测) 的作用是分析程序在编译或者运行期间,其类型表达是否一致的一个过程。举个例子:如果一个变量被声明为 int 类型,那么他就不能被赋值为实际的值(或者字符串类型、或者其他任何类型)。java 语言的类型检测分为两种: 静态类型检测(static checking): 问题在程序运行之前被自动找到,也就是在编译阶段完成的检查。静态类型检测更多的是关注在”类型“上。 动态类型检测(dynamic checking): 问题在运行期间被检测,动态运行检测关注的是在”值“上。 本文主要介绍静态类型检测。java 语言在编译时会做...
【译】微服务(microservices)
原文链接:https://martinfowler.com/articles/microservices.html 目录 微服务体系结构的特征 通过服务拆分实现组件化 围绕业务功能进行组织 产品不是项目 智能端点和轻量级通信 分散治理 分散的数据管理 基础设施自动化 容错设计 演进式设计 微服务是未来的趋势吗? Sidebars-扩展 微服务有多大? Microservices和SOA 多种语言,多种选择 经过实战检验的标准和强制执行的标准 让做正确的事情变得容易 断路器和可随时上线的代码 同步调用的弊端 术语 术语原词 释义 Microservice Archite...
SpringBoot 实践系列-集成 RocketMQ
RocketMQ 简介:Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可伸缩性。它提供了多种功能,具体参考: https://github.com/apache/rocketmq 。 RocketMQ 快速开始官方指导手册快速开始中提到,RocketMQ 安装需要具体以下条件: 64bit OS, 推荐使用 Linux/Unix/Mac 64bit JDK 1.8+ Maven 3.2.x 4g+ free disk for Broker server (这个需要特别关注下) 下载安装和编译12345wget http...
解决方案系列-基于 SOFAArk 实现应用的动态装载和卸载
本篇主要来看下蚂蚁金服开源的 SOFAArk 这个产品。SOFAArk 是一款基于 Java 实现的轻量级类隔离容器,主要提供类隔离和应用(模块)合并部署能力;本文主要基于 telnet 指令的方式进行应用 Biz 的装载和卸载操作。去年在上海 KubeCon 大会上有分享过 《SOFABoot 动态模块实践》,主要是通过 SOFADashboard 来下发指令的,基于 SOFABoot 3.1.4 和 SOFAArk 0.6.0 版本;目前 SOFABoot 已经发布到 3.3.x+ ,SOFAARK 1.1.1 版本,其中 ,SOFAARK 提供了很多新的特性,包括全生命周期的事件机...
解决方案系列-集群选主(基于DB)
一个业务量很小的系统,所有的代码都放在一个项目中,部署在一台服务器上。所有的服务都由这台服务器提供,这就是常说的单机模式;我们知道单机模式的缺点是:1、处理能力有限,2、存在单点问题。单机模式大致如下图所示: 为了解决这些问题,出现了集群模式。 常见的集群模式方案集群主要的使用场景就是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求。集群主要是通过加机器来解决问题,对于问题本身是不会做任何分解的。(PS:分解了就是分布式)。那么常见的集群模式有哪几种呢? 主备,冷备模式,主写主读所有的写请求都由 master 负责处理,如果请求打在 slave 上,则 sl...
聊一聊 CopyOnWriteArraySet 的迭代删除
上周在工程中涉及到一个清理 Set 集合的操作,将满足设定条件的项从 Set 中删除掉。简化版本代码如下: 123456789101112public static void main(String[] args) { Set<String> sets = new CopyOnWriteArraySet<>(); sets.add("1"); sets.add("3"); sets.add("3"); sets.add("4"); Iterator<String> iterator = sets.itera...
SpringBoot 实践系列-Filter 中的异常处理和 Controller 中的异常处理
本篇主要是记录如何使用 SpringBoot 所提供的 ErrorController 这个接口能力;其内置了一个 BasicErrorController 对异常进行统一的处理,当在 Controller 发生异常的时候会自动把请求 forward 到 /error 这个请求 path 下(/error 是 SpringBoot 提供的一个默认的mapping)。BasicErrorController 提供两种返回错误:1、页面返回;2、json 返回。 背景开发中遇到的一个问题:项目中所有的 rest 请求均是通过 json 形式返回,且自定义了一个统一的数据结构对象,如下: 12...
菜鸟成长系列-适配器模式
本文为阅读 《JAVA与模式》的个人笔记,文中相关概念及背景描述参考书本。如有不当,请联系指正。 定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配为无法在一起工作的两个类能够在一起工作 -《JAVA与模式》 适配、包装、转换几个字眼从汉字的字面意思来说是不同的,不同在于这几个词所对应的行为不同;但是他们所期望的目的是差不多一致的,就是将不可用变成可用。所以常说的适配器模式、转换器模式以及包装模式指的都是一个模式。 适配器模式的两种形式在 java 语言体系中,根据适配类型的不同。适配器模式可以分为:类的适配器模式和对象的适配器模式。 类的适配器模式...
avatar
Glmapper@leishu
分享与学习