自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 收藏
  • 关注

原创 Zookeeper -分布式部分应用场景代码实现 -- 05

文章目录1.分布式锁1.1 通过原生zookeeper封装实现2.2 使用Curator recipe 实现1.分布式锁1.1 通过原生zookeeper封装实现package com.vison.ws.zookeeper;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import java....

2019-04-21 16:26:31 139

转载 JVM之内存分配,栈分配与TLAB -- 03

文章目录1.栈上分配1.1 栈上分配如何开启2.TLAB3. 对象内存分配的两种方法3.1 指针碰撞(Serial、ParNew等带Compact过程的收集器)3.2 空闲列表(CMS这种基于Mark-Sweep算法的收集器)4. 内存分配流程图  在学习Java的过程中,一般认为new出来的对象都是被分配在堆上的,其实这个结论不完全正确,因为是大部分new出来的对象被分配在堆上,而不是全部。通...

2019-04-21 16:25:47 836

原创 Zookeeper -API使用,事件机制,Curator的使用 -- 04

1.Zookeeper数据存储事务日志 conf/zoo.cfg 中dataDir目录中快照日志 conf/zoo.cfg 中dataDir目录中运行时日志 bin/zookeeper.out文件中

2019-03-29 20:52:25 123

原创 Zookeeper 原理 之ZAB,选举 -- 03

文章目录1. ZAB协议1.1 消息广播的实现原理1.2 崩溃恢复2. 选举2.1 启动时的leader选举2.1 服务运行期间的Leader选举3. Leader选举源码3.1 FastLeaderElection 选举过程3.2 从QuorumPeerMain类开始3.3 调用QuorumPeer.start方法3.4 消息如何广播1. ZAB协议  ZAB(Zookeeper Atomi...

2019-03-29 20:52:05 585

原创 Zookeeper的典型应用场景 -- 02

文章目录1.数据的发布和订阅 - 配置中心2.负载均衡3.命名服务 - 唯一命名4.分布式协调/通知5.集群管理6. Master选举7. 分布式锁7.1 排他锁7.2 共享锁  Zookeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架,可以使用它来进行分布式的发布和订阅。另外一方面,通过对Zookeeper中丰富的数据节点类型交叉使用,配置watcher事件机制,可以构建一系列分...

2019-03-29 20:51:44 112

原创 Linux 基础命令概览

文章目录1.常用系统工作命令2.系统状态检测命令3. 文本文件编辑命令4. 打包压缩命令5.输入输出重定向6.常用转义字符7.Linux中重要的环境变量这里是针对redhat 7 的常用命令1.常用系统工作命令1.1 echo命令:在终端输出字符串或变量提取后的值语法:   echo [字符串| $变量] 输出变量SHELL的值:    echo $SHELL输出字符串vis...

2019-03-03 12:42:54 135

原创 JVM 之 虚拟机工具

1. jps ---- java process statusjps -l 主类全名jps -m 运行传入主类的参数jps -v 虚拟机参数2. jstat 类加载,内存,垃圾收集,jit编译信息、3. jinfo 实时调整和查看虚拟机参数-XX:[+/-]option-XX:option=value4. jmapjmap -dump:formart=b...

2019-02-28 20:50:51 124

原创 JVM 之 Class文件

1.文件结构魔数Class文件版本常量池访问标志类索引,父类索引,接口索引集合字段表集合方法表集合属性表集合//文件格式:ClassFile { u4 magic; // 魔法数字,表明当前文件是.class文件,固定0xCAFEBABE u2 minor_version; // 分别为Class文件的副版本和主版本 u2 major_version; u2 con...

2019-02-25 21:25:53 99

转载 JVM 之 Java对象

https://www.cnblogs.com/duanxz/p/4967042.html

2019-02-24 10:06:43 133

原创 初识Zookeeper 客户端使用,集群搭建 -- 01

文章目录1.zookeeper简介2.zookeeper安装部署2.1 单机安装2.2 集群安装2.3 zookeeper shell命令2.4 客户端常用命令3.zookeeper核心概念3.1 数据节点分类3.2 当前数据节点详细信息3.3 Session会话3.4 集群角色3.5 Watcher 事件监听器1.zookeeper简介  zookeeper 是一个开源的分布式协调服务,由雅...

2019-02-12 21:17:44 124

原创 ElasticSearch高级特性

文章目录ElasticSearch 分布式特性一、ES节点介绍1.ES分布式特性2.节点启动3.Cluster state4.Master Node5. Coordinating节点6.数据节点 Data Node7.单点问题二、副本和分片1.概念介绍2. 节点问题三、集群状态 Cluster Health1.集群状态2.故障转移四、脑裂问题 split-brain五、分布式存储1.文档存储算法2...

2019-02-12 16:48:21 342

原创 HttpClient使用

apache的Http-> REST调用import org.apache.http.NameValuePair;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.cli...

2019-02-12 16:47:57 79

原创 序列化和反序列化

文章目录1.概念2.评价一个序列化算法优劣的两个重要指标3.序列化技术3.1 Java自身提供的序列化机制3.1.1 如何实现一个序列化操作3.1.2 序列号高阶认识1) serialVersionUID 的作用:2) 静态变量序列化3)父类的序列化4)transient 关键字5)序列化的存储规则3.2 XML 序列化框架3.3 JSON 序列化框架3.4 Hessian 序列化框架3.5 Pr...

