自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (3)
  • 收藏
  • 关注

原创 TCP三次握手,四次分手

TCP 协议结构TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。协议结构如下图:其中标志位:URG:紧急指针有效。ACK:确认序号有效。PSH:接收方应该尽快将这给报文发送给应用层。RST:重建连接。SYN:同步序号,用来发起一个连接。FIN:发送端完成了发送任务。三次握手:建立连接四次分手:TCP连接关闭由于TCP连接是全双工的,...

2020-03-29 14:51:42 199

原创 高并发API限流策略

高并发系统常用策略缓存:缓存的目的是提升系统访问速度和增大系统处理容。 降级:降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。 限流:限流的目的是通过对并发访问量限制,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。 分流:分流是为了将流量分发到多个服务进行处理,以便总体可以支撑巨大流量。限流常...

2020-03-28 23:02:16 763

原创 OAuth2介绍与使用

1. 什么是OAuth2OAuth(Open Authorization:开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。2. OAuth2运行流程(A)用户打开客户端...

2020-03-27 17:35:20 2637

原创 什么是JWT?

JWT 是什么?JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方法,用于在各方之间安全地将信息作为JSON对象传输。 由于此信息是经过数字签名的,因此可以被验证和信任。 可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公用/专用密钥对对JWT进行签名。尽管可以对JWT进行加密以在各方之间提供保密性,但我们将重点关注已签名的令牌。...

2020-03-27 17:22:08 1528

转载 kylin介绍

转载:  http://www.mamicode.com/info-detail-1015006.html Kylin是ebay开发的一套OLAP系统,与Mondrian不同的是,它是一个MOLAP系统,主要用于支持大数据生态圈的数据分析业务,它主要是通过预计算的方式将用户设定的多维立方体缓存到HBase中(目前还仅支持hbase),这段时间对mondrian和kylin都进行了使用,发现这两

2017-06-28 16:25:43 497

转载 Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置

由浅入深,主要介绍maven的用途、核心概念(Pom、Repositories、Artifact、Build Lifecycle、Goal)、用法(Archetype意义及创建各种项目)、maven常用参数和命令以及简单故障排除、maven扩展(eclipse、cobertura、findbugs、插件开发)、maven配置。较长,可根据个人需要有选择性的查看,比如先看用法再回过头来看核心概念

2017-04-27 16:20:22 433

转载 Neo4j介绍与使用

Neo4j简介Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。图形数

2017-04-01 11:45:43 864

原创 CDH5.10 ubuntu14.04部署文档--离线安装

CDH5.10 ubuntu14.04部署文档--离线安装1. 说明本次部署使用台机器,4台用于搭建CDH集群,1台为内部源。内部源机器是可以连接公网的,可以提前部署好内部源(内部源服务器是已经存在的ubuntu14.04服务器),4台CDH集群服务器是无法连接内外。本次部署涉及到的服务器的hosts配置如下:192.168.0.230    cdh01192.168.0.23

2017-03-15 18:53:33 2858

原创 ubuntu下允许root用户ssh远程登录

1. 修改root密码: $ sudo passwd root2.修改ssh配置文件$ sudo vi /etc/ssh/sshd_config修改如下:#PermitRootLogin without-passwordPermitRootLogin yes3.重启 ssh服务$ sudo service ssh restart

2017-02-24 13:55:05 405

转载 完全理解Python迭代对象、迭代器、生成器

在了解Python的数据结构时,容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚。容器(container)容器是一种把多个元素组织

2016-10-31 16:13:52 469

转载 mongo基础

一、基础1、mongodb是什么类型的数据库?    mongodb是一个基于document的NOSQL数据库,每条数据的结构为BSON形式。mongodb不能支持join和事务,支持索引(组合索引、唯一索引等)和丰富的查询条件,单条document的写操作是原子的。mongodb使用“replica set”架构模式来提高数据的可用性,避免数据丢失和自动failover机制;其

2016-09-21 18:57:49 657

转载 pycharm 2016 2注册码

43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZ

2016-08-18 12:57:46 1052

转载 消息队列设计精要

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你

2016-07-05 14:37:55 439

转载 rpc简介、原理、实例-缘于difx

简介RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用).越底层,代码越复杂、灵活性越高、效率越高;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说明了这点。在传统的编程概念中,过程是由程序员在本地编译完成,并只

2016-07-05 09:40:31 538

转载 六大Web负载均衡原理与实现

开头先理解一下所谓的“均衡”不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。 一、http重定向当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过htt

2016-06-08 17:45:18 384

转载 python技巧

本文整理自SO上的热门问答 hidden features of python ,早期有人做过类似的整理,但是内容比较旧而且比较粗糙,因此笔者在原文基础上加入自己的一些理解,另外那些高质量的评论也引入进来了。总之,这是一篇用心之作,希望你可以喜欢。链式比较操作>>> x = 5>>> 1 10True>>> 10 20 False>>> x 10 10 100True>>

2016-04-18 14:21:26 418

