自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 个人主要笔记总览

个人笔记总览Linux操作系统笔记总览C语言笔记总览C++笔记总览系统编程笔记

2020-07-01 21:00:20 764

原创 C++构造函数用初始化列表进行初始化和构造函数体内赋值进行初始化的区别?

C++构造函数用初始化列表进行初始化和构造函数体内赋值进行初始化的区别?  构造函数初始化列表和构造函数体最大的区别是初始化列表是初始化,而函数体内是赋值操作;  对于普通的数据类型两种操作只有资源消耗的区别。但引用和const常量都是不能被赋值的,它们在类内只能在构造函数的参数初始化列表中被初始化。对于对引用变量和const变量的初始化问题:  在进入构造函数体内时,实际上变量都已经初始化完毕了,即引用变量和const变量都已经用不确定的值初始化好了,构造函数内能做的只有赋值,而const类型和引

2020-07-29 00:34:09 730

原创 STL中迭代器的作用,有指针为何还要迭代器

STL中迭代器的作用,有指针为何还要迭代器 1. 迭代器2. 迭代器和指针的区别3. 迭代器产生原因1. 迭代器  Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。  由于Iterator模式的以上特性:与聚合对

2020-07-28 23:25:51 633

原创 C++设计模式13——建造者(Bulider)模式

C++设计模式13——建造者(Bulider)模式1. 建造者(Bulider)模式介绍2. 为了方便理解,举个例子3. 建造者(Bulider)模式优缺点1. 建造者(Bulider)模式介绍定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。何时使用:一些基本部件不会变,而其组合经常变化的时候。应用实例: =去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。关键代码:建造者:创建和提供实例,指挥者:管理建造出来的实例的依赖关

2020-07-25 18:22:16 303

原创 C++设计模式12——原型(Prototype)模式

C++设计模式12——原型(Prototype)模式1. 原型(Prototype)模式介绍2. 为了方便理解,举个例子3. 原型(Prototype)模式优缺点1. 原型(Prototype)模式介绍定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节而已。如何使用:要提供自己的拷贝构造函数进行深拷贝,方便用户,还应该提供一个clone方法(实际就是去调用拷贝构造函数)关键代码:

2020-07-25 17:40:08 551

原创 C++设计模式11——命令(Command)模式

C++设计模式11——命令(Command)模式1. 命令(Command)模式介绍2. 为了方便理解,举个例子3. 命令(Command)模式优缺点1. 命令(Command)模式介绍定义:  将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。关键代码:定义三个角色:1、received 真正的命令执行对象 2、Command 3、invoker 使用命令对象的入口使用场景:认为是命令的地方都可

2020-07-25 16:14:32 2206

原创 C++设计模式10——外观(Facade)模式

C++设计模式10——外观(Facade)模式1. 外观(Facade)模式介绍2. 为了方便理解,举个例子3. 外观(Facade)模式优缺点1. 外观(Facade)模式介绍定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。应用实例: 1、去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。2、打开家里各种智能

2020-07-25 12:04:43 512 1

原创 C++设计模式9——代理(Proxy)模式

C++设计模式9——代理(Proxy)模式1. 代理(Proxy)模式介绍2. 为方便理解,举个例子3. 代理(Proxy)模式优缺点1. 代理(Proxy)模式介绍定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直

2020-07-24 22:10:34 800

原创 C++设计模式8——单例(Singleton)模式

C++设计模式8——单例(Singleton)模式1. 单例(Singleton)模式介绍2. 看代码,一目了然1. 单例(Singleton)模式介绍定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;单例模式创建步骤:类中:构造函数私有化;增加静态私有的当前类的指针变量;提供静态对外接口,可以让用户获得单例对象;

2020-07-24 21:23:15 362

原创 leetcode105根据前序和中序遍历重建树、106根据中序和后序遍历重建树、889根据前序和后序遍历重建树的任意一种

leetcode105根据前序和中序遍历重建树、106根据中序和后序遍历重建树、889根据前序和后序遍历重建树的任意一种105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树。889. 根据前序和后序遍历构造二叉树返回与给定的前序和后序遍历匹配的任何二叉树。这种类型的题其实就是一种套路,只要函数建的对,做这种题就不用受累!步骤一:建函数,主函数调用。此函数一般包含主函数的两个参数,前序和中序或者中序和后序和前序和后序;还有步骤二的ind

