模式 设计模式 架构 代码

使用C# 11的静态接口方法改进 面向约定 的设计

C# 11带来了一个我期待已久的特性——接口方法。我们知道接口是针对契约的定义,但是一直以来它只能定义一组“实例”的契约,而不能定义类型(的静态成员)的契约,因为定义在接口中的方法只能是实例方法。由于缺乏针对“类型契约”的支持,我们在设计一些框架或者类库的时候,只能采用“按照约定”的设计,比如ASP... ......
静态 接口 方法

软件设计中最关键的“开闭原则”,究竟指什么呢?

前言 软件设计原则中有一条很关键的原则是开闭原则,就是所谓的对扩展开放,对修改关闭。个人觉得这条原则是非常重要的,直接关系到你的设计是否具备良好的扩展性,但也是相对比较难以理解和掌握的,究竟怎样的代码改动才被定义为“扩展”?怎样的代码改动才被定义为“修改”?怎么才算满足或违反“开闭原则”?别急,本文 ......
原则 关键 软件

Dubbo架构设计与源码解析(三)责任链模式

作者:周可强 一、责任链模式简介 1、责任链模式定义 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 ......
架构 源码 模式 责任 Dubbo

一文搞懂蓝牙模块各种工作模式

​ 摘要:本文主要归纳总结蓝牙模块的不同工作模式,通过蓝牙模块不同的工作模式了解其扮演不同角色时工作的一个基本原理,为更深入的研究蓝牙模块底层的工作机制和技术方案进行铺垫。 1、主设备工作模式 主设备是能够搜索别人并主动建立连接的一方,从扫描状态转化而来的。其可以和一个或多个从设备进行连接通信,它会 ......
模块 模式

.NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构一)--学习笔记

目录 为什么我们用 Orleans Dapr VS Orleans Actor 模型 Orleans 的核心概念 为什么我们用 Orleans 分布式系统开发、测试的难度(服务发现、通信) 运维的复杂度(伸缩性与可靠性的保障) actor 拥有全局唯一身份 自动伸缩功能 Dapr VS Orlean ......
架构 分布式 Storming 笔记 Actor

轻量级的架构决策记录机制

作者:倪新明 ADR是一种性价比非常高的架构决策文档化实践,团队引入和实践成本很低,却能为团队带来极大收益! 1 团队研发面临的问题 不论是在传统的IT行业,还是互联网行业,研发团队在架构决策层面或多或少的都会面临以下问题或挑战: •新成员加入团队,对系统现有的架构决策可能会盲目遵守,只知其然,不知 ......
轻量 轻量级 架构 机制

模型驱动设计的构造块(上)——DDD

为了保证软件实践得简洁并且与模型保持一致,不管实际情况如何复杂,必须运用建模和设计的实践。 某些设计决策能够使模型和程序紧密结合在一起,互相促进对方的效用。这种结合要求我们注意每个元素的细节,对细节问题的精雕细琢能够打造一个稳定的平台。 本部分主要将一些模式,说明细微的模型差别和设计决策如何影响领域 ......
模型 DDD

MasaFramework -- 领域驱动设计

概念 什么是领域驱动设计 领域驱动的主要思想是, 利用确定的业务模型来指导业务与应用的设计和实现。主张开发人员与业务人员持续地沟通和模型的持续迭代,从而保证业务模型与代码的一致性,实现有效管理业务的复杂度,优化软件设计的目的 痛点 基于领域驱动设计的模型有很多难点需要克服 统一认知 语言统一, 领域 ......
MasaFramework 领域

MASA Framework -- 跨进程事件 IntegrationEventBus入门与设计

概述 跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中 在Masa Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序 IntegrationEvents: 提供了发件箱模式 IntegrationEvents.Dapr: 借助Dapr实现了消息的发 ......
IntegrationEventBus Framework 事件 MASA

(Java)设计模式:行为型

前言 此篇博文内容续接的是 UML建模语言、设计原则、创建型设计模式 的内容,有兴趣的可以点前面的链接去看一下 3.2、行为型 这类设计模式是专门用于:对象间的高效沟通和职责委派 * 3.2.1、chain of responsibility 责任链模式 定义:责任链模式又名职责链模式,指的是:对某 ......
设计模式 行为 模式 Java

