获得徽章 0
- #每天一个知识点# Netty的高低水位设置是基于流量控制的概念,旨在避免内存溢出和保护系统免受网络拥塞的影响。
当写操作的缓冲区大小超过高水位线时,写操作将暂停,直到缓冲区大小降到低水位线以下。这可以防止内存溢出。
当读操作的缓冲区大小超过高水位线时,Netty将停止接受新数据,直到缓冲区大小降到低水位线以下。这可以帮助保护系统免受网络拥塞的影响。
高低水位设置可以通过Netty的ChannelConfig API进行配置。默认情况下,高水位线和低水位线设置为64KB和32KB。展开评论点赞 - #每天一个知识点# JVM参数介绍:-XX:MaxInlineLevel,用于控制方法内联的最大深度。方法内联是一种编译器优化技术,可以将调用方法的代码替换为被调用方法的实际代码,从而减少方法调用的开销并提高程序的执行速度。该参数的默认值为 9,表示最多可以内联 9 层嵌套的方法调用。可以通过增加该参数的值来进一步提高程序的性能,但是过高的值可能会导致编译时间过长和编译器内存消耗过多的问题。展开评论点赞
- #每天一个知识点# sleep VS wait
sleep() 方法和 wait() 方法都可以让线程暂停执行,但它们的作用和使用方式有所不同。
共同点:
都可以让线程暂停执行,释放 CPU 资源。
在使用时,都需要捕获 InterruptedException 异常。
区别:
wait() 方法是 Object 类的方法,而 sleep() 方法是 Thread 类的方法。
wait() 方法需要在 synchronized 块内部调用,而 sleep() 方法可以在任何地方调用。
wait() 方法会释放对象的锁,而 sleep() 方法不会释放任何锁。
wait() 方法需要使用 notify() 或 notifyAll() 方法来唤醒等待的线程,而 sleep() 方法则会自动唤醒。
wait() 方法会把线程放到等待队列中,直到被唤醒,而 sleep() 方法会让线程进入 TIMED_WAITING 状态,等待指定的时间后自动唤醒。展开赞过评论1 - #每天一个知识点# 可重入锁(ReentrantLock):这是一种支持重复加锁的锁,它允许一个线程多次获取同一把锁,而不会出现死锁的现象。在Java中,可重入锁是通过内部计数器实现的,每次加锁时,计数器加一,每次解锁时,计数器减一。只有当计数器归零时,锁才会被完全释放。
可重入锁的优点:
支持公平锁和非公平锁:可重入锁既可以支持公平锁,也可以支持非公平锁。公平锁是指线程在请求锁时,按照请求的顺序来获取锁,而非公平锁则是允许线程在任意时刻获取锁。
支持条件变量:可重入锁支持条件变量,可以通过条件变量来实现线程的等待和唤醒。
可以避免死锁:可重入锁支持重入,避免了死锁的情况。
性能较好:相比于synchronized关键字,可重入锁性能更好,可以提高系统的并发性能。
可重入锁的缺点:
使用复杂:相比于synchronized关键字,可重入锁使用起来更为复杂。
可能会造成线程饥饿:如果多个线程同时请求锁,但只有一个线程能够获取锁,那么其他线程可能会一直等待,从而导致线程饥饿的情况。展开评论点赞 - #每天一个知识点# 线程上下文切换:上下文切换是指CPU从一个线程切换到另一个线程时,需要保存当前线程的状态(包括寄存器状态、程序计数器等信息),然后恢复另一个线程的状态,使得另一个线程可以继续执行。上下文切换是一种开销较大的操作,因为它需要保存和恢复大量的状态信息,因此应该尽量减少上下文切换的次数,以提高系统的性能。赞过评论2
- #每天一个知识点# BIO、NIO、AIO 的区别:
BIO(Blocking I/O):一个线程做完所有的事情,然后返回结果。
NIO(Non-blocking I/O):一个线程接收请求,转发给线程池处理,然后返回结果。
AIO(Asynchronous I/O):与NIO类似,不同之处在于AIO会监听系统内核IO处理结果事件,不在应用线程内等待。展开赞过评论3 - #每天一个知识点# Exception 和 Error
这两个都是 Java 中的异常类,但它们的使用场景和处理方式有所不同,Exception 表示程序中可能出现的可控异常,而 Error 表示程序中不可控的错误。
Exception 分为两种类型:Checked Exception 和 Unchecked Exception。Checked Exception 在方法声明时必须被显式地声明或者捕获,否则编译不通过;Unchecked Exception 则不需要显式声明或捕获,它一般表示程序中的逻辑错误或者运行时异常。
Error 通常表示虚拟机或者系统的错误。例如 OutOfMemoryError 表示内存不足错误,一般是由于程序的资源占用过多或者虚拟机的内存配置不合理导致的。展开评论点赞