自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高并发之高可用架构

高可用的方案,主要从冗余、取舍、系统运维3个方向考虑,同时需要有配套的值班机制和故障处理流程,保证线上出了问题后,可以及时的处理。

2023-03-26 22:14:17 144 2

原创 高并发之高可用架构

上述方案,都是从计算和IO两个层面考虑所有可能的优化点,需要有配套的监控系统实时了解当前的性能表现,并支撑你进行性能瓶颈分析,然后再遵循二八原则,抓主要矛盾进行优化。12.减少IO时的数据包大小,包括采用轻量级的通信协议,合适的数据结构、去掉接口中的多余字段、减少缓存key的大小、压缩缓存value等;9.预计算,比如抢红包场景,可以提前计算好红包的金额缓存起来,发红包的时候直接使用即可;14.JVM的优化,包括年轻代和老年代的大小,gc垃圾回收算法的选择等,尽可能的减少gc的频率和耗时;

2023-03-26 21:41:36 144

原创 高并发之高性能解决方案

集群部署,通过负载均衡减轻单机压力;多级缓存架构,包括静态数据使用CDN,本地缓存、分布式缓存等,以及对缓存场景中的热点key、缓存穿透、缓存数据一致性等问题处理;分库分表和索引优化,以及借助搜索引擎解决复杂查询问题;考虑nosql数据库的使用,比如Hbase、mongodb等,但是团队必须要熟悉这些组件,并有较强的运维能力。异步化,将次要流程通过多线程、MQ、甚至延时队列进行异步处理;限流,需要先考虑业务是否允许限流,参加前端限流、nginx接入层的限流和服务端的限流;对流量进行削峰填谷,通

2023-03-26 21:28:14 206 6

转载 Spring源码分析——循环依赖

Spring源码分析——循环依赖

2023-03-11 21:48:56 143

转载 Spring源码分析——SpringIOC

Spring源码分析——SpringIOC

2023-03-11 21:44:51 122

转载 Spring源码分析——AOP

Spring源码分析——AOP

2023-03-11 21:42:51 95

转载 Mybatis源码解析

Mybatis源码解析

2023-03-11 21:39:47 376

转载 SpringBoot源码解析

SpringBoot源码解析

2023-03-11 21:37:06 139

转载 SpringMVC源码解析

SpringMVC源码解析

2023-03-11 21:33:02 136

转载 人人都能看懂的Spring底层原理,看完绝对不会懵逼

人人都能看懂的Spring底层原理,看完绝对不会懵逼

2023-03-11 21:11:37 111

转载 简单易懂的Spring扩展点原理,看不懂你来打我

简单易懂的Spring扩展点原理,看不懂你来打我

2023-03-11 20:12:29 586

原创 05-Spring Cloud 全家桶之Zuul网关及Sleuth链路追踪

网关Starter阿里云镜像https://start.aliyun.com/概念服务治理,服务注册发现,服务调用,熔断。已经学完。微服务基本模块已经有了,也可以做微服务了。但完成一个复杂的业务,可能需要多个微服务合作来完成,比如下单,需要用户服务,支付服务,地图服务,订单服务。一般是我们对外服务的窗口,进行服务内外隔离。一般微服务都在内网,不做安全验证,就好像:很多明星,可以独立开演唱会(独立提供服务)。也可以去春晚(微服务群提供服务)。但一台春晚就不能让 观众一个一个调用了。观众要调用,需要

2021-03-24 23:59:42 406

原创 04-Spring Cloud 全家桶之OpenFeign

FeignOpenFeign是Netflix 开发的声明式、模板化的HTTP请求客户端。可以更加便捷、优雅地调用http api。OpenFeign会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。feign主要是构建微服务消费端。只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该接口的实例发送RESTful的网络请求。还可以集成Ribbon和Hystrix,提供负载均衡和断路器。英文表意为“假装,伪装,

2021-03-24 23:55:07 164

原创 01-Spring Cloud 全家桶之微服务组件迭代与升级

Spring CloudSpring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里,Spring Cloud 一共发布了 46 个版本,支持的组件数从 5 个增加到 21 个。Spring Cloud 在 2019 年 12 月对外宣布后续 RoadMap:下一个版本 Ilford 版本是一个大版本。这个版本基于 Spring Framework 5.3 & Sp

2021-03-24 23:39:27 465

原创 深入理解MySQL数据库底层原理

1、描述一下数据库事务隔离级别?​ ACID:​ 原子性:undo log(MVCC)​ 一致性: 最核心和最本质的要求​ 隔离性:锁,mvcc(多版本并发控制)​ 持久性:redo log​ 数据库的事务隔离级别有四种,分别是读未提交、读已提交、可重复读、序列化,不同的隔离级别下会产生脏读、幻读、不可重复读等相关问题,因此在选择隔离级别的时候要根据应用场景来决定,使用合适的隔离级别。​ 各种隔离级别和数据库异常情况对应情况如下:隔离级别脏读不可重复 读幻读

2021-03-23 19:44:56 365