2020-07-24 19:20:02 243

原创 设计模式笔记总览

设计模式笔记总览学编程设计模式前必须要先掌握的知识——类图和类之间的关系设计模式七大原则C++设计模式1——模板方法(Template Method)模式C++设计模式2——策略(Strategy)模式C++设计模式3——观察者(Observer)模式C++设计模式4——装饰(Decorator)模式C++设计模式5——桥接(Bridge)模式C++设计模式6——工厂方法(FactoryMethod)模式C++设计模式7——抽象工厂(AbstractFactory)模式未完待续…

2020-07-19 20:01:55 295

原创 C++设计模式7——抽象工厂(AbstractFactory)模式

C++设计模式7——抽象工厂(AbstractFactory)模式1. 抽象工厂(AbstractFactory)模式介绍2. 为方便理解,举个例子3. 抽象工厂(AbstractFactory)模式优缺点1. 抽象工厂(AbstractFactory)模式介绍定义:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。使用条件:系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。系统一次只可能消费其中某一族产品,即同族的产品一起使用。模式的结

2020-07-19 17:31:55 386

原创 C++设计模式6——工厂方法(FactoryMethod)模式

C++设计模式6——工厂方法(FactoryMethod)模式1. 工厂方法(FactoryMethod)模式介绍2. 为了方便理解,这里举一个例子3. 工厂方法(FactoryMethod)模式的优缺点1. 工厂方法(FactoryMethod)模式介绍定义:  定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。动机:  在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经

2020-07-19 15:25:40 274

原创 C++设计模式5——桥接(Bridge)模式

