自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 关于智能指针的学习漫游

一类事物的存在必有其意义,作为C++ 11标准中新出现的智能指针也不例外。指针是C/C++的灵魂,它的存在使得 C/C++ coder能够灵活的对内存进行操作,但也随之带来风险,即内存如何管理。本文会提及智能指针的使用,但重点并不在这里,而是尽量利用我有限的知识储备来讨论有关基本的内存管理和智能指针的有关知识,我会尽量使用简单易懂的代码例子来帮助大家理解。若有错误,请直接指出,不胜感激。

2024-01-23 22:51:16 783

原创 补码乘法的溢出判断

反过来看,对补码进行截断,若截断的高位全1或全0不影响精度,反之会影响精度。与补码溢出的判断方式吻合。位,当补码最高位(符号位)为1则扩展的高。位补码保存结果,然后进行截断保留低。表层理解:类比补码的符号扩展,当。参考:《深入理解计算机系统》两个w位补码x和y,

2023-10-03 22:54:33 871 2

原创 蓝桥杯货物摆放问题详解

货物摆放问题的分析,涉及质因数分解思想、排列组合思想

2023-03-13 15:32:19 199 1

原创 经典同步问题(PV 操作)

帮助理解PV操作

2022-06-15 22:28:07 3085

原创 从零开始的数据结构(C语言)——单链表

从零开始的数据结构(C语言)——链表相关说明链表是线性表的链式存储结构,其特点是一组数据元素的存储单元可以不连续。每个元素是一个对象,每个对象包括了两个域,即数据域和指针域,其中对于单链表而言,其指针域存储表示当前的点的后继存储位置的指针。(本章采用带头结点的单链表进行演示)假设x为链表中的一个元素,则x->next则指向后继元素。在链表中,除头节点外的每个节点都有且只有一个前驱元素,除尾节点外的每个节点都有且只有一个后继元素。头指针表示链表的第一个节点、NULL表示链表的最后一个节点

2022-04-09 16:41:15 1259

原创 从零开始的数据结构(C语言)——导学篇

从零开始的数据结构(C语言)——导学篇引言为了复习和巩固计算机大类中的核心科目——《数据结构》,本人现在参考《算法导论》和《数据结构(严蔚敏)》,从零开始系统性学习数据结构回归本源,什么是数据结构?为什么要提出数据结构的概念?换句话说数据结构有什么用?什么是数据结构?关于数据结构的定义:指互相存在一种或多种特定关系的数据元素的集合关于本人的理解:数据结构是存在某些关系的一系列数据元素的组织结构(构成方式),例如线性表本质上就是一些数据元素按照线性的方式(即数据元素之间存在1对1的关系)排列。数

2022-04-08 15:52:41 1078

原创 Javascrpit基础

JavaScript基础关于<script><script>能够将Javascript插入到HTML中使用<script>的两种方式:在网页中嵌入Javascript代码使用外部JavaScript文件 <script src = ".js" ></script> 通常将所有JavaScript引用放在<body>元素中推迟执行脚本:利用defer属性,脚本会延迟到整个页面都解析完毕后再将脚本按出现次序运行,避免

2021-11-12 12:00:00 252

原创 C++文件I/O操作

文件操作程序运行时的数据是临时数据,程序运行后会被释放。通过文件可以使数据得以保存。文件操作需包含头文件文件类型:文本文件、二进制文件//文件操作三大类ofstream//读操作ifstream//写操作fstream//读写操作文本文件写文件步骤:1、创建头文件 #include 2、创建流对象 ofstream ofs3、打开文件 ofs.open(参数1(路径),参数2(打开方式));4、写文件 ofs << “写入的数据”5、关闭文件 ofs.close

2021-11-11 12:00:00 210 1

原创 C++多态

多态什么是多态?同一个事物在不同场景下的多种形态,多态能使函数的接口通用化。面向对象三大特性之一优点:代码组织结构清晰;可读性强;有利于前期和后期的扩展和维护(基于开闭原则:在面向对象领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。)缺点:降低了程序运行效率(多态需要去找虚表的地址);空间浪费静态多态与动态多态1、静态多态:函数重载与运算符重载。静态多态是编译器在编译期间完成的,编

