自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言项目篇:二、课程管理系统

为加强对于C语言的巩固和复习,以实战项目为导向,串起所有C语言的语法,达到活学活用的目的,本篇博客,详细总结利用C语言编码简单编码实现生活中的课程管理系统后台开发的整个过程,学习多文件编程和调试,提高实际的编码开发能力。

2024-07-21 10:40:57 996

原创 Shell程序设计

对于计算机硬件而言,它们只能识别某些特定的二进制指令(机器码),而无法解读和直接执行我们编写的源代码。因此,在程序真正运行之前必须将源代码转换成二进制指令。而因为不同语言转换的时机不同,但总体上可分为两类,因而将高级编程语言分为了编译型语言和解释型语言。网上有很多shell 的概念介绍,其实都很官方化,如果你对linux 命令很熟悉,那么编写shell 就不是一个难事,shell 本质上是 linux 命令,一条一条命令组合在一起,实现某一个目的,就变成了shell脚本。

2024-07-20 20:43:59 1172

原创 C++基础(二十四):C++的类型转换

C++ 的类型转换(Type Casting)用于在不同类型之间转换数据。主要有四种方式:隐式转换由编译器自动完成;C 风格转换使用语法,功能强大但不安全;用于相关类型之间的显式转换,较为安全;主要用于多态类型的安全转换;const_cast用于修改对象的常量性;进行低级别的位模式转换,需谨慎使用。通过这些转换,开发者可以灵活处理不同类型的数据。

2024-07-16 12:38:23 1026

原创 C++基础(二十三):特殊类的设计

为什么会产生设计模式这样的东西呢?就像人类历史发展会产生兵法。最开始部落之间打 仗时都是人拼人的对砍。后来春秋战国时期,七国之间经常打仗,就发现打仗也是有套路的,后 来孙子就总结出了《孙子兵法》。孙子兵法也是类似。

2024-07-16 11:12:16 808

原创 C++基础(二十二):智能指针

内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内 存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.

2024-07-15 19:31:59 967

原创 C++基础(二十一):异常

实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家 随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。

2024-07-15 09:46:50 690

原创 C++基础(二十):常见C++11的新特性

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。

2024-07-14 23:13:04 803

原创 C++基础(十九):多态(重点)

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写1、满足多态的条件:跟调用对象的类型无关,跟指向的对象有关,指向哪个对象就调用他的虚函数。2、不满足的多态的条件:跟调用对象的类型有关,调用的类型是谁,调用的就是谁的!

2024-07-13 13:36:44 1158

原创 C++基础(十八):继承(重点)

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象 程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继 承是类设计层次的复用。public:protected:// 姓名// 年龄class Student : public Person //学生类继承自Person类protected:int _stuid;

2024-07-12 13:18:35 804

原创 C++基础(十七):模板进阶

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。即:项目工程中一般将函数的声明或者类的声明放到.h文件,将函数的定义或者类的定义放到.cpp文件中,那么为什么要分离编译?方便查看和维护。模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性。

2024-07-11 19:19:09 602

原创 C++基础(十六):stack和queue

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。

2024-07-11 17:28:54 674

原创 C++基础(十五):list

list是可以在常数范围(时间复杂度)内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。

2024-07-11 15:00:52 804

原创 C++基础(十四):vector

vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小,为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。

2024-07-11 09:11:19 1078

原创 C++基础(十三):string类模拟实现

这一节我们来实现经典的string类,达到理解的目的。

2024-07-10 16:11:04 95

原创 C++基础(十二):string类

1. string是表示字符串的字符串类,它就是一个自定义类型,可以用它来实例化字符串类对象。2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作成员函数以及描述这个字符串类属性的一些成员变量。3. string在底层实际是:basic_string模板类的别名,typedef basic_string string;4. 不能操作多字节或者变长字符的序列。

2024-07-08 22:46:02 682

原创 C++基础(十一):STL简介

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2024-07-07 09:58:18 506

原创 C++基础(十):模板初阶

class 类模板名// 类内成员定义。

2024-07-07 09:29:36 726

原创 C++基础(九):C/C++内存管理

既然C语言已经有了malloc和free,new和delete的意义何在?1、对于上面的内置类型,他们的效果是一样的;2、对于申请自定义类型,他们的效果就不一样了。int main()new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// C。

2024-07-06 20:03:36 815

原创 C++基础(八):类和对象 (下)

