Windows 11 安装Boost 库

news2024/11/23 11:38:27

Boost 库下载和安装

Boost 官网地址:https://www.boost.org/ ,首先进入官网下载对应版本的 Boost 库文件。点击下图所示绿框中的 Download 进入下载页面。

进入下载页面,下载所需要的版本,我现在下载的版本为1.83.0,下载的是windows 版本boost_1_83_0.7z。 

 

Boost 库安装 

下载的文件包解压之后如下图所示:

知识拓展:Windows PowerShell 概念和用途 

Windows PowerShell是一个由Microsoft发布的任务自动化和配置管理框架,包含了命令行外壳和脚本语言环境。它建立在.NET Framework上,接受和返回.NET对象。

用途包括:

1. 系统管理:PowerShell 脚本可以用来自动化系统日常的管理和配置任务。

2. 网络管理:比如可以使用 PowerShell 脚本来管理网络设置,包括网络适配器的设置,IP 地址的配置等等。

3. 文件操作:PowerShell 脚本可以用来自动化文件操作,比如复制文件,删除文件,重命名文件等等。

4. 数据处理:PowerShell 可以处理文本,XML,CSV 等各种数据,并且有丰富的数据处理命令。

5. 系统监控:PowerShell 脚本可以用来监控系统的运行状态,比如 CPU 的使用率,内存的使用情况,硬盘的使用情况等等。

6. 软件开发和测试:PowerShell 功能强大,适合于软件开发和测试工作,比如可以使用 PowerShell 来自动化编译,测试,打包,部署等工作。

7. 服务器管理:PowerShell提供了丰富的命令来管理Windows Server的各项功能,包括AD(Active Directory),IIS,Exchange Server,SQL Server等。

Windows 安装Boost 库,为什么使用PowerShell ? 

开发Boost程序需要配置Boost头文件和Boost链接库的位置 , Windows 管理程序的编译、打包、部署工具就是PowerShell。

第一步:打开PowerShell 窗口

打开cmd 窗口,并输入powershell 指令。

第二步:切换至Boost 解压目录,执行如下命令。

Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

PS C:\Users\zzg> cd D:\Boost\boost_1_83_0
PS D:\Boost\boost_1_83_0> .\bootstrap.bat
Building Boost.Build engine
LOCALAPPDATA=C:\Users\zzg\AppData\Local
Found with vswhere C:\Program Files\Microsoft Visual Studio\2022\Community
Found with vswhere C:\Program Files\Microsoft Visual Studio\2022\Community
Call_If_Exists "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\..\..\VC\Auxiliary\Build\vcvarsall.bat"  AMD64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.5.5
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
###
### Using 'vc143' toolset.
###

第三步:.\bootstrap.bat· 运行完成之后,结果如下图所示,会多出几个文件用于库的构建和编译:

 拓展:.\b2 --help 了解一下有哪些参数可以配置

PS D:\Boost\boost_1_83_0> .\b2 --help
B2 4.10-git

Project-specific help:

  Project has jamfile at Jamroot

Usage:

  b2 [options] [properties] [install|stage]

  Builds and installs Boost.

Targets and Related Options:

  install                 Install headers and compiled library files to the
  =======                 configured locations (below).

  --prefix=<PREFIX>       Install architecture independent files here.
                          Default: C:\Boost on Windows
                          Default: /usr/local on Unix, Linux, etc.

  --exec-prefix=<EPREFIX> Install architecture dependent files here.
                          Default: <PREFIX>

  --libdir=<LIBDIR>       Install library files here.
                          Default: <EPREFIX>/lib

  --includedir=<HDRDIR>   Install header files here.
                          Default: <PREFIX>/include

  --cmakedir=<CMAKEDIR>   Install CMake configuration files here.
                          Default: <LIBDIR>/cmake

  --no-cmake-config       Do not install CMake configuration files.

  stage                   Build and install only compiled library files to the
  =====                   stage directory.

  --stagedir=<STAGEDIR>   Install library files here
                          Default: ./stage

