自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hhaip

风青杨

  • 博客(50)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 设计原则&设计模式

导论什么是设计原则:判断程序设计质量好坏的准则。什么是设计模式:软件设计过程中重复出现问题的解决方案设计原则的作用:指导抽象、类、类关系设计,相当于指导设计程序基础框架(Rank-分层、Role-角色、Relation-类关系)设计模式的作用:知道对象关系设计如何运用设计原则和设计模式设计原则内聚定义:模块内部元素彼此结合的紧密程度。(模块内部元素的关联性大小)模块:服务、模块、包、类/接口元素:业务模块(服务)、包/命名空间(模块)、类/接口/全局数据(包)、属性/方法(类/接口

2022-01-04 11:14:09 498

原创 《微服务架构设计模式》之外部API模式

文章目录导读外部API设计微服务架构下请求服务弊端API Gateway功能API Gateway实现集中式所有者模式后端前置模式设计难题实现API Gateway云产品服务已有成熟产品自主开发总结导读设计能够支持多种客户端的API挑战使用API Gateway模式和后端访问模式设计和实现API Gateway使用响应式编程简化API组合外部API设计外部API:暴露给客户端的API接口外部API客户端JavaScript程序、移动APP应用、第三方应用微服务架构下请求

2021-09-29 13:52:34 690

原创 《微服务架构设计模式》之在微服务架构中实现查询

文章目录学习目标单服务查询挑战微服务查询的挑战性微服务查询挑战解决方案API组合模式CQRS设计CQRS预聚合 + 数据同步引入的新挑战学习目标跨多个微服务数据查询挑战API组合模式CQRSAPI组合模式和CQRS对比单服务查询挑战拥有数据的服务不适合查询如:外卖平台查询附近一定距离内的餐馆接口,该接口由订单团队维护,而不是由餐馆服务团队维护。隔离问题,避免过多职责导致服务过载(分析业务的问题域,正确设计业务归属服务)服务的数据库或者数据模型不能提供有效查询如:坤同交易数据

2021-09-04 11:59:42 700

原创 《微服务架构设计模式》之进程间通信

文章目录微服务架构进程间通信概述交互方式微服务架构中定义APIAPI优先设计API的演化语义化版本控制消息格式基于同步远程过程调用模式的通信使用REST使用断路器模式处理局部故障开发可靠的远程过程调用代理从服务时效故障中恢复服务注册发现应用层服务发现模式平台层服务发现模式基于异步消息的通信关于消息消息通道消息代理无代理消息有代理消息使用消息代理实现消息通道处理并发和消息顺序处理重复消息事务性消息使用异步消息提高可用性总结微服务架构进程间通信概述进程间的通信本质是交换消息交互方式第一个维度:一对一

2021-07-30 16:05:44 344

原创 《微服务架构设计模式》之服务拆分策略

文章目录微服务架构到底是什么软件架构架构风格为应用程序定义微服务架构识别系统操作创建抽象领域模型定义系统操作微服务拆分根据业务能力进行服务拆分根据子域进行服务拆分拆分指导原则拆分单体应用为服务的难点定义服务API总结微服务架构到底是什么软件架构软件架构是什么定义:软件架构由一组元素(组件)和元素之间的关系构成。架构意义:它让软件开发更加高效,同时软件具有较好的可测性、可部署性、可扩展性、可维护性,而这些都属于软件的质量属性,因此架构可让软件质量更好。卡耐基梅隆大学工程研究所Len Bas...

2021-06-24 21:36:19 577 2

原创 软件后台《积分制 / 绩效考核表》管理制度

文章目录目标积分制奖励积分榜惩罚积分榜总积分榜惩奖事项奖励事项惩罚事项评委积分调整目标严格执行代码规范、开发规范,禁止开发人员风格不一强化团队协作和增强团队沟通提升团队技术水平,进而提升开发效率和软件质量提升团队的创新能力增强团队成员责任意识、提升使命感全力以赴为客户服务使命感、创新、全力以赴积分制每人初始分数50分奖励积分榜姓名日期事项事项结果分数打分人XXXX2021-06-10KAFKA技术分享全员对kafka技术理解更加深刻5黄海

2021-06-11 09:01:51 1078

原创 《微服务架构设计模式》之逃离单体地狱

文章目录六边形架构单体地狱单体应用带来的问题拯救之道:微服务架构扩展立方体模型微服务和SOA的区别微服务架构好处微服务架构弊端模式和模式语言模式三个重要组成模式分组微服务之上:流程和组织架构流程组织关系逆向的康威定律持续交付和持续部署(DevOps)持续交付软件开发四个有用评估指标持续交付和持续部署为业务带来的价值成熟的自动交付持续部署技术总结六边形架构单体地狱单体项目随着业务发展,代码越来越膨胀,单体项目规模越来越大,参与团队人员越来越多,沟通成本也随之不断增高,耦合性复杂性越来越强。不利于维护、

2021-05-26 20:57:45 267 2

原创 微服务的数据聚合Join

文章目录单库join分布式微服务聚合joinCQRSDenormalize + Materialize the ViewCQRS模式CQRS和最终一致性CQRS和UI(前端)更新策略架构2005 VS 2016单库join传统SQL数据库,通常正规化(normalization)的方式来建模数据。正规化的好处是数据冗余少,不足之处是数据聚合Join会比较麻烦,可能实际Join的时候,需要将几张相关表,通过主键和外键关系才能Join起来。我们知道,Join是一种开销比较大的SQL运算,当数据量少的时候,

2021-01-28 14:04:28 2168

原创 微服务数据的一致性分发

文章目录什么是数据分发场景作用特性缺点微服务数据分发一致性一致性方案数据双写事务性发件箱(Transactional Outbox)变更数据捕获(Change Data Capture, CDC)当前成熟技术方案(CDC企业级项目)一致性方案对比什么是数据分发场景微服务架构下,不同服务单一数据源原则只能使用自己的数据源,对于其他服务只能通过远程获取,这样相互影响增大,耦合性高,同时实现也比较复杂,可通过共享部分数据来简化对其他服务的数据获取过程。这种情况下可使用分发机制,实现不同微服务之间的数据共享。

2021-01-22 11:34:54 459

原创 星型模型 vs 雪花型模型

文章目录星型模型 vs 雪花型模型概述销售数据仓库中的星型模型销售数据仓库中的雪花型模型使用选择数据优化业务模型性能ETL总结星型模型 vs 雪花型模型概述在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,如图 1 。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相

2020-11-25 16:27:40 129

原创 Spring SpringBoot扩展接口

文章目录一、SPI介绍1. SPI机制2. SPI使用案例二、Java类加载机制1. 双亲委派模型2. 双亲委派模型缺陷3. 使用线程上下文类加载器(ContextClassLoader)加载4. 使用类加载器加载资源文件,比如jar包三、spring中SPI机制实现Springboot中的类SPI扩展机制Spring Factories实现原理一、SPI介绍1. SPI机制(1)SPI思想SPI的全名为Service Provider Interface.这个是针对厂商或者插件的。SPI的思想

2020-08-07 15:16:59 1177

原创 Java和SpringBoot类加载机制

文章目录一、SPI介绍1. SPI机制2. SPI使用案例二、Java类加载机制1、双亲委派模型2. 双亲委派模型缺陷3. 使用线程上下文类加载器(ContextClassLoader)加载4. 使用类加载器加载资源文件,比如jar包三、spring中SPI机制实现Springboot中的类SPI扩展机制Spring Factories实现原理一、SPI介绍1. SPI机制(1)SPI思想SPI的全名为Service Provider Interface.这个是针对厂商或者插件的。SPI的思想:

2020-08-07 14:39:55 6545 2

原创 SpringBoot Log4j2发消息到Kafka以及动态添加KafkaAppender

方法一:log4j2.xml文件配置Appenders>Kafkaname ="KAFKA"topic="log4j-kafka" syncSend="false">      -->  MarkerFiltermarker ="kafkaLog"onMatch ="ACCEPT"onMismatch= "DENY"/>

2017-10-17 11:55:06 6961 1

原创 SpringBoot配置log4j2的JdbcAppender日志写入数据库,可定义哪些日志写入

SpringBoot配置log4j2的JdbcAppender日志写入数据库,可定义哪些日志需要写入数据库

2017-09-13 20:29:42 8795 4

原创 Linux安装卸载MySQL以及修改MySQL初始密码

1、进入Linux系统后,先切换成root用户,root用户有更高的权限,有权限卸载系统服务     su root  回车,然后输入密码  2、查看系统是否已经安装MySQL     rpm -qa | grep mysql     或 rpm -qa | grep -i mysql如上图,系统已安装了MySQL3、如果系统已经安装了MySQL

2016-04-22 11:58:38 7817 1

原创 网络IO模型

网络IO模型

2022-11-17 17:02:40 147 1

原创 第一个架构图

第一个架构图

2022-08-30 13:53:15 161

原创 第一个架构图

第一个架构图

2022-08-30 13:52:32 128

原创 面向对象分析复杂业务模版

需求案例以坤同平台系统为基础样例,客户为ZKH、KT为坤同客户需求ZKH想购买KT的设备,它们会将设备免费或租赁给他们自己的客户使用,设备里放的是ZKH自己的商品,商品来自ZKH的各大仓库。客户会从设备里面领料,ZKH自己会不定期给设备进行补货,并能对设备进行盘点、校准、下架等操作。KT提供一个平台系统系统能实时展示设备的商品库存和剩余的货道容量管理所有设备(分析师分析设备详细信息,如设备类型、厂家等),监控设备的在线状态可实时查询设备的交易数据(分析师需要分析交易包含哪些)对设备的

2022-01-07 19:59:41 564

原创 面向对象导论

导读面向过程、面向对象是什么、它们的优缺点、使用场景类、对象、抽象类、接口封装、继承、多态面向对象概述面向过程定义:一种以“过程”作为中心的编程思想,其中过程的含义就是“完成一件事的步骤”。特点:流水线编程思想(机器思维),流水线一个阶段衔接另一个阶段,每个阶段都有自己的输入、处理、输出,而在流水线上流动就是原料或中间产品,每个阶段都有机械处理,最后输出产品。面向过程程序流水线 = 程序划分不同阶段+ 衔接规则+ 各阶段的处理数据面向过程程序 =算法+ 数据结构(算法 = 流水线,数据

2021-11-03 19:33:06 256

原创 Java大数据数据仓库架构优秀技术文章

大数据数据同步工具【Canel】超详细的Canal入门【Canel】Canal+Kafka实现mysql与redis数据准实时同步数据仓库SpringCloud

2021-09-29 13:39:13 220

原创 大数据查询解决方案

大数据查询解决方案:分库分表、预统计、预查询 + 缓存、数据仓库+大数据计算1. 分库分表方案描述:查询较少和查询频率较多的数据按一定规则进行拆分存储。挑战:冷热数据分组统计排序查询,可通过中间件sharding-jdbc/mycat解决合适的冷热数据拆分规则,可按时间、客户等进行拆分大数据量查询时会大量消耗CPU和内存2. 预统计方案描述:按日和月预先分组统计领料数据、补货数据。预统计维度:年月日/年月、供应链、工厂、机器编号、商品编号、成本中心、销售类型、仓库编号挑战:

2021-09-25 15:20:18 5904

转载 Epoll的本质(内部实现原理)

​ epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。因为epoll的重要性,在招聘服务端同学时,可能会问及epoll相关的问题。比如epoll和select的区别是什么?epoll高效率的原因是什么?如果只靠背诵,显然不能算上深刻的理解。文章核心思想要让读者清晰明白EPOLL为什么性能好。  本文会从网卡接收数据的流程讲起,串联起CPU中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、selec

2021-09-10 15:11:16 210 2

原创 kafka技术总结

文章目录KAFKA介绍KAFKA角色关系主题分区及分区副本生产者消息发送架构图自定义分区器自定义生产者拦截器设置各种生产参数ACKS机制消费者订阅主题消费消息拉取消息提交offset位移控制或关闭消费指定位移消费获取消费者分配的分区信息重要参数动态重平衡(Rebalance)GroupCoordinatorGroupCoordinator作用:GroupCoordinator和消费者间的消息类型GroupCoordinator消费者心跳RebalanceRebalance发生条件:Rebalance过程Re

2021-04-06 21:22:51 150

转载 Netflix数据同步和增强平台Delta

前言对于应用程序来说,使用多个数据存储是一种常见的模式,其中每个数据存储都用于满足特定的需求,如存储形式化数据(MySQL等)、提供高级搜索功能(ElasticSearch等)、缓存(Memcached等)等等。通常,在使用多个数据存储时,其中一个用作主存储,其他用作次存储。现在的挑战是如何保持这些数据存储的同步。我们已经观察到了一系列不同的模式,试图解决多数据存储的同步问题,比如双写、分布式事务等等。然而,这些方法在可行性、健壮性和可维护方面有局限性。除了数据同步之外,一些应用程序还需要通过调用外部服

2021-04-01 10:56:42 270

转载 spring源码系列(三)——beanDefinition(1)

如果想系统的学习spring源码那么第一个需要搞明白的知识便是spring当中的BeanDefinition——spring bean的建模对象;笔者特别强调,beanDefintion的比较枯燥和晦涩难懂,但是非常非常重要,我打算写三篇来把beanDefintion知识讲完;如果你想精读spring源码,请你一定细读三篇beanDefintion的知识,他是spring framework当中的基石;那么什么是spring bean的建模对象呢?一言概之就是把一个bean实例化出来的模型对象?有人

2020-08-07 10:05:20 101

转载 spring源码系列(四)——beanDefinition(2)

在上一篇文章里面我们讨论了一个beanDefintion对象的重要性,为了讨论spring当中的beanDefinition对象我们不得不牵扯出spring当中的bean工厂后置处理器也就是BeanFactoryPostProcessor这个类;继而讨论了BeanFactoryPostProcessor的大概执行时机(BeanFactoryPostProcessor的执行时机很重要而且spring内部做的稍微有点复杂,本文重点来讨论spring内部怎么保证这些执行时机得以严禁的执行,还有如何来扩展sprin

2020-08-07 09:45:43 132

转载 基于Redis实现消息队列典型方案

基于Redis实现消息队列典型方案@TOC1 概述消息队列,Message Queue,常用于解决并发系统中的资源一致性问题,提升峰值的处理能力,同时保证消息的顺序性、可恢复性、必送达性,对应用进行解耦,或者实现异步通讯等。市面上的 MQ应用有很多(例如:Kafka,RabbitMQ,Disque),同时也可以基于 Redis 来实现,比较典型的方案有:基于List的 LPUSH+BRPOP 的实现PUB/SUB,订阅/发布模式基于Sorted-Set的实现基于Stream类型的实现讨论之前

2020-08-01 12:42:25 158

原创 数据库事务及Spring对事物的处理方式

事务(数据库事务)概述:由若干个数据库操作(CURD)组成的一个执行逻辑单位事务的四大特性(ACID)原子性(Automicity)事务内的所有操作要么全部成功,要么全部失败隔离性(Isolation)不同的事务内的操作是互不影响的(如:一个方法并发10个开启了10个事务,10个事务的执行操作是一样的,且相互不干扰)一致性(Consistency)事务执行前后数据库的状态是一致...

2019-08-28 11:23:47 241

原创 SpringBootJPA使用及动态SQL Specification

文章目录命名查询动态SQL单表动态条件查询多表动态条件查询JPA对SQL支持删除数据(delete)(HQL)修改数据(update)(HQL)单表查询(HQL)多表连接查询并支持分页(原生SQL)自定义SQL和防SQL注入动态SQL超级工具(推荐)作者劝语命名查询关键字方法命名sql where字句AndfindByNameAndPwdwhere name= ? ...

2019-04-25 22:25:02 5294 1

转载 使用Reactor进行反应式编程最全教程

反应式编程(Reactive Programming)这种新的编程范式越来越受到开发人员的欢迎。在 Java 社区中比较流行的是 RxJava 和 RxJava 2。本文要介绍的是另外一个新的反应式编程库 Reactor。反应式编程介绍反应式编程来源于数据流和变化的传播,意味着由底层的执行模型负责通过数据流来自动传播变化。比如求值一个简单的表达式 c=a+b,当 a 或者 b 的值发生变化...

2018-11-20 13:58:09 2796 1

原创 Java lambda表达式汇总

顺序流和并行流//顺序流   List <Person> people = list.Stream.collect(Collectors.toList());//并行流   List <Person> people = list.Stream.parallel().collect(Collectors.toList());使用顺序方式去遍历时,每个item读完后再读下一个i...

2018-06-01 23:03:46 1949 1

原创 SpringBoot整合swagger

SpringBoot整合swagger

2017-10-09 15:47:20 316

原创 SpringBoot配置文件上传

SpringBoot配置文件上传

2017-10-09 14:37:56 10561 2

原创 SpringBoot整合cas单点登录

SpringBoot整合CAS单点登录

2017-10-09 14:07:02 8326 7

原创 Linux安装Zookeeper

Linux安装Zookeeper

2017-09-03 17:16:40 488

原创 XShell配置一个可以直接进入指定机器的指定目录的方法

1、在配置好你的登录IP和用户名密码之后,选择右侧菜单的登录脚本2、点添加,等待框输入的即为你输入值前操作指令名称,如下红色框所示,值即为你要进行的操作指令eg: 假设我配置到最后进入/data/memcached目录下  名称为下面的第2个红色框,值为cd /data/memcached3、选择刚配置的那个IP地址,将直

2017-07-24 15:17:49 7576 2

原创 Linux系统安装卸载jdk和tomcat

安装JDK1、查看系统是否自己安装了JDK或者系统是否自带JDKrpm -qa | grep jdk    查看jdk服务如果有有自带的JDK,可以使用命令rpm -e 服务名(如:rpm -e  jdk1.8.0_91-1.8.0_91-fcs.x86_64)卸载原来的JDK注意:有时会出现卸载不了的情况,因为上面的命令删除不了依赖包,可以使用强制删除

2016-06-09 21:45:14 1736 1

转载 ThreadLocal防止并发线程安全 线程隔离-ThreadLocalMap

Spring使用ThreadLocal解决线程安全问题我们知道在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域。就是因为Spring对一些Bean(如RequestContextHolder、TransactionSynchronizationManager、LocaleContextHolder等)中非线程安全状态

2016-05-30 17:16:59 2474 2

转载 ImageMagick使用for java(im4java)

简介:用于读、写、处理图片文件,支持89种格式的图片文件,利用imageMagick可以根据web应用程序动态生成图片,也可以将一个或者一组图片改变大小、旋转、锐化、减色、增加特效等操作,并对操作结果进行保存(可以设置保存格式)。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。ImageMagick命令:http://wenku.baidu.com/view

2016-04-29 15:54:56 674

Reactor教程Mono和Flux例子

Reactor教程Mono和Flux例子,同时可以查看我的博客,有介绍如何使用Reactor的详细教程

2018-11-20

mqttfx-1.7.1-windows-x64最新版

mqttfx 1.7.1 2018年10月最新版,用于MQTT消息测试发送及接收

2018-11-09

swagger修改后js和html页面

swagger修改后js代码和html页面代码,可直接修改js和html里面的内容

2017-10-09

Hibernite4.1.8帮助文档API

Hibernite4.1.8帮助文档API最新版

2015-01-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除