iOS

李超线段树模板

细节和理解详见注释 题目:https://www.luogu.com.cn/problem/P4097

学习C++这一篇就够了(进阶篇)

​内存模型 C++在执行程序的时候,将内存方向划分为4个区域: 代码区:存放二进制代码,由操作系统进行管理 全局区:存放全局变量、静态变量、常量,程序结束后由操作系统释放 栈区:存放函数参数、局部变量,由编译器自动分配和释放 堆区:由开发者申请分配和释放,若程序员不释放,程序结束由操作系统自动回收 意义:对于不同区域存放的数据,赋予不同的生命周期,给编程更大的灵活性。 代码区

万能欧几里得算法学习笔记

万能欧几里得算法 万能欧几里得算法用于解决一类与(leftlfloor frac{pcdot x+r}{q} rightrfloor)有关的和式求解问题,例如类欧几里得算法中提到的和式就属于此类问题。但万能欧几里得算法从几何意义出发能处理更广泛的和式类型。例如(sum_{x=0}^{l}A^xB^{leftlfloor frac{pcdot x+r}{q} rightrfloor}quad A,B

6537: candy买糖果 桶排序

描述     candy非常喜欢吃糖果,于是他就攒下平时妈妈发的零花钱,准备放学后去偷偷买糖。 现在candy知道自己的存钱罐里一共有n张纸币,每张纸币的面值为Vi。这几天放学后,他想要用这些钱买m种糖果,并且希望能用一种面值的纸币恰好买到所有的糖果。     输入     第一行包含两个整数,分别为纸币张数n和糖果种数m。 第二行

如何洞察 .NET程序 非托管句柄泄露

一:背景 1. 讲故事 很多朋友可能会有疑问,C# 是一门托管语言,怎么可能会有非托管句柄泄露呢? 其实一旦 C# 程序与 C++ 语言交互之后,往往就会被后者拖入非托管泥潭,让我们这些调试者被迫探究 非托管领域问题。 二:非托管句柄泄露 1. 测试案例 为了方便讲述,我们上一个 Event 泄露的案例,使用 C# 调用 C++ ,然后让 C++ 产生 bug 导致句柄泄露。 先看一下 C++ 代

C++ 设计模式之简单工厂模式

设计模式之简单工厂模式(C++)  简单工厂模式,主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。优点:适用于不同情况创建不同的类时。缺点:客户端必须要知道基类和工厂类,耦合性差。需要根据不同的需求创建不同的类。添加类的时候需要更爱工厂类。以四则运算为例,其UML图如下:  在客户

C++ 设计模式之组合模式

设计模式之组合模式   组合模式,将对象组合成属性结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。其UML图如下:   一个组织有很多子组织,而无论子组织是单独一个部门或是一个分组织。该组织都希望把它们当成一样的子组织来管理。举个例子吧,就拿公司来说吧,一个公司总部为了方便管理希望把分公司当成一个部门来管理就行了。比如公司要发奖金了,总公司只用通知自

C++ 设计模式之单例模式

设计模式之单例模式  保证一个类仅有一个实例,并提供一个访问他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且可以提供一个访问该实例的接口。其UML图如下:  其示例代码如下: 测试代码如下: 测试结果如下图:  以上代码是有安全

C++ 设计模式之桥接模式

设计模式之桥接模式 桥接模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里说的实现分离,并不是说然抽象类与派生类分离,这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。其UML图如下:     结合上图理解一下其定义。抽象部分指的是Abstraction或者RefinedAbstraction。实现部分指的是Implementor。以为抽象部分得实现有多

C++ 设计模式之命令模式

设计模式之命令模式 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。其UML类图如下:   该模式主要是为了隔离请求和实际执行者之间解除。就是解耦和,所有的请求统一有一个类负责,而该类负责管理这些请求(添加请求、撤销请求之类的)。上图种Invoker负责接受和管理各种命令。然后有Invoker统一像Receiver发

C++ 设计模式之责任链模式

设计模式之责任链模式 责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。该模式很好理解,其UML图如下:  每个ConcreteHandler都有一定的请求处理能力,当自己处理不了的时候就把请求转移给自己的后继者。所以每个ConcreteHandler都有一个Handler的引

C++ 设计模式之中介者模式

设计模式之中介者模式 中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式很好理解,其UML图如下:  Mediator中每个交互者的引用,在Mediator内部封装了各种类之间的交互。至于那个类和那个类交合则有具体的需求来决定。示例代码如下: 测试代码如下: 测试结果如下图:

C++ 设计模式之解释器模式

设计模式之解释器模式  解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式解决的问题是,如果一种特定类型的问题发生的频率足够高,那么可能就只得将该问题的各个示例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。 其UML图如下: 在解释器模式中每一种表达式对应一种表达式解释类,比如Term

C++ 设计模式之访问者模式

设计模式之访问者模式  访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间耦合解脱开,使得操作几何可以相对自由地演化。访问者模式的目的使要把处理从数据结构中分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法

C++ 设计模式之迭代器模式

设计模式之迭代器模式 迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。该模式很好理解,C++中的迭代器应该都用过,和那个差不多。其UML图如下:  ConcreteIterator内部有一个聚合对象的引用(指针),而ConcreteAggregate依赖于ConcreteIterator。以前向链表为例,示例代码如下: 测试代码如下:

C++ 设计模式之备忘录模式

设计模式之备忘录模式 备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式很好理解,其UML图如下:   在Originator中提供了创建Memento的接口,具体要保存什么样的内容,则根据需求来定。而Caretaker则是负责管理Memento。而保存的内容的具体的组织方式什么的都封装在Memento中了。这

AMD Linux驱动团提供对Vega的全面支持

导读 继续曝光有关Radeon RX Vega的相关信息,这次我们惊讶的发现Vega系列显卡居然有7款之多!近日,AMD Linux驱动团为AMD GPU开源显卡驱动发放了100多个补丁,从而提供对Vega的全面支持。 据了解,Linux驱动为Vega新架构增加了大约4万行代码,从而可以支持新的BIOS界面、硬件IP、UVD 7.0视频

命令及串口命令_嵌入式Linux

1.引言串口是我们实际工作中经常使用的一个接口,比如我们在Linux下使用的debug串口,它用来登录Linux系统,输出log。另外我们也会使用串口和外部的一些模块通信,比如GPS模块、RS485等。这里对Linux下串口使用做个总结,希望对大家有所帮助。 2.环境介绍2.1.硬件1) NUC972开发板: 这次要控制的是板子底板上DB9串口: 对应NUC972的PE3和PE2引脚。 2) 2根

