- 编辑 1、磁盘调度介绍磁盘可以被多个进程共享的设备,如果有多个进程请求访问磁盘时,为了保证信息的安全,系统的每一时刻只允许一个进程进入磁盘进行I/O操作,别的进程需要等待。磁盘需要采用一种适当的算法,使每个进程对磁盘的平均寻道时间最小。磁盘调度的最终目标是使磁盘的平均寻道时间最少。2、磁盘调度分类2.1、磁盘驱动调度常用的磁盘驱动调度算法有1、先来先服务 FCF... 编辑 1、磁盘调度介绍磁盘可以被多个进程共享的设备,如果有多个进程请求访问磁盘时,为了保证信息的安全,系统的每一时刻只允许一个进程进入磁盘进行I/O操作,别的进程需要等待。磁盘需要采用一种适当的算法,使每个进程对磁盘的平均寻道时间最小。磁盘调度的最终目标是使磁盘的平均寻道时间最少。2、磁盘调度分类2.1、磁盘驱动调度常用的磁盘驱动调度算法有1、先来先服务 FCF...
- 在linux命令下,如果需要终止某个进程,可以使用kill或者killall等命令来实现。终止命令的原理都是向linux内核发送一个系统操作的信号以及某个进程的ID,然后系统内核会根据指定的进程ID进行相应的处理。 kill命令典型的用法:首先使用ps命令查出PID,然后使用kill命令进行处理。 在linux命令下,如果需要终止某个进程,可以使用kill或者killall等命令来实现。终止命令的原理都是向linux内核发送一个系统操作的信号以及某个进程的ID,然后系统内核会根据指定的进程ID进行相应的处理。 kill命令典型的用法:首先使用ps命令查出PID,然后使用kill命令进行处理。
- Redis分布式锁底层实现如何实现redis使用setnx作为分布式锁,在多线程环境下面,只有一个线程会拿到这把锁,拿到锁的线程执行业务代码,执行业务代码需要一点时间,所以这段时间拒绝了很多等待获取锁的请求,直到有锁的线程最后释放掉锁,其他线程才能获取锁,这个就是redis的分布式锁的使用。使用redis锁会有很多异常情况,如何处理这些异常呢1.redis服务挂掉了,抛出异常了,锁不会被释放... Redis分布式锁底层实现如何实现redis使用setnx作为分布式锁,在多线程环境下面,只有一个线程会拿到这把锁,拿到锁的线程执行业务代码,执行业务代码需要一点时间,所以这段时间拒绝了很多等待获取锁的请求,直到有锁的线程最后释放掉锁,其他线程才能获取锁,这个就是redis的分布式锁的使用。使用redis锁会有很多异常情况,如何处理这些异常呢1.redis服务挂掉了,抛出异常了,锁不会被释放...
- JVM调优情况十分复杂,各种情况都可能导致垃圾回收不能够达到预想的效果。对于场景问题,可以从如下几个大方向进行设计:大访问压力下,MGC 频繁一些是正常的,只要MGC 延迟不导致停顿时间过长或者引发FGC ,那可以适当的增大Eden 空间大小,降低频繁程度,同时要保证,空间增大对垃圾回收产生的停顿时间增长是可以接受的。如果MinorGC 频繁,且容易引发 Full GC。需要从如下几个角度进... JVM调优情况十分复杂,各种情况都可能导致垃圾回收不能够达到预想的效果。对于场景问题,可以从如下几个大方向进行设计:大访问压力下,MGC 频繁一些是正常的,只要MGC 延迟不导致停顿时间过长或者引发FGC ,那可以适当的增大Eden 空间大小,降低频繁程度,同时要保证,空间增大对垃圾回收产生的停顿时间增长是可以接受的。如果MinorGC 频繁,且容易引发 Full GC。需要从如下几个角度进...
- 三色标记三色标记,这三色就是白黑灰,白色表示对象不可达,黑色表示已经被访问过了,它关联的对象也扫描了,灰色就是还有一部分对象没有被扫描过。跨代引用跨代引用,年轻代中有一个对象被老年代的对象引用了,这个时候进行minor gc。正常我们的思路是,年轻代里面的对象被老年代里面的对象引用的话,就进行一个遍历,遍历老年代里面的对象。但是老年代里面的对象是很多的,遍历这个是很消耗性能的,这个时候jvm... 三色标记三色标记,这三色就是白黑灰,白色表示对象不可达,黑色表示已经被访问过了,它关联的对象也扫描了,灰色就是还有一部分对象没有被扫描过。跨代引用跨代引用,年轻代中有一个对象被老年代的对象引用了,这个时候进行minor gc。正常我们的思路是,年轻代里面的对象被老年代里面的对象引用的话,就进行一个遍历,遍历老年代里面的对象。但是老年代里面的对象是很多的,遍历这个是很消耗性能的,这个时候jvm...
- 安全点目前Java虚拟机都是采用准确是GC,当执行系统停下来之后,并不需要一个不漏的检查完所有执行上下文和全局的引用位置,虚拟机有办法直接得到哪些地方存放在对象的引用。在HotSpot中,使用了一组OopMap数据结构来实现这个功能。当一个类加载完之后,HotSpot就把对象是什么类型数据计算出来,在JIT(即时编译)的时候也记录下栈和寄存器哪些位置是引用,这样GC时就可以直接得到有哪些对象... 安全点目前Java虚拟机都是采用准确是GC,当执行系统停下来之后,并不需要一个不漏的检查完所有执行上下文和全局的引用位置,虚拟机有办法直接得到哪些地方存放在对象的引用。在HotSpot中,使用了一组OopMap数据结构来实现这个功能。当一个类加载完之后,HotSpot就把对象是什么类型数据计算出来,在JIT(即时编译)的时候也记录下栈和寄存器哪些位置是引用,这样GC时就可以直接得到有哪些对象...
- Serial OldSerial Old就是老年代下使用标记整理算法,单线程运行的垃圾回收器。Parallel oldParallel old也是老年代下使用标记整理算法,可以进行吞吐量控制的多线程回收器,在JDK1.6才开始提供,在JDK1.6之前,新生代使用ParallelScavenge 收集器只能搭配年老代的Serial Old收集器,只能保证新生代的吞吐量优先,无法保证整体的吞吐量... Serial OldSerial Old就是老年代下使用标记整理算法,单线程运行的垃圾回收器。Parallel oldParallel old也是老年代下使用标记整理算法,可以进行吞吐量控制的多线程回收器,在JDK1.6才开始提供,在JDK1.6之前,新生代使用ParallelScavenge 收集器只能搭配年老代的Serial Old收集器,只能保证新生代的吞吐量优先,无法保证整体的吞吐量...
- 垃圾回收器、垃圾回收算法垃圾回收器有多个,先说新生代的三个垃圾回收器,serial,parnew,parallel scavenge,然后再说老年代的serial old,parallel old,cms,最后在说一下新生代和老年代都使用的垃圾回收器G1吧。SerialSerial是新生代下使用复制算法,单线程运行的垃圾回收器,简单高效,没有线程交互开销,专注于GC,这个垃圾回收器工作的时候... 垃圾回收器、垃圾回收算法垃圾回收器有多个,先说新生代的三个垃圾回收器,serial,parnew,parallel scavenge,然后再说老年代的serial old,parallel old,cms,最后在说一下新生代和老年代都使用的垃圾回收器G1吧。SerialSerial是新生代下使用复制算法,单线程运行的垃圾回收器,简单高效,没有线程交互开销,专注于GC,这个垃圾回收器工作的时候...
- 线程池底层运行原理线程池就是控制运行的线程数量,处理过程中将任务放到队列,然后在线程创建后启动这些任务,如果线程数量超出了最大数量就排队等候,等其他线程执行完毕再从队列中取出任务执行。线程池相当于银行网点,常驻核心数相当于今日当值窗口,线程池能够同时执行的最大线程数相当于银行所有的窗口,任务队列相当于银行的候客区,当今日当值窗口满了,多出来的客户去候客区等待,当候客区满了,银行加开窗口,候客... 线程池底层运行原理线程池就是控制运行的线程数量,处理过程中将任务放到队列,然后在线程创建后启动这些任务,如果线程数量超出了最大数量就排队等候,等其他线程执行完毕再从队列中取出任务执行。线程池相当于银行网点,常驻核心数相当于今日当值窗口,线程池能够同时执行的最大线程数相当于银行所有的窗口,任务队列相当于银行的候客区,当今日当值窗口满了,多出来的客户去候客区等待,当候客区满了,银行加开窗口,候客...
- AQS为什么要使用双向链表首先,双向链表的特点是它有两个指针,一个指针指向前置节点,一个指针指向后继节点。所以,双向链表可以支持 常量O(1) 时间复杂度的情况下找到前驱结点,基于这样的特点。双向链表在插入和删除操作的时候,要比单向链表简单、高效。因此,从双向链表的特性来看,我认为AQS使用双向链表有三个方面的考虑。第一个方面,没有竞争到锁的线程加入到阻塞队列,并且阻塞等待的前提是,当前线程... AQS为什么要使用双向链表首先,双向链表的特点是它有两个指针,一个指针指向前置节点,一个指针指向后继节点。所以,双向链表可以支持 常量O(1) 时间复杂度的情况下找到前驱结点,基于这样的特点。双向链表在插入和删除操作的时候,要比单向链表简单、高效。因此,从双向链表的特性来看,我认为AQS使用双向链表有三个方面的考虑。第一个方面,没有竞争到锁的线程加入到阻塞队列,并且阻塞等待的前提是,当前线程...
- AQSAQS的全称是AbstractQueuedSynchronizer,也就是抽象队列同步器,它是在java.util.concurrent.locks包下的,也就是JUC并发包。java提供了synchronized关键字内置锁,还提供了显示锁,而大部分的显示锁的底层都用到了AQS,比如只有一个线程能执行ReentrantLock独占锁,又比如多个线程可以同时执行共享锁Semaphore... AQSAQS的全称是AbstractQueuedSynchronizer,也就是抽象队列同步器,它是在java.util.concurrent.locks包下的,也就是JUC并发包。java提供了synchronized关键字内置锁,还提供了显示锁,而大部分的显示锁的底层都用到了AQS,比如只有一个线程能执行ReentrantLock独占锁,又比如多个线程可以同时执行共享锁Semaphore...
- ThreadLocal定义ThreadLocal叫做线程变量,这个变量对其他线程而言是隔离的,是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。ThreadLocal与Synchronized的区别1、Synchronized用于线程间的数据共享,ThreadLocal用于线程间的数据隔离。2、Synchronized是利用锁... ThreadLocal定义ThreadLocal叫做线程变量,这个变量对其他线程而言是隔离的,是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。ThreadLocal与Synchronized的区别1、Synchronized用于线程间的数据共享,ThreadLocal用于线程间的数据隔离。2、Synchronized是利用锁...
- 自旋锁自旋锁不是一种锁状态,而是一种策略。线程的阻塞和唤醒需要CPU从用户态转为核心态,频繁的阻塞和唤醒对CPU来说是一件负担很重的工作。引入自旋锁,当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋等待不能替代阻塞,虽然它可以避免线程切换带来的开销,但是它占用了CPU处理器的时间。自旋锁适用于锁保护的临界区很小的情况,临界区... 自旋锁自旋锁不是一种锁状态,而是一种策略。线程的阻塞和唤醒需要CPU从用户态转为核心态,频繁的阻塞和唤醒对CPU来说是一件负担很重的工作。引入自旋锁,当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋等待不能替代阻塞,虽然它可以避免线程切换带来的开销,但是它占用了CPU处理器的时间。自旋锁适用于锁保护的临界区很小的情况,临界区...
- 64位JVM下的对象结构描述:对象头的最后两位存储了锁的标志位没加锁状态,锁标志位01,是否偏向是0,对象头里存储的是对象本身的哈希码。偏向锁状态,锁标志位01,是否偏向是1,存储的是当前占用对象的线程ID。轻量级锁状态,锁标志位00,存储指向线程栈中锁记录的指针。重量级锁状态,锁标志位10,存储的就是重量级锁的指针了。对象从无锁到偏向锁转化的过程第一步,检测MarkWord是否为可偏向状态... 64位JVM下的对象结构描述:对象头的最后两位存储了锁的标志位没加锁状态,锁标志位01,是否偏向是0,对象头里存储的是对象本身的哈希码。偏向锁状态,锁标志位01,是否偏向是1,存储的是当前占用对象的线程ID。轻量级锁状态,锁标志位00,存储指向线程栈中锁记录的指针。重量级锁状态,锁标志位10,存储的就是重量级锁的指针了。对象从无锁到偏向锁转化的过程第一步,检测MarkWord是否为可偏向状态...
- Synchronized是Java高频面试题,相关的知识点其实有很多。定义Synchronized是Java语言的关键字,它保证同一时刻被Synchronized修饰的代码最多只有1个线程执行。应用场景synchronized如果加在方法上/对象上,那么,它作用的对象是非静态的,它取得的锁是对象锁;synchronized如果作用的对象是一个静态方法或一个类,它取到的锁是类锁,这个类所有的对... Synchronized是Java高频面试题,相关的知识点其实有很多。定义Synchronized是Java语言的关键字,它保证同一时刻被Synchronized修饰的代码最多只有1个线程执行。应用场景synchronized如果加在方法上/对象上,那么,它作用的对象是非静态的,它取得的锁是对象锁;synchronized如果作用的对象是一个静态方法或一个类,它取到的锁是类锁,这个类所有的对...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签