10 loredp

尚未进行身份认证

暂无相关简介

等级
TA的排名 12w+

ElasticSearch-6.3.2源码解读(1)-----部署源码

今天决定走读一遍elasticsearch的源码,算是对这一类分布式系统(分布式的计算存储架构都是差不多的)有一个深入的了解。首先,获取elasticsearch源码编译调试代码,大家可以看下这篇文章,讲的很好,我是基本按照这篇文章来操作的,目前环境正常今天就只弄到了这些了,代码每天会看一些,当然要带着问题取看代码!!!加油...

2019-05-24 17:39:13

架构设计

软件模块:是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。 软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。 从逻辑的角度来拆分系统后...

2019-03-09 14:40:34

Resilience4j-----BulkHead

介绍Bulkhead意指船舶中的隔舱板,它将船体分割为多个船舱,在船部分受损时可避免沉船。框架中的Bulkhead通过信号量的方式隔离不同种类的调用,并进行流控,这样可以避免某类调用异常危及系统整体。(注:不同于Hystrix,该框架不提供基于线程池的隔离)初始化BulkheadBulkhead的配置方式与熔断类似,有对应的BulkheadRegistry和BulkheadConf...

2019-01-22 14:52:30

Resilience4j------CircuitBreaker

与Hystrix相比,它有以下一些主要的区别:Hystrix调用必须被封装到HystrixCommand里,而resilience4j以装饰器的方式提供对函数式接口、lambda表达式等的嵌套装饰,因此你可以用简洁的方式组合多种高可用机制 Hystrix的频次统计采用滑动窗口的方式,而resilience4j采用环状缓冲区的方式 关于熔断器在半开状态时的状态转换,Hystrix仅使用一次执...

2019-01-22 14:51:27

Resilience4j------RateLimiter

