自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 7.11

从逻辑角度来看:(重要区别)多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但是,操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理及资源分配。4、函数调用入栈出栈的过程        函数调用过程中,第一个进栈的是(主函数中的)调用处的下一条指令(即函数调用语句的下一条可执行语句)的地址;然后是函数的各个参数,而在大多数C/C++编译器中,在函数调用的过程中,函数的参...

2018-07-11 13:55:07 178

原创 kafka设计

 kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力.     1、持久性    kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性.且无论任何OS下,对文件系统本身的优化几乎没有可能.文件缓存/直接内存映射等是常用的手段.因为kafka是对日志文件进行append操作,因此磁盘检索的开支...

2018-07-04 20:04:05 232

转载 Kruskal算法

 本文主要讲的是Kruskal算法,这是一种常用的用于寻找最小生成树的算法,由Joseph Kruskal于1956年发表。它是贪心的思想,易于编写,而且效率很高。   何为“最小生成树”呢?在一给定的无向图G = (V, E)中,(u, v)代表连接顶点u与顶点v的边,而w(u, v)代表此边的权重。连接G中所有的点,且边集T为E的子集的树(无环图),称为G的生成树(Spanning Tree)...

2018-07-03 09:41:38 1294

转载 最小生成树算法模板

Prim算法  本文主要讲解的是Prim算法,该算法用于寻找最小生成树(MST)。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和亦为最小。(上一篇博客是Kruskal算法,如果没学过的话建议先移步去学习Kruskal算法)   Prim算法于1930年由捷克数学家沃伊捷赫•亚尔尼克发现;并在1957年由美国计算机科学家罗伯特•普里姆独立发现;1959年,...

2018-07-03 09:40:02 913

转载 boost::noncopyable

boost::noncopyable 比较简单, 主要用于单例的情况.通常情况下, 要写一个单例类就要在类的声明把它们的构造函数, 赋值函数, 析构函数, 拷贝构造函数隐藏到 private 或者 protected 之中, 每个类都这么干的话会非常地麻烦.但是有了 noncopyable 类之后, 只要让单例类直接继承 noncopyable, 一切都会迎刃而解.class noncopyabl...

2018-07-02 17:06:20 2835

原创 move 和浅拷贝等

开始不能理解有了浅拷贝, 何必再有 move现在想通了, 理由如下一个对象只有一个 拷贝构造函数, 你只能要么实现浅拷贝(编译器提供), 要么实现深拷贝.c++11 提供了 move 语义, 这样你就可以同时实现 浅拷贝, 和深拷贝. 然后编译器就能根据对象的用途自动的选择好 move (浅拷贝)还是深拷贝....

2018-07-02 15:54:50 608

转载 GC和RAII+refcounting

 RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。   RAII 的一般做法是这样的:在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处: ...

2018-07-02 15:37:56 311

原创 TCP拥塞控制

Linux4.9 内核发布了, 包含了 Google 最新发明的 BBR 拥塞控制算法. 一经发布便吸引了大量的眼球. 于是我们这个眼球也不能免俗, 来凑凑热闹吧.传统的 TCP 拥塞控制算法, 都是基于 “丢包” 进行的. 以丢包作为拥塞的信号. 其实有2个严重的问题丢包并不总是拥塞导致的, 也有可能是 GFW 的随机丢包策略, 当然也有可能是链路传输错误导致的. 这时候发生丢包, 恰恰要做的是...

2018-07-02 15:33:10 163

原创 C++标准库

C++标准库提供了:1、语言特性的支持,内存管理,RTTI等2、单纯用语言难以实现的基本操作,提供一些工具,时间,编译时有理数运算,类型函数,move等3、底层的(“无锁”)并发编程设施4、基于线程的并发编程支持5、基于任务的并发的基本支持,如future和async6、比较难以实现的最优且可移植版本的函数,memmove()等7、可选的无用内存回收的基本支持,如declare_reachable...

2018-05-07 16:33:19 185

转载 Zookeeper介绍

ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:分布式锁服务。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:配置维护、组服务、分布式消息队列、分布式通知/协调等。注意:ZooKeeper性能上的特点决定了它能够用在大型的、分布式的系统当中。从可靠性方面来说,它并不会因为一个节点的错误而崩溃。除此...

2018-04-24 17:44:55 152

原创 Redis 50问

1、什么是Redis?   Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。2、...

2018-04-22 00:43:05 593

原创 Redis

