结构 线段 数组 模板

设计模式(十四)----结构型模式之组合模式

1 概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以 ......
模式 结构型 设计模式 结构

设计模式(十六)----结构型模式之代理享元模式

1 概述 定义: 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。 2 结构 享元(Flyweight )模式中存在以下两种状态: 内部状态,即不会随着环境的改变而改变的可共享部分。 外部状态,指 ......
模式 结构型 设计模式 结构

面试官:请说一下如何优化结构体的性能?

使用内存对齐机制优化结构体性能,妙啊! 可以简单理解为:将对齐系数小的字段,尽可能放在一起,尽量减少空白填充。 掌握了内存对齐机制后,结构体Struct的优化,调整下字段顺序,效果立竿见影。内存对齐其实就是典型的空间换时间的方式,来达到优化的目的。牢记对齐原则,对实际场景进行分析,减少空白填充。 ......
性能 结构

【数据结构与算法学习】线性表(顺序表、单链表、双向链表、循环链表)

实现语言:C++ 1. 线性表相关概念 线性表(Linear List) 是由n(n≥0)个具有相同特性(数据类型)的数据元素(结点)a1,a2,...,ai-1,ai,ai+1,...,an组成的有限序列。 其中,a1为线性起点(起始结点),an为线性终点(终端结点)。对于每一个数据元素ai,我们 ......
数据结构 线性 双向 算法 顺序

【数据结构与算法学习】散列表(Hash Table,哈希表)

实现语言:C++ 1. 散列表 散列表,英文名称为Hash Table,又称哈希表、杂凑表等。 线性表和树表的查找是通过比较关键字的方法,查找的效率取决于关键字的比较次数。 而散列表是根据关键字直接访问的数据结构。散列表通过散列函数将关键字映射到存储地址,建立了关键字和存储地址之间的一种直接映射关系 ......
数据结构 算法 结构 数据 Table

(2)MasaFramework入门第二篇,安装MasaFramework了解各个模板

安装MasaFramework模板 执行以下命令安装最新Masa的模板 dotnet new --install Masa.Template 安装完成将出现四个模板 Masa Blazor App: Masa Blazor App的模板创建的是一个没有携带解决方案的项目模板,默认项目结构如图: 一个 ......
MasaFramework 门第 模板

ABP微服务系列学习-搭建自己的微服务结构(一)

在原本的结构里面,由于默认服务引用的都是ABP原生的模块,所以结构目录里面没有包含modules目录,这里我们添加一个modules目录,用于存放我们的自定义模块。在shared里面,我们再抽一个EventData的模块,用于消息队列共用数据实体。修改后结构如下图所示: 开始搭建 由于我们没有商业版 ......
结构 ABP

ABP微服务系列学习-搭建自己的微服务结构(三)

上一篇我们基础服务初步搭建完毕,接下来我们整一下认证和网关。 搭建认证服务 认证服务的话,ABP CLI生成的所有模板都包括了一个AuthServer。我们直接生成模板然后微调一下就可以直接用了。 abp new FunShow -t app --tiered 使用命令创建模板后,我们可以找到一个A ......
结构 ABP

【LeetCode回溯算法#07】子集问题I+II,巩固解题模板并详解回溯算法中的去重问题

子集 力扣题目链接 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1, ......
算法 子集 问题 LeetCode 模板

理解线段树这一篇文章就够啦!

线段树 TODO: [ ] 补充例题 [ ] 线段树的进阶拓展 [ ] $Java$ 模板封装类 前言 本文中,若无特殊说明,数列下标均从 $1$ 开始 由于本人实力有限,线段树更高级的拓展暂不做考虑 引入 什么是线段树 线段树($Segment\ Tree$)是一种二叉搜索树,它将一个区间划分成一 ......
线段 篇文章

设计模式(十三)----结构型模式之桥接模式

1 概述 现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系: 我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。 试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一 ......
模式 结构型 设计模式 结构

设计模式(十一)----结构型模式之装饰者模式

1、概述 我们先来看一个快餐店的例子。 快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。 使用继承的方式存在的问题: 扩展性不好 如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和F ......
模式 结构型 设计模式 结构

设计模式(十)----结构型模式之适配器模式

1、概述 如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转 ......

设计模式之(13)--模板方法模式

今天我们来学习下模板方法设计模式。 模板方法(Template Method Pattern):抽象的父类中定义一个操作中算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。简单地讲,就是“父类的模板方法定义不变的流程,子类重写流程中的方法”。 ......
模式 设计模式 模板 方法

算法基础模板

时空复杂度分析 一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在10^7^~10^8^为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择: n ≤ 30,指数级别,dfs+剪枝,状态压缩dp n ≤ 100 => O(n^3^),floyd,dp ......
算法 模板 基础

精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南

时间轮的介绍 时间轮(TimeWheel)是一种实现延迟功能(定时器)的精妙的高级算法,其算法应用范围非常广泛,在Java开发过程中常用的Dubbo、Netty、Akka、Quartz、ZooKeeper 、Kafka等各种框架中,各种操作系统的定时任务crontab调度都有用到,甚至Linux内核 ......

服务端技术方案模板参考

如何写好一个技术方案对于开发来说非常关键,这是一个工程类技术方案模板,基于我之前的一些积累,适合相对独立的业务需求承接。 实际开发中可以作为一个模板来套用,在这个基础上进行增加或者删减。 一、概要 很多时候,大家做项目的时候容易陷入为了上线而上线,尤其技术出身的同学,接到一个项目后,会陷入快速了解需 ......
模板 方案 技术

.NET遍历二维数组-先行/先列哪个更快?

