自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 6种延时队列的实现方案

延时队列的应用什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。延时队列在项目中的应用还是比较多的,尤其像电商类平台:订单成功后,在30分钟内没有支付,自动取消订单 外卖平台发送订餐通知,下单成功后60s给用户推送短信。 如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存 淘宝新建商户一个月内还没上传商品信息,将冻结商铺等 ……上边的这些场景都可以应用延时队列解决。延时队列的实现我个

2020-06-22 16:36:48 3197 2

转载 详细解析kafka之 kafka消费者组与重平衡机制

消费组组(Consumer group)可以说是kafka很有亮点的一个设计。传统的消息引擎处理模型主要有两种,队列模型,和发布-订阅模型。队列模型:早期消息处理引擎就是按照队列模型设计的,所谓队列模型,跟队列数据结构类似,生产者产生消息,就是入队,消费者接收消息就是出队,并删除队列中数据,消息只能被消费一次。但这种模型有一个问题,那就是只能由一个消费者消费,无法直接让多个消费者消费数据。基于这个缺陷,后面又演化出发布-订阅模型。发布-订阅模型:发布订阅模型中,多了一个主题。消费者会预先订阅主题,

2020-05-27 14:49:27 432

转载 理解TIDB架构设计

一、分布式数据库诞生背景随着互联网的飞速发展,业务量可能在短短的时间内爆发式地增长,对应的数据量可能快速地从几百 GB 涨到几百个 TB,传统的单机数据库提供的服务,在系统的可扩展性、性价比方面已经不再适用。比如MySQL数据库,缺点是没法做到水平扩展。MySQL 要想能做到水平扩展,唯一的方法就业务层的分库分表或者使用中间件等方案。但是,这些中间层方案也有很大局限性,执行计划不是最优,分布式...

2020-04-24 15:55:38 1079

转载 详解HTTP2四大核心特性

前言HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一。一、HTTP/1.1发明以来发生了哪些变化?如果仔细观察打开那些最流行的网站首页所需要下载的资源的话,会发现一个非常明显的趋势。 近年来加载网站首页需要的下载的数据量在逐渐增加,并已经超过了2...

2020-04-21 12:20:51 609

转载 从session、cookie到token以及JWT

