设计思想 源码 思想vue3

一步步带你设计MySQL索引数据结构

前言 MySQL的索引是一个非常重要的知识点,也基本上是面试必考的一个技术点,所以非常重要。那你了解MySQL索引的数据结构是怎么样的吗?为什么要采用这样的数据结构? 现在化身为MySQL的架构师,一步步迭代设计出MySQL的索引结构,保证你再也忘记不了索引的结构了,轻松通过面试。 索引介绍 MyS ......
数据结构 索引 结构 数据 MySQL

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

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

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

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

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

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

Mybatis源码解析之执行SQL语句

作者:郑志杰 mybatis 操作数据库的过程 // 第一步:读取mybatis-config.xml配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); // 第二步:构建SqlSes ......
语句 源码 Mybatis SQL

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

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

MasaFramework -- 领域驱动设计

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

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

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

Microsoft.IO.RecyclableMemoryStream源码解读

一、RecyclableMemoryStreamManager 源码地址:https://github.com/Microsoft/Microsoft.IO.RecyclableMemoryStream小对象池和大对象池管理、RecyclableMemoryStream创建、各场景的ETW消息\事件 ......
RecyclableMemoryStream Microsoft 源码 IO

(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 ......

推荐一款采用 .NET 编写的 反编译到源码工具 Reko

今天给大家介绍的是一款名叫Reko的开源反编译工具,该工具采用C#开发,广大研究人员可利用Reko来对机器码进行反编译处理。我们知道.NET 7 有了NativeAOT 的支持,采用NativeAOT 编译的.NET程序 无法通过ILSpy 之类的传统工具得到源码,这款Reko 可能是唯一一款可以把 ......
源码 工具 Reko NET

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

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

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

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

AFL源码分析(一)

AFL源码分析(一) 文章首发于:ChaMd5公众号 https://mp.weixin.qq.com/s/E-D_M25xv5gIpRa6k8xOvw a.alf-gcc.c 1.find_as 这个函数的功能是获取使用的汇编器。首先获取环境变量AFL_PATH,如果这个环境变量存在的话,接着把他 ......
源码 AFL

读 RocketMQ 源码,学习并发编程三大神器

笔者是 RocketMQ 的忠实粉丝,在阅读源码的过程中,学习到了很多编程技巧。 这篇文章,笔者结合 RocketMQ 源码,分享并发编程三大神器的相关知识点。 1 CountDownLatch 实现网络同步请求 CountDownLatch 是一个同步工具类,用来协调多个线程之间的同步,它能够使一 ......
神器 源码 RocketMQ 三大

springBoot 过滤器去除请求参数前后空格(附源码)

背景 : 用户在前端页面中不小心输入的前后空格,为了防止因为前后空格原因引起业务异常,所以我们需要去除参数的前后空格! 如果我们手动去除参数前后空格,我们可以这样做 @GetMapping(value = "/manualTrim") public void helloGet(String user ......
过滤器 空格 springBoot 源码 参数

vue3和vue2 的区别,vue3和vu2到底哪个好呢?

vue3 正式发布有两年多了,之前也做过一些学习和研究。vue3 发布后给某培训机构开发了一套vue3课程课件,自己也开源了一套基于vue3的后台管理系统(因为个人懒的原因,半年后才上传到gitHub,且到目前为止一直没有更新过)。 附上网址:https://github.com/gegestst1 ......
vue vue3 vue2 vu2 vu

1、ArrayList源码解析

1 概述 ArrayList的元素:有序、可重复、允许null ArrayList没有实现同步(synchronized),因此线程不安全的。(vector线程安全) ArrayList底层数据结构为数组,容量(capacity):表示底层数组长度。容量不足则触发扩容,创建一个更长的数组,并将元素迁 ......
ArrayList 源码

[设计模式] 装饰器模式

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

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

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

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

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

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

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

JUC源码学习笔记6——ReentrantReadWriteLock

系列文章目录和关于我 阅读此文需要有AQS独占和AQS共享的源码功底,推荐阅读: 1.JUC源码学习笔记1——AQS独占模式和ReentrantLock 2.JUC源码学习笔记2——AQS共享和Semaphore,CountDownLatch 一丶类结构和源码注释解读 1.ReadWriteLock ......
ReentrantReadWriteLock 源码 笔记 JUC

Seata 1.5.2 源码学习(事务执行)

关于全局事务的执行,虽然之前的文章中也有所涉及,但不够细致,今天再深入的看一下事务的整个执行过程是怎样的。 1. TransactionManager io.seata.core.model.TransactionManager是事务管理器,它定义了一个全局事务的相关操作 DefaultTransa ......
源码 事务 Seata

软件设计模式白话文系列(十四)策略模式

1、模式描述 定义一个算法的系列,将其各个分装,并且使他们有交互性。策略模式使得算法在用户使用的时候能独立的改变。 在 Java 中,从 JDK1.8 开始支持函数式编程,就是策略模式的一种体现,且无需借助额外的类和接口,代码更加简洁。 2、模式结构 抽象策略类:定义策略算法的规范。 具体策略类:实 ......
模式 白话文 设计模式 白话 策略

Function源码解析与实践

作者:陈昌浩 1 导读 if…else…在代码中经常使用,听说可以通过Java 8的Function接口来消灭if…else…!Function接口是什么?如果通过Function接口接口消灭if…else…呢?让我们一起来探索一下吧。 2 Function接口 Function接口就是一个有且仅有 ......
源码 Function

RocketMQ系列-搭建Namesrv源码调试环境

RocketMQ系列-搭建Namesrv源码调试环境 在学习任何一个技术框架的时候,我们通常都是先了解是什么,有什么作用、解决什么问题、设计亮点和设计思想是什么;当然对于技术学习上来说,这只是纸上谈兵,一开始比较基础的学习,当我们想要深入的时候,我们必不可少的就是希望能够去调试源码,能够在本地运行一 ......
源码 RocketMQ Namesrv 环境

【图像处理笔记】SIFT算法原理与源码分析

【图像处理笔记】总目录 0 引言 特征提取就是从图像中提取显著并且具有可区分性和可匹配性的点结构。常见的点结构一般为图像内容中的角点、交叉点、闭合区域中心点等具有一定物理结构的点,而提取点结构的一般思想为构建能够区分其他图像结构的响应函数或者从特征线或轮廓中进行稀疏采样。Harris角点检测器便是运 ......
图像处理 算法 源码 图像 原理