每日学习总结
Colin_666
这个作者很懒,什么都没留下…
展开
-
虚拟内存学习总结
虚拟内存是操作系统的核心概念之一,操作系统使用虚拟内存来进行内存管理。虚拟内存将主存作为磁盘的缓存每一个程序在运行时都会涉及大量的数据,而这些数据在程序运行时不可能都保存在内存中。考虑一台电脑同时运行了多个应用程序,如果将每个程序的数据都拷贝到物理内存中,必然会沾满大量的内存,而且在进程切换的时候会涉及到大量数据的拷贝,效率非常低。而操作系统引入了虚拟内存的概念,应用程序的数据本来是保存在磁盘中的,只有当需要使用到这一小块数据的时候,才会将数据缓存到物理内存中,也就是说将物理内存作为磁盘的高速缓存,磁原创 2020-08-17 23:14:48 · 330 阅读 · 0 评论 -
小议软连接和硬链接
前言首先介绍一下inode的概念,Linux下每一个文件都有一个inode节点,inode节点存储了文件的重要信息,如下文件的访问权限文件的所有者、所属组文件的大小文件的创建时间文件的最后修改时间文件的真是数据存放的地址Linux下区分一个文件是根据inode节点而不是文件名,文件名只是方便表示而已。大概可以用上面的图来解释一个文件的真实结构。硬链接ln sourcefile hardlink可以通过这样的方式创建硬链接。创建的硬链接和源文件具有相同的inode,也就是说硬链接和原创 2020-08-16 21:55:49 · 930 阅读 · 0 评论 -
拷贝构造函数、拷贝赋值运算符的总结
一、什么时候需要自定义拷贝构造函数一般编译器会自定义缺省的拷贝构造函数,但是当类中含有指针成员时,常常需要我们自己定义拷贝构造函数。基本原则:1、当我们需要自定义析构函数时,通常也需要自定义拷贝构造函数。2、需要拷贝构造函数时通常也需要自定义拷贝赋值运算符,反之亦然。二、 深拷贝有两种拷贝方式,深拷贝和浅拷贝。当我们自定义的类中有指针类型的数据成员时,深拷贝会更加安全。所谓深拷贝就是开辟一块新的内存空间,将另一个对象的成员逐一拷贝到新的内存空间。下面考虑自己实现一个string类,主要是自己实原创 2020-08-04 15:59:16 · 540 阅读 · 0 评论 -
C++ STL 之容器
无序容器总共有4种无序unordered_map、unordered_set、unordered_multimap、unordered_multiset就拿unordered_map来说,主要有以下几点:对外表现为key-value 键值对,可以根据key快速查找到value,查找、删除、插入的时间复杂度为O(1),常数时间;从内部存储来看,是一组桶,buckets,buckets底层由vector实现,每个桶对应哈希值不同的对象,每个桶里可能有多个对象,也可能没有对象,一个桶对应多个对象一般通过原创 2020-07-28 15:53:47 · 113 阅读 · 0 评论 -
Linux IO复用
selectselect(int nfds , fd_set* readfds , fd_set* writefds , fd_set* exceptfds , struct timeval* timeout );nfds 要监听的文件描述符的总数,通常被设置为select监听的文件描述符最大值加1;readfds、writefds、exceptfds 表示可读、可写、异常事件的集合,其实就是数组,数组当中的每一位(bit)表示一个文件描述符,调用select需要传入读、写、异常事件的集合,如果文件描原创 2020-07-06 21:35:33 · 147 阅读 · 0 评论 -
有限状态机解析HTTP请求
一、HTTP报文HTTP的报文格式:起始行头部字段空 行消息正文其中起始行和头部字段成为Header,消息正文称为body。Header和body之间一定要有空行隔开。请求行的格式:如下:GET /index.html HTTP/1.1请求方法为GET, url为/index.html,版本为HTTP/1.1而请求头部就是用 key:value 更详细的方式说明HTTP报文。而我们要做的就是解析这样的http请求,并发送应答报文给客户端。二、程序结构recv() 是从套接字中读原创 2020-05-20 18:58:41 · 3214 阅读 · 0 评论 -
C++多线程编程学习笔记
创建线程void* fun()//线程函数{ //...}thread t1(fun);t1.join();//t1.detach();join() 是两个线程交汇的意思,工作线程和主线程在此处交汇,jion() 之后的主线程会阻塞直到工作线程运行结束。detach() 使线程函数脱离线程对象,即当线程对象销毁了线程函数依然可能运行。通常不推荐这么做。互斥锁的使用std::mutex;std::lock_guard<T>//模板类,RAII封装,基于作用域std::原创 2020-05-12 15:49:43 · 249 阅读 · 0 评论 -
Qt核心机制信号与槽的原理浅析
Qt 中的信号与槽机制对于界面开发来说是非常方便的,界面上会有各种各样的部件,而这些部件之间常常需要通信,比如点击一个按钮,会触发一个效果,点击按钮就是一个信号,触发的效果就是一个槽函数。信号与槽还可以用来进行线程之间的通信,并且是线程安全的。简要说一下信号与槽的底层原理。信号与槽的实现是借助了Qt 的元对象系统,元对象系统有一个元对象编译器,程序编译之前会有一个预处理过程,预处理将一个类/对...原创 2020-04-28 18:06:14 · 1876 阅读 · 1 评论 -
20200427 学习小结C++智能指针
shared_ptr 共享指针一、初始化1、默认初始化shared_ptr<int> ptr;//默认为空指针2、使用make_sharedshared_ptr<int> ptr=make_shared<int>(10);3、借助内置指针初始化shared_ptr<int> ptr(new int (10));二、智能指针如何自...原创 2020-04-27 23:19:46 · 173 阅读 · 0 评论 -
20200426每日学习小结——排序算法
回顾排序算法并实现一遍算法名称稳定性时间复杂度空间复杂度冒泡排序稳定排序最好O(n),最差O(n^n),平均O(n ^n)O(1)插入排序稳定排序O(n),O(n*n),O(n)O(1)选择排序不稳定排序最好O(n),O(n^n)O(1)归并排序稳定排序时间复杂度一直是O(n*logn)O(n)快排不稳定排序最好是O(n...原创 2020-04-27 23:20:39 · 122 阅读 · 0 评论