自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 吴恩达机器学习笔记2

Linear regression with one variableModel representation来看一个房价预测问题。模型描述中的一些符号。

2022-02-05 03:38:43 725

原创 吴恩达机器学习笔记1

本章包含机器学习的介绍、有监督学习、无监督学习的概念及举例。内含吴恩达教授的课上习题

2022-01-31 00:01:43 1762

原创 png图片读入Matlab变黑问题解决方案

png图片读入Matlab变黑问题解决方案原文标题不太合适,重新取一个合适的标题。原文如下:《Matlab替换PNG图片透明背景为白色(先删除Alpha通道)》https://blog.csdn.net/Ai_King/article/details/103254478?utm_source=app&app_version=4.11.0&code=app_1562916241&uLinkId=usr1mkqgl919blen...

2021-07-19 18:49:40 1190

原创 C语言二级指针做参数输出特性

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int getMem(char* p)//错误{ p = (char*)malloc(100 * sizeof(char)); if (p == NULL) { ret...

2020-06-02 14:35:15 229

原创 软件设计模式-面向对象设计原则及案例分析

软件设计模式-面向对象设计原则一、面向对象设计原则如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计 模式中,它们是从许多设计方案中总结出的指导性原则。原则的目的:高内聚,低耦合。二、七大原则名称定义单一职责原则 类的职责单一,对外只提供一种功能,而引起类变 化的...

2020-04-16 22:51:05 1300

原创 软件设计模式概述

软件设计模式简述一、设计模式的由来设计模式最早由哈佛大学的建筑学博士Christopher Alexander提出,他将设计模式定义为【在特定环境下人们解决某类重复出现问题的一套成功或有效 的解决方案】。后由四人组(Gang of Four,简称GoF)引入软件工程领域。定义为【“软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过 分类编目的、代码设计经验的总结...

2020-04-16 20:56:26 589

原创 C语言二级指针做函数输入的三种内存模型总结

C语言的三种内存模型总结1. 第一种内存模型#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//void printArray(char* p[], int len) ==void printArray(char** p,...

2020-04-07 18:51:47 243

原创 C++ 模板类实现栈的顺序存储和链式存储

SqStack.h#pragma once#include <iostream>using namespace std;template <typename T>class SqStack{public: SqStack(int m = 0); ~SqStack(); void Clear(); bool Empty(); int Length()...

2020-03-25 18:24:05 417

原创 C++根据前中序重建二叉树,并输出后序遍历

给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>#include <string>using namespace std;//Definition for binary treetemp...

2020-03-14 18:18:35 835

原创 C/C++ 链表就地逆置

本文采用改变next指针指向的方法就地逆置;也可采用头插法就地逆置。#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>using namespace std;typedef struct ListNode { int val; struct ListNode* ...

2020-03-14 18:16:27 497

原创 网络编程 协议和网络应用程序设计模式

协议和网络应用程序设计模式一、协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。由此,无论A、B之间传递何种文件,都是通过三次数据传...

2020-03-14 14:43:13 605

原创 C++ 并发编程介绍及一个简单案例

C++ 并发编程介绍及一个简单案例1. 概念计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。并发的实现方法有两种:多进程并发和多线程并发。使用并发的第一种方法,是将应用程序分为多个独立的进程,它们在同一时刻运行,就像同时进行网页浏览和文字处理一样。独立的进程可以通过进程间常规的通信渠道传递讯息(信号量、套接字、文件、管道、共享内存等等)。不过,这种进程之间...

2020-03-13 01:32:25 353

翻译 多线程编程-多线程和多进程之间的区别

《Unix网络编程》原话翻译:1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。3、线程之间的通信更方...

2020-03-05 23:12:37 418

原创 网络编程-多路IO转接模型1-select模型

多路IO转接模型1-select模型在讲select模型之前,要先讲一讲端口复用。在server的TCP连接没完全断开(即connfd: 127.0.0.1:8000没完全断开)不允许重新监听(指的是监听listenfd: 0.0.0.0:8000)是不合理的。它们虽然端口相同,但是IP地址不同,listenfd对应的是wildcard address。解决这个问题的办法是调用setsocko...

2020-03-03 02:36:53 214

原创 网络编程-C实现多线程并发服务器server.c

