自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】异常 Exception

异常编程过程中的常见错误类型语法错误逻辑错误异常异常是一种在程序运行过程中可能会发生的错误(比如内存不够)异常如果没有被处理,会导致程序终止。如果觉得这个操作可能会抛出异常(系统抛出的),就使用try-catch,一旦try里发生异常就转到catch部分for (int i = 0; i < 99999; i ++) { try { int *p = new int[99999999]; // 可能会内存不够抛出异常 } catch(...) { /

2022-01-27 09:44:51 1513 1

原创 【C++】lambda表达式

Lambda表达式完整结构[capture list] (params list) mutable exception -> return type { function body }有时可以省略部分结构,但中括号绝对不能省int main() { [] { cout << "func()" << endl; }; // 这就是一个lambda表达式,但运行不会打印func()因为这只是个定义,并没有调用

2022-01-27 09:35:11 663

原创 【C++】 类型转换

类型转换(type) expression / type (expression)C++中有四个类型转换符static_castdynamic_castreinterpret_castconst_cast使用格式:xx_cast <type> (expression)比如:int a = 10;double d = static_cast<double> (a);const_cast一般用于去除const属性,将const转换成非cons

2022-01-27 09:18:04 504

原创 【C++】运算符重载 Operator Overload

运算符重载 Operator Overload可以为运算符增加一些新的功能class Point {private: int m_x; int m_y;public: Point(int x, int y) :m_x(x), m_y(y) {} void display() { cout << "(" << m_x << ", " << m_y << ")" << endl; }};直接将两个Point类

2022-01-27 09:00:17 273

原创 【C++】智能指针 Smart Pointer

智能指针智能指针 Smart Pointerauto_ptr智能指针的自实现shared_ptrweak_ptrunique_ptr智能指针 Smart Pointer用来改善传统指针的问题需要手动管理内存容易发生内存泄露(忘记释放、出现异常等)比如:一旦test()抛出异常,p指针的内存就不会被释放,发生内存泄露。释放后产生野指针智能指针就是为了解决传统指针存在的问题auto_prt:属于C++98标准,在C++11已不推荐使用(有缺陷,比如不能用于数组shared

2022-01-25 10:27:03 215

原创 【C++】友元、内部类、局部类

友元、内部类、局部类友元友元函数友元类内部类局部类友元友元包括友元函数和友元类友元函数举例来说,Point类描述了一个点的xy坐标,在另一个将两个点的横纵坐标相加而得到新的点的函数中,需要调用getX()和getY()来得到点的横纵坐标,因为m_x和m_y是private的不能外部访问。但这样的效率是不高的。每执行一次add就要执行四次get,四次栈空间的开辟和回收。class Point {private: int m_x; int m_y;public: int

2022-01-25 10:14:14 201

原创 【C++】拷贝构造函数 Copy Constructor

拷贝构造拷贝构造函数 Copy Constructor继承父类浅拷贝、深拷贝对象型参数和返回值匿名对象(临时对象)隐式构造拷贝构造函数 Copy Constructor也是构造函数的一种当利用已存在的对象创建一个新对象时(类似于拷贝),就会调用新对象的拷贝构造函数进行初始化。拷贝构造函数的格式是固定的,接收一个const引用作为参数class Car { int m_price; int m_length;public: Car(int price = 0, i

2022-01-25 09:47:37 565

原创 【C++】静态成员 static

静态成员静态成员 staticstatic应用单例模式new\delete误区静态成员 static静态成员:被static修饰的成员变量/函数,只占一份内存存储在数据段(全局区,类似于全局变量)可以通过对象访问(对象.静态成员)对象指针访问(对象指针->静态成员)类访问(类名::静态成员)Car::m_price = 400必须初始化,必须放在类外面初始化再使用,在外面不能再写static了不能使用int m_price = 0;,这样只是初

2022-01-24 06:57:02 220

原创 【C++】多继承

多继承多继承菱形继承虚继承多继承C++允许一个类可以有多个父类(不建议使用,会增加程序设计复杂度)struct Student { int m_score; void study() { cout << "Student::study() - score = " << m_score << endl; }};struct Worker { int m_salary; void work(

2022-01-24 06:35:37 1027

原创 【C++】三大特性:封装、继承、多态

访问权限C++通过public、protected、private三个关键字来控制成员变量和成员函数的访问权限,他们分别表示公有的、受保护的、私有的,被称为成员访问限定符。在类的内部(定义类的代码内部),无论成员被声明为public、protected还是private,都是可以互相访问的,没有访问权限的限制。在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问public属性的成员,不能访问private、private属性的成员。?? 无论公有继承、私有继承还是保护继承,私

2022-01-24 06:15:45 671

原创 【C++】 类、对象内存布局、声明实现分离

类类对象的内存布局类的声明和实现分离类用 struct 和class 来定义一个类C语言里struct是结构体,不能往里面写函数C++中struct是类,可以往里面写函数利用类创建对象struct Person { int age; void run() { cout << "Person::run - " << age << endl; }}int main() { Person

2022-01-23 07:35:55 232

原创 【C++】构造函数和析构函数

构造&析构构造函数 Constructor析构函数 Destructor构造函数 Constructor也叫构造器,再对象创建的时候自动调用,一般用于完成对象的初始化工作。struct Person { int m_age; Person() { m_age = 0; cout << "Person()" << endl; } Person(int age) { m_age = ag

2022-01-23 06:46:06 210

原创 【C++】 内存空间布局、new/delete、malloc/free

内存空间的布局每个应用都有自己独立的内存空间,其内存空间一般都有以下几大区域栈空间每调用一个函数就会自动分配一段连续的栈空间来存储函数产生的局部变量,等函数调用完毕后会自动回收自动分配和回收堆空间需要主动去申请和释放在程序运行过程,为了能够自由控制内存的生命周期、大小、会经常使用堆空间的内存(需要用的时候就申请,不需要的时候手动释放malloc \ free输入所需要的字节数,如果申请堆空间内存成功则返回第一个字节的地址。int *p = (int *) malloc

2022-01-23 05:38:55 154

原创 【C++】内联函数与宏 inline & define

内联函数与宏(inline & define)使用inline修饰函数的声明或者实现,可以使其变成内联函数写在声明或实现都可以,建议声明和实现都增加inline修饰。内联函数声明必须在调用语句之前。作用?编译器会将函数调用直接展开为函数体代码原本main函数中只有一行代码,但函数体中有三行代码,在编译时就会将一行代码自动展开成三行代码。有啥意义呢?在调用函数时,会开辟栈空间,函数结束后会回收栈空间。连续调用函数就会连续开辟回收栈空间。——>> 内存开销较大

2022-01-23 05:10:56 236

原创 【C++】 引用 Reference

引用 Reference在C语言中,使用指针(pointer)可以间接获取、修改某个变量的值。int a = 10;int *p = &a;*p = 20;// a = 20;在C++中,使用引用(Reference)可以起到跟指针类似的功能。引用的本质就是指针,指示编译器削弱了它的功能,所以引用就是弱化了的指针。int age = 10;// 定义了一个age的引用,refAge相当于是age的别名int &refAge = age;refAge = 20; //

2022-01-23 04:41:31 305

原创 【数据结构】排序算法及优化整理

排序算法选择排序 Selection Sort思路:每次遍历找到剩余数组中最小的元素,并依次swap到数组开头时间复杂度:O(n^2)template <typename T>void selectionSort(int arr[], int n) { for( int i = 0; i < n; i ++ ) { // 寻找[i ... n-1]的最小值 int minIndex = i; for( int j

2022-01-21 11:03:31 361

原创 【刷题笔记】二叉树

二叉树 Binary Tree常见种类刷题时的常见二叉树:满二叉树和完全二叉树满二叉树如果一棵二叉树只有度为 0 的结点和度为 2 的结点,并且度为 0 的结点在同一层上,则这棵二叉树为满二叉树。深度为k,有2^k-1个节点。完全二叉树除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含1~2^h - 1个节点。优先级队列其实是一个堆,堆是一棵完全二叉树,同时保证父子节点的顺序关系。二叉搜索树 BST

2022-01-21 10:47:14 728

原创 《Linux高性能服务器编程》学习笔记

《Linux高性能服务器编程》学习笔记Linux高性能服务器编程TCP/IP协议族TCP/IP协议族体系结构以及主要协议数据链路层网络层传输层应用层封装分用测试网络ARP协议工作原理以太网ARP请求/应答报文详解ARP高速缓存的查看和修改DNS工作原理DNS查询和应答报文详解Linux高性能服务器编程TCP/IP协议族TCP/IP协议族体系结构以及主要协议TCP/IP协议族是一个四层协议结构,自底向上分别是数据链路层,网络层,传输层和应用层数据链路层功能:实现了网卡接口的网络驱动程序,以处

2022-01-06 07:31:35 1043

原创 【计算机基础】计算机网络

文章目录计算机网络计算机网络的层次结构层次结构设计的基本原则OSI七层模型TCP/IP四层模型现代互联网的网络拓扑边缘部分核心部分树状结构计算机网络的性能指标**速率Mbps = bit/s****时延****往返时间RTT(Route-Trip Time)**物理层作用信道信道的分用-复用技术数据链路层封装成帧透明传输差错检测奇偶校验码循环冗余校验码CRC最大传输单元MTU以太网协议详解MAC地址以太网协议MAC地址表计算机网络计算机网络的层次结构层次结构设计的基本原则当计算机A和计算机B进行通信

2021-12-08 09:21:46 604

原创 【机器学习】使用UE4制作KITTI格式数据集

简介KITTI数据集简介Label解析简介项目中使用到一个3D bounding box的开源项目,项目中使用的是KITTI自动驾驶数据集,队友使用NVIDIA Deep learning Dataset Synthesizer生成我们项目所需的虚拟数据集,需要将json格式的虚拟数据集转换成KITTI格式的数据集来使用。要完成格式转换就需要将KITTI数据集label的各项参数搞懂。本文前部分会总结一些我现在所理清的参数含义,参考了KITTI的devkit中的readme.

2021-11-29 04:10:22 3118 8

原创 【计算机基础】存储器层次 Memory hierarchy

​我们是如何构建指令 / 数据存储器的?以64位Arm处理器为例,内部有32个寄存器Register file? Flip-flop构建32个64-bit 寄存器 -> 2Kb = 256Bytes可以使用多端口,bigger and slower but still okInstruction / data memory? 也是Flip-flop构建each instruciton address has 64 bits -> 2^64 addressible unit -&gt

2021-11-28 00:29:05 358

原创 【计算机基础】 操作系统总结(未完)

操作系统基础篇多道程序设计早期批处理系统只能一次处理一个任务,多道程序设计可以让计算机一次处理多个任务多道程序设计是指在计算机内存中同时存放多个程序多道程序在计算机的管理程序下相互穿插运行操作系统概览是管理计算机硬件和软件资源的计算机程序是管理硬件、提供用户交互的软件系统通过管理配置内存、决定资源供需顺序、控制输入输出设备等来管理提供让用户和系统交互的操作界面基本功能操作系统统一管理着计算机资源处理器资源存储器资源IO设备资源文件资源操作系统实现了对计算

2021-11-27 12:55:20 245

原创 【计算机基础】 Virtual memory 虚拟内存

Virtual memory 虚拟内存虚拟内存的作用将主存看成存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,高效实用主存为每个进程提供一致的地址空间,简化内存管理保护每个进程的地址空间不被其他进程破坏保护:一组确保共享处理器、主存、I/O设备的多个进程之间没有故意地,无意地读写其他进程的数据机制物理地址和虚拟地址 Physical Address & Virtual Address物理地址: 主存储器的地址物理寻址: CP

2021-11-27 00:02:35 1902

原创 【ML】Principle Component Analysis 主成分分析

Linear dimensionality reductionDimentionality reductionMap the dataset with dimension d to the dataset with dimension k, and d > k.x=(x1⋮xd)d×1→(y^1⋮y^k)k×1=y^, k⩽dx = \begin{pmatrix}x_{1}\\ \vdots \\ x_{d}\end{pmatrix}_{d \times 1}\righta

2021-11-07 23:10:59 239

原创 【ML】Linear Least Squares Regression

Feature space:Label space : Predict label value: Parameters: Learning problem: given a set of feature vectors...

2021-11-07 02:46:47 155

空空如也

空空如也

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

TA关注的人

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