上周在.NET性能优化群里面有一个很有意思的讨论,讨论的问题如下所示: 请教大佬:2D数组,用C#先遍历行再遍历列,或者先遍历列再遍历行,两种方式在性能上有区别吗? 据我所知,Julia或者python的 pandas,一般建议先遍历列,再遍历行 在群里面引发了很多大佬的讨论,总的来说观点分为以下三 ......
数组 更快 NET

vue原理:diff、模板编译、渲染过程等

一、虚拟DOM: 因为DOM操作非常消耗性能,在操作DOM时,会出现DOM的回流(Reflow:元素大小或者位置发生改变)与重绘(元素样式的改变)使DOM重新渲染。 现在的框架Vue和React很少直接操作DOM,因为两者都是数据驱动视图,只会对数据进行增删改的操作 因此,二者使用虚拟DOM(vdo ......
原理 模板 过程 diff vue

理解树状数组这一篇文章就够啦

树状数组 TODO: [ ] 二维树状数组 [ ] 维护不可差分信息 [ ] 补充题目 前言 在阅读本文之前,您可能需要先了解位运算、二叉树以及前缀和与差分等相关知识 本文中,若无特殊说明,数列下标均从 $1$ 开始 引入 什么是树状数组 树状数组是一种 通过数组来模拟"树形"结构,支持单点修改和区 ......
数组 篇文章

【动画笔记】数据结构-AVL树的插入操作

本笔记主要围绕AVL树的平衡因子、纸上做题思路、失衡类型(LL/RR/LR/RL)、失衡调整方法、插入后回溯这几部分知识点展开。 ......
数据结构 结构 笔记 动画 数据

一篇文章带你了解设计模式——结构型模式

一篇文章带你了解设计模式——结构型模式 在之前的文章中我们已经介绍了设计模式中的创建者模式 下面我们来学习第二种类型的设计模式,结构型模式描述如何将类或对象按某种布局组成更大的结构 它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合 ......

数据结构-详解优先队列的二叉堆(最大堆)原理、实现和应用-C和Python

一、堆的基础 1.1 优先队列和堆 优先队列(Priority Queue):特殊的“队列”,取出元素顺序是按元素优先权(关键字)大小,而非元素进入队列的先后顺序。 若采用数组或链表直接实现优先队列,代价高。依靠数组,基于完全二叉树结构实现优先队列,即堆效率更高。一般来说堆代指二叉堆。 优先队列的完 ......
数据结构 队列 大堆 原理 结构

针对一个数组的排序,面试官会这样问

问:你写一个排序算法吧,顺便说一下其他的方式,可以吧? 题目:对数组 {1,3,6,1,8,22,0,1}进行排序 答: public static void main(String[] args) { String[] arr = {"1", "1", "7", "3", "9", "11", " ......
数组

C#高性能数组拷贝实验

前言 昨天 wc(Wyu_Cnk) 提了个问题 C# 里多维数组拷贝有没有什么比较优雅的写法? 这不是问对人了吗?正好我最近在搞图像处理,要和内存打交道,我一下就想到了在C#里面直接像C/C++一样做内存拷贝。 优雅?no,要的就是装逼,而且性能还要强🕶 概念 首先澄清一下 C# 里的多维数组 ( ......
数组 高性能 拷贝

[数据结构] 二分查找 (四种写法)

#二分查找 ##二分查找 二分查找(Binary Search)也叫作折半查找,前提是查找的顺序结构是有序的,我们一般在数组上进行二分查找。 二分查找就好像猜数字大小游戏一样。假设要数字目标值属于 [1, 1000] 范围内,当我们猜的数字小于这个目标值时("Too low"),我们需要往大去猜;反 ......
数据结构 写法 结构 数据

[数据结构] 树、二叉树、森林的转换

#树 ##树的表示方法 ###双亲表示法 用一组地址连续的存储单元来存放树中的各个节点,每一个节点中有一个数据域和一个指针域,数据域用来存储树中该节点本身的值;另一个指针域用来存储该节点的双亲节点在存储结构中的位置信息。 采用双亲链表存储方式实现查找一个指定节点的双亲节点比较方便,但难以实现查找一个 ......
数据结构 森林 结构 数据

[数据结构] 二叉搜索树 (二叉排序树)

#二叉搜索树 ##二叉搜索树的基本概念 二叉搜索树( Binary Search Tree )也称二叉排序树,是一种各节点值之间存在一定次序关系的二叉树。 ##二叉搜索树的特点 一般情况下,二叉搜索树中所有节点值是不重复的。 对于二叉搜索树中的每个节点: (1)如果其左子树不为空,那么其左边的节点值 ......
数据结构 结构 数据

[数据结构]二叉树的前中后序遍历(递归+迭代实现)

#二叉树的遍历 ##主要的三种遍历方式 二叉树主要的遍历方式有前序遍历、中序遍历和后序遍历。 (1)前序遍历:根节点-->左子树-->右子树 (2)中序遍历:左子树-->根节点-->右子树 (3)后序遍历:左子树-->右子树-->根节点 其实还有一种比较基础的遍历方式是层次遍历,但是在本篇文章中不会 ......
数据结构 结构 数据

明解STM32—GPIO理论基础知识篇之基本结构

​ 一、前言 万物皆有源头,大家学习单片机的源头操作就是通过GPIO口点灯,GPIO作为STM32最基础的外设,也是大家最先接触的外设。当然,看似基础的GPIO,不仅仅是简单的设置好IO口,让灯亮起就一了百了,了解清楚GPIO的使用特性,根本原理、运行机制对我们在涉及到GPIO的相关设计操作上会应用 ......
基础知识 理论 结构 基础 知识