上一小节,构造函数只有一个参数,那如果是多个参数呢?class Datepublic:Date(int year,int month,int day) //构造函数:多个参数Date(const Date& d) //拷贝构造函数private:int _year;int _month;int _day;int main()//这里编译是无法通过的(C++98)!C++11支持下面这种写法!//编译可以通过!

2024-07-06 17:24:02 1276

原创 C++基础(七):类和对象(中-2)

1. const对象可以调用非const成员函数吗?不可以。const对象只能调用const成员函数,因为const对象不能被修改,而非const成员函数可能会修改对象的状态。public:// 修改对象状态的代码// 不修改对象状态的代码int main()// 可以调用// 编译错误return 0;2. 非const对象可以调用const成员函数吗?可以。非const对象可以调用const成员函数,因为const成员函数保证不会修改对象的状态。

2024-07-05 20:58:14 1202

原创 C++基础(六):类和对象(中-1)

1、一般类的成员变量设计成私有的2、构造函数,我们一般需要自己实现,必须要写,常用的是:全缺省的默认构造函数3、析构函数,需不需要实现,取决于我们是否需要有资源清理,没有资源清理,就不需要写,有资源清理(动态内存),就必须写!4、拷贝构造函数和赋值重载运算符,需不需要实现也是看情况,因为它存在浅拷贝的问题,类中如果没有涉及资源申请/资源管理时,是否写都可以;一旦涉及到资源申请/资源管理时,则拷贝构造函数是一定要写的,否则就是浅拷贝。

2024-07-05 16:35:07 796

原创 C++基础(五):类和对象(上)

类的定义方式如下,可以看到,它的定义方式和结构体定义非常像,把typedef关键字换成了class,并且加入了成员函数。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{ }中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式有两种,

2024-07-04 17:01:35 1097

原创 C++基础(四):C++入门(三)

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了 C++98成为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于 C++98/03,

2024-07-03 09:13:08 1201

原创 C++基础(三):C++入门(二)

模板参数表>尖括号中不能为空,参数可以有多个,用逗号分开。模板参数主要是模板类型参数。模板类型参数代表一种类型,由关键字class 或typename 后加一个标识符构成,在这里两个关键字的意义相同,它们表示后面的参数名代表一个潜在的内置或用户设计的类型。a : b;编译阶段,编译器根据实参类型自动的生成如下函数代码:这也叫模板实参推演,其本质上还是函数重载,由编译器自动生成代码。a : b;a : b;a : b;

2024-07-02 20:15:55 981

原创 C++基础(二):C++入门(一)

在学习C++的输入和输出之前,我们简单复习与输入输出相关的知识点,扩充知识体系。学习过C语言,我们知道,要进行输入和输出,需要引入标准头文件:#include ,因为里面有三个标准设备:标准输入流:stdin、标准输出流:stdout、标准错误流:stderr,与此C++进行输入输出,需要引入标准头文件: #include 和使用对应的命名空间using namespace std;

2024-07-02 13:24:05 1046

原创 C++基础(一):前言

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代(1980年代), 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。

2024-06-27 21:28:22 626

原创 git基本使用(二):git分支的操作命令

分支是 Git 中的一种强大功能,允许开发人员同时在多个不同的功能、修复或实验上工作,而不会影响主分支或其他分支。通过多分支管理,团队可以并行处理多个任务,例如开发新功能、修复 bug 或进行代码重构,而不必担心代码冲突或影响主分支的稳定性。在进行多个并行作业时,通常会用到分支。

2024-06-27 17:41:10 1209

原创 git基本使用(一):git的基本概念

Git 是一种分布式版本控制系统,最初由 Linus Torvalds 于 2005 年为 Linux 内核开发。它主要用于跟踪文件的更改,特别是在软件开发过程中,可以帮助团队成员协同工作。它在实际项目开发中,应用非常广泛,我们这一节来掌握它的基本使用,为以后工作做个铺垫。

2024-06-27 12:10:05 732

原创 Redis数据库(六):主从复制和缓存穿透及雪崩

数据预热的含义就是在正式部署之前,先把可能的数据先预先访问一遍,这样部分可能大量访问的数 据就会加载到缓存中,在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间, 让缓存失效的时间点尽量均匀。缓存穿透的就是用户想要查询一个数据,发现Redis中没有,也就是缓存没有命中,于是向持久层数据库发起查询,发现也没有这个数据,于是本次查询失败。平时在redis数据库中设置的数据,关闭系统了,还能看见就是进行了持久化,把内存中的数据存到磁盘上,等重新启动数据库,再从磁盘中把数据拷到内存中。