session和cookie现在一般都是session和cookie一起用,一起提。但是他们俩其实不是一定要在一起。首先牢记一点,http协议是无状态的。就是说,一个请求过来,服务器不知道这个请求的用户是不是已经登录过了,不知道他的状态。只能再把这个请求重定向到登陆页面。这样用户就疯了,怎么一直让我登录。所以,前人想了一个办法,在第一次登录后,在服务器端记录一个会话id(sessi...

2020-04-20 15:11:44 337

转载 详解日志采集工具--Logstash、Filebeat、Fluentd、Logagent对比

概述常见的日志采集工具有Logstash、Filebeat、Fluentd、Logagent、rsyslog等等,那么他们之间有什么区别呢?什么情况下我们应该用哪一种工具?LogstashLogstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。优势Logstash 主要的...

2020-04-17 14:45:27 1395

转载 Kafka中的时间轮算法

零、时间轮定义简单说说时间轮吧,它是一个高效的延时队列,或者说定时器。实际上现在网上对于时间轮算法的解释很多,定义也很全,这里引用一下朱小厮博客里出现的定义:参考下图,Kafka中的时间轮(TimingWheel)是一个存储定时任务的环形队列,底层采用数组实现,数组中的每个元素可以存放一个定时任务列表(TimerTaskList)。TimerTaskList是一个环形的双向链表,链表中的每...

2020-04-09 00:22:18 186

转载 Kafka架构原理

定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用与大数据实时处理领域。消息队列Kafka 本质上是一个 MQ(Message Queue),使用消息队列的好处?(面试会问)解耦:允许我们独立的扩展或修改队列两边的处理过程。 可恢复性:即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。 缓冲:有助于解决生产消...

2020-03-24 11:52:19 104

转载 Zookeeper的ZAB协议与Paxos协议区别

一、联系1. 两者构建的系统都有一个Leader角色,Leader进程负责协调多个Follower进程的运行2. Leader进程都会等待超过半数的Follower进程做出正确的分亏后,才会将一个提案进行提交3. 在ZAB协议中每个Proposal中都包含一个epoch值,用来代表当前的Leader周期;在Paxos算法中,同样存在这样一个标识(Ballot)二、区别1.两者的初衷或者...

2020-03-04 15:56:11 426

转载 分布式系统数据一致性解决方案

1、微服务架构的数据一致性问题以电商平台为例,当用户下单并支付后,系统需要修改订单的状态并且增加用户积分。由于系统采用的是微服务架构,分离出了支付服务、订单服务和积分服务,每个服务都有独立数据库做数据存储。当用户支付成功后,无论是修改订单状态失败还是增加积分失败,都会造成数据的不一致。为了解决例子中的数据一致性问题,一个最直接的办法就是考虑数据的强一致性。那么如何保证数据的强一致性呢?...

2020-03-03 23:33:24 2123

转载 为什么阿里的dubbo注册中心要放弃zookeeper, 而用Nacos

首先,那么为什么说zookeeper不适合做服务注册中心呢?从CAP角度来看有个思考,从CAP角度考虑,服务注册中心是CP系统还是AP系统呢?首先,服务注册中心是为了服务间调用服务的,那么绝对不允许因为服务注册中心出现了问题而导致服务间的调用出问题。再者, 假如有node1,node2,node3,集群节点。 保存着可用服务列表ip1,ip2,ip3,试想如果此时不一致...

2020-01-21 17:51:30 1571

转载 系统调优,你所不知道的TIME_WAIT

你遇到过TIME_WAIT的问题吗?我相信很多都遇到过这个问题。一旦有用户在喊:网络变慢了。第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下,哎呀妈呀,几千个TIME_WAIT。然后,做的第一件事情就是:打开Google或者Bing,输入关键词:too many time wait。一定能找到解决方案,而排在最前面或者被很多人到处转载的解决方案一...

2020-01-15 14:23:06 181

转载 Oracle 的SQL*LOADER中optionally enclosed的作用

表示数据应由特殊字符括起来。也可以括在TERMINATED字符内。使用OPTIONALLY要同时用TERMINLATED。ENCLOSED指两个分界符内的数据。如果同时用ENCLOSED和TERMINAED,则它们的顺序决定计算的顺序。首先创建一张表,建表语句如下:createtablesqlldr_optionally_enclosed(NOint,fil...

2019-12-18 09:26:50 3876 1

原创 支付系统架构图

https://www.processon.com/view/5d2be135e4b092b3345aff64

2019-11-04 16:44:44 1402

转载 如何从0到1设计一个MQ消息队列

摘要:消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一。 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要。 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具备的特征。消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一。如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要。不仅知其然还要知其所以...

2019-04-11 14:32:36 308

转载 SQL解析之硬解析和软解析

当客户端进程,将SQL语句通过监听器发送到Oracle时, 会触发一个Server process生成,来对该客户进程服务。Server process得到SQL语句之后,对SQL语句进行Hash运算,然后根据Hash值到library cache中查找,如果存在,则直接将library cache中的缓存的执行计划拿来执行,最后将执行结果返回该客户端,这种SQL解析叫做软解析;如果不存在,则会对

2017-06-14 15:31:33 685

转载 oracle性能调优之--Oracle硬解析与软解析

oracle性能调优之--Oracle硬解析与软解析 Oracle 硬解析与软解析是我们经常遇到的问题,什么情况会产生硬解析,什么情况产生软解析,又当如何避免硬解析?下面的描述将给出  www.2cto.com  软硬解析的产生,以及硬解析的弊端和如何避免硬解析的产生。   一、SQL语句的执行过程    当发布一条SQL或PL/SQL命令时,Oracle会自动寻找该命

2017-06-14 15:27:34 1719

转载 微信支付与微信转账的区别

目前在市场上,经常看到一些小的店铺,收银台那里贴着一张微信或支付宝的二维码,很多商家可能就已经认为自己开通微信支付、支付宝支付了;其实这大部分只是微信和支付宝的转账功能;Tips很多商家并不清楚这两种方式的区别,都不懂官方的服务商去接入的微信支付、支付宝支付和自己贴一张二维码,让顾客转账只要0.1%的微信提现费用;那么到底这两种方式有什么不同呢?一、实现方式:

2017-05-05 18:37:26 5939 1

转载 类加载器深入理解

虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的模块称为“类加载器”。类加载器在类层次划分、OSGI、热部署、代码加密等领域大放异彩,成为了Java技术体系中一块重要的基石。类与类加载器类的唯一性对于任意一个类,都需要由加载它的类加载器和类

2017-04-13 13:47:55 983

转载 static方法和非static方法的区别(java)

虽然知道,但是实际用起来时候还是不是特别清楚,这里转载两篇。http://joe5456536.blog.163.com/blog/static/8537477320117136658629/● 生命周期(Lifecycle):静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memor

2017-03-30 11:27:40 5180

转载 linux下搭建redis并解决无法连接redis的问题

以前公司在开发阶段连接的redis一直是正式环境中的,最近老大让我在搭建一个局域网内的redis用于开发阶段时连接使用,搭建过程中也遇到了一些问题,还好已经解决了,在这里记录一下。首先是搭建redis,这个比较简单。1、检查安装依赖程序yum install gcc-c++yum install -y tclyum install wget2、获取安装文件wget htt

2017-03-02 16:55:19 1148

转载 Linux系统下安装rz/sz命令及使用说明

1.软件安装(1)编译安装root 账号登陆后,依次执行以下命令:1cd /tmp2wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz3tar zxvf lrzsz-0.12.20.tar.gz && cd lrzs

2017-03-02 14:18:40 188

转载 Linux下通过命令行创建和设置一个MySQL用户

问题:我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制。如何通过命令行的方式来创建并且设置一个MySQL用户呢?要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行。每个MySQL用户帐号都有许多与之相关连的属性,例如用户名、密码以及权限和资源限制。"权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用

2017-02-28 15:08:57 349

原创 CentOS 7.0防火墙设置

操作系统环境:CentOS Linux release 7.0.1406(Core) 64位CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤。1、关闭firewall:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止fi

2017-02-28 10:03:27 253

转载 Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数

http://blog.chinaunix.net/uid-20205875-id-4891168.htmlLinux配置支持高并发TCP连接(socket最大连接数)1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一

2017-02-24 15:33:52 2114

转载 徐汉彬:Web系统大规模并发——电商秒杀与抢购

http://www.kuqin.com/shuoit/20141203/343669.html电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到

2017-02-23 18:37:19 607

转载 shell脚本监控系统负载、CPU和内存使用情况

这篇文章主要介绍了shell脚本监控系统负载、CPU和内存使用情况,本文分别给出监控服务器系统负载情况、监控系统cpu使用情况、、监控系统内存情况、监控系统交换分区swap使用情况的脚本,需要的朋友可以参考下在没有nagios监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况。一、安装linux下面

2017-02-21 23:32:33 571

转载 linux 系统负载高 如何检查

1:load Average   1.1:什么是Load?什么是Load Average?   Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a measure of the amount of work that a compute system is doing)   简单的说是进程队列的长度。Load Average 就是一段

2017-02-21 18:55:20 394

转载 ArrayList和Vector的扩容机制

ArrayList和Vector都是继承了相同的父类和实现了相同的接口。如下Java代码  public class Vector      extends AbstractList      implements List, RandomAccess, Cloneable, java.io.Serializable  {}    public class ArrayLis

2017-02-21 14:01:28 339

转载 使用 JMeter 完成常用的压力测试

本文介绍了 JMeter 相关的基本概念。并以 JMeter 为例,介绍了使用它来完成最常用的三种类型服务器,即 Web 服务器、数据库服务器和消息中间件,压力测试的方法、步骤以及注意事项。1评论胡 键 ([email protected]), 西安交通大学硕士2006 年 6 月 26 日内容在 IBM Bluem

2017-02-20 18:02:57 324

转载 mysql qps tps一般多大

(1)QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show global status like 'Question%'; (2)TPS(每秒事务量) TPS = (Com_commit + Com_rollback) / seconds mysql > show global status like '

2017-02-16 15:43:10 33409 1

转载 MySQL 对于千万级的大表要怎么优化?

https://www.zhihu.com/question/19719997作者:哈哈链接:https://www.zhihu.com/question/19719997/answer/81930332来源:知乎著作权归作者所有,转载请联系作者获得授权。很多人第一反应是各种切分;我给的顺序是:第一优化你的sql和索引;第二加缓存,memca

2017-02-12 19:19:59 257

转载 简析TCP的三次握手与四次分手

TCP是什么?具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Dat

2017-02-09 17:12:09 193

转载 InnoDB还是MyISAM 再谈MySQL存储引擎的选择

作为MySQL数据库的两种主要的存储引擎,MyISAM和Innodb各有长处,本文的作者探讨了MyISAM不只适合小型项目,它的稳定性、扩展性和高可用性让作者对它情有独钟。

2017-02-07 10:52:44 6406 2

转载 Nginx应用-Location路由反向代理及重写策略

一、Nginx的反向代理的路由策略Nginx是著名的高性能Web服务器,应用在很多Web服务领域,同时开发和部署过程中,为了更好的控制接口API(或是WebService),我们需要严格的或是谨慎的规划URL的使用,这样才能为以后的扩张、迭代打下良好的基础,否则杂乱无章的URL使用,将是以后大规模扩展的噩梦。Location的配置语法规则: location [=|~|~*|^~] /

2017-01-25 11:15:25 2492

转载 Nginx通过请求的URL做定向路由策略

应用有一个场景是需要根据url中"&_router=10.0.0.1"参数指定的机器转发到相应机器上做处理,看了一下Nginx文档,发现可以通过内嵌变量$arg_来完成,比较方便和灵活,代码如下:1234567891011location / {    if ( $arg__router = 10.0.0.1 

2017-01-25 11:05:35 4000

转载 maven基础命令

Maven 参数 -D 传入属性参数 -P 使用pom中指定的配置 -e 显示maven运行出错的信息 -o 离线执行命令,即不去远程仓库更新包 -X 显示maven允许的debug信息 -U 强制去远程参考更新snapshot包 例如 mvn install -Dmaven.test.skip=true -Poracle 其他参数可以通过mvn help 获取

2017-01-24 10:27:58 240

转载 Netty 4.0 实现心跳检测和断线重连

一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务端 一般情况下,客户端与服务端在指定时间内没有任何读写请求,就会认为连接是idle(空闲的)的。此时,客户端需要向服务端发送心跳消息,来维持服务端与客户端的链接。那么怎么判断客户端在指定时间里没有任何读写请求呢?netty中为我们提供一个特别好用的IdleStateHandler

2017-01-23 17:47:28 632

转载 Netty框架之网络线程模型

Netty网络线程模型主要有两类线程组成:boss线程、worker线程。启动一个server实例只会产生一个boss线程,boss线程主要负责监听端口,当有新的连接请求时就会产生一个task交给worker线程池处理,worker线程池中线程的个数默认是cpu个数的2倍。       Netty网络I/O操作采用了目前流行的I/O多路选择器Selector方式(具体的实现是selec

2017-01-23 15:48:12 342

转载 Netty框架之异步事件驱动模型

Netty使用了异步的事件驱动模型,来触发网络I/O的各种操作,其在socket层上面封装一层异步事件驱动模型,使得业务代码不需要关心网络底层,就可以编写异步的无网络I/O阻塞的代码。Netty的异步事件驱动模型主要涉及到下面几个核心的概念:  Channel:表示一个与socket关联的通道 ChannelPipeline:管道,一个Channel拥有一个ChannelPip

2017-01-23 15:43:40 483

Java虚拟机规范

2016-11-15

Java并发编程的艺术.pdf

2016-11-15

策略模式(Java)

通过两个经典的例子解析策略模式的内涵,让你更加深入了解策略模式的魅力

2010-11-25

空空如也

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

TA关注的人

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