软考系统架构师 — 4 嵌入式软件

目录

4.1 考点分析

4.2 嵌入式微处理器

4.2.1嵌入式微处理器体系结构

5.2.2 嵌入式微处理器分类

4.2.3 多核处理器

4.3 嵌入式软件

4.4 嵌入式系统

4.4.1 嵌入式系统的组成

4.4.2 嵌入式系统分类

4.4.3 嵌入式数据库系统DBMS

4.4.4 嵌入式操作系统OS

4.4.5 嵌入式实时系统

4.5 嵌入式软件设计


4.1 考点分析

考试分值:本章节偶尔会考到,一般也是占3-5分。

考点内容: 本章节之前考的时候就一直超纲,本来以为改版后会增加内容,谁知道第二版教材2.4关于嵌入式的描述十分简略,只介绍了基本概念,所以大家还是以我们视频为主了,但真的考到,估计还是会有50%超纲内容,只能通过每年直播讲题补充。主要变化在嵌入式系统组成和特点说法改变。

4.2 嵌入式微处理器

4.2.1嵌入式微处理器体系结构

(1)冯诺依曼结构:传统计算机采用冯诺依曼(Von Neumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。冯•诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。

  • 采用单一的地址及数据总线,程序指令和数据的宽度相同。
  • 处理器执行指令时,先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费儿个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。

(2)哈佛结构:哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。

  • 与两个存储器相对应的是系统中的两套独立的地址总线和数据总线。
  • 这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。

5.2.2 嵌入式微处理器分类

根据嵌入式微处理器的字长宽度:可分为4位、8位、16位、32位和64位。一般把16位及以下的称为嵌入式微控制器(Embedded Micro Controller),32位及以上的称为嵌入式微处理器。

根据系统集成度划分:可分为两类,一种是微处理器内部仅包含单纯的中央处理器单元,称为一般用途型微处理器:另一种则是将CPU、ROM、RAM及I/O等部件集成到同一个芯片上,称为单芯片微控制器(Single Chip Microcontroller)。

根据用途分类:一般分为嵌入式微控制器MCU、嵌入式微处理器MPU、嵌入式数字信号处理器DSP、嵌入式片上系统SOC等。

根据嵌入式微控制器MCU典型代表是单片机,其片上外设资源比较丰富,适合于控制。MCU芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化体积大大减小,从而使功耗和成本下降、可靠性提高,其片上外设资源一般较丰富,适合于控制,是嵌入式系统工业的主流。

  • 嵌入式微处理器MPU由通用计算机中的CPU演变而来。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低可靠性高的优点。目前常见的有ARM、MIPS、POWER PC等。
  • 嵌入式数字信号处理器DSP是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的CPU还快10-50倍。在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。
  • 嵌入式片上系统SOC是追求产品系统最大包容的集成器件。SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

4.2.3 多核处理器

多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单一的处理器插槽中。多核与多CPU相比,很好的降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以。

2个或多个内核工作协调实现方式。

  • 对称多处理技术SMP:将2颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源。
  • 非对称处理技术AMP:2个处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的计算任务。多核CPU的调度。

多核CPU环境下进程的调度算法一般有全局队列调度和局部队列调度两种。

  • 全局队列调度:是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU空闲时,操作系统就从全局任务等待队列中选取就绪任务开始执行,CPU核心利用率高。
  • 局部队列调度:是操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,就从该核心的任务等待队列中选取适当的任务执行,优点是无需在多个cPU之间切换。

【真题】嵌入式处理器是嵌入式系统的核心部件,一般可分为嵌入式微处理器(MPU)、微控制器(MCU、数字信号处理器(DSP和片上系统SOC)。以下叙述中,错误的是(A)。

A.MPU在安全性和可靠性等方面进行增强,适用于运算量较大的智能系统。

B.MCU典型代表是单片机,体积小从而使功耗和成本下降。

C.DSP处理器对系统结构和指令进行了特殊设计,适合数字信号处理。

D.SOC是一个有专用目标的集成电路,其中包括完整系统并有嵌入式软件的全部内容。

【真题】以下关于多核处理器的说法中,不正确的是(B)。

A.采用多核处理器可以降低计算机系统的功耗和体积。

B.SMP、BMP和AMP是多核处理器系统通常采用的三种结构,采用哪种结构与应用场景相关,而无须考虑硬件的组成差异。

C.在多核处理器中,计算机可以同时执行多个进程,而操作系统中的多个线程也可以并行执行。

D.多核处理器是将两个或更多的独立处理器封装在一起,集成在一个电路中。

解析:A 选项多核可合理分配任务,降低功耗、减小体积;B 选项多核结构选择既与应用场景有关,也受硬件组成差异影响,该项说不考虑硬件组成错误;C 选项多核有多个核心,可使多进程、多线程并行执行;D 选项多核处理器是将多个独立处理器封装集成在一个电路中。所以不正确的是 B 。

4.3 嵌入式软件

嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。嵌入式软件分类:

  • 系统软件:控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
  • 应用软件:嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特定的应用领域,如飞行控制软件、手机软件、地图等。
  • 支撑软件:辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具交叉编译器等。

板级支持包(BSP):是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支特,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。BSP主要包括两个方面的内容:导加载程序Bootloader和设备驱动程序。具体功能包括:

  • 单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持
  • 为操作系统提供设备驱动程序和系统中断服务程序
  • 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境
  • 初始化操作系统,为操作系统的正常运行做好准备。

BootLoader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:

  • 片级初始化:主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
  • 板级初始化:通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含有软件和硬件在内的初始化过程。
  • 加载内核(系统级初始化):将操作系统和应用程序的映像从s纨存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。

在一个嵌入式系统当中,操作系统是可能有也可能无的。但无论如何,设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。

对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能。

  • 硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。
  • 硬件关闭:将硬件设置为关机状态。
  • 硬件停用:暂停使用这个硬件。
  • 硬件启用:重新启用这个硬件。
  • 读操作:从硬件中读取数据。
  • 写操作:往硬件中写入数据。

4.4 嵌入式系统

4.4.1 嵌入式系统的组成

嵌入式系统的组成一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。

(1)嵌式处理器。由于嵌入式系统一般是在恶劣的环境条件下工作,与一般处理器相比,嵌入式处理器应可抵抗恶劣环境的影响,比如高温、寒冷、电磁、加速度等环境因素。为适应恶劣环境,嵌入式处理器芯片除满足低功耗、体积小等需求外,根据不同环境需求,其工艺可分为民用、工业和军用等三个档次。

(2)相关支撑硬件。相关支撑硬件是指除嵌入式处理器以外的构成系统的其他硬件,包括存储器、定时器、总线、1O接口以及相关专用硬件。

(3)嵌入式操作系统。嵌入式操作系统是指运行在嵌入式系统中的基础软件,主要用于管理计算机资源和应用软件。与通用操作系统不同,嵌入式操作系统应具备实时性、可剪裁性和安全性等特征。

(4)支撑软件。支撑软件是指为应用软件开发与运行提供公共服务、软件开发、调试能力的软件,支撑软件的公共服务通常运行在操作系统之上,以库的方式被应用软件所引用。

(5)应用软件。应用软件是指为完成嵌入式系统的某一特定目标所开发的软件。

4.4.2 嵌入式系统分类

根据不同用途可将嵌入式系统划分为嵌入实时系统和嵌入非实时系统两种,而实时系统又可分为强实时系统和弱实时系统。如果从安全性要求看,嵌入式系统还可分为安全攸关系统和非安全攸关系统。嵌入式系统分为硬件层、抽象层、操作系统层、中间件层和应用层等5层。

(1)硬件层。硬件层主要是为嵌入式系统提供运行支撑的硬件环境,其核心是微处理器、存储器(ROM、SDRAM、Flash等)、I/O接口(A/D、D/A、I/O等)和通用设备以及总线、电源、时钟等。

(2)抽象层。在硬件层和软件层之间为抽象层,主要实现对硬件层的硬件进行抽象,为上层应用(操作系统〉提供虚拟的硬件资源:板级支持包(BSP)是一种硬件驱动软件,它是面向硬件层的硬件芯片或电路进行驱动,为上层操作系统提供对硬件进行管理的支持。

(3)操作系统层。操作系统层主要由嵌入式操作系统、文件系统、图形用户接口、网络系统和通用组件等可配置模块组成。

(4)中间件层。中间件层一般位于操作系统之上,管理计算机资源和网络通信,中间件层是连接两个独立应用的桥梁。

(5)应用层。应用层是指嵌入式系统的具体应用,主要包括不同的应用软件。

4.4.3 嵌入式数据库系统DBMS

一个完整的EDBMS由若干子系统组成,包括主数据库、同步服务器、嵌入式数据库和连接网络等几个子系统。嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高效的事务处理和数据的安全性等关键问题。

4.4.4 嵌入式操作系统OS

与通用操作系统相比,EOS主要有以下特点:

(1)微型化。E0S的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存,因此,E0S必须做得小巧,以占用尽量少的系统资源。

(2)代码质量高。在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽量精简。

(3)专业化。嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同的应用领域而专门设计的。因此,E0S要有很好适应性和移植性,还要支持多种开发平台。

(4)实时性强。嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此,实时性成为0S的又一特点。

(5)可裁减和可配置。应用的多样性要求EOS具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁减,以适应微型化和专业化的要求。

4.4.5 嵌入式实时系统

嵌入式实时系统:一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。

  • 可预测性:指系统在运行之前,其功能、响应特性和执行结果是可预测的:
  • 确定性:指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果。

实时操作系统RTOS的特点:当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行。因而,提供及时响应和高可靠性是其主要特点。

实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

实时操作系统的特征:

(1)高精度计时系统:计时精度是影响实时性的个重要因素,在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。

(2)多级中断机制:一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的侧可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。

(3)实时调度机制:实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。

【真题】以下关于RTOS(实时操作系统)的叙述中,不正确的是(A)。

A.RTOS不能针对硬件变化进行结构与功能上的配置及裁剪。

B.RTOS可以根据应用环境的要求对内核进行裁剪和重配。

C.RToS的首要任务是调度一切可利用的资源来完成实时控制任务。

D.RTOS实质上就是一个计算机资源管理程序,需要及时响应实时事件和中断。
解析:RTOS(实时操作系统)具备灵活性,能针对硬件变化在结构与功能上进行配置及裁剪,以适配不同硬件环境,A 选项说法错误;它可依据应用环境要求对内核裁剪和重配 ,B 选项正确;其首要任务是调度资源完成实时控制任务,C 选项正确;RTOS 本质是计算机资源管理程序,需及时响应实时事件和中断,D 选项正确。

【真题】以下描述中,(B)不是嵌入式操作系统的特点。

A.面向应用,可以进行裁剪和移植。

B.用于特定领域,不需要支持多任务。

C.可靠性高,无需人工干预独立运行,并处理各类事件和故障。

D.要求编码体积小,能够在嵌入式系统的有效存储空间内运行。
解析:嵌入式操作系统面向应用,可裁剪移植,A 选项是其特点;嵌入式操作系统常应用于特定领域,很多情况下需要支持多任务,如智能设备需同时处理多种功能任务,B 选项不是其特点;它可靠性高,能独立运行处理各类事件和故障 ,C 选项是其特点;因嵌入式系统存储空间有限,要求编码体积小,D 选项是其特点。

4.5 嵌入式软件设计

交叉编译:嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。

交叉调试:嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。

在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。

【真题】以下关于嵌入式系统开发的叙述,正确的是(C)。

A.宿主机与目标机之间只需要建立逻辑连接

B.宿主机与目标机之间只能采用串口通信方式

C.在宿主机上必须采用交叉编译器来生成目标机的可执行代码

D.调试器与被调试程序必须安装在同一台机器上

解析:A 选项宿主机与目标机之间不仅要建立逻辑连接,还需要建立物理连接(如通过串口、USB 等方式连接 ),才能实现数据传输等操作,该选项错误。B 选项宿主机与目标机之间的通信方式有多种,除了串口通信,还可以采用 USB、以太网等通信方式,并非只能采用串口通信,该选项错误。C 选项由于宿主机(一般是通用计算机,如 PC )和目标机(嵌入式设备)的硬件架构、操作系统等可能不同,所以在宿主机上需要采用交叉编译器,将源代码编译成目标机能够运行的可执行代码,该选项正确。D 选项在嵌入式系统开发中,调试器可以运行在宿主机上,被调试程序运行在目标机上,通过一定的连接方式(如 JTAG、串口等 )进行调试,并非必须安装在同一台机器上,该选项错误。

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

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

    相关文章

    RocketMQ 中的 ProducerManager 组件剖析

    一、引言 在分布式系统的消息传递领域,RocketMQ 以其高性能、高可用性和强大的扩展性脱颖而出。ProducerManager 作为 RocketMQ 中的一个关键组件,在消息生产环节发挥着至关重要的作用。它负责管理消息生产者(Producer)的生命周期…

    k8s进阶之路:本地集群环境搭建

    概述 文章将带领大家搭建一个 master 节点,两个 node 节点的 k8s 集群,容器基于 docker,k8s 版本 v1.32。 一、系统安装 安装之前请大家使用虚拟机将 ubuntu24.04 系统安装完毕,我是基于 mac m1 的系统进行安装的,所…

    深度学习数据集划分比例多少合适

    在机器学习和深度学习中,测试集的划分比例需要根据数据量、任务类型和领域需求灵活调整。 1. 常规划分比例 通用场景 训练集 : 验证集 : 测试集 60% : 20% : 20% 适用于大多数中等规模数据集(如数万到数十万样本),平衡了训练数…

    【TS学习】(15)分布式条件特性

    在 TypeScript 中,分布式条件类型(Distributive Conditional Types) 是一种特殊的行为,发生在条件类型作用于裸类型参数(Naked Type Parameter) 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…

    NSSCTF [HGAME 2023 week1]simple_shellcode

    3488.[HGAME 2023 week1]simple_shellcode 手写read函数shellcode和orw [HGAME 2023 week1]simple_shellcode (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file vuln vuln: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpret…

    PostgreSQL的扩展(extensions)-常用的扩展-pg_dirtyread

    PostgreSQL的扩展(extensions)-常用的扩展-pg_dirtyread pg_dirtyread 是 PostgreSQL 的一个特殊扩展,它允许读取已被删除但尚未被 VACUUM 清理的数据行,是数据恢复的重要工具。 原理: pg_dirtyread 通过直接访问表的…

    linux3 mkdir rmdir rm cp touch ls -d /*/

    Linux 系统的初始目录结构遵循 FHS(Filesystem Hierarchy Standard,文件系统层次标准),定义了每个目录的核心功能和存储内容。以下是 Linux 系统初始安装后的主要目录及其作用: 1. 核心系统目录 目录用途典型内容示例…

    Bazel中的Symbol, Rule, Macro, Target, Provider, Aspect 等概念

    学习Bazel ,就要学习Bazel 的规则定义, 弄清各个概念是重要的一个步骤。 在 Bazel 规则定义中,Symbol、Rule 和 Macro 是常见的概念。除此之外,Bazel 还有 Target、Provider、Aspect Repository、Package、 Workspace、 Configura…

    深入探究 Hive 中的 MAP 类型:特点、创建与应用

    摘要 在大数据处理领域,Hive 作为一个基于 Hadoop 的数据仓库基础设施,提供了方便的数据存储和分析功能。Hive 中的 MAP 类型是一种强大的数据类型,它允许用户以键值对的形式存储和操作数据。本文将深入探讨 Hive 中 MAP 类型的特点,详细介绍如何创建含有 MAP 类型字段的表…

    基于Java的区域化智慧养老系统(源码+lw+部署文档+讲解),源码可白嫖!

    摘 要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,区域化智慧养老系统当然不能排除在外。区域化智慧养老系统是在实际应用和软件工程的开发原理之上,运用Java语言、JSP技术以及…

    关于JVM和OS中的指令重排以及JIT优化

    关于JVM和OS中的指令重排以及JIT优化 前言: 这东西应该很重要才对,可是大多数博客都是以讹传讹,全是错误,尤其是JVM会对字节码进行重排都出来了,明明自己测一测就出来的东西,写出来误人子弟… 研究了两天&…

    VS2022远程调试Linux程序

    一、 1、VS2022安装参考 VS Studio2022安装教程(保姆级教程)_visual studio 2022-CSDN博客 注意:勾选的时候,要勾选下方的选项,才能调试Linux环境下运行的程序! 2、VS2022远程调试Linux程序测试 原文参…

    WPF设计学习记录滴滴滴4

    <Button x:Name"btn"Content"退出"Width" 100"Height"25"Click"btn_Click" IsDefault"True"/> <Button x:Name"btn" <!-- 控件标识&#xff1a;定义按钮的实例名称为"btn&…

    JVM 有哪些垃圾回收器

    垃圾收集算法 标记-复制算法(Copying): 将可用内存按容量划分为两个区域,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面, 然后再把已使用过的内存空间一次清理掉。 标记-清除算法(Mark-Sweep): 算法分为“标记” 和“清除”两个…

    React DndKit 实现类似slack 类别、频道拖动调整位置功能

    一周调试终于实现了类 slack 类别、频道拖动调整位置功能。 历经四个版本迭代。 实现了类似slack 类别、频道拖动调整功能 从vue->react &#xff1b;更喜欢React的生态及编程风格&#xff0c;新项目用React来重构了。 1.zustand全局状态 2.DndKit 拖动 功能视频&…

    新浪财经股票每天10点自动爬取

    老规矩还是先分好三步&#xff0c;获取数据&#xff0c;解析数据&#xff0c;存储数据 因为股票是实时的&#xff0c;所以要加个cookie值&#xff0c;最好分线程或者爬取数据时等待爬取&#xff0c;不然会封ip 废话不多数&#xff0c;直接上代码 import matplotlib import r…

    使用Android 原生LocationManager获取经纬度

    一、常用方案 1、使用LocationManager GPS和网络定位 缺点&#xff1a;个别设备,室内或者地下停车场获取不到gps定位,故需要和网络定位相结合使用 2、使用Google Play服务 这种方案需要Android手机中有安装谷歌服务,然后导入谷歌的第三方库&#xff1a; 例如&#xff1a;i…

    验证码实现

    验证码案例 学了Spring MVC &#xff0c;配置 相关章节&#xff0c; 现可以尝试写一个前后端交互的验证码 文章目录 验证码案例前言一、验证码是什么&#xff1f;二、需求1.引入依赖2.导入前端页面3.约定前后段交互接口 三、代码解析Controllermodelapplication.xml 四丶结果五…

    查询当前用户的购物车和清空购物车

    业务需求&#xff1a; 在小程序用户端购物车页面能查到当前用户的所有菜品或者套餐 代码实现 controller层 GetMapping("/list")public Result<List<ShoppingCart>> list(){List<ShoppingCart> list shoppingCartService.shopShoppingCart();r…