自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (24)
  • 收藏
  • 关注

原创 sentinel基于滑动窗口实现实时指标统计原理

sentinel通过责任链模式,让每个slot来实现一种功能来实现流量控制、熔断降级等功能。其中,最重要的一个Slot非StatisticSlot莫属,它通过统计单位时间的调用数、成功数、失败数等,为流量控制、熔断降级等提供数据支撑,而StatisticSlot的底层是基于滑动窗口实现实时指标统计的,下面介绍一下StatisticSlot的工作过程一、StatisticSlot的入口 sentinel将多个slot串联起来,每个slot在处理完成后,将数据传递给下一个slot,这些slot都是...

2021-07-03 17:38:41 651 1

原创 Elastic-Job-Lite 的失效转移机制

Elastic-Job-Lite作为一个分布式任务调度组件,当某个执行的机器出现宕机故障时,需要将这个机器上没有执行的任务分配到其它机器上执行,这就是Elastic-job的失效转移机制。下面详细介绍一下Elastic-job-lite的失效转移机制Elastic-Job-Lite处理失效机制的几个类FailoverService,作业失效转移服务。 FailoverNode,作业失效转移数据存储路径。 FailoverListenerManager,作业失效转移监听管理器。一、作业节点失效监

2021-06-27 22:08:56 887 2

原创 Elastic-Job-Lite 的元数据管理

Elastic-Job-Lite作为一个分布式任务调度组件,通过Zookeeper来实现元数据的管理,下面介绍一下Elastic-Job-Lite的几个重要的元数据类。一、ConfigurationServiceConfigurationService是分布式作业配置服务,用来记录作业的配置信息。在zookeeper中的目录结构是 $jobName/config 对应的值是json格式的字符串,里面记录了本次作业的配置 在 Zookeeper 看一个作业的配置节点数据存储...

2021-06-26 12:50:51 314 2

原创 Elastic-Job-Lite 执行流程