2021-11-10 12:00:00 52 1

原创 C++继承

继承面向对象三大特性之一类与类之间存在某种关系:下级别成员除了拥有上级的共性外,还有自己的特性。好处:减少重复代码//person2继承了person1的属性,同时又有自己的属性//格式 class 子类(派生类) 继承方式 父类(基类)class person2 :public person1{ ……};其中基类中的所有成员都会被派生类继承(友元关系不能继承)基类私有(private)成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派

2021-11-09 12:00:00 67 1

原创 C++类与对象

类类用来实现函数封装类是用来描述"对象"的, 类包括属性以及行为, 如同人就是一个类, 属性即包括人的性格、品格、样貌等, 人的动作表现则属于类的行为(行为一般为函数)。而具体的某一个人则是类的实例——对象。类是对象的模板,对象是类的实例。类是一个封装了数据以及操作这些数据的代码的逻辑实体类的三种权限:公共权限 (public) :类外可以访问, 类内可以访问保护权限 (protected) : 类外不可以访问, 类内可以访问,对派生类可见私有权限(private): 类外不可以访问, 类

2021-11-08 12:00:00 208 1

原创 计算机的I/O系统

输入/输出系统输入输出系统(I/O系统)由I/O软件和I/O硬件两部分构成。I/O软件:包括驱动程序、用户程序、管理程序等。采用I/O指令和通过指令实现CPU与I/O设备的信息交换I/O硬件:包括外部设备、设备控制器、接口等。I/O设备通过设备控制器与抓捕你的系统总线相连。I/O系统的功能(1)完成计算机内部二进制信息和外部多种信息形式的交流。(2)保证CPU能够正确选择输入输出设备并实现对其控制,传输大量数据、避免数据错误(3)利用数据缓冲、选择合适的数据传送方式等,实现主机与外设间速度的匹

2021-11-07 12:00:00 1527 1

原创 SQL语言使用

数据查询语言语句格式SELECT [ALL|DISTINCT] <目标列表达式> FROM <表名> [WHERE <条件表达式>] [GROUP BY <列名> [HAVING <条件表达式>]][ORDER BY <列名> [ASC|DESC]];显示数据库show databases使用表前需要选择表位于的数据库use databasesname显示表show tables;显示表列SHOW CO

2021-11-06 12:00:00 57 1

原创 数据库索引

索引表索引:对数据库表中一个或多列的值进行排序的结构像书的索引一样,数据库索引就是为了使查询数据效率快索引分为聚集索引和非聚集索引。非聚集索引是按照数据存放的物理位置为顺序的,能够提高检索的速度;而非聚集索引则不一样,非聚集索引对于单行的检索很快索引使用B+树结构创建索引CREATE [UNIQUE] [CLUSTERED] INDEX <索引名> ON <表名>( <列名>[<次序>],<列名>[<次序>]);其中次序

2021-11-05 12:00:00 79 1

原创 数据库介绍

数据库基本知识点基本概念数据:描述事物的符号记录,是数据库中存储的基本对象。1、数据库:数据库是一个以某种有组织的方式存储的数据集合(看作是一个文件柜,其中存放数据的物理位置)2、表:表是某种特定类型数据的结构化清单,是数据库最基本的单元,是数据的存储结构。表有唯一的表名。表有行和列3、行:数据/记录。例如每一行表示一个客户4、列:字段(每个字段有字段名、数据类型、约束等属性)。例如账单的一列存储客户编号、一列存储客户消费金额5、主键(primary key):唯一表示表中每行的列主键用来

2021-11-04 19:58:48 60 1

原创 计算机体系概述

