logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux进程地址空间——钻入Linux内核架构性剖析 硬核手搓!

本文深入解析了Linux系统中虚拟内存与物理内存的映射关系。通过父子进程示例展示了相同虚拟地址映射不同值的现象,揭示了进程间内存管理的独立性。文章详细阐述了页表的核心作用,它作为虚拟地址与物理地址之间的桥梁,通过PCB维护的虚拟内存表实现映射。重点分析了mm_struct数据结构如何管理虚拟内存区域,以及物理内存通过分页机制支持多个进程的虚拟地址映射。最后指出物理内存作为共享资源由操作系统统一管理

文章图片
#java#开发语言#linux +3
硬核手搓解析!进程-内核分析:命令行参数及环境变量,重构main()

本文深入探讨了Linux环境下命令行参数与环境变量的核心概念与应用。命令行参数通过main()函数接收,以argc和argv形式传递选项信息;环境变量则是进程级的全局配置,具有继承性,可通过env、echo等命令查询。文章详细介绍了环境变量的增删改查操作,分析了命令行参数与环境变量的关系,并对比了库函数与系统调用的区别。特别指出export是内建命令而非普通指令,能在父进程直接操作环境变量。通过代

文章图片
#linux#运维#服务器 +4
进程分析—从操作系统到Linux内核深入

本文系统介绍了操作系统进程管理的核心概念,包括进程数据结构、状态转换和调度机制。重点解析了进程控制块(PCB)的双向链表结构、fork函数创建子进程的原理、进程三种基本状态(运行/阻塞/挂起)及其转换条件。详细阐述了CPU调度队列的运行机制,包括活跃/过期进程队列的切换原理、优先级位图管理和实时/分时调度策略。通过具体代码示例展示了进程创建、状态查询等系统调用,并深入分析了进程的竞争性、独立性等本

文章图片
#linux#运维#服务器 +3
初识Qt+经典方式实现hello world!的交互

本文介绍了Qt Creator环境下的基础开发流程,重点讲解了如何实现"Hello World"程序。主要内容包括:1)Qt项目的基本结构,如main.cpp入口文件、QWidget派生类的创建;2)对象树机制和内存管理;3)三种实现"Hello World"的方式:纯代码、UI控件+代码、信号槽机制;4)qmake构建工具的使用。文章通过具体代码示例,展示

文章图片
#qt#开发语言#c++ +2
智能指针、循环引用、锁、删除器

本文分析了智能指针在资源管理中的重要作用,重点介绍了四种智能指针(shared_ptr、unique_ptr、weak_ptr、auto_ptr)的特性与使用场景。智能指针基于RAII原则设计,通过对象生命周期自动管理资源,避免了传统指针的内存泄漏问题。文章详细比较了各指针的差异:shared_ptr采用引用计数支持共享资源,但需注意循环引用;unique_ptr独占资源效率更高;weak_ptr

文章图片
#开发语言#后端#visual studio
常见错误解析1.0

本文总结了编程中常见的错误和注意事项:1.二维数组初始化时memset的使用误区;2.位操作符的特性及内存操作函数对'\0'的处理差异;3.二叉树销毁时的指针修改问题;4.析构函数的调用顺序规则;5.字符串转整数的常见陷阱;6.联合体和结构体的嵌套使用限制;7.main函数的规范写法;8.运算符优先级导致的运算顺序问题;9.sizeof与strlen的本质区别;10.构造函数与拷贝构造的调用规则。

文章图片
#算法#c语言#学习 +2
set与map、lower_bound、[]、erase、insert、key、value

T是set底层的关键字类型。set默认要求T支持小于比较,如果不支持或者想按照自己的需求定义比较可以自己实现仿函数来传递给第二个模板参数。set底层存储数据的内存是从空间配置器中申请的,如果需要可以自己实现内存池,传递给第三个参数。(一般情况下我们都不需要传后两个模板参数)set底层是使用红黑树实现的,增删查的效率是O(logN),迭代器遍历走的是搜索树的中序,所以是有序的。pair下有两个参数对

#c++
到底了