自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hellochenlu的博客

分布式系统/前端开发

  • 博客(437)
  • 资源 (1)
  • 问答 (10)
  • 收藏
  • 关注

转载 Nginx 多进程模型是如何实现高并发的?

进程数与并发数不存在很直接的关系。这取决取server采用的工作方式。如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。那么显而易见的,就是会有很多进程在等待中。等什么?最多的应该是等待网络传输。其缺点题主应该也感觉到了,此处不述。而nginx 的异步非阻塞工作方式正是利用了这点等待的时间。在需要等待的时候,这些进程就空闲出来待命了。因此表现为少数几个进程

2017-01-16 22:50:53 1537

转载 HTTP之Range

1、什么是Range?  当用户在听一首歌的时候,如果听到一半(网络下载了一半),网络断掉了,用户需要继续听的时候,文件服务器不支持断点的话,则用户需要重新下载这个文件。而Range支持的话,客户端应该记录了之前已经读取的文件范围,网络恢复之后,则向服务器发送读取剩余Range的请求,服务端只需要发送客户端请求的那部分内容,而不用整个文件发送回客户端,以此节省网络带宽。 2

2017-01-16 18:05:23 352

转载 HTTP协议之multipart/form-data请求分析

原文链接:http://blog.csdn.net/five3/article/details/7181521首先来了解什么是multipart/form-data请求:根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之

2017-01-16 17:10:23 1084

原创 架构概念

缓存服务器没有命中请求,就回去后台服务器获取资源~或者客户要求停止代理,要求把所有的客户端请求,发回原始服务器。是cdn上的说法~

2017-01-13 14:17:04 346

转载 Lua ---- LFS库的使用

lfs.attributes(filepath [, aname]) 获取路径指定属性    lfs.chdir(path) 改变当前工作目录,成功返回true,失败返回nil加上错误信息    lfs.currentdir 获取当前工作目录,成功返回路径,失败为nil加上错误信息    lfs.dir(path) 返回一个迭代器(function)和一个目录(userdata),每次

2017-01-13 09:59:15 570

转载 Nginx + Lua + 共享内存实现动态查询(简单例子)

