当前位置: 首页 > news >正文

[笔记]深入解析Windows操作系统《四》管理机制

文章目录

  • 前言
  • 4.1注册表
    • 查看和修改注册表
    • 注册表用法
    • 注册表数据类型
    • 注册表逻辑结构
      • HKEY_CURRENT_USER
      • HKEY_USERS
    • 实验:观察轮廓加载和卸载
    • HKEY_CLASSES_ROOT
      • HKEY_LOCAL_MACHINE
    • 实验:离线方式或远程编辑BCD
      • HKEY_CURRENT_CONFIG
      • HKEY_PERFORMANCE_DATA


前言

本章讲述了Microsoft Windows操作系统中四种基本的机制,它们对于系统的管理和配置至关重要,它们是:

  • 注册表服务
  • 统一的背景进程管理器Windows管理设施
  • Windows诊断基础设施

4.1注册表

注册表在Windows系统的配置和控制方面扮演了一个非常关键的角色。它既是系统全局设置的存储仓库,也是每个用户的设置信息的存储仓库。虽然大多数人都把注册表想象成存储在磁盘上的静态数据,但是,在这一节中你将会看到,注册表也是Windows执行体和内核所维护的各种内存中数据结构的一个窗口。
我们首先从总体上介绍注册表的结构,并讨论一下它所支持的数据类型,简要地浏览一下Windows在注册表中维护的关键信息。然后,我们进一步讨论配置管理器( configurationmanager)的内部机理。这里的配置管理器是负责实现注册表数据库的执行体组件。我们将会涉及的话题有:注册表在磁盘上的内部结构、当一个应用程序请求配置信息时Windows如何获得相应的信息,以及Windows采用了哪些手段来保护这一关键的系统数据库。

查看和修改注册表

一般来说,你应该永远不需要直接编辑注册表:如果存储在注册表中的应用程序设置和系统设置需要手工修改,那么,它们应该有一个对应的用户界面来控制其修改。然而,正如你在本书中已经多次看到过的那样,有些高级设置和调试设置并没有相应的编辑用户界面。因此,Windows中包含了图形用户界面(GUI)和命令行工具,用于查看和修改注册表。

注册表用法

配置数据主要在四个时间点上被读取:

  • 在初始的引导过程中,引导加载器读入配置数据和引导设备驱动程序的列表,以便
    在初始化内核以前将它们加载到内存中。因为BCD(引导配置数据库,BootConfiguration Database)实际上存放在注册表储巢中,有人可能会争辩说,对注册表的访问发生在更早的时候(当引导管理器显示操作系统列表的时候)。
  • 在内核引导过程中,内核读取有关的设置信息,这些设置信息指定了应该加载哪些设备驱动程序,以及各个系统部件(比如内存管理器和进程管理器(process manager))该如何配置以及该如何调整系统的行为。
  • 在登录过程中,Explorer和其他的Windows组件从注册表中读取到每个用户的参数选择,包括网络驱动器字母映射、桌面墙纸、屏幕保护程序、菜单行为和图标的摆放,以及可能更重要的是,哪些启动程序需要激发起来,以及哪些文件最近被访问过。
  • 在应用程序启动过程中,它们读取系统全局范围的设置,比如所有可选安装的组件列表和许可数据,还读取一些针对每个用户的设置信息,可能包括菜单和工具栏的摆放,以及最近访问过的文档的列表。

然而,在其他时间点上也可以读取注册表,比如在响应注册表值或键的修改的时候。注册表提供了异步回调机制,这是优先采用的接收注册表变化通知的方法,尽管如此,仍然有些应用程序会通过不停查询的做法,来监视它们存放在注册表中的设置信息,以便自动地让更新过的设置信息起作用。然而,一般来说,在一个空闲的系统上,注册表不应该有任何活动,显然这样的应用程序违反了注册表的最佳实践原则。(Sysinternals的Process Monitor是一个追查这种活动和错误应用程序的极佳工具。)

