自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Windows下,Boost库下载,编译和使用

BOOST库

2024-04-29 14:54:50 26

原创 Sqlite3相关返回值

sqlite

2024-01-11 20:11:30 763

原创 冒泡,插入,选择,希尔排序算法

排序算法

2022-11-29 11:03:41 476 1

原创 Ffmpeg音视频基础

音视频基础

2022-10-08 21:58:24 710

原创 FFmpeg入门相关命令

音视频入门

2022-10-08 16:56:34 2335

原创 浏览器登录lihtthttp服务器显示文件列表

服务器配置

2022-08-01 17:29:53 712

原创 secureCRT连接开发板连接不上问题解决

secureCRT连接开发板

2022-07-28 14:29:01 5673

原创 linux和windows的共享文件夹的设置(ubuntu18.04)

ubuntu的使用

2022-07-28 14:00:17 1979

原创 插入排序,选择排序,冒泡排序

1.插入排序大白话理解原理:将第一个数看成是有序的,从第二个数开始和该数前面的数进行比较,(默认从小到大排序)如果这个数比前一个数小,那么就将这个数,放在一个临时变量中,再进行相同的操作,知道发现前一个数币这个数小就将这个数放在比他小的那个数的后面。2.选择排序选择排序就是从一组数据的第一个数开始,在数组中下标是从0开始,将第一个数的位置记录下来,在一个一个与后面的数进行比较,如果后面有比这个数还小的数,那么就将这个数的位置与之前记录的数的位置更换,一直这样比较到最后一个数,然后将这个最小的数放在排好

2022-06-28 17:16:15 139

原创 网络聊天室整体思路框架

思路:网络聊天室首先网络聊天需要借助网络,服务器和客户端这两个是需要我们创建的,在建立连接,通过套接口来实现客户端与服务器之间的连接。必须先实现客户机与服务器之间的连接,才可以进入下一步,不然连都连不上就更不可能聊天了。客户端与服务器的连接:首先在客户端创建套接口,配置地址,连接等操作完成后,再在服务器端进行同样的操作,创建监听套接口,绑定套接口,监听,接收客户连接连接,返回连接套接口。创捷线程。当客户机与服务器连接之后进行通信实验看看,能不能通信,在进行后面的登录注册操作。首先是注册功能,注册

2022-04-19 21:14:53 1096

原创 C语言,C++练习笔记

函数调用:返回值存在寄存器中,没有地址,不能作为形参,但可以作为实参。一个函数没有返回值时,是void型,此时的void关键字不能省略(不写);一个函数省略(不写)返回值类型时,默认是int型;int main() {int a[3][3], *p, i;p = &a[0][0];for(i = 0; i < 9; i++) p[i] = i;for(i = 0; i < 3; i++) printf("%d ", a[1][i]);}指针的步长与指针的类型相关,由于p

2022-04-13 20:55:39 568

原创 C++基础知识八

一、算法通用的算法,算法主要头文件 : 常用的功能涉及,比较,交换,查找,遍历操作,复制,修改,反转,排序,合并。 :加法和乘法在序列上的一些操作。:定义一些模板类,用以声明函数对象。1.1 遍历算法#include <iostream>#include <algorithm>#include <vector>using namespace std;void show(int x){ cout<<x<<endl;

2022-04-11 20:18:05 864

原创 C++基础知识七

一、STLlist是一个双向链表容器,可以高效的进行插入和删除。list不可以随机存取元素,所以不支持at()和[]操作符。#include <iostream>#include <list>#include <cstring>using namespace std;class Student{ private: int id; char name[32]; public: Student(

2022-04-09 18:49:34 1159

原创 C++基础知识六

一、文件操作1.1 I/O 流概念和流类库的概念程序输入输出输入:应用程序将数据导出的操作输出:从外部获取数据到程序内部的操作C++输入和输出分为三类1、对系统指定的标准设备的输入和输出, 即标准I/O2、以外存磁盘文件为对象进行的输入和输出,即文件I/O3、...

2022-04-08 21:04:24 1589

原创 C++中派生类对基类成员的三种访问规则

C++中派生类对基类成员的访问形式有两种:1.内部访问:派生类新增成员对从基类继承过来成员进行访问2.对象访问:在派生类外部,通过派生类对象对从基类继承过来的成员进行访问下面看看派生类对基类的成员的访问规则:1.派生类私有继承了基类规则(private)当类的继承方式是私有继承(private)时,基类中的public和protected成员被继承后称为派生类的私有成员,派生类的成员可以直接访问他们,但是在类的外部,通过派生类的对象是不可以对其进行访问的。还有基类中的私有成员在派生类中是不可以直接