1. 使用redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2) 支持丰富数据类型,支持string,list,set,sorted set,hash(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会...

2018-04-21 23:45:02 118

原创 Nginx框架

1.Nginx HTTP框架综述   hander:直接处理客户端的请求,产生响应,是最常用的模块//请求处理   filter:  对hander产生的数据各种加工过滤处理//请求处理   upstream: 实现反向代理功能,转发请求到上游的服务器,从后端获取响应载发回客户端//请求转发   load-balance:不直接处理数据,而是现象负载均衡算法,从upstream的配置里选择一个合适...

2018-04-21 23:22:02 462

原创 C++

指针和引用面向对象的理解staticconstvolatile

2018-04-17 11:42:16 119

转载 IPC

进程间通信(IPC)介绍进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老...

2018-04-11 10:22:45 179

原创 设计模式

工厂模式   工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式,工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。https://www.zhihu.c...

2018-04-09 16:08:35 166

原创 操作系统笔记4.9

常见的批处理作业调度算法1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行...

2018-04-09 09:50:24 198

原创 Hadoop分布式架构及NoSQL

并行计算是指同时使用多种计算资源解决计算机问题的过程。云计算是分布式技术+服务化技术+资源隔离+管理技术。虚拟化技术包括:资源虚拟化,统一分配监测资源、向资源池中添加资源。分布式产品:Hadoop:HDFS文件系统是一个可扩缩的、容错的、可以在廉价机器上运行的分布式文件系统,是一个NameNode和多个DataNode的结构。除了提供分布式文件存储外,Hadoop还提供基于Map/Reduce的框...

2018-04-08 16:44:54 1081

原创 Database

数据库 表 行 记录:一个数据就是一个记录 SQL:数据库管理系统,结构化查询语言MySQL 数据库(管理+数据)基于C/S架构客户端/服务器服务器独立分布,占用最大的资源。安装MySQL:角色支持,线上,手动配置,支持连接数量不同。3306端口,支持TCP/IP连接。设定默认的字符集。支持多语言机制。管理MySQL服务器端程序  数据库管理语言:DML数据库定义语言:DDL  creat dat...

2018-04-08 15:11:38 124

转载 网络编程

同步,异步,阻塞,非阻塞  所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,...

2018-03-25 23:06:18 132

转载 面试总结

一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7速度较快,对服务器的压力要小很多,在新浪微博已经有应用,对比很明显。2)C/C++开发语言,C语言更偏向硬件底层...

2018-03-25 12:44:41 423

转载 基础知识

基础语言知识方面:1、使用struct关键字和class关键字定义类以及在类的继承方面有啥区别?(1)定义类的差别:C语言中的struct 关键字也可以实现类,用class 关键字和struct 关键字定义类的唯一差别就在于默认访问级别不同:默认情况下,struct 成员的访问级别为public,而class 成员的访问级别是private 。语法使用方面都是相同,直接将class 换成struc...

2018-03-25 12:42:21 684

原创 设计模式3.24

1观察者模式:定义了对象之间的一种依赖,当一个对象改变时,他的所有依赖者都会收到通知并自动更新。2装饰者模式:类应该对扩展开放,对修改关闭。动态将责任附加到对象上,若要扩展功能,装饰着提供比继承更有弹性的替代方案。3工厂模式:让子类来决定该创建什么。要依赖抽象不依赖具体类。抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而且不需要明确指出具体类。4单例模式:创建独一无二的对象,并提供一个全...

2018-03-24 20:01:00 89

转载 C++内存分配方式详解(堆、栈、自由存储区、全局/静态存储区和常量存储区)

一、数据结构中的栈和堆虽说我们经常把堆栈放在一起称呼,但是不可否认的是,堆栈实际上是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。栈:就像装数据的桶或箱子,它是一种具有后进先出性质的数据结构。堆:一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队...

2018-03-22 16:17:41 295

原创 那些LTE的上行技术

