解释器 设计模式 模式

工作流引擎架构设计

原文链接: 工作流引擎架构设计 最近开发的安全管理平台新增了很多工单申请流程需求,比如加白申请,开通申请等等。最开始的两个需求,为了方便,也没多想,就直接开发了对应的业务代码。 但随着同类需求不断增多,感觉再这样写可要累死人,于是开始了工作流引擎的开发之路。查找了一些资料之后,开发了现阶段的工作流引 ......
工作流 架构 引擎

基于WebSocket的实时消息传递设计

概述 web管理系统中可以对业务数据执行新增和删除,现在需要当业务数据发生新增或删除操作后,尽可能实时的反应到WPF客户端上面。 web管理系统用VUE编写,后端服务为SpringBoot,WPF客户端基于.Netframework4.8编写。 整体架构 sequenceDiagram title: ......
实时 WebSocket 消息

微机原理与系统设计笔记1 | 绪论与数制表示

打算整理汇编语言与接口微机这方面的学习记录。 参考资料 西电《微机原理与系统设计》周佳社 西交《微机原理与接口技术》 课本《汇编语言与接口技术》王让定 小甲鱼《汇编语言》 1. 介绍 2022年春学习了MIPS视角下的计算机体系结构与组成原理,同年夏自学了操作系统(科普级别的了解),汇编语言是学习操 ......
绪论 微机 原理 笔记 系统

浅谈服务接口的高可用设计

作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端HTTP或者是供其他服务RPC远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不足的... ......
接口

OpenMP 原子指令设计与实现

在本篇文章当中主要是深入剖析了 OpenMP 当中各种原子指令的实现原理以及分析了他们对应的汇编程序,OpenMP 在处理 #pragma omp atomic 的时候如果能够使用原子指令完成需求那就直接使用原子指令,否则的话就使用 CAS cmpxchg 指令和 while 循环完成对应的需求。 ......
原子 指令 OpenMP

【C++ 数据结构:链表】二刷LeetCode707设计链表

