C/C++笔记
文章平均质量分 85
猿太极
人间BUG制造机,专和产品打太极
展开
-
Linux编程学习笔记-网络编程之TCP基础
网络编程学习-TCP基础知识原创 2022-08-31 09:05:53 · 575 阅读 · 1 评论 -
泛型编程基础知识详解
学习C++泛型编程基础部分笔记原创 2022-07-15 18:01:46 · 360 阅读 · 0 评论 -
C_C++算法_堆排序
堆排序特点堆是非线性数据结构,相当于一维数组,有两个直接后继。堆通常是一个可以被看做一棵树的数组对象,堆总是满足两个条件堆中某个结点的值总是不大于或不小于其父结点的值和堆总是一棵完全二叉树。堆排序的最典型应用就是优先队列,根结点最大的堆叫做大顶堆,根结点最小的堆叫做小顶堆。因此,二叉堆排序是在插入元素和删除元素的时候进行的。堆是一个一维数组,同时也是一棵完全二叉树。因此,可以将堆按照从上到下从左到右的顺序将数组的索引号与树的各个节点进行映射,如下所示:具体映射关系是任意父节点左边的索引号是自身的2原创 2022-04-20 22:23:09 · 1136 阅读 · 1 评论 -
VS2019编译 ODB 开源项目以及示例程序运行详解
文章目录编译准备配置ODB工具环境编译ODB运行时库编译ODB驱动Sqlite源码编译libodb-sqlite-2.4.0编译运行实例程序编译准备ODB是一个开源、支持多平台、多数据库基于C++的ORM框架,可将C++类对象与数据库表映射,进行轻松的数据库查询和操作,编译使用时需要在官网下载三个库包括:odb-2.4.0-i686-windows、libodb-2.4.0、libodb-sqlite-2.4.0,作为学习还需要下载odb-examples-2.4.0。配置ODB工具环境odb-2原创 2022-01-03 00:22:22 · 1852 阅读 · 2 评论 -
Clion + OpenCV4.5.4 + VS2019配置详解
Clion + OpenCV4.5.4 + VS2019配置详解环境变量配置创建测试项目编辑CMakefileLists设置OpenCV路径查找模块文件拷贝动态库OpenCV内置变量设置附加目录测试程序环境变量配置下载并安装OpenCV,安装后的目录如下:本文使用的是VS2019的带的VC16版本的编译器,环境变量配置如下:创建测试项目使用Clion创建C++项目,由于使用的OpenCV是VC14的库,创建时语言标准也选择14,如下图所示:编辑CMakefileLists设置OpenCV原创 2021-12-30 09:41:50 · 2892 阅读 · 0 评论 -
C++ map容器学习笔记
文章目录map初始化添加元素访问元素删除元素multimap初始化添加数据访问元素删除元素unordered_map初始化添加元素访问元素删除元素自定义类型键unordered_multimap初始化添加元素访问元素删除元素map初始化创建一个key=string且value=int的map空容器。#include <map>int main(int argc, char * argv[]) { std::map<std::string, int> map_v原创 2021-12-09 08:57:37 · 327 阅读 · 0 评论 -
C++序列容器学习笔记
文章目录序列容器分类array数组容器初始化访问元素迭代器容器比较vector向量容器初始化容量和扩容访问元素迭代器添加元素删除元素deque双向队列容器初始化访问元素添加和删除元素list链表容器初始化访问元素序列容器分类array<T, N>[数组容器]一个固定长度的序列,有N个T类型的对象,不能增加或删除元素。vector[向量容器]一个可变长度的序列,用来存放T类型对象,可自动增加容量,只能在末尾高效地增加或删除元素。deque[双向队列容器]一个原创 2021-11-23 09:06:23 · 201 阅读 · 0 评论 -
Window网络编程之粘包和拆包
Window网络编程之粘包和拆包发送与接收SO_SNDBUFSO_RCVBUF粘包和拆包Nagle算法MTUMTU传输优化算法规则处理方式定长协议变长协议发送与接收在TCP的Socket中有两个缓冲区分别是发送缓冲区(SO_SNDBUF)和接收缓冲区(SO_RCVBUF)。SO_SNDBUF每次程序调用send发送数据时将要发送的数据先拷贝到发送缓冲区中,然后send函数返回了。也就是说,send函数结束后数据可能并没有发送到对端,仅仅是把应用层的buffer中的数据放到了socket内核的缓冲区。原创 2021-04-07 08:53:37 · 294 阅读 · 0 评论 -
Window网络编程之Select模型
目录select基本原理使用需求服务端select模型初始化select观察事件客户端select模型select基本原理网络通信被Unix系统抽象为文件的读写,通常是一个设备由设备驱动程序提供,驱动可以知道自身的数据是否可用,设备的文件的资源如果可用则会通知进程,反之则会让进程睡眠,等到数据到来可用的时候,再唤醒进程。select就是将这些设备的文件描述符被放在一个数组中,然后select调用的时候遍历这个数组,如果对于的文件描述符可读则会返回改文件描述符。当遍历结束之后,如果仍然没有一个可用设备文原创 2021-03-29 09:09:02 · 410 阅读 · 0 评论 -
Window网络编程之简单TCP建立
Windows下Socket编程之简单TCP通信步骤分解搭建SOCKET开发环境开发环境说明启动SOCKET说明创建TCP服务器创建SOCKET原型使用绑定端口原型使用监听连接原型使用连接客户端原型使用向客户端发送数据原型使用关闭服务器原型使用创建TCP客户端创建SOCKET使用连接服务器原型使用接收数据原型使用运行结果步骤分解服务端建立步骤说明涉及函数建立服务端SOCKETsocket绑定服务IP和端口bind监听网络端口listen等待建立连接ac原创 2021-03-27 21:05:31 · 861 阅读 · 0 评论 -
C++线程开发_锁
C++线程开发_锁线程执行顺序互斥量(mutex)lock和unlocklock_guardunique_lock等待函数等待函数解析线程执行顺序在启动多个线程时线程的执行顺序完全却决于CPU的线程调度机制有关,因此可能存在线程运行期间是无法保证顺序的,而且随时会被切换到另一个线程,线程的调度不可控因此也就产生了多个线程访问同一个数据时,造成数据脏读这一类问题,其中最经典的例子就是多个线程买票问题,简单示例代码如下:#include <iostream>#include <thre原创 2021-03-02 11:20:00 · 221 阅读 · 0 评论 -
C++线程开发_使用基础
C++线程的基础使用包括各种创建启动线程的方式原创 2021-03-02 11:08:55 · 467 阅读 · 0 评论 -
C++智能指针使用详解
C++智能指针总结概述shared_ptr的基础使用方式成员函数use_count()swap()reset()unique()get()管理数组weak_ptr成员函数lock()expired()unique_ptr成员函数概述在开发C++代码时,内存管理是一个很麻烦的事情在编程过程中最好的习惯是谁申请谁释放。但是,常常有人会忘记在new后使用delete、在malloc之后使用free或者最糟糕的是根本不知道谁创建的。这就有了智能指针的用武之地,智能指针可以保证在一定作用域内指针是安全有效,除了作原创 2021-03-02 09:20:26 · 1907 阅读 · 0 评论 -
UML类图绘制_常见设计模式
UML类图常用的类图元素UML类图的应用创建型模式简单工厂模式工厂方法模式抽象工厂模式建造者模式单例模式模式结构型模式适配器模式桥接模式装饰模式门面模式享元模式代理模式结构型模式命令模式中介者模式观察者模式状态模式策略模式常用的类图元素电脑类图结构为<<abstract>>,表示电脑是一个抽象类;电脑类有两个继承类分别为平板电脑和台式电脑,电脑类与两个继承类之间的关系为实现关系,使用空心箭头的虚线表示;平板电脑与MetePad Pro之间也是继承关系的一种,它们原创 2021-03-02 08:59:42 · 1099 阅读 · 0 评论 -
C_C++算法_排序算法
整合几种典型排序算法思路、代码实现和测试结果原创 2021-02-22 15:20:54 · 430 阅读 · 0 评论