C++设计模式5——桥接(Bridge)模式1. 桥接(Bridge)模式介绍1. 桥接(Bridge)模式介绍定义:将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。关键代码:抽象类依赖实现类。模式的结构:桥接(Bridge)模式包含以下主要角色。抽象化(

2020-07-18 23:49:07 405

原创 C++设计模式4——装饰(Decorator)模式

C++设计模式4——装饰(Decorator)模式1. 装饰(Decorator)模式介绍2. 为了方便理解,这里举一个例子3. 装饰(Decorator)模式优缺点1. 装饰(Decorator)模式介绍定义:动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在

2020-07-18 18:10:32 321

原创 C++设计模式3——观察者(Observer)模式

C++设计模式3——观察者(Observer)模式1. 观察者(Observer)模式定义、结构与类图2. 为了方便理解,这里举一个例子2.1 例子一2.2 例子二(比较好理解)3. 观察者(Observer)模式优缺点1. 观察者(Observer)模式定义、结构与类图定义:  定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。模式的结构:观察者模式的主要角色如下。抽象主题(Subject)角色:也叫抽象目标

2020-07-18 11:57:06 599

原创 网络编程笔记

Linux网络编程基础1(网络应用程序设计模式,分层模型,协议格式)Linux网络编程基础2(socket编程,字节序,网络套接字函数,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)...

2020-07-18 10:31:37 279

原创 面试最常问的网络IO复用之“select和epoll的区别是什么?”

本文建立在读者已了解IO复用机制的select和epoll模式的基础上进行的总结,如无此方面基础可以翻阅我之前的博客:select相关epoll相关特征selectepoll内核实现通过轮询方式检测就绪事件通过回调方式检测就绪事件时间复杂度O(n)O(1)触发模式LT电平触发LT电平触发,ET边沿触发内部实现select内部使用数组实现epoll维护的红黑树在共享内存中内核区到用户区的转换需要做内核区到用户区的转换,还需要做数据拷贝

2020-07-18 10:31:18 337

原创 Linux网络编程基础7(Linux下libevent的使用(不带缓冲区的event和带缓冲区的bufferent))

Linux网络编程基础7(Linux下libevent的使用(不带缓冲区的event和带缓冲区的bufferent))1. libevent介绍和安装1.1 libevent简介1.2 libevent安装2. 不带缓冲区的event使用流程2.1 创建事件处理框架——event_base2.1 事件创建 ——event_new2.2 设置未决/非未决事件2.2.1 设置未决事件——把event_new事件添加到事件处理框架上2.2.2 设置非未决——从树上摘下event_new事件2.3 事件循环2.3.

2020-07-18 10:31:02 602

原创 C++设计模式2——策略(Strategy)模式

C++设计模式2——策略(Strategy)模式1. 策略(Strategy)模式模板定义和类图2. 为了方便理解,这里举一个例子3. 策略(Strategy)模式优缺点1. 策略(Strategy)模式模板定义和类图  定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。类图:红色部分为稳定,蓝色为非稳定部分  策略模式是准备一组算法,并将这组算法封装到一系列的策略类里面,作为一个抽象策略类的子类。策略模式的

2020-07-17 21:44:27 417

原创 C++设计模式1——模板方法(Template Method)模式

C++设计模式1——模板方法(Template Method)模式1. 模板方法(Template Method)模式的定义和类图如下2. 为了方便理解,这里举一个例子3. 模板方法(Template Method)模式的优缺点1. 模板方法(Template Method)模式的定义和类图如下  定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

2020-07-17 16:51:21 527

原创 设计模式七大原则

设计模式七大原则1. 设计模式的目的2. 设计模式七大原则2.1 单一职责原则(Single Responsibility Principle, SRP)2.2 接口隔离原则(Interface Segregation Principle, ISP)2.3 依赖倒转原则(Dependency Inversion Principle, DIP)2.4 里氏代换原则(Liskov Substitution Principle, LSP)2.5 开闭原则(Open-Closed Principle, OCP)2.

2020-07-17 15:47:35 401

原创 学编程设计模式前必须要先掌握的知识——类图和类之间的关系

学编程设计模式前必须要先掌握的知识——类图1. 类2. 接口3. 类图4. 类之间的关系4.1 依赖关系4.2 关联关系4.3 聚合关系4.4 组合关系4.5 泛化关系4.6 实现关系之前只了解设计模式的一些皮毛,但是整体看文章和一些设计模式的基础知识的时候总会有一些名为“类图”的东西首先介绍某设计模式的各结构之间的关系,下面对类图进行一下学习,更方便的去阅读设计模式的一些文章吧。1. 类类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础,

2020-07-17 13:25:57 669

原创 Linux网络编程基础6(广播,组播,本地套接字通信,心跳包)

Linux网络编程基础6(广播,组播,本地套接字通信,心跳包)1. 广播1.1 广播地址1.2 补充——网关1.3 广播代码的编写流程1.3.1 服务端1.3.2 客户端1.4 广播代码的实现1.4.1 服务端1.4.2 客户端2. 组播1.1 组播地址1.2 组播需要用到的结构体1.3 组播代码实现1.3.1 服务端1.3.2 客户端3. 本地套接字通信3.1 本地套接字进程通信框架3.2 服务端流程及完整代码3.3 客户端流程及完整代码4. 心跳包(了解)UDP的特点是不建立连接,数据传输方式为数据报

2020-07-17 11:16:22 923

原创 Linux网络编程基础5(epoll,epoll三种工作模式,UDP通信流程,TCP和UDP的使用场景)

Linux网络编程基础5(epoll,epoll三种工作模式,UDP通信流程)1. epoll1.1 相关函数1.1.1 epoll_creae1.1.2 epoll_ctl1.1.3 epoll_wait1.2 epoll比select和poll效率高的原因1.3 epoll注意事项1.4 epoll工作流程伪代码1.5 epoll应用实例完整代码1.6 epoll应用实例22. epoll的三种工作模式2.1 水平触发模式(默认工作模式)2.2 边沿触发模式——ET(是阻塞的)2.3 边沿非阻塞触发——

2020-07-16 16:36:49 735

原创 Linux网络编程基础4(TCP通信过程中的主要状态,端口复用,IO复用(I/O多路转接技术)之select、poll)

Linux网络编程基础3(TCP通信过程中的主要状态,端口复用,IO复用(I/O多路转接技术)之select、poll)1. TCP过程中的状态转换1.1 TCP过程中状态转换流程图1.2 分析:哪些状态能捕捉到,哪些捕捉不到(假定客户端发起断开)1.3 半关闭和shutdown函数1.4 netstat命令2. 端口复用3. IO复用3.1 IO操作方式3.1.1 阻塞等待3.1.2 非阻塞,忙轮询3.2 IO操作方式弊端的解决方式3.3 I/O多路转接技术实现步骤3.4 select3.4.1 sele

2020-07-16 01:00:55 316

原创 Linux网络编程基础3(TCP三次握手四次挥手,滑动窗口,多进程、多线程并发服务器)

Linux网络编程基础3(TCP三次握手四次挥手,滑动窗口,多进程、多线程并发)1. TCP建立连接,传送数据,断开连接过程1.1 TCP三次握手建立连接过程1.2 TCP传输数据过程1.3 TCP四次挥手断开连接过程1.4 TCP滑动窗口2. TCP多进程并发服务器2.1 多进程并发服务器创建原理2.2 读时共享,写时复制的原理2.3 多进程并发服务器伪代码2.4 多进程服务端的完整实现例子3. TCP多线程并发服务器3.1 多线程并发服务器伪代码3.2 多线程实现并发的完整实现例子1. TCP建立连接

2020-07-14 22:05:20 604

原创 Linux网络编程基础2(socket编程,字节序,网络套接字函数,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)

Linux网络编程基础2(socket编程,字节序,网络套接字函数,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)1. 套接字概念2. 网络字节序2.1 网络字节序相关概念2.2 相关函数2.3 sockaddr数据结构3. 网络套接字函数3.1 创建套接字3.2 将本地的IP和端口与创建出的套接字绑定3.3 设置==同时==连接到服务器的客户端的个数3.4 阻塞等待客户端连接请求, 并接受连接3.5 链接3.6 创建网络套接字过程总览4. 服务端创建连接的过程5. 客户端创建连接的过程

2020-07-14 13:03:19 442

原创 智能指针auto_ptr、unique_ptr、scoped_ptr、shared_ptr、weak_ptr

智能指针auto_ptr、unique_ptr、scoped_ptr、shared_ptr、weak_ptr1. auto_ptr1.1 作用1.2 缺陷2. unique_ptr3. scoped_ptr4. shared_ptr我们在写代码的时候经常会发生内存泄露情况,如忘记释放堆上指针、在释放前抛出了异常、多线程情况下的问题,这些都是我们不愿意发生的,所以C++有一些用于管理内存的智能指针供我们使用,可以有效防止内存泄露的情况发生。智能指针总体概述:auto_ptr ——不推荐使用shar

2020-07-12 13:57:30 614 1

原创 Linux系统编程——生产者-消费者,领导者-追随者模式线程池的概念和代码

Linux系统编程——线程池的概念和代码1. 线程池结构体2. 如何使用线程池3. 线程池完整代码1. 线程池结构体typedef struct { void *(*function)(void *); /* 函数指针,回调函数 */ void *arg; /* 上面函数的参数 */} threadpool_task_t; /* 各子线程任务结构体 */ /* 描述线程池相关

2020-07-08 16:10:52 251

原创 Linux服务器开发——epoll模式web服务器代码

1. main.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include "epoll_server.h" int main(int argc, const char* argv[]){ if(argc < 3){ printf("eg: ./a.out port path\n"); exit(1); } // 端口 字符

2020-07-08 15:43:38 772 1

原创 TCP和UDP的区别

TCP和UDP的区别1. TCP 是什么2. UDP 是什么3. TCP 和 UDP 的不同1. TCP 是什么TCP 的全称是Transmission Control Protocol ,传输控制协议。它能够帮助你确定计算机连接到 Internet 以及它们之间的数据传输。通过三次握手来建立 TCP 连接,三次握手就是用来启动和确认 TCP 连接的过程。一旦连接建立后,就可以发送数据了,当数据传输完成后,会通过关闭虚拟电路来断开连接。TCP 的主要特点有TCP 能够确保连接的建立和数据包的发送

2020-07-05 11:34:09 236

原创 地址栏输入URL回车之后发生了什么?

地址栏输入URL回车之后发生了什么?首先,浏览器会根据你输入的 URL 地址,去查找域名是否被本地 DNS 缓存,不同浏览器对 DNS的设置不同,如果浏览器缓存了你想访问的 URL 地址,那就直接返回 ip。如果没有缓存你的 URL地址,浏览器就会发起系统调用来查询本机 hosts 文件是否有配置 ip 地址,如果找到,直接返回。如果找不到,就向网络中发起一个DNS 查询。在由根域名服务器 -> 顶级域名服务器 -> 权威 DNS 服务器后,由权威服务器告诉本地服务器目标 IP 地址,再有

2020-07-05 11:19:51 516

原创 Linux服务器开发——HTTP协议相关概念和web服务器实现伪代码

Linux服务器开发——HTTP协议相关概念和web服务器实现流程1. HTTP的特点2. HTTP协议的结构1.1 请求报文(Request) - 浏览器给服务器发1.2 响应报文(Response) - 服务器给浏览器发3. web服务器端伪代码Http协议是一种广泛流行的网络应用层协议。设计HTTP最初的目的是为了提供发布和接收HTML页面的方法。用于客户端和服务器端通信的通信的规则的制定(所谓协议就是约定的规则,好比人与人之间的交流没有约定的规则是无法交流的).只要是遵守Http协议的浏览器

2020-07-05 10:08:33 373

原创 Linux下Git远程仓库GitHub、分支管理和标签管理笔记

Linux下Git远程仓库、分支管理和标签管理笔记1. 远程仓库1.1 添加远程库1.2 从远程库克隆2. 分支管理2.1 分支的创建与合并2.2 解决冲突1. 远程仓库  Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。  其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下。不过,现实生活没有人这么干,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉。  实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务

2020-07-04 14:01:47 486

原创 Linux下C/C++代码整理(格式化)工具astyle

Linux下C/C++代码整理(格式化)工具astyle1. 下载2. 使用最近复制网站上的代码到IDE里面疱的次数比较多,但是格式一般都会有问题,或者不是自己喜欢的风格,介绍一种代码整理工具,还是比较好用的。1. 下载$ sudo apt-get install astyle如果速度比较慢可以翻看我之前的配置软件源的博客,换成国内的镜像,下载速度会快一些。2. 使用使用很方便按照风格给单个文件格式化astyle --style=风格 代码文件常用风格有gnu、linux和goog

2020-07-03 21:42:00 1344

原创 C/C++虚函数和虚函数表概念及实现原理

C/C++虚函数和虚函数表概念及实现原理1. 概述2. 虚函数表构造过程3. 虚函数调用过程4. 多重继承1. 概述每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例:其中:B的虚函数表中存放着B::foo和B::bar两个函数指针。D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基类虚函数B::bar的D::bar,还有新增的虚函数D::quz。2. 虚函数表构造过程从编

2020-07-02 17:20:53 937

原创 各种面经

各种面经STL之迭代器失效的情况C/C++什么是内存泄露,内存泄露如何避免?

2020-07-01 21:02:25 421

原创 C/C++什么是内存泄露,内存泄露如何避免?

C/C++什么是内存泄露,内存泄露如何避免?1. 内存溢出2. 内存泄漏3. 造成内存泄露常见的三种情况3.1 指针重新赋值3.2 错误的内存释放3.3 返回值的不正确处理4. 如何避免内存泄露?5. 内存泄露检测工具valgrind1. 内存溢出  内存溢出 OOM (out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个int,但给它存了long才能存下的数,那就是内存溢出。2. 内存泄漏  内存泄露 memory lea

2020-07-01 20:46:51 21442 2

EM&K-means_Cluster segmentation.zip

两种算法:1.使用EM算法对3通道彩色图片进行聚类分割,给出误差; 2.使用K-means算法对3通道彩色图片进行聚类分割,给出误差。 两者都需要输入聚类个数的数组,实现分割。

2021-03-13

GMM_Clustering .m

MATLAB程序。选择图片,选择要聚类的K值(聚类数),使用高斯混合模型聚类对3通道彩色图像进行分割

2021-03-13

thread_pool.c

利用生产者-消费者模式,领导者-追随者模式实现线程池的动态增加删减实现多线程任务,main函数可自定义线程池最大和最小个数,任务队列的个数

2020-07-26

空空如也

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

TA关注的人

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