【C++链表】 使用c++重新写一遍LeetCode707设计链表 目的是熟悉c++中链表的操作 知识点 C++链表节点的实现 在c++中,一般通过结构体来定义链表的节点,也需要写构造函数(使用初始化列表) 如: struct ListNode{ int val; ListNode* next; / ......
数据结构 LeetCode 结构 数据 707

Springboot整合策略模式概念->使用场景->优缺点->企业级实战

一、前言 策略模式可能是在工作中使用最多的,也是在面试中最常提到的,代码重构和优化的必备! 小编之前也是一直说,其实没有真正的实战;最近有了机会实战了一下,来分享一下使用心得和在企业级的使用! 二、策略模式 1. 什么是策略模式 策略模式,英文全称是 Strategy Design Pattern。 ......
优缺点 Springboot 实战 场景 概念

乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现。

众所周知,异步并发编程可以帮助程序更好地处理阻塞操作,比如网络 IO 操作或文件 IO 操作,避免因等待这些操作完成而导致程序卡住的情况。云存储文件传输场景正好包含网络 IO 操作和文件 IO 操作,比如业内相对著名的七牛云存储,官方sdk的默认阻塞传输模式虽然差强人意,但未免有些循规蹈矩,不够锐意 ......
三方 乾坤 Python3 模式 Python

一篇文章带你了解设计模式原理——UML图和软件设计原则

一篇文章带你了解设计模式原理——UML图和软件设计原则 我们在学习过程中可能并不会关心设计模式,但一旦牵扯到项目和面试,设计模式就成了我们的短板 这篇文章并不会讲到二十三种设计模式,但是会讲解设计模式的设计原则以及设计依据和最明显的图形表示 或许我们只有先去了解设计模式的来源才能真正理解设计模式吧 ......
设计模式 篇文章 原理 原则 模式

Netty-架构设计及入门程序-3

一、原生 NIO 存在的问题 1、NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。2、需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor ......
架构 程序 Netty

ArcObjects SDK 021 开发框架搭建-FrameWork包设计

1、框架引擎部分 引擎模块其实就是之前我们说的App-Command-Tool模块,通过这个模块,把系统的主干框架搭建起来。 其中大部分出现在菜单以及工具条上的按钮都会继承这个框架定义ICommand和ITool。整个系统也是通过整合一些列Comand和Tool的方式,把整个系统搭建出来,这点也可以 ......
ArcObjects FrameWork 框架 021 SDK

ArcObjects SDK 022 开发框架搭建-FrameWorkUI包设计

1、CommandUIs部分 这部分主要是定义承载Command和Tool的具体UI。如下图所示。 以CommandUI结尾的这几个类都是继承了Framework.Engine里面的ICommandUI接口,这样我们定义的Command和Tool就可以和这些UI绑定到一起了。 其中BarButton ......
FrameWorkUI ArcObjects 框架 022 SDK

架构设计(九):估算

架构设计(九):估算 作者:Grey 原文地址: 博客园:架构设计(九):估算 CSDN:架构设计(九):估算 估算在系统设计中非常重要,这决定了你的设计是否可以满足要求,要实现比较靠谱的估算,就需要对如下几个概念熟练掌握 第一个概念:二的幂 尽管在处理分布式系统时,数据量可能是巨大的,但计算都可以 ......
架构

LFU 的设计与实现

LFU 的设计与实现 作者:Grey 原文地址: 博客园:LFU 的设计与实现 CSDN:LFU 的设计与实现 题目描述 LFU(least frequently used)。即最不经常使用页置换算法。 题目链接:LeetCode 460. LFU Cache 主要思路 首先,定义一个辅助数据结构 ......
LFU

MongoDB - 模式设计

虽然说 MongoDB 是无模式的,但实际上模式设计在 MongoDB 中也非常重要。在实际开发中,大多数性能问题都可以追溯到糟糕的模式设计。 ......
MongoDB 模式

设计模式实践---策略模式实现对大量计算公式的处理

业务流程: 1.用户根据需要选择的实验方案,每个实验方案对应一种计算公式,计算公式例如下面这种 2.将带有实验数据的PDF文件上传到特定位置,对PDF文件进行解析后将数据数据保存到数据库。 3.遍历所有方案,对每种方案使用特定的公式对数据库中的数据进行 重构前实现: 遍历方案,使用IF语句对使用的公 ......
模式 设计模式 对大 公式 策略

C# 正则表达式常用的符号和模式解析

〇、正则表达式的基本语法符号 若只简单匹配固定字符串,则无需任何修饰符,例如:需要匹配字符串 77,则可直接写:new Regex("77")。 下边例举一下常用的符号:(知道下面这些,一般的正则表达式便可清晰异常) 符号 释义 示例 1 示例 2 \ 转义字符,互相转换一个具有特殊功能的字符 和一 ......
正则 表达式 符号 常用 模式

【架构设计】保持简单轻量设计的三个原则——DRY,KISS, YAGNI

前言 一个软件轻量简单的软件架构是非常重要的,它可以让我们花最小的代价就能满足业务上的需求。那如何保证轻量简单呢?那今天就和大家分享下这其中的秘密,也就是3个重要的指导原则,KISS原则,YAGNI原则和DRY原则,你们都知道并且理解吗? 欢迎关注微信公众号「JAVA旭阳」交流和学习 KISS原则 ......
轻量 架构 原则 三个 YAGNI

【架构设计】你的类足够“专一”吗

前言 软件设计SOLID原则中有一个最基础的原则就是单一职责原则,我想绝大部分的程序员都知道,而且都理解它的意思,甚至觉得很简单。但是往往“看懂”和“会用”是两回事,而“用好”更是难上加难。好比我们项目,一开始一直和大家强调类的单一职责,随着业务不断发展,不同的同事都往这个类“添砖加瓦”,最终导致一 ......
架构

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

3. 领域对象的生命周期 每个对象都有生命周期,如下图所示。对象自创建后,可能会经历各种不同的状态,直至最终消亡——要么存档,要么删除。当然很多对象是简单的临时对象,仅通过调用构造函数来创建,用来做一些计算,然后由垃圾收集器回收。这类对象没必要搞得那么复杂。但有些对象具有更长的生命周期,其中一部分时 ......
模型 DDD

【架构设计】你的应用该如何分层呢?

前言 最近review公司的代码,发现现在整个代码层级十分混乱,一个service类的长度甚至达到了5000多行。而且各种分层模型DTO、VO乱用, 最终出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题。 我们在吸取了阿里巴巴的分层规范以及网上的一些经验后,重新梳理总结了 ......
架构

Triple 协议支持 Java 异常回传的设计与实现

作者:Apache Dubbo Contributor 陈景明 背景 在一些业务场景, 往往需要自定义异常来满足特定的业务, 主流用法是在catch里抛出异常, 例如: public void deal() { try{ //doSomething ... } catch(IGreeterExcep ......
Triple Java

【架构设计】如何让你的应用做到高内聚、低耦合?

前言 最近review公司的代码,发现代码耦合程度特别高,修改一处,不知不觉就把其他地方影响到了,这就让我思考该如何让我们写的代码足够内聚,减少耦合呢? "高内聚、松耦合"是一个非常重要的设计思想,能够有效地提高代码的可读性和可维护性,缩小功能改动导致的代码改动范围。它可以用来指导不同粒度代码的设计 ......
架构

我希望来年,更多是靠关系和模式挣钱——2022年我的总结与思考

我记得是2017年开始在博客园写博客,那年我儿子出生,并与当年年底写了17年的年度总结。 n年前,我没钱但年轻,我怕n年后我老时,还是一无所成——2017我的收获和反思,在随后的几年的年末,写总结文也已经成为了我的惯例,后面几年的总结文链接如下。 2018我跳出了舒适区,发现自己缺的不仅是技术,另外 ......
模式 更多 2022

Dubbo架构设计与源码解析(二) 服务注册

作者:黄金 一、Dubbo简介 Dubbo是一款典型的高扩展、高性能、高可用的RPC微服务框架,用于解决微服务架构下的服务治理与通信问题。其核心模块包含 【RPC通信】 和 【服务治理】 ,其中服务治理又分为服务注册与发现、服务容错、负载均衡、流量调度等。今天将重点介绍Dubbo的服务注册与发现。 ......
架构 源码 Dubbo

RocketMQ Compaction Topic的设计与实现

Compaction Topic 是一种基于 key 的数据过期机制,即对于相同 key 的数据只保留最新值。该特性的应用场景主要为维护状态信息,或者在需要用到 KV 结构时,可以通过 Compaction Topic 将 key-value 信息直接保存到 MQ,从而解除对外部数据库的依赖。快来... ......
Compaction RocketMQ Topic

第一百一十七篇: JavaScript 工厂模式和原型模式

好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.工厂模式 工厂模式是另外一种关注对象创建概念的创建模式。 它的领域中同其它模式的不同之处在于它并没有明确要求我们使用一个构造器。 取而代之,一个工厂能提供一个创建对象的公共接口,我们可以在其中指定我们希望被创建的工厂对象 ......
模式 原型 JavaScript 工厂

对于goland相对较新一些版本新建项目时没有go mod模式选项的坑

前言 对于一些小白在网上看很早的一些go视频,使用goland2020.3.x版本或者其之前版本创建新项目,里面会有GO Modules(vgo)这个选项,也就是gomod模式创建新项目,然而对于现在相对新点的goland版本,创建新项目是会发现没有GO Modules(vgo)选项,会很懵,本人以 ......
版本 模式 项目 goland mod

FPGA:乒乓球比赛模拟机的设计

简介 开发板:EGO1 开发环境:Windows10 + Xilinx Vivado 2020 数字逻辑大作业题目 7: 乒乓球比赛模拟机的设计 乒乓球比赛模拟机用发光二极管(LED)模拟乒乓球运动轨迹,是由甲乙双方参赛,加上裁判的三人游戏(也可以不用裁判)。 管脚约束代码: 点击查看代码 set_ ......
模拟机 乒乓球 FPGA

订单自动确认或取消设计方案

订单自动确认或取消设计方案 前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。 简介 系统订单自动确认或取消的设计方案,最常见的一个业务比如N天后自动确认订单,达到动态修改订单状态的目的。大多数项目采用的都是如下两种方案。 方案1:使用传统的数据库如MySQL,通过轮询来判断数据库表中订单的状态。 ......
订单 方案