高频控制的配置方式与熔断类似,有对应的RateLimiterRegistry和RateLimiterConfig,自定义配置的可选项有:频次阈值 阈值刷新时间 限流后的冷却时间初始化:privatevoidinit(){//Forexampleyouwanttorestrictthecallingrateofsomemethodtobe...

2019-01-22 14:50:03

Flink基础教程-----学习笔记

Flink基础教程Flink,ApacheFlink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架。 Flink是如何实现批处理和流处理?Flink将批处理(即处理有限的静态数据)视作一种特殊的流处理。 Flink技术栈的核心组成部分,如下图: DataStreamAPI可以流畅地分析无限数据流,并且可以用Java或者Scala来实现。开发人...

2019-01-20 11:40:40

java并发编程之美----学习笔记总揽1

并发和并行1.并发是指同一时间段内多个任务同时在执行,且都没有执行结束,而并行是指在单位时间内多个任务同时在执行。并发任务强调的是一个时间段内同时在执行,而一个时间段是由多个单位时间累积而成,所以说并发的多任务在单位时间内不一定同时执行。在单CPU的时代多个任务都是并发执行的,这是因为单个CPU同时只能执行一个任务2.而在多线程编程实践中,线程的个数往往大于CPU的个数,所以一般都称多线程并发...

2019-01-16 16:36:50

kafka并不难学---学习笔记

在kafka系统中,核心组件的元数据信息均存储在zookeeper中。这些元数据信息具体包含:控制器选举次数、代理节点和主题、配置、管理员操作、控制器。他们在zookeeper系统中的分布如图所示:控制器选举次数,在kafka系统中,控制器每进行一次选举次数,都会在zk系统/controller_epoch节点下进行记录,该值作为一个数字。在kafka集群中,第一个代理节点(broker)启动时,...

2019-01-16 16:26:40

spring开始

本参考指南提供有关Spring框架的详细信息。它为所有功能提供了全面的文档,以及Springq潜在的基本概念(如“依赖注入”)的背景知识。如果您刚开始使用Spring,则可能需要通过创建基于SpringBoot的应用程序来开始使用SpringFramework。SpringBoot提供了一种快速方式来创建一个基于生产的Spring应用程序。它基于Spring框架,有利于配置的约定,并且旨

2017-08-17 20:04:03

多线程成本

从单线程应用程序到多线程应用程序不仅提供了优势,它也有一些成本。不要只是因为可以使用多线程启用应用程序。你应该有一个好主意:这样做所带来的好处大于成本。如有疑问,请尝试衡量应用程序的性能或响应能力,而不是仅仅猜测。更复杂的设计尽管多线程应用程序的某些部分比单线程应用程序更简单,但其他部分更为复杂。由多个线程执行的访问共享数据的代码需要特别注意。线程的互动并不总是简单。错误线程同步引起的错误可

2017-08-15 14:21:22

多线程优点

尽管面临挑战,仍然使用多线程的原因是多线程可以有几个好处:1.更好的资源利用率。2.在某些情况下更简单的程序设计。3.更灵敏的程序。更好的资源利用率想象一下从本地文件系统读取和处理文件的应用程序。假设从磁盘读取af文件需要5秒钟,处理时间需要2秒钟。然后处理两个文件5secondsreadingfileA2secondsprocessingfileA5

2017-08-14 10:09:29

Java并发/多线程教程

过去计算机有一个单CPU,只能一次执行一个程序。后来计算机可以处理多任务,这意味着计算机可以同时执行多个程序(AKA任务或进程)。但是这不是真的“同时”。单个CPU在程序之间共享。操作系统将在运行的程序之间切换,在切换之前执行每个程序一段时间。随着多任务处理,软件开发人员面临新的挑战。程序不能再假定所有的CPU时间可用,也不能全部内存或任何其他计算机资源。“好公民”计划应该释放所有不再使用的资

2017-08-11 15:54:58

线程安全和不变性

竞争条件只有在多个线程正在访问同一资源且一个或多个线程写入资源时才会发生。如果多线程读取相同的资源竞争条件是不会发生的。我们可以确保线程之间共享的对象永远不会被任何线程更新,那就是让共享对象不可变,从而线程安全。以下一个例子:publicclassImmutableValue{privateintvalue=0;publicImmutableValue(intvalue)

2017-08-04 13:25:37

java内存模型

java内存模型指明了java虚拟机如何利用计算机内存(RAM)工作的。因为java虚拟机是整个计算机的一个模型,那么很自然的他也包含一个内存模型。如果你想设计一个正确稳定的并发程序,那么理解java内存模型将会对此有很大的帮助。因为java内存模型指明了不同线程怎样和在什么时候能看到其他线程的共享变量被写入了,以及怎样能够成功地同步访问共享变量。最原始的java内存模型是不足的,所以jav

2017-08-02 14:46:04

使用Redis SETNX 命令实现分布式锁

使用Redis的SETNX命令可以实现分布式锁,下文介绍其实现方法。SETNX命令简介命令格式SETNXkeyvalue将key的值设为value,当且仅当key不存在。 若给定的key已经存在,则SETNX不做任何动作。 SETNX是SETifNoteXists的简写。返回值返回整数,具体为 

2017-05-04 15:19:15

并发场景下HashMap死循环导致CPU100%的问题

问题的症状从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问题在测试环境里可能很难重现。

2017-03-29 15:21:17

fail-fast

fail-fast机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。要

2017-03-29 14:42:40

小规模的流处理框架.Part 1: thread pools

原文链接 作者:TomaszNurkiewicz译者:simonwang(译者:强力推荐这篇文章,作者设计了一个用于小流量的流式数据处理框架,并详细给出了每一个需要注意的设计细节,对比了不同设计方案的优缺点,能够让你对流处理过程,某些设计模式和设计原则以及指标度量工具有一个更深刻的认识!)在GeeCON2016上我为我的公司准备了一个编程竞赛,这次的任务是设计并实现一个能够满足以下要

2017-03-27 15:52:41

浅谈Java中的equals和==

在初学Java时,可能会经常碰到下面的代码:1Stringstr1=newString("hello");2Stringstr2=newString("hello");34System.out.println(str1==str2);5System.out.println(str1.equals(str2));  为什么第4行和

2017-03-27 13:32:51

理解String 及 String.intern() 在实际中的应用

1.首先String不属于8种基本数据类型,String是一个对象。   因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。   2.newString()和newString(“”)都是申明一个新的空字符串,是空串不是null;   3.Stringstr=”kvill”; St

2017-03-27 13:31:34

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!