2022-04-06 09:28:36 7698

原创 C++基础知识五

一、智能指针智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。标准库提供的两种智能指针的区别在于管理底层指针的方法不同,shared_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指向的对象。标准库还定义了一种名为weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象,这三种智能指针都定义在memory头文件中。#include <iostream>#include <memory>using namespace

2022-04-03 21:39:01 934

原创 C++基础知识四

一、多态1.1 概念:在基类指针指向基类对象的时候,就是使用基类的方法和属性,基类指针指向派生类对象的时候,就使用派生类对象和属性,产生条件:1)要有继承 2)要有虚函数重写(发生在不同作用域中,函数原型相同) 3)基类指针指向派生类对象#include <iostream>using namespace std;class Parent{ public: virtual void show() //这里要变成虚函数 {

2022-04-02 21:56:10 1038

原创 运算符重载

一、运算符重载介绍:1.运算符重载允许把标准运算符(如 +,- ,*,/, <, >等)应用于自定义数据类型的对象2.运算符重载的作用:1) 直观自然,提高程序的可读性2)体现C++的可扩展性3)运算符重载仅仅是语法上的方便,他是另一种函数调用方式4)运算符重载本质上是函数的重载3.运算符重载注意事项不可滥用重载,因为只是语法上方便,所以只有涉及的代码更容易写更容易读时才有必要重载二、运算符重载的实现方式:1.成员函数重载2.友元函数重载三、运算符重载规则1.运算符

2022-04-02 13:51:34 1714

原创 C++的继承,封装,多态

C++是面向对象的语言,因此他和JAVA一样有面向对象语言的三大基本特征:封装,继承,多态。封装:封装字面意思就是打包,包装起来,看不见里面是啥。稍微专业点就是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象,通过限制属性和操作的访问权限(public, protected,private),可以将属性“隐藏”在对象的内部,那都隐藏了外面就不好操作了,放心,这里会提供一定的接口,在对象之外只能通过这个接口对对象进行操作。就像开车给你钥匙,你会开车就能把车开走,具体车里面的发动机啥的不

2022-03-31 16:32:55 1731

原创 C++基础知识三

一、构造函数的参数初始化列表注意:1.初始化参数列表优先于当前对象的构造函数执行2.子对象的初始化顺序和在其初始化列表的排序无关,但是和在类中的声明顺序有关,先声明的先初始化#include <iostream>using namespace std;class Date{ private: int m_year; int m_month; int m_day; public: Date(int y,

2022-03-31 12:02:19 1052

原创 round函数

C99标准中有round()函数,声明为:double round(double );返回距离参数最近的整数,如果参数值正好在两个整数的中间位置,则返回距离0较远的那一个整数(即正数则返回大于参数的整数,负数则返回小于参数的整数)...

2022-03-29 14:33:56 783

原创 C++基础语法二

一、类和对象1.1面向对象编程介绍使用类和对象来完成特定的功能的集合,通过每个对象来管理自己的数据和方法。用到一个关键词:class超强版的struct :类1.2类和对象1)c++中的类是class,可以看成是C语言中的struct的超强版本。结构体是一种构造类型,可以包含若干成员,类也一样,除了struct基本功能之外,类还有新增权限,2)类的使用说明1>类和struct一样,定义结尾需要加; 他是类的一部分,表示类定义结束,不能省略。2>类也是一种构造类型,本身不占用内存

2022-03-28 21:17:32 772

原创 C++基础知识一

一、面向对象概述1.1 c++发展1998开始,c++98 -> c++03 -> c++11 -> c++141.2 应用范围1)应用软件开发 2)游戏开发 3)多媒体开发 4)人工智能 5)底层驱动 6)图形界面1.3 面向对象和面向过程C语言:面向过程,以过程为中心,强调做算法,特点是以函数为单位,数据从一个函数流向另一个函数。C++:面向对象,是以事物为中心的编程,封装成一个个的类,维护的代码期待更少。1.4 c++与C语言的

2022-03-27 11:36:06 1037

原创 网络编程(linux)

TCP建立连接 (可靠传输,丢包重发)UDP不建立连接 (不可靠传输,丢包不重发)适合:视频点播网络畅通时,使用UDP较快,不易丢包,阻塞时容易丢包使用TCPUDP比TCP开销小,没有校验等,速度比TCP快IP协议是管理路径选择, TCP是管理是否传送正确为什么TCP是一段一段的发送数据包,是因为不让一直占用端口,页可以和其他需要同端口的一起用。socket 是网络套接口,TCP 和 UDP想进行网络通信,必须使用它(进程之间通信,不同主机之间通信)创建套接口成功返回文件描述符(当文件),设

