自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿亮的博客

现实喜欢对称和轻微的时空错移

  • 博客(200)
  • 收藏
  • 关注

转载 HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

转自:https://www.cnblogs.com/wjlog/p/5827168.html web始祖HTTP,全称:超文本传输协议伴随着计算机网络和浏览器的诞生,HTTP 1.0随着而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上的,所以HTTP协议的瓶颈及其优化技巧都是基与TCP协议本身的特性,例如建立TCP连接的三次握手和断开连接的4次挥手以及每次建立连接带...

2018-09-06 16:30:33 1218

原创 网络基础 - 用户访问一个网站的过程的描述

网络基础 - 用户访问一个网站的过程的描述   1.当我们打开浏览器输入网址回车,到看到网页页面.  是一个非常复杂的过程,听我细细道来: DNS解析 大家都知道,计算机之间只能通过ip相互通信,因为ip不好记,于是才使用dns服务器把域名解析为相应的额ip,这里以解析www.baidu.com为例,当我们输入回车之后,浏览器会首先查询浏览器的缓存,这个缓存存活...

2018-09-04 15:04:47 3896

原创 Linux — lsof和netstat命令

lsof命令 它可以列出某个进程打开的所有文件信息,打开的文件可能是普通文件,目录,nfs文件,块文件,字符文件,共享库,常规管道命名管道,符号链接,socket流,网络socket,UNIX域socket.1.不带任何参数运行lsof会列出所有进程打开的所有文件(lsof -h 查看参数)2.列出那些进程使用某些文件lsof /usr/local/apache2/lo...

2018-07-29 23:52:27 1070

原创 Linux — POSIX 线程基础

线程对于Linux后台程序员来说并不陌生,线程带给我们并发能力的提升,也提高了软件开发和问题定位的难度,本文尝试结合GlibC 代码, 对POSIX的线程做一个简单说明,重点介绍线程的创建,释放和连接上需要注意的问题。多进程和多线程的都只有一个目的,并行处理,提高CPU利用率。相比进程,线程的优势体现在以下几个方面:1.线程创建销毁开销小于进程2.线程上下文切换开销小于进程3....

2018-07-29 11:09:07 541

原创 原子计数操作 — _syn_fetch_and_add等12个操作

原子计数操作  — _syn_fetch_and_add等12个操作    多线程计数操作,共享状态或者统计相关时间次数,这些都需要在多线程之间共享变量和修改变量,如此就需要在多线程间对该变量进行互斥操作和访问.我们谭老先生早都说过了! ++i 和 i++都是不是原子性的,本质上为三步:1. 从缓存取到寄存器2. 在寄存器中加13. 再存入缓存但是有时候由于...

2018-07-16 22:01:14 4083

原创 操作系统 — 浅析基于glibc的malloc

浅析基于glibc的mallocLinux的虚拟内存管理有几个关键概念:

2018-07-12 15:26:46 998

原创 mysql — 客户端与服务端之间的能力谈判

mysql  —  客户端与服务端之间的能力谈判我们在了解mysql协议的时候

2018-07-05 09:35:26 766

原创 mysql — 基于协程的mysql异步代理服务

基于协程的mysql异步代理服务最近在腾讯实习

2018-07-03 18:26:52 2763 2

原创 mysql网络协议分析

mysql网络协议分析我们从客户端本地登陆一个mysql的用户以及使用mysql命令获得想要的消息.  需要去请求mysql的服务器,这个时候就需要用到mysql的网络通信协议.  当你打算编写数据库的代理服务器,数据库的中间件,这些直接对数据包进行直接操作的组件时,你必须了解到mysql网络通信协议底层的原理.服务器会使用TCP监听本地socket端口或者本地socket连接. 当一个客户端的连...

2018-07-03 15:14:41 5340

转载 常见加密算法 boost SHA1

mysql常见加密算法 boost SHA1#include <boost/uuid/sha1.hpp> #include <iostream> /* @brief SHA1摘要算法:一种很重要的密码学算法,可将任意长度的文本压缩成20个字节的 独一无二的的摘要(uuid名字生成器使用该算法) */ using namespace boo...

2018-06-18 18:24:14 3395

原创 了解吞吐量(TPS),QPS,并发数,响应时间(RT)概念

了解吞吐量(TPS),QPS,并发数,响应时间(RT)概念1.响应时间(RT)响应时间是指系统对请求做出响应的时间. 直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整的记录了整个计算机系统处理请求的时间. 由于一个系统通常会提供许多的功能,而不同功能的处理逻辑也千差万别,因而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能能在不同输入数据的情况下响应时...

