摘要: 1、好多公司动不动就JVM、高并发、分布式、微服务等等,我没有实际经验。 2、从事Java开发三年了,目前的职位是高级Java工程师,感觉技术和工资都到了瓶颈,对以后的发展方向有些迷茫。 3、加班时间过长,年龄大了,精力严重不够,竞争力远不如年轻程序员了。 4、Java工程师体量庞大,供大于需,导致 阅读全文
posted @ 2019-11-24 12:21 洛神灬殇 阅读(224) 评论(0) 推荐(0) 编辑
摘要: Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿、缓存雪崩、缓存和数据一致性,以及今天要谈到的缓存并发竞争。这里的并发指的是多个redis的client同时set key引起的并发问题。 出现并发设置Key的原因 Redis是一种单线程机制的nos 阅读全文
posted @ 2019-11-24 12:08 洛神灬殇 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?今天来探讨分布式锁这个话题。 什么是分布式锁 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 1.线程锁 主要用来 阅读全文
posted @ 2019-11-24 11:44 洛神灬殇 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 分布式缓存对应于CPU的模型有如下的关系,我们知道,CPU跟内存的关系中间还有三级高速缓存L1,L2,L3.L1最靠近CPU内核,CPU在进行数据处理的时候一般是先把内存的数据复制到L1中进行处理,把处理结果恢复到内存中,所以多CPU多线程中会有数据复制不一致的问题. 分布式缓存系统中,有着与之对应 阅读全文
posted @ 2019-11-24 00:47 洛神灬殇 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1.Redis 缓存和 MySQL 数据如何实现一致性 需求起因 缓存和数据库一致性解决方案 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。 读取缓存步骤一般没有什么问题,但是 阅读全文
posted @ 2019-11-24 00:40 洛神灬殇 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 1.简介 TransmittableThreadLocal 是Alibaba开源的、用于解决 “在使用线程池等会缓存线程的组件情况下传递ThreadLocal” 问题的 InheritableThreadLocal 扩展。若希望 TransmittableThreadLocal 在线程池与主线程间传 阅读全文
posted @ 2019-11-24 00:22 洛神灬殇 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 1.使用场景 只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么,如何解决一致性问题? 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 缓存 + 数据库 必须保持一致性的话,最好不要做这个方案。即:读请求和写 阅读全文
posted @ 2019-11-23 23:17 洛神灬殇 阅读(261) 评论(0) 推荐(0) 编辑
摘要: Java基础 Arrays.sort实现原理和Collection实现原理 foreach和while的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 线程池如何调优 线程池的最大线程数目根据什么确定 动态代理的几种方式 HashMap的并发问题 了解Linke 阅读全文
posted @ 2019-11-23 13:49 洛神灬殇 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 类加载的生命周期: 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 卸载 这6个阶段顺序是确定的,klass的加载过程一定会按照这个顺序执行。为了支持java的运行时绑定,解析阶段在某些情况下会在初始化之后 阅读全文
posted @ 2019-11-23 13:30 洛神灬殇 阅读(170) 评论(0) 推荐(0) 编辑
摘要: Java8内存模型—永久代(PermGen)和元空间(Metaspace) 一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创 阅读全文
posted @ 2019-11-22 22:22 洛神灬殇 阅读(219) 评论(0) 推荐(0) 编辑
摘要: Zuul作为微服务系统的网关组件,用于构建边界服务,致力于动态路由、过滤、监控、弹性伸缩和安全。 Zuul功能 认证 压力测试 金丝雀测试 动态路由 负载削减 安全 静态响应处理 主动/主动交换管理 为什么需要Zuul Zuul、Ribbon(Fegin)以及Eureka结合可以实现智能路由和负载均 阅读全文
posted @ 2019-11-22 21:50 洛神灬殇 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 基础参数系类(内存分配) -server:一定要作为第一个参数,在多个CPU时性能佳 -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些-Xmx:Java heap最大值,使用的最大内存 阅读全文
posted @ 2019-11-22 21:07 洛神灬殇 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 1.JVM-堆快照(Snapshot) 1.1 输出方式-获取hprof文件 启动参数配置OOM时触发打印堆快照 (1)tomcat启动方式添加参数 (添加环境变量) export JAVA_OPTS= -XX:+HeapDumpOnOutOfMemoryError (表明进行统计相关heapDum 阅读全文
posted @ 2019-11-22 20:38 洛神灬殇 阅读(1710) 评论(0) 推荐(0) 编辑
摘要: 总线锁、缓存锁、MESI缓存一致性协议、CPU 层面的内存屏障 1.JMM定义: Java Memory Model(java内存模型)是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的统一的保证。(可能在术语上与Java运行时内存分布有歧义,后 阅读全文
posted @ 2019-11-21 23:36 洛神灬殇 阅读(448) 评论(0) 推荐(0) 编辑
摘要: Maven依赖配置 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>1.4.3.RELEASE</vers 阅读全文
posted @ 2019-11-21 22:03 洛神灬殇 阅读(201) 评论(0) 推荐(0) 编辑