自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试笔记

文章目录C/C++C++11新特性宏定义交换两个不确定类型的变量extern关键字的作用在C++ 程序中调用被 C编译器编译后的函数,为什么被包含 extern "C"?头文件卫士的作用C中全局变量 局部变量能同名吗? 如果同名怎么访问全局变量sizeof与strlen的区别struct的作用访问类的私有成员时,友元类和该类的get和set函数哪一个更好socketTCP协议服务器端的编程模型,用到哪些函数select函数前置声明,解决头文件重复包含的问题在抽象类中,如果想增加一个接口,把该接口定义在所有.

2021-03-04 20:59:25 210 1

原创 数据库笔记

数据库介绍为什么使用数据库计算机的资源有限,因此不可能吧数据一直存储在内存中,而且内存一旦掉电数据就会不存在,我们需要吧内存中的数据保存在文件中,方便下次编辑,拷贝但随着程序越来越复杂数据也会越来越大,管理这些数据就会变成编程中最难,最重要的问题使用文件保存不安全,可能会被误删除,覆盖,而数据库的访问需要用户名密码及相应的权限和命令文件读取数据并解析数据需要大量的重复代码,并且这种操作效率很低,从数据库中查询数据,只需要提供条件即可文件中删除一条记录异常麻烦,而且不同的程序对于文件的操作不.

2021-02-22 21:47:04 218

原创 UML

#UMLUML概述什么是UML统一建模语言(Unified Modeling Language)用于说明,可视化,构建和编写一个正在开发的,面向对象的,软件密集系统的开发方法,UML展示了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效UML是做什么的帮助建立软件开发过程和各种模型主要目的是为了让开发者之间进行有效的交流开...

2019-09-03 18:31:39 328 1

原创 STL 函数模板,类模板

模板为什么使用模板C/C++是一种静态类型语言(预处理->汇编->编译->链接),好处是速度快,缺点是实现通用代码麻烦,例如:实现支持所有类型的快速排序借助函数重载实现通用代码,好处是实现简单,但代码段会增加借助宏函数来实现通用代码,类型检查不严格借助回调函数实现通用代码,使用麻烦由于以上原因,C++之父在C++中实现了模板技术,让C++能够支持泛型编程函数模板...

2019-08-26 20:34:23 257

原创 C++ 异常处理

异常处理抛出异常throw数据抛异常对象抛基本类型注意 不能抛出局部指针或引用注意 如果异常没有被捕获处理,程序就会被停止捕获异常 try{ 可以抛出异常的代码 } catch()//根据数据类型进行捕获 { 处理异常,如果无法处理,可以继续抛出异常 }注意 捕获异常的顺序是自上而下的,而不是最精准的匹配,针对子类异常...

2019-08-24 16:20:16 364

原创 C++typeid

类型信息 typeid用于获取数据的类型信息,返回type_info类型临时对象name成员函数,可以获取类型的名字,内建类型名字使用缩写同时还支持 == != 运算符,用来比较是否是同一类型如果用于判断父子类的指针或引用,它不能准确判断出实际的对象类型,但可以判断出具有多态基础的关系的父子类的指针或引用,它的实际类型的对...

2019-08-24 16:19:15 480

原创 C++ I/O流

I/O流流的打开模式:ios::app 打开文件,用于追加,不存在则创建,存在不清空ios::ate 打开时定位到文件末尾ios::binary 以二进制模式进行读写ios::in 以读权限打开文件,不存在则失败,存在不清空ios::out 以写权限打开文件,不存在则创建,存在则清空ios::trunc 打开文件时清空fstream/istream/ostream类用于文件...

2019-08-24 16:17:14 183

原创 C++强制类型转换

强制类型转换C++中为了兼容C语言,(目标类型)源类型依然可以使用,但C语言中的强制类型转换安全性差,因此建议使用C++中的强制类型转换C++之父认为如果代码设计的完善,根本不需要用到强制类型转换,而C++的强制类型转换之所以很复杂,是为了让程序员多关注代码本身的设计,尽量少使用C++中的强制类型转换保证没有很大的安全隐患static_cast<目标类型>(源类型)编译器...

2019-08-24 16:15:22 268

原创 C++string类的手动实现

#ifndef STRING_H#define STRING_H#include <iostream>#include <cstring>using namespace std;class String{ char* str;public: //构造 String(const char* str = NULL) { ...

2019-08-24 16:03:48 336

原创 C++虚析构

虚析构当使用delete释放一个父类指针时,不管实际指向的对象是子类还是父类,都只会调用父类的析构函数(多态肯定会出现的问题)如果子类的析构函数有需要释放的内存,就会造成内存泄漏为了解决这个问题,可以把父类的析构函数设置为虚函数(析构函数进行覆盖时不会比较函数名)当父类的析构函数为虚函数时,通过父类指针或引用释放子类对象时会自动调用子类的析构函数,子类对象的析构函数执行完成后也会调用父类...