原创 MVCC多版本并发控制

MVCC多版本并发控制1、MVCC​ MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。2、当前读​ 像select lock in share mode(共享锁), select for

2021-03-23 19:42:37 129

原创 SpringCloud面试专题及答案

问题一:什么是 Spring Cloud?Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。问题二:使用 Spring Cloud 有什么优势?使用 Spring Boot 开发分布式微服务时,我们面临以下问题• 与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。• 服务

2021-03-23 19:39:26 118

原创 SpringMVC面试专题及答案

1、什么是 SpringMvc?答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。2、Spring MVC 的优点:答:1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java 组件.并且和 Spring 提供的其他基础结构紧密集成.2)不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)3)可以任意使用各种视图技术,而不仅仅局限于 JSP4)支持各种请求资源的映射

2021-03-23 19:38:09 150

原创 zookeeper面试专题及答案

1.ZooKeeper 是什么?ZooKeeper 是一个**分布式*的,开放源码的分布式应用程序协调服务*,是 Google 的 Chubby 一个开源的实现,它是*集群的管理者*,*监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作*。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。客户端的**读请求*可以被集群中的任意一台机器处理*,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求*,这些请求会同时发给其他zookeep

2021-03-23 00:23:05 142

原创 Dubbo面试专题及答案(下)

1.Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?可以通信的,启动 dubbo 时,消费者会从 zk 拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用;注册中心对等集群,任意一台宕机后,将会切换到另一台;注册中心全部宕机后,服务的提供者和消费者仍能通过本地缓存通讯。服务提供者无状态,任一台 宕机后,不影响使用;服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复;挂掉是不要紧的,但前提是你没有增

2021-03-23 00:21:37 118

原创 Netty面试专题及答案

1.BIO、NIO 和 AIO 的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理,BIO 是面向流的,NIO 是面向缓冲区的;BIO 的各种

2021-03-23 00:20:16 340

原创 Dubbo面试专题及答案(下)

1.Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?可以通信的,启动 dubbo 时,消费者会从 zk 拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用;注册中心对等集群,任意一台宕机后,将会切换到另一台;注册中心全部宕机后,服务的提供者和消费者仍能通过本地缓存通讯。服务提供者无状态,任一台 宕机后,不影响使用;服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复;挂掉是不要紧的,但前提是你没有增

2021-03-23 00:19:23 98

原创 Kafka消息中间件面试专题

1.Kafka 的设计时什么样的呢?Kafka 将消息以 topic 为单位进行归纳将向 Kafka topic 发布消息的程序成为 producers.将预订 topics 并消费消息的程序成为 consumer.Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker.producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息2.数据传输的事物定义有哪三种?数据传输的事务定义通常有以下三种级别:(1)最多一次: 消息不会被重复发送,最多

2021-03-22 20:04:03 173

原创 JVM面试专题及答案

1. 内存模型以及分区,需要详细到每个区放什么。JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息常量池(static 常量和 static 变量)等放在方法区new:· 方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据· 堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配· 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储

2021-03-22 20:02:44 69

原创 Dubbo面试及答案(上)

Dubbo 支持哪些协议,每种协议的应用场景,优缺点?• dubbo: 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议 TCP,异步,Hessian 序列化;• rmi: 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。多个短连接,TCP 协议传输,同步传输,适用常

2021-03-22 20:00:50 137

原创 46个经典Linux面试题!

**问题一:**绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示 ? 切换目录用什么命令?答案:绝对路径:如/etc/init.d当前目录和上层目录:./ …/ 主目录:~/切换目录:cd**问题二:**怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程:ps 执行退出:exit查看当前路径:pwd**问题三:**怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?答案:清屏:clear退出当前命令:ctrl

2021-03-22 19:59:21 664

原创 开源框架面试专题及答案

BeanFactory 和 ApplicationContext 有什么区别> BeanFactory 可以理解为含有bean集合的工厂类。BeanFactory 包含了种bean的定义,以便在接收到客户端请求时将对应的bean实例化。> BeanFactory还能在实例化对象的时生成协作类之间的关系。此举将bean自身与bean客户端的配置中解放出来。BeanFactory还包含了bean生命周期的控制,调用客户端的初始化方法(initialization methods)和销毁方法(de

2021-03-22 19:57:48 710

原创 MySQL55题及答案

1、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?(1)如果表的类型是 MyISAM,那么是 18因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大ID 也不会丢失(2)如果表的类型是 InnoDB,那么是 15InnoDB 表只是把自增主键的最大 ID 记录到内存中,所以重启数据库或者是对表进行

2021-03-22 19:56:33 368

原创 MyBatis面试专题及答案

1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置3、Mybatis 是如何进行分页的?分页插件的原理是什么?答:1)Mybatis 使用 RowBounds 对

2021-03-22 19:54:52 407

原创 Java基础面试题

1.面向对象和面向过程的区别面向过程优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是最重要的因素。缺点: 没有面向对象易维护、易复用、易扩展面向对象优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点: 性能比面向过程低2. Java 语言有哪些特点简单易学;面向对象(封装,继承,多态);平台无关

