自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【STL源码分析】map

文章目录map 的底层数据成员insert[] 运算符重载函数map 的底层数据成员 typedef _Rb_tree<key_type, value_type, _Select1st<value_type>, key_compare, _Alloc> _Rep_type; //红黑树结构 _Rep_type _M_t;...

2019-08-11 12:06:12 681

原创 【STL源码分析】vector

文章目录vector 的成员变量push_back()_M_insert_auxinserterase其他vector 的成员变量// vector的成员变量// vector底层是可动态扩容的数组,所以protected: _Tp* _M_start; //数组首地址 _Tp* _M_finish; // 数组下一个可用位置 _Tp* _M_end_of_storage;...

2019-08-11 11:20:30 791

原创 【STL源码分析】deque

文章目录_Deque_base 用于维护一位的指针deque迭代器的指针push_back_M_push_back_auxinsert_M_insert_aux_Deque_base 用于维护一位的指针 //如果一维数组不够用了,需要动态开辟一个细心的一维数组, //将原数组中的保存的缓冲区地址的指针全部复制到新的一维数组中 // _Tp** _M_map; //一维数组 siz...

2019-08-11 11:19:56 509

原创 虚函数的底层调用过程

通过一个指针访问一个虚函数的时候,底层的调用过程,通过下面的一个简单的测试代码,看一下他的汇编指令。class A{public: virtual void Show1() { cout << "A1" << endl; } virtual void Show2() { cout << "A2" << endl; }};...

2019-08-10 11:54:46 1115

原创 linux下sed 和 awk用法

文章目录sed:awksed:常用选项:-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e∶直接在指令列模式上进行 sed 的动作编辑;-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename ...

2019-07-29 08:38:02 1095

原创 【hadoop】yarn资源调度

文章目录现在在运行程序的时候,runjar进程MRAppMasterYarnchild在hadoop1.0中运行的时候有两个进程jobtracker 整个计算程序的老大 ( 负责资源调度,随机调度,监控程序运行的状态 ,启动运行程序)tasktracker...

2019-07-27 22:43:48 1174

原创 linux内存管理

内核空间分区与管理参考:https://www.cnblogs.com/youngerchina/p/5624516.htmlDMA区:即直接内存访问分区,通常为物理内存的起始16M。主要是供一些外设使用,外设和内存直接访问数据访问,而无需系统CPU的参与。Normal内存区:从16M到896M内存区。HighMemory内存区:896M以后的内存区。为什么高端内存的边界是896M?这...

2019-07-27 21:06:01 1102

原创 mysql 存储引擎

