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

嵌入式面试准备

题目都摘于网上

  1. 嵌入式系统中经常要用到无限循环,如何用C编写死循环

while(1){}或者for(;😉

  1. 内存分区

代码区,全局区(全局变量,静态变量,以及常量),栈区,堆区

  1. const关键字的含义作用

const意味着"只读"
定义常量,修饰的变量不可变
可以保护被修饰的东西,防止意外的修改,增强程序的健壮性

1.const int a; #变量a不可修改
2.int const a; #变量a不可修改
3.const int *a; #指针指向的值不可修改,指针的指向可以修改
4.int * const a; #指针的指向不可以修改,指针指向的值可以修改
5.const int * const a; #指针指向的值和指针的指向都不可以修改
6.int const * const a; #指针指向的值和指针的指向都不可以修改

const和函数
通常在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用const来限制
void StringCopy(char* strDestination, const char *strSource);
还可以表示函数返回一个常量,放在函数的返回值的位置
const char * GetString(void);

  1. static关键字的含义作用

A.在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变;
B.在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量;
C.在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用;

  1. volatile关键字的含义作用

volatile的变量是说这变量可能会被意想不到地改变,编译器在用到这个变量时,不需要对它进行优化。

  1. malloc、free和new、delete的区别?

malloc 和 free 是 C 语言标准库中的函数,而 new 和 delete 是 C++ 中的操作符。
malloc 和 free 以字节为单位进行内存管理,需要手动指定需要分配或释放的字节数,而 new 和 delete 以对象为单位进行内存管理,无需手动计算需要分配或释放的字节数,编译器会自动计算。
malloc 返回的是 void* 类型的指针,需要显式地进行类型转换,而 new 返回的是分配对象的指针,不需要显式地进行类型转换。
new 和 delete 可以自动调用构造函数和析构函数,而 malloc 和 free 不会调用构造函数和析构函数。
new 失败时会抛出 std::bad_alloc 异常,而 malloc 失败时返回 NULL。
在 C++ 中,使用 new 和 delete 可以确保类型安全,而 malloc 和 free 可能存在类型不匹配的问题。

  1. 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
  2. c语言如何运行的
  (1)预处理(Preprocessing):用于将所有的#include头文件以及宏定义替换成其真正的内容;(2)编译(Compilation):将经过预处理之后的程序转换成特定汇编代码的过(3)汇编(Assemble):将上一步的汇编代码转换成机器码,产生的文件叫做目标文件(.o);(4)链接(Linking):链接过程将多个目标文件以及所需的库文件(.so等)链接成最终的可执行文件(.exe)。一个现代编译器的主要工作流程:源代码(.c)→ 预处理器(.i) → 编译器 (.s)→ 目标代码 (.o)→ 链接器 → 可执行程序 。
  1. 指针函数和函数指针的区别

针函数和函数指针是两个不同的概念:

指针函数(Pointer to Function):指针函数是一个具有指针类型返回值的函数。它是一个函数,但其返回值是一个指针,指向函数或者指向其他类型的数据。可以像使用函数一样调用这个指针函数,通过调用指针函数获取返回的指针值,然后可以对该指针值进行进一步的操作。

函数指针(Function Pointer):函数指针是指向函数的指针变量。它是一个变量,存储了函数的地址,可以通过函数指针来调用这个函数。函数指针可以像普通函数一样被调用,通过函数指针调用函数可以避免直接使用函数名来调用函数,提供了灵活性和动态性。

总结区别:

指针函数是一个函数,但其返回值是一个指针类型。 函数指针是指向函数的指针变量,可以存储函数地址并通过函数指针调用函数。
指针函数用于返回指向函数或其他类型数据的指针。 函数指针用于实现函数回调,动态选择调用的函数或在运行时替换函数。
指针函数和函数指针在用法和概念上有所不同,在具体编程场景中使用时要注意区分。

  1. 进程和线程的区别

1:调度:线程作为调度和分配的基本单元,进程作为拥有资源的基本单位;
2:并发性:不仅进程可以并发执行,同一进程内的线程也可以并发执行。
3:拥有资源:进程是拥有资源的基本独立单元,线程不拥有资源,但可以访问进程内的资源;

线程和进程都是操作系统中用于执行任务的概念,它们之间存在联系和区别。

联系:

线程和进程都是程序执行的基本单元。 一个进程可以包含多个线程,即多线程是在同一个进程内并发执行的。
进程和线程都有自己的执行上下文和调度状态。 进程和线程都能够执行代码和访问内存。 进程和线程都可以同时执行,从而提高程序的并发性和响应性。
区别:

进程是操作系统资源分配的最小单位,而线程是 CPU 调度的最小单位。进程拥有独立的内存空间,而线程共享所属进程的内存空间。
进程之间相互独立,彼此不能直接访问对方的资源,而线程可以直接访问所属进程的资源。
创建和销毁进程的开销比创建和销毁线程的开销大。进程切换涉及到切换内存空间和系统资源等,而线程切换只需要切换 CPU 的上下文。
进程之间通信需要使用特定的机制(如管道、共享内存等),而线程之间通信可以直接读写共享变量。
根据不同的应用场景和需求,选择使用进程还是线程具体取决于多线程并发执行、资源隔离、代码复用等方面的考虑。

  1. 引用与指针有什么区别?

(1)引用必须被初始化,指针不必。
(2)不存在指向空值的引用,但是存在指向空值的指针。

(1)指针是实体,占用内存空间;引用是别名,与变量共享内存空间。 (2)指针不用初始化或初始化为NULL;引用定义时必须初始化。
(3)指针中途可以修改指向;引用不可以。 (4)指针可以为NULL;引用不能为空。
(5)sizeof(指针)计算的是指针本身的大小;而sizeof(引用)计算的是它引用的对象的大小。
(6)如果返回的是动态分配的内存或对象,必须使用指针,使用引用会产生内存泄漏。 (7)指针使用时需要解引用;引用使用时不需要解引用‘*’。
(8)有二级指针;没有二级引用。

  1. 大端和小端

大端存储:将一个数的低位字节的内容放在高地址处,高位字节的内容放在低地址处
小端存储:将一个数的低位字节的内容放在低地址处,高位字节的内容放在高地址处

在这里插入图片描述

  1. ROM与RAM

ROM是Read OnlyMemory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

  1. IO口工作方式:上拉输入 下拉输入 推挽输出 开漏输出

  2. 请说明总线接口USRT、I2C、USB的异同点(串/并、速度、全/半双工、总线拓扑等)
    在这里插入图片描述

  3. I2C协议时序图

IC协议有两根线,一根SCL时钟线,一根SDA数据线,如图可以看到开始信号和结束信号的电平状态。开始后,因为IIC总线可以挂在很多设备(不超过8个),所以先发送一个设备地址,选中这个设备,设备地址最后一位代表了是写还是读。选中设备后,再发送寄存器地址,代表选中某个寄存器,再开始传输数据。
八位设备地址=7位从机地址+读/写地址,
再给地址添加一个方向位位用来表示接下来数据传输的方向,
0表示主设备向从设备(write)写数据,
1表示主设备向从设备(read)读数据

  1. I2C总线在传送数据过程 有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL保持高电平,SDA是高电平到低电平的切换
结束信号:SCL保持高电平,SDA是低电平到高电平的切换
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SCL=1时 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号。

  1. FIQ中断向量入口地址

FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。

FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。

  1. SPI四种模式,简述其中一种模式,画出时序图
    在这里插入图片描述
    在这里插入图片描述

  2. sizeof和strlen的区别?

答案:sizeof是运算符,在编译时即计算好了;而strlen是函数,要在运行时才能计算。

  1. 在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务?

答案:

int p;
p = (int
)0x67a9;
*p = 0xaa66;

  1. 堆和栈的区别

堆(Heap)和栈(Stack)是两种常见的内存管理方式,它们在内存分配和释放的机制上有一些区别。

分配方式:

堆:堆内存的分配由程序员手动管理,通过动态分配,例如使用malloc()、new等函数来申请内存。堆分配的内存需要显式地释放,否则可能导致内存泄露。
栈:栈内存的分配与函数调用的方式紧密相关。每当调用一个函数时,函数的局部变量和参数会在栈上动态分配,函数调用结束后,这些变量和参数会自动被释放。
内存管理:

堆:堆内存的管理是由程序员手动控制的。在申请堆内存后,需要负责释放这块内存,以避免内存泄漏。如果不及时释放,会造成内存的浪费。
栈:栈内存的管理由编译器自动完成,无需程序员手动干预。当函数调用结束时,栈上的局部变量会自动释放,内存被回收,不存在内存泄露的问题。
内存分配速度:

堆:堆内存的分配速度相对较慢,因为需要在堆中搜索合适大小的空闲空间。在大型程序中,频繁地进行堆内存分配和释放可能会导致效率下降。
栈:栈内存的分配速度相对较快,仅仅是栈指针的移动,所以栈上的内存分配和释放操作非常高效。 存储大小:

堆:堆内存的大小通常比较大,由操作系统管理。在现代计算机系统中,堆的大小通常受到操作系统或运行时环境的限制。
栈:栈内存的大小通常比较小,由编译器或运行时环境进行限制。栈的大小是有限制的,一般为数MB到数十MB。 总结区别:

堆和栈是两种内存管理方式,分配方式和内存管理方式不同。 堆内存需要手动分配和释放,而栈内存会自动分配和释放。
堆内存的分配速度较慢,栈内存的分配速度较快。 堆内存的大小通常比较大,而栈内存的大小通常较小。

  1. 数组和链表的区别

数组存数据按照顺序存储,固定大小; 链表存数据随机,大小可以动态改变

  1. struct和union比较

相同点:二者都是常见的结构,都是由多个不同的数据类型成员组成
不同点:联合体中所有的成员公用一块地址空间,即联合体只存放一个被选中的成员,内存空间是最长成员占用的空间,需要进行内存对齐
结构体所有成员占用空间是累加的,其所有成员都存在,不同成员存在不同的地址,内存空间等于所有成员占用的空间之和,同样需要内存对齐。

  1. 数组指针和指针数组

数组指针是一个指针,指向一个数组。
指针数组由n个指针类型的数组元素组成。
数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。
指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

  1. 常量指针和指针常量

常量指针:指针指向的值不可以修改,指针的指向可以修改
指针常量:指针指向的值可以改,指针的指向不可以改

  1. zigbee OSAL是怎么样的

是一种基于事情驱动的轮询式操作系统,所提供的管理功能有
(1)任务登记,任务初始化,任务触发
(2)任务间消息传递
(3)任务同步
(4)中断处理
(5)计时器
(6)内存分配
不断轮询遍历所有任务事件,事件被置位后就会被调度执行该任务:需要注意的是每次任务被调度时都只处理一个事件,并在处理完后清除该事件。
每个任务最多可以同时设置16个事件
任务事件被置位,即任务调度,主要通过以下两种途径实现:
(1)直接通过调用 osal _ set _ event()给任务事件置位。
(2)任务调度结束后返回,通过返回未处理完的事件位重新置位。在下一轮任务轮询中,将继续处理

实时操作系统 (RTOS) 中的任务间通信可以使用以下几种手段:

消息传递 (Message Passing):
任务通过发送和接收消息来进行通信。消息可以包含数据和控制信息,常见的消息传递机制包括消息队列、邮箱和管道。

信号量 (Semaphore):
信号量是一种同步机制,用于控制对共享资源的访问。任务可以使用信号量来申请和释放资源,并通过信号量的值来进行同步和互斥操作。

事件标志组 (Event Flags):
任务可以等待或等待特定的事件发生,当事件发生时,任务可以被唤醒并继续执行。事件标志组可以将多个事件进行组合,每个事件可以用一个特定的标志来表示。

邮箱 (Mailbox):
邮箱是一种用于在任务之间传递数据的机制。任务可以将数据放入邮箱中,其他任务可以从邮箱中读取数据,实现任务间的数据交换。

共享内存 (Shared Memory):
共享内存是一块被多个任务共享的内存区域。任务可以通过读写这块内存来进行数据交换。为了确保并发访问的正确性,通常需要使用互斥锁或信号量进行保护。

这些任务间通信的手段可以根据实际需求选择合适的方式,在设计实时系统时需要考虑数据的实时性、同步性和互斥性等因素。

  1. 面向对象编程(Object-Oriented Programming,简称OOP)的三大特性是:

封装(Encapsulation):封装是将数据(属性)和操作(方法)封装在一个对象中,对外部隐藏内部实现的细节,只提供有限的接口供其他对象进行交互。封装提供了数据的保护和控制,通过定义公共接口,可以控制对对象内部数据的访问和操作,增加了代码的可维护性和可重用性。

继承(Inheritance):继承是指一个类(子类)可以继承另一个类(父类)的属性和方法,并可以在此基础上进行功能的扩展或修改。通过继承,子类可以继承父类的通用行为和属性,避免了重复编写相同的代码。继承也支持多层次的继承,形成类的层次结构,提供了代码的组织和管理。

多态(Polymorphism):多态是指同一种行为或操作可以具有多种不同的表现形式。在面向对象编程中,多态性通过继承和重写方法实现。多态性使得在对对象进行操作时,可以根据上下文的不同选择合适的方法,实现了代码的灵活性和扩展性。多态性还可以通过接口(接口多态)实现,使得不同的类可以实现相同的接口,从而具有相同的行为。

  1. TCP与UDP的区别在这里插入图片描述
  2. 算法优劣评价术语
    在这里插入图片描述
  3. 死锁的原因、条件

产生死锁的原因主要是:

(1) 因为系统资源不足。

(2) 进程运行推进的顺序不合适。

(3) 资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

  1. list和vector的区别

在编程语言中,"list"和"vector"通常代表不同的数据结构和容器类型,其主要区别如下:

内部实现:在许多编程语言中,"list"通常是一个链表或双向链表,它的元素在内存中可以是分散存储的,通过指针相互连接;而"vector"通常是一个连续的内存块,它的元素在内存中是连续存储的,通过索引访问。

大小调整:由于内部实现的不同,"list"支持动态调整大小,插入和删除元素的时间复杂度是
O(1);而"vector"的大小通常是固定的,当需要调整大小时,可能需要重新分配内存和复制元素,插入和删除元素的时间复杂度是 O(n)。

访问效率:由于连续存储的特性,"vector"的访问效率更高,通过索引直接访问元素,时间复杂度是
O(1);而"list"需要从头节点开始逐个遍历,时间复杂度是 O(n)。

插入和删除效率:在插入和删除元素方面,"list"由于其链表结构,在特定位置插入和删除元素的时间复杂度是
O(1);而"vector"由于需要移动后续元素,时间复杂度是 O(n)。

综上所述,"list"适用于频繁插入和删除元素、对随机访问不敏感的场景,而"vector"适用于频繁随机访问、对插入和删除操作要求不高的场景。根据具体的需求和使用场景,选择合适的数据结构可以提高程序的效率和性能。

  1. 中断不能返回一个值,中断不能传递参数

  2. 预处理器标识#error的目的是什么

预处理器标识#error的目的是向编译器发送错误信息并停止编译过程。当预处理器遇到#error指令时,它会将紧随其后的错误消息作为编译错误的一部分,并在编译过程中生成一个错误。

使用#error指令可以在预处理阶段检测到编译时错误或不满足特定条件的情况,例如:

条件检查:当某个条件不满足时,可以使用#error指令提供有关问题的提示,例如要求编译时使用特定的编译器标志或环境变量。

版本控制:当代码需要在特定版本或以上的编译器中编译时,可以使用#error指令检查编译器版本,并提供相应的错误消息。

模块选择:当需要选择特定的代码模块或功能时,可以使用#error指令阻止编译,以确保代码不会在不兼容的环境中运行。

通过使用#error指令,开发者可以在编译时提供有用的错误信息,帮助识别潜在的问题并加快问题定位与解决过程。

  1. 一个参数既可以是const还可以是volatile吗

可以的,例如只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份
volatile修饰符告诉complier变量值可以以任何不被程序明确指明的方式改变,最常见的例子就是外部端口的值,它的变化可以不用程序内的任何赋值语句就有可能改变的,这种变量就可以用volatile来修饰,complier不会优化掉它。
const修饰的变量在程序里面是不能改变的,但是可以被程序外的东西修改,就象上面说的外部端口的值,如果仅仅使用const,有可能complier会优化掉这些变量,加上volatile就万无一失了。

  1. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

答案:c用宏定义,c++用inline

  1. NPU 模型转换

步骤是导入模型-> 创建配置文件->量化->预推理->导出模型->部署测试

  1. NPU 模型部署的流程

数据预处理,加载模型到NPU,NPU执行计算,计算结果后处理
计算后 NPU 会输出一个 tensor 数据,这时候就需要数据后处理,将 tensor 数据转换为具体的坐标与类型,就可以反馈到上层应用程序做应用的处理了

  1. 管道,消息队列,信号量的联系和区别

管道、消息队列和信号量是操作系统中常用的同步和通信机制,它们有一些联系和区别。

联系:

同步和通信:管道、消息队列和信号量都用于实现进程或线程之间的同步和通信。 进程间通信:它们都可以用于不同进程之间的通信和数据传递。 区别:

数据传递方式:

管道:是一种半双工的通信方式,数据按顺序通过一个缓冲区从一个进程传递到另一个进程。通常用于父子进程之间或具有共同祖先的进程之间的通信。
消息队列:是一种消息传递机制,允许进程在独立的时间段将消息放入队列中,然后其他进程可以从队列中读取消息。消息队列的数据传递是基于消息的,进程可以按需读取和处理消息。
信号量:是一种计数器,用于控制多个进程对共享资源的访问。通过对信号量的操作,进程可以等待、同步和互斥地访问共享资源。 用途:

管道:主要用于在父子进程之间传递数据,典型的应用场景是通过管道实现shell命令的管道连接。
消息队列:适用于多个进程之间的松散耦合的通信,允许进程按照消息的顺序进行通信,典型的应用包括客户端-服务器模型和分布式系统。
信号量:用于同步和互斥访问共享资源,防止竞态条件和数据不一致性。 阻塞机制:

管道:读取或写入管道时可以发生阻塞。如果读取进程尝试从空管道中读取数据,它将等待直到有数据被写入。如果写入进程尝试往满的管道中写入数据,它将等待直到有空间可用。
消息队列:读取消息队列时可以选择阻塞或非阻塞。进程可以选择在没有可用消息时阻塞等待,或者立即返回并继续执行。
信号量:进程可以通过对信号量进行阻塞和非阻塞操作。当信号量的值为0时,进程可以选择阻塞等待信号量的值变为非零,或者立即返回。
总结起来,管道、消息队列和信号量是实现进程间通信和同步的不同机制。管道适用于父子进程之间的数据传递,消息队列适用于多个进程之间的松散耦合通信,信号量适用于对共享资源的访问控制和同步操作。

相关文章:

嵌入式面试准备

题目都摘于网上 嵌入式系统中经常要用到无限循环,如何用C编写死循环 while(1){}或者for(;😉 内存分区 代码区,全局区(全局变量,静态变量,以及常量),栈区,堆区 const关键…...

在Linux Docker中部署RStudio Server,实现高效远程访问

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 安装RStudio Server二. 本地访问三. Linux 安装cpolar四. 配置RStudio serv…...

EternalBlue【永恒之蓝】漏洞详解(复现、演示、远程、后门、入侵、防御)内容丰富-深入剖析漏洞原理-漏洞成因-以及报错解决方法-值得收藏!

漏洞背景: 1.何为永恒之蓝? 永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子…...

长链接与在线文件

什么是在线文件 常见的聊天工具,比如。。。微信,你可以发送一个文件给对端,即使对端不在线,这个文件也可以暂存在服务器上面,直到接收端上线消费或者超时,这个叫离线文件。与之对应的,在线文件要…...

Python内置数据类型等入门语(句)法

内置数据类型 数字(Number)关键字: int 、float、complex字符串(String)关键字:单引号,双引号 三引号都可以表示,8 种内置类型都可转为字符串类型列表(List) 关键符号 […...

ElasticSearch之RestClient笔记

1. ElasticSearch 1.1 倒排索引 1.2 ElasticSearch和Mysql对比 1.3 RestClient操作 导入依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.15.…...

饥荒Mod 开发(二二):显示物品信息

饥荒Mod 开发(二一)&#xff1a;超大便携背包&#xff0c;超大物品栏&#xff0c;永久保鲜 饥荒Mod 开发(二三)&#xff1a;显示物品栏详细信息 饥荒中的物品没有详细信息&#xff0c;基本上只有一个名字&#xff0c;所以很多物品的功能都不知道&#xff0c;比如浆果吃了也不知…...

Microsoft Edge使用方法和心得

Microsoft Edge使用方法和心得 大家好&#xff0c;我是豪哥&#xff0c;一名来自杭州的Java程序员&#xff0c;今天我想分享一下我对Microsoft Edge的使用方法和心得。作为一名热爱编程的程序员&#xff0c;我发现一个高效的浏览器对于我们的工作和学习至关重要。而Microsoft …...

Kafka操作指令笔记

查堆积用命令查&#xff1a; ./kafka-consumer-groups.sh --bootstrap-server {kafka集群地址} --describe --group {消费组名称}bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --all-groups #查看所有组别的积压情况可以通过grep、awk或其他文…...

WAVE SUMMIT+ 2023倒计时2天,传文心一言将曝最新进展!

传文心一言将曝最新进展&#xff01; 亮点一&#xff1a;趋势引领&#xff0c;“扛把子”文心一言将曝新进展亮点二&#xff1a;干货十足&#xff0c;硬核低门槛开发秘籍大放送亮点三&#xff1a;蓄势待发&#xff0c;大模型赋能产业正当时亮点四&#xff1a;群星闪耀&#xff…...

Crow:Middlewares 庖丁解牛5 context

Crow:Middlewares 庖丁解牛4 partial_context-CSDN博客 基于partial_context再来解释context namespace detail {template<typename... Middlewares>struct partial_context : public pop_back<Middlewares...>::template rebind<partial_context>, public…...

CentOS 7 设置网络

CentOS 7 设置网络 正常情况 ①登陆进去之后使用下面的命令修改文件 echo ONBOOTyes >> /etc/sysconfig/network-scripts/ifcfg-ens33②如果是虚拟机重启后使用如下命令进行查看IP地址 ip addr注&#xff1a;到这里如果显示有两部分&#xff0c;则代表网络设置成功&a…...

装饰器模式(Decorator)

装饰器模式(Decorator Pattern)是一种结构型设计模式,用于动态地给一个对象添加额外的职责。装饰器提供了一个灵活的替代扩展功能的方案,相比继承更加灵活。 在Java中,装饰器模式通常涉及以下几个部分: 组件(Component):定义一个对象接口,可以给这些对象动态添加职责…...

关于“Python”的核心知识点整理大全34

目录 第&#xff11;3 章 外星人 13.1 回顾项目 game_functions.py 13.2 创建第一个外星人 13.2.1 创建 Alien 类 alien.py 13.2.2 创建 Alien 实例 alien_invasion.py 13.2.3 让外星人出现在屏幕上 game_functions.py 13.3 创建一群外星人 13.3.1 确定一行可容纳…...

设计模式--抽象工厂模式

实验4&#xff1a;抽象工厂模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解抽象工厂模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用抽象工厂模式解决实际问题。 [实验任务]&#xff1a;人与肤色 使用抽象…...

浅析海博深造

文章目录 深造作用 留学种类 选专业 择校 申请流程 申请方式 深造作用 1、个人能力提升&#xff08;学术专业、语言、新文化或新生活方式&#xff09; 2、更好的职业发展&#xff08;起点更高、结交新朋友或扩大社交圈&#xff09; 3、北京上海落户优惠 4、海外居留福…...

【Hive_05】企业调优1(资源配置、explain、join优化)

1、 计算资源配置1.1 Yarn资源配置1.2 MapReduce资源配置 2、 Explain查看执行计划&#xff08;重点&#xff09;2.1 Explain执行计划概述2.2 基本语法2.3 案例实操 3、分组聚合优化3.1 优化说明&#xff08;1&#xff09;map-side 聚合相关的参数 3.2 优化案例 4、join优化4.1…...

synchronized

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; synchronized 1. 特性1.1 互斥1.2 可重入 …...

Vue在页面上添加水印

第一步&#xff1a;在自己的项目里创建一个js文件&#xff1b;如图所示我在在watermark文件中创建了一个名为waterMark.js文件。 waterMark.js /** 水印添加方法 */ let setWatermark (str1, str2) > {let id 1.23452384164.123412415if (document.getElementById(id) …...

SQL server 数据库练习题及答案(练习2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…...

minicube搭建golang容器服务

引言 最近在自己电脑上搭建一个小型k8s环境&#xff0c;以学习云原生相关内容。这里我主要分为三部分记录&#xff1a; 容器及容器编排理论环境安装相关rpcx服务实战 还在调试中&#xff0c;先总结整理下&#xff0c;这里后续补充上我的github工程链接。 一、容器及容器编排理…...

图片批量处理:图片批量缩放,高效调整尺寸的技巧

在数字媒体时代&#xff0c;图片处理已是日常生活和工作中不可或缺的一部分。有时候要批量处理图片&#xff0c;如缩放图片尺寸&#xff0c;以满足不同的应用需求。现在一起来看看办公提效式具如何高效的将图片批量处理方法&#xff0c;快速、准确地批量调整图片尺寸操作。 下…...

直接插入排序【从0-1学数据结构】

文章目录 &#x1f497; 直接插入排序Java代码C代码JavaScript代码稳定性时间复杂度空间复杂度 我们先来学习 直接插入排序, 直接排序算是所有排序中最简单的了,代码也非常好实现,尽管直接插入排序很简单,但是我们依旧不可以上来就直接写代码,一定要分析之后才开始写,这样可以提…...

C++/CLI——1简介

C/CLI——1简介 如果你是.net程序员&#xff0c;不免会用到C/C写的库。对于简单的调用&#xff0c;可以直接使用DllImport来完成就可以&#xff0c;详情可参考C#调用C/C从零深入讲解。但是对于复杂的C类和对象&#xff0c;尤其是类似于OCC的大型C项目&#xff0c;DllImport可能…...

C#实现串口通讯

1、官网下载Launch Virtual Serial Port Driver Virtual Serial Port Driver - create and emulate virtual COM port&#xff0c;开个虚拟串口&#xff1a; Pair模式&#xff08;一对&#xff0c;成双成对的意思&#xff0c;就是COM1向COM2传或者COM2向COM1,好比两台机器的CO…...

NLP论文阅读记录 - 以大语言模型为参考学习总结

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1文本生成模型的训练方法2.2 基于LLM的自动评估2.3 LLM 蒸馏和基于 LLM 的数据增强 三.本文方法3.1 Summarize as Large Language Models3.1.1 前提3.1.2 大型语言模型作为参考具有…...

前端---资源路径

当我们使用img标签显示图片的时候&#xff0c;需要指定图片的资源路径&#xff0c;比如: <img src"images/logo.png">这里的src属性就是设置图片的资源路径的&#xff0c;资源路径可以分为相对路径和绝对路径。 1. 相对路径 从当前操作 html 的文档所在目录算…...

【2024考研】心情记录

今天是12.26日。距离24考研已经过去了2天&#xff0c;自认为缓过来了&#xff0c;故写下这篇文章。 25日早上简单过了一下答案&#xff0c;但实在是记不住答案了&#xff0c;不知道是我的脑子抵触还是怎的&#xff0c;像一块灰色的布遮住了我的记忆&#xff0c;羞于打开&#x…...

MySQL数据库日志管理和数据的备份及恢复

目录 MySQL日志管理 数据库备份的重要性 数据库备份的分类 从物理与逻辑的角度 从数据库的备份策略角度 常见的备份方法 物理冷备 专用备份工具mysqldump或mysqlhotcopy 启用二进制日志进行增量备份 第三方工具备份 MySQL完全备份与恢复 MySQL完全备份 物理冷备份与…...

node-schedule nodejs定时提醒(并判断段是否是工作日)

概述 工作中有个需求&#xff1a;在特定的时间发送一些消息&#xff0c;也就是说比如在每天的7点发送消息&#xff1a;该起床了。一开始我想用定时器每分钟每分钟的去查当前时间&#xff0c;但好像有点蠢&#xff0c;然后我找到了这个包 使用方法 安装 npm install node-sc…...

LeetCode 75| 前缀和

目录 1732 找到最高海拔 724 找到数组的中心下标 1732 找到最高海拔 class Solution { public:int largestAltitude(vector<int>& gain) {int res 0;int sum 0;for(int num : gain){sum num;res max(res,sum);}return res;} }; 时间复杂度O(n) 空间复杂度O(…...

智能,轻量,高效的爬虫工具 (爬虫宝第一代), HSpider

场景 之前玩爬虫宝一时爽&#xff0c;但是我很快发现了一个致命的问题。就是chat3.5 有时候误判&#xff0c;Claude2 是遇到大一点的html就无法解析&#xff0c;chat4 Api没有申请下来&#xff0c;chat3.5 误判这个可以纠正&#xff0c;但是每次爬取花费的钱都是2刀以上&#…...

IDEA Maven Helper插件 解决jar冲突

Jar包冲突报错 程序抛出java.lang.ClassNotFoundException异常&#xff1b; 程序抛出java.lang.NoSuchMethodError异常&#xff1b; 程序抛出java.lang.NoClassDefFoundError异常&#xff1b; 程序抛出java.lang.LinkageError异常等&#xff1b;Maven Jar包管理机制 在Maven项…...

装饰 Web3 项目的用户交互界面(Web3项目二实战之四)

用户交互界面是Web3项目必不可少的,毕竟,Web3项目最终是面向用户的,所以,Web3项目总得需要一个优美的UI界面,已达到用户在视觉上精彩盛宴。 诚然,一个Web3项目若到了用户交互界面,大体上,这个Web3项目也将告一段落了。 没错,Web3第二个项目,也将终结于本篇,顺势拉开…...

【数据库系统概论】第3章-关系数据库标准语言SQL(3)

文章目录 3.5 数据更新3.5.1 插入数据3.5.2 修改数据3.5.3 删除数据 3.6 空值的处理3.7 视图3.7.1 建立视图3.7.2 查询视图3.7.3 更新视图3.7.4 视图的作用 3.5 数据更新 3.5.1 插入数据 注意&#xff1a;插入数据时要满足表或者列的约束条件&#xff0c;否则插入失败&#x…...

理解io/nio/netty

一、io io即input/output&#xff0c;输入和输出 1.1 分类 输入流、输出流&#xff08;按数据流向&#xff09; 字节流&#xff08;InputStream/OutputStream&#xff08;细分File/Buffered&#xff09;&#xff09;、字符流(Reader/Writer&#xff08;细分File/Buffered/pu…...

旅游品牌网站搭建的作用是什么

我国旅游业规模非常高&#xff0c;各地大小旅游景区也是非常多&#xff0c;尤其节假日更是可以达到峰值&#xff0c;无论周边游还是外地游对所要去的景区&#xff0c;消费者总是需要来回了解很多&#xff0c;浏览器查或旅行社咨询等。 对旅游企业而言&#xff0c;传统线下方式…...

Linux操作系统——进程(五)环境变量

环境变量 有了我们前面的命令行参数的理解基础呢&#xff0c;我们下面进入环境变量这一个部分的内容的学习。 一般在我们安装一些开发工具尤其是有解释器的开发工具的时候&#xff0c;我们呢一般都要配置环境变量&#xff0c;可能都不太清楚自己为什么要配置环境变量&#xf…...

西门子博途怎么使用PID_Compact做pid调试

到目前为止&#xff0c;我已经在S7-1200中创建了一个可运行的PLC程序&#xff0c;并在Basic Panel中创建了一个HMI项目来操纵和操作该程序。 引文&#xff1a;博途工控人平时在哪里技术交流博途工控人社群 现在&#xff0c;我们该如何深入的让程序开始逐渐智能化呢&#xff0c…...

结构型模式 | 适配器模式

一、适配器模式 1、原理 适配器模式&#xff08;Adapter&#xff09;&#xff0c;将一个类的接口转换成客户希望的另外一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要分为三类&#xff1a;类适配器模式、对象适配器模式、接口…...

基于Python的车牌识别系统实现

本文将以基于Python的车牌识别系统实现为方向&#xff0c;介绍车牌识别技术的基本原理、常用算法和方法&#xff0c;并详细讲解如何利用Python语言实现一个完整的车牌识别系统。 精彩专栏持续更新推荐订阅&#xff0c;收藏关注不迷路 微信小程序实战开发专栏 目录 引言车牌识别…...

时间序列预测模型介绍及使用经验总结

1. 时序预测背景 时序数据&#xff0c;就是序列随时间变化的数据。时间序列分析&#xff0c;一般有时域和频域两种分析方法。时序预测的本质是在时域和频域层面探索时间序列变化的内在规律。 下图描述的是时域&#xff08;temporal domain&#xff09;&#xff0c;横坐标是时…...

Docker知识总结

文章目录 Docker1 Docker简介1.1 什么是虚拟化1.2 什么是Docker1.3 容器与虚拟机比较1.4 Docker 组件1.4.1 Docker服务器与客户端1.4.2 Docker镜像与容器1.4.3 Registry&#xff08;注册中心&#xff09; 2 Docker安装与启动2.1 安装Docker2.2 设置ustc的镜像2.3 Docker的启动与…...

算法训练营Day25

#Java #回溯 开源学习资料 Feeling and experiences&#xff1a; 复原IP地址&#xff1a;力扣题目链接 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1…...

docker笔记2-docker 容器

docker 容器的运行 docker run 镜像名&#xff1a;版本标签&#xff1a; 创建 启动容器 docker run 镜像名 &#xff0c;如果镜像不存在&#xff0c;则会在线下载镜像。 注意事项&#xff1a; 容器内的进程必须处于前台运行状态&#xff0c;不能后台&#xff08;守护进程运行…...

redis 从0到1完整学习 (七):ZipList 数据结构

文章目录 1. 引言2. redis 源码下载3. zipList 数据结构3.1 整体3.2 entry 数据结构分析3.3 连锁更新 4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1完整学习 &#xff08;二&am…...

2015年第四届数学建模国际赛小美赛C题科学能解决恐怖主义吗解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 C题 科学能解决恐怖主义吗 原题再现&#xff1a; 为什么人们转向恐怖主义&#xff0c;特别是自杀性恐怖主义&#xff1f;主要原因是什么&#xff1f;这通常是大问题和小问题的结合&#xff0c;或者是一些人所说的“推拉”因素。更大的问题包…...

基于Java开发的微信约拍小程序

一、系统架构 前端&#xff1a;vue | element-ui 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk8 | mysql8 | maven | mysql 二、代码及数据库 三、功能说明 01. 首页 02. 授权登录 03. 我的 04. 我的-编辑个人资料 05. 我的-我的联系方式 06. …...

蓝桥杯的学习规划

c语言基础&#xff1a; Python语言基础 学习路径&#xff1a;画框的要着重学习...

EMC噪声的本质

01 频谱的含义 频谱是将电磁波分解为正弦波分量&#xff0c;并按波长顺序排列的波谱&#xff0c;就是将具有复杂组成的东西分解&#xff08;频谱分析仪&#xff09;为单纯成分&#xff0c;并把这些成分按其特征量的大小依序排列&#xff08;部分不计&#xff09;&#xff0c;…...