排序
Linux内核中常用的数据结构和算法
Linux内核代码中广泛使用了数据结构和算法,其中最常用的两个是链表和红黑树。 链表 Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。链...
gitcommit后如何撤销提交
撤销 git 提交可以使用 git reset 和 git revert。1. git reset 通过移动 head 指针改变历史,如 git reset --soft head~1 保留工作区更改。2. git revert 创建新提交抵消之前更改,如 git reve...
Linux软连接如何创建
Linux系统中,符号链接(软链接)的创建依赖于ln命令。本文将详细介绍其使用方法。 命令语法: ln -s [目标] [链接名] -s: 指定创建符号链接。 [目标]: 指向的目标文件或目录的路径(绝对路径或...
Java并发包中锁升级过程的原理剖析
java并发包中的锁升级是一种优化策略,旨在降低锁操作的开销。其核心机制是根据线程竞争情况动态切换锁状态:1)无锁状态为初始状态;2)偏向锁适用于单线程访问,记录线程id以避免同步操作;3...
详解git如何拉分支
随着软件开发的发展,版本控制已成为现代开发过程中至关重要的一部分。git是目前最流行的版本控制管理工具之一。git不仅可以储存历史记录,还可以并行开发多个功能分支,最终合并到一起。在git...
怎样设计异常安全的C++类 RAII原则与异常处理最佳实践
c++++中设计异常安全类的关键在于确保异常抛出时资源能正确释放、对象状态保持一致,核心方法是raii原则。1. raii通过构造函数获取资源、析构函数释放资源,确保自动清理;2. 异常安全分为三个...
数据库怎么建立索引
索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多。建立索引的操作步骤如下: 推荐教程:...
【Linux】线程池封装与介绍
1. 线程池介绍 之前我们实现了线程、互斥量、条件变量以及日志的封装,现在我们可以基于以上内容来封装一个线程池。 线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存...
js如何实现数组快速排序 3种快速排序算法实现方案分享
快速排序是一种基于“分而治之”策略的高效排序算法,其核心是选定一个基准值,将数组分为两部分,使得左边元素小于基准值,右边元素大于基准值,然后递归地对左右子数组排序。文章介绍了三种ja...
RISC-V Linux汇编启动过程分析
RISC-V Linux的汇编启动部分比较简单,不算复杂。有两个部分比较核心:页表创建和重定向。页表创建是用C语言写的,今天先分析汇编部分,先带大家分析整体汇编启动流程,然后分析重定向。 注意:...