转载和积累系列
老码农zhuli
自娱自乐的代码人!GIT:https://github.com/zhuli
展开
-
转载和积累系列 - L4负载均衡的设计与实现
目录简介一、LVS的局限性1. 数据包转发性能问题2.HA-主备结构的浪费3.转发模式的优缺点二、google maglev负载均衡Maglev Consistent HashGoogle下一步是什么?三、facebook katran第一代 L4LB四、设计高性能负载均衡附录:简介负载均衡分为L4负载均衡(例如LVS)、L7负载均衡(例如nginx),L4负载均衡工作在传输层其主要功能就是转发, 本文讲述的负载均衡为L4。传统上通过采购硬件的..转载 2020-08-11 09:39:27 · 37691 阅读 · 0 评论 -
转载和积累系列 - 为什么 HashMap 加载因子是0.75?而不是0.8,0.6?
有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0.75?本文主要对以下内容进行介绍: 为什么HashMap需要加载因子? 解决冲突有什么方法? 为什么加载因子一定是0.75?而不是0.8,0.6? 为什么HashMap需要加载因子?HashMap的底层是哈希表,是存储键值对的结构类型,它需要通过一定的计算才可以确定数据在哈希表中的存储位置:static fi转载 2020-07-22 09:57:52 · 36518 阅读 · 0 评论 -
转载和积累系列 - 秒杀系统设计思路
目录前言一:秒杀应该考虑哪些问题1.1:超卖问题1.2:高并发1.3:接口防刷1.4:秒杀url1.5:数据库设计1.6:大量请求问题二:秒杀系统的设计和技术方案2.1:秒杀系统数据库设计2.2:秒杀url的设计2.3:秒杀页面静态化2.4:单体redis升级为集群redis2.5:使用nginx2.6:精简sql2.7:redis预减库存2.8:接口限流2.9:令牌桶算法限流2.10:异步下单2.11:服务降级三:总结转载 2020-06-05 09:45:24 · 36659 阅读 · 0 评论 -
转载和积累系列 - 分库分表的细节讲解
目录数据库瓶颈分库分表水平分库水平分表垂直分库垂直分表分库分表工具分库分表带来的问题事务一致性问题跨节点关联查询 Join 问题跨节点分页、排序、函数问题全局主键避重问题数据迁移、扩容问题什么时候考虑分库分表能不分就不分数据量过大,正常运维影响业务访问随着业务发展,需要对某些字段垂直拆分数据量快速增长数据库瓶颈不管是 IO 瓶颈还是 CPU 瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值转载 2020-06-03 17:34:17 · 36351 阅读 · 0 评论 -
转载和积累系列 - 缓存穿透、缓存并发、热点缓存之最佳招式
目录一、缓存常见问题缓存穿透缓存并发缓存失效问题汇总二、缓存穿透与并发方案三、热点缓存解决方案一、缓存常见问题我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题: 缓存穿透 缓存并发 缓存失效 缓存穿透注:上面三个图会有什么问题呢?我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一转载 2020-06-03 14:28:51 · 19894 阅读 · 0 评论 -
转载和积累系列 - HTTPS原理和HTTP缓存机制
HTTPS原理HTTPS随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了:1.为什么用了 HTTPS 就是安全的?2.HTTPS 的底层原理如何实现?3.用了 HTTPS 就一定安全吗?本文将层层深入,从原理上把 HTTPS 的安全性讲透。HTTPS 的实现原理大家可能都听说过 HTTPS 协议转载 2020-06-03 09:52:33 · 20283 阅读 · 0 评论 -
转载和积累系列 - 如何设计一个安全的对外接口
目录前言安全措施如何实现1.数据加密2.数据加签3.时间戳机制4.AppId机制5.限流机制6.黑名单机制7.数据合法性校验前言最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。安全措施个人觉得安全措施大体来看主要在两个方面: 一方面就是如何保证数据在传输过程中的安全性; 另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻转载 2020-06-03 10:16:29 · 19897 阅读 · 0 评论 -
转载和积累系列 - 微服务(Microservices)和服务网格(Service Mesh)
目录微服务(Microservices)服务网格(Service Mesh)微服务(Microservices)在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技术热点。而以 Spring Cloud 为代表的传统侵入式开发框架,占据着微服务市场的主流地位。微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务转载 2020-06-02 16:15:09 · 18742 阅读 · 0 评论 -
转载和积累系列 - Faas,又一个未来?
目录前言一、什么是Faas二、Kubernetes 与 FaaS三、后记前言云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的CaaS,再到火热的微服务架构,以及现在越来越多被谈起的Serverless和FaaS,我们正在经历?一个技术飞速变革的时代。一、什么是Faas云计算时代出现了大量XaaS形式的概念,从IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(转载 2020-06-02 15:50:28 · 18760 阅读 · 0 评论 -
转载与积累系列 - Docker 核心技术与实现原理
目录Namespaces进程网络Libnetwork挂载点ChrootCGroupsUnionFS存储驱动AUFS其他存储驱动总结提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了。作为在生产环境中广泛应用的产品,Docker 有着非常成熟的社区以及大量的使用者,代码库中的内容也变得非常庞大。同样,由于项目的发展、功能的拆分以及各种奇怪的改名 PR,转载 2020-06-01 18:09:38 · 18698 阅读 · 0 评论 -
转载和积累系列 - 三种常见的限流算法
介绍一般做接口限流主要是为了应对突发流量,避免突发流量拖垮服务。如下面一些场景就有可能发生突发流量 微博热搜 恶意刷单 恶意爬虫 促销活动 接口限流的算法有如下几种计数器算法这是最容易理解和实现的算法,假设一个接口1s中最多请求100次。最开始设置一个计数器count=0,来一个请求count+1,1s之内count<=100的请求可以正常访问,count>100的请求则被拒绝,1s之后count被重置为0,重新开始计数当然这种方式有个弊端转载 2020-05-15 11:57:43 · 18204 阅读 · 0 评论 -
转载和积累系列 - Page cache和Buffer cache
Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。在Linux 2.6的内核中Page转载 2014-04-25 10:27:53 · 2862 阅读 · 0 评论 -
转载和积累系列 - win下安装c语言开发环境
安装MingwMinGW 是什么MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU (http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Li原创 2014-01-15 11:47:14 · 1328 阅读 · 0 评论 -
转载和积累系列 - wifidog认证流程图
一. 用户上线1. 用户访问网络,通过iptables将未认证的用户dnat到wifidog进程,wifidog通过307报文将用户重定向到认证服务器2. 用户打开认证服务器登录页面,输入用户名密码,发送认证请求3. 认证成功的话服务器会发送302报文,携带token信息重定向到wifidog页面。认证失败的话会返回失败页面4. 用户携带token信息向wifidog发起认证请求,转载 2013-12-18 14:08:20 · 4050 阅读 · 3 评论 -
转载和积累系列 - linux crontab详细
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond简介crond是linux下用来转载 2013-08-02 09:41:58 · 1135 阅读 · 0 评论 -
转载和积累系列 - 深入理解HTTP协议、HTTP协议原理分析(转)
http协议学习系列1. 基础概念篇1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义转载 2013-03-12 11:34:49 · 1638 阅读 · 0 评论 -
转载和积累系列 - 微博计数器
作者:@cydu来源:http://qing.weibo.com/1639780001/61bd0ea133002460.htmlhttp://qing.weibo.com/1639780001/61bd0ea1330025sq.html背景: 每一条微博的转发和评论背后都是一串串说不完的故事,但是今天主要讲的是 计数服务,计数服务详尽地记录着每条微博转载 2012-10-10 17:37:56 · 2722 阅读 · 0 评论 -
转载和积累系列 - linux init命令
linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。本文中假设inittab中设置的init tree为:/etc/rc.d/rc0.d/etc/rc.d/rc1.d/etc/rc.d/rc2.d/etc/rc.d/rc3.d/etc/rc.d/rc4.d/etc/rc.d/rc5.d/etc/rc.d/rc6.d转载 2012-10-06 17:37:26 · 915 阅读 · 0 评论 -
转载和积累系列 - CentOS文件夹目录
/:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中/bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可/d转载 2014-08-29 09:33:57 · 1049 阅读 · 0 评论 -
转载和积累系列 - CentOS 常用小技巧集合
1. 设置用户可以获得root权限原创 2014-08-29 09:15:09 · 883 阅读 · 0 评论 -
转载和积累系列 - CentOS 网络配置
在win下安装了VM虚拟机,并且安装CentOS系统,配置网络的时候有两种选择:原创 2014-08-28 15:59:37 · 938 阅读 · 0 评论 -
转载和积累系列 - 内存碎片化问题
内存碎片分为内部碎片和外部碎片。内部碎片:转载 2014-05-30 14:02:39 · 1639 阅读 · 0 评论 -
转载和积累系列 - LuCI简介
LuCI作为“FFLuCI”诞生于2008年3月份,目的是为OpenWrt固件从 Whiterussian 到 Kamikaze实现快速配置接口。Lua是一个小巧的脚本语言,很容易嵌入其它语言。轻量级 LUA语言的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。UCI是OpenWrt中为实现所有系统配置的一个统一接口,英文名Unified C转载 2014-01-02 16:53:26 · 1605 阅读 · 0 评论 -
转载和积累系列 - Lua 字符串库
string.len(s)返回字符串长度string.rep(s, n)返回重复n次字符串s的串string.lower(s) 将字符串转化为小写方式string.upper(s) 将字符串转化为大写string.sub(s,i,j)函数截取字符串s的从第i个字符到第j个字符之间的串。string.charst原创 2014-01-13 11:01:42 · 1284 阅读 · 0 评论 -
转载和积累系列 - Lua table库
table.concat(table, sep, start, end)table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长.local tb = {"woshishen原创 2014-01-14 10:17:44 · 1396 阅读 · 0 评论 -
转载和积累系列 - java的反射
package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...} class hello{ public static void main(String[] args) { Demo demo=new Demo(); System.out.println转载 2013-06-04 10:00:16 · 914 阅读 · 0 评论 -
转载和积累系列 - JSON 入门指南
尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有转载 2013-03-19 10:35:46 · 1086 阅读 · 0 评论 -
转载和积累系列 - 一个比较困扰的SVN问题
情况:SVN更新多次之后会出现错误:Server sent unexpected return value (403 Forbidden) in response to OPTIONS解决:使用switch 重新定位svn路径原创 2013-01-05 17:37:12 · 1163 阅读 · 0 评论 -
转载和积累系列 - 解决哈希(HASH)冲突的主要方法
解决哈希(HASH)冲突的主要方法虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法 用开放定址法解转载 2012-10-16 18:47:41 · 2121 阅读 · 0 评论 -
转载和积累系列 - linux安全设置
引言:我们必须明白:最小的权限+最少的服务=最大的安全所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小话,这样才能保证服务器最大的安全。下面是CentOS服务器安全设置,供大家参考。系统运维 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接一、注释掉系统不需要的用户和用户组注意:不建议直接删除,当你需要某个用户时,自己重新添加会很转载 2012-10-15 10:42:29 · 869 阅读 · 0 评论 -
转载和积累系列 - nodejs 获取IP地址
/* * 说明:获取客户端IP地址 * 使用: * initnode.request.getClientIp(); */ this.getClientIp = function () { var ipAddress; var forwardedIpsStr = this.headers('x-forwarded-for'); i原创 2012-09-11 20:17:17 · 3625 阅读 · 1 评论 -
转载和积累系列 - Nodejs 中GET方法实现
//GET方法,获取URL中的GET提交数据 this.get = function (name) { var getQuery= url.parse(_req.url).query; var getData = querystring.parse(getQuery); //getData数据 if (typeof(name) == 'object') { //数组形式传递进原创 2012-09-10 09:14:28 · 1826 阅读 · 0 评论 -
转载和积累系列 - Jquery 表单验证类
数值:浮点型:英文:大写英文:小写英文:邮件格式:是否包含中文:URL:电话号码:IP地址:金额:数值或者英文或者_:邮政编码:可用账号:QQ:身份证:数值 允许为空:数值 长度 1-3:数值 长度 1-3 允许为空:var formValidate = new formValidate();for原创 2012-08-21 11:53:18 · 1521 阅读 · 0 评论 -
转载和积累系列 - Node学习 - 2. 异步式I/O操作
阻塞式I/O:程序在执行过程中,遇到比较耗时的操作,例如读取数据库、网络交互等,只有等这些操作执行完毕后,程序才继续往下执行,例如PHP就是典型的阻塞式I/O操作。 异步式I/O:针对所有I/O操作时,不采用阻塞的策略,会继续执行下面的程序语句。Node就是异步式的。 代码,执行文件读取操作,有同步IO和异步IO两种方法:var原创 2012-07-25 14:15:25 · 1982 阅读 · 0 评论 -
转载和积累系列 - C语言学习笔记 - 动态分配内存
所谓动态内存分配就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。从以上动、静态内存分配比较可以知道动态内存分配相对于景泰内存分配的特点: 1、不需要预先分配存储空间; 2、分配的空间可以根据程序的需要扩大或缩小。 malloc原创 2012-07-02 17:56:58 · 807 阅读 · 0 评论 -
转载和积累系列 - 微信、陌陌 架构方案分析
微信、陌陌 架构方案分析近两年、手机应用,莫过于微信、陌陌之类最受欢迎;但实现原理,分享文章甚少。故,提出两种方案,供分享;不对之处,敬请留言学习。目标解决大型应用(微信、陌陌级别)中,用户经纬度在不断更新,用户查找频繁的问题。(每分钟1000W级)=========================================================转载 2014-08-22 11:10:30 · 2073 阅读 · 0 评论 -
转载和积累系列 - 浏览器渲染原理
作者:陈皓 (酷壳 – CoolShell.cn)来源:http://coolshell.cn/articles/9666.html看到这个标题大家一定会想到这篇神文《How Browsers Work》,这篇文章把浏览器的很多细节讲得很细,而且也被翻译成了中文。为什么我还想写一篇呢?因为两个原因,1)这篇文章太长了,阅读成本太大,不能一口气读完。2)花了大力气读了转载 2013-07-10 19:18:49 · 1049 阅读 · 0 评论 -
转载和积累系列 - Eclipse快捷键大全摘录
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上转载 2013-08-05 18:23:21 · 950 阅读 · 0 评论 -
转载和积累系列 - 百度 搜索引擎中的粒度问题
一.前言传统的搜索引擎的定义,是指一种对于指定的查询(Query),能够返回与之相关的文档集合(Documents)的系统。而百度将这个定义更加丰富化,即搜索引擎能够帮助人们更方便的找到所求。这里的“所求”,比“文档”更加宽泛和丰富,比如一个关于天气的查询,直接返回一个天气预报的窗口,而非一篇关于天气的文档;再如一个关于小游戏的查询,直接返回这个小游戏的Flash页面而非简单的介绍性的文字。转载 2013-08-05 10:43:21 · 1024 阅读 · 0 评论 -
转载和积累系列 - JS 浮点数安全计算函数
JS浮点数计算会出现意向不到的问题,可以用以下几个函数来计算浮点数:function accAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e)原创 2013-07-04 11:14:23 · 1106 阅读 · 0 评论