自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 阿里p7架构师带你领略JMM

概述 JMM的全称是Java Memory Model(Java内存模型) JMM的关键技术点都是围绕着多线程的原子性、可见性和有序性来建立的,这也是Java解决多线程并行机制的环境下,定义出的一种规则,意在保证多个线程间可以有效地、正确地协同工作。 三要素 原子性(Atomicity) 原子性是指一个操作是不可中断的,即使是在多个线程一起执行的情况下,一个操作一旦开始执行,就不会受到其...

2019-07-29 19:54:51 203

原创 Java高级架构师-Java集合 HashSet的原理及常用方法

目录 一. HashSet概述 二. HashSet构造 三. add方法 四. remove方法 五. 遍历 六. 合计合计 先看一下LinkedHashSet 在看一下TreeSet 七. 总结 一. HashSet概述 HashSet是Java集合Set的一个实现类,Set是一个接口,其实现类除HashSet之外,还有TreeSet,并继承了Collection,Hash...

2019-07-28 19:28:26 172

原创 Java高并发缓存架构,缓存雪崩、缓存穿透之谜

面试题 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。 面试题剖析 缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4...

2019-07-26 19:44:39 319

原创 JAVA高级架构师-浅析JavaWeb开发模式:Model1和Model2

一、前言 在学习JavaWeb的过程中,大家都会接触到Model1和Model2,历史的发展过程是Model1 → Model2。那么它们之间有何相同之处和不同之处呢? 二、Model1 Model1使用了两种技术:JSP+JavaBean。 在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接受处理客户端请求,对请求处理后直接做出响应。用少量的J...

2019-07-24 19:57:01 510

原创 深入理解Java虚拟机笔记---底层原理分析与性能优化

深入理解Java虚拟机笔记---底层原理分析与性能优化 文末彩蛋福利# 概念 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。 Java虚拟机阵营:Sun HotSpot VM、BEA JRockit ...

2019-07-23 22:07:31 405

原创 Java NIO ByteBuffer 的使用与源码研究

一、结论   ByteBuffer 是Java NIO体系中的基础类,所有与Channel进行数据交互操作的都是以ByteBuffer作为数据的载体(即缓冲区)。ByteBuffer的底层是byte数组,通过四个重要的成员变量(mark、limit、position、capacity)来实现对缓冲区的读写数据以及复用缓冲区等操作。ByteBuffer 申请缓冲区内存(数组)的方式有两种,即堆内...

2019-07-23 16:19:23 282

原创 JAVA面试题 StringBuffer和StringBuilder的区别,从源码角度分析?

面试官Q1:请问StringBuffer和StringBuilder有什么区别? 这是一个老生常谈的话题,笔者前几年每次面试都会被问到,作为基础面试题,被问到的概率百分之八九十。下面我们从面试需要答到的几个知识点来总结一下两者的区别有哪些? 继承关系? 如何实现的扩容? 线程安全性? 继承关系 从源码上看看类StringBuffer和StringBuilder的继...

2019-07-23 16:16:18 145

原创 SpringMVC面试题:什么是Servlet?

一、什么是servlet? servlet是一个Java编写的程序,此程序是基于http协议的,在服务器端(如Tomcat)运行的,是按照servlet规范编写的一个Java类。 客户端发送请求至服务器端,服务器端将请求发送至servlet,servlet生成响应内容并将其传给服务器 即,我们在浏览器点击链接和按钮产生的消息不是发送给servlet的,而是发送给web容器(如Tomcat、jet...

2019-07-23 16:10:43 442

原创 Java高级架构师-Java虚拟机知识点【class文件】

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。 ClassFile 结构说明 magic:魔数。唯一作用是确定这个文件是否为一个能被虚拟机所接...

2019-07-23 15:22:40 112

原创 一个经典面试题:如何保证缓存与数据库的双写一致性?

只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 面试题剖析 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。 串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的...

2019-07-23 14:51:00 351

原创 Java高级架构师-分布式Redis深度历险-Cluster

集群基础实现 一个集群由多个Redis节点组成,不同的节点通过CLUSTER MEET命令进行连接: CLUSTER MEET <ip> <port> 收到命令的节点会与命令中指定的目标节点进行握手,握手成功后目标节点会加入到集群中,看个例子,图片来自于Redis的设计与实现: 槽分配 一个集群的所有数据被分...

2019-07-22 19:34:37 211

原创 Java高级架构师-分布式Redis深度历险-Sentinel

如何保障集群高可用 保障集群高可用,要具备如下能力: 能监测服务器的状态,当主服务器不可用时,能及时发现 当主服务器不可用时,选择一台最合适的从服务器替代原有主服务器 存储相同数据的主服务器同一时刻只有一台 要实现上述功能,最直观的做法就是,使用一台监控服务器来监视Redis 服务器的状态。 监控服务器和主从服务器间维护一个心跳连接,当超出一定时间没有收到主服务器心跳时...

2019-07-21 19:53:31 260

原创 Java高级架构师-分布式Redis深度历险-复制

Redis深度历险分为两个部分,单机Redis和分布式Redis。 本文为分布式Redis深度历险系列的第一篇,主要内容为Redis的复制功能。 Redis的复制功能的作用和大多数分布式存储系统一样,就是为了支持主从设计,主从设计的好处有以下几点: 读写分离,提高读写性能 数据备份,减少数据丢失的风险 高可用,避免单点故障 旧版复制实现 Redis的复制主要分为同步和命...

2019-07-19 19:45:13 148

原创 Java高级架构师-集合框架使用原理分析

集合是我们日常编程中可能用的很多的技术之一 使用频率极高 可能平时就会知道怎么去用 但是集合之间的关系与不同之处都不是很清楚 对它们的底层原理更甚 所以写词文章 让自己有一个更深的认识 集合是一个庞大的家族 今天先来说说这几个 ArrayList、LinkedList、Vector ArrayList由于它的底层是数组 数组我们都知道它的查询修改都是效率很高的 ArrayLi...

2019-07-18 20:04:45 142

原创 Java-基于Spring Cloud Netflix的TCC柔性事务和EDA事件驱动示例

Solar Spring Cloud为开发者提供了快速构建分布式系统中的一些常见工具,如分布式配置中心,服务发现与注册中心,智能路由,服务熔断及降级,消息总线,分布式追踪的解决方案等。 本次实战以模拟下单流程为背景,结合Spring Cloud Netflix和分布式事务解决方案中Try Confirm Cancel模式与基于事件驱动的服务架构作为实战演示。 开发环境 Docker 1.1...

2019-07-17 20:28:14 217

原创 Java高级架构师-Spring 注解编程之注解属性别名与覆盖

注解属性方法 在进入了解 Spring 注解属性功能之前,我们先看一个正常 Java 注解。 在注解中,属性方法与其他类/接口方法写法类似,但是存在一些区别。 注解属性方法的返回类型仅限为八种基本类型(包装类不支持),字符串,class,enum,Annotation以及前面类型的数组。 复习一下,java 八种基本类型分别为,byte(字节型)、short(短整型)、int(...

2019-07-16 20:22:51 280

原创 Java手撕面试官-面试官常问的Nginx的几个问题

1.什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用 2.为什么要用Nginx? 优点: 跨平台、配置简单 非阻塞、高并发连接:处理2-3万并发连接数,官方监...

2019-07-15 20:10:46 581

空空如也

空空如也

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

TA关注的人

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