计算机体系结构概论1964年,阿姆达尔再介绍IBM360系统时指出,计算机体系结构是站在程序员的角度所看到的计算机属性。1982年,梅尔斯再其所著的《计算机体系结构的进展》中定义了组成计算机系统的若干层次。1984年,拜尔再一篇题为《计算机体系结构》的文章中给出了一个含义更加广泛的定义:体系结构由结构、组织、实现、性能四个基本方面实现。计算机体系结构是指计算机的概念性结构和功能属性计算机组织是指计算机体系结构的逻辑实现,包括数据流和控制流的组成以及逻辑设计。计算机实现是计算机组织的物理实

2021-11-03 12:00:00 903

原创 计算机存储

存储系统存储器是用来存储数据和指令等的记忆部件为了解决存储容量、成本和速度之间的矛盾,计算机通常采用分级存储体系。存储器将不同特点的存储器通过适当的硬件、软件有机地组和在一起形成计算机存储体系结构作用:写入和读出计算机工作需要的信息(输入设备将程序和数据写入主存,CPU取指令,CPU执行指令期间读取数据,CPU写回运算结果,输出设备输出结果)内存内存也称为主存,设在主机内或主板上,用来存放机器当前运行所需的临时程序和数据,方便向CPU提供信息。特点是:容量小、速度快。内存的性能直接影响电脑的运

2021-11-02 15:55:20 139 1

原创 回溯思想介绍

回溯法回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。这类思想常用于解决多方法问题(如组合问题之类的多种解的问题)。回溯算法实际上就是在一棵树上进行深度优先遍历。而与深度优先搜索不同的是回溯:需要以要求的序进行深度优先探索,必须每一步都符合要求。回溯法不能使用visited记录,因为同样的内容不同的序访问就会造成不同的结果,而不是仅仅“是否被访问过”这么简单。要使用访问状态来记录,也就是对于每个点记录已经访问过的邻居方向,回溯之后从新的未访问过的方向去访问邻居。至于这点点

2021-11-01 16:52:54 91 1

原创 贪心算法——最优解

贪心法贪心法常用于解决最优化问题,但与动态规划不同的是,贪心法不是从整体考虑最优,而是考虑选择在某种意义的局部最优。例如为了让找的零钱的纸币数量最少,每次我们会去尽量用面值最大的纸币取找。贪心算法不能保证得到最优解,用贪心法能够得到最优解得问题有两个特质:1、一个问题得最优解包含其子问题得最优解。2、问题整体最优解可以通过一系列局部最优解得选择得到。活动选择问题给出n个活动的开始时间和结束时间,从中选择任意活动,要求同一时间只能选择一个活动,找出可参与最多活动数。算法分析:活动ai的活动时间为区间

2021-10-31 18:52:21 84 1

原创 认识加密技术

加密认证技术加密技术用来保证数据或文件的安全性,该技术的关键在于加密/解密算法。明文通过加密成为密文,密文通过解密称成为明文。加密技术分为对称加密技术和非对称加密技术。对称加密算法对称加密算法采用了对称密码编码技术,文件加密和解密使用相同的密钥(1)数据加密标准(DES算法):主要采用替换和移位的方法加密,用56位密钥对64位二进制数据块进行加密。DES算法运算速度块,密钥生产容易,适合在当前大多数计算机上用软件方法实现。(2)三重DES:在DES的基础上采用三层DES。用两个56位密钥,发送方

2021-10-29 12:00:00 198 1

原创 动态规划常见算法

动态规划动态规划与分治方法相似,但与分治不同的是分治求解的问题是独立的。动态规划解决的问题是重叠的,即不同的子问题具有公共的子子问题,如果采用分治的方法,相同的子问题会被求解多次,从而产生不必要的时间耗费。动态规划采用能够保存已解决的子问题的答案,从而不用重复求解相同的子问题。为了达到目的,可以将每个子问题的解存入一个表格中。动态规划常用来求解具有某种最优解的问题,这类问题可能具有多行解,每个解对应一个值,而我们需要找出最优值的解。设计动态规划:刻画最优解的结构特征递归定义最优解的值自底向上的