转载 pycharm快捷键

pycharm-3.4.1/help目录下可以找到ReferenceCard.pdf快捷键英文版说明PyCharm Default KeymapPyCharm3.0默认快捷键(翻译的)1、编辑(Editing)Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完

2016-04-11 17:23:50 354

转载 MySQL · 引擎特性 · InnoDB Fulltext简介

前言从MySQL5.6版本开始支持InnoDB引擎的全文索引,语法层面上大多数兼容之前MyISAM的全文索引模式。 所谓全文索引,是一种通过建立倒排索引,快速匹配文档的方式。MySQL支持三种模式的全文检索模式:第一种是自然语言模式(IN NATURAL LANGUAGE MODE),即通过MATCH AGAINST 传递某个特定的字符串来进行检索。第二种是布尔模式(IN

2016-03-12 18:04:05 2070

转载 MySQL · 引擎特性 · InnoDB文件系统管理(二)

传统压缩存储格式当你创建或修改表,指定row_format=compressed key_block_size=1|2|4|8 时,创建的ibd文件将以对应的block size进行划分。例如key_block_size设置为4时,对应block size为4kb。压缩页的格式可以描述如下表所示:在内存中通常存在压缩页和解压页两份数据。当对数据进行修改时,通常先修改

2016-03-12 18:02:32 799

转载 MySQL · 引擎特性 · InnoDB文件系统管理(一)

综述从上层的角度来看,InnoDB层的文件,除了redo日志外,基本上具有相当统一的结构,都是固定block大小,普遍使用的btree结构来管理数据。只是针对不同的block的应用场景会分配不同的页类型。通常默认情况下,每个block的大小为UNIV_PAGE_SIZE,在不做任何配置时值为16kb,你还可以选择在安装实例时指定一个块的block大小。 对于压缩表,可以在建表时指定bloc

2016-03-12 18:00:58 736

转载 MySQL 加锁处理分析

1    背景    11.1    MVCC:Snapshot Read vs Current Read    21.2    Cluster Index:聚簇索引    31.3    2PL:Two-Phase Locking    31.4    Isolation Level    42    一条简单SQL的加

2016-03-12 17:34:30 263

转载 mysql死锁问题分析

线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。      Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。     为了更系统的分析问题,本文将从死锁检测、索引隔离级别与锁的关系、死锁成因、问题定位这五个方面来展开讨论。

2016-03-12 17:23:25 327

转载 MySQL · 引擎特性 · InnoDB 事务锁简介

InnoDB 事务锁系统简介前言本文的目的是对InnoDB的事务锁模块做个简单的介绍,使读者对这块有初步的认识。本文先介绍行级锁和表级锁的相关概念,再介绍其内部的一些实现;最后以两个有趣的案例结束本文。本文所有的代码和示例都是基于当前最新的MySQL5.7.10版本。行级锁InnoDB支持到行级别粒度的并发控制,本小节我们分析下几种常见的行级锁类型,以及在哪

2016-03-12 16:51:00 585

转载 隔离级别(Isolation Level)

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容)       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirt

2016-03-12 11:10:08 718

转载 Spark编程指南V1.4.0(翻译)

Spark编程指南V1.4.0·        简介·        接入Spark·        Spark初始化        ·        使用Shell        ·        在集群上部署代码·        弹性分布式数据集        ·        并行集合(Parallelized Collecti

2016-03-11 17:07:44 437

转载 RESTful API的安全性常用方法

保证RESTful API的安全性,主要包括三大方面: a) 对客户端做身份认证 b) 对敏感的数据做加密,并且防止篡改 c) 身份认证之后的授权 对客户端做身份认证,有几种常见的做法: 在请求中加签名参数1.为每个接入方分配一个密钥,并且规定一种签名的计算方法。要求接入方的请求中必须加上签名参数。这个做法是最简单的,但是需要确保接入方密钥的安全保存,另外还要注意防范r

2016-03-02 12:06:48 2722