2022-03-09 23:03:31 435

原创 计算机网络协议

一、应用层(应用层,表示层,会话层)FTP协议文件传送协议FTP(File Transfer Protocol)是Internet上使用比较广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP屏蔽了各种计算机系统的细节,因此适用于在异构网络中任意计算机之间传送文件。它的基本应用就是将文件从一台计算机复制到另一台计算机中。它要存取一个文件,就必须先获得一个本地文件的副本,如果修改文件,也只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。T

2022-03-08 21:27:21 5179

原创 线程的理论基础

线程: 线程是进程创建的,有了进程为什么还要线程呢,和进程相比较,线程是一个十分节俭的多任务操作方式,运行于一个进程中的多个线程,他们之间使用相同的地址空间,而且线程之间批次切换事件所需的时间远远小于进程之间切换所需要的时间。如果CPU是多核的那么线程之间就是同时的工作,但是如果CPU是单核的那么就只能一个一个来了。但是一个核,对于线程来说,线程也是有意义的,如果一个线程需要数据,我们就可以让其他的线程来执行,不至于让CPU剥夺进程使用CPU的使用权。线程的好处:1.线程比进程节俭,线程消耗的是进程

2022-03-07 21:50:57 156

原创 计算机网络的七层框架

OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别从下往上是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。1.物理层(Physical Layer)物理层是OSI分层结构体系中最重要、最基础的一层,它建立在传输媒介基础上,起建立、维护和取消物理连接作用,实现设备之间的物理接口。物理层只接收和发送一

2022-03-07 20:20:02 7341

原创 内核,进程,线程之间的关系

内核:在计算机科学中,内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。简单的说,内核就是承上启下,承上是内核接收软件所发出的需求,来给分配资源,进行处理。启下就是内核合理的分配和管理硬件资源,来为上层提供服务。进程:1、用户角度

2022-03-07 20:05:11 2849

原创 手动创建text1,text2,编程创建text3,将text1和text2除了第一行和最后一行,其他行对应数字相加放在text3对应位置

1.按有进位方式来写:#include <stdio.h>#include <string.h>//手动创建text1,text2,编程创建text3,将text1和text2除了第一行和最后一行,其他行对应数字相加//放在text3对应位置int main(int argc, char **argv){ FILE *fp1, *fp2, *fp3; //指向文件的指针变量 char ch1, ch2, ch3; fp1

2022-03-07 09:20:05 323

原创 进程间通信编程

1.进程间通信方式概述进程间通信是在不同进程之间传播或者交换信息。进程间通信方法有:管道(无名和有名管道),消息队列,信号量,共享内存,信号,套接字等进程间通信的目的:1、数据传输,2、共享数据,3、通知事件,4、资源共享,5、进程控制2.管道通信管道有无名管道和有名管道,无名管道是适用于父子进程或者兄弟进程之间,进程之间存在联系的,可以用管道。 有名管道,不仅父子,兄弟进程可以使用,没有关系的两个进程也可以使用,有名管道克服了管道没有名字的限制。所以才可以字无关系的进程之间建立通信。传递的数据

2022-03-05 23:03:50 1221

原创 进程控制编程

内存和cpu 以进程为单位作为资源分配的单位。进程由系统内核管理线程为进程服务,内核不管理他。进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。程序是放到磁盘的可执行文件。进程是指程序执行的实例在liunx系统中,当一个程序开始执行后,在开始执行到执行完毕退出这段时间里,它在内存中的部分就被称作一个进程。进程是一个状态变化的过程,程序是可长久保存的。进程的组成包括程序,数据,和进程控制块。进程是动态的。程序是静态的。进程和程序的对应关系:通过多次执行,一个程序可

2022-03-03 22:43:46 382

原创 系统调用API的使用(通讯录的写出和读入)

通讯录是拿链表来写的一个小项目,可以很好的锻炼链表的使用,但是当我们输入联系人信息之后,想要保存就需要我们将链表里面的信息写进我们到文件里,当我们再运行这个程序时,可以把我们存储的信息再给我们读会内存。这里需要两步操作,一步是保存,一步是读入。先看第一步:保存(思路)首先我们所有的联系人都在我们自己创建的每一个结点里,也就是说,我们链表中每一个结点就是我们要保存的联系人的信息,我们要将这些结点一个一个的放进我们的文件中保存起来,(这里实现都是系统调用没有用C库函数)这里用到文件编程中的系统调用API,w