2019-08-24 15:28:40 360

原创 代码详解C++虚函数表

虚函数表在C++类中,一旦成员函数中有虚函数,这个类中就会多一个虚函数表指针,这个指针指向一个虚函数表,表里记录了这个类中所有的虚函数,当这个类被继承,它的子类中也会有一个虚函数表(不管子类中有没有虚函数),如果子类的成员函数中有函数签名与父类的虚函数一样就会用子类中的函数替换它,在虚函数表中的位置,这样就达到了覆盖的效果当通过类指针或应用调用函数时,会根据对象中实际的虚函数表记录来调用函数...

2019-08-24 15:18:31 257

原创 C++虚函数,覆盖,多态

虚函数,覆盖,多态虚函数成员函数前加virtual关键字覆盖子类中会覆盖父类中的虚函数#include <iostream>using namespace std;class Base{public: /*virtual*/void func(void) { cout << "我是Base的func函数"...

2019-08-23 18:34:17 361

原创 C++继承(私有,保护,多重,钻石,虚)

私有继承,保护继承使用 private 方式继承父类public->private其他不变这种继承方式可以防止父类成员的扩散使用 protected 方式继承父类public->protected其他不变可以有限防止父类成员的扩散子类以private/protected方式继承会禁止向上造型(进行类型转换),子类的指针或引用不能隐式转换成父类的指针或引用...

2019-08-23 18:26:58 216

原创 C++类的继承

类的继承共性与特性表达不同类型事物之间共有的属性与行为个性用于刻画每种事物特有的属性和行为共性表示为父类(基类),个性表示为子类(派生类)子类继承自父类基类派生出子类继承的基本语法继承表一个子类可以同时继承0到多个父类,每个父类的继承方式可以相同也可以不同class 子类:继承方式1 父类1,继承方式2 父类2,...{}继承方式public 共有...

2019-08-20 20:56:06 237

原创 详解C++操作符的重载

操作符函数重载什么是操作符函数:在C++中对类类型的对象的运算符,由于它们肯定不支持真正的运算操作,因此编译器会将它们翻译成函数,这种就叫操作符函数(运算符函数),编译器把运算翻译成运算符函数,可以针对自定义的类类型设计它独有的运算功能其实各种运算符已经具备一些功能,再次实现它就是运算符的重载双目运算符:a+b成员函数a.operator+(b)全局函数o...

2019-08-20 20:47:33 402

原创 C++3种继承方式与访问权限

3种继承方式与父类成员访问权限父类成员在不同作用域的访问权限父类成员内部子类外部友元子类对象(public继承)子类对象(protected继承)子类对象(private继承)public✔✔✔✔✔✘✘protected✔✔✘✔✘✘✘private✔✘✘✔✘✘✘三种继承方式的子类对象属于外部访问子类对...

2019-08-20 20:05:03 243

原创 C++父类与子类间构造,析构,拷贝的调用关系

C++父类与子类间构造,析构,拷贝的调用关系构造子类的构造在执行它的构造函数前会根据继承表的顺序执行父类的构造函数默认执行无参构造#include <iostream>#include <stdio.h>#include <cstring>using namespace std;class Base{ char *str;pu...

2019-08-20 19:15:01 1578

原创 C++笔记-Day3(this,构造,析构,静态成员,单例模式)

Day3this指针类的成员变量单独存储在每个类对象中,成员函数存储在代码段中,所有的类对象共享一份成员函数成员函数如何区别调用它的是哪个类对象?this指针,类的每一个成员都有一个隐藏的参数this指针,它指向类对象类的构造函数中也同样有this指针,指向的就是正在构造的这个对象在类中(成员,构造,析构)对成员变量,成员函数的访问都是借助了this指针this指针是隐藏的,但也...

2019-08-16 16:52:19 266

原创 C++笔记-Day2(面向对象,类和对象,构造函数与初始化列表)

day2面向对象编程面向过程编程关注问题解决的步骤,算法面向过程编程关注的是谁能解决问题(类),需要什么样的数据(成员变量),具备什么样的技能(成员函数),才能解决问题抽象 找出一个能够解决问题的对象(观察研究对象),找出解决问题所必须的数据(属性),功能(成员函数)封装 把抽象的结构归结为一个类(数据类型),然后实例化类对象,设置对象的属性,调用对象的功能达到解决问题的目的...

2019-08-16 16:47:42 169

原创 C++笔记-Day1(名字空间,函数重载,引用,内存管理)

