GaryLee's Blog
什么是负载均衡?有哪些常见算法? 什么是负载均衡?有哪些常见算法?
一、什么是负载均衡?背景:我们一般会将我们的服务做集群部署(多机器),用来应对高并发流量,但是我们的入口都是同一个(如www.baidu.com可能指向ip255.1.1.1,也可能指向ip255.2.2.2),具体如何将用户请求分发到集群
2023-11-06
Redis除了做缓存,还能做什么? Redis除了做缓存,还能做什么?
一、Redis除了做缓存,还能做什么?Redis除了做缓存,还能做以下几种功能: 分布式锁:具体可参考文章《如何实现一个分布式锁?》 延迟队列:具体可参考文章《如何用Redis实现延迟队列?》 消息队列:Redis支持发布/订阅模式和St
2023-10-31
图解AQS原理(ReentrantLock实现) 图解AQS原理(ReentrantLock实现)
一、什么是AQS?具体可参考文章《什么是AQS?》 二、AQS原理在AQS内部,维护了: state变量:用volatile int修饰,当state大于0的时候说明对象锁已经被占有了,state的修改动作是通过CAS来完成的 等待队列:
2023-10-30
什么是AQS? 什么是AQS?
一、什么是AQS?AQS也就是AbstractQueuedSynchronizer(抽象队列同步器),放在java.util.concurrent.locks包下。 AQS是一个抽象类,大概定义如下: public abstract cla
2023-10-29
什么是volatile?能保证原子性吗? 什么是volatile?能保证原子性吗?
一、什么是volatile?volatile是Java中一个关键字,用来修饰变量。可以用来保证多线程下访问的变量的可见性,但是不能保证原子性。 二、volatile如何保证可见性?volatile翻译成不稳定的,一般我们的变量存在主内存里,
2023-10-27
什么是线程死锁?如何避免? 什么是线程死锁?如何避免?
一、什么是线程死锁?线程死锁指的是多个线程互相阻塞,它们中间的一个或者多个在等待某个资源被释放。由于线程一直被阻塞,所以程序也就一直被阻塞。 如图所示,线程A持有资源2,线程B持有资源1,而此时线程A想请求资源1,线程B想请求资源2,导致两
2023-10-26
Java集合详解 Java集合详解
一、什么是Java集合?Java集合也叫做容器,主要分为两种: Collection接口:用于存放单一元素,实现有Set、List、Queue等 Map接口:用于存放键值对,实现有HashMap、LinkedHashMap、Hashtab
2023-10-25
什么是语法糖? 什么是语法糖?
一、什么是语法糖?语法糖(Syntactic Sugar)也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。 二、Java中有哪些常见的语法糖?Java中有以下几种常见的语法糖: swit
2023-10-24
什么是反射机制? 什么是反射机制?
一、什么是反射?在Java中,反射是我们可以通过一个类名来获取它所有的属性和方法,同时也可以调用这些属性和方法。 二、反射的优缺点反射的优缺点如下:优点: 灵活 缺点: 不安全(如无视泛型,相关文章可参考《什么是泛型?有什么用?》)
2023-10-24
Java是值传递还是引用传递? Java是值传递还是引用传递?
一、什么是形参和实参?形参和实参都指的是参数,他们的区别在于: 形参:用于传递给方法的参数,需要赋值 实参:用于方法定义来接收实参,不需要赋值 public class TestClass { public static voi
2023-10-24
什么是泛型?有什么用? 什么是泛型?有什么用?
一、什么是泛型?在Java中,泛型是指在定义类和接口时允许使用类型参数,声明的类型参数在使用时才用具体的类型来替换。 为什么要使用泛型?: 代码复用:比如我们常用的List,我们平时要将String、Integer等类型放入List中。如
2023-10-23
Java字符串要注意哪些问题? Java字符串要注意哪些问题?
一、String、StringBuffer、StringBuilder有什么区别?String、StringBuffer、StringBuilder区别如下: 线程安全性:String线程安全(因为不可变),StringBuffer线程安
2023-10-23
3 / 15