2018-06-18 18:22:52 3320

原创 Redis学习笔记(一)

初识Redis首先Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库,Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以进行再次加载使用,Redis不仅仅支持简单的Key-Value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. Redis支持数据的备份,既master-slave模式的数据备份. Redis的所...

2018-04-11 11:00:21 502

原创 浅析Protobuf数据格式

浅析Protobuf数据格式Protobuf是Google开源的一款类似于Json,XML数据交换格式,其内部数据是纯二进制格式,不依赖于语言和平台,具有简单,数据量小,快速等优点. 目前用于序列化于反序列化官方支持的语言有C++,C#,JAVA,PYTHON. 适用于大小在1M以内的数据,因为像在移动设备平台,内存是非常珍贵的.使用的方法也比较简单:1.定义用于消息文件.proto2.使用pro...

2018-04-10 16:28:07 2178

原创 网络基础 — TCP的流量控制和拥塞控制

TCP的流量控制和拥塞控制1.利用滑动窗口实现流量控制  如果发送方把数据发送的过快,接收方可能会来不及接受,这就会造成数据的丢失,所谓流量控制就是让发送方的发送速率不要太快.要让接收方来得及接收. 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制.TCP为每一个连接设有一个持续计时器. 只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器设置的时间到期,就发送...

2018-03-13 00:18:39 1397 1

原创 网络基础 — 阅读源码后理解epoll的一个错误纠正

阅读源码后理解epoll的一个错误纠正之前我在这里这篇博客 :epoll的简单结构把epoll吹上天了,但是对于epoll的理解,昨天我牛客网上面看到了一个赛罗奥特曼的帖子! 不愧是奥特曼! 它的观点是epoll当中并没有内存映射的实现,拥有内存映射这是一个错误的观点! 我就点进去看了一看源码! 结果真的没有发现! 其实内核对用户态是不会绝对信任的,也不会让用户的东西指向内核成员! 最大的让步就是...

2018-03-12 14:25:15 1560

原创 操作系统 — 了解CPU cache

CPU cacheCache一词源自法语,其原意为"藏匿处,隐藏的地方". Cache被应用于计算机科学之后,专指CPU与主内存之间的存储器高速缓冲器,Cache的出现是为了缓解CPU的存储需求与主内存的存取性能之间越来越大的差距.现代CPU的Cache都是集成在片内的,越靠近CPU流水线的Cache由于需要极其快速的存取速度,只能保持越小的容量,并且单位容量的成本越高.因此,为了进一步缓解需求与...

2018-03-11 11:10:13 1013

原创 操作系统 — 协程的简单理解

协程的简单理解协程是一种用户态的轻量级线程, 我们的server的发展如下:IO密集型应用:多进程 -> 多线程 ->事件驱动 ->协程  CPU密集型应用:多进程->多线程 如果说多进程对应多CPU,多线程对应多核CPU,那么事件驱动和协程则是在充分挖掘不断提高性能的单核CPU的潜力. 异步事件驱动模型中,把会导致阻塞的操作转化为一个异步操作,主线程负责发起这个异步操作,...

2018-03-10 17:44:43 2424

原创 数据结构 — 多阶哈希表

多阶哈希表昨天在腾讯面试的时候,面试官问到我数据结构的时候,可能因为因为我前面答的还还不错就扩展了一下,在我之前对哈希的认知我知道的其实只有开放定制法和开链法这种操作,不过当面试官问到多阶哈希和一致性哈希这种东西的时候! ??? 问的我一脸懵逼! 还是平时学习还是不够细致,对知识点没有扩展性的了解. 今天将这个多阶哈希记录下来.多阶哈希表其实就是一个锯齿般的数组,看起来就是下图那个样子:1.每一行...

2018-03-10 13:21:32 3683

原创 网络基础 — https和http之间的区别与联系

https和http之间的区别与联系超文本传输协议HTTP协议被用于在web服务器和网站服务器之间传递消息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密.如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号,密码等为了解决http协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议https...

2018-03-05 23:34:42 1391

原创 大数据处理 — 浅析MapReduce之shuffle

浅析MapReduce -> shuffleshuffle的意思就是洗牌,它是MapReduce的核心,也是被称为奇迹发生的地方,因为MapReduce玩的就是洗数据,然后让数据出现在该出现的位置.官方描述的shuffle过程,我们不太可能明白shuffle的过程,因为它与事实相差挺多的,细节也是错乱的. 我们现在这样理解就可以了, shuffle描述着数据从map task输出到reduc...

2018-03-05 11:19:31 1024

原创 大数据处理 — mapreduce的简易见解