(Java)设计模式:创建型

前言 这篇内容是从另一篇:UML建模、设计原则 中分离出来的,原本这个创建型设计模式是和其放在一起的 但是:把这篇创建型设计模式放在一起让我贼别扭,看起来贼不舒服,越看念头越不通达,导致老衲躺在床上脑海中冒出来时都睡不着了 因此:最后实在受不了了,还是将其抽离出来 3、设计模式 分类: 注:使用设计 ......
设计模式 模式 Java

Easy-Classification-分类框架设计

1. 框架介绍 Easy-Classification是一个应用于分类任务的深度学习框架,它集成了众多成熟的分类神经网络模型,可帮助使用者简单快速的构建分类训练任务。 框架源代码:https://github.com/wuya11/easy-classification 1.1 框架功能 1.1.1 ......

新零售SaaS架构:多租户系统架构设计

传统大企业更喜欢私有化部署、个性化交付的传统模式,因为他们需要更强的管控和更高的安全性。 然而,中小企业付费能力有限,需求往往也更加标准化,所以更喜欢价格更低的、订购更简单的SaaS产品。 为了满足不同客户的需求,多租户的底层架构设计是至关重要的。 ......
架构 租户 系统 SaaS

【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述

前面几篇文章对 Yarn 基本架构、程序基础库、应用设计方法等进行了介绍。之后几篇将开始对 Yarn 核心组件进行剖析。 ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理、任务调度、状态机管理等,本篇将对 RM 总体架构进行介绍。 ......

异常值检测!最佳统计方法实践(代码实现)!⛵

数据集中的异常值,对于数据分布、建模等都有影响。本文讲解两大类异常值的检测方法及其Python实现:可视化方法(箱线图&直方图)、统计方法(z分数&四分位距)。 ......
代码 方法

使用c#的 async/await编写 长时间运行的基于代码的工作流的 持久任务框架

持久任务框架 (DTF) 是基于async/await 工作流执行框架。工作流的解决方案很多,包括Windows Workflow Foundation,BizTalk,Logic Apps, Workflow-Core 和 Elsa-Core。最近我在Dapr 的仓库里跟踪工作流构建块的进展时,深 ......
工作流 框架 任务 代码 async

vivo大数据日志采集Agent设计实践

作者:vivo 互联网存储技术团队- Qiu Sidi 在企业大数据体系建设过程中,数据采集是其中的首要环节。然而,当前行业内的相关开源数据采集组件,并无法满足企业大规模数据采集的需求与有效的数据采集治理,所以大部分企业都采用自研开发采集组件的方式。本文通过在vivo的日志采集服务的设计实践经验,为 ......
数据 Agent 日志 vivo

谁说.NET没有GC调优?只改一行代码就让程序不再占用内存

经常看到有群友调侃“为什么搞Java的总在学习JVM调优?那是因为Java烂!我们.NET就不需要搞这些!”真的是这样吗?今天我就用一个案例来分析一下。 昨天,一位学生问了我一个问题:他建了一个默认的ASP.NET Core Web API的项目,也就是那个WeatherForecast的默认项目模 ......
一行 内存 代码 程序 NET

[设计模式] 装饰器模式

一、装饰器模式 在软件开发过程中,由于需求的改动,可能面临对某个或某些对象新增一些新的功能的需求。根据开闭原则,新增功能我们也不能直接去修改 原有的类,而如果使用继承的方式去实现,可能出现“子类爆炸”的问题,这个时候就可以使用到 装饰器模式。 装饰器模式:允许向一个现有的对象添加新的功能,同时又不改 ......
模式 设计模式

Selenium4+Python3系列(十) - Page Object设计模式

前言 Page Object(PO)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一。在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一定的对象,然后再进行组织。 相信每个做自动化测试的同学,一定会遇到这样一个非常头疼的问题,那就是页面变化 ......

Selenium4+Python3系列(十一) - Page Factory设计模式