2019-02-12 16:47:16 115

原创 Https原理

文章目录一、Http1.URL( Uniform Resource Locator )2.URI(Uniform Resource Identifier)3.Http特点4.HTTP协议的缺陷二、Https1.Https介绍2.Https原理一、Http1.URL( Uniform Resource Locator )URL(Uniform Resource Locator) 地址用于描述一...

2019-02-11 14:49:02 605

原创 JVM之堆的垃圾回收 -- 03

文章目录一、判断对象是否存活的算法1. 引用计数法2.可达性分析算法二、垃圾收集算法1.标记清除法(Mark-Sweep)2.复制算法3.标记整理算法4.分代收集算法三、引用1.强引用2.软引用3.弱引用4.虚应用介绍:  MinorGC :新生代的GC  MajorGC :老年代的GC  FullGC = MajorGC + MinorGC多个垃圾回收器及算法的目的都是为了 减少F...

2019-01-24 22:10:46 342

转载 JVM之堆内存分配,方法区的回收 -- 02

文章目录1.内存分配及回收策略1.1 对象优先在Eden分配1.2 大对象直接进入老年代1.3 长期存活的对象将进入老年代1.4 动态对象年龄判定1.5 空间分配担保2.回收方法区2.1主要回收对象2.2 需要注意方法区回收的应用2.3 HotSpot虚拟机的相关调整  JVM的内存模型JMM图形如下:  这里主内存里面的数据就是共享的数据(堆,方法区的数据)。为了保证内存的不断变大撑爆内存...

2019-01-20 19:26:48 239

转载 JVM之运行时内存 -- 01

文章目录Java运行时内存1.1 程序计数器1.2 Java虚拟机栈1.3 本地方法栈1.4 Java堆1.5 方法区1.6 运行时常量池1.7 直接内存  Java虚拟机在执行Java程序的时候会把他所管理的内存划分为若干个不同的数据区域,各个区域有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而创建和销毁。Java运行时内存 Ja...

2019-01-20 17:07:23 66

转载 并发编程之 根据CPU核心数确定线程池并发线程数

原文见 https://blog.csdn.net/FAw67J7/article/details/79885842 目录一、抛出问题二.分析三、实际应用四、总结: 正文回到顶部一、抛出问题关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:第...

2019-01-19 21:56:01 354

原创 并发编程之Condition -- 08

  任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式JUC包提供了Condition来对锁进行精准控制,Condition提供了类似Object的监视器方法,和Lock配合可以实现等待和通知模式,让某些线程一起等待某个...

2019-01-19 12:28:47 88

原创 并发编程之Lock,LockSupport,重入锁,读写锁 -- 07

文章目录1. ReentrantLock2. ReentrantReadWriteLock3. ReentrantLock原理  我们知道,锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源,在Lock接口出现之前,Java应用程序只能依靠synchronized关键字来实现同步锁的功能,在java5以后,增加了JUC的并发包且提供了Lock接口用来实现锁的...

2019-01-19 11:41:29 366

原创 并发编程之JUC包--06