大数据处理  — mapreduce的简易见解MapReduce是一种编程模型,用于大规模数据集的并行运算. 概念 Map(映射)和 Reduce(归约), 是他们的主要思想,它极大方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上. 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对(Mapper的输入键值)映射成一组新的键值对(Mapper的输出键值),指定并...

2018-03-04 23:26:20 6747

原创 GIT — github的代码上传成功但是不显示绿格子解决方案

github的代码上传成功但是不显示绿格子解决方案这个问题可算是困扰了我很久很久,之前一直都是只有创建了一个仓库绿格子才会亮,然后创建仓库之后所有往这个仓库提交的代码,绿格子就完全不会亮,这个就让我很头疼. 之前一直听说是因为绑定邮箱错误所以绿格子不会亮,我自认为既然代码能上传上去那么邮箱肯定没问题,但是今天当我下定决心解决这个问题的时候,我发现!!!!! 真的是我的邮箱绑定错误了! 接下来上干货...

2018-02-16 22:36:43 5545 7

原创 网络基础 — TCP粘包浅析

TCP粘包浅析粘包问题其实呢还是很容易理解的,从缓冲区来看,后一包的数据的头部紧接着前一包数据的尾部,使得接收方不能准确的读取一包数据,也就是接收方多读或少读一包数据所造成的现象就是粘包现象. 粘包问题只会在TCP的长连接时才可能发送,因为TCP是面向字节流的,以流的方式处理数据,当长连接时才可能有多个数据报粘在一起的情况. UDP是面向

2018-02-01 18:33:31 506

原创 网络基础 — 浅析IP/TCP协议分片

浅析IP/TCP协议分片首先我们需要知道一个概念,MTU是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节. 一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU. 分片传输的P数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装. IP数据报

2018-01-31 19:52:56 798

原创 网络基础 — 浅析ARP协议

浅析ARP协议MAC地址是用于物理上直接连接的机器相互通信,IP地址是用于不同网络中间的机器相互通信 ,这是由传统的以太网的拓扑结构决定的.要想了解ARP的作用,首先需要分清两个"地址"(1)TCP/IP的32bit ip地址. 仅知道主机的IP地址不能让内核发送数据帧给主机.(2)网络接口的硬件地址,它是一个48bit的值,用来标识不同

2018-01-30 19:25:53 719

原创 操作系统 — 浅析条件变量

浅析条件变量Single UNIX Specification目前定义了条件变量的两个属性:进程共享属性和时钟属性. 条件变量的作用用于多线程之间关于共享数据状态变化的通信. 当一个动作需要另外一个动作完成时才能进行时. 也就是说:当一个线程的行为依赖于另外一个线程对共享数据状态的改变时,这时候就可以使用条件变量.

2018-01-23 11:18:04 1275

原创 操作系统 — 线程和fork

线程和fork对于fork相信大家都已经熟悉的不能再熟悉了! 我们最近学习到了线程,我们都知道了新创建的线程可以访问进程的地址空间,并且继承调用线程的浮点环境和信号屏蔽字.线程中都可以访问到进程的分别有: 1.文件描述符表 2.每种信号的处理方式 3.当前工作目录 4.用户id和组id 但是线程的有些资源是每个线程独有的: 1.线

2018-01-23 09:17:57 845 1

原创 操作系统 — 信号量 记录锁 互斥量之间的区别

信号量 记录锁 互斥量之间的区别如果多个进程间共享一个资源,则可以使用这三种技术中的一种来协调访问. 我们可以使用映射到两个进程地址空间中的信号量,记录锁或者互斥量. 对于这三种技术两两之间在时间上的差别进行比较是有益的.若使用信号量,则先创建一个包含一个成员的信号量集合,然后将该信号量的值初始化为1. 为了分配资源,以s

2018-01-21 16:56:53 1044

原创 操作系统 — 生产者消费者模型

生产者消费者模型所谓的生产者消费者模型就是一个类似于队列一样的东西串起来,这个队列可以想像成一个存放产品的"仓库",生产者只需要关心这个"仓库",并不需要关心具体的消费者,对于生产者而言甚至都不知道有这些消费者存在. 对于消费者而言他也不需要关心具体的生产者,到底有多少生产者也不是他关心的事情,他只要关心这个"仓库"中还有

2018-01-21 15:35:34 2721

原创 操作系统 — 竞争条件

竞争条件当多个进程都企图对共享数据进行某种处理,而最后的结果又取决于进程运行的顺序时,我们认为发生了竞争条件. 如果fork之后的某种逻辑显示或者隐式的依赖于在fork之后是父进程先运行还是子进程先运行,那么fork函数就会使竞争条件活跃的滋生地.通常 我们不能预料到哪一个进程先运行,即使我们知道那一个进程先运行,在该进程开始运行