Other Options:

  --build-type=<type>     Build the specified pre-defined set of variations of
                          the libraries. Note, that which variants get built
                          depends on what each library supports.

                              -- minimal -- (default) Builds a minimal set of
                              variants. On Windows, these are static
                              multithreaded libraries in debug and release
                              modes, using shared runtime. On Linux, these are
                              static and shared multithreaded libraries in
                              release mode.

                              -- complete -- Build all possible variations.

  --build-dir=DIR         Build in this location instead of building within
                          the distribution tree. Recommended!

  --show-libraries        Display the list of Boost libraries that require
                          build and installation steps, and then exit.

  --layout=<layout>       Determine whether to choose library names and header
                          locations such that multiple versions of Boost or
                          multiple compilers can be used on the same system.

                              -- versioned -- Names of boost binaries include
                              the Boost version number, name and version of
                              the compiler and encoded build properties. Boost
                              headers are installed in a subdirectory of
                              <HDRDIR> whose name contains the Boost version
                              number.

                              -- tagged -- Names of boost binaries include the
                              encoded build properties such as variant and
                              threading, but do not including compiler name
                              and version, or Boost version. This option is
                              useful if you build several variants of Boost,
                              using the same compiler.

                              -- system -- Binaries names do not include the
                              Boost version number or the name and version
                              number of the compiler. Boost headers are
                              installed directly into <HDRDIR>. This option is
                              intended for system integrators building
                              distribution packages.

                          The default value is 'versioned' on Windows, and
                          'system' on Unix.

  --buildid=ID            Add the specified ID to the name of built libraries.
                          The default is to not add anything.

  --python-buildid=ID     Add the specified ID to the name of built libraries
                          that depend on Python. The default is to not add
                          anything. This ID is added in addition to --buildid.

  --help                  This message.

  --with-<library>        Build and install the specified <library>. If this
                          option is used, only libraries specified using this
                          option will be built.

  --without-<library>     Do not build, stage, or install the specified
                          <library>. By default, all libraries are built.

Properties:

  toolset=toolset         Indicate the toolset to build with.

  variant=debug|release   Select the build variant

  link=static|shared      Whether to build static or shared libraries

  threading=single|multi  Whether to build single or multithreaded binaries

  runtime-link=static|shared
                          Whether to link to static or shared C and C++
                          runtime.


General command line usage:

    b2 [options] [properties] [targets]

  Options, properties and targets can be specified in any order.

Important Options:

  * --clean Remove targets instead of building
  * -a Rebuild everything
  * -n Don't execute the commands, only print them
  * -d+2 Show commands as they are executed
  * -d0 Suppress all informational messages
  * -q Stop at first error
  * --reconfigure Rerun all configuration checks
  * --durations[=N] Report top N targets by execution time
  * --debug-configuration Diagnose configuration
  * --debug-building Report which targets are built with what properties
  * --debug-generator Diagnose generator search/execution

Further Help:

  The following options can be used to obtain additional documentation.

  * --help-options Print more obscure command line options.
  * --help-internal B2 implementation details.
  * --help-doc-options Implementation details doc formatting.

...found 1 target...

第四步:根据功能的需要,输入安装指令,配置对应参数,等待其安装完成。

示例:我不需要 python, wave 等库 ,并且将编译文件存放值VS2022 文件夹中。

 .\b2 stage --without-python --without-mpi --without-wave --stagedir="D:\Boost\boost_1_83_0\VS2022"

回车,等待其安装完成。 

PS D:\Boost\boost_1_83_0> .\b2 stage --without-python --without-mpi --without-wave --stagedir="D:\Boost\boost_1_83_0\VS2
022"
Performing configuration checks

    - default address-model    : 64-bit [1]
    - default architecture     : x86 [1]
    - compiler supports SSE2   : yes [2]
    - compiler supports SSE4.1 : yes [2]
    - has synchronization.lib  : yes [2]
    - has std::atomic_ref      : no [2]
    - has statx                : no [2]
    - has statx syscall        : no [2]
    - has BCrypt API           : yes [2]
    - has init_priority attribute : no [2]
    - has stat::st_blksize     : no [2]
    - has stat::st_mtim        : no [2]
    - has stat::st_mtimensec   : no [2]
    - has stat::st_mtimespec   : no [2]
    - has stat::st_birthtim    : no [2]
    - has stat::st_birthtimensec : no [2]
    - has stat::st_birthtimespec : no [2]
    - has fdopendir(O_NOFOLLOW) : no [2]
    - has dirent::d_type       : no [2]
    - has POSIX *at APIs       : no [2]
    - cxx11_auto_declarations  : yes [2]
    - cxx11_constexpr          : yes [2]
    - cxx11_defaulted_functions : yes [2]
    - cxx11_final              : yes [2]
    - cxx11_hdr_mutex          : yes [2]
    - cxx11_hdr_tuple          : yes [2]
    - cxx11_lambdas            : yes [2]
    - cxx11_noexcept           : yes [2]
    - cxx11_nullptr            : yes [2]
    - cxx11_rvalue_references  : yes [2]
    - cxx11_template_aliases   : yes [2]
    - cxx11_thread_local       : yes [2]
    - cxx11_variadic_templates : yes [2]
    - has_icu builds           : no [2]