2021-03-22 19:53:50 241

原创 1-java后端面试题答案

java 后端面试题答案<1>说明:以下所有答案均为个人的理解和网上的一些资料的整合List 和 Set 的区别List , Set 都是继承自 Collection 接口 List 特点:元素有放入顺序,元素可重复 ,Set 特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(元素虽然无放入顺序,但是元素在set中的位置是有该元素的 HashCode 决定的,其位置其实是固定的,加入Set 的 Object 必须定义 equals ()方法 ,另外list支持for循环,也就是通过

2021-03-22 19:46:32 170

原创 Spring源码解读

Spring容器的refresh()【创建刷新】;1、prepareRefresh()刷新前的预处理; 1)、initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法; 2)、getEnvironment().validateRequiredProperties();检验属性的合法等 3)、earlyApplicationEvents= new LinkedHashSet();保存容器中的一些早期的事件;2、obtainFreshBeanFactory();获取Bean

2020-06-19 08:53:12 105

原创 Spring核心源码深入解读之AOP篇

Spring核心源码深入解读之AOP1,Spring容器的AOP源码解读* AOP:【动态代理】 * 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式; * * 1、导入aop模块;Spring AOP:(spring-aspects) * 2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx) * 3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知Mat

2020-05-17 12:00:35 83

原创 Spring核心源码深入解读

Spring核心源码深入解读1,Spring容器的refresh()源码@Overridepublic void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the su

2020-05-16 09:36:51 122 2

原创 Spring核心接口及启动过程

● BeanFactory● HierachicalBeanFactory● ListableBeanFactory● ApplicationContext● EnvironmentCapable● FactoryBean● BeanPostProcessor● BeanFactoryPostProcessor启动过程:初始化环境变量;初始化工厂;读取Bean定义BeanDefinition;把BeanFactoryPostProcessor拿过来分类分组排序挨个执行;注册Bea

2020-05-13 07:09:34 143

原创 分布式核心设计

分布式核心设计简介最火?大数据、人工智能、区块链、边缘计算、微服务 -> 分布式分布式:拆微服务&分布式分布式:拆了就行微服务:纵向拆分(根据业务逻辑拆分,电商:用户、支付、购物…)、最小化拆分横向:jsp/servlet -> service->daoCAP理论任何一个分布式系统 都必须重点考虑的原则。C:一致性(强一致性):所有子节点中的数据 时刻保持一致A:可用性:整体能用P:分区容错性 :允许部分失败CAP理论:在任何分布式系统中,C\A\P

2020-05-08 22:16:57 133

原创 开源框架-面试指导

SSM和开源框架MyBatis重要组件:Mapper配置: 实体类Student.java - 数据表student , XML或注解Mapper接口: DAO层接口。 (只需要写接口,不用写实现类 :需要遵循约定)Mapper接口在编写时 需要遵循约定:1.方法名和SQL配置文件(studentMapper.xml)中的id值必须相同2.方法的输入参数,必须和SQL配置文件的 parameterType的类型相同;3.方法的返回值,必须和SQL配置文件的resultType的类型相

2020-05-08 22:15:16 139

原创 技术面试 - Java SE

技术面试 - Java SE背景:秋招 有些同学 没找到offer1.自己知识储备不足2.准备OK,但是仍然没找到offer面试技巧(重点)、代码讲解招聘岗位10, 50个人 : 10 + 40不会脱颖而出主题: 出奇制胜1.反对和所有应聘者 千篇一律积累: 阿里巴巴 编程规范 , 《effective java》2.反对和所有《面试宝典》 千篇一律建议: 只看宝典里的题目,不看答案(答案自己写)只看题目 + github/知乎/博客线程通信 wait()、notif

2020-05-08 22:13:04 140

原创 01-面试指导

1.技术面试指导本文从“必备项”和“加分项”两个角度分析。一、必备项0.自我介绍表达流畅,不要太差即可1.基础坑:【答案很标准】面试时的回答,一定不要背网上《面试大全》中的标准答案,一定要有自己的思想 (哪怕有少量错误) 。常见的题,一定要提前准备好。例如,以下列举的几乎都是必考题目:arraylist/hashmap的源码、实现原理 ,冒泡排序/快速排序、 单例模式/工厂模式/动态工厂、谈谈你对面向对象的理解, 事务ACID/隔离级别 ,Spring IOC/AOP建议:自己的理解 ,或

2020-05-08 22:10:10 98

原创 2020java面试分模块总结

2020java面试分模块总结设计模式1、用到哪些设计模式?怎么用的2、单例模式的不同写法JDK1、聊一下java的集合类2、HashMap底层数据结构,以及解决hash碰撞的方法3、Hashmap为什么要使用红黑树4、集合类怎么解决高并发问题5、队列的使用问题6、自定义异常的应用场景7、Object类中的方法8、1.8的新特性9、Java中的静态方法只有一个实例,如果想...

2020-05-05 18:06:05 233

空空如也

空空如也

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

TA关注的人

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