在下面的情形下,注册表通常会被修改:

  • 虽然算不上是修改,但是,注册表的初始结构和许多默认设置是由一个原型版本的
    注册表来定义的,此原型版本随Windows的安装介质一起发行,在安装的时候被拷贝到一个新的系统中。
  • 应用安装工具创建了默认的应用程序设置,以及一些可反映出安装配置选项的设置信息。
  • 在设备驱动程序的安装过程中,即插即用系统在注册表中创建了一些设置,告诉I/O
    管理器如何启动此驱动程序;还创建了其他一些用于配置该驱动程序如何操作的设置(有关设备驱动程序如何被安装到系统中的更多信息,参见本书下册第8章“I/O系统”)。
  • 当你通过用户界面改变了应用程序或者系统设置时,这些改变通常被保存在注册表
    中。

注册表数据类型

注册表是一个数据库,其结构类似于磁盘卷的结构。注册表包含了键(key)和值( value)。键类似于磁盘的目录,而值则好比是磁盘上的文件。键是一个容器,可以包含其他的键(子键)或值。而值存储的是数据。最顶级的键是根键(root key)。在本节中,我们将相互交换着使用子键和键这两个词。

键和值两者都借用了文件系统的命名规范。因此,可以用名称“trade\mark”唯一标识一个存储在名为“trade”的键下面的、名为“mark”的值。此命名方案的一个例外是,每个键都有一个未命名的值。Regedit将未命名的值显示为“(默认)”。
注册表的值存储了不同种类的数据,它们可以是表4.1中所列出的12种类型之一。大多数注册表值是REG_DWORD、REG_BINARY或REG_Sz。REG_DWORD类型的值可以存储整数或者布尔值(开/关值);REG_BINARY值可以存储超过32位的整数值,或者诸如加密后的口令之类的原始数据;REG_Sz值存储字符串(当然是Unicode),可以表达诸如名称、文件名、路径和类型等元素。