******

Visual Studio 2022 集成Boost 快速入门

第一步:创建一个空项目

 

第二步:配置项目属性 

项目配置中需要配置 包含目录  库目录 

 

其次配置 与 库目录 如下图所示:

 

 

Boost 库快速入门 

智能指针

#include <boost/scoped_ptr.hpp>
#include <iostream>

using namespace boost;
using namespace std;

class MyClass {
public:
    MyClass() {
        cout << "MyClass constructor"; }
    ~MyClass() {
         cout << "MyClass destructor"; }
};

int main() {
    // 声明智能指针
    scoped_ptr<MyClass> ptr(new MyClass);

    // 现在我们可以像使用常规指针一样使用 scoped_ptr
   // ...

   // 当 ptr 超出作用域时,MyClass 对象将被删除
    return 0;
}

温馨提示:scoped_ptr 的基本功能:自动释放其管理的资源。

知识拓展:在Boost库中,智能指针是一种非常有用的资源管理工具。

智能指针的“智能”是因为它们自动管理分配的对象,当不再需要这个对象时,智能指针会自动释放它。这种自动管理的特性可以帮助避免内存泄漏和去除手动释放内存的麻烦。

Boost库中的智能指针分为如下几大类:

1. boost::scoped_ptr:这是一种简单的智能指针,它保证在其作用域结束时删除对象。它不支持指针的共享,也不能把它放入C++标准库的容器类中。

2. boost::shared_ptr:这是一种引用计数的智能指针,支持复制操作以及与其它shared_ptr共享对象所有权。当最后一个引用的shared_ptr被销毁或者释放时,其所指向的对象会被删除。

3. boost::weak_ptr:这是一种辅助shared_ptr的智能指针,它观察shared_ptr但不会增加其引用计数。主要用于解决由shared_ptr引起的循环引用问题。

4. boost::unique_ptr:这是C++11标准中添加的一个智能指针,它代表独占所有权的语义。

5. boost::intrusive_ptr:对于那些引用计数是内嵌在用户对象中的情况,使用这种智能指针可以减少内存开销。

函数对象 

什么是函数对象?

在C++中,函数对象(又称为functors)是一种行为类似函数的对象。它们是一种通过类的实例来模拟函数的功能的方式。

优点:相比于普通函数,它可以包含局部状态信息。

Boost 对于函数对象拓展

Boost库中的函数对象包括一些通用的函数对象(如boost::bind,用于将函数或函数对象与其参数绑定),以及对STL中函数对象的扩展和补充。例如,Boost.Function库提供了函数包装器,可以存储任何可调用的目标(也就是可以用"()"调用的对象),这包括函数、函数指针和函数对象。

#include <boost/function.hpp>
#include <iostream>

using namespace std;
void print_num(int x) {
	cout << "int is:" << x <<endl;
}

int main() {
	boost::function<void(int)> f = print_num;
	f(5);
	return 0;
}

事件处理

事件处理涉及到创建和管理一个事件循环,监听输入或者触发事件,以及在事件发生时采取适当的行动。

Boost库中的主要工具是 Boost.Asio,你可以使用它来编写异步IO操作(如网络或定时器操作)。Boost.Asio 支持多线程处理和并发连接,以及包括超时、取消和sigaction行为的等待/通知。

下面是一个 Boost.Asio 的基本示例,展示如何使用它创建一个定时器:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

void print(const boost::system::error_code& /*e*/)
{
	std::cout << "Hello, world!" << std::endl;
}

