开启内核安全增强配置,包括但不限于内核代码段只读属性、PAN(Privileged Access Never)和PXN(Privileged Execute Never)及栈完整性保护等。PANPrivileged Access Never表示在特权级别下禁止对用户空间内存的访问PXNPrivileged Execute Never表示禁止执行
Linux内核配置(Kconfig)系统是Linux内核的一个配置系统,它允许用户以可交互的方式选择内核的各种配置选项,以定制内核以符合特定的硬件和需求。这种配置通常在编译内核之前完成,通过运行 make menuconfig、make xconfig 或 make oldconfig 等命令来执行。以下是一些Kconfig系统的基本元素和语法:config用来定义一个新的配置选项。定义之后,它可
bind 函数适配器是C++标准库中的一个功能,主要包含在 <functional> 头文件中。bind 用于将函数或函数对象的某些参数绑定为特定值,生成一个新的可调用对象,对于未绑定的参数,可以在新的可调用对象中以任何顺序填入。以 std::bind 为例,其基本用法如下:#include <functional> // 假设我们有一个函数f void f(int a,
Linux Security Modules (LSM) 框架在内核中的多个关键点提供了一系列的挂钩点,这些挂钩点允许安全模块在不同的操作发生时进行介入以实施安全策略。这些挂钩点覆盖了内核的几乎所有重要部分,包括进程管理、文件系统访问、网络操作、IPC 以及能力(capabilities)。以下是一些关键的挂钩点的分类和例子:进程管理挂钩点: 这些挂钩点涉及到进程的创建、销毁、权限变更等操作。例如
Linux Security Modules(LSM)是一个框架,它允许Linux内核支持各种不同的计算机安全模型,同时不偏爱任何特定的安全策略。LSM 最初在Linux 2.6内核中引入,它提供了一组挂钩点(hooks),这些挂钩点被插入到内核的关键操作中,安全模块可以使用这些挂钩来执行访问控制决策。LSM的目的和功能LSM的设计目的是为了在不需要修改内核源码的情况下提供安全功能。LSM使得不同
强制访问控制模型(MAC) 强制访问控制模型(MAC, Mandatory Access Control),是为了弥补DAC权限控制过于分散的问题而诞生的。Subject被赋予一定的安全级别 Object被赋予一定的安全级别 Subject能否访问Object由双方的关系安全级别决定,这个判断通常有系统硬性限制 MAC非常适合机密机构或者其他等级观念强烈的行业,过重强调保密性,管理不够灵活。在实现
介绍用户态加固是指在操作系统用户空间中采取各种技术手段来增强应用程序的安全性,从而减少漏洞被利用的风险。用户态加固通常包括静态和动态的措施,可以应用在不同的软件开发阶段,如编码、编译、部署和运行等。常见的用户态加固技术以下是一些常见的用户态加固技术:溢出保护(Buffer Overflow Protection):堆栈保护(Stack Guards):如Stack Canary,编译器将一小段数据
自主访问控制(Discretionary Access Control,简称 DAC)是一种计算机安全模型,主要依据数据的所有者或者那些被所有者委派权限的用户的自行决定,来授予或限制对系统对象(如文件或目录)的访问。在这种模式下,所有者可以决定谁可以访问特定的数据资源以及如何访问。DAC 是最常见的访问控制机制,特别是在个人计算机和某些操作系统(如 Windows 和 UNIX-like 系统)中
对于单元测试,使用Gtest、Gmock 等工具提升代码覆盖率学习总结。Unitest代码覆盖率(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。单元测试主要包括三方面测试:行覆盖,分支覆盖,功能覆盖:行覆盖 = 已执行的语句数目 / 所有语句的总数目 * 100%;分支覆盖 = 已执行的分支数目 / 分支总数目 * 100%;功能覆
OSI(Open Systems Interconnection)七层模型是一个网络架构模型,由国际标准化组织(ISO)提出,用于理解和设计计算机网络的工作方式。该模型将网络通信划分为七个层次,每一层都有其特定的功能,并且为上层提供服务同时使用下层提供的服务。以下是OSI七层模型的层次,从最低层(物理连接)到最高层(应用)的总结:物理层(Physical Layer):定义通过媒体传输数据的电气和
在C++的STL(Standard Template Library,标准模板库)中,所谓的"分配器"(Allocators)是一个用于抽象内存模型的组件,用于定义内存的分配、释放以及对象的构造和析构。STL分配器提供了一个统一的接口,使容器能够与之无缝配合进行内存管理。STL六大组件包括:容器(Containers):用于存储数据的类模板集合,比如vector、list、map等。算法(Algo
c++引入了只能指针概念帮助释放内存。智能指针是一个类,每一个智能指针对象可以管理一块堆区内存。所有智能指针都在头文件<memory>中。智能指针(Smart Pointer)在C++中是一种对象,它表现得像一个指针,但提供了自动化的内存管理功能。当智能指针所指向的对象不再使用时,智能指针负责自动释放对象所占用的内存。这有助于防止内存泄漏,并使得资源管理更加
对模板的总结
C++ 重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策
const 关键字 const修饰符是让一个变量只读,即不可修改,而且必须在创建的时候就进行初始化。但是实际在C语言中,用const修饰的变量也可以通过指针的方式修改。并且常量类型只能使用常量指针来获取地址。const 变量const int x = 10; // x不能被赋予新的值 // x = 20; // 这会导致编译错误const 指针int value = 10; const i
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变他的值。且静态变量或静态函数只有本文件内的代码可以访问他,他的名字在其他文件中不可见。1)、变量会被放在程序的静态区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。2)、变量用static告知编译器,自己仅仅在变量的作用范围
虚函数:virtualC++中的虚函数的作用主要是实现了多态的机制。这是除了模板技术以外的一种泛型技术。在调用对象的虚函数时,会看该对象的本质是什么对象,来调用对应的函数 使用virtual关键字来定义的成员函数,在调用对象的虚函数时,系统会先判断对象的本质是什么对象,然后来调用对应的函数。子类函数和父类函数完全相同(同名同参数),如果父类的函数是虚函数,就会让子类自动变成虚函数;虚函数的实现原理
在面向对象编程中,静态绑定和动态绑定是两种方法,用于确定程序调用哪个函数(特别是当使用继承和多态时)。这两种方法本质上是根据对象的类型来决定函数调用如何解析。静态绑定(Static Binding)静态绑定,又称为早期绑定,是编译时完成的函数调用解析过程。编译器根据调用函数时使用的变量或表达式的类型来确定应当调用哪个函数。在编译时,编译器有足
在C++中,基于范围的for循环(通常称为for each循环)通过C++11标准引入,它提供了一种更简洁和安全的方式来遍历容器(如数组、向量、列表等)中的所有元素。基于范围的for循环会自动迭代容器的每个元素,无需手动操作迭代器或者索引。基于范围的for循环的基本语法如下:for (declaration : container) { // 使用当前元素 }declaration 是对容
explicit 关键字 在 C++ 中,`explicit` 关键字用于阻止类构造函数的隐式类型转换。这种隐式转换可能在调用函数或方法时自动发生,当你传递的是一个构造函数可以接受的类型时,即使你没有显式地创建一个对象,编译器也会自动创建它。 “只有一个参数的类构造函数”,描述了 `explicit` 关键字最典型的应用情境。具体来说,当一个构造函数只有一个参数时,它可以用
构造函数:构造函数的名字与类名相同,没有返回值,通常用来初始化类的成员变量。在创建实例化对象的时候调用。如果不写的话,类中会包含一个没有函数体的默认的无参构造。可以进行重载,但是只要自行写了一个构造函数,那么系统的无参构造就会消失。拷贝构造:拷贝构造可以算作是构造函数的一个重载。只有一个形参,而且该形参是对本类类型对象的引用,常用const修饰(const Node &n)。创建对象的时候
重载new和delete通过重载来改变new和delete的方法。可以改变内存的来源。默认的operator new底层实现是malloc。void* operator new(size_t sz){ return malloc(sz); } void operator delete(void* p){ free(p); }new和deletenew会先申请空间,系统随后会在新申请的空间上调用构造
设计模式是软件工程中共同的问题的解决方案,这些方案经过了验证和总结,能够在不同的情境中提供最佳的解决途径。设计模式主要分为三类:创建型模式、结构型模式和行为型模式。以下是这三类模式中的 23 个经典设计模式的列表:创建型模式(Creational Patterns):创建型模式涉及对象的初始化和创建过程,它可以使得系统在不需要指定精确类的情况下创建对象。单例(Singleton)原型(Protot
安全技术体系信息安全、功能安全、预期功能安全均属于汽车操作安全的一个部分,同时这三项安全技术也一起并成为智能网联汽车操作安全性的“安全三剑客”。信息安全指的是规避重要信息泄露、被篡改、盗窃或遗失。信息安全同样属于智能网联汽车技术的一部分,对应的标准为ISO/SAE 21434和SAE J3061。功能安全功能安全指的是不存在由电子电气系统的功能异常表现引起的危害而导致不合理的风险。功能安全是在汽车
CXX 是一个环境变量或构建系统中的特定变量,用于指定用于编译 C++ 代码的编译器。它通常被用作构建系统或 Makefile 中的一个变量,用于指定编译 C++ 代码时要使用的编译器的名称或路径。在大多数情况下,CXX 变量的默认值会根据操作系统和编译环境的设置自动确定,并且会预先配置为适当的 C++ 编译器,如 g++(GCC)、clang++(Clang)或者其
1、ECU简介:ECU:Engine Control Unit ,即发动机控制单元,特指电喷发动机的电子控制系统。后来随着汽车电子的迅速发展,ECU的定义变成了Electronic Control Unit ,即电子控制单元,泛指汽车上所有的电子控制系统,泛指汽车上所有的电子控制系统,而原来的发动机ECU有很多的公司称为EMS(发动机管理系统):Engine Management System。它
文件读写。// 写txt文件******system("date"); system(" iostat -x 1 2| tee node.txt");// 读txt文件******cout<<"使用 getline 读取"<<endl; ifstream infile2("node.txt", ios::in); if (!infile2.fail()) { w
五种IO模型1. 阻塞I/O2. 非阻塞I/O3. 多路I/O复用4. 信号驱动I/O5. 异步I/O前四种都是同步,只有最后一个是异步I/O阻塞I/O模型进程会一直阻塞(不再占有CPU),直到数据拷贝完成。应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。非阻塞I/O模型非阻塞IO进程反复调用I
提交代码:将拉取的代码修改后,将修改部分的代码先推到自己的仓库,然后推到远程分支上面。常用指令git status 查看仓库当前的状态,显示有变更的文件。 git add +文件名 添加文件到暂存区。 git commit -s提交暂存区到本地仓库。//需要添加解释“对 HSE 兼容调试做解释”(第一次执行时,做出解释) 追加提交:git commit --amend git push -f(强
鸟哥的 Linux 私房菜 -- 浅谈备份策略Linux学习:第一部分:Linux的规划与安装计算机概论:CPU为一个具有特定功能的芯片;CPU内又可分为两个主要的单元:算数逻辑单元与控制单元。输入单元把数据传输到主内存,CPU读取主内存的数据,处理完放回主内存,再到输出单元。计算机五大组成部分:输入单元、输出单元、CPU内部的控制单元、算数逻辑单元与主内存。目前常见的CPU种类:精简指令集与复杂
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号