linux学习
~~蓝~~
一名大二生 正在前进中的小屁孩 哈哈哈
展开
-
34.什么是Hystrix?实现原理是什么?
Hystrix是一个由Netflix开源的库,它主要实现了隔离、熔断、降级、限流等功能,用于增强分布式系统的弹性和延迟容错能力。原创 2023-05-06 14:50:21 · 450 阅读 · 0 评论 -
33.微服务熔断降级机制是什么?
通过这些机制,可以有效避免系统因为单点故障或系统压力过高而崩溃,从而提高了系统的稳定性和可用性。可以在系统负载过高或出现故障时,自动断开对故障微服务的请求,以保证服务调用的可靠性;可以在故障或负载过高的情况下,暂时关闭某些功能,提高系统可用性。原创 2023-05-06 14:28:13 · 108 阅读 · 0 评论 -
32.Ribbon负载均衡原理是什么
Ribbon支持多种负载均衡算法,包括轮询、随机、加权轮询、加权随机等。通过配置不同的负载均衡算法,可以根据实际需求来平衡服务实例的负载,并提高系统的可用性和性能。原创 2023-05-06 14:22:30 · 66 阅读 · 0 评论 -
31.用zookeeper和eureka做注册中心有什么区别
zookeeper保证的是CP(一致性,容错性),而eureka则是AP(可用性,容错性).现在微服务框架,已经没有使用第一个做注册中心了,都是用的第二个.原创 2023-05-06 12:43:57 · 40 阅读 · 0 评论 -
30.配置中心是如何保证数据安全的
原创 2023-05-06 12:37:33 · 67 阅读 · 0 评论 -
29.微服务架构配置中心是如何实现自动刷新的?
当配置中心的配置信息发生变化时,使用@RefreshScope注解的bean会被重新实例化,从而更新配置信息。具体实现方式是:服务启动时从配置中心获取配置信息,然后将其缓存在本地。当配置中心的配置信息发生变化时,配置中心会通知相应的服务,服务在收到通知后会重新从配置中心获取最新的配置信息并更新本地缓存。微服务架构中的配置中心一般使用的是分布式配置中心,比如Spring Cloud Config、ZooKeeper、Etcd等。这些分布式配置中心都支持配置的实时更新,可以实现自动刷新。原创 2023-05-06 12:36:23 · 355 阅读 · 0 评论 -
28.微服务架构配置中心的原理是什么?
总之,配置中心是微服务架构中不可或缺的一个组件,可以提高系统的可维护性、可伸缩性和可靠性。原创 2023-05-06 12:33:03 · 159 阅读 · 0 评论 -
27.微服务架构的原理是什么
通过遵循这些原则,微服务架构可以实现高度可扩展性、灵活性和可维护性,同时能够有效地降低系统的复杂性和开发成本。原创 2023-05-06 12:26:29 · 91 阅读 · 0 评论 -
26.springcloud核心组件有哪些,分别有什么作用?
Spring Cloud的核心组件包括:原创 2023-05-06 12:17:33 · 333 阅读 · 0 评论 -
25.redis持久化RDB和AOF
AOF方式的优点是数据可靠性好,即使Redis崩溃,只要AOF文件可用,就可以通过重新执行操作记录来重建数据集。RDB是Redis默认的持久化方式,在指定的时间间隔内将内存中的数据集快照写入磁盘,形成RDB文件。RDB的缺点是数据可靠性相对较差,如果Redis发生崩溃则可能会造成最近一次快照以后的数据丢失。AOF方式则是通过记录每个写操作来记录数据,以追加的方式将操作记录写入磁盘。RDB方式的优点是占用空间小、写入速度快,适合备份整个数据集的存档。缺点是占据更多的磁盘空间和较慢的写入速度。原创 2023-05-05 16:12:26 · 45 阅读 · 0 评论 -
24.redis线程模型有哪些?单线程为什么那么快?
因为在单线程模式下,所有请求都是串行执行的,命令操作在单线程中顺序执行,没有多线程的困扰,不需要锁的复杂度,因此简单高效。原创 2023-05-05 15:12:25 · 310 阅读 · 0 评论 -
23.如何解决线上GC频繁的问题
使用CMS GC:CMS GC为垃圾收集器的一种,它可以并发回收Old区内的对象,从而减少GC停顿时间。调整GC参数:JVM提供了许多GC参数,可以根据具体的应用场景进行调整,比如调整Heap大小、Young区和Old区大小、GC策略、GC线程数等。使用G1 GC:G1 GC是一种现代的并发、分代GC算法,可以快速回收堆内存中的“垃圾”对象。优化代码:优化代码可以减少对象的创建和回收,从而减少GC的频率。升级硬件:GC频繁也可能是由于硬件性能不足所致,可以通过升级硬件(如增加内存)来缓解GC频繁的问题。原创 2023-05-05 12:30:45 · 481 阅读 · 0 评论 -
22.JVM中内存溢出的原因有哪些?如何排查线上问题?
堆内存溢出:当堆内存中剩余空间不足以分配新对象时,就会发生堆内存溢出。一般情况下,这种情况发生较多是由于程序中存在大量占用内存的对象,或者内存泄漏导致的。内存分析工具:使用内存分析工具查看程序中对象的内存占用情况,分析哪些对象占用了过多的内存,是否有内存泄漏问题等。堆转储文件:使用JVM参数设置生成堆转储文件,分析堆内存中的对象信息,找出存在问题的对象,进一步排查问题。本地内存溢出:在JVM中使用了本地方法库时,如果本地方法库申请的内存空间过多,就可能会导致本地内存溢出。原创 2023-05-05 12:05:55 · 230 阅读 · 0 评论 -
21.ThreadLocal有哪些内存泄漏问题?如何避免?
由于存在强引用关系,value无法回收。注:对Entry对象的解释。原创 2023-05-05 11:51:57 · 351 阅读 · 0 评论 -
20.ThreadLocal的原理是什么,使用场景有哪些?
具体来说,ThreadLocal在每个线程内部都会创建一个Map,这个Map的key是ThreadLocal对象本身,value是我们设置的变量值。记录线程相关数据: 在一些框架中需要记录一些和线程相关的信息,比如用户信息等,这种情况下我们可以使用ThreadLocal来存储线程相关的数据,保证数据的完整性和独立性。线程安全问题解决: 在多线程环境下,使用ThreadLocal可以保证变量的线程安全,避免了使用synchronized方法或者锁来保证线程安全的复杂性。原创 2023-05-05 11:44:51 · 67 阅读 · 0 评论 -
18.JVM有哪些垃圾回收器?实际中如何选择?
因此,在选择垃圾回收器时,需要综合考虑以上因素,并根据应用程序的实际需求进行选择。JVM中常见的垃圾回收器有。原创 2023-05-05 10:42:02 · 213 阅读 · 0 评论 -
17.JVM性能调优
JVM性能调优是通过调整JVM参数来优化应用程序的性能。总之,JVM性能调优需要根据应用程序的特点和需求来选择适当的优化策略,并进行测试和调整。原创 2023-05-05 10:35:02 · 175 阅读 · 0 评论 -
16.JVM内存模型如何分配的
新创建的对象首先会被分配到Eden区中,当Eden区满了之后,会触发Minor GC,将Eden区和Survivor区中的存活对象复制到另一个Survivor区中,并且清空Eden区和之前的Survivor区,这样被清空的区域就可以被重新分配。永久代(或元空间):永久代主要存放JVM使用的类信息和常量池等数据,它的分配策略是比较特殊的,一般来说JVM会预留一定的永久代空间,当永久代空间不足时,会触发Full GC,将无用的类信息和常量池等数据进行清理和整理。原创 2023-05-04 18:31:20 · 297 阅读 · 0 评论 -
15.JVM8为什么要增加元空间
堆和方法区连在了一起,但这并不能说堆和方法区是一起的,它们在逻辑上依旧是分开的。也就是说,方法区和前面讲到的新生代和老年代是连续的。另外,元数据区的对象可以被垃圾回收,避免了持久代的内存泄漏问题。这样,元数据区的引入提高了Java应用程序的稳定性和性能。因此,为了解决这些问题,JVM引入了元数据区(MetaSpace)来存储类的元数据。元数据区不再采用固定大小的内存空间,可以将方法区当作接口,永久代和元空间实现了这个接口。只不过两者一个是旧的,java8之前时代的实现。一个是新的,java8时代的实现。原创 2023-05-04 17:50:13 · 524 阅读 · 0 评论 -
14.GC如何判断对象可以被回收
根可达性很好的解决了对象循环引用问题。原创 2023-05-04 14:55:08 · 182 阅读 · 0 评论 -
13.自定义异常在生产中如何使用
虽然Java提供了丰富的异常处理类,而且Java的语法都能使用,但是在某些情况下,不符合实际的业务逻辑,此时就需要自定义异常。原创 2023-04-30 00:09:31 · 87 阅读 · 0 评论 -
12.怎样声明一个类不会被继承,具体什么场景下会用。
如果一个类中所有方法都没有重写的必要,那么当前类没有子类也罢,就可以使用final修饰类,这样就可以使得此类不会被继承,也就没有子类了。原创 2023-04-29 23:57:17 · 91 阅读 · 0 评论 -
11.string,stringbuilder,stringbuffer的区别和联系。
就是刚开始jdk作者创建stringbuffer的时候为了线程安全考虑,过于谨慎,把stringbuffer的方法全用Schychronized修饰了导致stringbuffer效率过低,后来jdk作者认为大多数时候不需要线程安全的,所以就创造出了专门在单线程情况下运行的stringbuilder使的其效率大大增强。String 类是 Java 中最基本的字符串类,它是不可变的,也就是说一旦创建了一个 String 对象,就不能再修改它的值。string由于只能指向一个内存区域,所以是有线程安全性的。原创 2023-04-29 23:51:59 · 571 阅读 · 0 评论 -
10.Java中重载和重写的区别
java中的重载与重写的区别:一:重载发生在本类中,重写发生在父类与子类之间;二:重载的方法名必须相同,方法中形参一定不同;重写的方法名必须相同,参数必须相同,返回值类型必须相同;一:重载发生在本类中,重写发生在父类与子类之间;二:重载的方法名必须相同,方法中形参一定不同;重写的方法名必须相同,参数必须相同,返回值类型必须相同;原创 2023-04-29 05:57:23 · 44 阅读 · 0 评论 -
9.Java中异常处理机制是什么
如果执行try块里的业务逻辑代码时出现异常,系统自动生成一个异常对象,当Java运行时环境收到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的catch块,则把该异常对象交给该catch块处理,这个过程被称为捕获(catch)异常。在通常情况下,不要在finally块中使用如return或throw等导致方法终止的语句,一旦在finally块中使用了return或throw语句,将会导致try块、catch块中的return、throw语句失效。位于方法内部,是异常出现的源头,制造异常。原创 2023-04-29 05:49:40 · 874 阅读 · 0 评论 -
8.==与equals的区别
equals是判断两个变量或实例所指向的内存空间的值是不是相同。==是判断两个变量或实例是不是指向同一个内存空间。原创 2023-04-29 05:23:11 · 31 阅读 · 0 评论 -
7.Java代理的几种实现方式
Java中的代理指的是,当我们需要实现某个功能或者需求的时候,一个对象想要访问另外一个类的方法或者对象,但是由于一些其他原因,可能并不能直接访问该类的方法或者对象,这个时候就可以通过另外一个类或者对象去访问。客户类想要访问的对象是目标对象,但客户类可以访问的对象是代理对象。事实上,代理模式是Java中23种设计模式之一代理模式是指,为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用。这里的B就是A的代理。原创 2023-04-29 05:17:42 · 137 阅读 · 0 评论 -
6.hashcode与equals区别与联系
之所以hashCode相等,却可以equal不等,就比如ObjectA和ObjectB他们都有属性name,那么hashCode都以name计算,所以hashCode一样,但是两个对象属于不同类型,所以equals为false。equals它的作用也是判断两个对象是否相等,如果对象重写了equals()方法,比较两个对象的内容是否相等;同样的,equals()定义在JDK的Object.java中,这就意味着Java中的任何类都包含有equals()函数。但是equals相等的hashcode一定相等。原创 2023-04-29 05:03:58 · 1838 阅读 · 0 评论 -
5.Java中抽象类和接口
4.抽象类可以定义成员变量(如setname()与getname()方法,设置抽象类的name与获取name)2.抽象类有具体方法和抽象方法(抽象类是有一个或多个抽象方法。抽象方法是声明一个方法但不实现,由子类实现。3.如果这个类实现了接口或者继承了抽象类,就必须把其中抽象方法全部实现(哪怕不重写也要实现)5.抽象类里面可以没有抽象方法,因为可以有具体方法啊。但是有抽象方法就必定是抽象类。2.接口中的方法全是抽象方法(换句话就是无具体方法和静态方法)2.一个类可以实现多个接口,但是只能继承一个抽象类。原创 2023-04-29 01:11:13 · 1246 阅读 · 0 评论 -
4.JDK1.8的新特性有哪些
其中最为核心的是Lambda表达式和Stream API。5、接口中的默认方法和静态方法。1、Lamdba表达式。3、方法引用和构造引用。6、新时间日期API。原创 2023-04-28 20:11:09 · 45 阅读 · 0 评论 -
3.高并发中的集合有哪些问题?
如果某些场景下需要这些集合线程安全,jdk作者也考虑到了,就是使用Collections.SynchronizedList(list)以及Collections.S ynchronizedMap(map)等方法锁住其代码,使其线程安全。因为这一代全默认集合为线程安全,使用Synchronized修饰,所以导致了效率低下的问题。map集合使用使用JUC下的类去实现高并发情况下的集合安全。list集合使用JUC下的类去实现高并发情况下的集合安全。set集合使用JUC下的类去实现高并发情况下的集合安全。原创 2023-04-28 19:11:55 · 1058 阅读 · 0 评论 -
2.ArrayList和LinkedList的区别
ArrayList和LinkedList都实现了List借口。也就导致了在插入和删除多的时候使用LinkedList效率高。在查找多的时候使用ArrayList的效率高。LinkedList使用的链表存储数据。ArrayList使用的数组存储数据。但是在存储数据的底层原理却不一样。首先这题是关于数据结构的题。原创 2023-04-28 18:25:52 · 45 阅读 · 0 评论 -
1.Java的面向对象有哪些特征
2.2子类可以对继承的父类进行重写,使得父类的一个方法可以在子类中表现出不同的形式。两个子类可以直接继承父类猫,重写父类中跑,叫方法。在子类中重写跑的速度都是多快,叫的声音都是多高。但是一定要记住多态中父类引用子类对象,只能调用子类继承父类的方法,不能调用子类有父类没有的。父类 xx=new 柯基();(比如父类 狗有跑,叫方法,子类有柯基,柴犬,黑狗,我们想要调用子类跑,叫的数据,不能。3.1此时子类重写完毕后,父类中的一个方法在不同子类中表现出不同的形式。2.1子类继承父类,表明子类是一种特殊的父类。原创 2023-04-28 18:01:56 · 829 阅读 · 0 评论