文章目录1.Java具有原子性,可见性和有序性的线程通信2.concurrent包的实现  现在CPU内部已经执行原子的CAS操作,CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言。​而compareAndSwapInt就是借助C++语言来调用CPU底层指令实现原子操作的。1.Java具有原子性,可见性和有序性的线...

2019-01-15 22:09:34 361

原创 并发编程之同步器AQS--05

文章目录1.功能分类2.内部实现3.AQS使用方法3.1 继承3.2 修改同步状态的方法3.3 同步器可以重写的方法3.4 调用AQS提供的方法3.5 设计思想  AQS(AbstractQueuedSynchronizer),AbstractQueuedSynchronizer提供了一个FIFO队列,可以看做是一个用来实现锁以及其他需要同步功能的框架。这里简称该类为AQS。AQS的使用依靠继承...

2019-01-15 21:45:19 239

原创 并发编程之CAS--04

1.CAS锁机制-乐观锁  在jdk5以前,java基本只有靠synchronized关键字来保证同步,这会导致需要同步的对象被加上独占锁,也就是我们常说的悲观锁。悲观锁存在一些问题,典型的如:1.在多线程竞争下,加锁和释放锁会导致比较多的上下文切换和调度延时,引起性能问题。2.一个线程持有锁会导致其他所有需要此锁的线程挂起  与悲观锁对应的是乐观锁,乐观锁在处理某些场景的时候有...

2019-01-14 23:42:31 65

原创 计算机网络知识

文章目录一.计算机网路性能指标二.计算机网络体系结构三. 物理层1.关键术语2. 宽带接入技术2.1 ADSL技术2.2 光纤同轴混合网(HFC网)2.3 FTTx技术四、数据链路层1.数据链路2.数据链路层的三个基本问题3.点到点协议PPP3.1 PPP协议要求:3.2 PPP协议包含三部分4. 使用广播通信4.1 共享信道划分4.2 以太网4.2.1 网卡4.2.2 CSMA/CD协议4.2....

2019-01-14 20:13:05 142

原创 并发编程之synchronized关键字原理--03

文章目录1.synchronized应用方式2.synchronized字节码指令3.synchronized的锁的原理3.1 Java对象头3.2 Mark Word3.3 Monitor3.4 synchronized的锁升级和获取过程1)自旋锁(CAS)2)偏向锁3)轻量级锁4)重量级锁5)锁对比4.wait和notify4.1 原理:4.2 wait和notify放在synchronize...

2019-01-13 19:00:15 93

原创 并发编程之JMM解决线程安全问题及volatile关键字--02

文章目录1. JMM解决原子性、可见性、有序性的问题1.1 原子性保障1.2 可见性1.3 有序性2. volatile如何保证可见性3. volatile防止指令重排序3.1 内存屏障4. Volatile原子性问题5.volatile使用条件6.volatile应用场景1. JMM解决原子性、可见性、有序性的问题  在Java中提供了一系列和并发处理相关的关键字,比如volatile、Sy...

2019-01-13 13:50:44 270 1

原创 并发编程之线程基础---01

文章目录1.线程状态2.通过命令显示线程状态3.线程启动和停止3.1 启动3.2 停止4.线程安全问题4.1 计算机底层线程原理4.2 计算机底层缓存一致性问题4.3 Java中的线程安全问题4.3.1内存模型JMM1.线程状态  线程一共有 6 种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED)NEW:初始状态,线程被构...

2019-01-13 10:43:39 107

原创 React 表格导出

如下方法可以用excel表格下载数据import ExportJsonExcel from "js-export-excel"; // 调用方法 downloadExcel = () =>{ // 数据导入 const {data} = this.props; let data = data; let opti...

2019-01-12 12:45:47 1073 1

原创 设计模式之模板模式

模板模式又名模板方法模式。  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变 一个算法的结构即可重定义该算法的某些特定步骤。 TemplateMethod 模式一般是需要继承的。和策略模式对比:策略模式:只有选择权(由用户自己选择已有的固定算法)模板模式:侧重点不是选择,你没有选择,你必须这么做,你可以参与某一部分内容自定义...

2019-01-06 16:34:19 266 1

原创 ElasticSearch 结构原理

文章目录1. ELASTIC Stack 生态2. ElasticSearch2.1 Lucene和数据库的对比2.2 ElasticSearch和数据库的对比2.3 ElasticSearch中文档的存储结构1. ELASTIC Stack 生态特点:1)学习门槛低,开发周期短,上线快2)性能快,查询快,实时展示结果3)迅速扩容,快速支撑增长迅猛的数据量GB->TB,PBEla...