2021-10-28 13:24:17 66 1

原创 分而治之常见算法

分而治之今天我们来学习一个基础算法策略——分而治之分治和递归经常同时用于算法设计中。什么是分治法?分而治之的思想就是将一个大问题分成一些小问题,再逐个击破。(这与递归不谋而合,但区别是:递归是方法,分治是思想)其中,这些子问题相互独立且与原问题的结构相同但规模比原问题小,,所以与递归十分契合。分治的步骤:分解(分解原问题成子问题)、求解(对子问题进行求解)、合并(将子问题合并成原问题)归并排序归并排序便是运用了分治思想将待排元素分成两个子序列,对每个子序列再进行排序,最后再合并两个子序列

2021-10-27 16:46:22 52 1

原创 计算机中的数据表示

数据的世界在我们的日常生活中,我们通常使用十进制来表示数据,例如今天你在网上买了价值139元的鼠标。但在计算机中,数据以二进制形式存在,电脑本身也只能识别 0 和 1。下面我们就进入二进制的世界来一起学习。二进制转化1、二进制与十进制的相互转化若需将二进制数转化为十进制数,只需按权相加例如:(111)2 = 22* 21* 20 = (7)10如需将十进制数转化为二进制数,只需使用除基取余法,即对于十进制数进行除2操作,并记录余数,反复操作,直到除2为0为止,然后将所记录的所有余数逆向排列

2021-10-25 22:08:39 660

原创 认识计算机病毒

计算机病毒引言:在计算机领域中中,我们常常听到”病毒“这两个字。当我们打开类似“电脑管家”的软件时,我们可以看见病毒查杀;当浏览器中突然蹦出下载链接时,一般我们不敢点击,因为这可能含有计算机病毒。那么病毒究竟是什么呢?下面,我将对计算机病毒进行初步学习,以更好的去预防和处理计算机病毒。计算机病毒基本概念计算机病毒(Computer Virus):《中华人民共和国计算机信息安全保护条例》第二十八条指出 ”计算机病毒指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机正常使用并且能够自

2021-10-24 12:52:31 97

原创 利用C/C++实现贪吃蛇

利用C/C++实现贪吃蛇(注意:本文章仅供参考,第一次写博客还请多多指教。理解本文章需要easyx和c++等基础知识,并且需要了解贪吃蛇游戏机制)贪吃蛇机制介绍相信绝大多数人都曾玩过或者了解过贪吃蛇这款经典的游戏。贪吃蛇顾名思义,就是让蛇尽可能的吃食物。玩家可通过方向键或自定义键来控制蛇头的方向,使它吃到地图出现的随机食物。蛇每吃到一个食物,自身便会增长。当蛇碰到地图的边界或是蛇碰到自身,蛇便会死亡,游戏便结束。机制大概了解过后,我们将考虑如何实现这类游戏。设计与分析首先,我们分析游戏整体结构大

2021-10-20 22:43:54 2259

原创 大数运算之大数减法

大数运算之大数减法模拟减法思想:借位class Solution { public: string subtraction(string a, string b) { int ans;//当ans为1表示结果为非负数,当ans为0表示结果为负数 //判断a,b大小 if(a.size()>b.size()) { ans = 1; } else if(a.size() == b.size()) { if(a>=b) ans = 1;

2021-03-10 19:28:53 131

原创 大数运算之大数加法(C++)

大数运算之大数加法(C++)众所周知,加法运算是小学一年级的学生就懂的知识点。即从两个数个位开始,按位相加,逢十进一。对于懂得C++的你而言,so so so easy! 只需要利用加法运算符即可但若你要处理的数值位数十分巨大,如两个位数为20的数相加。在纸上进行运算十分简单,但在C++中直接使用加法运算符却无法实现你的预期,这是因为数值太大了,即使是使用长整型也无法存储如此大的数据。因此我们会想:不妨利用数组来模拟小学一年级就学过的加法运算思想。实现代码如下class Solution {

2021-03-10 19:19:19 381

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除