Elastic-Job-Lite是一个被广泛使用的分布式任务调度框架,下面介绍一下运用Elastic-Job-Lite来执行分布式任务的例子public class MyElasticJob implements SimpleJob { public void execute(ShardingContext context) { System.out.println(context.toString()); switch (context.getSharding

2021-05-23 23:40:27 710

原创 Elastic-Job-Lite分片策略

Elastic-Job-Lite在运行时会对作业进行分片,通过继承JobShardingStrategy接口#sharding(...)来执行作业分片的操作public interface JobShardingStrategy { /** * 作业分片. * * @param jobInstances 所有参与分片的单元列表 * @param jobName 作业名称 * @param shardingTotalCount 分片总

2021-05-21 20:13:57 461

原创 zookeeper保证一致性的协议ZAB

一、 ZAB 协议介绍ZAB (Zookeeper Atomic Broadcast原子广播协议) 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的一致性协议。基于该协议,ZooKeeper 实现了一种主从模式的系统架构来保持集群中各个副本之间的数据一致性。分布式系统中leader负责外部客户端的写请求。follower服务器负责读跟同步。这时需要解决俩问题。 Leader 服务器是如何把数据更新到所有的Follower的。 Leader 服务器突然间失效了,..

2021-02-21 21:04:06 177

原创 Java线程池ThreadPoolExecutor-终止线程池原理

一、终止线程池主要有两个方法:shutdown() 和 shutdownNow()。shutdown()后线程池将变成shutdown状态,此时不接收新任务,但会处理完正在运行的 和 在阻塞队列中等待处理的任务。shutdownNow()后线程池将变成stop状态,此时不接收新任务,不再处理在阻塞队列中等待的任务,还会尝试中断正在处理中的工作线程。二、shutdown() – 温柔的终止线程池public void shutdown() { final ReentrantLock ma

2021-02-21 17:16:32 1285 1

原创 kafka消费原理

consumer 采用 pull(拉)模式从 broker 中读取数据。push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由 broker 决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成 consumer 来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而 pull 模式则可以根据 consumer 的消费能力以适当的速率消费消息。pull 模式不足之处是,如果 kafka 没有数据,消费者可能会陷入循环中,一直返回空数据。针对这一点,Kafka 的消费者在消费数

2021-01-03 16:43:04 834

原创 Netty启动流程分析

Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使用 Netty 可以快速开发网络应用,下面以一段代码来说明一下Netty的启动流程。public void start() { ServerBootstrap bootstrap; EventLoopGroup group; MessageCollector collector; Channel serverChannel; //启动NIO服务的辅助启动类 bootstrap =

2020-12-27 20:53:37 193

原创 Mysql InnoDB如何保证事务

Mysql存储引擎InnoDB支持事务操作,即支持原子性、一致性、隔离性、持久性(ACID)特性。下面介绍一下InnoDB是怎样做到这几个特性的。原子性:原子性是指事务中的语句要么全部执行成功、要么全部不执行,原子性是通过undo log实现的。持久性:持久性是指事务一旦提交,它对数据库的改变就应该是永久性的,不会因为宕机等原因而丢失数据,持久性是通过redo log实现的。一致性:事务前后的数据必须保持一致性。一致性是通过redo log+undo log实现的。隔离性:隔离性是指,事务内部的操作

2020-12-20 22:15:06 920

原创 Elasticsearch选主流程

Elasticsearch作为一个分布式搜索和分析引擎需要一个master来管理集群中的节点、维护集群的元数据。与其它采用zookeeper来实现选主的分布式系统不同,Elasticsearch自己实现了自己的选举流程,下面介绍一下Elasticsearch的选主流程Elasticsearch中的Discovery模块负责发现集群中的节点,以及选择主节点。ES支持多种不同的Discovery选择,内置的实现称为Zen Discovery,其封装了节点发现(ping)、选主等实现过程。Elastics

2020-12-06 20:23:53 482

原创 Mysql数据库中的锁

Mysql是我们常用的数据库,为了保证数据的并发操作而不出错,需要多种锁来操作。下面介绍一下数据库的隔离基本在RR(可重复读)级别下常用的几种锁行锁(Record Lock)(1)记录锁, 仅仅锁住索引记录的一行,在单条索引记录上加锁。(2)record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。如果执行的语句如下:select * from db_table where un

2020-11-29 23:45:08 141

原创 RabbitMQ与Kafka的架构区别

RabbitMQ与Kafka是两周常用的消息队列,下面介绍一下它们的原理和区别一、RabbitMQ的架构: RabbitMQ是一个分布式系统,这里面有几个抽象概念。broker:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求。 master queue:每个队列都分为一个主队列和若干个镜像队列。 mirror queue:镜像队列,作为master queue的备份。在master queue所在节点挂掉之后,系统把mirror queue提升为master ..

2020-11-22 21:21:23 654

原创 Java8 函数式接口原理及用法

Java8相比之前的Java新增了几个重要的功能:Lambda表达式、函数式接口、Stream流。下面介绍一下Java中常用的函数式接口一、什么是函数式接口?函数式接口是指只有一个抽象方法的接口,它有个专门的注解@FunctionalInterface,该注解主要特点有:1、该注解只能标记在"有且仅有一个抽象方法"的接口上,表示函数式接口。2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。3、接口默认继承 java.lang.Object,所以如果接口显示声明覆盖了Object中的

2020-11-15 20:42:21 1169 3

原创 Eureka Service启动原理

Eureka是Netflix开发的服务治理框架,包括Eureka Service 和Eureka Client。其中Eureka Service是作为服务端,主要功能是登记注册的服务、将服务信息同步给集群中的其它节点、接收客户端发送的心跳信息、将注册的服务列表返回给请求的客户端,Eureka Client作为客户端主要进行服务的注册和发现。Spring Boot中使用Eureka Service很简单,只需要引入依赖以后添加一个@EnableEurekaServer注解即可,如@SpringBoo..

2020-11-08 20:43:45 377

原创 sentinel工作原理及使用

sentinel是一个功能全面的、面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。下面说一下它的工作原理及使用方法sentinel工作原理当sentinel作用在调用的接口上时,会将这个接口抽象成一种资源,调用方需要申请这种资源,使用的方法是SphU.entry(),如果能够申请成功,则说明没有被限流,否则会抛出BlockException,表面已经被限流了。从SphU.entry()方法...

2020-11-01 23:20:04 2256

原创 Java线程同步实现方式

作为一个Java程序员,平常的工作中除了实现代码的业务逻辑,还需要提高代码运行的效率。Java作为一个支持多线程的语言,并发编程对于提高程序的效率至关重要,在Java并发编程是整个Java开发体系中最难以理解但也是最重要的知识点,也是各类开源分布式框架中各个并发组件实现的基础。本周学习了一下Java的并发编程,总结如下。一、Java并发编程需要注意什么?1、共享数据的安全性问题堆内存和方法区内存可以共享。 因此成员变量和静态变量存在数据安全性问题。2、锁竟争带来的程序效率问题多个线程访问

2020-10-27 00:05:05 234

原创 Spring中@Transactional实现事务管理的原理

Spring中@Transactional实现事务管理的原理在日常的web开发中,我们经常会用到数据库的事务,spring中也提供了相应的方法来进行事务的管理。其中,Spring的注解@Transactional是我们常用的管理数据库事务的方法,下面介绍一下@Transactional的原理及使用。@Transactional实现事务管理的原理:...

2020-10-26 23:48:02 937

原创 CentOS安装命令的区别

yum -y install 包名(支持*) :自动选择y,全自动yum install 包名(支持*) :手动选择y or nyum remove 包名(不支持*)rpm -ivh 包名(支持*):安装rpm包rpm -e 包名(不支持*):卸载rpm包

2014-04-11 23:47:12 313

转载 centos下两种方法安装git

今天下个包需要使用git,网上找了下看到大多数只有编译安装,并且编译安装还有错,不知道他们也没有实验过,这里我来给大家介绍下编译安装和yum安装git.  系统:centos 5.5  需要的软件包:git-latest.tar.gz epel-release-5-4.noarch.rpm1.先给大家说下编译安装方法,安装前准备yum -y install zlib-devel

2014-04-11 23:47:03 279

原创 CentOS安装命令的区别

yum -y install 包名(支持*) :自动选择y,全自动yum install 包名(支持*) :手动选择y or nyum remove 包名(不支持*)rpm -ivh 包名(支持*):安装rpm包rpm -e 包名(不支持*):卸载rpm包

2014-04-11 23:46:26 336

转载 centos下两种方法安装git

今天下个包需要使用git,网上找了下看到大多数只有编译安装,并且编译安装还有错,不知道他们也没有实验过,这里我来给大家介绍下编译安装和yum安装git.  系统:centos 5.5  需要的软件包:git-latest.tar.gz epel-release-5-4.noarch.rpm1.先给大家说下编译安装方法,安装前准备yum -y install zlib-devel

2014-04-11 23:45:55 328

原创 mysql导入sql文件

1)首先我们使用MySQL提供的命令行界面来导入数据库,确保自己的电脑中安装了MySQL数据库,我们可以通过命令行来确认是否安装了MySQL数据库,当然,第一步是打开Mysql的数据库服务,我们使用下面的命令来启动服务器:net start mysql2)然后,我们再以一个用户登录到mysql服务器,如用户名为root,密码为root,mysql -hlocalhost -uroot

2014-04-04 23:19:03 432

VC实现音乐播放器

VC实现的音乐播发器,可以实现文件的添加和删除、可以播放音乐。

2014-04-03

邮件收发器

Visual C++实现的邮件收发器,包括邮件的发送和接收。

2014-04-03

P2P网络播放器

VC++实现的网络播放器,可以实现socket通信和MP3文件播放。

2014-04-03

FTP文件管理程序(java版)

FTP文件管理程序,java实现,能进行文件的上传和下载。

2014-03-02

摄像头拍照程序(java实现)

摄像头拍照程序,java实现,可以进行拍照和图片操作。

2014-03-02

网页浏览器(java实现)

java实现的网页浏览器。可以对网页进行浏览和基本操作。

2014-03-02

网络五子棋游戏(java版)

网络五子棋游戏程序,java实现。可以在两台电脑上进行五子棋游戏。

2014-03-02

仿QQ聊天软件(java版)

仿QQ聊天软件,java语言实现,能实现用户的添加和交流。

2014-03-02

php项目(在线考试系统)

网络在线考试系统源代码(Aapche+php+mysql)

2013-04-07

php项目(电子商务平台网)

电子商务平台源代码(php+mysql实现),内容详实

2013-04-07

php开发OA系统

办公自动化系统源代码(php+mysql实现)

2013-04-07

php编写物流配送系统源代码

物流配送系统源代码(php+mysql实现)

2013-04-07

php编写图书馆管理系统

学习图书馆管理系统源代码(php+mysql实现)

2013-04-07

php编写博客管理系统

博客管理系统(Apache+php+mysql实现)

2013-04-07

php编写企业快信系统

企业快信系统(Apache+php+Access+web Service实现)

2013-04-07

Java开发的银行系统

java开发的银行管理系统实例,内容详实。

2013-04-02

Java课程设计案例

Java课程设计中的一些案例,适合初学者

2013-04-02

PHP+Mysql+JS手册

PHP+Mysql+JS手册是开发php、mysql、javascript的技术文档

2013-04-02

WordPress中文完全教程

WordPress中文完全教程主要介绍了如何搭建、运用、开发WordPress

2013-04-02

ThinkPHP3.0 完全开发手册

ThinkPHP3.0 完全开发手册.pdf是开发Thinkphp的技术文档,适合初学者

2013-04-02

html5+css3源代码

基本的html5和css3的源代码实例,适合初学者学习html5和css3

2013-04-02

切水果html5编写

html5编写的切水果游戏源代码,内容详实,是学习游戏编程的好例子。

2013-04-02

捕鱼游戏HTML5编写

html5编写的捕鱼游戏源代码,里面涉及到html5游戏的制作

2013-04-02

python-3.2.3

windows下的python3.2.3。资源不好找了,特发出来让大家也好下载。

2012-12-18

空空如也

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

TA关注的人

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