2019-01-06 16:33:44 205

原创 ElasticSearch 集群搭建和可视化插件安装

文章目录1.单机版的搭建1) 进入bin目录下,直接执行elasticsearch 命令2) 访问 http://localhost:9200/2.集群的搭建2.1 搭建集群2.2 使用elasticsearch-head-master可视化插件2.3 Cerebro 的安装这里实在windows环境操作的官网下载ElasticSearch包,https://www.elastic.co/d...

2019-01-06 16:33:02 491

转载 设计模式之策略模式

特点: 最终执行结果是固定的,执行过程和执行逻辑不一样应用场景: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。  Spring 中在实例化对象的时候用到 Strategy 模式,在 SimpleInstantiationStrategy 有使用。举例: 比较器,旅行路线,固定算法、买东西支付场景可以参考:我们平常新建的Compa...

2019-01-05 11:27:25 56

原创 设计模式之代理模式

文章目录一、代理1. 静态代理2.动态代理2.1 JDK代理2.2 CGLIB代理二、原理1.JDK代理原理  代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.作用:1.检测类中方法的执行2.可以在类中所有的或者某一个方法执行的过程中 动态的植入代码进行运行...

2019-01-01 23:50:38 55

原创 设计模式之原型模式

相关点:apache中反射实现原型模式 BeanUtilsjdk clone克隆(浅拷贝)在Spring中Bean对象配置中的scope=“prototype”,每次使用对象之前,都会创建一个对象,并且会将依赖关系完整的赋值给新创建的对象Spring 默认是单例模式浅拷贝: 如果是复制的是 引用类型,那么复制的就是引用类型的地址,并没有重新新建一个单独的引用类型,后面如...

2018-12-26 23:33:34 137

原创 设计模式之单例模式

文章目录1.饿汉式2.懒汉式2.1 (线程非安全)2.2 (线程安全)3.内部类实现4.注册登记式5.枚举式6.反序列化单例模式  初衷是为了使资源共享,只需要赋值或者初始化一次,大家都能重复利用应用场景: Listener本身单例,日历Calendar,IOC容器,配置信息Config(除了差异性的)技术方案: 保证整个运行过程中只有一份,饿汉式、懒汉式、注册登记式(枚举式)、反序列如...

2018-12-26 22:05:52 57

原创 Docker基础命令

2018-12-25 21:00:31 95 1

原创 Gradle的依赖

每一个项目都有一个ConfigurationContainer类的容器来管理相应的配置,并且每一个Gradle都是有依赖处理器的,由DependencyHandler接口来实现如下图:1.外部模块依赖两种方式声明依赖:字符串的形式如: compileOnly ‘org.projectlombok:lombok:1.18.2’key-value形式 :testCompile group...

2018-12-23 10:41:46 84

原创 Gradle中task使用, 构建脚本

每一个Gradle构建都包含三个基本构建快:project, task, propertyproject项目:一个project表示一个正在构建的组件,每一个构建脚本build.gradle至少定义一个脚本项目的属性和方法可以直接使用,不需要使用project变量task任务任务动作定义了一个当任务执行时的最小工作单元property属性每一个project和task都提供gett...

2018-12-23 10:08:25 712

原创 Gradle 构建Java,Web项目以及包装器

文章目录1.定制项目结构2.定制项目输出路径3.配置和使用外部依赖4.构建Java项目4.1 gradle构建Java流程4.2 定制gradle的Java项目5.构建Web项目5.1使用war插件5.2定制war插件5.3 使用嵌入式容器Jetty运行5.4 定制Jetty插件6. Gradle包装器6.1 配置包装器6.2 使用包装器6.3 定制包装器1.定制项目结构Gradle默认项目...

2018-12-22 16:50:04 252

原创 设计模式之简单工厂,工厂方法,抽象工厂模式

基准类,一个接口两个实现产品类//接口Milk public interface Milk { /** * 获取牛奶的名称 * @return String 名字 */ String getName();}/** * 蒙牛牛奶类MengNiu */public class MengNiu implements Milk { @...

2018-12-22 11:04:02 213

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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