写在前面: Page Object模式,目的是将元素定位和元素操作分层,只接触测试内容,不写基础内容,便于后续对自动化测试用例体系的维护,这是中心思想,也是核心。 那么我们继续将简洁延续,这里沿用Java的Page Factory模式思想,旨在减少代码冗余,简单易用,具有高度的可扩展能力。 所以,这 ......

知道策略模式!但不会在项目里使用?

前言 在学开发的第二年就开始听说要想代码写得好,一定要会设计模式。于是就兴致冲冲的啃了《Head First 设计模式》,看完之后对于策略模式映像很深刻,觉得这个模式好,易上手,应用广,我又能优化一波代码了(装波逼了),于是兴致冲冲的打开了我的 IDEA,开整!!! 策略模式初体验(错误示范) 在讲 ......
策略 模式 项目

面试官:介绍一下 Redis 三种集群模式

小码今天去面试。 面试官:给我介绍一下Redis集群, 小码:啊,平时开发用的都是单机Redis,没怎么用过集群了。 面试官:好的,出门右转不谢。 小码内心困惑:在小公司业务量也不大,单机的 Redis 完全够用,也不会发生宕机问题啊。面试要问到 Redis 集群该怎么办呢? Redis 为何要有集 ......
集群 模式 Redis

医疗在线OLAP场景下基于Apache Hudi 模式演变的改造与应用

背景 在 Apache Hudi支持完整的Schema演变的方案中(https://mp.weixin.qq.com/s/rSW864o2YEbHw6oQ4Lsq0Q), 读取方面,只完成了SQL on Spark的支持(Spark3以上,用于离线分析场景),Presto(用于在线OLAP场景)及A ......
场景 模式 医疗 Apache OLAP

Lakehouse架构指南

你曾经是否有构建一个开源数据湖来存储数据以进行分析需求? 数据湖包括哪些组件和功能? 不了解 Lakehouse 和 数据仓库 之间的区别? 或者只是想管理数百到数千个文件并拥有更多类似数据库的功能但不知道如何操作? 本文解释了数据湖的细节以及哪些技术可以构建一个Lakehouse,以避免创建没有结 ......
架构 Lakehouse 指南

深度解析KubeEdge EdgeMesh 高可用架构

摘要:通过高可用特性应用场景、高可用特性使用手册、课题总结、未来展望等四个部分的内容来向大家介绍新版本EdgeMesh的高可用架构。 本文分享自华为云社区《KubeEdge EdgeMesh 高可用架构详解|KubeEdge云原生边缘计算社区》,作者:南开大学|达益鑫。 EdgeMesh项目解决了边 ......
架构 深度 KubeEdge EdgeMesh

让代码帮我们写代码(一)

Hello,大家好,又是好久不见,最近太忙了(借口)。看了下日志,有 2 个月没写文章了。为了证明公众号还活着,今天必须更新一下了。 在我们的开发过程中,总有那么些需求是那么的变态。常规的方案已经无法满足。比如某些规则非常复杂,而客户又经常要修改它。那么我们可能需要把这部分代码直接做为配置文件提取出 ......
代码

要想后期修改少,代码重构要趁早

摘要:在敏捷中,让设计简单化,必须让设计从简单开始,然后变得成熟。要做到这一点,重构是唯一的出路。 本文分享自华为云社区《敏捷技术实践之重构》,作者:华为云PaaS服务小智 。 前言 极限编程(XP)的创始人之一Ron Jeffries说道:“在敏捷中,让设计简单化,必须让设计从简单开始,然后变得成 ......
代码

TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频

一、序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。 本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列 ......
TreeUtils 一行 菜单 代码 工具

Type Script 在流程设计器的落地实践

流程设计器项目介绍 从事过BPM行业的大佬必然对流程建模工具非常熟悉,做为WFMC三大体系结构模型中的核心模块,它是工作流的能力模型,其他模块都围绕工作流定义来构建。 成熟的建模工具通过可视化的操作界面和行业BPMN规范描述用户容易理解的工作流的各种构成图元,例如圆圈表示事件,方框表示活动。 流程设 ......
流程设计 流程 Script Type