本文仅将上文中server.c的多进程解决并发问题改为多线程解决并发,其余与上文相同serverc.c#include <stdio.h>#include <string.h>#include <arpa/inet.h>#include <pthread.h>#include <ctype.h>#include <un...

2020-03-03 01:27:09 570

原创 网络编程-C语言实现多进程并发服务器

在Linux操作系统下,服务器通过fork()复制已调用的进程来创建子进程,以此来实现多进程并发服务器C/S模型:server.c 7 步:socket();bind();listen();accept();read();write();close();client.c 7 步:socket();connect()fgets();write();写给服务器read()...

2020-03-03 01:07:56 2122

原创 C++ multiset集合操练

C++ multiset集合操练#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <set>using namespace std;/*multiset是一个集合容器,其中所包含的元素可以不唯一,集合中的元素按一定顺序排列元素插入过程是按排序规则...

2020-02-13 17:24:55 231

原创 C++ set集合模型操练

C++ set集合模型操练#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <set>using namespace std; /* set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定顺序排列 元素插入过程是按排序规则插入,故不可...

2020-02-13 17:15:03 250

原创 C++ priority_queue优先级队列模型

#include <iostream>#include <queue>using namespace std;int main(){ priority_queue<int> p1;//默认最大值优先 priority_queue<int, vector<int>, less<int>> p2;//相当于p1 p...

2020-02-11 03:48:34 201

原创 C++ list容器

C++ list容器#include <iostream>#include <list>using namespace std; /* list是一个双向链表容器,可以高效地进行插入删除操作 list不可以随机存取元素,所以不支持[]操作符和*.at(pos)函数 it++;//right //it+5;//err//因为不能随机存取 */templ...

2020-02-11 03:31:11 135

原创 C++ queue队列模型基本操作

C++ queue队列模型基本操作#include <iostream>#include <queue>using namespace std;class Teacher{public: Teacher(int age) { this->age = age; } void printT() { cout << "age: "...

2020-02-11 02:48:54 224

原创 C++ stack<T>栈模型基本操作

C++ stack栈模型基本操作#include <iostream>#include <stack>using namespace std;class Teacher{public: Teacher(int age) { this->age = age; } void printT() { cout << "age: " ...

2020-02-11 02:33:31 317

原创 C++ deque容器的基本操作

C++ deque容器的基本操作#include <iostream>#include <deque>using namespace std;/*deque是将元素置于一个双向数组中加以管理的容器deque可随机存取元素(索引[]、at())deque在头部或尾部添加或删除元素非常快速,但是在中部插入或删除元素较为费时deque采用模板类实现容器元素的...

2020-02-11 02:08:02 587

原创 C++ vector容器的基本操作

C++ vector容器的基本操作#include <iostream>#include <vector>using namespace std; /* vector是将元素置于一个动态数组中加以管理的容器 vector可随机存取元素(索引[]、at()) vector在尾部添加或删除元素非常快速,但是在中部或头部插入或删除元素非常费时 vector采...

2020-02-11 01:31:00 312

原创 C++ string的操作及常用算法

C++ string的操作及常用算法#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string s1 = "It's a string!"; string s2("string s2!"); string s3(2...

2020-02-11 00:16:45 638

原创 C++ 标准输入输出流

标准输入流#define _CRT_SECURE_NO_WARNINGS #include <iostream>using namespace std;/*cin.get() //一次只能读取一个字符cin.get(一个参数) //读一个字符cin.get(三个参数) //可以读字符串cin.getline()cin.ignore()cin.putback()...

2020-02-02 17:47:54 221

原创 C++ 异常的语法,栈解旋和接口声明,异常的生命周期、层次结构、标准异常库

通过异常可以使原本会发生宕机的异常被特殊处理。程序给出提示,但程序不崩溃。发生异常之后,是跨函数的接收异常之后,可以不处理,再抛出catch异常时,按照类型进行catch异常捕捉严格按照类型匹配#include <iostream>using namespace std;//1 发生异常之后,是跨函数的//2 接收异常之后,可以不处理,再抛出//3 catch异...

2020-02-02 15:23:24 167

原创 C++专属类型转换static_cast、reinterpret_cast、dynamic_cast、const_cast

C++ 风格的类型转换C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统都是TYPE b = (TYPE)a;C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。static_cast 静态类型转化。如int转换为charreinterpret_cast 重新解释类型dynamic_cast 动态类型转换。如子类和父类之间的多态类型转换co...