一、 上行64QAM高阶调制是一种有效提高频谱利用率和传输速率的技术,3GPP标准早在LTE Release 8版本就提出了上行64QAM技术。相比于16 QAM,其采用64QAM,每个调制符号传输的信息由4bit扩展为6bit,传输速率提高了50%。上行64QAM是提升上行峰值吞吐率、系统容量和资源利用率的上行通信技术,它是实现4.5G/5G大宽带的核心之一。 二、上行载波聚合  CA (Car...

2018-03-22 09:24:28 4354

转载 select epoll

这个问题在面试跟网络编程相关的岗位的时候基本都会被问到,刚刚看到一个很好的比喻:就像收本子的班长,以前得一个个学生地去问有没有本子,如果没有,它还得等待一段时间而后又继续问,现在好了,只走一次,如果没有本子,班长就告诉大家去那里交本子,当班长想起要取本子,就去那里看看或者等待一定时间后离开,有本子到了就叫醒他,然后取走。也许在细节方面不是特别恰当,但是总的来说,比较形象地说出了select和epo...

2018-03-22 09:20:57 163

原创 改善程序

1对于单纯常量,最还以const对象或enums替换#defines。因为#defines可能不会进入记号表2对于形似函数的宏,可以用内联函数来代替3将某些东西声明为const可帮助编译器侦测出错误的用法。const可以被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。编写程序时应该使用概念上的常量性。...

2018-03-21 23:29:11 126

原创 操作系统基本概念

1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,狭义上来说,进程是指程序执行的一个实例。而线程是CPU调度的基本单元,是进程的一个实体,是程序执行的最小单位。          (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。          (3)进程的创建调用fork或者vfork,而线程的创建调用pt...

2018-03-21 23:22:24 1430

转载 TCP连接

1、三次握手(1)三次握手的详述首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。  最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-...

2018-03-20 18:39:27 213

原创 笔记

String类的实现:#include <iostream>#include <assert.h>using namespace std;  class String{public:    String(const char* str = NULL);    String(const String &other);    ~String(); ...

2018-03-19 15:48:38 108

原创 多频段协同

        5G时代运营商可用频段会增多,C-band等高频段的覆盖将成为运营商建网的主要挑战。为了解决这一问题,网络需要借助多频段间协同来消除高频覆盖瓶颈,提升用户体验。5G上下行解耦有效的扩展C-Band覆盖,实现与1.8GHz网络的共站同覆盖,有效减少5G建网站点投资。上下行解耦打破上下行绑定与同一频段的传统限制,在享受3.5GHz下行大容量的同时,将5G的上行通过较低的1.8GHz甚至...

2018-03-16 14:50:37 1148

原创 数据库

MYSQL索引方法MySQL目前主要有以下几种索引方法:B-Tree,Hash,R-Tree。一、B-TreeB-Tree是最常见的索引类型,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)B-Tree在MyISAM里的形式和Innodb稍有不同:MyISAM表数据文件和索引文件是分离的,索引文...

2018-03-15 20:46:23 193

转载 MySQL存储引擎中的MyISAM和InnoDB区别详解

在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问。为了解开这个谜题,搜寻了网络,找到了如下信息:MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transact...

2018-03-15 20:20:49 91

转载 查询优化问题

1 引言随着计算机应用技术的不断普及和发展,数据库系统正越来越多的走进人们的日常生活。在要求查询结果正确无误的同时,人们越来越关心查询的效率问题。影响查询效率的因素很多,诸如处理器的速度、I/O速度、存储器的容量、操作系统、采取何种的数据库服务系统等。但是对于特定服务器来说查询的效率主要取决于DBA(数据库管理员)所给定的查询语句。 2  合理使用索引 数据库服务器对数据进行访问一般采用下面的两种...

2018-03-15 18:13:02 259

转载 后台开发

作者:Oscarwin链接:https://www.zhihu.com/question/34574154/answer/253165162来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。C和C++语言基础参考书籍:《C++ primer》,《effective C++》,《STL源码解析》,《深度搜索C++对象模型》extern关键字作用static关键字作用vol...

2018-03-15 18:06:38 483

原创 2017面试算法题

用堆解决最小k个数/*class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int len=input.size(); if(len<=0||k>len||k<=0) return vecto...

2018-03-15 13:45:22 313

转载 C++内存模型

C和C++内存模型以下内容,大部分整理自网络C分为四个区:堆,栈,静态全局变量区,常量区C++内存分为5个区域(堆栈全常代 ):堆 heap :由new分配的内存块,其释放编译器不去管,由我们程序自己控制(一个new对应一个delete)。如果程序员没有释放掉,在程序结束时OS会自动回收。涉及的问题:“缓冲区溢出”、“内存泄露”栈 stack :是那些编译器在需要时分配,在不需要时自动清除的存储区...

2018-03-12 22:32:04 509

转载 编程语音的异同

Python:适合小工具小程序快速开发,无论是网站还是小游戏都非常方便。但Python的脚本的运行效率较低,不适合对运行效率要求较高的程序;JAVA:采用严格的面向对象编程方法,同时有很多大型的开发框架,比较适合企业级应用;C++:C++是多范式编程语言。它不仅支持传统的面向过程编程,也支持面向对象编程,而且引入范形编程,C++运行效率较高,同时能够比较容易地建立大型软件,适合对效率要求高的软件,...

2018-03-12 22:15:59 297

原创 N个数比较排序算法

O(n2)冒泡排序:两两比较一次排序结果将最大的数排在了数组最后,缩小范围为0~N-2,直到排序完成.选择排序:每一次排序选择最小的数放在最前面。插入排序:位置0上的数与位置1上的数比较,小的放前面,后面的数依次与前面的数排序。O(nlogn)归并排序:将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。快速排序:通过...

2018-03-12 15:14:15 1651

转载 排序算法总结

十大经典排序算法0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间...

2018-03-12 14:58:27 140

空空如也

空空如也

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

TA关注的人

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