自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 【无标题】

Maven工程间依赖问题记录。

2024-03-05 21:32:14 158

原创 POLL模型

poll模型poll模型和select模型差不多,都是通过轮询的方式监听,但是其缺点较多struct pollfd{int fd; //指定要监听的文件描述符short events; //指定监听fd上的什么事件short revents; //fd上事件就绪后,用于保存实际发生的事件};服务器代码 1 #include<s...

2020-03-26 20:36:57 232

原创 Select模型

select模型在单进程和单线程的C/S模型中,server会阻塞在accept和recv,而accept和recv二者有着相似的原理,即二者都在listen:accept通过serverfd阻塞等待来自client的读事件,当收到读事件之后,accept则会唤醒完成连接对于recv,其通过clientfd阻塞等待来自client的数据,当收到数据之后,recv则会唤醒读取数据由于二者的特...

2020-03-24 20:24:20 239

原创 STL中map、hash_map、unordered_map

一:mapmap是基于红黑树实现的,插入,查找和删除的时间复杂度均是O(logn),对其进行操作的时间复杂度是稳定的插入:O(logN)查看:O(logN)删除:O(logN)二:hash_maphash_map底层是用hash表实现的,利用空间换取时间。插入、查找和删除的时间复杂度均是插入:O(1),最坏情况O(N)。查看:O(1),最坏情况O(N)。删除:O(1),最坏情况O(...

2020-02-22 15:21:01 164

原创 C++观察者模式

简介指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。代码#include<iostream>using namespace std;#include<list>class observe{public: observe(){} v...

2020-01-12 21:36:30 168

原创 C++建造者模式

简介建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。代码#include<iostream>using namespace std;#include<list>...

2020-01-09 16:42:14 108

原创 C++外观模式

简介外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。代码#include<iostream>using namespace std;class Sy...

2020-01-07 11:24:25 124

原创 C++模板模式

简介定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。代码#include<iostream>using namespace std;class Abstract{public: void show() { opera1(); opera2(); } virtual void oper...

2020-01-06 15:01:36 67

原创 C++原型模式

简介原型模式和建造者模式、工厂方法模式一样,都属于创建型模式的一种。简单的来说,我们使用原型模式,就是为了创建对象。但是,在以下场景下,使用原型模式是最好的选择:1.当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的对象比较容易一些;2.有的时候,我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;例如:一个对象,经...

2020-01-03 19:39:01 98

原创 装饰模式

针对的问题1)需要扩展一个类的功能,或给一个类增加附加责任。2)需要动态的给一个对象增加功能,这些功能可以再动态地撤销。UML代码#include<iostream>using namespace std;class person{public: void show() { cout<<"出门穿衣服"<<endl; }};cla...

2019-12-31 10:42:55 88

原创 C++实现反射机制优化简单工厂

在简单工厂模式中,在工厂类中,需要加入switch或者if判断,增加了代码的耦合性,不利于扩展。引入反射机制则可以去除判断,而是根据传入的字符串直接生产对应的实例未加入反射机制的简单工厂class Fruit{public: virtual void eat() = 0;};class apple:public Fruit{public: void eat() { co...

2019-12-29 09:52:10 360

原创 C++实现反射机制

C++是不支持通过类名称字符串”ClassXX”来生成对象的,也就是说我们可以使用ClassXX* object =new ClassXX; 来生成对象,但是不能通过ClassXX* object=new “ClassXX”; 来生成对象。反射是一种通过程序运行过程中用类名创建对象,并获取类的成员和方法。Factory.h#ifndef _FACTORY_H#define _FACTO...

2019-12-28 21:46:16 207

原创 LINUX软链接和硬链接

软连接和硬链接Linux分为两种链接,一种叫做软链接(符号链接),另一种叫硬链接。默认情况下,ln命令产生硬链接软链接(符号链接)软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。硬链接硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编...

2019-12-27 11:10:20 100

原创 代理模式

简介代理模式为其他对象提供一个代理,可以控制对这个对象的访问也就是说在访问这个对象的时候,可以添加一些重复的代码至代理类中,减少调用时的代码量。不用代理模式#include<iostream>using namespace std;#include<string>class Item{public: Item(string kind,bool flag)...

2019-12-19 21:21:32 58

原创 单例模式

单例模式简介1.单例类只有一个实例存在2.必须有这个类本身自行创建实例3.面向整个系统提供这个实例任务管理器使用单例模式单例模式分为饿汉式和懒汉式两种创建步骤:1.构造函数私有化如果构造函数是公共的,那么就可以在类外无限的创建实例。当构造函数是私有的,那么就不能在类外创建实例2.定义一个静态指针指向实例在系统的静态区创建一个实例,利用一个静态指针指向这块区域3.提供一个全局的...

2019-12-18 11:37:17 110

原创 设计模式(简单工厂模式、工厂模式、抽象工厂模式)

前提当逻辑较为简单时,可以直接创建对应的类。代码如下:#include<iostream>using namespace std;class apple{public: void eat() { cout<<"吃苹果"<<endl; }};class banana{public: void eat() { cout<...

2019-12-17 11:29:30 84

原创 字符串和数字的转换

整型和字符串相互转换int转char*char*转intint转stringstring转intstring转char*char*转stringint转char*使用_itoa(int,char*,int)//要转的数字,字符串,进制int main(){ int num1 = 123; int num2 = 456; char str[10]; char *temp = _i...

2019-12-09 21:42:33 84

原创 企业链表(Linux内核链表改进)

#include<stdio.h>#include<stdlib.h>#include<string.h>//节点typedef struct LinkNode{ struct LinkNode* next;}LinkNode;//链表typedef struct LINKLIST{ LinkNode pHead; int size;...

2019-08-02 17:47:10 140

原创 Linux 基本命令1

七个基础命令命令作用ls (list)查看当前文件夹下的内容pwd (print working directory)查看当前所在文件夹cd [目录名] (change directory)切换文件夹touch [文件名] (touch)如果文件不存在,新建文件mkdir [目录名] (make directory)创建目录rm [文件...

2019-07-01 19:45:50 70

原创 统计学习方法(第一章)

1.1 统计学习(1)统计学习分为监督学习、半监督学习、无监督学习和强化学习。监督学习的任务是学习一个模型,使得模型能够对任意给定的输入,对其输出做一个好的预测,监督学习的应用最为广泛(2)输入空间、输出空间、特征空间在监督学习中,输入与输出的所有可能取值的集合分别称为输入空间和输出空间。输入空间与输出空间可能相同,也可能不同,通常输入空间小于输出空间。每个具体的输入是一个实例,通常由...

2019-06-27 19:08:33 381

原创 手推泛化误差上界公式(统计学习方法 )

字不好看,见谅

2019-05-21 14:17:36 1089

原创 算法导论笔记

算法导论学习笔记5-1,2问题复述:假设要雇佣一名新的办公助理,你先前的雇用尝试都失败了,于是你决定找一个雇佣代理。雇佣代理每天给你推荐一个应聘者。你面试这个人,然后决定是否雇佣他。你必须付给雇佣代理一笔小的费用,以便面试应聘者。然后要真的雇佣一个应聘者需要花更多的钱,因为你必须辞退目前的办公助理,还要付一大笔中介费给雇佣代理。你承诺在任何时候,都要找最合适的人来担任办公助理。因此,你决定在面...

2018-09-26 16:34:10 110

C++版本飞机大战,画面精美

纯c++开发,通过上下左右控制玩家飞机,敌机分为三种,道具有两种,都是随机出现的。

2019-01-20

空空如也

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

TA关注的人

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