Linux内核中断处理过程解析
导读中断是现代 CPU 工作方式中重要的部分。例如:当你每次在键盘上按下一个按键后,CPU 会被中断以使得 PC 读取用户键盘的输入。这个过程发生得相当快,以致于在使用体验上你不会感到任何变化或损害。此外,键盘并不是导致中断的唯一组件。一般来说,有三种类型的事件会导致 CPU 发生中...
2024-01-10理解Linux链接
理解 Linux 链接有人给我说不是很了解Linux链接,今天我就来普及一下什么是Linux链接:链接是可以将文件和目录放在你希望它们放在的位置的另一种方式。 除了 cp 和 mv 这两个我们在本系列的前一部分中详细讨论过的,链接是可以将文件和目录放在你希望它们放在的位置的另一种方式。它的优点是...
2024-01-10深入理解Kotlin的泛型系统
前言Kotlin 的泛型与 Java 一样,都是一种语法糖,只在源代码里出现,编译时会进行简单的字符串替换。泛型是静态类型语言中不可缺少的一部分,Kotlin 的泛型定义和使用都类似 Java,但也有一些基于工程实践考虑的优化和改进。泛型(Generics)其实就是把类型参数化,真正的名字叫做 类型参数,它...
2024-01-10深入理解Vue nextTick 机制
我们先来看一段Vue的执行代码:export default { data () { return { msg: 0 } }, mounted () { this.msg = 1 this.msg = 2 this.msg = 3 }, watch: { msg () { console.log(this.msg) } }}这段脚本执行我们猜测1000m后会依次打印:1、2、3。但是实际效果中,只会输出一次:3。为什么会出现这样的情况?我们来一探究竟。q...
2024-01-10Linux概念架构的理解
英文原文:Conceptual Architecture of the Linux Kernel 摘要Linux kernel成功的两个原因:(1)架构设计支持大量的志愿开发者加入到开发过程中;(2)每个子系统,尤其是那些需要改进的,都支持很好的扩展性。正是这两个原因使得Linux kernel可以不断进化。 一、Linux内核在整个计算机系统中的位置Fig ...
2024-01-10xenomai内核解析之嵌入式实时linux概述
Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操...
2024-01-10linux内核分析———SLAB原理及实现
linux内核分析———SLAB原理及实现Slab原理及实现1. 整体关系图!注:SLAB,SLOB,SLUB都是内核提供的分配器,其前端接口都是一致的,其中SLAB是通用的分配器,SLOB针对微小的嵌入式系统,其算法较为简单(最先适配算法),SLUB是面向配备大量物理内存的大规模并行系统,通过也描述符中未使用的字段来...
2024-01-10Linux内核中红黑树算法的实现详解
一、简介平衡二叉树(BalancedBinary Tree或Height-Balanced Tree)又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树上结点的平衡因子BF(BalanceFactor)定义为该结点的左子树的深度减去它的右子树的...
2024-01-10陈莉君教授回望踏入Linux内核之旅
本文系转载,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者: 陈莉君来源: 微信公众号linux阅码场(id: linuxdev)初次踏入Linux几多耕耘,几多收获,不小心在Linux这个自由王国畅游了多年。依稀记得刚进入这个世界时的那份恐慌和无知,更庆幸那时的无知无畏。在那...
2024-01-10深入讲解Swift的内存管理
前言LLVM编译器的好:Swift的内存管理除了要注意引用循环之外,几乎全部被LLVM编译器包揽,不需要开发人员操心。Swift 是自动管理内存的,这也就是说,我们不再需要操心内存的申请和分配。当我们通过初始化创建一个对象时,Swift 会替我们管理和分配内存。而释放的原则遵循了自动引用计数 (ARC) ...
2024-01-10Vue中$nextTick的理解
Vue中$nextTick方法将回调延迟到下次DOM更新循环之后执行,也就是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,能够获取更新后的DOM。简单来说就是当数据更新时,在DOM中渲染完成后,执行回调函数。描述通过一个简单的例子来演示$nextTick方法的作用,首先需要知道Vue...
2024-01-10深入了解 Flex 属性
大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】。你有没有想过 CSS 中的 flex属性如何工作? 它是 flex-grow,flex-shrink和flex-basis的简写。 开发中最常见的写法是flex:1,它表示 flex 项目扩展并填充可用空间。接下来,我们来详细看看它表示是什么意思。flex-grow 属性flex-grow属性...
2024-01-10深入理解 FilterChainProxy【源码篇】
昨天有小伙伴加松哥微信,说他把松哥的 Spring Security 系列撸完了。。but 松哥这个系列还没发完呢,在我的计划中,Spring Security 系列目前应该能更新一半,还剩一半,虽然有的小伙伴可能觉得好像已经没啥了,其实还有很多东西。。。松哥最近也是特别忙,Security 更新慢下来了,但是秉持前面说的,...
2024-01-10深入理解JVM内存分配策略
对象优先在Eden分配对象优先在Eden分配,如果说Eden内存空间不足,就会发生Minor GC大对象直接进入老年代大对象:需要大量连续内存空间的Java对象,比如:很长的字符串和大型数组。大对象带来的副作用:当没有足够的连续空间来存放大对象的时候,就需要提前出发一次Full GC在内存回收过程中,...
2024-01-10深入理解JVM内存溢出实战
Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,当对象数量到达最大堆的容量限制后就会产生内存溢出异常。最常见的内存溢出就是存在大的容器,而没法回收,比如:Map,List等。出现下面信息就可以断定出现了堆内存溢出。java.lang.OutOfMemoryError: Java heap space保证GC Roots到对象之间有可达...
2024-01-10深入理解SpringAOP之代理对象
本文内容纲要:- 一、FactoryBean&BeanFactory&ObjectFactory- 二、AOP的核心探究- 2.1、核心接口初探- 2.2、源码分析- 三、基于AOP的核心类与接口实现代理- 1、先定义基本的JavaBean:- 2、自定义注解- 3、定义JavaBean的代理- 4、主程序 本篇文章主要带大家简单分析一下AOP的代理对象,至于AOP是什么,...
2024-01-10深入理解Vue-cli搭建项目后的目录结构探秘
我最近也在研究Vue-cli的路上,今天了解一下Vue-cli目录结构,那么今天也算个学习笔记吧!一、前言这里先说一下使用vue-cli之前的事情。由于刚刚接触Vue不久,就接到了一个移动端项目,于是打算使用vue来进行一次尝试,所以按照练习时候的样子,emmm先把vue.js引入网页里来,emmm自己的外联main.css样...
2024-01-10深入理解ES6中let和闭包
本文介绍了深入理解ES6中let和闭包,分享给大家,具体如下:在开始本文之前我们先来看一段代码for(var i=0;i<10;i++){ arr[i]=function(){ return i; }}console.log(arr[3]());//10显然这段代码输出10,并没有向我们期望的返回3,原因也很简单(js的变量提升)函数在调用时候访问的是一个全局作用域的i,此时fo...
2024-01-10深入理解JVMJVM内存模型
各版本的差异JDK1.6在JDK1.6 的时候运行时常量池在方法区中JDK1.7在JDK1.7 的时候运行时常量池在堆中JDK1.8在JDK1.8 的时候,JVM内存模型直接将方法区移到了本地内存中,叫元数据空间。该区域的内存大小就只受本机总内存的限制,但是当申请不到足够内存时也会报出程序计数器主要作用是:存储...
2024-01-10数仓系列 | 深入解读 Flink 资源管理机制
作者:宋辛童(五藏)整理:王文杰(Flink 社区志愿者)摘要:本文根据 Apache Flink 系列直播整理而成,由阿里巴巴高级开发工程师宋辛童分享。文章主要从基本概念、当前机制与策略、未来发展方向等三个方面帮助开发者深入理解 Flink 的资源管理机制。基本概念当前机制与策略未来发展方向**Ti...
2024-01-10深入理解C♯ 7.0中的Tuple特性
介绍Tuple是异类对象的有序序列。 我们经常可以写出返回多个值的方法,所以我们需要创建一个包含多个数据元素的简单结构。 为了支持这些情况,Tuple 被添加到 C#。 Tuple 是包含多个字段用来表示数据成员的轻量级数据结构。如果一个方法返回多个相同类型的数值,那么它可以将这些值存储在一个...
2024-01-10JVM深入理解内存调优与GC日志
ps -Lfp pidps -mp pid -o THREAD, tid, timetop -Hp pid[root@redis webapps]# top -Hp 22272top - 10:09:30 up 9 days, 22:10, 1 user, load average: 0.00, 0.00, 0.00Tasks: 30 total, 0 running, 30 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.0%sy, ...
2024-01-10Linux性能调优|01平均负载的理解和分析
01 uptime命令通常我们发现系统变慢时,我们都会执行top或者uptime命令,来查看当前系统的负载情况,比如像下面,我执行了uptime,系统返回的了结果。[root@lincoding ~]# uptime 08:31:49 up 27 min, 1 user, load average: 0.07, 0.04, 0.00前几列的信息,相信大家都很熟悉,它们分别是当前时间、系统运行时间和正在登...
2024-01-10Linux内核设备驱动程序将DMA从设备插入用户空间内存
我想将数据从启用DMA的PCIe硬件设备尽快移入用户空间。问:如何将“直接I / O通过DMA传输和/或通过DMA传输结合到用户空间”通读LDD3,看来我需要执行几种不同类型的IO操作! dma_alloc_coherent给我可以传递给硬件设备的物理地址。但是将需要设置get_user_pages并copy_to_user在传输完成后执行类型调用。这似...
2024-01-10Vue响应式原理深入解析及注意事项
前言Vue最明显的特性之一便是它的响应式系统,其数据模型即是普通的 JavaScript 对象。而当你读取或写入它们时,视图便会进行响应操作。文章简要阐述下其实现原理,如有错误,还请不吝指正。下面话不多说了,来随着小编来一起学习学习吧。响应式data<div id = "exp">{{ message }}</div>const vm = new Vue({ ...
2024-01-10