Nginx 配置。lua_package_path "/usr/local/share/luajit-2.0.2/jit?.lua;;"; lua_shared_dict devicedb 45m; location /query { default_type 'text/plain'; content_by_lua '

2017-01-12 18:06:56 662

翻译 Lua中的Hook机制

The hook mechanism of the debug library allows us to register a function that will be called at specific events as your program runs.There are four kinds of events that can trigger a hook: call even

2017-01-12 17:21:59 92870 1

转载 lua 说明self,点号或冒号的关系

定义的时候冒号默认接收self参数调用的时候冒号默认传递调用者自己为参数而句号要显示传递或接收self参数-- 例如:句号定义,需要显示传递或接收a = { x = 1 } function a.fun(self) print(self.x) end a.fun(a)--输出1,将a自己做为参数传给fun函数的self 这样调用要传递sel

2017-01-12 16:37:46 284

转载 HTTP ETag流程

客户端请求一个页面(A)。服务器返回页面A,并在给A加上一个ETag。 客户端展现该页面,并将页面连同ETag一起缓存。 客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。请求流程Etag由服务器端生成,客户端通过If-M

2017-01-12 15:18:16 1429

转载 HTTP 206和HTTP 502

最后一条会话返回了HTTP/206 “Partial Content”响应.这种响应是在客户端表明自己只需要目标URL上的部分资源的时候返回的.这种情况经常发生在客户端继续请求一个未完成的下载的时候(通常是当客户端加载一个体积较大的嵌入文件,比如视屏或PDF文件),或者是客户端尝试实现带宽遏流的时候.你可以通过Range请求头辨认出一个部分内容请求.该请求头表明了客户端需要请求资源的哪一部分:

2017-01-12 14:15:18 1297

转载 lua中逻辑运算符and与or的用法

总的来说就是,and返回导致返回值为false的那个值。a and  b,如果a为假就返回a,否则返回b。   or的用法就是返回导致true的那个,  a and b,如果a为真就返回a,否则返回B.逻辑运算符认为false和nil是假(false),其他为真,0也是true.and的优先级比or高其它语言中的and表示两者都为真的时候,才返回为真,而只要有一个假,都返回假.lu

2017-01-12 11:41:45 1050

转载 分布式缓存和代理

参考文章:http://www.cnblogs.com/likehua/p/3796802.html分布式缓存在分布式缓存(图1.12)中,每个节点都会缓存一部分数据。如果把冰箱看作食杂店的缓存的话,那么分布式缓存就象是把你的食物分别放到多个地方 —— 你的冰箱、柜橱以及便 当盒 ——放到这些便于随时取用的地方就无需一趟趟跑去食杂店了。缓存一般使用一个具有一致性的哈希函数进行分割,

2017-01-12 10:54:33 1607

转载 ngx_lua 模块API说明

ngx_lua模块API说明#Ngx指令lua_code_cache on | off;作用:打开或关闭 Lua 代码缓存,影响以下指令: set_by_lua_file , content_by_lua_file, rewrite_by_lua_file, access_by_lua_file 及强制加载或者reload Lua 模块等.缓存开启时修改LUA代码需要重启nginx

2017-01-11 14:18:07 612

转载 用lua扩展你的Nginx

首先得声明,这不是我的原创,是在网上搜索到的一篇文章,原著是谁也搞不清楚了,按风格应该是属于章亦春的文章。整理花了不少时间,所以就暂写成原创吧。一. 概述Nginx是一个高性能,支持高并发的,轻量级的web服务器。目前,Apache依然web服务器中的老大,但是在全球前1000大的web服务器中,Nginx的份额为22.4%。Nginx采用模块化的架构,官方版本的N

2017-01-11 10:35:27 682

原创 2017.01.04携程电面总结

1、angularjs中一个模块调用另一个模块采用什么方法。2、require.js用法3、

2017-01-06 15:13:06 606

原创 45、判断是否符合USD格式-JavaScript

给定字符串 str,检查其是否符合美元书写格式1、以 $ 开始2、整数部分,从个位起,满 3 个数字用 , 分隔3、如果为小数,则小数部分长度为 24、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3 输入例子:isUSD('$20,933,209.93')输出例子:true

2017-01-06 14:05:29 1601

原创 3、移除数组中的元素-JavaScript

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。注释:该方法会改变原始数组。语法arrayObject.splice(index,howmany,item1,.....,itemX)参数描述index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。how

2017-01-06 00:04:53 484

原创 2、数组求和-JavaScript

计算给定数组 arr 中所有元素的总和计算给定数组 arr 中所有元素的总和 输入描述:数组中的元素均为 Number 类型输入例子:sum([ 1, 2, 3, 4 ])输出例子:10

2017-01-05 23:35:04 609

转载 Leveldb 实现原理

LevelDB详细介绍:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html

2016-12-12 20:35:42 263

转载 docker与虚拟机性能比较

概要Docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。本文将主要根据IBM发表的研究报告,论述docker与传统虚拟化方式的不同之处,并比较物理机、docker容器、虚拟机三者的性能差异及差异产生的原理。 docker与虚拟机实现原理比较如下图分别是虚拟机与docker的实现框架。   比较两图的差异,左图虚拟机的Guest OS

2016-12-06 21:54:43 730

转载 C++中函数返回临时对象和本地对象的区别

在C++中如果函数返回值是对象的时候,那么该直接返回临时对象呢,还是先在函数体内构造好一个本地对象,然后返回。如果可以直接返回临时对象,那么我们就返回临时对象来代替返回本地对象,因为这样代码的效率会比返回本地对象的效率高。以下通过代码说明两者的区别(更多讲解在注释中已说明):       1.返回本地对象代码示例:[cpp] view plain copy

2016-12-05 22:00:04 2039 3

原创 c++继承与派生

在默认情况下,派生类包含了全部的基类中除构造和析构函数之外的所有成员。但是在c++11规定可以用using语句集成基类构造函数。

2016-12-03 16:06:29 241

原创 MySQL事务隔离级别详解

参考文章:http://xm-king.iteye.com/blog/770721SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容)       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离

2016-11-29 16:54:19 228

转载 Spanner的分布式事务实现

原文链接:https://zhuanlan.zhihu.com/p/20868175

2016-11-28 21:05:24 1007

原创 云计算的三种服务模式:IaaS,PaaS和SaaS

从用户(开发者或应用)的角度来看,无所谓什么PaaS、IaaS,用户使用的就是服务(统一的服务生命周期管理、资源管理、API等),如何分层、服务架构怎样,是底层平台的事情。从服务提供商的角度来看,使用偏底层的资源(计算、存储、网络等)所构建的服务,一般称之为IaaS,典型的如虚机服务、存储服务、负载均衡服务等;而使用底层资源之上的其他资源所构建的服务,一般称为PaaS,如中间件资源(应用服务器

2016-11-22 11:08:13 2462

转载 win 7 下 引导时出现 Try hd(0,0): NTFS5: No wubildr 解决办法

本文旨在给出在ubuntu启动时遇到以下问题的解决方法。不需重装系统,几分钟内可以搞定。try(hd0,0):ntfs5:no wubildr try(hd0,1):ntfs5:no wubildr try(hd0,2):extended: try(hd0,3):ntfs5:no wubildr try(hd0,4):ntfs5:no wubildr try(hd0,5):

2016-11-22 10:41:20 7421

转载 vector clock向量时钟算法简介

原文链接:http://blog.chinaunix.net/uid-27105712-id-5612512.html一、使用背景先说一下需要用到向量时钟的场景。我们在写数据时候,经常希望数据不要存储在单点。如db1,db2都可以同时提供写服务,并且都存有全量数据。而client不管是写哪一个db都不用担心数据写乱问题。但是现实场景中往往会碰到并行同时修改。导致db1和db2数据不

2016-11-21 21:26:32 22413 2

转载 乐观锁和悲观锁的区别

原文链接:http://blog.csdn.net/hongchangfirst/article/details/26004335悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,

2016-11-21 15:37:50 284

转载 多版本并发控制MVCC(Multi-Version Concurrency Control )

参考文章:http://www.pgcon.org/2008/schedule/attachments/54_PGCon2008-HOT.ppthttp://www.cnblogs.com/gaojian/p/3295951.html图1:事务T1改变数据V1,将其改为数据V2,在堆中,数据如下图图2:事务T3改变了V2,将其改为V3,在堆中,数据如下图:目前事

2016-11-19 11:41:24 608

转载 GO语言延迟函数defer用法分析

defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个 defer,一般用于异常处理、释放资源、清理数据、记录日志等。这有点像面向对象语言的析构函数,优雅又简洁,是 Golang 的亮点之一。代码1:了解 defer 的执行顺序package mainimport "fmt"func fn(n int) int { de

2016-11-16 15:04:04 1350

转载 bson json区别

bson,Binary JSON,二进制的json,主要用于MongoDB简单的说,json是像字符串一样存储的,bson是按结构存储的(像数组 或者说struct),存储空间bson>json,解析的话bson也会快。(比如,遍历查找:json需要扫字符串,而bson可以直接定位;修改:json也要大动大移,bson就不需要)

2016-11-14 15:14:32 870

转载 database中的执行和提交

当执行commit()的时候什么也别想,此时已经将数据库更新完毕,打个比方吧,假如你的事务是要对信息更新一条信息和删除一条信息,删除无异常,更新无异常,而此时执行了commit则数据库也已经执行过更新和删除了,因为在之前已经在数据库执行过你那两个操作了,只是执行结果存在sql临时文件里了,试想一下,不然vs编辑器怎么会知道你那两个操作会报异常而进行回滚呢,这个时候已经在数据库执行了,但是却没对你的

2016-11-10 22:15:34 1102

原创 数据库实现参考资料

Go语言版本:https://github.com/qw4990/NYADB2https://www.zhihu.com/question/35382593/answer/102269843?from=profile_answer_card

2016-11-08 15:25:59 989

原创 动态规划资料

左程云:http://www.nowcoder.com/discuss/1888http://www.nowcoder.com/discuss/1861

2016-11-07 21:49:00 281

转载 缓存算法(页面置换算法)-FIFO、LFU、LRU

在前一篇文章中通过leetcode的一道题目了解了LRU算法的具体设计思路,下面继续来探讨一下另外两种常见的Cache算法:FIFO、LFU1.FIFO算法FIFO(First in First out),先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢?因为这个原则简单、且符合人们的惯性思维,具备公平

2016-11-05 21:01:06 547

原创 近期笔面试总结

UNIX系统下有一个行编辑器ed,它每次只对一行文本做删除一个字符、插入一个字符或替换一个字符三种操作。例如某一行的内容是“ABC”,经过把第二个字符替换成“D”、删除第一个字符、末尾插入一个字符“B”,这三步操作后,内容就变成了“DCB”。即“ABC”变成“DCB”需要经过3步操作,我们称它们的编辑距离为3。现在给你两个任意字符串(不包含空格),请帮忙计算它们的最短编辑距离。

2016-11-05 20:14:51 336

原创 c++二维向量初始化

问:比如我建立了一个class叫做card,然后定义下面的一个vector的vector,vector > AIcards;想给它初始化了,因为维数是已经确定了的,于是我想这么做,vector > AIcards(4)(13);可是编译的时候会报错,报错信息是:missing type specifier - int assumed. Note: C++ does not suppor

2016-11-05 15:55:22 9661

转载 算法运行时间、logN、NlogN 之间的比较

原文链接:http://blog.csdn.net/richardysteven/article/details/5872672 1 大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。 logN  如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的

2016-11-03 16:55:49 4698

原创 伸展树:双层伸展

双层伸展构思精髓:向上追溯两层,而非一层反复考察祖孙三代:g = parent(p),p = parent(v),v根据它们的相对位置,经两次旋转使得 v上升两层,成为(子)树根节点v的位置的四种可能性zig-zag / zag-zig与AVL树双旋完全等效与逐层伸展别无二致。颠倒次序后,局部的细微差异,将彻底地改变整体...折叠效果

2016-11-03 16:47:39 691

转载 集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间是什么关系

转自知乎:https://www.zhihu.com/question/26446020cluster是整个集群包含n个nodenode通常掌控独立的资源,cpu内存什么的一台机器可以多个nodeshard一般是从数据角度来说的1000条数据按id分,存10份,就是10个shardshards分散在多个node上副本好理解同样的数据再来一份

2016-11-01 21:03:31 1484

linux function

提供了linux环境下,c语言的API,各种函数的解释

2012-10-14

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

TA关注的人

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