int main()
{
	boost::asio::io_service io;
	boost::asio::deadline_timer timer(io, boost::posix_time::seconds(5));
	timer.async_wait(&print);
	io.run();

	return 0;
}

说明: 先创建了一个io_service和一个定时器。然后我们设定了定时器在5秒后触发,并且注册了一个可调用对象 (在这个例子里是print函数) 来作为事件处理器。然后我们启动了io_service的事件循环,当定时器到期时,print函数将被调用,输出 "Hello, world!"。

可以使用 Boost.Asio 实现更加复杂的事件处理操作,包括 Socket 编程、串行端口操作、信号处理,以及 Coroutines、Futures、Threads 等等。

字符串处理

Boost C++库提供了对字符串操作的强大支持,包括普通的字符串处理,采用可变参数模板实现的格式化字符串,正则表达式匹配和替换,以及UNICODE字符串的转换等。
 

#include <boost/algorithm/string.hpp>
#include <boost/format.hpp>
#include <boost/regex.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/locale.hpp>
#include <iostream>

using namespace std;


int main() {
	string str = " hello, world! ";
	cout << "str is:" << str << endl;
	// 字符串大写转换
	boost::to_upper(str);
	cout << "str is:" << str << endl;

	// 字符串格式化
	cout << boost::format("%1% %2% %3%") % 1 % 2 % 3;

	// 字符串正则表达式
	string s = "Boost Libraries";
	boost::regex expr{ "\\w+\\s\\w+" };
	cout << std::boolalpha << boost::regex_match(s, expr) << '\n';

	// 类型转换
	int x = boost::lexical_cast<int>("123");
	string s1 = boost::lexical_cast<string>(123);

	cout << "x is:" << x << endl;
	cout << "s1 is:" << s1 << endl;

	// unicode 编码
	std::locale loc = boost::locale::generator().generate("");

	std::string original = "é";
	std::cout << "Size: " << original.size() << std::endl;

	std::string normalized = boost::locale::normalize(original, boost::locale::norm_nfc, loc);
	std::cout << "Normalized Size: " << normalized.size() << std::endl;
	return 0;
}

1. Boost.StringAlgo库:Boost.StringAlgo库是一个字符串算法库,提供了非常强大的字符串处理功能,包括查找、比较、转换、修剪空格、分割、合并等操作。例如,你可以用trim函数去除字符串头尾的空格,split函数可以非常方便地切割字符串。

```cpp
std::string str=" hello, world! ";
boost::trim(str);
```

2. Boost.Format库:Boost.Format库提供了一个类似printf的可以带参数的字符串格式化函数。与printf的写法相比,Boost.Format的写法更直观,而且类型安全。

```cpp
std::cout << boost::format("%1% %2% %3%") %1 %2 %3;
```

3. Boost.Regex库:Boost.Regex库提供了正则表达式的支持,你可以用它执行复杂的字符串匹配和替换操作。比如你可以很方便地使用正则表达式判断一个字符串是否是Email地址,或者从一段文本中提取所有的URL等。

```cpp
boost::regex reg("(http|https)://[^/]*");
```

4. Boost.Lexical_Cast库:Boost.Lexical_Cast库可以将字符串转换为其他类型,或者将其他类型转换为字符串。它支持所有标准的C++类型,而且类型的转换是类型安全的。

```cpp
int x = boost::lexical_cast<int>("123");
std::string s = boost::lexical_cast<std::string>(123);
```

5. Boost.String库:Boost.String库是一个用于对std::string进行操作的库,它提供的功能包括分割、去除空格、替换、查找等。

```cpp
std::string s = "Hello, World!";
boost::to_upper(s);
```

6. Boost.Unicode库:Boost.Unicode库提供了对UNICODE字符串的操作,包括字符串的转换、大小写变换、比较和查找等。

```cpp
boost::locale::generator gen;
std::locale loc=gen("en_US.UTF-8");
std::locale::global(loc);
```

多线程

Boost 是一个用于 C++ 的可移植和高质量的库集合。Boost 提供了一系列用于多线程编程的库,包括 boost.thread、boost.asio等。

1. Boost.Thread:提供了一套用于多线程编程的通用框架,允许开发者创建和控制线程、互斥器、条件变量等。

