博客园 - YL10000
uuid:7d267088-5232-4821-9010-8cd5fdd6cd4f;id=1077917
2019-11-04T06:04:24Z
YL10000
https://www.cnblogs.com/lifeone/
feed.cnblogs.com
https://www.cnblogs.com/lifeone/p/11665584.html
01 spring循环依赖 - YL10000
其实,不分场景地、笼统地说A依赖B其实是不够准确、至少是不够细致的。我们可以简单定义一下什么是依赖。 所谓A依赖B,可以理解为A中某些功能的实现是需要调用B中的其他功能配合实现的。这里也可以拆分为两层含义: A强依赖B。创建A的实例这件事情本身需要B来参加。对照在现实生活就像妈妈生你一样。 A弱依赖
2019-10-13T03:30:00Z
2019-10-13T03:30:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】其实,不分场景地、笼统地说A依赖B其实是不够准确、至少是不够细致的。我们可以简单定义一下什么是依赖。 所谓A依赖B,可以理解为A中某些功能的实现是需要调用B中的其他功能配合实现的。这里也可以拆分为两层含义: A强依赖B。创建A的实例这件事情本身需要B来参加。对照在现实生活就像妈妈生你一样。 A弱依赖 <a href="https://www.cnblogs.com/lifeone/p/11665584.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653155.html
07 锁的原理 - YL10000
锁的原理 java对象结构 java对象包括对象头和实例数据,其中对象头12B,其中4B是对齐位 对象头(12B) 包含mark word 和 klass pointer mark word 包含了锁信息,hashcode,gc信息(64bit,8B) klass pointer 指定对象的元数据的
2019-10-11T03:33:00Z
2019-10-11T03:33:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】锁的原理 java对象结构 java对象包括对象头和实例数据,其中对象头12B,其中4B是对齐位 对象头(12B) 包含mark word 和 klass pointer mark word 包含了锁信息,hashcode,gc信息(64bit,8B) klass pointer 指定对象的元数据的 <a href="https://www.cnblogs.com/lifeone/p/11653155.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653147.html
06 CAS的原理和AQS - YL10000
CAS的原理 CAS(compareAndSwap),比较交换,是一种无锁的原子算法。 Cas(value,expect,newValue),如果vaule和ecpect一样,就更新为newValue,否则什么也不做,返回false 实现原理 通过调用unsafe.compareAndSwapInt
2019-10-11T03:32:00Z
2019-10-11T03:32:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】CAS的原理 CAS(compareAndSwap),比较交换,是一种无锁的原子算法。 Cas(value,expect,newValue),如果vaule和ecpect一样,就更新为newValue,否则什么也不做,返回false 实现原理 通过调用unsafe.compareAndSwapInt <a href="https://www.cnblogs.com/lifeone/p/11653147.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653140.html
05 单例模式 - YL10000
单例模式 1、饿汉式 在加载的时候已经被实例化,只有一次,线程安全 但如果一直不使用,占用资源 2、 懒汉式 2.1 synchronized实现懒汉式 由于使用了synchronized时代码退化为串行执行 2.2 使用DCL(double checked locking)实现懒汉式 在构造方法中
2019-10-11T03:31:00Z
2019-10-11T03:31:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】单例模式 1、饿汉式 在加载的时候已经被实例化,只有一次,线程安全 但如果一直不使用,占用资源 2、 懒汉式 2.1 synchronized实现懒汉式 由于使用了synchronized时代码退化为串行执行 2.2 使用DCL(double checked locking)实现懒汉式 在构造方法中 <a href="https://www.cnblogs.com/lifeone/p/11653140.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653133.html
04 volatile关键字实现原理 - YL10000
volatile关键字实现原理 1、volatile关键字的语义分析 作用:让其他线程能够马上感知到某个线程多某个变量的修改 保证可见性 对共享变量的修改,其他线程能够马上感知到 保证有序性 在重排序时保证volatile修饰的代码位置不变 实现原理 对于volatile修饰的变量会编译时会使用Lo
2019-10-11T03:31:00Z
2019-10-11T03:31:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】volatile关键字实现原理 1、volatile关键字的语义分析 作用:让其他线程能够马上感知到某个线程多某个变量的修改 保证可见性 对共享变量的修改,其他线程能够马上感知到 保证有序性 在重排序时保证volatile修饰的代码位置不变 实现原理 对于volatile修饰的变量会编译时会使用Lo <a href="https://www.cnblogs.com/lifeone/p/11653133.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653128.html
03 synchronized - YL10000
synchronized 1、 锁机制的特性 互斥性:在同一时间只允许一个线程持有某个对象锁(原子性) 可见性:必须确保在锁被释放之前,对共享变量所在的修改,对于随后获得该锁的另一个线程是可见的 2、synchronized的使用 2.1 锁的分类 对象锁:synchronized(this|obj
2019-10-11T03:31:00Z
2019-10-11T03:31:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】synchronized 1、 锁机制的特性 互斥性:在同一时间只允许一个线程持有某个对象锁(原子性) 可见性:必须确保在锁被释放之前,对共享变量所在的修改,对于随后获得该锁的另一个线程是可见的 2、synchronized的使用 2.1 锁的分类 对象锁:synchronized(this|obj <a href="https://www.cnblogs.com/lifeone/p/11653128.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653116.html
02 java内存模型 - YL10000
java内存模型 1、JVM内存区域 方法区:类信息、常量、static、JIT (信息共享) java堆:实例对象 GC (信息共享) OOM VM stack:JAVA方法在运行的内存模型 (OOM) PC: java线程的私有数据,这个数据就是执行下一条指令的地址 Native method
2019-10-11T03:29:00Z
2019-10-11T03:29:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】java内存模型 1、JVM内存区域 方法区:类信息、常量、static、JIT (信息共享) java堆:实例对象 GC (信息共享) OOM VM stack:JAVA方法在运行的内存模型 (OOM) PC: java线程的私有数据,这个数据就是执行下一条指令的地址 Native method <a href="https://www.cnblogs.com/lifeone/p/11653116.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/11653105.html
01 多线程核心原理 - YL10000
多线程核心原理 1. 多线程的作用 充分利用CPU资源,提高执行效率 CPU底层使用的是:总线锁和缓存锁(缓存一致性协议) 2. 多线程带来的问题 可见性问题 解决方法 volatile修饰全局变量(hsdis插件查看运行时的汇编指令) 原理:使用lock指令 把当前处理器缓存行的数据写入到系统内存
2019-10-11T03:28:00Z
2019-10-11T03:28:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】多线程核心原理 1. 多线程的作用 充分利用CPU资源,提高执行效率 CPU底层使用的是:总线锁和缓存锁(缓存一致性协议) 2. 多线程带来的问题 可见性问题 解决方法 volatile修饰全局变量(hsdis插件查看运行时的汇编指令) 原理:使用lock指令 把当前处理器缓存行的数据写入到系统内存 <a href="https://www.cnblogs.com/lifeone/p/11653105.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/6480255.html
spark性能调优06-数据倾斜处理 - YL10000
1、数据倾斜 1.1 数据倾斜的现象 现象一:大部分的task都能快速执行完,剩下几个task执行非常慢 现象二:大部分的task都能快速执行完,但总是执行到某个task时就会报OOM,JVM out of Memory,task faild,task lost,resubmitting task等
2019-10-11T03:13:00Z
2019-10-11T03:13:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1、数据倾斜 1.1 数据倾斜的现象 现象一:大部分的task都能快速执行完,剩下几个task执行非常慢 现象二:大部分的task都能快速执行完,但总是执行到某个task时就会报OOM,JVM out of Memory,task faild,task lost,resubmitting task等 <a href="https://www.cnblogs.com/lifeone/p/6480255.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9330293.html
redis缓存架构-03-redis下的replication以及master+slave - YL10000
1.master和slave的读写分离(水平扩容支持读高并发) 2.master主从复制流程 master开始复制给slave前的认证流程 master向slave复制流程 2.1 无磁盘化复制配置 repl-diskless-sync yes #开启无磁盘化复制 repl-diskless-syn
2018-07-18T10:33:00Z
2018-07-18T10:33:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1.master和slave的读写分离(水平扩容支持读高并发) 2.master主从复制流程 master开始复制给slave前的认证流程 master向slave复制流程 2.1 无磁盘化复制配置 repl-diskless-sync yes #开启无磁盘化复制 repl-diskless-syn <a href="https://www.cnblogs.com/lifeone/p/9330293.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9329453.html
redis缓存架构-02-两种持久化机制(RDB和AOF) - YL10000
1.两种持久化机制的介绍 1.1 RDB 周期性的生成redis内存数据的一份完整的快照 1)根据配置的检查点,生产rdb快照文件,fork一个子线程,将数据dump到rdb快照文件中,完成rdb文件后,替换之前的旧的快照文件 2)配置方式,在redis.conf文件中配置save 60 1000(
2018-07-18T08:27:00Z
2018-07-18T08:27:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1.两种持久化机制的介绍 1.1 RDB 周期性的生成redis内存数据的一份完整的快照 1)根据配置的检查点,生产rdb快照文件,fork一个子线程,将数据dump到rdb快照文件中,完成rdb文件后,替换之前的旧的快照文件 2)配置方式,在redis.conf文件中配置save 60 1000( <a href="https://www.cnblogs.com/lifeone/p/9329453.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9328054.html
redis缓存架构-01-缓存架构方案 - YL10000
缓存实现架构 1.小型电商-页面静态化(基于url rewrite) 2.大型电商
2018-07-18T03:08:00Z
2018-07-18T03:08:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】缓存实现架构 1.小型电商-页面静态化(基于url rewrite) 2.大型电商 <a href="https://www.cnblogs.com/lifeone/p/9328054.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9018964.html
springCloud的使用07-----消息总线(spring cloud bus) - YL10000
spring cloud bus 将分布式的节点用轻量的消息代理连接起来。可用于广播配置文件的更改或服务之间的通讯,也可以用于监控。 spring cloud bus 默认只支持rabbitmq和kafka两个binder,也可以进行自己扩展。 1. 使用rabbitmq进行消息通讯 1.1 下载安
2018-05-16T09:57:00Z
2018-05-16T09:57:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】spring cloud bus 将分布式的节点用轻量的消息代理连接起来。可用于广播配置文件的更改或服务之间的通讯,也可以用于监控。 spring cloud bus 默认只支持rabbitmq和kafka两个binder,也可以进行自己扩展。 1. 使用rabbitmq进行消息通讯 1.1 下载安 <a href="https://www.cnblogs.com/lifeone/p/9018964.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9042203.html
springCloud的使用09-----高可用的注册中心 - YL10000
思路:创建多个注册中心,在他们的配置文件中配置相互之间的注册 1 在eureka-server项目的resources目录下创建两个配置文件application-peer1.yml和application-peer2.yml 2 修改本地的hosts文件(C:\windows\System32\d
2018-05-15T09:50:00Z
2018-05-15T09:50:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】思路:创建多个注册中心,在他们的配置文件中配置相互之间的注册 1 在eureka-server项目的resources目录下创建两个配置文件application-peer1.yml和application-peer2.yml 2 修改本地的hosts文件(C:\windows\System32\d <a href="https://www.cnblogs.com/lifeone/p/9042203.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9040336.html
springCloud的使用08-----服务链路追踪(sleuth+zipkin) - YL10000
sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能) zipkin原理:在服务调用的请求和响应中加入ID,表明上下游请求的关系。 利用这些信息,可以可视化地分析服务调用链路和服务间的依赖关系。 sleuth是对zipkin的封装,对应Span
2018-05-15T08:11:00Z
2018-05-15T08:11:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能) zipkin原理:在服务调用的请求和响应中加入ID,表明上下游请求的关系。 利用这些信息,可以可视化地分析服务调用链路和服务间的依赖关系。 sleuth是对zipkin的封装,对应Span <a href="https://www.cnblogs.com/lifeone/p/9040336.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9015859.html
springCloud的使用06-----分布式配置 - YL10000
1 分布式配置中心的搭建 1.1 在git仓库中创建配置文件 1.2 创建springboot项目引入相应jar依赖 1.3 配置分布式配置中心 1.4 在启动类中声明为配置服务中心 1.5 启动查看效果 2 使用配置中心的配置搭建项目 2.1 创建springboot项目,引入jar依赖 2.2
2018-05-09T10:06:00Z
2018-05-09T10:06:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1 分布式配置中心的搭建 1.1 在git仓库中创建配置文件 1.2 创建springboot项目引入相应jar依赖 1.3 配置分布式配置中心 1.4 在启动类中声明为配置服务中心 1.5 启动查看效果 2 使用配置中心的配置搭建项目 2.1 创建springboot项目,引入jar依赖 2.2 <a href="https://www.cnblogs.com/lifeone/p/9015859.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9013313.html
springCloud的使用05-----路由网关(zuul) - YL10000
zuul的主要功能是路由转发和过滤,比如让所有/api-a/*的请求都转发到服务器a上,所有/api-b/*的请求都转发到服务器b上,zuul默认和ribbon结合实现了负载均衡的功能。 1 zuul的路由转发 1.1 创建springboot项目,引入相关依赖 1.2 在配置文件中配置路由转发策略
2018-05-09T07:33:00Z
2018-05-09T07:33:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】zuul的主要功能是路由转发和过滤,比如让所有/api-a/*的请求都转发到服务器a上,所有/api-b/*的请求都转发到服务器b上,zuul默认和ribbon结合实现了负载均衡的功能。 1 zuul的路由转发 1.1 创建springboot项目,引入相关依赖 1.2 在配置文件中配置路由转发策略 <a href="https://www.cnblogs.com/lifeone/p/9013313.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9010125.html
springCloud的使用04-----熔断器hystrix的使用 - YL10000
1. restTemplate+ribbon使用hystrix 1.1 引入依赖 1.2 在需要熔断的方法上添加注解 1.3 在启动类中声明使用hystrix 1.4 启动注册中心和cloud-consumer-ribbon,访问http://localhost:8764/info 返回sorry
2018-05-09T03:21:00Z
2018-05-09T03:21:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1. restTemplate+ribbon使用hystrix 1.1 引入依赖 1.2 在需要熔断的方法上添加注解 1.3 在启动类中声明使用hystrix 1.4 启动注册中心和cloud-consumer-ribbon,访问http://localhost:8764/info 返回sorry <a href="https://www.cnblogs.com/lifeone/p/9010125.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9008673.html
springCloud的使用03-----服务消费者(feign) - YL10000
1 创建springboot项目,引入jar依赖 2 配置相关配置 3 调用服务接口 4 在启动类中声明使用feign 5 启用查看结果 feign内置了ribbon,自动实现负载均衡
2018-05-08T07:48:00Z
2018-05-08T07:48:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1 创建springboot项目,引入jar依赖 2 配置相关配置 3 调用服务接口 4 在启动类中声明使用feign 5 启用查看结果 feign内置了ribbon,自动实现负载均衡 <a href="https://www.cnblogs.com/lifeone/p/9008673.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lifeone/p/9008039.html
springCloud的使用02-----服务消费者(rest+ribbon) - YL10000
1 将服务提供者做成集群模式 配置service-hi的端口为8762进行启动,配置service-hi的端口为8763进行启动, service-hi会在ecureka server上注册两个service-hi的实例,相当于一个小的集群 2 创建服务消费者 2.1 ribbon简介 在微服务框架
2018-05-08T06:28:00Z
2018-05-08T06:28:00Z
YL10000
https://www.cnblogs.com/lifeone/
【摘要】1 将服务提供者做成集群模式 配置service-hi的端口为8762进行启动,配置service-hi的端口为8763进行启动, service-hi会在ecureka server上注册两个service-hi的实例,相当于一个小的集群 2 创建服务消费者 2.1 ribbon简介 在微服务框架 <a href="https://www.cnblogs.com/lifeone/p/9008039.html" target="_blank">阅读全文</a>