笔记
BroWuG
我爱大自然
展开
-
Unix_Linux操作系统-笔记Day11(同步,竞争,互斥)
Day11同步,竞争,互斥#include <stdio.h>#include <pthread.h>int num = 0;void* start_run(void* arg){ for(int i=0;i<1000000;i++){ num++; }}int main(){ pthread_t pid[10] ...原创 2019-08-11 19:33:22 · 267 阅读 · 0 评论 -
网络通信-笔记
计算机网络什么是计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理协调下,实现资源共享和信息传递和计算机系统计算机网络的功能数据通信资源共享提高系统的可靠性分布式网络处理和负载均衡计算机网络的组成通信子网 网卡,线缆,集线器,中继器,交换机,路由器资源子网 网络中...原创 2019-08-11 19:35:51 · 305 阅读 · 0 评论 -
C++string类的手动实现
#ifndef STRING_H#define STRING_H#include <iostream>#include <cstring>using namespace std;class String{ char* str;public: //构造 String(const char* str = NULL) { ...原创 2019-08-24 16:03:48 · 351 阅读 · 0 评论 -
C++强制类型转换
强制类型转换C++中为了兼容C语言,(目标类型)源类型依然可以使用,但C语言中的强制类型转换安全性差,因此建议使用C++中的强制类型转换C++之父认为如果代码设计的完善,根本不需要用到强制类型转换,而C++的强制类型转换之所以很复杂,是为了让程序员多关注代码本身的设计,尽量少使用C++中的强制类型转换保证没有很大的安全隐患static_cast<目标类型>(源类型)编译器...原创 2019-08-24 16:15:22 · 283 阅读 · 0 评论 -
C++ I/O流
I/O流流的打开模式:ios::app 打开文件,用于追加,不存在则创建,存在不清空ios::ate 打开时定位到文件末尾ios::binary 以二进制模式进行读写ios::in 以读权限打开文件,不存在则失败,存在不清空ios::out 以写权限打开文件,不存在则创建,存在则清空ios::trunc 打开文件时清空fstream/istream/ostream类用于文件...原创 2019-08-24 16:17:14 · 198 阅读 · 0 评论 -
C++typeid
类型信息 typeid用于获取数据的类型信息,返回type_info类型临时对象name成员函数,可以获取类型的名字,内建类型名字使用缩写同时还支持 == != 运算符,用来比较是否是同一类型如果用于判断父子类的指针或引用,它不能准确判断出实际的对象类型,但可以判断出具有多态基础的关系的父子类的指针或引用,它的实际类型的对...原创 2019-08-24 16:19:15 · 504 阅读 · 0 评论 -
C++ 异常处理
异常处理抛出异常throw数据抛异常对象抛基本类型注意 不能抛出局部指针或引用注意 如果异常没有被捕获处理,程序就会被停止捕获异常 try{ 可以抛出异常的代码 } catch()//根据数据类型进行捕获 { 处理异常,如果无法处理,可以继续抛出异常 }注意 捕获异常的顺序是自上而下的,而不是最精准的匹配,针对子类异常...原创 2019-08-24 16:20:16 · 391 阅读 · 0 评论 -
C++父类与子类间构造,析构,拷贝的调用关系
C++父类与子类间构造,析构,拷贝的调用关系构造子类的构造在执行它的构造函数前会根据继承表的顺序执行父类的构造函数默认执行无参构造#include <iostream>#include <stdio.h>#include <cstring>using namespace std;class Base{ char *str;pu...原创 2019-08-20 19:15:01 · 1627 阅读 · 0 评论 -
C++3种继承方式与访问权限
3种继承方式与父类成员访问权限父类成员在不同作用域的访问权限父类成员内部子类外部友元子类对象(public继承)子类对象(protected继承)子类对象(private继承)public✔✔✔✔✔✘✘protected✔✔✘✔✘✘✘private✔✘✘✔✘✘✘三种继承方式的子类对象属于外部访问子类对...原创 2019-08-20 20:05:03 · 259 阅读 · 0 评论 -
详解C++操作符的重载
操作符函数重载什么是操作符函数:在C++中对类类型的对象的运算符,由于它们肯定不支持真正的运算操作,因此编译器会将它们翻译成函数,这种就叫操作符函数(运算符函数),编译器把运算翻译成运算符函数,可以针对自定义的类类型设计它独有的运算功能其实各种运算符已经具备一些功能,再次实现它就是运算符的重载双目运算符:a+b成员函数a.operator+(b)全局函数o...原创 2019-08-20 20:47:33 · 421 阅读 · 0 评论 -
C++类的继承
类的继承共性与特性表达不同类型事物之间共有的属性与行为个性用于刻画每种事物特有的属性和行为共性表示为父类(基类),个性表示为子类(派生类)子类继承自父类基类派生出子类继承的基本语法继承表一个子类可以同时继承0到多个父类,每个父类的继承方式可以相同也可以不同class 子类:继承方式1 父类1,继承方式2 父类2,...{}继承方式public 共有...原创 2019-08-20 20:56:06 · 257 阅读 · 0 评论 -
C++笔记-Day1(名字空间,函数重载,引用,内存管理)
C++C++介绍C++之父 Bjarne Stroustrup于1979年4月份贝尔实验室的bjarne博士在分析UNIX系统分布内核流量分析时,希望有一种有效的更加模块化的工具1979年10月完成了于处理器Cpre,为C增加了类机制,也就是面向对象.1983年完成了C++的第一个版本,C With Classes 也就是C++C++于C的不同点:C++完全兼容C的所有内容支持面向对...原创 2019-08-16 16:44:38 · 282 阅读 · 0 评论 -
C++笔记-Day2(面向对象,类和对象,构造函数与初始化列表)
day2面向对象编程面向过程编程关注问题解决的步骤,算法面向过程编程关注的是谁能解决问题(类),需要什么样的数据(成员变量),具备什么样的技能(成员函数),才能解决问题抽象 找出一个能够解决问题的对象(观察研究对象),找出解决问题所必须的数据(属性),功能(成员函数)封装 把抽象的结构归结为一个类(数据类型),然后实例化类对象,设置对象的属性,调用对象的功能达到解决问题的目的...原创 2019-08-16 16:47:42 · 188 阅读 · 0 评论 -
C++笔记-Day3(this,构造,析构,静态成员,单例模式)
Day3this指针类的成员变量单独存储在每个类对象中,成员函数存储在代码段中,所有的类对象共享一份成员函数成员函数如何区别调用它的是哪个类对象?this指针,类的每一个成员都有一个隐藏的参数this指针,它指向类对象类的构造函数中也同样有this指针,指向的就是正在构造的这个对象在类中(成员,构造,析构)对成员变量,成员函数的访问都是借助了this指针this指针是隐藏的,但也...原创 2019-08-16 16:52:19 · 288 阅读 · 0 评论 -
STL 函数模板,类模板
模板为什么使用模板C/C++是一种静态类型语言(预处理->汇编->编译->链接),好处是速度快,缺点是实现通用代码麻烦,例如:实现支持所有类型的快速排序借助函数重载实现通用代码,好处是实现简单,但代码段会增加借助宏函数来实现通用代码,类型检查不严格借助回调函数实现通用代码,使用麻烦由于以上原因,C++之父在C++中实现了模板技术,让C++能够支持泛型编程函数模板...原创 2019-08-26 20:34:23 · 272 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day10(线程)
Day10线程线程基本概念线程的就是进程中的执行路线,即进程内部的控制序列,或者是进程的子任务(进程就是正在运行的程序,它是一个资源单位)线程就是轻量级的,没有自己独立的内存资源,使用的是进程的代码段,数据段,bss段,堆(没有栈),环境变量表,命令行参数,文件描述符,信号处理函数,工作目录,用户ID,组ID等资源线程拥有自己独立的栈,也就是由自己独立的局部变量一个进程中可以同时拥...原创 2019-08-11 19:31:19 · 211 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day9(信号量)
Day9信号量内核维护的计数量,用于管理多进程之间共享资源例如,由个变量n表示资源的数量,当有进程想要独占一个资源时,n的值要-1(或多个),如果n的值等于0(不够减),则进程阻塞,直到n的值可以减再被唤醒,当资源使用完毕后n的值要+1(或多个)int semget(key_t key, int nsems, int semflg);创建/获取信号量key IPC键值nsem...原创 2019-08-11 19:28:45 · 215 阅读 · 0 评论 -
C笔记
#指针C语言笔记Linux的常用操作###常用命令pwd 查看当前所在目录ls -l = llls -a 显示隐藏文件cp -frp 复制目录rm -rf 删除非空目录~ 用户主目录… 当前目录的上一层. 当前目录###网络相关telent ip 远程登陆ssh 用...原创 2019-05-11 19:40:04 · 240 阅读 · 0 评论 -
C笔记19
堆内存管理&字符串2019.5.25堆内存管理什么是堆内存程序在内存是分段:代码段+只读段:二进制指令,常量全局段:初始化过和的全局变量,静态变量静态数据段:没有初始化过和的迁居变量,静态变量栈:局部变量,块变量(采用栈的方式进行管理)堆:数据无序的存储到这一块内存中,受物理内存的限制为什么使用堆内存 1. 栈内存的大小有限 2. 栈内存中的数据释...原创 2019-05-25 18:48:52 · 202 阅读 · 0 评论 -
数据结构和算法-笔记
数据结构和算法数据结构 + 算法 = 程序 —— 高纳德数据结构不是一门研究数据计算的学科,而是研究数据与数据之间的关系的数据结构术语数据:能够输入到计算机的描述客观事物的符号数据项:描述事物的其中一项指标数据元素:用于描述一个完整的事物数据结构:由数据元素和元素关系构成的一个整体算法:数据结构所具备的功能(解决问题的方法)4种基本类型的数据结构(逻辑结构)...原创 2019-07-23 20:03:53 · 476 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day1(库)
Day1课程介绍UNIX/linux环境C语言,借助学习操作系统的接口的方法来学习,理解操作系统的运行机制以及一些网络协议。C/C++,数据结构的算法 与平台无关,重点是算法逻辑UNIX/Linux/Android/IOS 平台相关,系统接口。嵌入式/驱动/移植/ 硬件相关,硬件接口环境介绍内存管理文件操作文件管理信号处理进程管理网络通信线程同步UNIX操作系统...原创 2019-07-23 20:10:43 · 345 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day2(错误处理)
Day2错误处理通过函数返回值表示错误返回值合法表示成功,非法表示失败返回有效指针表示成功,空指针(NULL/0xffffffff)表示失败0成功,-1失败永远成功printf练习1:str_len求字符串的长度,若指针为空则报错练习2:str_cpy(char* dest,size_t dlen,char* src)字符串拷贝函数,考虑目标的溢出问题如果目标无效或超出则...原创 2019-07-23 20:13:59 · 228 阅读 · 0 评论 -
标准IO和系统IO写入速度比较
标准IO和系统IO写入速度比较众所周知,标准IO的速度要比系统IO快。那为什么系统调用要比标准C库调用慢呢?测试:#include <fcntl.h>#include <stdio.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h>void s...原创 2019-07-25 11:54:39 · 722 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day3(内存管理,文件操作)
Day3内存管理自动分配/释放内存(auto_ptrSTL调用标准C++中的new/deletenew/delete构造/析构C++malloc/free标准C调用POSIXbrk/sbrkPOSIX调用Linux系统接口mmap/munmapLinux调用内核接口kmalloc/vmalloc内核调用驱动get...原创 2019-07-27 15:03:42 · 283 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day4(文件操作,文件同步)
Day4lseek#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);设置文件位置指针返回值 文件指针的位置 功能类似于ftell练习1:实现一个Linux系统下计算文件大小的函数使用系统调用homework练习2:实现一个带...原创 2019-07-27 15:08:39 · 254 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day5(文件)
Day5stat/fstat/lstat#include <sys/stat.h>用来获取文件的属性,返回 0 成功, -1 失败int stat(const char *path, struct stat *buf);path 需要文件路径int fstat(int fd, struct stat *buf);fd 需要打开后的文件描述符int lsta...原创 2019-07-27 15:12:54 · 276 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day6(信号)
Day6信号的基本概念中断,中止(非终)当前正在运行的任务,转而执行其他任务(可能返回也可能不返回),中断分为硬件中断(硬件设备产生的中断)和软件中断(其他程序产生的中断)信号:是一种软件中断,提供了一种异步执行任务的机制常见的信号SIGINT(2) Ctrl+CSIGQUIT(3) Ctrl+\SIGABRT(6) 调用abort函数,产生此信号SIGF...原创 2019-08-01 15:54:47 · 223 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day7(进程)
Day7基本概念进程与程序程序:存储在磁盘上的文件,包含可执行指令和数据的静态实体进程:运行中的程序(一个程序可以执行多次,加载出多个进程),进入活动状态的计算机程序。进程的分类:交互进程:有输入,输出,用户可以根据自己的情况输入数据,得到想要的结果(一般进程)。批处理进程:由脚本加载执行的程序(Linux下的shell,win下的bat)守护进程:总是活跃的,后台运...原创 2019-08-01 15:58:12 · 232 阅读 · 0 评论 -
Unix_Linux操作系统-笔记Day8(进程间通信)
Day8 进程间通信基本概念进程间的通信(IPC)InterProcess Communication两个或多个进程之间的交换数据的过程当多个进程协同工作高效率完成任务时,因为每个进程都是一个独立的个体(资源单位),进程之间就需要通信进程之间通信方式简单进程通信:命令行参数,环境变量表,信号,文件传统进程通信:管道XSI进程间通信:共享内存,消息队列,信号量网络进程通信:so...原创 2019-08-01 16:00:01 · 257 阅读 · 0 评论 -
C++继承(私有,保护,多重,钻石,虚)
私有继承,保护继承使用 private 方式继承父类public->private其他不变这种继承方式可以防止父类成员的扩散使用 protected 方式继承父类public->protected其他不变可以有限防止父类成员的扩散子类以private/protected方式继承会禁止向上造型(进行类型转换),子类的指针或引用不能隐式转换成父类的指针或引用...原创 2019-08-23 18:26:58 · 235 阅读 · 0 评论 -
C++虚函数,覆盖,多态
虚函数,覆盖,多态虚函数成员函数前加virtual关键字覆盖子类中会覆盖父类中的虚函数#include <iostream>using namespace std;class Base{public: /*virtual*/void func(void) { cout << "我是Base的func函数"...原创 2019-08-23 18:34:17 · 383 阅读 · 0 评论 -
代码详解C++虚函数表
虚函数表在C++类中,一旦成员函数中有虚函数,这个类中就会多一个虚函数表指针,这个指针指向一个虚函数表,表里记录了这个类中所有的虚函数,当这个类被继承,它的子类中也会有一个虚函数表(不管子类中有没有虚函数),如果子类的成员函数中有函数签名与父类的虚函数一样就会用子类中的函数替换它,在虚函数表中的位置,这样就达到了覆盖的效果当通过类指针或应用调用函数时,会根据对象中实际的虚函数表记录来调用函数...原创 2019-08-24 15:18:31 · 278 阅读 · 0 评论 -
C++虚析构
虚析构当使用delete释放一个父类指针时,不管实际指向的对象是子类还是父类,都只会调用父类的析构函数(多态肯定会出现的问题)如果子类的析构函数有需要释放的内存,就会造成内存泄漏为了解决这个问题,可以把父类的析构函数设置为虚函数(析构函数进行覆盖时不会比较函数名)当父类的析构函数为虚函数时,通过父类指针或引用释放子类对象时会自动调用子类的析构函数,子类对象的析构函数执行完成后也会调用父类...原创 2019-08-24 15:28:40 · 379 阅读 · 0 评论 -
UML
#UMLUML概述什么是UML统一建模语言(Unified Modeling Language)用于说明,可视化,构建和编写一个正在开发的,面向对象的,软件密集系统的开发方法,UML展示了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效UML是做什么的帮助建立软件开发过程和各种模型主要目的是为了让开发者之间进行有效的交流开...原创 2019-09-03 18:31:39 · 360 阅读 · 1 评论