2022-03-02 20:11:31 181

原创 数据库(SQLite3)

SQL

2022-02-28 14:09:28 126

原创 C语言操作数据库(SQLite3)调用接口函数

C语言连接数据库首先我们需要有数据库,所以我们需要创建数据库,在linux环境下进入sqlite3模式下,顺便在后面写上数据库名:首先定义一个数据库指针类型,然后调用数据库的接口函数:sqlite3_open(“数据库名”,指针地址)”,函数功能:打开一个数据库,如果这个数据库文件不存在,则自动创建,打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行。并且让上面定义的指针指向这个数据库。ret 变量是用来接收这个接口函数的返回值,这个函数的返回值是SQLITE_OK 它的值也

2022-02-28 14:08:03 5281

原创 文件编程(系统调用(Liunx),C库)

实现文件编程有两种:1、系统调用实现的文件比编程 2、C库实现的文件编程1.系统调用实现的文件编程用户空间调用系统空间只能通过相应的API(接口)来实现,也就是说,系统的资源不是说用户空间想用就用的,系统自己有自己的保护机制,想使用系统资源必须通过相对应的接口来实现。Linux的文件类型有: 普通文件,目录文件,链接文件,设备文件(安装相对对应的驱动文件就相当于使用的是设备)文件描述符:是一个非负整数...

2022-02-25 20:59:12 1020

原创 快速排序(C语言)

首先我们要对一组数据进行排序:在数组中选一个基准数(通常为数组第一个,黄圈圈标记了);将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边,怎么移动,后面说;对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。好了,咱们开始吧!快速排序需要两个哨兵,i 和 j,分别指向数组的头和尾。接下来就要进行移动。我们通常选择第一个元素作为基准数,去移动数组元素,使其达到这个基准数的左边都是小于它的,右边都是大于它的。开始移动 i 和 j ,

2022-02-23 21:06:51 64554 28

原创 栈的运用(不带括号的加减乘除)

例如计算 2+3*4-1/5这个式子,在计算机中如和那代码实现首先明白整体的思路:这里由操作数和运算符,所以这里我们要创建两个栈,来分别充当操作数栈和运算符栈,好,现在创建栈。栈的特点是先进后出,这里我们创建一个结构体这里把top当成一个指示标志,来记数,这里设置了data数组的最大内存容量是10,所以看下图,这里需要对我们上面定义的结构体初始化。初始化为-1,后面再++时,可以和数组下标对上,当top=9时说明栈已经满了top初始化的函数这里需要创建两个栈,一个时运算符的栈,一个是操

2022-02-22 20:15:32 432

原创 平衡二叉数的旋转

平衡二叉数平衡二叉数是二叉数,还有一个平衡因子的概念,就是二叉数中的某个结点的左右子树的高度之差称之为这个结点的平衡因子。注意:平衡因子是左子树高度减去右子树高度。平衡二叉数是另一种形式的二叉查找树,特点:左右子树的高度之差的绝对值不大于1,称这样的二叉数是平衡二叉数。上图就是一个平衡二叉数,所有结点的平衡因子都不大于绝对值1下图就不是平衡二叉数,有的结点的平衡因子的绝对值超过了1.那么我们如何来调整使其重新变回成一个平衡二叉数呢?下面介绍四种方法:1、LL型上图代码解释:p和c

2022-02-21 19:08:10 329

原创 带头结点的双向循环链表

思路:1、首先定义一个结构体,定义一个结构体指针类型,为创建结点做准备。2、创建头指针,和空链表,这里注意一级指针和二级指针的实参和形参的传 递。3、插入结点也要创建结点,再插入,后面再根据需要进行插入,删除,等操作。#include <stdio.h>#include <stdlib.h>#define CREATE_OK 1#define CREATE_NO 0#define MALLOC_OK 1#define MALLOC_NO 0/* *双向循环

2022-02-21 10:28:09 823

原创 带头结点的顺序栈

#include <stdio.h>#include <stdlib.h>#define SIZE 10enum ret_vla{MALLOC_OK = 100, MALLOC_NO, CREATE_OK, CREATE_NO, FULL_OK, FULL_NO, EMPTY_OK, EMPTY_NO, PUSH_OK, PUSH_NO, POP_OK, POP_NO};//顺序栈struct stack_node{ int stack_data[SIZE]

2022-02-19 22:01:58 393

空空如也

空空如也

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

TA关注的人

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