2018-01-19 15:52:30 4938

原创 操作系统 — 捕捉信号

捕捉信号从上篇浅析信号中我们了解到信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作为软中断. 从它的命名可以看出来它的实质和使用和中断非常相似,所以,信号也可以说是进程控制的一部分.软中断信号用来通知进程发生了异步事件. 进程之间可以互相通过系统调用kill发送软中断信号. 内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件. 注意,信号只是用来通知某进程发生

2018-01-19 12:50:57 1233 1

原创 操作系统 — 浅析信号

浅析信号首先每个信号都有一个名字,这些名字都以3个字符SIG开头.例如,SIGABRT是夭折信号,当进程调用abort函数时产生这种信号.SIGALRM是闹钟信号,由alarm函数设置的定时器超时后将产生这种信号. 信号的种类是非常庞大的. 在头文件<signal.h>中,信号名都被定义为正整数常量(信号编号).实际上,实现将各信号定义在另一个头文件中,但是该头文件又包括在<si...

2018-01-18 17:51:04 1362

原创 操作系统 — 浅析硬链接和软链接

 浅析硬链接和软链接上一篇我们了解到文件系统,我们了解到文件系统的结构包括超级块,inode节点,以及数据块, 其中inode节点包含了inode数组,数组当中存在许多的inode节点.然后每一个文件或者目录都有自己对应的inode,其中我们又引出了其中每一个inode的节点当中有一个链接计数,记录连接该inode节点的目录项数. 最后引出两种链接方式! 分别为硬链接和符号链接(软链接)! 下图是...

2018-01-14 20:02:08 2714

原创 操作系统 — 文件系统

文件系统在unix文件系统是unix系统的心脏部分,提供了层次结构的目录和文件.文件系统将磁盘空间划分为每1024个字节为一组,称为块(也有用512字节)为一块的.编号从0到整个磁盘空间的最大块数.在unix当中,之前我们在文件描述符 文件表项 v节点表项符当中多次提到了i节点,但是我们想了解i节点就必须了解磁盘空间当中的

2018-01-14 16:25:45 1621

原创 C++总结 — C++知识导论图

C++知识导论图以上就是C++的知识的一点总结,当然这也只是延伸到面,并没有延伸到点. 具体更加细致的知识点需要你更加努力的学习. 上面的知识点我基本也有对应的博客,特别是面向对象那块的我写的应该还是蛮仔细的. 如果不够了解这些知识的人类可以点开C++专栏找到对应的知识点.  还有由于上转图片有限制,如果看不清楚 可以留下邮箱我给你发原图! 这些知识点如果那里有疏漏或者错误,还请大家不吝赐教,共同

2018-01-14 09:52:38 2212 37

原创 C++小项目 — 基于huffman压缩算法的文件压缩项目

基于huffman压缩算法的文件压缩项目今天我们来看看一个小项目.

2018-01-04 16:37:02 1573

原创 linux — 浅析文件描述符 文件表项 v节点表项

浅析文件描述符 文件表项 v节点表项符文件描述符在Linux编程里随处可见,设备读写,网络通信,进程通信. 可是文件描述符到底是什么? 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket. 第一个打开的文件时0,第二个是1,以此类推. linux操作系统通常给每个进程能打开的文件数量强加一个限制.文件描述符

2018-01-03 15:10:49 2280

原创 Linux — 浅析静态库和动态库

浅析静态库和动态库呵呵呵呵

2018-01-01 16:05:11 616

原创 C语言总结 — 知识点导论图

C语言知识点导论图上图相应的知识点我大多都会有一篇关于此知识点介绍更多的博客,如果概念不是很清楚,可以从C语言专栏进去寻找相应博客. 还有由于上转图片有限制所以字体来说,不是很清楚,如果需要原图的话留下邮箱 我给大家发送~  如果有哪些遗漏的知识点还请大家不啬赐教,共同进步~

2017-12-29 21:07:10 2849 72

原创 STL — hash_map/hash_set源代码剖析

 hash_map/hash_set源代码剖析虽然STL只规范复杂度与接口,并不规范实现方法,但STL set多半以RB_Tree. SGI 则是在 STL标准之外另又提供了一个所谓的hash_set,以hashTable的底层机制. 由于hash_set所供应的操作接口,hashTable都提供了,所以几乎所有的hash_set操作行为,都只是转调用hashTable的操作行为而已.运用set为...

2017-12-27 12:39:18 600

空空如也

空空如也

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

TA关注的人

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