架构
文章平均质量分 89
Ch.yang
try{ coding } catch { bug }
展开
-
【消息队列】RocketMQ 官网学习及理解胶水代码
前段时间看到项目在用 @Cacheable 注解,来自于 Spring intergation。Spring intergratoin 的项目灵感来自于 《企业集成模式——设计、构建及部署消息传递解决方案》。这本书提到的胶水代码、消息总线的系统集成方案都在RocketMQ 官网有描述 ,感觉写的挺好的。本文提供一个含有胶水代码的示例,理解下消除胶水代码的成本,及 EvenBridge 模式 的优点。代码仓库。原创 2023-01-17 23:25:06 · 600 阅读 · 0 评论 -
【Log4j2】开发环境配置日志策略打印完整MyBatis语句到文件
公司项目用的 Spring Boot,选用的是 Log4j2 作为日志实现,本地开发的时候没有把sql语句打印到文件中,并且控制台输出的sql需要自己拼接,看了log4j2官网后整理了个日志文件demo实现自己的需求。Logback作为 Spring Boot自动装配的默认实现,所以选用Log4j2 记得要排除掉默认依赖。原创 2022-11-17 21:42:56 · 2033 阅读 · 0 评论 -
【Logback】开发环境怎么组织xml文件构建日志策略
思路:官网学习,官网有大量的配置例子,并且都会给出解释需要前置知识:了解 Spring Boot 的依赖结构、门面模式最好了解:Spring MVC 的工作原理,可以类比理解slf4j学习demo放到文末了(github)原创 2022-11-13 11:55:35 · 359 阅读 · 0 评论 -
【阅读笔记】理解表驱动设计
代码大全2 中单独罗列了一章描述表驱动法,旨在告诉读者,面对复杂的多分支结构(if 或者是 case),可以想着使用表驱动法实现或者改造。面向对象的多态也是用来改善多 if 或者多 case的代码结构。诚然,多if 或者多 case的代码并非十恶不赦,但是也需要看到多态实现和表驱动实现的好处,用于评估改造的成本和收益。工作中曾经也用过类似的思想,这里记录下来。存在多分支结构// 判断一个月有多少天 if(month = 1) {}嵌套 if 结构,用于支撑复杂逻辑if(女性) {if(单身) {原创 2022-11-06 20:41:00 · 433 阅读 · 0 评论 -
【高并发基础】Cache Aside 缓存模式背后的思想
凤凰架构》一书中介绍了一种缓存实现方式 —— Cache Aside。大部分业务开发,不需要缓存与数据库的强一致性,Cache Aside 应该是首选方案。下文根据书中的内容进行整理及理解。文末会给出 Cache Aside 模式的应用。原创 2022-10-27 00:09:57 · 712 阅读 · 0 评论 -
【架构】评分较高的三本微服务书籍的阅读笔记
凤凰架构》《微服务设计模式》《微服务实战(第二版)》《数据密集型应用系统设计》《网络是怎样连接的》《计算机网络》从宏观上看,微服务都是重构出来的,所有作者都不建议一上来就把项目搭建成微服务。这种基于重构来搭建微服务的指导思想是要明确知道微服务解决单体的缺点时,同时也引入了风险和挑战,当微服务的风险和挑战大于单体架构时请谨慎。当微服务的收益大于单体架构时,需要遵循一些设计原则甚至是必备的组件。。............原创 2022-07-23 17:10:56 · 2040 阅读 · 0 评论 -
【安全】 阅读 RFC6749 及理解 Oauth2.0 下的授权码模式
规范来自 RFC6749。看了《Spring 微服务实战》对OAuth 2.0 的介绍后还是觉得存在一些翻译的问题。现在结合一起重新梳理下。RFC6749 定义 OAuth 2.0 目前只建立在HTTP协议上。并多次提到可以交给浏览器扮演,授权码模式十分适合有独立服务器的Web 服务器。从 来看从 的角度看从行业规范看拉文档里的图,现在把当作浏览器4.1. 用户委托浏览器,向微信发起身份验证的GET请求Note: 并没有规范黑色线的具体实现,但是规定了红色线提交参数的具体要求4.2. 微信确认身份原创 2022-07-08 15:00:01 · 2289 阅读 · 0 评论 -
【Spring】借Spring MVC实现透明鉴权
开发业务代码的时候,不用关心请求自己接口的用户是否合法。鉴权的工作交给架构中的公共代码,自己仅专心于业务实现。1.2. 有什么好处?践行 “单一职责” 原则。鉴权与授权都应该是安全模块的内容,当单体架构膨胀到一定程度后,考虑重构为微服务时,安全模块可拔插的特点就有优势了。细粒度控制依旧在业务层EG: 删除客户资源,要取登录人的信息确保是本人删除 的技术抉择EG: 用来存储上下文中用户实体,避免User参数层层传递,但是在线程池环境下,很容易出问题。 默认隔离,要修改成才能避免 污染。授权与鉴权原创 2022-07-04 17:37:51 · 347 阅读 · 0 评论 -
【架构】为什么需要主从复制与分片
前言《数据密集型应用系统设计》这本书花了大章节讨论分布式所存在的坑及解决方案,并放大了分布式系统中产生的原创 2022-03-19 15:06:37 · 3504 阅读 · 0 评论 -
【Java】Java8特性官网学习之Stream的前世今生
前言最近看了《数据密集型应用系统设计》,间断介绍了命令式语言和声明式语言的区别介绍了UNIX的 设计哲学MapReduce编程框架数据流引擎函数运算符(函数式编程)能发现Java8 Stream的语法都有上述内容的影子,本文旨在了解了流式编程技术发展和迭代关系,把零散的信息整合成网状信息,加深对Java8 Stream的理解。1. 命令式语言和声明式语言命令式语言 public static List<String> getSharks(List<String&原创 2022-03-13 19:16:15 · 1376 阅读 · 0 评论 -
【Spring】著作阅读笔记——Spring MVC核心技术
《Spring 揭秘》是一本09年出版的书,当时还在流行,作者大胆预言有着更广阔的发展前途,并且建议新的项目采用进行开发。现在回过头来看,当年的之于就如现今的 之于 。当年作者熟练掌握了才悟得的好,那么如今在进入的探索前,还需要夯实的基础。短时间内还是很能打的,看完书后,慢慢能体会其架构上的设计哲学。框架上使用的设计模式,虽简洁但有效。 有着三个角色保存Spring IOC中注册的 和 客户端请求的映射关系,一般的key为url, 编程中这个key常常使用 进行声明 的包装类。看到了包装逻辑有A原创 2022-02-17 20:20:58 · 384 阅读 · 0 评论 -
【微服务】maven聚合及继承关系在spring cloud项目中的原理及应用
1. 前言1.1 maven官网1.2 本文需要解释清楚的知识点maven的聚合和继承是两个不同的特性(官网的说法),看懂spring cloud项目需要同时掌握聚合和继承的概念与设计模式中的基本概念一脉相承,以下用java类比弄清楚 <dependencyManagement>中的 <dependencies> 和 普通 <dependencies> 的区别1.3 需要的前置知识了解maven 的独立安装及配置了解maven 生命周期了解mave原创 2022-01-12 20:57:04 · 1078 阅读 · 0 评论 -
【Spring】著作阅读笔记——IOC思想及工厂模式
前言琢磨了一段时间整合Spring Security ,及Spring Security的使用,处于能搭出来却毫无安全感的情况。归根到底还是对spring 框架的核心思想缺乏体系化的理解。在豆瓣书籍中找到了评分高达9.1的《spring揭秘》,这本书09年出版,现已绝版,用到的spring 版本最多仅到2.5,虽然时间久远,但是Spring Security彼时已经在spring大家族中。如果用发展的眼光理解框架,我认为无论是spring boot的自动装配还是spring cloud的整合,了解spri原创 2022-02-03 16:47:53 · 859 阅读 · 0 评论 -
【Spring】著作阅读笔记——ApplicationContext的统一资源管理
前言Spring的出现,把Java net包下的URL的资源类型做了扩展。明确了资源的定位及表示的边界。解耦了资源的定位和表示,以下将整理Spring为统一资源管理做出的努力。(文末给出获取bean的工具类,得益于Spring对资源的重新设计。Java 对URL的狭义解释广义的URL解释 ,大意为:因特网上访问某一资源的唯一标志:形如<方案>:<方案描述部分>,以下都为URL的表示http://www.baidu.comfile://SD/packet.xmlthun原创 2022-02-07 13:51:30 · 469 阅读 · 0 评论 -
【Spring】著作阅读笔记——ORM的诞生及Spring的集成
前言回顾曾经约定俗成的开发规则,DAO模式 —— Oracle 官网介绍的开发标准(浏览即可)什么是JDBCJDBC的缺陷ORM的诞生Spring集成ORM做的努力1. JDBC1.1 什么是JDBC以下内容整理至百度JDBC (Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中)具体的规范有:DriverMa原创 2022-02-11 22:42:14 · 751 阅读 · 0 评论 -
【Spring】著作阅读笔记——事务传播行为
前言前段时间整理了数据库事务相关的内容,事务传播行为就是程序对事务的编排。事务传播行为在工作上的使用很重要,曾经在线上环境因为开启了大事务并嵌套小事务造成了死锁问题,现借《Spring 揭秘》整理以下具体知识和使用场景。声明式事务已经非常流行了,在声明的注解上即可指定传播行为。1. 事务为什么会传播?1.1 DAO模式DAO模式的出现,从官网摘了几句话,希望能概括DAO模式具体提供了什么思路:The DAO implements the access mechanism required to原创 2022-02-15 21:23:12 · 336 阅读 · 0 评论