• 缓存淘汰算法--LRU算法
  • 一个用hash表作为底层结构的数据库,当然少不了缓存淘汰算法。LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1、新数据插入到链表头部;2、每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3、当链表满的时候,将链表尾部的数据丢弃。过程如下:1、最开始时,内存空间是空的,因此依次进入A、B、C是没有问题的2、当加入D时,就出现了问题,内存空间不够了,因此根据LRU算法,...
  •  2020-06-15  |    程成  |    352  |    1  |    其他  |   LRU  算法  缓存淘汰  
  • 阻塞与非阻塞的区别
  • 简单点说:阻塞就是干不完不准回来,   非阻塞就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧...比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数据的话...这时候就体现出阻塞和非阻塞的不同之处了:对于阻塞模式的socket s...
  •  2020-06-15  |    程成  |    363  |    0  |    其他  |   阻塞  区别  
  • 进程和线程、协程的区别
  • 现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,go里面的goroutine也是一个非常棒的协程库。本文主要介绍进程、线程和协程三者之间的区别。概念进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,也是基本的执行单元,是操作系统结构的基础。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句...
  •  2020-06-12  |    程成  |    358  |    0  |    其他  |   进程  协程  线程  
  • 线程和进程的关系及区别
  • 1.定义一个程序至少有一个进程,一个进程至少有一个线程。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而...
  •  2020-06-12  |    程成  |    280  |    0  |    其他  |   线程  进程  
  • 彻底明白编译型和解释型、动态语言和静态语言区别
  • 编译型和解释型的区别先来看看编译型语言定义:编译型语言首先是将源代码编译生成机器指令,再由机器运行机器码(二进制)。再来看看解释型语言的定义:解释型语言的源代码不是直接翻译成机器指令,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。咋看一眼,还是一脸懵逼。下面打个比方:编译型相当于用中英文词典(翻译器)将一本英文书一次性翻译(编译)成一本中文书。以后查看直接就是中文了。可想而知,以后读书(运行)会非常非常方便。而解释型相当于用中英文词典(翻译器)将一本英文书读一段翻译一段(解释)中文。以...
  •  2020-03-02  |    程成  |    398  |    0  |    其他  |   编译型  解释型  动态语言  静态语言  
  • Makefile 的作用是什么
  • MakeFile文件是什么?它里面包含什么内容、具有什么作用、怎么使用?下面就来具体说说。     什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会...
  •  2020-03-02  |    程成  |    384  |    0  |    其他  |   makefile  编译  脚本  IDE  
  • OAuth 2.0 的四种方式
  • 原文地址:http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html作者:阮一峰上一篇文章介绍了 OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。本文接着介绍颁发令牌的实务操作。下面我假定,你已经理解了 OAuth 2.0 的含义和设计思想,否则请先阅读这个系列的上一篇文章。RFC 6749OAuth 2.0 的标准是 RFC 6749 文件。该文件先解释了 OAuth 是什么。OAuth 引入了一个授权层,用来...
  •  2019-05-09  |    程成  |    1886  |    2  |    其他  |   OAuth2.0  授权  JWT  SAML  
  • Oauth2.0 的一个简单解释
  • 原文地址:http://www.ruanyifeng.com/blog/2019/04/oauth_design.html作者:阮一峰OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。这个标准比较抽象,使用了很多术语,初学者不容易理解。其实说起来并不复杂,下面我就通过一个简单的类比,帮助大家轻松理解,OAuth 2.0 到底是什么。一、快递员问题我住在一个大型的居民小区。小区有门禁系统。进入的时候需要输入密码。我经常网购和外卖,每天都有快递员来送货。我必须找到一个办法...
  •  2019-05-09  |    程成  |    1056  |    0  |    其他  |   OAuth2.0  授权  JWT  SAML  
  • 什么是JWT -- JSON WEB TOKEN
  • 原文地址:https://www.jianshu.com/p/576dbf44b2ae作者:Dearmadman什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token...
  •  2019-05-08  |    程成  |    1187  |    0  |    其他  |   JWT  OAuth2.0  SAML  跨域  
  • SAML该怎么理解
  • 原文地址:https://www.cnblogs.com/shuidao/p/3463947.html作者:Neil提到SAML (Security Assertion Markup Language), 很多人都会联想到单点登录SSO。那么Saml到底是什么,它跟sso到底有什么联系?这里给大家分享一下我在读完了saml差不多全部规范之后的一些心得。希望给saml入门者一些帮助。 我并不想详细介绍每个xml节点怎么写。大家可以参考标准规范。 看了这篇随笔,相信如果万一哪天你要做saml, 你也...
  •  2019-05-08  |    程成  |    1377  |    0  |    其他  |   SAML  OAuth2.0  JWT  
  • 理解OAuth 2.0
  • 原文地址:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html作者:阮一峰OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。更新:我后来又写了一组三篇的 《OAuth 2.0 教程》,更加通俗,并带有代码实例,欢迎阅读。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子...
  •  2019-05-08  |    程成  |    1115  |    0  |    其他  |   OAuth2.0  授权  JWT  SAML  
  • Nginx 工作原理详解
  • 原文地址:https://www.jianshu.com/p/6215e5d24553 1、反向代理1.1 概念反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。举个例子,比如我想访问 https://www.cc1021.com/readme,但  www.cc1021.com 上并...
  •  2019-04-29  |    程成  |    1244  |    1  |    其他  |   正向代理  反向代理  工作原理  
  • Git 基本常用命令有哪些
  • Git基本常用命令如下:   mkdir:         XX (创建一个空目录 XX指目录名)   pwd:          显示当前目录的路径。   git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。   git add XX...
  •  2019-04-08  |    程成  |    774  |    0  |    其他  |   git  版本库  命令  
  • 手把手教你使用 Git
  • 一:Git是什么?       Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?      SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了...
  •  2019-04-08  |    程成  |    772  |    0  |    其他  |   git  版本库  pull  冲突