2024-06-26 23:14:05 1001

原创 Redis数据库(五):Redis数据库基本特性

redis.conf` 是 Redis 服务器的配置文件,用于定义 Redis 服务器的运行参数和行为。以下是一些关键配置项的详细说明基本配置- 描述:是否以守护进程模式运行。- 默认值:`no`- 配置示例:`daemonize yes`2. pidfile- 描述:指定 Redis 进程的 PID 文件路径。- 默认值:`/var/run/redis.pid`- 配置示例:`pidfile /var/run/redis_6379.pid`3. port。

2024-06-26 20:27:06 934

原创 Redis数据库(四):Redis数据库事务

经过前面的学习,我们就对于Redis数据库可以进行基本的操作,从这一节开始,我们就正式学习Redis数据库的相关知识,为以后工作打下坚实的基础。

2024-06-26 09:26:09 594

原创 Redis数据库(三):Redis数据库三种特殊数据类型

除了上一篇博客讲的五种基本数据类型外,Redis还有三种特殊的数据类型,它们有着不同的应用场景,这一篇博客,我们来学习它。

2024-06-26 08:28:15 669

原创 Redis数据库(二):Redis数据库的五种基本数据类型

value除了是字符串也可以是数字!计数器统计多单位的数量对象缓存存储。

2024-06-25 01:49:20 1255

原创 Redis数据库(一):Redis数据库介绍与安装

NoSQL(Not Only SQL) 泛指非关系型数据库。Redis是一种非关系型数据库,它也是一个C/S结构(服务器-客户端),它的端口号是6379, 虽然它的数据主要是放在在内存中,但是它也可以实现可持久化,由于数据是放在内存中,因此,它的数据访问速度比较快,它可以与MySQL搭配使用, Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如。

2024-06-24 19:06:30 617

原创 MySQL数据库(五):事务

事务就是多条sql语句,要么这多条语句都执行,要么都不执行。任何一个步骤执行失败都会回滚所有步骤。例:银行转账1.要查看支票账户的余额是否高于转账金额2.从支票账户余额减去转账金额3.在储蓄账户余额加上转账金额这三个步骤就是一个事务,任何一个执行失败就要回滚所有步骤。

2024-06-24 12:46:47 884

原创 MySQL数据库(四):视图和索引

定义视图建议以"_v"开头,create view 视图名 as select语句;

2024-06-24 10:07:04 989

原创 MySQL数据库(三):读取数据库数据

上一节,我们介绍了数据库的基本操作,以及最后演示了如何使用库来连接数据库,在实际应用中,我们通常需要按照指定的条件对数据库进行操作,即增删改查操作,这是非常重要的!这一节我们继续通过一个例子,来演示如何查询数据库。

2024-06-24 01:54:50 796

原创 MySQL数据库(二):数据库基本操作

MySQL是一种流行的关系型数据库管理系统,广泛用于Web应用和各种数据存储需求。通过本次介绍,您将学习如何进行MySQL数据库的基本操作,包括创建数据库和表、插入和查询数据、更新和删除记录。这些基础知识将为您打下坚实的数据库操作基础。

2024-06-24 00:43:27 866

原创 MySQL数据库(一):数据库介绍与安装

数据库 :它就是存放数据的仓库,实际上它就是一个存数据的文件,并且是可以持久化存储的,是存在磁盘上的,但这个文件不能由我们直接操作,因此又提供了一个数据库管理系统,因此,我们平时所说的数据库既包含了存储数据的文件,又包含了一个管理和操作这个文件的一个系统,这个系统称之为数据库管理系统,因此,我们平时说的数据库是存放数据的文件和数据库管理系统之和,数据库是一个按数据结构来存储和管理数据的计算机软件系统。

2024-06-23 22:18:10 902

原创 嵌入式开发二十一:定时器之通用定时器

STM32F407 的通用定时器有 10 个,为了更好的区别各个定时器的特性,我们列了一个表 格,如下所示:STM32F4 的通用定时器包含一个 16 位或 32 位自动重载计数器(CNT),该计数器由可编 程预分频器(PSC)驱动。STM32F4 的通用定时器可以被用于:测量输入信号的脉冲长度(输入 捕获)或者产生输出波形(输出比较和 PWM)等。使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。

2024-06-21 23:57:31 742

空空如也

空空如也

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

TA关注的人

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