![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习心得
烧幽香的花
这个作者很懒,什么都没留下…
展开
-
C++11多线程编程Part.2
std::thread Value&Value.joinable()总是成对出现使用Lmabda表达式(匿名函数)来为工作线程传入参数多线程的同步问题初探原创 2019-11-24 17:29:36 · 234 阅读 · 0 评论 -
undered_map Part.1
//unordered_map//unordered_map/multimap//C++11's new Container(vector),It previous from boost librarytemplate<typename Type>class Key_Position{public: Key_Position(Type _X, Type _Y) :x(...原创 2019-11-23 12:10:29 · 257 阅读 · 0 评论 -
C++11多线程服务器编程Part.1
在之前的学习过程中,关于多线程服务器编程的学习内容主要在Linux上的C语言实现,例如pthread_create,等函数,如今C++11也有很多支持多线程的函数和方法(当然环境选择Linux或者Windows都是可以的),并且更加高效和灵活,学无止境,从这次开始,进入到C++11多线程服务器编程开发的学习中。C++11提供的的多线程编程接口高级接口:future,async低级接口:thr...原创 2019-11-14 11:16:53 · 230 阅读 · 0 评论 -
浅谈计算机的内存管理(1)
一、介绍内存管理个人认为,内存管理分为内存管理和虚拟内存管理。物理内存管理有内存的交换与覆盖、内存的连续分配管理方式和非连续分配管理方式,其中连续分配又分为动态分配和静态分配,非连续分配管理方式分为:分页式、分段式、段页式,这儿在之后都会讲到、虚拟内存管理有请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。当物理内存管理和虚拟内存管理相结合时才能称得上是真正的内存管理,接下来我们...原创 2019-07-23 00:09:42 · 414 阅读 · 0 评论 -
计算机网络基础知识(1)——概述
在网络中表示一个进程: IP地址+端口号协议:约定,规定,是数据传输的控制方式TCP/IP协议框架应用层//HTTP,FTP,Telent,DNS,Email,Ping//给用户提供服务 传输层//TCP,UDP//端到端的通讯服务,传输的数据服务,主要控制数据的稳定传输网络层//IP协议//A–>B主机数据传输控制,主要控制传输过程,IP选址。数据链路层//ARP,RARP//...原创 2019-08-01 08:40:46 · 166 阅读 · 0 评论 -
计算机网络(2)——TCP/UDP的编程流程
本次将计算机网络概述中所提到的知识点一一展开,作为个人学习记录和复习参考。TCP编程流程TCP特点:面向对象的,可靠的字节流服务。明确我们TCP网络编程的上层协议如HTTP,FTP分别是浏览器方式和FTP传输文件的形式,这些都是具体的业务形式,目前不做考虑。下层协议使用的就是TCP&IP&ARP/RARP。TCP协议是基于C/S架构,故我们分为:服务器端:socket ...原创 2019-08-01 11:00:49 · 260 阅读 · 0 评论 -
接口,纯虚函数和虚函数的区别以及适用场合
定义在说明定义之前,我们需要了解,无论是C++还是Java他们都是面向对象的编程语言,接口:从定义来说,这是Java的一个名词,对外提供可以访问的函数就叫接口,接口不能有实现,只能声明。虚函数&纯虚函数:虚函数的作用是实现多态性(Polymorphism),多态性是将接口与实现进行分离,采用共同的方法,但因个体差异而采用不同的策略。纯虚函数则是一种特殊的虚函数。纯虚函数在基类中,定义...原创 2019-08-24 16:02:37 · 2345 阅读 · 0 评论 -
单例模式的饿汉模式&懒汉模式
单例模式的设计思想1.单例模式是用类只能生成一个对象2.将对象的构造和拷贝构造函数都放在私有保护下,类提供唯一的接口生成唯一对象3.static不依赖对象调用不能返回本类类型快慢加载,延迟实现,双重锁机制的单例模式延迟加载(展开说明)静态“类”的设计思想在程序生成时,就存在于程序中,如果自始至终没有使用到,那么相当于资源浪费...原创 2019-08-25 11:22:07 · 167 阅读 · 0 评论 -
智能指针的再巩固——unique_ptr
概述C++11中的新引进的智能指针做到了手动申请资源,由系统释放资源的垃圾回收机制,原创 2019-08-25 15:33:40 · 433 阅读 · 1 评论 -
git学习小结
git和github的区别git是分布式管理代码的工具,github则是全球最大的开源社区,支持代码托管,两者没有太大的关系,但是我们要向github提交代码应该需要使用到git工具。这里git安装过程忽略,直接进入主题Git bash下git的几条基本命令一、首先设置用户名和邮箱作为标识设置命令:git config –global 参数注册用户名为 user.name + “na...原创 2019-08-17 14:38:56 · 132 阅读 · 0 评论 -
协程的初步学习
概述shared和weak一般都是组合使用的,特别是weak_ptr只有在shared_ptr存在的情况下才能发挥最核心的作用。shared:所有权共享智能指针,比起unique/auto的所有权唯一智能指针...原创 2019-08-30 10:50:02 · 202 阅读 · 0 评论 -
智能指针的代码实现——shared_ptr
shared_ptr的适用场合我们知道auto_ptr和unique_ptr的所有权唯一,释放权也唯一,但是shared_ptr是所有权不唯一,释放权是最后一个引用该资源的指针拥有,可以说所有权&释放权不唯一。同时...原创 2019-08-31 13:38:23 · 427 阅读 · 0 评论 -
HTTP连接初探
什么是HTTP协议HTTP协议是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间的连接不是长久的连接,这说明浏览器向服务器发送一个请求后,服务器给予回应后便会立刻关闭,这个连接随之断开,在服务器端不保留连接的有关信息,可以理解发一次...原创 2019-08-31 22:39:59 · 208 阅读 · 0 评论 -
HTTP的请求方法&应答状态码
请求方法和应答状态码的地位请求方法是HTTP连接过程中,Web浏览器对于请求方式的一种描述,具体可以使用那些请求方法和HTTP协议的版本有关。应答状态码是Web服务器在接收到浏览器的相关请求后给出的回复的“代号”,浏览器通过代号可以快速理解服务器对于请求的态度。总的来说,请求方法和应答状态码都是双方都知晓的规定,通过这些规定,就能快速理解双方的诉求。请求方法请求方法主要有以下九种,其中G...原创 2019-08-31 23:28:37 · 483 阅读 · 0 评论 -
HTTP1.0和HTTP1.1的区别和联系
长链接&短链接新增加请求方式原创 2019-09-01 13:16:32 · 339 阅读 · 0 评论 -
KMP算法探讨
KMP是关于字符串匹配的问题,具体描述是在一个主串中寻找有没有sub(子)串,要求时间复杂度尽可能的低对于字符串匹配我们有最暴力的解法——朴素解法,朴素解法的思想是两个指针,一个指向主串每次操作的位置,另一个指向sub串的操作位置,进行逐个匹配操作,每次匹配失败主串下标只挪动一位,sub串下标指针则会置为0,这种操作很费时费力,时间复杂度达到了主串sub串,假设主串长n,子串长m,则朴素查找的时...原创 2019-05-21 23:35:09 · 164 阅读 · 0 评论 -
MySQL的三种SQL语言操作命令浅析
DDLDDL:数据定义语言——定义结构,操作结构 使用到的语句是 create增 drop删 alter改 show查 DDL create drop alter show 1.库 1.创建库 create database [if not exists] dbname; eg:create database [if not exists] CY1269; ...原创 2019-05-19 23:42:37 · 286 阅读 · 0 评论 -
const_static修饰类成员和.*操作符
const和static前缀在C++中的用法和很多,在许多公司面试时也是重要的考点,合理的使用const和static关键字会使程序更加健壮,也可以让程序的实用性大大提高,下来我们逐个进行分析。const在修饰类成员时的作用为此,我们写一个测试用例,在这段代码中声明一个类,给与一个带两个参数的构造函数和一个const修饰的成员方法,两个成员变量,其中mb是被const修饰的成员变量。clas...原创 2019-03-16 01:14:35 · 228 阅读 · 0 评论 -
epoll的LT&ET模式
epoll的LT模式原创 2019-04-25 22:36:41 · 254 阅读 · 0 评论 -
gdb调试命令及其含义
gdb是Linux下非常实用的程序调试插件,因为Linux默认在gcc生成a.out时生成的是Release版本,在ELF段中不存在Debug相关段,所以需要在编译时在命令最后加上 -g 标识,标识生成Debug版本,也因为Debug是在ELF段中插入Debug段落,所以我们可以确定Debug版本是在编译阶段就将相关调试插件放入程序中,而不是在链接这么晚的时候放入的。GDB的相关命令GDB使用...原创 2019-04-25 22:37:58 · 1770 阅读 · 0 评论 -
函数指针和指针函数
C/C++中老生常谈的话题之一何为函数指针和指针函数他们的区别指针数组和数组指针指针函数和函数指针数组指针和函数指针的例子何为函数指针和指针函数上例子:int *Sum(int a,int b){ return &(a+b)}int (*p)(int,int);p = Sum;此时,称Sum是返回值是指针型的函数,即指针函数,p是指向函数的指针,也就是我们说的函数指针;...原创 2019-04-22 23:00:50 · 142 阅读 · 0 评论 -
STL四种智能指针浅析
我们知道,在C++中没有像Java那样的自动回收垃圾机制,,系统只会清理栈上由系统管理的资源,在类中若有对堆资源的申请,不进行手动释放资源就会导致内存泄漏问题,在学习了类和类模板之后,我们发现在类中有析构函数来进行资源释放功能,并且析构函数还支持加入程序员自身的操作,那么将指针托管给对象来实现可以做到程序员手动申请资源,让系统自动回收资源的效果,Boost库就提供了这样的智能指针来实现C++的自动...原创 2019-04-23 00:39:45 · 1189 阅读 · 0 评论 -
C语言联合体浅析
union就和以前理解的一样,多个变量共用一块内存区域,初始默认占有的内存空间是所有类型中,字节数最大的那一个。如果同时给union所有变量赋值呢?最后赋值的会覆盖前值举例:union{ char a; int b;}B;union B bb;bb.a = ‘x’;bb.b = 0x12345664;输出的结果是 ab的结果是 b ,0x12345664;使用union判...原创 2019-04-23 00:51:16 · 472 阅读 · 0 评论 -
关联容器&观察者模式
STL中的关联容器原创 2019-05-02 17:43:08 · 186 阅读 · 0 评论 -
泛式算法,仿函数和迭代器失效问题
泛式算法的含义简单的来说就是引出函数对象,让一个类的对象去做函数做的事情,此时泛式算法的函数中提供一个需要操作的序列的两个迭代器入口和一个实际进行操作的类对象,对于序列的实际操作是由类对象和函数体实现的,先引入一个简单的例子:使用泛式算法实现函数对象template <typename T>//泛式算法的排序对象体现class _Cmd3{ bool operator()(...原创 2019-04-28 00:45:16 · 222 阅读 · 0 评论 -
Python内置的GUI——Tkinter(1)
Python作为近些年来最为受欢迎的脚本语言之一,他的相关拓展应用也是遍地开花,最近在学习Python内置的GUI(图形开发界面的库)——Tkinter,在这里写下学习笔记作为记录和备份,如有错误,也希望各位能够点出指正。实现简单的图形界面import tkinter as tkon_hit = False#标记,这是一个全局变量#window = tk.Tk()#生成GUI框架#var...原创 2019-04-23 17:09:29 · 976 阅读 · 0 评论 -
STL—Iterator的分类和copy的重载及其使用
Iterator是什么简单的来说,iterator是C++中容器的访问接口,不需要关心容器内如何实现的,这和容器适配器很相似,容器适配器给出相应的接口可以使得Stack用Vector进行底层实现...原创 2019-04-29 01:20:16 · 706 阅读 · 1 评论 -
Linux的三种I/O复用方式——select
I/O复用函数selectpollepoll<Linux的独有的I/O复用>接下来我们逐一进行介绍//这里插入I/O复用的功能selectselect的原型是int select(int maxfd,fd_set *readfds,fd_set,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout);ma...原创 2019-04-24 15:48:23 · 511 阅读 · 0 评论 -
Linux的三种I/O复用方式——poll
I/O复用函数selectpollepoll<Linux的独有的I/O复用>接下来我们分三次进行介绍I/O复用pollpoll的原型是int poll (struct pollfd *fds,int nfds,int timeout);比起select更加简洁了一些,事件不再由内核在线修改,而是存入系统提供的结构体中,将文件描述符和从内核拷贝而来的改变数据划分开,不需...原创 2019-04-24 16:16:28 · 561 阅读 · 0 评论 -
Linux的三种I/O复用方式——epoll
I/O复用函数selectpollepoll<Linux的独有的I/O复用>接下来我们最后一个I/O复用,也是Linux独有的I/O复用并对三种I/O复用进行简单的分析epollepoll不再是一个函数,而是一组函数,分别是:int epoll_create(int seize);//创建内核事件表,不用用户维护,由内核维护int epoll_ctl(int epfd,...原创 2019-04-24 16:55:25 · 365 阅读 · 0 评论 -
Linux下的MakeFile文件
MakeFile是什么Makefile是Linux下的文件管理工具,本质是文件,加载运行需要make命令,make命令可以认为是执行shell脚本文件我们创建一个Makefile文件,注意,在Linux中,M首字母大小写不区分——调用vim makefilemakefile内容是main的gcc的过程,要分步骤写,和shell脚本文件把文件编译过程记录下来,会根据最后修改的文件来智能决定需要...原创 2019-04-25 16:07:49 · 603 阅读 · 0 评论 -
C++类的生存周期
众所周知,类是C++的核心,而对于类的生存周期的长短是受到很多因素影响,在这里我从以下几个方面来分析:类在.data段生成时的生存周期类在栈区生成时的生存周期类在堆区生成时的生存周期为了体现各种情况下类的生存周期,我们写一个测试用例来直观地感受。class CGoods//实现三种构造方式 一个拷贝构造函数 一个赋值运算符重载{public: CGoods(char* name...原创 2019-03-15 00:55:53 · 3171 阅读 · 0 评论