2. Boost.Asio:用于网络和低级 I/O 编程,例如,开发者可以使用它创建多线程的服务器或客户端。

Boost中的多线程库主要关注提供低级线程处理功能,比如创建线程、同步、互斥等等。相比较于编程语言本身支持的多线程特性,Boost的多线程库提供了更多的细节控制,能够帮助开发者更好地构建复杂的多线程应用。

使用Boost进行多线程编程,可以大大简化代码并提高代码的稳定性和可移植性。但同样也需要开发者对多线程的原理和使用方式有一定的熟悉和理解,否则也可能引发一些难以排查的问题,如死锁、资源抢占等。

#include <boost/thread.hpp>
#include <iostream>

void workerFunc()
{
    boost::this_thread::sleep(boost::posix_time::seconds(1));
    std::cout << "Worker thread is executing." << std::endl;
}

int main(int argc, char* argv[])
{
    std::cout << "Main thread is running." << std::endl;

    // 创建并运行新的工作线程
    boost::thread workerThread(workerFunc);

    // 等待工作线程完成
    workerThread.join();

    std::cout << "Main thread is done." << std::endl;

    return 0;
}

说明:程序有主线程和一个工作线程,在运行时工作线程会延时一秒钟后打印输出,然后在它完成后,主线程会打印完成信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IGBT和碳化硅SiC模块,全球市场总体规模,前二十大厂商排名及市场份额

IGBT模块与碳化硅SiC模块全球市场总体规模 2023年全球IGBT模块市场规模大约为67亿美元&#xff0c;预计2029年将达到145亿美元&#xff0c;未来几年年复合增长率CAGR为13.6%。 2023年全球碳化硅SiC模块市场规模大约为16.9亿美元&#xff0c;预计2029年将达到92亿美元&#xff…

MySQL内连接和外连接及七种SQL JOINS的实现

1. 内连接 2.外连接左外连接&#xff1a;右外连接&#xff1a;满外连接&#xff1a; 3. SQL99语法实现多表查询 3.1 SQL99实现内连接 3.2 SQL99语法实现外连接 3.2.1 左外连接3.2.2 右外连接 3.2.3 满外连接 4.总结&#xff1a;七种SQL JOINS的实现 4.1 内连接 4.2 左…

【开发者工具中$0的作用】

在开发者工具中每当我们选中元素的时候 最右侧都会出现一个 $0 不知道大家有没有注意到 以下图为例 我选中最新排序的input框 输入$0 它就默认选中这个元素 我们可以在这里进行一些赋值等操作

OpenHarmony社区运营报告(2023年8月)

本月快讯 2023年8月3日&#xff0c;OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;发布了Beta2版本。OpenHarmony 4.0 Beta2在系统能力、应用框架、分布式通信、媒体功能、安全性等方面进行了全面升级。其中&#xff0c;ArkUI增强了界面组件能力&#x…

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a&#xff08;全部&#xff09; -l&#xff08;细节&#xff09; -h&#xff08;大小&#xff09; ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…

kafka增加磁盘或者分区,topic重分区

场景&#xff1a;kafka配置文件log.dirs增加了几个目录&#xff0c;但是新目录没有分区数据写入&#xff0c;所以打算进行重分区一下。 1.生成迁移计划 进入kafka/bin目录 新建 topic-reassign.json,把要重分区的topic按下面格式写。 { "topics": [{ …

NotionAI使用指南

一、NotionAI是什么 NotionAI是一款基于人工智能技术的知识管理工具&#xff0c;具有以下功能&#xff1a; 智能提醒: NotionAI可以根据用户的使用习惯和工作流程&#xff0c;智能提醒用户需要完成的任务和事项&#xff0c;帮助用户更好地规划和安排工作时间。智能分类: Noti…

洗鞋软件开发,洗鞋店小程序功能介绍;

洗鞋小程序开发搭建&#xff1b; 作为一个技术出身的设计人&#xff0c;今天我想跟大家一起来聊一聊目前市面上的洗鞋小程序&#xff0c;截止目前&#xff0c;我们闪站侠洗护软件已经累计服务用户2000 可以总结一下&#xff0c;目前市面上只要是宣称自己做互联网洗鞋的&#x…