2020-02-02 14:28:00 154

原创 C++实现模板数组类

利用模板数组类,可以实现类似于容器的功能MyVector.h#pragma once#include <iostream>using namespace std;template <typename T>class MyVector{public: MyVector(int size = 0); MyVector(const MyVector&amp...

2020-01-31 15:30:52 1061

原创 C++ 类模板中的static关键字

对于不同的参数类型,static成员变量不共用,因为二次编译使不同参数类型的模板类分道扬镳,成为完全独立的两个类。#include <iostream>using namespace std;template <typename T>class A{public: static T m_a;protected:private:};template ...

2020-01-31 01:37:53 326

原创 C++ 泛型编程实现复数类

1. 所有函数都写在类的内部#include <iostream>using namespace std;//所有函数都写在类的内部没有出问题template <typename T>class Complex{ friend ostream& operator<<(ostream& out, Complex& c)...

2020-01-31 01:09:17 207

原创 C++ 类模板派生普通类和模板类

#include <iostream>using namespace std;//模板类,类型参数化////类模板的定义//类模板的使用//类模板做函数参数//模板类template <typename T>class A{public: A(T a = 0) { this->a = a; } void printA() { ...

2020-01-30 23:44:10 1053

原创 C++ 函数模板机制探究

C++ 函数模板机制探究1. 函数模板和函数重载在一起#include <iostream>using namespace std;//普通函数可以自动类型转换int Max(int a, int b){ cout << "int Max(int a, int b)" << endl; return a > b ? a : b;}/...

2020-01-30 02:49:37 317

原创 C++ 泛型编程:用函数模板做参数实现快排

利用函数模板实现泛型编程可以提供很大的方便#include <iostream>using namespace std;template <typename T>void myQuickSort(int left, int right, T* arr){ if (left > right) return; T base, temp; int i,...

2020-01-30 01:26:51 362

原创 C/C++ 函数指针做函数参数思想剖析

图解:代码实现#include <iostream>using namespace std;int myAdd(int a, int b){ printf("myAdd : %d\n", a + b); return a + b;}int myMulti(int a, int b){ printf("myMulti : %d\n", a * b); ret...

2020-01-27 15:46:47 145

原创 C++ 数组类型+函数指针语法总结

#include <iostream>using namespace std;//数组类型基本语法总结//定义一个数组类型//定义一个指针数组类型//定义一个指向数组类型的指针 数组指针int main01(){ int a[10]; { //定义一个数组类型 typedef int(myTypeArray)[10]; myTypeArray myAr...

2020-01-27 15:13:53 191

原创 C++ 抽象类实现计算雇员工资

抽象类实现计算雇员工资公司有三类雇员:管理员:Manger(按月薪发工资);钟点工:HourlyWorker(按工时和时薪发工资);计件工:PieceWorker(按月总工件数和工件单价发工资)实现如下:头文件employee.h#define _CRT_SECURE_NO_WARNINGS#include "employee.h"employee::employee(const...

2020-01-24 15:02:05 2048 1

原创 C++ 信息系统框架集成第三方产品

模拟公司信息系统框架继承第三方产品头文件CSocketProtocol.h#pragma once#include <iostream>using namespace std;class CSoketProtocl{public: CSoketProtocl() { ; } virtual ~CSoketProtocl() { ; } //客户...

2020-01-23 22:01:36 321

原创 C++ 纯虚函数的简单实现

纯虚函数的简单实现纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本纯虚函数为个派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)含有纯虚函数的类,称为抽象基类,不可实列化。即不能创建对象,存在的意义就是被继承,提供族类的公共接口。纯虚函数只有声明,没有实现,被“初始化”为0。如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该...

2020-01-22 23:18:52 3762

原创 C++ 多态原理探究

C++中多态的实现原理当类中声明虚函数时,编译器会在类中生成一个虚函数表;虚函数表是一个存储类成员函数指针的数据结构;虚函数表是由编译器自动生成与维护的;virtual成员函数会被编译器放入虚函数表中;存在虚函数时,每个对象中都有一个指向虚函数表的指针(vptr指针)。C++编译器为了实现多态会提前布局,在编译阶段就会为含有虚函数的对象添加一个vptr指针;因此,C++编译器根本...

2020-01-22 13:39:27 145

空空如也

空空如也

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

TA关注的人

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