REG_LINK类型特别值得注意,因为它让一个键可以透明地指向另一个键。当你搜索注册表而碰到一个链接时,路经搜索过程会在此链接的目标处继续进行。例如,如果\Root1\Link是一个指向\Root2\RegKey的REG_LINK值,并且RegKey包含了值RegValue,那么,可以有两条路径标识RegValue:\Root1\Link\RegValue和\Root2(RegKey\RegValue。正如下一小节将要解释的那样,Windows自己也显式地使用了注册表链接:六个注册表根键中有三个其实是链接,它们指向另三个非链接的根键中的子键。
在这里插入图片描述

注册表逻辑结构

利用注册表中存储的数据,你可以画出注册表的组织结构。总共有6个根键(你不能加入新的根键,也不能删除已有的根键)可以存储信息,如表4.2所示。
在这里插入图片描述
为什么根键的名称都以“H”开头?因为根键的名称代表了指向键(KEY)的Windows句柄(H)。正如第1章“”中所提及的那样,HKLM是用于HKEY_LOCAL_MACHINE的缩写。表4.3列出了所有的根键以及它们的缩写。下面的几小节详细地解释了这六个根键中每一个根键的内容和用途。
在这里插入图片描述

HKEY_CURRENT_USER

HKCU根键包含了与当前本地登录用户的参数和软件配置有关的数据。它指向当前登录用户的用户轮廓,位于硬盘上的\Users<用户名>\Ntuser.dat中(要想知道根键是如何被映射到硬盘文件的,请参见本章后面的“注册表的内部机理”一节)。无论何时当一个用户的轮廓信息被加载的时候(比如在登录时候,或者当一个服务进程运行在某个特定用户名的环境中时),HKCU就会被创建出来,映射到HKEY_USERS下该用户的键上。表4.4列出了HKCU下面的一些子键。

在这里插入图片描述在这里插入图片描述

HKEY_USERS

HKU为系统中每个加载的用户轮廓和用户类注册数据库包含了一个子键。它也包含一个名为HKU.DEFAULT的子键;这是一个链接,指向该系统的轮廓(对于那些运行在本地系统账户下的进程,它们会用到该轮廓信息;本章后面的“服务”一节中更加详细地讲述了有关该轮廓的信息)。譬如,这是Winlogon使用的轮廓,所以,改变了该轮廓中的桌面背景设置,就可以在登录屏幕上体现出来。当一个用户第一次登录到一个系统中,并且她的账户不依赖于一个漫游域轮廓(也就是说,用户的轮廓是在域控制器的指示下,从一个中心网络位置上获得的)的时候,系统以%SystemDrive%\Users\Default下存放的轮廓为基础,为她的账户创建一个轮廓。
系统将这些轮廓存储在哪里呢?此位置是由注册表值HKLM\Software\Microsoft\WindowsNT\CurrentVersion\ProfileList\ProfilesDirectory来定义的,其默认设置是%SystemDrive%\Users。ProfileList键也存放了一个系统上所有出现过的轮廓的列表。针对每个轮廓的信息存放在一个对应的子键下面,其名称反映了该轮廓所对应账户的安全标识符(SID,Security ldentifier)(有关SID的更多信息,参见第6章“安全性”)。在每个轮廓的键所存储的数据中,sid值中存放的是该账户SID的二进制表示,而在ProfilelmagePath目录中存放的则是该轮廓所对应的储巢( hive,参见本章后面的“储巢”一节中的介绍)的硬盘路径。Windows在用户轮廓管理对话框中显示了一个系统中存储的轮廓列表,如图4.1所示。你只需在控制面板的System小程序的AdvancedSystem Settings中的Advanced标签视图的User Profiles部分单击Setting,就可以看到该对话框。

在这里插入图片描述

实验:观察轮廓加载和卸载

通过Runas命令,用一个当前并未登录到机器上的账户来激发一个进程,就可以看到一个轮廓先被加载到注册表中,然后又被卸载出去的过程。当新进程正在运行的时候,运行Regedit,你可在HKEY_USERS下注意到加载进来的轮廓键。在终止了此进程以后,在Regedit中按一下FS键以便刷新视图,此轮廓应该已经不在了。

HKEY_CLASSES_ROOT

HKCR包含了三种类型的信息:文件扩展名关联、COM类注册信息,以及UAC(User AccountControl)虚拟化注册表根。(关于UAC的更多信息,请参见第6章。)针对每个已注册的文件扩展名,都有一个对应的键。大多数键中包含一个REG_Sz值,指向HKCR中的另一个键,此键中包含了与该扩展名所代表的文件类相关联的信息。
例如,HKCR.xls指向了在另一个键(比如HKCU.xls\Excel.Sheet.8)中包含的有关MicrosoftExcel文件的信息。HKCR中其他的键包含了已注册到当前系统上的COM对象的详细配置信息。UAC虚拟化注册表位于VirtualStore键下,它与HKCR中保存的其他种类的数据没有关系。

HKEY_CLASSES_ROOT下的数据有以下两个来源途径:

  • 针对每个用户的类注册数据:位于HKCU\SOFTWARE\Classes下(被映射至磁盘文件
    \Users<username>\AppData\Local\Microsoft\Windows\Usrclass.dat)。
  • 整个系统范围的类注册数据:位于HKLM\SOFTWARE\Classes下。

针对每个用户的注册数据为什么要与系统全局范围的注册数据分开呢,其原因在于,这样做以后,可漫游的轮廓就能够包含这些定制的用户数据。它同时也关闭了一个安全漏洞:非特权用户无法改变或者删除系统全局版本HKEY_CLAsSES_ROOT中的键,因此也就无法影响到系统中应用程序的操作。非特权用户和应用程序可以读取系统全局范围的数据,也可以在系统全局数据中增加新的键和值(在它们的用户数据中这些键和值也被镜像过来了),但是它们只能修改其私有数据中已有的键和值。

HKEY_LOCAL_MACHINE

根键HKLM包含了所有系统全局范围的配置子键:BCDO0000000、COMPONENTS(根据需要动态加载)、HARDWARE、SAM、SECURITY、SOFTWARE和SYSTEM。

HKLM\BCDO0000000子键包含了引导配置数据库(BCD)信息,这是作为一个注册表储巢被加载进来的。该数据库代替了以前在Windows Vista以前使用的Boot.ini文件,为每次安装Windows的引导配置数据增加了极大的灵活性和隔离性。(有关BCD的更多信息,请参考本书下册第13章“启动和停机”。)

在BCD中的每一项,比如一次安装的Windows,或者针对这一次安装的命令行设置,都保存在Objects子键下,它或者是一个可通过GUID来引用的对象(针对引导项的情形),或者是一个称为元素(element)的数值子键。这些原始元素,绝大多数在MSDN Library的BCD参考材料部分有文档描述,它们定义了各种命令行设置或者引导参数。与每个元素子键相关联的值对应于相应的命令行标记或者引导参数的值。

BCDEdit命令行工具使得你可以通过元素和对象的符号名称来修改BCD。它也提供了关于所有可用的引导选项的大量帮助信息;不幸的是,它只能工作在本地系统环境中。因为注册表可以被远程打开,也可以从储巢文件中导入进来,所以,你可以利用注册表编辑器来修改或读取一台远程计算机的BCD。下面的实验显示了你可以利用注册表编辑器来打开内核调试功能。

实验:离线方式或远程编辑BCD


子键HKLM\COMPONENTS包含的信息与CBS(Component Based Servicing,基于组件的服务)栈有关。此CBSs栈包含了各种文件和资源,它们是Windows安装映像(用于自动化的安装包或者OEM预安装包)的一部分,或者是一次活动的Windows安装的一部分。为了服务目的而定义的CBS AP利用此注册表键中的信息来标识出已安装的组件和它们的配置信息。无论何时当单独地或者成组地安装、更新或者移除组件(分别称为单元unit或包package)时,这些信息都会被用到。因为该键可能会非常大,所以,为了优化系统资源,如果CBs栈在服务一个请求时,它只是被动态地加载到系统中,然后根据需要被卸载。

子键HKLM\HARDWARE维护了有关当前系统中的遗留硬件,以及一些从硬件设备至驱动程序的映射关系的描述信息。在现代系统上,只有一些外设,比如键盘、鼠标和ACPIBIOS数据,有可能在这里能找得到。设备管理器工具(从控制面板中运行System小程序,然后单击DeviceManager〉使你可以查看注册表硬件信息,这些信息只是简单地从HARDWARE键中读取出来的值(尽管它主要使用了HKLM\SYSTEM\CurrentControlSet\Enum树)。

HKLM\SAM存放了本地账户和组的信息,比如用户口令、组定义和域关联信息。作为域控制器运行的Windows Server系统将域账户和组的信息存放在活动目录(Active Directory)中。所谓活动目录,是一个用于存放域范围的各种设置和信息的数据库(本书并没有介绍活动目录)。在默认情况下,SAM键上的安全描述符被配置成:即使管理员账户也不能访问。
HKLM\SECURITY存放了系统全局范围的安全策略和用户权限分配。HKLM\SAM被链接到HKLM\SECURITY\SAM下的SECURITY子键。在默认情况下,你不能查看HKLM\SECURITY或者HKLM\SAM\SAM键的内容,因为这些键的安全设置只允许System账户才能访问(本章后面将会极其详细地讨论System账户)。如果你想要检查这些键的话,你可以改变此安全描述符,以便允许管理员组中的用户可以读访问这些键,或者,你可以利用PsExec,在本地系统账户中运行Regedit。然而,仅仅看一眼这些数据是不会有多大用处的,因为这些数据是没有文档说明的,其中的口令已经通过一个单向映射关系加了密,也就是说,你是无法从加密形式得到一个口令的。

HKLM\SOFTWARE是Windows存储系统全局配置信息的地方,这些配置信息在系统引导的时候并不需要。而且,第三方应用程序也将它们的系统全局范围的设置存放在这里,比如应用程序文件和目录的路径、授权许可信息和过期日期信息。
HKLM\SYSTEM包含了引导系统所需要的全局配置信息,比如该加载哪些设备驱动程序、该启动哪些服务。因为这些信息对于启动系统是至关重要的,所以,Windows也在该键下维护了这份信息的一份拷贝,称为“last known good control set(最后已知的好控制集)”。由于维护了这样一份拷贝,因此,万一对当前控制集做了修改以后,系统无法正常引导了,管理员可以选择以前的一份正常工作的控制集。关于Windows何时声明当前控制集是“好”的,更详细的信息请参见本章“接受当前引导和最后已知的好控制集”一节。

HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG只是一个链接,指向HKLM\SYSTEM\CurrentControlSet\ HardwareProfiles\Current下的当前硬件轮廓。Windows不再支持硬件轮廓,但是该键仍然存在,以便支持那些遗留下来的、可能依赖于该键的应用程序。

HKEY_PERFORMANCE_DATA

在Windows上,注册表也是访问性能计数器值的机制,无论这些计数器是从操作系统组件中来的,还是从服务器应用程序中来的。通过注册表来访问性能计数器,一个额外的好处是,远程性能监视工作几乎可以“免费”完成,因为注册表很容易通过常规的注册表API就可以访问到。
只需打开一个名为HKEY_PERFORMANCE_DATA的特殊的键,并且查询该键下面的值,就可以直接访问注册表性能计数器信息。如果在注册表编辑器中查寻此键,是无法找到的;这个键只能通过编程的方式,利用Windows注册表函数,例如RegQueryValueEx,才可以访问到。性能信息实际上并没有存储在注册表中,注册表函数利用该键来获得从性能数据提供者那里提供的信息。
也可以利用性能数据帮助器(PDH,Performance Data Helper)API(Pdh.dIl)中的性能数据帮助器函数来访问性能计数器信息。图4.2显示了在访问性能计数器信息过程中涉及的组件。

在这里插入图片描述

相关文章:

[笔记]深入解析Windows操作系统《四》管理机制

文章目录 前言4.1注册表查看和修改注册表注册表用法注册表数据类型注册表逻辑结构HKEY_CURRENT_USERHKEY_USERS 实验&#xff1a;观察轮廓加载和卸载HKEY_CLASSES_ROOTHKEY_LOCAL_MACHINE 实验:离线方式或远程编辑BCDHKEY_CURRENT_CONFIGHKEY_PERFORMANCE_DATA 前言 本章讲述了…...

【小沐学Python】Python实现在线英语翻译功能

文章目录 1、简介2、在线翻译接口2.1 Google Translate API2.2 Microsoft Translator API2.2.1 开发简介2.2.2 开发费用2.2.3 开发API 2.3 百度翻译开放平台 API2.3.1 开发简介2.3.2 开发费用2.3.3 开发API 2.4 Tencent AI 开放平台的翻译 API2.4.1 开发简介2.4.2 开发API 2.5 …...

k8s中pod使用详解

一、前言 在之前k8s组件一篇中,我们谈到了pod这个组件,了解到pod是k8s中资源管理的最小单位,可以说Pod是整个k8s对外提供服务的最基础的个体,有必要对Pod做深入的学习和探究。 二、再看k8s架构图 为了加深对k8s中pod的理解,再来回顾下k8s的完整架构 三、pod特点 结合上面这…...

案例说明:vue中Element UI下拉列表el-option中的key、value、label含义各是什么

可以简单理解为&#xff1a;label 是给用户展示的东西&#xff0c;value是前端往后端传递的真实值 <template><div><el-page-header back"goBack" content"注册"></el-page-header><el-divider></el-divider><el-…...

idea创建javaweb项目步骤超详细(2022最新版本)

目录 前言必读 一、新建文件 1.在idea里面点击文件-新建-项目 2.新建项目-更改名称为自己想要的项目名称-创建 3.右键自己建立的项目-添加框架支持&#xff08;英文版是Add Framework Support...&#xff09; 4.勾选Web应用程序-确定 5.建立成功界面 二、配置tomcat 6.…...

「SAP ABAP」OPEN SQL(六)【DELETE语句 | MODIFY语句】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…...

SpringCloud --- Feign远程调用

一、RestTemplate问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&#xff0c;编程体验不统一参数复杂URL难以维护 Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;GitHub - OpenFeign/feign:…...

基于单片机的数字频率计设计

数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号&#xff0c;方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试…...

我看看哪个靓仔还没把Github Copilot用起来?

本人经常分享有价值的生产力工具、技术、好物与书籍&#xff0c;可关注同名公众&#x1f42d;并设为&#x1f31f;星标&#xff0c;第一时间获得更新 Github Copilot 是一个AI编程助手&#xff0c;其使用 OpenAI CodeX 在你的编辑器中实时建议代码或给你实现整个功能。 视频版介…...

C++系列一: C++简介

C入门简介 1. C语言的特点2. C编译器3. 第一个 C 程序4. 总结&#xff08;手稿版&#xff09; C 是一种高级编程语言&#xff0c;是C语言的扩展和改进版本&#xff0c;由Bjarne Stroustrup于1983年在贝尔实验室为了支持C语言中的面向对象编程而创建。C 既能够进行底层的系统编程…...

信通初试第一:无科研无竞赛一战上岸上海交大819学硕感悟

笔者来自通信考研小马哥23上交819全程班学员 信通初试第一&#xff1a;无科研无竞赛一战上岸上海交大819学硕感悟 原创2023-04-27 11:04通信考研小马哥 笔者来自通信考研小马哥23上交819全程班学员 本人情况&#xff1a; 本人是19届交本&#xff0c;本科成绩很差&#xff0c;…...

Spring —— Spring Boot 配置文件

JavaEE传送门 JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 创建和使用 目录 Spring Boot 配置文件Spring Boot 配置文件格式properties配置文件properties 基本语法properties 缺点 yml 配置文件yml 基本语法yml 配置不同类型数据及 nullyml 配置对象…...

Python 网络爬虫与数据采集(一)

Python 网络爬虫与数据采集 第1章 序章 网络爬虫基础1 爬虫基本概述1.1 爬虫是什么1.2 爬虫可以做什么1.3 爬虫的分类1.4 爬虫的基本流程1.4.1 浏览网页的流程1.4.2 爬虫的基本流程 1.5 爬虫与反爬虫1.5.1 爬虫的攻与防1.5.2 常见的反爬与反反爬 1.6 爬虫的合法性与 robots 协议…...

2023年6月DAMA-CDGP数据治理专家认证请尽快报名啦!

目前6月DAMA-CDGP数据治理认证考试开放报名地区有&#xff1a;北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中&#xff0c;打算参加6月考试的朋友们可以抓紧时间报名啦&#xff01;&#xff01;&#xff01; 5月初&#xff0c;…...

STM32+esp8266,让你的STM32开发板连接网络-----esp8266

分享一下&#xff0c;STM32开发板连接网络的第一种方法&#xff1a;连接esp8266。 esp8266与STM32利用串口通信连接&#xff0c;esp8266连接网络&#xff0c;把收到的数据通过串口的方式传输给STM32&#xff0c;之后STM32接收到消息做出对应的反应。 使用到的开发板如图&…...

分布式缓存的基础知识

前言 现代互联网应用中&#xff0c;分布式缓存成为了必不可少的一环。它通过在多台服务器之间共享数据&#xff0c;避免了网络通信的高延迟和低带宽的性能问题。本文将介绍分布式缓存的基础知识&#xff0c;包括缓存机制、常见的缓存策略以及缓存的使用场景。 缓存机制 缓存是…...

Vue3通透教程【七】生命周期函数

文章目录 🌟 写在前面🌟 生命周期钩子函数🌟 组合式API生命周期🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选…...

《“裸奔”时代的网络防护:如何保护你的隐私和数据安全》

一、引言 在此时此刻&#xff0c;你可能正在使用电子设备阅读这篇文章。你可能在一天中的大部分时间都在与网络世界互动&#xff0c;无论是通过电子邮件、社交媒体、在线购物&#xff0c;还是通过流媒体服务消费内容。然而&#xff0c;你有没有考虑过&#xff0c;当你在享受这些…...

mapreduce优化方法

1&#xff09;数据输入&#xff1a; 1&#xff09;合并小文件&#xff1a;在执行mr任务前将小文件进行合并&#xff0c;大量的小文件会产生大量的map任务&#xff0c;增大map任务装载次数&#xff0c;而 任务的装载比较耗时&#xff0c;从而导致 mr 运行较慢。 2&#xff09;…...

06-nexus搭建Docker私仓

使用nexus创建docker私有仓库 Nexus的安装请参考该文档&#xff1a;https://www.yuque.com/tmfl/pom/uumrx2 Nexus配置Docker仓库步骤&#xff1b; nexus默认docker是失效的&#xff0c;需要 在security --> Realms&#xff0c;将docker配置成Active在 Repository 的 Blo…...

【RS专题】eval层混淆和逻辑完整分析 - 扣代码终结篇

如有侵权、联系本人下架 首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为412,第二次为200。如果是200就表示正常 以下为某 yjj RS5请求成功的结果,具体流程请看完文章,源-码–答-案也会在末 尾公 布 前面是定义了非常多和函数,一直往下拉,直到出现v…...

基于matlab使用主动声纳系统进行水下目标检测

一、前言 此示例演示如何模拟具有两个目标的主动单基地声纳方案。声纳系统由各向同性投影仪阵列和单个水听器元件组成。投影仪阵列呈球形。反向散射信号由水听器接收。接收到的信号包括直接和多路径贡献。 二、水下环境 在浅水环境中&#xff0c;声源和目标之间存在多个传播路径…...

[socket]hpsocket-pull模式

为什么要用pull模式呢&#xff0c;我不是所谓的别人说pull效率高&#xff0c;是因为包头的长度 int不是固定长度。服务器IO-HPSocket PUSH&#xff1a;收到数据立马触发OnReceive&#xff0c;由开发人员自己实现拆包和缓冲区的管理逻辑。 PULL&#xff1a;收到数据立马触发OnR…...

数据分析师 ---- SQL强化(3)

数据分析师 ---- SQL强化(3) 题目&#xff1a;每个月Top3的周杰伦歌曲 从听歌流水中找到18-25岁用户在2022年每个月播放次数top 3的周杰伦的歌曲 输入例子&#xff1a; drop table if exists play_log; create table play_log (fdate date,user_id int,song_id int ); inser…...

微信小程序商品分类页最佳实践

首先我们来分析下UI小妹发来的产品原型图&#xff1a; 微信小程序商品分类页需要实现 1.单击左边的商品类目&#xff0c;右侧实现联动跳转到对应商品类目标题&#xff1b; 2.触屏拖动右侧商品列表&#xff0c;右侧跳转到对应商品类目&#xff1b; 2.分析需求我们可以把屏幕分…...

正则化解决过拟合

本片举三个例子进行对比&#xff0c;分别是&#xff1a;不使用正则化、使用L2正则化、使用dropout正则化。 首先是前后向传播、加载数据、画图所需要的相关函数的reg_utils.py&#xff1a; # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as plt impor…...

在 Windows 上安装 Helm包

一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起学习在 Windows 上安装 Helm包。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、 Helm是什么 Helm是Kubernetes的包管理工具&#xff0c;类似于centos的yum&#xff0c;能够快速查找、下载和安装…...

Clion开发STM32之OTA升级模块(一)

什么是OTA 百度百科解释个人理解&#xff1a;就是不通过烧录的方式&#xff0c;通过串口、网口、无线对主板运行的程序进行升级。减少后期的一个维护迭代程序的一个成本。 STM32的OTA升级模块的一个设计 程序启动的一个框架流程图(大致流程) FLASH的一个划分框图 BootLoader…...

Java供应链安全检测SDL方法论

近些年,开源程序陆续爆出安全漏洞,轻则影响用户体验,重则业务应用沦陷。大量的业务应用以及每天数千次的迭代,使得自动检测和治理第三方开源程序成为企业安全建设的必要一环。如何来建设这一环呢?SCA(软件成分分析) 概念 什么是SCA? 源代码或二进制扫描的软件成分分析 什…...

Magic-API的部署

目录 概述简介特性 搭建创建元数据表idea新建spring-boot项目pom.xmlapplication.properties打包上传MagicAPI-0.0.1-SNAPSHOT.jar开启服务访问 magic语法 概述 简介 magic-api是一个基于Java的接口快速开发框架&#xff0c;编写接口将通过magic-api提供的UI界面完成&#xf…...