MyBatis的使用

一.在创建Spring项目时引入MyBatis Framework和MySQL Driver; 二.下载插件&#xff1a;MyBatisX插件。 三.配置文件&#xff1a; 四.根据MyBatis写法完成数据库的操作 常规写法&#xff0c;包括两个文件&#xff1a; 1.接口&#xff1a;方法的声明&#xff08;给其他层调用&…

CAN/CANFD转WIFI设备解决近距离无线通讯问题

在现场应用中&#xff0c;各种情况都会出现&#xff0c;一些运动设备进行维护、下载、测试工作时&#xff0c;需要近距离无线收发CAN/CANFD报文。 港口应用中&#xff0c;控制室与吊机一没有办法通过有线连接&#xff0c;这时候就可以用无线来实现数据抓取。 例如某AGV小车厂…

java.lang.ClassCastException: android.os.BinderProxy cannot be cast to ...

项目开发遇到下面这个报错了&#xff01; 直接说原因&#xff0c;就是因为进程间不能直接传递对象&#xff0c;应该传递该Binder对象的映射&#xff08;代理对象&#xff09;&#xff0c;所以类型转换就出错了。如果在同一个进程中&#xff0c;直接传递对象没有关系&#xff0c…

手撕代码是程序员的基本功吗?

前言&#xff1a; 现在众多企业都要求在面试中用“手撕代码”来考验应聘者的代码能力&#xff0c;你觉得手敲代码是否可以体现真实的基础实力&#xff1f; 本期话题&#xff1a; 1、你觉得手撕代码是程序员的基本功吗&#xff1f; 2、为什么会用“手撕代码”来考验程序员能力&a…

vue3中v-html的使用时,出现<后面的字符串展示不出来

话不多说&#xff0c;直接上代码&#xff1a; 把<替换一下用&lt &#xff0c;这样就完美的解决问题了

神经网络 01(介绍)

一、神经网络 人工神经网络 (Artificial Neural Network&#xff0c;简写为ANN)也简称为神经网络 (NN)&#xff0c;是一种模仿生物神经网络结构和功能的 计算模型。人脑可以看做是一个生物神经网络&#xff0c;由众多的神经元连接而成。各个神经元传递复杂的电信号&#xff0c…

有趣不失风度:sdxl-emoji模型上线,在线生成苹果Memoji头像

苹果公司即将举行发布会&#xff0c;这是每年吸引全球关注的重大事件。在这期间&#xff0c;众多第三方软件也开始推出与苹果相关的应用程序。其中&#xff0c;sdxl-emoji是一款基于AI技术的绘图模型&#xff0c;已经上线&#xff0c;并且还开发了基于该模型的在线Demo。这款应…

springboot3 + java虚拟线程初体验

java虚拟线程介绍 虚拟线程是 Java 19 的 预览特性&#xff0c;估计会在Java 22被纳入 JDK 的正式版本中&#xff0c;会在2023年9月发布&#xff0c;目前springboot 3 已经提供了对虚拟线程的支持。 虚拟线程和平台线程主要区别在于&#xff0c;虚拟线程在运行周期内不依赖操…

【项目分析】仿linux0.11的操作系统内核

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于《操作系统 真象还原》及各大佬博客进行的&#xff0c;每个知识点的…

linux系统移植简要过程(移植bootloader引导加载程序---移植linux内核---制作根文件系统)

一.标准linux启动过程图 对于linux启动流程分析&#xff0c;我们需要移植bootloader引导加载程序---移植linux内核---制作根文件系统镜像文件&#xff1b; 二.为什么进行系统移植&#xff1f; 对于不同的硬件平台&#xff0c;linux系统启动流程大体相同&#xff0c;但是资源需求…

Multisim14.0仿真(十二)积分放大器

一、仿真原理图&#xff1a; 二、仿真效果图&#xff1a;

道路积水监测-路面积水监测系统

随着城市化的不断发展&#xff0c;城市面临着越来越多的交通挑战&#xff0c;其中之一就是道路积水问题。道路积水不仅影响了交通安全&#xff0c;还会引发交通堵塞、交通事故和城市洪涝等问题。因此&#xff0c;开展道路积水监测是十分必要的。 城市排水、供水、燃气、供热、桥…