转载 大型网站架构系列:分布式消息队列(一)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。本次分享大纲消息队列概述消息队列应用场景消息中间件示例JMS消息服务(见第二篇:大型网站架构系列:分布式消息队列(二))常用消息队列(见第二篇:大型网站架构系列:分布式消息队列(二))参考(推荐)资料(见第二篇:大型网站架构系列:分布式消息队列(二))本次分享总结(见第二篇:大型

2016-02-26 16:00:25 511

转载 大型分布式网站架构技术总结

本次分享大纲如下大型网站的特点大型网站架构目标大型网站架构模式高性能架构高可用架构可伸缩架构可扩展架构安全架构敏捷架构大型架构举例 一、大型网站的特点用户多,分布广泛大流量,高并发海量数据,服务高可用安全环境恶劣,易受网络攻击功能多,变更快,频繁发布从小到大,渐进发展以用户为中心免费服务,付费体验 二、大型网站架构目标高性能:提供快速的访问体验。高可用:网站服务一直

2016-02-26 14:41:49 445

原创 添加ubuntu用户sudo权限

1.要添加新用户到sudo,最简单的方式就是使用 usermod 命令。运行$sudo usermod -G admin username这就你要作的,然而,如果用户已经是其他组的成员,你需要添加 -a 这个选项,象这样$sudo usermod -a -G admin username2.修改/etc/sudoers文件$ su -# visudo在文件最后添

2016-02-20 17:52:13 825

原创 git使用基础教程

一、Git介绍Git是一款目前最流行的分布式版本控制系统,同类型的主要有Mercurial、Bazaar、Darcs等等。客户端提取的不仅仅是最新版本的文件快照,而是拷贝整个仓库的镜像,所以每一次Clone操作实际上都是对代码仓库的完整备份。各节点之间都可以互相pull和push进行同步。Git主要特点如下:1.1.   分布式传统的版本控制系统如CVS、Subversion等等采用单

2016-02-20 17:10:20 402

原创 ubuntu 安装trac

1.      安装trac$ sudo apt-get install trac2.      初始化项目$ sudo mkdir –p /var/trac/digcredit   #创建目录$ cd /var/trac/digcredit$ sudo trac-admin . initenv # 利用安装trac生成的命令初始化项目环境3.      添加admin管理

2016-02-20 17:04:10 616

转载 Mysql在大型网站的应用架构演变

写在最前:本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变可扩展性架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种Scale-up :  纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Scale-out : 横向扩展,  通过加节点(机器)来实现伸

2016-02-20 10:41:18 361

转载 Redis与Reactor模式

Redis与Reactor模式Jan 9, 2016最近看了Redis的设计与实现,这本书写的还不错,看完后对Redis的理解有很大的帮助。另外,作者整理了一份Redis源码注释,大家可以clone下来阅读。Redis是开源的缓存数据库,由于其高性能而受到大家的欢迎。同时,它的代码量只有6w多行,相比起mysql动则上百万行的代码量,实现比较简单。Redis中有很多

2016-02-19 14:47:04 425

转载 大型web系统数据缓存设计

1. 前言在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型、常见缓存系统的特点和数据指标、缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速、系统的了解相关知识。2. 数据库的瓶颈2.1 数据量关系型数

2015-12-04 09:06:45 469

转载 在Docker容器中实现安全与隔离

随着容器技术的发展,它的安全、隔离和资源控制的功能也在不断进步。本文中,我们将回顾Docker容器如何仅仅使用linux的原始功能来实现安全与隔离,比如namespaces, cgroups, capabilities等。虚拟化和隔离操作系统级的虚拟化、容器、空间以及“chroot with steroids”,其实都定义了同一个概念:用户空间隔离。类似Dock

2015-11-20 12:06:09 644

转载 mysql 数据插入优化方法

当一个线程对一个表执行一个DELAYED语句时,如果不存在这样的处理程序,一个处理器线程被创建以处理对于该表的所有DELAYED语句。通常来说,在MyISAM里读写操作是串行的,但当对同一个表进行查询和插入操作时,为了降低锁竞争的频率,根据concurrent_insert的设置,MyISAM是可以并行处理查询和插入的:当concurrent_insert=0时,不允许

2015-11-16 09:48:11 338

转载 手机号运营商正则

#移动号段 1340-1348|135-139|147|150-152|1571-1572|1574|158-159|182|183|187|188^1(34[0-8]|(3[5-9]|47|5[0-2]|57[124]|5[89]|8[2378])\\d)\\d{7}$#联通号段 130|131|132|145|155|156|185|186^1(3[0-2]

2015-11-11 19:22:51 587

转载 python 根据类的字符串名实例化对象

方法一:class obj(object):       pass  a = eval('obj()')方法二:如果是经常需要这样可以#将用来创建对象的字符串预编译成code对象.create_obj = compile('obj()', 'create_obj.py', 'eval') #需要创建的时候, 直接用code

2015-10-31 15:09:28 16494

转载 缓存算法的 Python 实现

这篇文章描述了怎么用 Python 实现复杂度为 O(1) 的「最不常用」(Least Frequently Used, LFU)缓存回收算法。在 Ketan Shah、Anirban Mitra 和 Dhruv Matani的论文中有算法描述。实现中的命名是按照论文中的命名。LFU 缓存回收机制对于 HTTP 缓存网络代理是非常有用的,我们可以从缓存中移除那些最不常使用的条目

2015-10-29 09:23:15 819

转载 八大排序算法的 Python 实现

本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。1、插入排序描述插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素

2015-10-29 08:50:25 391

nginx介绍pdf文件

nginx是目前网络服务器使用广泛的应该轻量级web服务,类似有apaceh, Lighttpd, tomcat等等。但是nginx以其高效低耗著称。

2014-10-14

nat123_v1.14

nat123可以快速简单的利用可以上网的机器发布公网域名,通过自己定义的二级域名方便在自己电脑上发布资源共享或者建立web server服务

2014-10-14

空空如也

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

TA关注的人

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