好题-CF Zip-line 树状数组详解

真的是非常好的一道题,可以大幅增大各项能力,看懂了一定关了我的的代码自己写 一定一定一定一定一定一定要自己写,这个经验非常不错!!!! 非常详细的思路过程都在注释里面了 非常好理解,不理解请评论

自适应辛普森法积分算法推导

引子 有时候我们需要计算一个函数的定积分,粗略上可以使用估算的方法。如图所示,将原本的曲线粗略地看成一个梯形。这个方法叫梯形法则(Trapezoidal Rule)。也叫做一阶牛顿-柯特斯闭型积分公式。 其中 所谓一阶,指的就是n=1的情况。 最理想的情况就是把这个图像分割成 无数 个梯形,便可求出对应的定积分。 但是在实际操作的情况下,梯形法则为了保证速度无法取极多的点,这样照成梯形

CF882 div2

碎碎念 时隔三个月我终于想起了我的博客密码(雾),好吧中间穿插着四级考试和期末周以及搬家balabala好多事情,回家摆了几天之后突然意识到自己已经足足一个月没有像样的写题了,觉得非常羞愧,于是决定洗心革面,重新做人。然后就是一次次的被题目AC哭哭/(ㄒoㄒ)/ 开始正文 A 是一个求相邻两项绝对值之和最小的题目,虽然包装上了分成k段,但实际上就是纸老虎 The power of the gr

std::future、std::promise、std::packaged_task、std::async

std::promise std::promise:用于获取线程中变量的结果,如下: 在线程函数中给外面传进来的promise对象,当线程函数执行完成之后就可以通过promis获取该值了,值得注意的是取值是间接的通过promise内部提供的future来获取的。 std::future 获取future结果有三种方式:get、wait、wait_for,其中get等待异步操作结束并返回结果;wa

docker安装Redis 6.0.8

1、前置说明 参考:尚硅谷(周阳)老师笔记写的。 注意:删除容器后,数据也会从(宿主机)加载的。 2、安装 2.1、拉取 Redis 6.0.8 2.2、宿主机:新建redis目录 2.2.1、创建redis配置文件 2.2.2、配置文件内容 2.3、创建 Redis 镜像 注意:修改后(换成1行) 2.5、连接redis

《Effective C++ 改善程序与设计的55个具体做法》读书笔记

1 .让自己习惯C++ 条款01 视C++为一个语言联邦 C Object-Oriented C++ Template C++ STL C++高效编程守则视情况而变化,取决于你使用C++的哪一部分。 条款02 尽量与const,enum,inline替换#define 对于单纯常量,最好以const对象或enums替换#defines。 对于形似函数的宏(macros),最好改用inline

VMware 虚拟机安装WIN10系统

一、准备工作     一个安装好的VMware ;一个你所需要安装的系统的镜像文件,可以去官网下载。  二、虚拟机安装系统 2.1新建虚拟机 2.1.1在主页位置点击,创建新的虚拟;或者点击左上角文件,点击新建虚拟机。    2.1.2选择典型安装 2.1.3稍后安装操作系统  2.1.4选择你所要安装的操作系统,这

VMware 安装Linux操作系统

一、前期准备工作 安装激活好的VMware,安装的操作系统(可以官网下载) 二、软件安装 2.1新建虚拟机 2.1.1在主页位置点击,创建新的虚拟;或者点击左上角文件,点击新建虚拟机。      2.1.2选择典型安装 2.1.3稍后安装操作系统 2.1.4选择你所要安装的操作系统,这里我选择Linux,这边建议把每个虚拟机单独安装在一个文件夹里,方便后期维护

Linux中常用数据库管理系统之MariaDB

我们生活在信息化时代,经常要跟数据打交道,它在我们的日常生活中无处不在,比如手机支付,微信聊天,淘宝购物,使用的这些在后台都会对应一个叫数据库的存在。数据库就是存储这些数据资料的仓库,那么这些数据是如何被管理的呢?今天我们就来一起了解下数据库管理系统。 所谓数据库管理系统,就这使用一种工具,对这些数据进行分门别类,当我们需要的时候,可以迅速地从后台把相应地数据取出来为我们所用。如今,市面上的数据库

<<  <  371  372  373  374  375  376  377  378  379  380  381  >  >>