文章目录innoDBmyisammemory索引普通索引唯一性索引![在这里插入图片描述](https://img-blog.csdnimg.cn/20190414001128161.png)全文索引单列索引多列索引空间索引创建索引删除索引常见问题及其解答视图视图的作用innoDBmyisammemorycreate table [name](id int primary k...

2019-07-27 09:23:10 950

原创 数字化婚姻配对尝试

文章目录一、标题:二、题目:三、代码实现一、标题:数字化婚姻配对尝试二、题目:建立一个模型,来模拟推导社会男女择偶过程。为了模型简化,一个人的特性指标有三个,这里假设为财富、样貌、品格,每个指标均可取值1-100之间任意数字。同样也对这3项指标有自己的需求。这3个需求值取值范围都在1-98间,当然三者的和必须为100.所以任意一个人可以用以下数组来表述:G(A、B、C、A1、B1、C1...

2019-07-27 09:21:58 1034

原创 epoll下 LT与ET的区别

文章目录lt 与 et 是epoll操作文件描述符的两种方式,lt 是 效率比较高的poll,et 是 epoll 的高效模式。lt当检测到epoll_wait 上有就绪事件的时候,可以不立即执行,当下次再次调用epoll_wait时还会提醒et当检测到epoll_wait 上有就绪的事件的时候,就必须处理该事件,否则下次调用epoll_wait 的时候,也不会提醒。...

2019-07-27 09:21:09 2365

原创 nginx的高并发模式

文章目录多进程实现的并发模式多进程实现的并发模式ngnix 采用的 多进程+ IO复用 的并发模式1、节省锁带来的开销。每个 worker 进程都是独立的进程,不共享资源,不需要加锁。同时在编程以及问题查上时,也会方便很多。2、独立进程,减少风险。采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快重新启动新的 worker 进程...

2019-07-27 09:19:35 1158

原创 redis

文章目录

2019-07-27 09:18:43 951

原创 【hadoop】关于HDFS的四大机制与两大核心

文章目录hdfs是hadoop 生态系统的一部分,主要功能是为大数据的处理提供分布式存储的环境,关于hdfs的理解,先来看一张图hdfs的四大机制和两大核心:hdfs 提供的是高容错性的分布式的数据存储方案,...

2019-07-24 23:14:21 1586

原创 简单搜索引擎的实现

文章目录环境系统设计masterServer模块solveServer模块爬虫模块webServer模块数据库设计环境mysql数据库redis数据库ubuntu 系统python3flask 框架gevent库系统设计系统分为四个模块:masterServer模块中间的master服务器模块,整个系统的核心部件,主要负责接收webServer的请求,将请求分发给so...

2019-07-18 14:32:42 2042 1

原创 进程间的通信方式

文章目录管道消息队列共享内存管道管道分为有名管道和无名管道,无名管道主要用于带亲缘关系间的进程之间的通信,有名管道可以用于任意两个进程之间的通信。管道的通信方式:半双工的方式可以看到创建管道的内核代码中有一个inode 节点,两个file 节点struct inode 节点中记录了文件在存储介质上的位置以及分布的信息,即:一个inode对应一个物理上的具体的文件struct file ...

2019-06-28 21:51:15 991

原创 hadoop分布式框架的使用中的问题

文章目录64位的系统中安转hadoop会出现部分native 中的库不能使用的问题,所以64 位系统必须手动编译安转hadoop对于jdk版本号大于9的可能会出现无法启动resourcemanager 与nodemanager的情况,原因是jdk版本过高的话,与hadoop 的兼容对于C++ 开发hadoop的问题,如果出现第一种情况的话,会出现链接库错误,hadooppipes.a中的多...

2019-06-27 09:56:57 1109

原创 迭代器失效的问题

文章目录vectordequelist关联容器set map unordered_set unordered_map迭代器失效的问题,与容器的底层的数据结构有关。vector(底层时一个可动态扩容的数组,数据的增加与删除都会影响到其他的数据的位置,所以当进行数据增删的时候,其他数据的迭代器有可能会失效)当插入(push_back)一个元素后,end操作返回的迭代器肯定失效。当插...

2019-06-27 09:55:38 2325 1

原创 epoll 源码剖析

文章目录epoll 概述epoll 的调用接口epoll_createepoll_ctlepoll_wait 开始监听一个文件描述符epoll 概述epoll 是linux下特有的IO复用的接口,相比于poll 与select 的特点,epoll不需要每次调用监听都要向内核空间写入要监听的文件描述符以及相应的事件,减少了用户空间向内核空间的数据的拷贝,epoll 内部维护这一个内核事件表,采用...

2019-06-27 09:53:47 1193

原创 高并发集群式的文件传输系统

文章目录设计思路采用的技术设计思路集群是多个服务器同时去做一个事情,相比于单个的服务器,集群可同时处理更多的业务,但是集群的设计上也必须要处理好各个服务器之间的关系,首先要考虑的就是服务器的负载均衡、数据的备份、多个服务器之间的数据的同步的问题,要根据服务器实现的业务来确定服务器采用什么样的同步的方式。在本次的项目中,采用一个负载均衡器,负责根据服务器的当前的负载的情况向客户端分发一个负载相...

2019-05-29 21:17:17 2676

原创 fork源码分析

文章目录

2019-05-23 12:00:50 1286

原创 muduo 网络库reactor 模式下 事件循环器的实现

文章目录编译运行总结这里是实现的代码https://download.csdn.net/download/qq_43390943/11184422文件编译运行总结/* * 主要的设计思路: * 1、首先要熟悉reactor的整个设计的模式,主线程负责链接新的客户端,在线程池中获取一个EventLoop来监听这个新产生的文件描述符 * 2、一个线程可以监听多个文件描述符,当...

2019-05-17 15:43:37 1247

原创 muduo源码分析线程池

文章目录构造函数析构函数start 线程池的启动函数stop 停止线程池run 线程池中添加一个任务take 线程池中的线程从任务队列取一个线程runInThread 线程池中的线程的执行的区域线程池的实现原理:在并发程序设计中,由于线程的反复创建于销毁是非常消耗时间的,在存在大量的线程的创建于销毁的程序中,我们可以事先创建出一部分线程,然后管理这些线程去处理我们的任务,这样可以节省一大部分反...

2019-05-07 21:38:59 1259

原创 muduo源码分析 TcpSerer 接收一个链接

文章目录Channel 基本的成员变量handleEvent事件分发Acceptor::handleRead 处理读事件TcpServer::newConnection 处理新的连接前面说了链接前的准备工作,下面说一下链接的过程。当一个链接发起的时候,EventLoop首先将产生的就绪事件的文件描述符取出,并且取出对应的该文件描述符对应的Channel,看一个Channel结构中记录了什么。...

2019-05-07 21:38:37 985

原创 muduo源码分析TcpServer接收一个链接前的准备工作

文章目录TcpServer的构造函数setThreadNum 设置线程池池的线程数start 开始监听连接请求Acceptor的构造函数listen这里不说muduo 的架构模式,只介绍TcpServer的函数调用关系EventLoop : 事件循环器,底层通过IO复用实现,用于监听所有的文件描述符Acceptor:用于接收一个新的连接,Channel : 用于事件的分发(当检测到有事件...

2019-05-07 21:38:12 1122

原创 muduo源码分析 Channel类

文章目录

2019-05-07 21:37:54 1322

原创 muduo 源码分析底层IO类

文章目录

2019-05-07 21:37:41 997

原创 muduo 源码分析 EventLoop 类

文章目录

2019-05-07 21:37:08 1560

原创 muduo源码分析 EventLoopThreadPool 类

文章目录构造与析构start 开启线程池getNextLoop 采用轮询的方式分配EventLoopgetLoopForHash采用hash方式分配EventLoopgetAllLoops 返回所有的EventLoopEventLoopThreadPool 是一个线程池,只不过该线程池有一点特殊,该线程池中的每一个线程都要执行EventLoop进行文件描述符的监听。此时一个线程用于管理分配线程...

2019-05-07 21:36:45 1120

原创 代理模式

#include <iostream>#include <string>using namespace std;/*A 要访问一个国外的网站,但是自己的ip 不允许访问这个网站但是A 可以访问 BB 可以访问这个网站。这时候,A 可以请求B 去代替自己去访问国外的网站,然后将下载一些自己需要的资源*/class Inter{public...

2019-04-27 01:51:04 1464

原创 适配器模式

文章目录什么时候使用适配器?适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,Adapter模式使原来由于接口不兼容而不能一起工作的那些类可以一起工作。什么时候使用适配器?在想要使用一个已存在的类,但是如果它的接口,也就是它的方法和你的要求不相同的时候,就应该考虑使用适配器模式,两个类所做的事件相同或相似,但是具有不同的接口时要使用它适配器模式在实现上就是利用一个...

2019-04-27 01:49:23 996

原创 观察者模式

观察者模式的特点:将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象之间的一致性,我们不希望为了维护一致性而使各类紧密耦合,这样会给维护、扩展和重用带来不变。而观察者的关键对象是主题Subject 和观察者 Observer ,一个Subject 可以有任意数量的依赖它的 Observer , 一旦Subject的状态发生了改变,所有的Observer 都可以收到...

2019-04-27 01:49:01 993

原创 简单工厂模式

文章目录简单工厂模式简单工厂模式

2019-04-27 01:48:41 1439

原创 策略模式

文章目录策略模式策略模式是一种定义一系列算法的方法,从概念上看,这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。策略模式的Strategy 层为context 定义了一系列可重用的算法或行为,继承有助于析取出这些算法中的公共功能。策略模式简化了单元测试,因为每一个算法都有自己的类,可以通过自己的接口单独测试当不同的行...

2019-04-27 01:48:08 1416

原创 装饰器模式

装饰模式是唯一有的功能动态地添加更多功能地一种方式,当系统需要新功能地时候,思想旧的类中添加新的代码。这些新的代码通常修饰了原有类的核心指责或主要行为#include <iostream>#include <string>using namespace std;class Person{public: Person(){} Person(strin...

2019-04-27 01:47:55 1456

原创 工厂方法模式

工厂方法模式如果添加新的运算方式,只需要添加一个具体产品类和一个具体工厂类就可以了不需要修改逻辑代码#include <iostream>using namespace std;//工厂方法类//抽象产品类template<typename T>class Base{public: virtual T operation(T a,T b) ...

2019-04-27 01:47:21 918

原创 命令模式

命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作Invoker 命令的发起者是一个独立的类,Receiver 命令的执行者,也是一个独立的类,通过命令模式将Invoker 于 Receiver 松耦合。命令模式的优点:比较容易地设计一个命令队列在需要的情况下,可以比较容易地将命令计入日志允许接收请求的一方决定是...

2019-04-27 01:46:59 1562

原创 桥接模式

桥接模式:将抽象的部分于他的实现部分分离,使他们都可以独立地变化什么叫抽象与他的实现分离,这并不是说让抽象类与派生类分离,因为这没有任何意义,实现指的是抽象类和他的派生类用来实现自己的对象。实现系统可能有多角度分类,每一种分类都有可能变化,那么结巴多角度分离出来让他们独立变化,减少他们之间的耦合。桥接模式的优点:分离抽象接口及其实现部分。提高了比继承更好的解决方案。桥接模式提高...

2019-04-27 01:46:45 1568

原创 抽象工厂模式

对应上面的的抽象工厂模式的结构图我们对下面的对象进行抽象假设这里有两种车,奔驰 宝马有两个国家的品牌,中国,美国中国生产的叫 中国奔驰,中国宝马美国生产的叫 美国奔驰,美国宝马下面是代码的实现#include <iostream>#include <string>using namespace std;//对工厂进行抽象class BMW{...

2019-04-27 01:46:27 955

原创 malloc 底层实现

文章目录malloc 申请内存的系统调用brk(sbrk)mmapptmalloc 简介主分区与非主分区chunk 组织bins按大小分配内存块Fast Binsunsorted binTop chunkmmaped chunkLast remainder内存分配与回收分配概述回收概述malloc 申请内存的系统调用首先看一下linux 下的4G的虚拟地址空间的分布linux系统向用户提供...

2019-04-27 01:34:50 1720

原创 memcached 详解

文章目录memcached 基础memcached 的内存存储Slab Allocation 机制:整理内存以便重复使用memcached 的删除机制memcached 的分布式算法memcached 的分布式是什么?Cache::Memcached 的分布式方法Consistent Hashingmemcached 基础memcached 是高性能的分布式内存缓存服务器。一般的使用目的是...

2019-04-27 01:34:03 4876

EventLoop.tar.gz

muduo 网络库 reactor模式下 EventLoop的实现

2019-05-17

空空如也

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

TA关注的人

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