C++C++介绍C++之父 Bjarne Stroustrup于1979年4月份贝尔实验室的bjarne博士在分析UNIX系统分布内核流量分析时,希望有一种有效的更加模块化的工具1979年10月完成了于处理器Cpre,为C增加了类机制,也就是面向对象.1983年完成了C++的第一个版本,C With Classes 也就是C++C++于C的不同点:C++完全兼容C的所有内容支持面向对...

2019-08-16 16:44:38 266

原创 利用WSL在VScode下调试LinuxC/C++代码

利用WSL在VScode下调试LinuxC/C++代码先上效果图插件安装在VScode下安装Remote - WSL插件按官方说明进行配置click here.vscode下的两个配置文件:launch.json{ // Use IntelliSense to learn about possible attributes. // Hover to view des...

2019-08-14 23:09:14 1580 1

原创 在VScode配置Linux开发环境

在VScode配置Linux开发环境作为上一篇同主题博客的更新,这是一种新发现的配置方法,也是更加官方的配置方法其实在VScode里就有微软官方的WSL插件这是官方网站(英文)看不懂的就回来看我Getting started安装WSL(Windows Subsystem for Linux注意:对于某些类型的开发,WSL确实存在一些已知的限制,这些限制也会影响您的VS Code...

2019-08-14 22:05:59 5232 1

原创 网络通信-笔记

计算机网络什么是计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理协调下,实现资源共享和信息传递和计算机系统计算机网络的功能数据通信资源共享提高系统的可靠性分布式网络处理和负载均衡计算机网络的组成通信子网 网卡,线缆,集线器,中继器,交换机,路由器资源子网 网络中...

2019-08-11 19:35:51 285

原创 Unix_Linux操作系统-笔记Day11(同步,竞争,互斥)

Day11同步,竞争,互斥#include <stdio.h>#include <pthread.h>int num = 0;void* start_run(void* arg){ for(int i=0;i<1000000;i++){ num++; }}int main(){ pthread_t pid[10] ...

2019-08-11 19:33:22 228

原创 Unix_Linux操作系统-笔记Day10(线程)

Day10线程线程基本概念线程的就是进程中的执行路线,即进程内部的控制序列,或者是进程的子任务(进程就是正在运行的程序,它是一个资源单位)线程就是轻量级的,没有自己独立的内存资源,使用的是进程的代码段,数据段,bss段,堆(没有栈),环境变量表,命令行参数,文件描述符,信号处理函数,工作目录,用户ID,组ID等资源线程拥有自己独立的栈,也就是由自己独立的局部变量一个进程中可以同时拥...

2019-08-11 19:31:19 193

原创 Unix_Linux操作系统-笔记Day9(信号量)

Day9信号量内核维护的计数量,用于管理多进程之间共享资源例如,由个变量n表示资源的数量,当有进程想要独占一个资源时,n的值要-1(或多个),如果n的值等于0(不够减),则进程阻塞,直到n的值可以减再被唤醒,当资源使用完毕后n的值要+1(或多个)int semget(key_t key, int nsems, int semflg);创建/获取信号量key IPC键值nsem...

2019-08-11 19:28:45 196

原创 Unix_Linux操作系统-笔记Day8(进程间通信)

Day8 进程间通信基本概念进程间的通信(IPC)InterProcess Communication两个或多个进程之间的交换数据的过程当多个进程协同工作高效率完成任务时,因为每个进程都是一个独立的个体(资源单位),进程之间就需要通信进程之间通信方式简单进程通信:命令行参数,环境变量表,信号,文件传统进程通信:管道XSI进程间通信:共享内存,消息队列,信号量网络进程通信:so...

2019-08-01 16:00:01 241

原创 Unix_Linux操作系统-笔记Day7(进程)

Day7基本概念进程与程序程序:存储在磁盘上的文件,包含可执行指令和数据的静态实体进程:运行中的程序(一个程序可以执行多次,加载出多个进程),进入活动状态的计算机程序。进程的分类:交互进程:有输入,输出,用户可以根据自己的情况输入数据,得到想要的结果(一般进程)。批处理进程:由脚本加载执行的程序(Linux下的shell,win下的bat)守护进程:总是活跃的,后台运...

2019-08-01 15:58:12 216

原创 Unix_Linux操作系统-笔记Day6(信号)

Day6信号的基本概念中断,中止(非终)当前正在运行的任务,转而执行其他任务(可能返回也可能不返回),中断分为硬件中断(硬件设备产生的中断)和软件中断(其他程序产生的中断)信号:是一种软件中断,提供了一种异步执行任务的机制常见的信号SIGINT(2) Ctrl+CSIGQUIT(3) Ctrl+\SIGABRT(6) 调用abort函数,产生此信号SIGF...

2019-08-01 15:54:47 200

原创 Unix_Linux操作系统-笔记Day5(文件)

Day5stat/fstat/lstat#include <sys/stat.h>用来获取文件的属性,返回 0 成功, -1 失败int stat(const char *path, struct stat *buf);path 需要文件路径int fstat(int fd, struct stat *buf);fd 需要打开后的文件描述符int lsta...

2019-07-27 15:12:54 253

原创 Unix_Linux操作系统-笔记Day4(文件操作,文件同步)

Day4lseek#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);设置文件位置指针返回值 文件指针的位置 功能类似于ftell练习1:实现一个Linux系统下计算文件大小的函数使用系统调用homework练习2:实现一个带...

2019-07-27 15:08:39 233

原创 Unix_Linux操作系统-笔记Day3(内存管理,文件操作)

Day3内存管理自动分配/释放内存(auto_ptrSTL调用标准C++中的new/deletenew/delete构造/析构C++malloc/free标准C调用POSIXbrk/sbrkPOSIX调用Linux系统接口mmap/munmapLinux调用内核接口kmalloc/vmalloc内核调用驱动get...

2019-07-27 15:03:42 262

原创 标准IO和系统IO写入速度比较

标准IO和系统IO写入速度比较众所周知,标准IO的速度要比系统IO快。那为什么系统调用要比标准C库调用慢呢?测试:#include <fcntl.h>#include <stdio.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h>void s...

2019-07-25 11:54:39 674

原创 Unix_Linux操作系统-笔记Day2(错误处理)

Day2错误处理通过函数返回值表示错误返回值合法表示成功,非法表示失败返回有效指针表示成功,空指针(NULL/0xffffffff)表示失败0成功,-1失败永远成功printf练习1:str_len求字符串的长度,若指针为空则报错练习2:str_cpy(char* dest,size_t dlen,char* src)字符串拷贝函数,考虑目标的溢出问题如果目标无效或超出则...

2019-07-23 20:13:59 206

原创 Unix_Linux操作系统-笔记Day1(库)

Day1课程介绍UNIX/linux环境C语言,借助学习操作系统的接口的方法来学习,理解操作系统的运行机制以及一些网络协议。C/C++,数据结构的算法 与平台无关,重点是算法逻辑UNIX/Linux/Android/IOS 平台相关,系统接口。嵌入式/驱动/移植/ 硬件相关,硬件接口环境介绍内存管理文件操作文件管理信号处理进程管理网络通信线程同步UNIX操作系统...

2019-07-23 20:10:43 299

原创 数据结构和算法-笔记

数据结构和算法数据结构 + 算法 = 程序 —— 高纳德数据结构不是一门研究数据计算的学科,而是研究数据与数据之间的关系的数据结构术语数据:能够输入到计算机的描述客观事物的符号数据项:描述事物的其中一项指标数据元素:用于描述一个完整的事物数据结构:由数据元素和元素关系构成的一个整体算法:数据结构所具备的功能(解决问题的方法)4种基本类型的数据结构(逻辑结构)...

2019-07-23 20:03:53 449

原创 图片和文本置顶显示的方法

图片和文本置顶显示的方法前往Windows Store安装Quicklook安装使用如其介绍:举个例子选中一张图片按下空格左上角第一个按钮是置顶开关;第二个按键是内容锁定,关闭时选中其他文件会改变内容完事儿...

2019-07-13 10:19:52 2846

原创 Win10为VScode添加Linux终端(wsl)

为VScode添加Linux终端大多数人在开发C代码时会选择在自己的笔记本电脑上安装一个linux虚拟机,再在虚拟机里打代码,虽然现在电脑的配置都足够了,但我还是非常抗拒这种低效的做法。windows版本:win10 1903效果:下面的Terminal 是Debian 子系统的终端,进行代码的编译和运行1. 启用WIN10 Linux子系统百度其实到这里就可以在linux终端进...

2019-07-11 09:15:40 6233

原创 C笔记19

堆内存管理&字符串2019.5.25堆内存管理什么是堆内存程序在内存是分段:代码段+只读段:二进制指令,常量全局段:初始化过和的全局变量,静态变量静态数据段:没有初始化过和的迁居变量,静态变量栈:局部变量,块变量(采用栈的方式进行管理)堆:数据无序的存储到这一块内存中,受物理内存的限制为什么使用堆内存 1. 栈内存的大小有限 2. 栈内存中的数据释...

2019-05-25 18:48:52 180

原创 为树莓派配置IPV6公网地址

为树莓派配置IPV6公网地址使用6plat服务为树莓派配置IPV6地址前提是树莓派已安装openvpn且已申请到6plat的个人账号1.新建文件输入以下内容并保存为client.ovpnclientdev tunproto tcpremote 46.6plat.org 9185comp-lzoresolv-retry infinitenobindpersist-keyp...

2019-05-11 23:03:30 5714 3

空空如也

空空如也

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

TA关注的人

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