自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Interview-Sleuth

sleuth

2022-11-17 20:20:42 104 1

原创 Interview-Gateway

Gateway

2022-11-15 16:34:18 141

原创 ClassLoader的双亲委派机制

加载一个类是有规则的,不是一通乱加载,首先是自底向上的,先从Customer ClassLoader查找是否加载过该类,有的话直接返回就好了,如果没有,那就交给他的上级,也就是App ClassLoader去查找,以此类推,一直到最顶层的Bootstrap ClassLoader,如果都没有加载过(好家伙,新来的),这时候就开始另一种方式了,也就是图中自项向下去尝试加载,首先是Bootstrap ClassLoader(因为现在球在它这嘛,所以当然是他先了),Bootstrap ClassLoader会去r

2021-11-28 22:42:34 258 1

原创 JDK_1.8中对hash算法和寻址算法是如何优化的?

首先咱们先来了解一下如何使用key值的hashCode去寻址:获取key值的hashCode利用hashCode%数组长度得到index下标这就是一个寻址的过程,但是取模是一个非常消耗性能的操作,并且如果张三和李四取模后得到下标标一致就会出现hash冲突,解决hash冲突又是是一个耗时的操作,所以JDK做了以下几个步骤来优化;static final int hash(Object key) { int h; return (key == null) ? 0 : (h

2021-11-28 22:34:54 548

原创 Redis

一、Redis简介Redis作为一个缓存中间件,它和Memcache这种插件有什么区别呢?为什么Redis如此重要,其实是因为Redis强大的功能:数据类型丰富支持数据磁盘持久化存储,像Memcache是不支持的,如果电脑重启,那所有的数据全没了,直接GG支持主从,这就为集群打下了基础支持分片,大大增加性能Redis不仅功能强大,它还很快0.0,官方的数据是100000+QPS(QPS即query per second,每秒内查询次数),快的就离谱,这是为啥呢?完全基于内存,绝大部分请求

2021-10-25 22:15:26 137 1

原创 Spring相关面试题

一、说说你对Spring的_IOC_机制的理解可以吗?IOC机制就八个字:控制反转,依赖注入;这么回答,太过简答,面试官也不认可,所以咱们得深入一点讲,可以举个例子有逻辑的回答:在没有使用spring之前,都是使用Servlet在处理请求类似于如下:public class MyServlet { private MyService myService=new MyServiceImpl(); public void doPost(HttpRequest request){

2021-09-20 16:35:32 95

原创 Java内存模型相关面试题

一、谈谈你对Java内存模型的理解可以吗?

2021-09-13 20:46:04 672

原创 Java多线程相关面试题

一、说说synchronized关键字的底层原理是什么?synchronized底层说白了就是两句指令,分别是:monitorenter:加锁monitorexit:释放锁先来看下这段代码:WaitTest waitTest = new WaitTest(); //进入同步代码块1 synchronized (waitTest){ //业务逻辑 //进入同步代码块2 synchronized

2021-09-10 11:45:21 103

原创 HashMap相关面试题

一、你知道HashMap底层的数据结构是什么吗?底层其实就是一个数组,数组内的元素是键值对,类似于[{ },{ },{ },{“张三”,“男”},{“李四”,“女”},{ },{ },{ }],当一个键值对需要put进入这个数组时,会先取得key值的hashcode,然后在利用hashcode去模数组长度,得到一个index也就是下标,这个下标肯定是在数组长度范围内的,然后就放进去就行了;所以当调用get方法时也是一样的,比如说get(“张三”),那此时就算出张三的hash值是多少,然后取模得

2021-09-08 13:42:52 146

原创 Java常用类库与技巧

一、Java异常体系

2021-09-02 21:22:24 103

原创 Java多线程与并发-原理

一、synchronized线程安全问题的主要诱因1.存在共享数据(也称临界资源)2.存在多条线程共同操作这些共享数据解决问题的根本方法:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作;互斥锁的特性互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程的协调机制,这样在同一时间只有一个线程对需要同步的代码块(复合操作)进行访问。互斥性也被称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁

2021-08-31 20:15:53 145

原创 Java多线程与并发-基础篇

一、进程和线程的区别首先记住一句话:进程是资源分配的最小单位,线程是CPU调度的最小单位(根本)所有与进程相关的资源,都保存在PCB中;进程是抢占处理机的调度单位,线程属于某个进程,共享其资源,即一个进程内可能存在多个线程,多个线程可以共享资源;线程只由堆栈寄存器、程序计数器和TCB组成;总结:1.线程不能看做独立应用,而进程可以看做独立应用;2.进程有独立的地址空间,相互不影响,线程只是进程的不同执行路径;3.线程没有独立的地址空间,多进程的程序比多线程程序健壮,因为单线程的进场如果线程挂

2021-08-24 20:13:03 102

原创 GC相关面试题

一、Object的finalize()方法的作用是否与C++的析构函数作用相同答案是不同的:析构函数的调用是确定的,当对象不在作用域时就会调用析构函数,而finalize()方法的调用是不确定的;当垃圾回收机制宣告一个对象死亡时,需要经过两个过程,如果对象经过可达性分析后没有被对象引用就会被第一次标记,并且判断是否执行finalize()方法,如果对象覆盖finalize()方法且未被引用过就会将该对象放置在F-Queue队列中,并在稍后由虚拟机创建的低优先级的线程去执行finalize()方法;由

2021-08-12 23:50:47 163

原创 深入理解Java垃圾回收机制-GC

一、什么样的对象会被回收GC在回收时并不会将所有对象全部回收,它会先判断该对象是否达到回收的标准,这个标准也很简单,就是看该对象是否有被其他对象引用,如果没有被引用则说明是垃圾,那各位小伙伴就有疑问了,GC是如何判断一个对象是否有被引用的呢?接下来博主就来给大家介绍一下相关的判断算法;二、引用计数算法()引用计数算法听名字就知道是通过计算对象的引用数量来判断是否可以被回收,每个对象都有自己的引用计数器,当被引用时就会+1,完成引用-1,所以当引用数量为0时,则会被判断为垃圾,...

2021-07-29 23:49:47 157 1

原创 Java内存模型常考题型

一、JVM三大性能调优参数-Xms -Xmx -Xss的含义-Xss:规定了每个线程虚拟机栈(堆栈)的大小(一般情况下256k就足够了)此配置会影响进程中并发线程数的大小;-Xms:堆的初始值即该进程创建出来时初始堆的大小,如果对象容量超过了初始值大小,会自动扩容,扩容的最大值就是-Xmx设置的值;-Xmx:堆能达到的最大值;一般情况下我们会将-Xms和-Xmx设置成一样大小,因为当Heap不够用,发生扩容时,会发生内存抖动,影响程序运行时的稳定性;二、Java内存模型中堆和栈的区别想要讲清楚区

2021-07-22 20:56:48 135

原创 深入理解JVM虚拟机

一、Compile Once,Run Anywhere如何实现首先使用javac命令将.java文件编译成字节码文件也就是.class文件,之后交给JVM虚拟机去执行,从而转换成特定平台的执行指令,这也是为什么一份相同的.class文件可以在不同的操作系统上运行的原因,下图是一张java项目从编译到执行的流程图:二、JVM如何加载.class文件下图为java虚拟机的运行结构,分别由Class Loader、Execution Engine、Native Interface和Runtime Data

2021-07-22 16:41:20 280 1

原创 What is “反射“

官方解释:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。通俗解释:只要知道一个人的名字,就能知道这个人的家庭住址,联系方式,身体健康等一系列信息,并且还能够让这个人去做他能够做的任何事情(包括私有的哦0.0),这就叫反射;苍白的语言还是枯燥的,请欣赏一下两段代码,你就能明白反射该怎么使用,上才艺:package com.intretech.refle

2021-07-07 17:10:43 91

原创 调用链监控-Sleuth

一、整合Sleuth只需要添加Sleuth即可:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId></dependency>之后在项目中就能看到调用链的相关日志:2021-06-25 10:45:58.847

2021-06-25 19:31:22 256

原创 配置管理-Nacos

一、使用Nacos管理配置一般我们都将配置交给application管理,但是每个微服务都有自己的application,这样一来不利于维护,接下来咱们就来看看Nacos是如何管理配置的;一、首先加依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-naco

2021-06-24 19:44:39 1007

原创 微服务的用户认证与授权

一、有状态 VS 无状态用户认证有两种模式,一种是服务器端存储用户登录状态,比如使用session store,这种方式叫有状态,另外一种无状态就是用户登录后,服务器端会传送给客户端一个token,token里面包含了过期时间,用户信息等一些不太敏感的信息,客户端要用接口时将token传递给服务器端,服务器端将token解密之后就能得到当前用户的信息,并通过判断过期时间来知晓当前状态是否过期,两种方式各有优缺点,以下是两种方式的比较:二、微服务认证方案01-“处处安全”方案基于OAuth2.0协议,

2021-06-21 21:25:36 2345 1

原创 消息驱动的微服务-RocketMQ

一、安装RocketMQ详见该手记:http://www.imooc.com/article/290089二、搭建RocketMQ控制台详见该手记:http://www.imooc.com/article/290092三、Spring消息编程模型01-编写生产者1.导入依赖2.添加配置3.最后直接在代码中使用即可:4.在调用了getMemberInfo接口后,可在RocketMQ控制台界面查看到该条信息:四、Spring消息编程模型02-编写消费者1.前两步和第三节一致,只不过在

2021-06-19 17:25:12 739

原创 API网关-Gateway

一、创建Gateway1.添加依赖:2.添加配置文件:这样gate就创建成功了,另外博主还开启了两个微服务分别注册到了nacos上,下图为nacos的服务列表:order微服务的端口为8070,里面有一个接口地址是/order/getMemberInfo,直接访问order微服务去调用该接口的话url为:http://localhost:8070/order/getMemberInfo,如果需要使用gateway来访问则需要将端口替换为gateway的端口,并且在接口地址前加上调用的微服务名称

2021-06-16 09:49:13 217

原创 服务容错-Sentinel

一、雪崩效应雪崩效应也叫cascading failure、级联失效、级联故障;如同下图一样,一个微服务坏掉就会将整个系统造成宕机;二、微服务常见容错方案1.超时:时间一过,直接返回错误,不拖泥带水2.限流:当一个实例的请求数量达到阈值时,后面所有的请求直接返回失败,等到请求数量降低到阈值以下才能再次调用成功;3.仓壁模式:每个接口设置一个线程池,就算当前这个接口的线程池满了也不会影响其他接口的调用;(感觉不太好,设置累死人,当所有的接口线程池都满的时候压力一样很大,只是鸡蛋没有放在同一个篮子里

2021-06-04 21:23:45 2394

原创 负载均衡-Ribbon

一、SpringCloud整合Ribbon1.加入nacos-discovery依赖即可,因为ribbon是包含在nacos-discovery中的:2.在RestTemplates上加@LoadBalanced注解:二、使用Ribbon调用服务接口其中第一个member为微服务名称,ribbon会自动去nacos上寻找名称为member的实例,如果有多个,会自动使用负载均衡算法挑选一个实例使用,member替换为该实例的ip+port,后面的/member/getMemberInfo为接口地

2021-06-04 21:07:11 136

原创 声明式HTTP客户-Feign

SpringCloudAlibaba

2021-06-04 20:38:28 370

空空如也

空空如也

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

TA关注的人

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