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

ESP32 FreeRTOS-流缓冲区(12)

提示:好记性不如烂笔头。本博客作为学习笔记,有错误的地方希望指正

文章目录

  • 前言:
  • 一、xStreamBufferCreate()、xStreamBufferCreateWithCallback()
  • 二、xStreamBufferCreateStatic()、xStreamBufferCreateStaticWithCallback()
  • 三、xStreamBufferSend()
  • 四、xStreamBufferSendFromISR()
  • 五、xStreamBufferReceive()
  • 六、xStreamBufferReceiveFromISR()
  • 七、vStreamBufferDelete()
  • 八、xStreamBufferBytesAvailable()
  • 九、xStreamBufferSpacesAvailable()
  • 十、xStreamBufferSetTriggerLevel()
  • 十 一、xStreamBufferReset()
  • 十二、xStreamBufferIsEmpty()
  • 十三、xStreamBufferIsFull()
  • 十四、用法示例

前言:

  参考资料:FreeRTOS API参考
  这里主要是任务通知,任务通知可以实现我们任务与任务之间同时多种信号的一种信号的发生,或者多个任务同时等待一种任务的发生。

一、xStreamBufferCreate()、xStreamBufferCreateWithCallback()

API原型:

StreamBufferHandle_t xStreamBufferCreate( size_t xBufferSizeBytes,size_t xTriggerLevelBytes );
StreamBufferHandle_t xStreamBufferCreateWithCallback( size_t xBufferSizeBytes,size_t xTriggerLevelBytesStreamBufferCallbackFunction_t pxSendCompletedCallback,StreamBufferCallbackFunction_t pxReceiveCompletedCallback );

  创建一个使用动态分配内存的新流缓冲区。流缓冲区 在完成每个发送和接收操作时执行回调。使用 xStreamBufferCreate()API 创建的流缓冲区 共享相同的发送和接收完成回调函数,这些函数是用 sbSEND_COMPLETED() 和 sbRECEIVE_COMPLETED() 宏定义的 。使用 xStreamBufferCreateWithCallback() API 创建的流缓冲区可以有各自独特的发送和接收完成 回调函数。请参阅 xStreamBufferCreateStatic() 和 xStreamBufferCreateStaticWithCallback() 了解使用动态分配内存(在编译时分配的内存)的对应版本 。
  configSUPPORT_DYNAMIC_ALLOCATION 必须 在 FreeRTOSConfig.h 中设置为 1 或未定义, xStreamBufferCreate () 才可用。此外,configUSE_SB_COMPLETED_CALLBACK 必须在 FreeRTOSConfig.h 中设置为 1,xStreamBufferCreateWithCallback() 才可用。
  将 FreeRTOS/source/stream_buffer.c 源文件包含在构建中即可启用流缓冲区功能。
参数:
  xBufferSizeBytes 流缓冲区在任何时候能够容纳的总字节数。
  xTriggerLevelBytes 在流缓冲区中被阻塞以等待数据的任务离开阻塞状态之前, 流缓冲区中必须包含的字节数。例如,如果一个任务在读取触发等级为 1 的空流缓冲区时被阻塞, 那么当单个字节写入缓冲区或该任务的阻塞时间结束时,该任务将被解除阻塞。 另一个例子是,如果一个任务在读取触发等级为 10 的空流缓冲区时被阻塞, 那么直到流缓冲区至少包含 10 个字节或该任务的阻塞时间结束之前,该任务将不会被解除阻塞。如果 读任务的阻塞时间在达到触发等级之前过期,那么该任务仍将接收实际可用的字节数 。将触发等级设置为 0 将导致使用触发等级 1。指定 一个大于缓冲区大小的触发等级是无效的。
  pxSendCompletedCallback 当对流缓冲区的数据写入导致缓冲区的字节数超过触发等级时调用的回调函数 。如果参数为 NULL,则使用 sbSEND_COMPLETED 宏所提供的默认实现 。发送完成的回调函数必须具有 StreamBufferCallbackFunction_t 定义的原型,即:

void vSendCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken );

  pxReceiveCompletedCallback 当从流缓冲区读取数据(多于 0 字节)时调用的回调函数。如果参数为 NULL, 则使用 sbRECEIVE_COMPLETED 宏所提供的默认实现。接收完成回调函数必须 具有 StreamBufferCallbackFunction_t 定义的原型,即:

void vReceiveCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken );

返回值:
  如果返回 NULL,则说明因为没有足够的堆内存可供 FreeRTOS 分配流缓冲区的数据结构体和存储区域,所以流缓冲区无法被创建。如果返回的值不是 NULL,则说明流缓冲区已经成功创建 ——返回值应该作为所创建流缓冲区的句柄来存储。
用法示例:

void vSendCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken )
{/* 在此插入代码,当对流缓冲区进行数据写入操作时,该代码被调用。* 在此插入代码,当对流缓冲区的数据写入操作导致缓冲区内的字节数* 导致缓冲区内的字节数超过了触发水平。* 当流缓冲区被用来在多核处理器之间传递数据时,这很有用。* 在一个多核处理器上的核心之间传递数据时,这一点非常有用。在这种情况下,这个回调* 可以实现在另一个CPU核中产生一个中断。* 然后,中断的服务程序可以使用* xStreamBufferSendCompletedFromISR() API函数来检查,如果有必要的话* 必要时解除对一个正在等待数据的任务的封锁。*/
}void vReceiveCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken )
{/* 在这里插入代码,当数据从流中读出时被调用。* 缓冲区。* 当流缓冲区被用来在多核之间传递数据时,这很有用。* 这在多核处理器上的核心之间传递数据时非常有用。在这种情况下,这个回调* 可以实现在另一个CPU核中产生一个中断。* 然后,中断的服务程序可以使用* xStreamBufferReceiveCompletedFromISR() API函数来检查,如果有必要的话* 必要时解除对一个等待发送数据的任务的封锁。*/
}void vAFunction( void )
{StreamBufferHandle_t xStreamBuffer, xStreamBufferWithCallback;const size_t xStreamBufferSizeBytes = 100, xTriggerLevel = 10;/* 创建一个可以容纳100字节的流缓冲区,并使用* 使用sbSEND_COMPLETED()和* sbRECEIVE_COMPLETED() 宏定义的函数作为发送和接收完成的* 回调函数。用来保存流的内存* 缓冲区结构和流缓冲区中的数据是动态分配的。* 动态地分配。*/xStreamBuffer = xStreamBufferCreate( xStreamBufferSizeBytes,xTriggerLevel );if( xStreamBuffer == NULL ){/* 没有足够的堆内存空间可用于创建流缓冲区。流缓冲区。*/}else{/* 流缓冲区已成功创建,现在可以使用。*/}/* 创建一个可以容纳100字节的流缓冲区,并使用* 函数vSendCallbackFunction和vReceiveCallbackFunction*作为发送和接收完成的回调函数。内存* 用于容纳流缓冲区结构和数据的*流缓冲区中的数据是动态分配的。*/xStreamBufferWithCallback = xStreamBufferCreateWithCallback( xStreamBufferSizeBytes,xTriggerLevel,vSendCallbackFunction,vReceiveCallbackFunction );if( xStreamBufferWithCallback == NULL ){/* 没有足够的堆内存空间可用于创建流缓冲区。*/}else{/* 流缓冲区已成功创建,现在可以使用。*/}
}

二、xStreamBufferCreateStatic()、xStreamBufferCreateStaticWithCallback()

API原型:

StreamBufferHandle_t xStreamBufferCreateStatic(size_t xBufferSizeBytes,size_t xTriggerLevelBytes,uint8_t *pucStreamBufferStorageArea,StaticStreamBuffer_t *pxStaticStreamBuffer );StreamBufferHandle_t xStreamBufferCreateStaticWithCallback(size_t xBufferSizeBytes,size_t xTriggerLevelBytes,uint8_t *pucStreamBufferStorageArea,StaticStreamBuffer_t *pxStaticStreamBuffer,StreamBufferCallbackFunction_t pxSendCompletedCallback,StreamBufferCallbackFunction_t pxReceiveCompletedCallback );

  使用静态分配的内存创建一个新的流缓冲区。流缓冲区 在完成每个发送和接收操作时执行回调。使用 xStreamBufferCreateStatic() API 创建的流缓冲区 共享相同的发送和接收完成回调函数,这些函数是用 sbSEND_COMPLETED() 和 sbRECEIVE_COMPLETED() 宏定义的 。使用 xStreamBufferCreateStaticWithCallback() API 创建的流缓冲区可以有各自独特的发送和接收完成 回调函数。请参阅 xStreamBufferCreate() and xStreamBufferCreateWithCallback() 了解使用动态分配内存的对应版本。
  configSUPPORT_STATIC_ALLOCATION 必须在 FreeRTOSConfig.h 中设置为 1, xStreamBufferCreateStatic() 才可用。此外,configUSE_SB_COMPLETED_CALLBACK 必须在 FreeRTOSConfig.h 中设置为 1,xStreamBufferCreateStaticWithCallback() 才可用。
  将 FreeRTOS/source/stream_buffer.c 源文件包含在构建中即可启用流缓冲区功能。
参数:
  xBufferSizeBytes pucStreamBufferStorageArea 参数所指向的缓冲区的大小(单位:字节)。
  xTriggerLevelBytes 在流缓冲区中被阻塞以等待数据的任务离开阻塞状态之前, 流缓冲区中必须存在的字节数。例如,如果一个任务在读取触发等级为 1 的空流缓冲区时被阻塞, 那么当单个字节写入缓冲区或该任务的阻塞时间结束时,该任务将被解除阻塞。 另一个例子是,如果一个任务在读取触发等级为 10 的空流缓冲区时被阻塞, 那么直到流缓冲区至少包含 10 个字节或该任务的阻塞时间结束之前,该任务将不会被解除阻塞。如果 读取任务的阻塞时间在达到触发等级之前过期,那么该任务仍将接收实际可用的字节数 。将触发等级设置为 0 将导致使用触发等级 1。指定 一个大于缓冲区大小的触发等级是无效的。
  pucStreamBufferStorageArea 必须指向一个大小至少为 xBufferSizeBytes + 1 的 uint8_t 数组。这是一个数组,当将流写入流缓冲区时, 流会被复制到这个数组中。
  pxStaticStreamBuffer 必须指向一个 StaticStreamBuffer_t 类型的变量,它将用于保存流缓冲区的数据结构体。
  pxSendCompletedCallback 当对流缓冲区的数据写入导致缓冲区的字节数超过触发等级时调用的回调函数 。如果参数为 NULL,则使用 sbSEND_COMPLETED 宏所提供的默认实现 。发送完成的回调函数必须具有 StreamBufferCallbackFunction_t 定义的原型,即:

void vSendCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken );

  pxReceiveCompletedCallback 当从流缓冲区读取数据(多于 0 字节)时调用的回调函数。如果参数为 NULL, 则使用 sbRECEIVE_COMPLETED 宏所提供的默认实现。接收完成回调函数必须 具有 StreamBufferCallbackFunction_t 定义的原型,即:

void vReceiveCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken );

返回值:
  如果成功创建了流缓冲区,那么将返回一个所创建流缓冲区的句柄。如果 pucStreamBufferStorageArea 或 pxStaticstreamBuffer 为 NULL,则返回 NULL。
用法示例:

/* 用于确定用于保存流的数组的尺寸。可用的* 空间实际上会比这少一个,所以是999。*/
#define STORAGE_SIZE_BYTES 1000/* 定义在流缓冲区内实际容纳流的内存。*流缓冲区的内存。*/
static uint8_t ucStreamBufferStorage[ STORAGE_SIZE_BYTES ]static uint8_t ucStreamBufferWithCallbackStorage[ STORAGE_SIZE_BYTES ];/* 用于保存流缓冲区结构的变量。*/
StaticStreamBuffer_t xStreamBufferStruct;
StaticStreamBuffer_t xStreamBufferWithCallbackStruct;void vSendCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken )
{/* 在此插入代码,当对流缓冲区进行数据写入操作时,该代码被调用。* 在此插入代码,当对流缓冲区的数据写入操作导致缓冲区内的字节数* 导致缓冲区内的字节数超过了触发水平。* 当流缓冲区被用来在多核处理器之间传递数据时,这很有用。* 在一个多核处理器上的核心之间传递数据时,这一点非常有用。在这种情况下,这个回调* 可以实现在另一个CPU核中产生一个中断。* 然后,中断的服务程序可以使用* xStreamBufferSendCompletedFromISR() API函数来检查,如果有必要的话* 必要时解除对一个正在等待数据的任务的封锁。*/
}void vReceiveCallbackFunction( StreamBufferHandle_t xStreamBuffer,BaseType_t xIsInsideISR,BaseType_t * const pxHigherPriorityTaskWoken )
{/* 在这里插入代码,当数据从流中读出时被调用。* 缓冲区。* 当流缓冲区被用来在多核之间传递数据时,这很有用。* 这在多核处理器上的核心之间传递数据时非常有用。在这种情况下,这个回调* 可以实现在另一个CPU核中产生一个中断。* 然后,中断的服务程序可以使用* xStreamBufferReceiveCompletedFromISR() API函数来检查,如果有必要的话* 必要时解除对一个等待发送数据的任务的封锁。*/
}void MyFunction( void )
{StreamBufferHandle_t xStreamBuffer, xStreamBufferWithCallback;const size_t xTriggerLevel = 1;/* 创建一个流缓冲区,使用定义的函数* 使用sbSEND_COMPLETED()和sbRECEIVE_COMPLETED()* 的宏作为发送和接收完成的回调函数。*/xStreamBuffer = xStreamBufferCreateStatic( sizeof( ucStreamBufferStorage ),xTriggerLevel,ucStreamBufferStorage,&xStreamBufferStruct );/* 创建一个流缓冲区,使用函数* vSendCallbackFunction和vReceiveCallbackFunction作为发送*和接收完成的回调函数。*/xStreamBufferWithCallback = xStreamBufferCreateStaticWithCallback(sizeof( ucStreamBufferWithCallbackStorage )。xTriggerLevel。ucStreamBufferWithCallbackStorage。&xStreamBufferWithCallbackStruct,vSendCallbackFunction。vReceiveCallbackFunction );/* 由于pucStreamBufferStorageArea或pxStaticStreamBuffer* 参数为NULL,所以xStreamBuffer和xStreamBufferWithCallback* 将不会是NULL,并且可以用来引用创建的流* 在其他流缓冲区的API调用中引用创建的流缓冲区。*//* 其他使用流缓冲区的代码可以到这里。*/
}

三、xStreamBufferSend()

API原型:

size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,const void *pvTxData,size_t xDataLengthBytes,TickType_t xTicksToWait );

  将字节发送到流缓冲区。 字节复制到流缓冲区中。
  注意: 在 FreeRTOS 对象中唯一的流缓冲区实现 (消息缓冲区实现也是如此,因为消息缓冲区构建在 假定只有一个任务或中断会写到 缓冲区(写入器),而且只有一个任务或中断会从 缓冲区(读取器)读取。 写入器和读取器为不同的任务或中断是安全的, 或中断,但与其他 FreeRTOS 对象不同, 拥有多个不同的编写器或多个不同的读取器是不安全的。 如果有 多个不同的写入器,那么应用程序写入器必须把对写入 API 函数(如 xStreamBufferSend())的每个调用放在一个临界区内, 并使用发送阻塞时间 0。 同样,如果有多个不同的读取器, 那么应用程序必须把对读取 API 函数(如 xStreamBufferReceive())的每个调用放在一个临界区内, 并使用接收阻塞时间 0。
  使用 xStreamBufferSend() 从任务写入流缓冲区。 使用 xStreamBufferSendFromSISR () 从 中断服务程序 (ISR) 写入流缓冲区。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 作为流发送目标缓冲区的流缓冲区的句柄 。
  pvTxData 一个指向缓冲区的指针, 该缓冲区用于保存要复制到流缓冲区的字节。
  xDataLengthBytes 从 pvTxData 复制到流缓冲区的最大字节数 。
  xTicksToWait 当流缓冲区的空间太小, 无法 容纳 另一个 xDataLengthBytes 的字节时,任务应保持在阻塞状态,以等待流缓冲区中出现足够空间的最长时间。 阻塞时间的单位为 tick 周期, 因此,它代表的绝对时间取决于 tick 频率。 宏 宏pdMS_TO_TICKS()可以用来将以毫秒为单位的时间 转换为以 tick 为单位的时间。 将xTicksToWait设置为portMAX_DELAY会 导致任务无限期地等待(没有超时),前提是 INCLUDE_vTaskSuspend 在 FreeRTOSConfig.h 中设置为 1。 如果一个任务 在向缓冲区写入所有 xDataLengthBytes 之前就超时, 它仍然会写入尽可能多的字节数。 处于阻塞状态的任务不会使用任何 CPU 时间 。
返回值:
  写入流缓冲区的字节数。 如果一个任务 在向缓冲区写入所有 xDataLengthBytes 之前就超时, 它仍然会写入尽可能多的字节数。
用法示例:

void vAFunction( StreamBufferHandle_t xStreamBuffer )
{size_t xBytesSent;uint8_t ucArrayToSend[] = { 0, 1, 2, 3 };char *pcStringToSend = "要发送的字符串";const TickType_t x100ms = pdMS_TO_TICKS( 100 );/* 发送一个数组到流缓冲区,最多阻塞100ms以等待流缓冲区有足够的空间。等待流缓冲区内有足够的空间。*/xBytesSent = xStreamBufferSend( xStreamBuffer,( void * ) ucArrayToSend,sizeof( ucArrayToSend ),x100ms);if( xBytesSent != sizeof( ucArrayToSend )){/* 对xStreamBufferSend()的调用在缓冲区有足够的空间容纳数据之前就超时了。缓冲区内有足够的空间来写入数据之前,调用xStreamBufferSend()就已经超时了,但它确实成功地写入了xBytesSent字节。成功地写入了xBytesSent字节。*/}/* 发送字符串到流缓冲区。 如果缓冲区没有缓冲区内没有足够的空间,立即返回。*/xBytesSent = xStreamBufferSend( xStreamBuffer,( void * ) pcStringToSend,strlen( pcStringToSend ), 0 );if( xBytesSent != strlen( pcStringToSend )){/* 整个字符串不能被添加到流缓冲区,因为缓冲区内没有足够的空闲空间,但xBytesSent字节已经被发送。已被发送。 可以再次尝试发送剩余的字节。*/}
}

四、xStreamBufferSendFromISR()

API原型:

size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,const void *pvTxData,size_t xDataLengthBytes,BaseType_t *pxHigherPriorityTaskWoken );

  向 流缓冲区 发送字节流的中断安全版本 API 函数。
  注意: 与其他 FreeRTOS 对象都不同的是,流缓冲区的实现 (消息缓冲区的实现也是如此,因为消息缓冲区是建立在流缓冲区之上的) 流缓冲区的实现假定只有一个任务或中断将写入缓冲区(写入程序), 缓冲区(写入器),只有一个任务或中断会从 (读取程序)。 写入和读取 不同的任务或中断是安全的,但与其他FreeRTOS对象不同, 有多个不同的写入或多个不同的读取是不安全的。 如果 多个不同的写入器, 那么应用程序写入器必须把对写入 API 函数(如 xStreamBufferSend())的每个调用放在一个临界区内, 并使用发送阻塞时间 0。 同样,如果有多个不同的读取器, 那么应用程序必须把对读取 API 函数(如 xStreamBufferReceive())的每个调用放在一个临界区内, 并使用接收阻塞时间 0。
  使用 xStreamBufferSend() 从任务写入流缓冲区。 使用 xStreamBufferSendFromSISR () 从 中断服务程序 (ISR) 写入流缓冲区。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 作为流发送目标缓冲区的流缓冲区的句柄 。
  pvTxData 一个指向缓冲区的指针, 该缓冲区用于保存要复制到流缓冲区的字节。
  xDataLengthBytes 从 pvTxData 复制到流缓冲区的最大字节数 。
  pxHigherPriorityTaskWoken (这是一个可选参数,可以设置为 NULL。) 一个流缓冲区有可能会 有一个在其上阻塞的任务,以等待数据。 调用 xStreamBufferSendFromISR() 可以使数据可用,进而导致正在等待数据的任务 离开阻塞状态。 如果调用 xStreamBufferSendFromSISR() 导致任务离开阻塞状态,并且 未阻塞任务的优先级高于当前执行的任务( 被中断的任务),那么 xStreamBufferSendFromISR() 将在内部 把 *pxHigherPriorityTaskWoken 设置为 pdTRUE。 如果 xStreamBufferSendFromSISR() 将此值设置为 pdTRUE,那么通常应在 退出中断之前执行上下文切换。 这将 确保中断直接返回到最高优先级的“就绪” 状态任务。 * pxHigherPriorityTaskWoken在传递给函数之前 应将其设置为 pdFALSE。 有关示例,请参阅下面的示例代码。
返回值:
  写入流缓冲区的字节数。 如果一个任务 在向缓冲区写入所有 xDataLengthBytes 之前就超时, 它仍然会写入尽可能多的字节数。
用法示例:

/* 一个已经被创建的流缓冲区。*/
StreamBufferHandle_t xStreamBuffer;void vAnInterruptServiceRoutine( void )
{size_t xBytesSent。char *pcStringToSend = "要发送的字符串";BaseType_t xHigherPriorityTaskWoken = pdFALSE; /*初始化为pdFALSE。*//* 尝试将字符串发送到流缓冲区。*/xBytesSent = xStreamBufferSendFromISR( xStreamBuffer,( void * ) pcStringToSend,strlen( pcStringToSend ),&xHigherPriorityTaskWoken );if( xBytesSent != strlen( pcStringToSend ) ){/* 在流缓冲区中没有足够的自由空间来写入整个字符串。字符串,所以写了xBytesSent字节。*/}/* 如果xHigherPriorityTaskWoken在xStreamBufferSendFromISR()中被设置为pdTRUE,那么就会有一xStreamBufferSendFromISR()中设置为pdTRUE,那么一个优先级高于当前执行任务优先级的任务就会被写入。的任务被解锁,应该进行上下文切换以确保ISR应执行上下文切换,以确保ISR返回到未被阻止的任务。 在大多数FreeRTOS端口中,这可以通过简单地传递xHigherPriorityTaskWoken到taskYIELD_FROM_ISR()中,它将测试这个变量值,并在必要时进行上下文切换。 检查文件中关于端口的具体说明。*/taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}

五、xStreamBufferReceive()

API原型:

size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,void *pvRxData,size_t xBufferLengthBytes,TickType_t xTicksToWait );

  注意: 与其他 FreeRTOS 对象都不同的是,流缓冲区的实现 (消息缓冲区的实现也是如此,因为消息缓冲区是建立在流缓冲区之上的) 流缓冲区的实现假定只有一个任务或中断将写入缓冲区(写入程序), 缓冲区(写入器),只有一个任务或中断会从 (读取程序)。 写入和读取 不同的任务或中断是安全的,但与其他FreeRTOS对象不同, 有多个不同的写入或多个不同的读取是不安全的。 如果 多个不同的写入器, 那么应用程序写入器必须把对写入 API 函数(如 xStreamBufferSend())的每个调用放在一个临界区内, 并使用发送阻塞时间 0。 同样,如果有多个不同的读取器, 那么应用程序必须把对读取 API 函数(如 xStreamBufferReceive())的每个调用放在一个临界区内, 并使用接收阻塞时间 0。
  使用 xStreamBufferReceive() 从任务的流缓冲区读取数据。 使用 xStreamBufferReceiveFromISR() 从 中断服务程序 (ISR) 的流缓冲区读取数据。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 要接收字节来自的流缓冲区的句柄。
  pvRxData 指向缓冲区的指针,接收的字节将被复制到该缓冲区 。
  xBufferLengthBytes pvRxData 参数 所指向的缓冲区的长度。 这会设置一次调用中 接收的最大字节数。 xStreamBufferReceive 将返回尽可能多的字节数, 直到达到由   xBufferLengthBytes 设置的最大字节数为止。
  xTicksToWait 当流缓冲区为空时, 任务应保持在阻塞状态以等待数据的最长时间 。 如果 xTicksToWait 为 0,xStreamBufferReceive() 将立即返回。 阻塞时间的单位为 tick 周期, 因此,它代表的绝对时间取决于 tick 频率。 宏 pdMS_TO_TICKS() 可以 用来将以毫秒为单位的时间转换成以 tick 为单位的时间 。 将 xTicksToWait 设置为 portMAX_DELAY 将 将导致任务无限期等待(不超时),前提是 INCLUDE_vTaskSuspend 在 FreeRTOSConfig.h 中设置为 1。 处于阻塞状态的任务不会使用任何 CPU 时间 。
返回值:
  从流缓冲区读取的字节数。 这将为最多等于 xBufferLengthBytes 的可用字节数。 例如:
如果触发等级为 1 (触发等级是在创建流缓冲区时设置的)-

  • 如果 xBufferLengthBytes 为 10,且在调用 xStreamBufferReceive() 时,流缓冲区中包含 5 个字节,则 xStreamBufferReceive() 不会阻塞,从缓冲区中读取 5 个字节,并返回 5
      如果 xBufferLengthBytes 为 10,且在调用 xStreamBufferReceive() 时,流缓冲区中包含 50 个字节,则 xStreamBufferReceive() 不会阻塞,从缓冲区中读取 10 个字节,并返回 10。
      如果 xBufferLengthBytes 为 10,且在调用 xStreamBufferReceive() 时,流缓冲区中包含 0 个字节,xTicksToWait 为 100,并且在 50 个 tick 后缓冲区中收到 5 个字节,则 xStreamBufferReceive() 将进入为期 50 个 tick 的阻塞状态(直到数据到达缓冲区为止),之后它将从缓冲区中读取 5 个字节,并返回 5。
      如果 xBufferLengthBytes 为 10,且在调用 xStreamBufferReceive() 时,流缓冲区中包含 0 个字节,xTicksToWait 为 100,并且在 100 个 tick 内缓冲区中未收到字节,则 xStreamBufferReceive() 将进入为期 100 个 tick (完整阻塞时间)的阻塞状态,之后它将返回 0。
  • 如果触发等级为 6 -
      如果 xBufferLengthBytes 为 10,且在调用 xStreamBufferReceive() 时,流缓冲区中包含 0 个字节,xTicksToWait 为 100,并且在 50 个 tick 后缓冲区中收到 10 个字节,则 xStreamBufferReceive() 将进入为期 50 个 tick 的阻塞状态(直到至少有等于触发等级的字节数到达缓冲区为止),之后它将从缓冲区中读取 10 个字节,并返回 10。
      如果 xBufferLengthBytes 为 10,且在调用 xStreamBufferReceive() 时,流缓冲区中包含 0 个字节,xTicksToWait 为 100,并且在 50 个 tick 后缓冲区中收到 5 个字节,则 xStreamBufferReceive() 将在完整的 100 个 tick 阻塞周期内保持阻塞状态(因为缓冲区中的数据量永远无法达到触发等级),之后它将从缓冲区中读取 5 个字节,并返回 5。
    用法示例:
void vAFunction( StreamBuffer_t xStreamBuffer )
{uint8_t ucRxData[ 20 ];size_t xReceivedBytes;const TickType_t xBlockTime = pdMS_TO_TICKS( 20 );/*从流缓冲区接收最多一个sizeof( ucRxData ) 字节。在阻塞状态下等待(所以不使用任何CPU的处理时间),最多100ms,以接收完整的sheet。在阻塞状态下最多等待100ms,以获得全部的sizeof( ucRxData ) 字节数。可用。*/xReceivedBytes = xStreamBufferReceive( xStreamBuffer,( void * ) ucRxData,sizeof( ucRxData ),xBlockTime );if( xReceivedBytes > 0 ){/* 一个ucRxData包含另一个xRecievedBytes字节的数据,可以在这里处理。在此处理.... */}
}

六、xStreamBufferReceiveFromISR()

xTaskCreate API原型:

size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,void *pvRxData,size_t xBufferLengthBytes,BaseType_t *pxHigherPriorityTaskWoken );

  一个从 流缓冲区中接收字节的 API 函数的中断安全版本。
  注意: 与其他 FreeRTOS 对象都不同的是,流缓冲区的实现 (消息缓冲区的实现也是如此,因为消息缓冲区是建立在流缓冲区之上的) 流缓冲区的实现假定只有一个任务或中断将写入缓冲区(写入程序), 缓冲区(写入器),只有一个任务或中断会从 (读取程序)。 写入和读取 不同的任务或中断是安全的,但与其他FreeRTOS对象不同, 有多个不同的写入或多个不同的读取是不安全的。 如果 多个不同的写入器, 那么应用程序写入器必须把对写入 API 函数(如 xStreamBufferSend())的每个调用放在一个临界区内, 并使用发送阻塞时间 0。 同样,如  果有多个不同的读取器, 那么应用程序必须把对读取 API 函数(如 xStreamBufferReceive())的每个调用放在一个临界区内, 并使用接收阻塞时间 0。
  使用 xStreamBufferReceive() 从任务的流缓冲区读取数据。 使用 xStreamBufferReceiveFromISR() 从 中断服务程序 (ISR) 的流缓冲区读取数据。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 要接收字节来自的流缓冲区的句柄。
  pvRxData 指向缓冲区的指针,接收的字节将被复制到该缓冲区 。
  xBufferLengthBytes pvRxData 参数 所指向的缓冲区的长度。 这会设置一次调用中 接收的最大字节数。 xStreamBufferReceive 将返回尽可能多的字节数, 直到达到由 xBufferLengthBytes 设置的最大字节数为止。
  pxHigherPriorityTaskWoken (这是一个可选参数,可以设置为 NULL。) 一个流缓冲区有可能会 有一个任务阻塞在上面,等待空间可用。 调用 xStreamBufferReceiveFromISR() 可以使空间可用,进而导致正在等待空间的任务 离开阻塞状态。 如果调用 xStreamBufferReceiveFromISR() 导致任务离开阻塞状态,并且 未阻塞任务的优先级高于当前执行的任务 (被中断的任务),那么在内部, xStreamBufferReceiveFromISR() 将把 *pxHigherPriorityTaskWoken 设置为 pdTRUE。 如果 xStreamBufferSendFromSISR() 将此值设置为 pdTRUE,那么通常应在 退出中断之前执行上下文切换。 这将 确保中断直接返回到最高优先级的就绪状态 任务。 * pxHigherPriorityTaskWoken在传递给函数之前 应该设置为pdFALSE。 有关示例,请参阅下面的示例代码。
返回值:
  从流缓冲区读取的字节数(如有)。
用法示例:

/* 一个已经被创建的流缓冲区。*/
StreamBuffer_t xStreamBuffer;void vAnInterruptServiceRoutine( void )
{uint8_t ucRxData[ 20 ];size_t xReceivedBytes;BaseType_t xHigherPriorityTaskWoken = pdFALSE; /*初始化为pdFALSE。*//* 从流缓冲器中接收下一个流。*/xReceivedBytes = xStreamBufferReceiveFromISR( xStreamBuffer,( void * ) ucRxData,sizeof( ucRxData ),&xHigherPriorityTaskWoken);if( xReceivedBytes > 0 ){/* ucRxData包含从流缓冲区读取的xReceivedBytes。在这里处理流.... */}/* 如果xHigherPriorityTaskWoken在xStreamBfferReceiveFromISR()中被设置为pdTRUE,那么一个具有优先权的任务就会在xStreamBffer中进行处理。xStreamBufferReceiveFromISR()中设置为pdTRUE,那么一个优先级高于当前执行的任务的的任务被解锁,那么就应该进行上下文切换,以确保 ISR应执行上下文切换,以确保ISR返回到未被阻止的任务。 在大多数FreeRTOS端口中,这可以通过简单地传递xHigherPriorityTaskWoken进入taskYIELD_FROM_ISR(),它将测试这个变量值,并在必要时进行上下文切换。 检查文件中关于端口的具体说明。*/taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}

七、vStreamBufferDelete()

API原型:

void vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer );

  删除之前创建的流缓冲区 (通过调用 xStreamBufferCreate() 或 xStreamBufferCreateStatic() 创建)。 如果使用动态内存(即由 xStreamBufferCreate())创建流缓冲区, 则会释放分配的内存。
  删除流缓冲区后, 不得使用流缓冲区句柄。
  将 FreeRTOS/source/stream_buffer.c 源文件包含在构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 要删除的流缓冲区的句柄。

八、xStreamBufferBytesAvailable()

API原型:

size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer );

  查询流缓冲区以查看它包含多少数据, 该值等于在流缓冲区为空之前 可以从流缓冲区读取的字节数。
  将 FreeRTOS/source/stream_buffer.c 源文件包含在构建中 即可启用流缓冲区功能。
参数:
  xStreamBuffer 正在查询的流缓冲区的句柄。
返回值:
  在流缓冲区为空之前可从流缓冲区读取的 字节数。

九、xStreamBufferSpacesAvailable()

API原型:

size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer );

  查询流缓冲区以查看有多少可用空间—— 等于在流缓冲区满之前可以向它发送的数据量 。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 正在被查询的流缓冲区的句柄。
返回值:
  在流缓冲区满之前, 可以写入流缓冲区的字节数。

十、xStreamBufferSetTriggerLevel()

API原型:

BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,size_t xTriggerLevel );

  流缓冲区的触发等级是指在流缓冲区上被阻塞以等待数据的任务离开阻塞状态之前,流缓冲区中必须包含的字节数。例如,如果一个任务在读取触发等级为 1 的空流缓冲区时被阻塞,那么当单个字节写入缓冲区或该任务的阻塞时间到期时,该任务将被解除阻塞。另一个示例是,如果一个任务在读取触发等级为 10 的空流缓冲区时被阻塞,那么直到流缓冲区至少包含 10 个字节或该任务的阻塞时间结束,该任务才会被解除阻塞。如果读任务的阻塞时间在达到触发等级之前过期,那么该任务仍将接收实际可用的字节数。将触发等级设置为 0 将导致使用触发等级 1。指定大于缓冲区大小的触发等级是无效的。
  触发等级在创建流缓冲区时设置,可使用 xStreamBufferSetTriggerLevel() 进行修改。
  将 FreeRTOS/source/stream_buffer.c 源文件包含在构建中即可启用流缓冲区功能。
参数:
  xStreamBuffer 正在更新的流缓冲区的句柄。
  xTriggerLevel 流缓冲区的新触发等级。
返回值:
  如果 xTriggerLevel 小于或等于流缓冲区的长度,将更新触发等级并返回 pdTRUE。否则,返回 pdFALSE。

十 一、xStreamBufferReset()

API原型:

BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer );

  将流缓冲区重置为其初始空状态。 任何在流缓冲区的数据 都将被丢弃。 只有当没有任务被阻塞以等待向流缓冲区发送或从流缓冲区接收时, 流缓冲区才能被重置 。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 正在重置的流缓冲区的句柄。
返回值:
  如果流缓冲区重置,则返回 pdPASS。 如果有 一个任务被阻塞,等待向流缓冲区发送或从流缓冲区读取, 那么流缓冲区将不会被重置,并返回 pdFAIL。

十二、xStreamBufferIsEmpty()

API原型:

BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer );

  查询流缓冲区以查看其是否为空。 如果流缓冲区不包含任何数据,则为空。
  通过将源文件 FreeRTOS/source/stream_buffer.c包括在内,启用流缓冲区功能 即可启用流缓冲区功能。
参数:
  xStreamBuffer 正在查询的流缓冲区的句柄。
返回值:
  如果流缓冲区为空,则返回 pdTRUE。 否则 返回 pdFALSE。

十三、xStreamBufferIsFull()

API原型:

BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer );

  查询流缓冲区以查看其是否已满。 如果一个流缓冲区没有任何可用空间,则该流缓冲区已满,因此无法 接受任何更多数据。
  通过将 FreeRTOS/source/stream_buffer.c 源文件纳入构建中, 即可启用流缓冲区功能。
参数:
  xStreamBuffer 正在被查询的流缓冲区的句柄。
返回值:
  如果流缓冲区已满,则返回 pdTRUE。 否则 返回 pdFALSE。

十四、用法示例

数据流

/*** @file 19_StreamBuffer.c* @author WSP* @brief 数据流* @version 0.1* @date 2022-10-23** @copyright Copyright (c) 2022**/
#include "FreeRTOS_Include.h"const static char *TAG = "APP_StreamBuffer";#define USER_XSTREAMBUFFERSPACESAVAILABLE
/*** @brief   Task_Send_Buffer* @param   arg* @return  NULL
*/
void Task_Send_Buffer(void *arg)
{char SendBuffer[50];char count = 0,str_len = 0,send_len = 0;StreamBufferHandle_t StreamBufferHandle = (StreamBufferHandle_t)arg;vTaskDelay(1000/portTICK_PERIOD_MS);while (1) {str_len = sprintf(SendBuffer,"My name is wsp counter value:%d",count);count ++;send_len = xStreamBufferSend(StreamBufferHandle,(void *)SendBuffer,str_len,portMAX_DELAY);if(send_len == str_len) {ESP_LOGI(TAG, "Task_Send_Buffer OK:%d",send_len);} else {ESP_LOGI(TAG, "Task_One Notify fail:%d",send_len);}vTaskDelay(3000/portTICK_PERIOD_MS);}
}
/*** @brief   Task_Receive_Buffer* @param   arg* @return  NULL
*/
void Task_Receive_Buffer(void *arg)
{StreamBufferHandle_t StreamBufferHandle = (StreamBufferHandle_t)arg;char receive_data[50];char receive_len = 0;while (1) {memset(receive_data,0,sizeof(receive_data));receive_len = xStreamBufferReceive(StreamBufferHandle, (void *)receive_data,sizeof(receive_data),portMAX_DELAY);if(receive_len) {ESP_LOGI(TAG, "Task_Receive_Buffer receive len:%d data:%s",receive_len,receive_data);}}
}
/*** @brief   Task_Monitoring* @param   arg* @return  NULL
*/
void Task_Monitoring(void *arg)
{StreamBufferHandle_t StreamBufferHandle = (StreamBufferHandle_t)arg;int receive_len = 0;while (1) {#ifdef USER_XSTREAMBUFFERBYTESAVAILABLEreceive_len = xStreamBufferBytesAvailable(StreamBufferHandle);#elsereceive_len = xStreamBufferSpacesAvailable(StreamBufferHandle);#endifif(receive_len) {#ifdef USER_XSTREAMBUFFERBYTESAVAILABLEESP_LOGI(TAG, "Task_Monitoring USER_XSTREAMBUFFERBYTESAVAILABLE  receive len:%d",receive_len);#elseESP_LOGI(TAG, "Task_Monitoring USER_XSTREAMBUFFERSPACESAVAILABLE receive len:%d",receive_len);#endif}vTaskDelay(1000/portTICK_PERIOD_MS);}
}
/*** @brief   创建函数初始化* @param   NULL* @return  NULL*/
void StreamBuffer_Init(void)
{StreamBufferHandle_t StreamBufferHandle;StreamBufferHandle = xStreamBufferCreate(500,100);if(StreamBufferHandle != NULL) {// 创建任务一xTaskCreate(Task_Send_Buffer,"Task_Send",1024 * 5,(void *)StreamBufferHandle,1,NULL);// 创建任务二xTaskCreate(Task_Receive_Buffer,"Task_Receive",1024 * 5,(void *)StreamBufferHandle,2,NULL);// 创建任务三xTaskCreate(Task_Monitoring,"Task_Monitoring",1024 * 5,(void *)StreamBufferHandle,2,NULL);ESP_LOGI(TAG,"task Create ok");}vTaskDelay(2000/portTICK_PERIOD_MS);        // 延时等待
}

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

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

微信小程序开发教程:wxml

wxml与html的区别 wxss与css的区别 数据绑定基本原则 在data中定义数据在wxml中使用数据Mustache语法应用场景 绑定内容(见上图实例)绑定属性运算(三元运算、算术运算)注:Math.random() 该值是double 【0,…...

Pico VR 一体机初测

最近换了一家有自己时间的互联网公司,编程了4年,很少有自己的时间来写博客,以后可能会分享跟记录自己一路上走来的经验以及心得 今天我们来一起学习一下PicoVR 一体机的相关功能 1.PicoForUnity SDK点这里下载 2.导入SDK后按照文档的要求我…...

百度token怎么获取_【专栏精选】实战:百度语音识别

洪流学堂公众号回复语音识别获取源码工程。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“今天给你来点刺激的。” 小新满面红光:“啥刺激的?人家可还是个小孩子。” 大智:“带你实战!” 小新…...

Bitset 源码解析

目录 Bitset介绍 结构组成 构造函数 无参构造函数 有参构造函数 初始化函数 常用方法 【set】设置索引位有效 【get】获取索引位是否存在 【flip】索引翻转 【or】或运算 【xor】异或运算 【and】与运算 【andNot】非运算 【cardinality】计算有效索引位的数量…...

玩绝地求生:刺激战场如何设置灵敏度效果最好?刺激战场灵敏度攻略分享

关于刺激战场灵敏度的设置一般是根据个人喜好,在这里给大家分享一下我认为比较好用的灵敏度设置,当然根据版本的不同,灵敏度也在不断的变化,我现在说的是针对7月5号刺激战场更新后的最新版本。相信大多数人都爱用红点,…...

MySQL非空、唯一、主键、默认、外键约束,数据库设计,表之间的关系,多表查询之内连接、外连接、子查询,事务简介、事务四大特征

文章目录约束概念&分类案例非空约束唯一约束主键约束默认约束外键约束数据库设计软件开发的步骤数据库设计概念数据库设计的步骤表关系表关系之一对多表关系之多对多表关系之一对一总结多表查询内连接外连接子查询多表查询分析步骤事务事务简介事务四大特征MySQL事务默认自…...

Android APP分享微信小程序

需求: Android APP端 将公司的微信小程序 分享至微信好友 分析: 微信开放平台SDK支持小程序类型分享,详见官方文档:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/Android.html a) 要求发起分享的App…...

Python库functools详解

functools模块是Python的标准库的一部分,它是为高阶函数而实现的。高阶函数是作用于或返回另一个函数或多个函数的函数。一般来说,对这个模块而言,任何可调用的对象都可以作为一个函数来处理。 functools 提供了 11个函数: 1. …...

java反射案例练习。写一个“框架“,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法

/ 框架类 **案例: *需求:写一个"框架",不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法 *实现: 1.配置文件 2.反射、 步骤: 1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中 2.在程…...

MQTT消息框架paho-mqtt与emqx安装部署与启动,python

MQTT消息框架paho-mqtt与emqx安装部署与启动,python (1)安装MQTT消息框架paho-mqtt pip install paho-mqtt (2)写一个mqtt的消息订阅端sub.py : import jsonimport paho.mqtt.client as mqtt"""rc 值 0 连接成功 1 协议版本错误 2 无…...

图书借阅小程序

图书管理在线借阅小程序(支持连锁模式) 为了方便用户借阅图书,更合理的管理图书,开发了图书在线借阅小程序,用户可以线上直接找到自己想借阅的图书,可以看到这本书的是否有库存,然后下单借阅之后,可以快递…...

U-SEM体验模型——让游戏交互设计的维度更加清晰

U-SEM体验模型——让游戏交互设计的维度更加清晰U-SEM体验模型——让游戏交互设计的维度更加清晰游戏交互设计的定位游戏交互设计的场景游戏对玩家输出玩家对游戏输入游戏交互体验的维度——U-SEM体验模型游戏交互的复杂度游戏交互设计的应用游戏交互的实际工作游戏交互工作的未…...

IL汇编语言教程

原文地址 http://www.cnblogs.com/xiaoxiangfeizi/archive/2011/08/08/2130768.html原文作者 潇湘妃子IL汇编语言介绍(译)最近在学习IL,在CodeProject上看到一篇老外的文章,介绍IL的,写的比较好,就翻译了一下&#xff…...

基于视觉导航的自主机器人简介(一)

自主移动机器人 当代,机器人系统已经在工业自动化生产、监控系统、AGV(自主导引车)、医疗等各个领域得到较广应用。美国的军用机器人研发一直处于全球领先地位(如:BigDog),日本的服务机器人不仅会带来巨大的经济效益&…...

Pygame实战(一):随机抽位置

文章目录Pygame实战(一):随机抽位置一、 概述1、 简介2、 设计思路3、 成果展示二、 开始编程1、 配置文件2、 程序界面2.1 读取配置2.2 工具类2.3 显示区2.4 操作区2.5 随机矩形3、 事件处理4、 总程序三、 程序打包1、 规范文件2、 打包运行…...

MySQL入门学习,java调用接口的原理

4.通过组合分析,可产生新数据 4.数据库的发展历程 1.没有数据库,使用磁盘文件存储数据 2.层次结构模型数据库 3.网状结构模型数据库 4.关系结构模型数据库:使用二维表格来存储数据 5.关系-对象模型数据库 常见的数据库软件:…...

c51汇编语言位操作,51单片机汇编语言教程之单片机位操作指令的详细资料说明...

本文档的主要内容详细介绍的设计51单片机汇编语言教程之单片机位操作指令的详细资料说明。前面那些流水灯的例程,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、…...

视觉惯性组合导航技术最新综述:应用优势、主要类别及一种视觉惯性组合导航无人系统开发验证平台分享

导读: 随着无人机、无人车以及移动机器人的井喷式发展,导航技术成为了制约无人平台广泛应用的瓶颈技术之一。在应用需求的牵引下,视觉惯性组合导航技术,特别是视觉与微惯性传感器的组合,逐渐发展成为当前自主导航及机器人领域的研…...

第一代微型计算机中没有只有汇编语言,[]汇编语言教程2微型计算机系统的概述.ppt...

[]汇编语言教程2微型计算机系统的概述汇编语言 无私哥奉献 2 微型计算机系统的概述 微型计算机的基本结构 8086/8088微处理器的结构与组成 Pentium微处理器 2.1 微型计算机的基本结构 计算机的基本组成 微机硬件系统结构 2.1.1 计算机的组成 2.1.1 计算机硬件组成框图 1) 中央处…...

SpringBoot实战(十一)集成RebbitMQ

目录1.工作原理图1.1 配置阶段1.2 生产者1.3 消费者2.Maven依赖3.常用交换机类型3.1 direct 直连交换机3.2 fanout 广播交换机3.3 topic 主题交换机4.Direct 直连交换机4.1 yml配置4.2 配置类4.3 消息推送类4.4 消息监听类4.5 测试5.Fanout 广播交换机5.1 配置类5.2 消息推送类…...

内存以及垃圾回收

一、直接内存 属于系统内存 常见于NIO操作,用于数据缓冲区 分配回收成本比较高,但读写性能高 不受JVM垃圾回收管理 2、分配和回收的原理 会出现内存溢出 调用free.memory方法使内存释放,使用了unsafe对象完成直接内存的分配回收&#…...

大数据运维---Linux安装hadoop Hadoop HA集群部署

1.Hadoop下载好之后解压到相应目录: 为了方便管理,我们使用mv把名称更改为hadoop [rootmaster ~]# tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/src/ [rootmaster ~]# cd /usr/local/src/ [rootmaster src]# ls hadoop-2.7.1 java zookeeper [rootm…...

融资融券交易

融资融券交易,又称信用交易,分为融资交易和融券交易。通俗的说,融资交易就是投资者以资金或证券作为质押,向券商借入资金用于证券买卖,并在约定的期限内偿还借款本金和利息;融券交易是投资者以资金或证券作…...

读书笔记之《史记》读后感心得体会

读书笔记之《史记》读后感心得体会: 《史记》是中国历史上第一部纪传体通史,全书共一百三十篇,分为本纪、书、表、世家、列传五种形式。传记的作者是西汉时期的司马迁。《史记》约成书于公元前104年至公元前91年,本来是没有书名的…...

如何判断链表中是否有环并找出环的入口位置

假如一个链表中存在环,那么可以利用哈希法和双指针法来判断是否存在环,同时,利用三指针就可以找到环的入口位置目录前言如何判断链表存在环哈希法快慢双指针法如何判断链表中环的位置为什么快指针只走 2 步快指针任何时候走的距离一定为慢指针的 2 倍为什么快慢指针相遇时慢…...

基于单目视觉的智能车辆视觉导航系统设计

基于计算机视觉的高速公路防撞系统是当前智能交通管理系统研究的热点之一。如何在多变的环境下快速准确地从视频图像里检测到车道和前方车辆是实现这类系统面临的最关键问题。近20年来,国内外很多研究人员对这个问题进行了大量研究,提出了多种多样的实用…...

名著赏读 | 研究生教育的历史,读《探究的场所》

一个月前立了一个flag,说是要一个月看一本书,在推送发出后,又有两位可爱的小伙伴加入了进来。经过一番寒暄,4位教研院的博士研究生开始了守望相助的读书历程。读书的过程总是让人想到一个词,“晨钟暮鼓”,像…...

通过路由器端口转发实现外网访问内网主机

背景 实验室主机在内网,想要在宿舍或者在外面也可以通过公网远程访问,不想通过付费软件。 条件 实验室内网的一个路由器,自己有管理权限。有两台电脑,内网主机A,主机B(内外网均可)。 注&…...

如何外网访问内网svn 网云穿内网穿透教你简单实现

在没有服务器,没有公网IP的情况下,我们如何才能实现在外网访问局域网内的svn服务器;这个问题对于大多部分人来说是个头疼的问题;那么我们怎么做才能做到低成本实现在外网成功访问内网的svn呢? 今天我们利用内网穿透来…...

温度对免疫代谢调节和癌症进展的影响

今年夏天的高温相信大家都有所感受,连续数十日的高温让我们感到非常炎热,但随着逐渐入秋,天气也渐渐变冷,我们需要适当地增添一些衣物。 环境温度不仅与我们的生活相关,对人体的健康也有重要影响。最近的研究将环境温度…...

lampiao靶场

今天拿到一个靶场,来试试看 1. 靶场搭建 VMware直接打开,然后启动靶机 注意:网卡设置为NAT模式 2.主机及端口探测 攻击机(kali):192.168.1.24 netdiscover -i eth0 -r 192.168.1.0/24靶机IP&#xff…...

通用正式申请破产保护及悍马公司简介

北京时间6月1日晚上20点,美国通用汽车向纽约当地南区破产法庭正式递交破产保护申请,正式进入破产保护程序。这也宣告了这家美国百年车企,美国工业经济力量的象征正式完结。作为申请破产保护的一部分,通用将指定在企业转型方面经验…...

Ubuntu 更新apt源及apt常用命令

Ubuntu 更新apt源及常用命令替换apt国内源更新软件包信息可更新的包信息更新所有包安装编译必备安装软件包查找软件包名查找包含文件的软件包名列出软件包的所有文件删除软件包替换apt国内源 执行以下命令 mv -f /etc/apt/sources.list /etc/apt/sources.list.bak cat > /…...

机器视觉中坐标系转换

机器视觉、立体视觉等等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 整体预览如下 1、世界坐标系和相机坐标系 世界坐标系,也称为测量坐标系,它是一个三维直角坐标系(Xw,Yw,Zw)。在世界坐标系中可以描述相…...

python-while循环

文章目录一、程序的三种结构二、while循环1.1:死循环1.2:循环计数习惯案例1.3:循环计数2.0:break终止循环3.0:人造死循环4.0:continue5.0循环嵌套一、程序的三种结构 1:顺序 代码自上而下执行 …...

windows 区域截屏以及延迟截屏

提起在Windows, 我们都会用到截屏功能,今天论述一下window 10系统自带的截图应用Snipping Tool 打开Snipping Tool 找到任务栏下的放大镜图标,点击 在下方输入snipping,会在左侧找到截图软件Snipping Tool,点击可进入…...

《告诉你真实的美国教育》的读后感3900字

2019独角兽企业重金招聘Python工程师标准>>> 《告诉你真实的美国教育》的读后感3900字: 文章的开篇分析了我们耳熟能详的关于美国教育的小故事,就是那个因为幼儿园的老师教了“0”这个字母,然后妈妈告老师剥夺了孩子的想象力&…...

汇编语言简明教程习题答案

习题1 (2)判断题 AX被称为累加器,在8086程序中使用很频繁。(✓)指令指针IP寄存器属于通用寄存器。(✓)8086具有8个32位通用寄存器。() 解析:8086的寄存器有…...

正则 匹配 小括号

文章目录正则表达式匹配小括号正则表达式匹配小括号 错误用法: 1(aaa1.replace(/1(aaa/g, b)正确用法: 使用中括号[]将其包裹起来 1(aaa1.replace(/1[(]aaa/g, b)F12打开控制台即可测试...

行业前沿|无人机视觉自主导航发展及视觉智能开发支撑平台介绍

01视觉自主导航技术基本介绍 近年来,无人机在多领域表现出重要应用价值。目前,无人机如何在未知封闭、无辅助导航支撑的环境中,达成“在哪里”和“环境描述”并自主智能地完成特定任务,是一个重要的研究热点方向。 其中&#xff…...

面试总结合集

序号 内容 链接地址 1 Java基础知识面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390612 2 Java集合容器面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104588551 3 Java异常面试…...

零基础入门学习汇编语言~基础知识~机器语言与汇编语言的产生及组成

1.1机器语言 不需理解,只需做简要了解。 机器语言是机器指令的集合,由0和1组成。 机器指令展开来讲就是一台机器可以正确执行的命令。 e.g.01010000(push AX) 工作原理:电平脉冲(与数字逻辑类似&#xff0…...

多模态任务新蓝海:视觉语言导航最新进展

【专栏:前沿进展】2 月 17 日,澳大利亚阿德莱德大学副教授吴琦在青源 Talk 第 12期中带来了题为「视觉-语言导航新进展:Pre-training与Sim2Real」的报告。吴琦首先简要介绍了「视觉-语言」导航任务的发展历史,进而介绍了考虑历史信…...

html设置幼圆字体,CSS font-family中文字体设置方法

网站上的字体样式都是通过CSS来控制的,CSS font-family属性可以设置文字字体样式。常用的网站字体设置代码如下:body{font-family:"Microsoft Yahei","Hiragino Sans GB","Helvetica Neue",Helvetica,tahoma,arial,Verdan…...

分布式搜索elasticsearch 索引文档的检索 入门

1、首先将如下数据提交到ES中建立索引 {"number":32768,"singer":"杨坤","size":"5109132","song":"今夜二十岁","tag":"中国好声音","timelen":319} {"number&qu…...

汇编语言教程 -- out,in

汇编语言教程 – out, in 我是有毅力又信守诺言的,汇编语言教程如期更新了! 我写汇编主要还是更具个人所学,所以不是很系统又规律,但总之还是能又很多汇编的知识的,等到整个看完,汇编一定能得心应手&#…...

外贸逼单技巧

逼单,是整个外贸销售业务过程中最重要的一个环节。如果逼单失败你的整个业务就会失败,其实整个业务过程就是一个“逼”的过程,逼要掌握技巧,不要操之过急,也不要慢条斯理,应该张弛有度,步步为营…...

linux光标变成圆圈,Ubuntu字体美化之安装使用准圆字体(附图)

该字体其实就是bitstream vera sans 方正准圆,比纯准圆要更impressive,而且含斜体,粗体和mono,这样桌面和应用程序就比较一致了,由于bitstream的西方字体的完备性,就不再被其他文字所困扰,应该…...

JAVA校园闲置物品交易系统源码+数据库,为在校师生提供闲置物品发布、物品查询、物品交易等功能

校园闲置平台 校园闲置物品交易系统,为在校师生提供闲置物品发布、物品查询、物品交易等功能。 使用JAVA编写的(javaweb和ssm) Summary 项目的技术栈项目功能介绍项目运行环境部署项目 项目的技术栈 IoC容器:Spring web框架:SpringMVC (PHP版为ThinkPHP) orm…...

仿微信发起群聊

做安卓开发也有段时间了,一直看那些大神的博客,一直在学习。这是第一次写博客,请多多指教。 废话不多说,上图 写这篇文章主要是记录一下自己做项目时遇到的一些问题,当时写这个功能的时候,也是在网上搜索了…...

名著赏读 | 《教育思想的演进》读书报告

本文来自于作者2019年11月在清华大学教育研究院《高等教育学专题研究》课程上的读书报告。要点是:教育学为什么以及如何采用历史研究方法,具体如下:(1)教育学的历史研究即为站在广阔的社会背景下去研究教育学。&#x…...

外网访问内网ERP【内网穿透】

一般公司购买的ERP管理软件,都会安装在公司内网的主机上,公司员工只能在公司内网环境下访问进入。 但对于出差或者疫情在家办公的情况下,想要远程查看公司内网办公系统的一些资料文件,又该如何实现呢? 在大内网环境下…...

SVN服务器搭建以及外网访问内网SVN

一、SVN服务器的搭建 1、所需软件 TortoiseSVN,下载地址http://tortoisesvn.net/downloads.html TortoiseSVN中文语言包,下载地址http://sourceforge.jp/projects/sfnet_tortoisesvn/downloads/1.8.8/Language%20Packs/LanguagePack_1.8.8.25755-x64-zh_…...

《乌合之众》思维导图及优秀读后感

这几天看了来自古斯塔夫勒庞(Gustave Le Bon 1841.05.07-1931.12.13)的大众心理学名著《乌合之众》,发现名著果然是名著,内容不多,却异常晦涩难懂。 为了方便没有读过的朋友能够快速的把握这本书的主旨,下面我将其做成…...

Price Tag

Price Tag Price Tag_百度百科posted on 2012-09-02 12:23 lexus 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/lexus/archive/2012/09/02/2667443.html...

汇编语言c标志位减法,5.2.3-2减法指令 - 汇编语言教程

2、减法指令、减法指令SUB(Subtract Binary Values Instruction)指令的格式:SUB Reg/Mem, Reg/Mem/Imm受影响的标志位:AF、CF、OF、PF、SF和ZF指令的功能是从目的操作数中减去源操作数。、带借位减SBB(Subtract with Borrow Instruction)指令的格式&…...

最佳圆角字体,设计师的最爱

圆角字体通常用于创造性的设计,以增加一点优雅和风格的标题和标题。 它们也是段落文本的最佳选择,因为它们提高了可读性。 几乎每种设计都可以使用圆形字体。 包括为制作徽标,海报标题,传单,网站标题,甚…...

Air Kiss(飞吻)技术简介,AP配网简介,airkissdebugger.apk app给智能设备通过airkiss配网过程

一、什么是 Air Kiss 技术 原文:https://iot.weixin.qq.com/wiki/doc/wifi/AirKissDoc.pdf Air Kiss 技术是一种创新性的信息传递技术。通过该技术可以便捷的向一台 与外界没有建立任何一种实质性连接(包括有线、无线、蓝牙、NFC 等)的设备传 递信息(可以是环境中…...

Ubuntu 更新软件镜像源

文章目录1.打开设置2.打开后粘贴最新镜像源3.最后更新本地源1.打开设置 cd /etc/apt/ cp sources.list sources.list.bak vi /etc/apt/sources.list2.打开后粘贴最新镜像源 比如,清华的镜像,最新版:https://mirror.tuna.tsinghua.edu.cn/…...

名著赏读 | 精英化与大众化的冲突,读《高等教育不能回避历史——21世纪的问题》...

一、全书概览《高等教育不能回避历史——21世纪的问题》一书出自克拉克克尔博士三卷本高等教育文集之一。全书分为六编,分别为1)民族国家和学习事业的国际化;2)传统对平等和优秀;3)高等教育机构职能的分化&…...

程序员如何克服浮躁的心态?然后静下心来韬养自己的技术?

程序员如何克服浮躁的心态?然后静下心来韬养自己的技术?碗碗鸡汤全倒掉,瓢瓢凉水泼醒你!!!当你浮躁的时候就听听大牛们是怎么说的:1 想学编程就不要想玩游戏 你的游戏能力转移不到你的编程能力 除非你靠游戏能挣更多钱2 XX语言不行了,应该学YY 是你自己不…...

王阳明《心学》感悟

一、“某于良知之说,从百死千难中得来,实千古圣圣相传一点滴骨血也。——《顺生录-年谱二》” 感悟:灾难里面有黄金。天将降大任于斯人也。。。将人生中的每一次艰难困苦当做挑战,战胜它你就能更上一层楼。觉得撑不住了就多想想王…...

狐言:王阳明心学、量子物理、心外无物的乱弹

声明:对于王阳明心学与量子物理,我都算不上一知半解,只能算毫知末解,以下皆为狐言乱弹。 在网易公开课上听浙江大学的董平教授讲王阳明心学,他对阳明心学是否是唯心主义有自己的看法。对于阳明心学中最著名的一段对话&…...

王阳明与阳明心学

首先需要明确的是,阳明是其别号,王守仁(1472年10月31日—1529年1月9日),汉族,幼名云,字伯安,别号阳明。 0. 名句名篇 你未看此花时,此花与汝心同归于寂 1. 王阳明大事…...

心学四诀

1527年5月,王守仁被调任两广平叛,时年56岁。这位大牛人自觉此去再无归期,已是永别。临行前在天泉桥上传授弟子心学精髓:无善无恶心之体,有善有恶意之动。 知善知恶是良知,为善去恶是格物。此为心学四诀。我…...

王阳明《心学》小总结

1.大道至简,知行合一 往往最大的道理却最简单!知,认知,行,行为,人的行为由心所控,你遇到事情的第一反应就是你的心在起作用, 这个道理呢,有点像深海研究过的微表情学&a…...

《心学》

王阳明心学核心 知行合一 王阳明心学心法 无善无恶心之体,有善有恶意之动,知善知恶是良知,为善去恶是格物。 王阳明讲“为善去恶”的方法 一、静坐。静坐分两步:第一步是“息思虑”,即通过正襟危坐,全…...

心学

人类凭什么说大脑是控制肉体的最牛的器官?到底是脑牛B还是心牛B! 脑子能控制手,能控制脚,能控制腿等但是脑子能控制心脏吗?让心脏停一下… 脑子是做不到的对不对!大脑可以控制身上的所有器官,但…...

渗透测试— —扫描与爆破账号

渗透测试— —扫描与爆破靶机账号 1 扫描与爆破账号流程 注意:仅用于教学与实验,不能用于攻击,否则后果自负 扫描:主机探测与端口扫描。(主机探测:目标主机是存活,端口扫描:在线主…...

PyTorch中nn.ReLU(inplace=True)中inplace=True有什么用

nn.ReLU(inplaceTrue),在pytorch里面,inplace默认是False的,这里我们设置成True, 它的意思是:是否将计算得到的值直接覆盖之前的值。 就是对上面conv2d中传过来的tensor直接修改,而不是先找一个变量做中间…...

PyTorch中网络里面的inplace=True字段的意思

在例如nn.LeakyReLU(inplaceTrue)中的inplace字段是什么意思呢?有什么用? inplaceTrue的意思是进行原地操作,例如xx5,对x就是一个原地操作,yx5,xy,完成了与xx5同样的功能但是不是原地操作,上面…...

我们用PyTorch搭建神经网络时,会遇到nn.ReLU(inplace=True),inplace=True是什么意思呢?

我们用PyTorch搭建神经网络时,会遇到nn.ReLU(inplaceTrue),inplaceTrue是什么意思呢? nn.Conv2d(64,192,kernel_size3,stride1,padding1), nn.ReLu(inpalceTrue),# inplace为True,默认为False 意思是:是否将计算得到的值直接覆盖…...

cudnn.benchmark = True?是什么意思

问题 在很多情况下我们都能看到代码里有这样一行: 1 torch.backends.cudnn.benchmark true 而且大家都说这样可以增加程序的运行效率。那到底有没有这样的效果,或者什么情况下应该这样做呢? 解决办法 总的来说,大部分情况下…...

pretrained=True、False的区别?

pretrainedTrue、False的区别? pretrained 设置为 True,会自动下载模型所对应权重,并加载到模型中 以下内容用于加深理解,你懂的话就别花时间看!!! 代码是 pretrained 分别为 True 和 False 的…...

python中isinstance是什么意思_isinstance在python中的意思是什么?

在python中,isinstance的意思是“判断类型”;isinstance()是一个内置函数,用于判断一个对象是否是一个已知的类型,类似type()。isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。isinstance() 与 ty…...

python中idx是什么意思_Python pandas.DataFrame.idxmax函数方法的使用

DataFrame.idxmax(self, axis0, skipnaTrue) [source] 返回在请求轴上第一次出现最大值的索引。不包括NA/null。 参数:axis : {0或index,1或columns},默认0 行为0或index,列为1或columns skipna : boolean&…...

python 中的while true是什么意思_While True还是While 1?

我有时在别人身上看到代码是“while1”而不是“whiletrue”。我认为使用True更像Python,但我想看看是否有实践中有什么不同。在所以我试着做下面的事情,结果是令人惊讶的。为了什么?我可以看出解释器可以优化掉1布尔值虽然它与真实不符&#…...

在linux的shell中/bin/true是什么意思?

true命令啥都不做,只设置退出码为0。 在Linux底下,每个程序执行完毕都会返回一个退出码给调用者,一般情况下0表示成功,其他值表明有问题,当然某些程序的退出码有特殊含义。有些shell下true可能是个内建命令&#xff0c…...

CodeForces 438D The Child and Sequence(线段树区间取模)

CodeForces 438D The Child and Sequence 洛谷 The Child and Sequence 题目大意 给出一个长度为nnn的非负整数序列aaa,需要支持以下操作: 给出l,rl,rl,r,求l,rl,rl,r之间的数的和给出l,r,xl,r,xl,r,x,将l,rl,rl,r之间的每个a…...

nativeQuery=true是什么意思?

1、nativeQuery true时 有nativeQuery true时,是可以执行原生sql语句,所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了,比如: Query(value "select * from tbl_instanc…...

cudnn.benchmark = True什么意思

在很多情况下我们都能看到代码里有这样一行: torch.backends.cudnn.benchmark True 而且大家都说这样可以增加程序的运行效率。那到底有没有这样的效果,或者什么情况下应该这样做呢? 总的来说,大部分情况下,设置这…...

[idekCTF 2023] Malbolge I Gluttony,Typop,Cleithrophobia,Megalophobia

这些题名字我都不认识,这是什么语呀。这个比赛感觉太难了,加上春节将近比较忙,仅作了4个简单题。记录一下。Misc/Malbolge I Gluttony这是个虚拟机的题,放入misc感觉有点不可思忆,题目给了7个命令,有"…...

数据库中表的常见七大约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业 务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。 1、空属性not null:not null …...

线程池ThreadPoolExecutor的七大参数

七个参数的构造方法如下 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)核心池线程的数量 corePoolSize最大池…...

Gartner发布2022年七大安全和风险管理趋势

编辑 | 宋慧 出品 | CSDN云计算 Gartner表示&#xff0c;安全和风险管理领导者必须应对七大趋势&#xff0c;才能保护现代企业机构不断扩张的数字足迹免受2022年及以后新威胁的影响。 Gartner研究副总裁Peter Firstbrook表示&#xff1a;“全球企业机构正面临着复杂的勒索软件…...

jsp七大动作

jsp七大动作 jsp动作&#xff08;action&#xff09;是指在运行期间的命令&#xff0c;常见的有&#xff1a; jsp:useBeanjsp:setPropertyjsp:getPropertyjsp:includejsp:forwardjsp:paramjsp:plugin 1.include include 动态包含(分别编译):用jsp:include动作实现&#xff0c;它…...

Spring——七大核心模块

架构图&#xff1a; 七大核心模块&#xff1a; 核心容器&#xff08;Spring Core&#xff09;&#xff1a; Core封装包是框架的最基础部分&#xff0c;提供IOC和依赖注入特性。这里的基础概念是BeanFactory&#xff0c;它提供对Factory模式的经典实现来消除对程序性单例模式…...

七大排序算法大汇总(上)

目录 一、【前言】排序的稳定性&#xff1a; 二、七大排序总览 三、插入排序 1.1直接插入排序 1.2直接插入排序优化版——折半插入排序&#xff1a; 2.希尔排序 四、选择排序 1.1选择排序 1.2进阶版选择排序 2.堆排序 五、交换排序 1.冒泡排序 六、归并排序 1.1归…...

项目管理:项目控制的三个基本原则

要记住项目控制是怎么回事&#xff0c;一个简单方法是思考PDA。PDA是指预防、检测和行动。让我们仔细看看项目控制的这些基本原则。 1、预防 就像你自己的健康一样&#xff0c;健康的秘诀是加强你的免疫系统&#xff0c;尽量减少与有害物的接触。换句话说&#xff0c;就是不…...

量化投资篇(1):深入浅出量化对冲Alpha基金的操作

作者&#xff1a;面包君 数据分析侠知乎专栏&#xff1a;https://zhuanlan.zhihu.com/dataman 1.量化对于一般投资者&#xff0c;甚至是部分金融从业者来说&#xff0c;量化投资都是一门高大上的技术&#xff0c;充斥着模型代码和算法假设&#xff0c;门槛非常高。其实&…...

(转)解密蚂蚁金服战略投资:赛道、条款与边界

解密蚂蚁金服战略投资&#xff1a;赛道、条款与边界 刘一鸣 36氪 昨天 关注并标星36氪 每天3次&#xff0c;打卡阅读 更快更深刻洞察互联网商业 ━━━━━━ 投资要与战略目标和业务相结合&#xff0c;这也令阿里看起来不够“佛系”。 文&#xff5c;刘一鸣 宽泛的…...

【Python-Tushare实战】这有一份年收益18%的投资计划与源码,请收好!

大部分投资者&#xff0c;包括机构投资者和个人投资者&#xff0c;早晚会发现最好的投资股票的方法&#xff0c;就是购买管理费用很低的指数基金。—— 股神巴菲特 1 什么是指数型基金 最近业余时间学了一些理财课程&#xff0c;其中有关于如何购买指数型基金的策略。 什么是指…...

因为信任,所以简单 --专访支付宝架构师团队 (1)

Note&#xff1a;提问者&#xff1a;《程序员》杂志郑柯。回答者&#xff1a;支付宝架构师团队。能否介绍下支付宝架构团队的构成以及各位的知识结构? 支付宝架构团队里的架构师角色可以划分为首席架构师、技术架构师、业务架构师、产品架构师等、数据库架构师等。首席架构师&…...

接口测试(十一)接口测试的时间和投资回报

单元测试--接口测试--UI测试- 由此可以看到接口测试的时间是在于单元测试之后&#xff0c;UI测试之前 接口测试可以用比单元测试更少的成本去做测试&#xff0c;且效率上比单元测试更高 对于UI测试&#xff0c;UI测试能发现问题的覆盖度更低些&#xff0c;所以在投资回报率上…...

浅谈第三方电子支付平台测试方法的研究

第三方支付平台的功能和结构特点 在信用方面&#xff0c;第三方支付平台作为中介&#xff0c;在网上交易的商家和消费者之间作一个信用的中转&#xff0c;通过改造支付流程来约束双方的行为&#xff0c;从而在一定程度上缓解彼此对双方信用的猜疑&#xff0c;增加对网上购物的可…...

支付宝香港宣布开通与菲律宾的区块链汇款渠道

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;蚂蚁金服于周一宣布开通区块链汇款服务&#xff0c;并表示该服务最初仅支持香港和菲律宾间的转帐汇款。后期计划增加与移动网络的合作伙伴关系&#xff0c;以便在其他地区建立转帐渠道。作者&#xff1a;Wolfie Z…...

Python应用之回测基金定投,选周几收益最高?

今天我用Python做了定投回测实验&#xff0c;想从历史数据上看&#xff0c;什么时候定投获得的收益最大。 先上结论&#xff1a; 对于沪深300/中证500&#xff0c;周定投的话&#xff0c;周5定投收益最高&#xff0c;但由于周5申购下周一才确认&#xff0c;因此会多占用2天时间…...

基金投资基本常识【狂神说】

普通人投资渠道&#xff1a; 银行存款证券投资&#xff08;股票&#xff09;房地产投资 银行存款&#xff1a;定期基准年利率低&#xff0c;收益率太低。 证券投资&#xff1a;1. 选股难 2. 波动大 3. 技术性要求高 房地产投资&#xff1a;1. 门槛高 2. 负债 3. 兑现收益难 4…...

各种投资产品的整理分析(持续更新)

各种投资产品的整理分析&#xff08;持续更新&#xff09; 1、指数基金 1.1、定义 指数基金是以特定指数&#xff08;如沪深300指数、标普500指数、纳斯达克100指数、日经225指数等&#xff09;为标的指数&#xff0c;并以该指数的成份股为投资对象&#xff0c;通过购买该指…...

(转)七禾网 专访eToro:把投资变成一种社交,变成一种享受!

专访e投睿&#xff1a;把投资变成一种社交&#xff0c;变成一种享受&#xff01; 七禾网 时间&#xff1a;2017-03-09 16:13:16 来源&#xff1a;七禾网 七禾网注&#xff1a;嘉宾回答仅代表其本人观点&#xff0c;不代表七禾网的观点及推荐。金融投资风险丛生&#xff0c;愿…...

python n个list如何组成矩阵_硬核科普系列:用python帮你建立自己的投资组合

听说金融量化很火&#xff0c;当一众金融大佬还在敲打excel的时候&#xff0c;编程技能树早就点满了的程序员是不是开始疯狂抖腿&#xff0c;跃跃欲试。所以小码想开一个硬核科普系列&#xff0c;和大家一起探索如何用python做投资分析。今天的话题是如何建立投资组合。组成一个…...

文明重启怎么做RUST堡垒_文明重启怎么地下建房-地下建房技巧

文明重启怎么地下建房&#xff1f;游戏中房子建造的好的话我们是可以放抄家的&#xff0c;要不然的话什么都没了&#xff0c;还可以做陷阱去坑别人。接下来就由小编给大家带来文明重启地下建房技巧&#xff0c;感兴趣的小伙伴们一起来看看吧!地下建房攻略秘籍&#xff1a;1、造…...

文明重启怎么做RUST堡垒_文明重启炮台怎么做

文明重启炮台很多小伙伴都想要知道到底怎么制作呢&#xff1f;不少小伙伴都想要配方是制作方法。下面游戏吧小编就为大家大家带来了文明重启炮台制作方法攻略。文明重启炮台怎么做配方&#xff1a;1、50铁锭&#xff1a;采集铁矿后在熔炉熔炼获取&#xff1b;2、10机械齿轮&…...

文明重启怎么做RUST堡垒_文明重启建筑攻略 建筑布局技巧分享[视频][多图]

文明重启游戏内的建筑摆放的好坏是有一定影响的&#xff0c;带来的收益也不同&#xff0c;具体要怎么布局比较好呢&#xff1f;下面来看看吧&#xff01;文明重启建筑攻略建筑小技巧&#xff1a;1.造家的时候选址一定要好&#xff0c;如果你是4人小队那么可以选择两据点之间的位…...

文明重启怎么做RUST堡垒_文明重启房子建筑

文明重启房子建筑攻略技巧&#xff1a;选址一定要好&#xff0c;多使用三角地板制作防炸层&#xff0c;半墙需要合理运用&#xff0c;可以达到很出色的藏东西作用。需要三面半墙才可以放天花板。需要把放门的墙先拆了在安放门。隐藏箱子和领地柜&#xff0c;合理运用地刺等陷阱…...

文明重启怎么做RUST堡垒_文明重启如何抄家

文明重启如何抄家?在文明重启中进攻其他人的家可以瓜分财务&#xff0c;那如何吵架呢?感兴趣的小伙伴跟着安致网小编一起来了解一下抄家方法技巧吧。抄家的步骤1.首先&#xff0c;一定要做好侦查工作&#xff0c;免得莽撞进入&#xff0c;找不着北而惨死在他人地盘上。2.查看…...

文明重启怎么做RUST堡垒_文明重启造家建筑攻略

文明重启手游在什么地方建家好&#xff1f;文明重启建筑有什么小技巧&#xff1f;还不知道的小伙伴就来看看今天9k9k小编整理带来的文明重启造家建筑攻略吧&#xff1a;建筑小技巧&#xff1a;1.造家的时候选址一定要好&#xff0c;如果你是4人小队那么可以选择两据点之间的位置…...

文明4 玩家原创全面攻略

一.国家领导人选择。 作为一个中国人&#xff0c;只要有中国的游戏&#xff0c;我就绝对不会选择其他的(迷之音&#xff1a;玩了1000次后你就会屈服了……)&#xff0c;而中国在游戏中有2个领导人&#xff1a;A-Mr.Mao B-QinShiHuang.那&#xff0c;选择谁开始游戏比较好&#…...

rust油桶用什么打_文明重启油桶获取使用攻略_文明重启油桶怎么获取和使用_玩游戏网...

《文明重启》快速升级攻略详解在文明重启手游中究竟该怎么升级呢&#xff1f;在文明重启手游中等级可以说是非常重要的呢&#xff01;那么想了解的话下面就让我们一起来看一下吧&#xff01;文明重启快速升级攻略详解1、每日任务完成新手指引后&#xff0c;会开启每日任务&…...

鸿蒙石之鉴流程,鸿蒙石之鉴攻略

鸿蒙石之鉴攻略。就让小编带大家看看吧。1、首先需要找到杨戬领取任务&#xff0c;杨戬在凌霄宝殿的55.26位置。2、然后需要玩家前往傲来国在195,126位置找到天宫弟子&#xff0c;然后进行第一场战斗。3、战斗后在傲来国201,78位置找到云裳选择询问任务相关问题&#xff0c;可以…...

三级文明的代码_文明6秘籍代码有哪些 文明6秘籍代码大全

文明6秘籍攻略文明6秘籍代码汇总&#xff1a;找到C:\Users\Documents\My Games\Sid Meiers Civilization VI\AppOptions.txt文件修改EnableDebugMenu 1&#xff0c;调谐器要不要开启没测试&#xff0c;我是有开&#xff0c;不过开启就没成就了游戏按~进入debug模式&#xff0c;…...

文明重启怎么找回之前的服务器,文明重启房子消失怎么找回 详尽攻略助你一臂之力...

屋子怎么看不到了&#xff1f;文明重启房子消失怎么找回&#xff1f;还不知道的朋友看过来&#xff0c;这儿小编为各位提供王牌战争文明重启关于房子的攻略详解&#xff01;感兴趣的朋友不容错失喔&#xff01;屋子消散解决之道攻略然而并非呆在屋子中就十拿九稳了&#xff0c;…...

文明大爆炸服务器维护,《文明大爆炸》完整版萌新攻略来袭!

一份完整版的《文明大爆炸》Q&A内容 快来一起围观吧~大家最关心的问题1、科研点如何获得&#xff1f;上限怎么提升&#xff1f;机器喵功能里的飞船中&#xff0c;有个名为知识库检索的功能&#xff0c;修复该功能后每秒可产出0.2的科研点。后期通过研发科技可以建造图书馆&…...

文明6服务器位置,文明6城市建在哪里比较好 文明6城市选址攻略_游侠网

文明6城市建在哪里比较好&#xff1f;游戏中建造城市选择建在什么区域比较好相信小伙伴们都好奇的吧&#xff0c;这里给大家带来了文明6城市选址攻略&#xff0c;感兴趣的玩家一起来看下吧。文明6城市选址攻略在文明6中&#xff0c;住房的数量决定了一个城市的人口上限。如果住…...

文明大爆炸服务器维护,文明大爆炸

在文明大爆炸这样一个自由的古代国度发展肯定小伙伴们都带着不少的疑问&#xff0c;比如说游戏中兽皮怎么不增长、人口怎么增加等&#xff0c;下面来看一下小编为大家带来这个FAQ&#xff0c;包含了热门大家需要的问题哦。游戏体验类问题1、Q&#xff1a;游戏闪退怎么办?A&…...

文明5 java 攻略_【图片】新手入门教程(科技胜利向指导)【文明5吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼三、游戏快捷键文明百科 F1 Civilopedia F1经济讯息 F2 Economic Info F2军事讯息 F3 Military Info F3外交讯息 F4 Diplomacy Info F4社会政策 F5 Social Policies Screen F5科技讯息 F6 Tech Screen F6消息日志 F7 Notification …...

文明重启哪个服务器最多,文明重启攻略 新手快速霸服技巧分享[多图]

文明重启怎么玩&#xff0c;作为一个新手玩家来说的话如何能够快速霸服&#xff0c;制霸服务器的顶点&#xff0c;有哪些技巧呢&#xff1f;下面来了解下&#xff01;文明重启霸服攻略选择一个新服&#xff0c;进去直接找到高级据点&#xff0c;建一个房子&#xff0c;一人甩一…...

文明6服务器位置,文明6城市怎么选址 文明6城市选址方法及地点攻略

文明6城市选址方法及地点攻略1.首都36格之内奢侈品种类2比较好的奢侈品优先度&#xff1a;盐宝石白银钻石黄金大理石&#xff0c;其次是铜、柑橘等等简单来说能挖矿获取的奢侈都是好奢侈&#xff0c;通常这些奢侈用市民工作效果也是非常高的。大理石锤奇观有用是个例外。其他比…...

《文明3》全攻略之设置篇

<script type"text/javascript"> </script><script type"text/javascript" src"http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 游戏设置&#xff08;新手必看&#xff09; 文明种族 《文明3…...

计算机辅助测试普通话考试流程,必看!普通话考试全流程详解!

原标题&#xff1a;必看&#xff01;普通话考试全流程详解&#xff01;2019 普通话考试指南现在距离11月9号普通话考试只有3天了&#xff0c;但是小伙伴们&#xff0c;你们知道考试流程和检测的方式吗&#xff1f;所以今天我就来为第一次参加普通话考试的同学来科普一下。由于是…...

C# 连接Oracle数据库和读取数据

一直没有Oracle数据库使用的经验&#xff0c;现在项目对接需要使用Oracle数据库&#xff0c;正好花点时间来学习学习&#xff0c;学点皮毛然后使用用在项目上就好了。 前面的文章对Oracle数据库的安装&#xff0c;以及Navicat for Oracle可视化工具安装、数据库视图/表的创建进…...

面试准备啊

fail fast 是把数组原来的更改次数记住 每次都去比较 变了 就抛异常 如果数组容量没到64 会先扩容 再树化 缺点&#xff1a;全是偶数 hash分布不均匀 质数比较好&#xff08;二次哈希也不需要&#xff09; 效率好 2的n次幂 使用内存屏障解决指令重排序 第一次扩容和之后的不…...

一篇学会redis

一、Redis概述 Redis是一个开源的key-value存储系统。支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remove及取交集并集和差集…...

这几个免费PPT模板、素材库,你绝对不能错过

1、菜鸟图库 ppt模板免费下载|ppt背景图片 - 菜鸟图库 网站有各种类型的素材&#xff0c;主要以设计素材为主&#xff0c;但办公类素材也很多&#xff0c;PPT模板就有上万个&#xff0c;而且经常更新。模板质量都很高&#xff0c;分类也很清晰&#xff0c;全部都能免费下载&am…...

JS-对象篇

内容 简单介绍 重点介绍三个 Array,String和JSON 后面这两个不是重点 BOM-浏览器对象模型 DOM-文档对象模式&#xff08;JS中每个HTML标签都封装成一个DOM对象&#xff09; Array 和java不同 方式一 JS中是var 变量 new Array()&#xff08;这个变量名后面没有[]这个标记&…...

vue项目使用xshell部署到服务器

萌新小白疯狂百度&#xff0c;累哭了。 后端部署&#xff1a;后端jar部署 百度&#xff0c;csdn上的大致分两条路线 1&#xff0c;服务器上 安装tomcat 部署服务 2&#xff0c;服务器上安装 nginx部署服务 我下面使用的是第二种方法&#xff0c;第一种我也没有成功&#xf…...

Leetcode 二分查找的一些思考

正常做法是class Solution { public:int search(vector<int>& nums, int target) {int l0,rnums.size();while(l<r) {int mid(lr)/2;if(nums[mid]<target){lmid1;}else if(nums[mid]>target){rmid;} elsereturn mid;}return -1;} };为什么是 rnums.size() 而…...

五、k8s 生命周期管理和服务发现

文章目录前言深入理解 Pod 的生命周期Pod 的完整生命周期如何确保 Pod 的高可用健康检查探针优雅启停案例Service 对象Service 对象Endpoint 对象EndpointSlice 对象Service、Endpoint 和 Pod 的对应关系kube-proxyNetfilter 和 iptableskube-proxy 工作原理DNS 与 域名服务k8s…...

个人练习-Leetcode-835. Image Overlap

题目链接&#xff1a;https://leetcode.cn/problems/image-overlap/ 题目大意&#xff1a;给出两个位图矩阵img1[][]和img2[][]&#xff0c;其中元素只有0和1。一次平移是指将一个图像里【所有的1】都向左/右/上/下移动一格。求经过若干次平移后&#xff0c;两个图像能重叠的1…...

Java ---包

&#xff08;1&#xff09;定义 包是Java语言有效地管理类的一个机制。在不同Java源文件中可能出现名字相同的类&#xff0c;如果用户想区分这些类&#xff0c;就需要使用包名。使用包名可以有效地区分名字相同的类&#xff0c;当不同Java源文件中的两个类的名字相同时&am…...

【前沿技术】文心一言 PK Chat Gpt

目录 写在前面 一、文心一言 二、Chat GPT 三、对比 四、总结 写在前面 随着人工智能技术的不断发展和普及&#xff0c;越来越多的智能应用走入了人们的日常生活&#xff0c;如智能语音助手、智能客服、机器翻译等等。在这些应用中&#xff0c;自然语言生成&#xff08;…...

Centos系统服务器怎么查看端口是否开放?

不同的linux系统查看端口是否开放的不同&#xff0c;在某些环境下&#xff0c;需要依赖于服务&#xff0c;如果centos中并没有装相关的服务&#xff0c;就不一定能生效。所以具体使用哪种方法&#xff0c;取决于环境&#xff0c;可以每一种都试试。 方法&#xff1a;1、利用tel…...

每天学一点之Servlet

一、web资源 1、web资源的概念 将web应用部署到tomcat中&#xff0c;web应用中所有的内容都是服务器中的资源 2、web资源的分类 web资源的分类&#xff1a;web应用中src中编写的动态资源&#xff0c;web应用中web中编写的静态资源 静态资源&#xff1a;每次访问时&#xf…...

记人生第一次正式马拉松!

历时近五个小时&#xff0c;完成了人生的第一次正式的马拉松比赛;起步阶段&#xff0c;很多人朝前挤&#xff0c;我想先热身再说&#xff0c;不用太着急&#xff0c;慢慢跑&#xff1b;还试着边跑边看电影&#xff0c;但不成&#xff0c;只要一熄屏电影就不播了。跑了2公里&…...

【必须收藏】别再乱找TiDB 集群部署教程了,这篇保姆级教程来帮你!!| 博学谷狂野架构师

TiDB 基础使用 TiDB dashboard使用 TiDB Dashboard 是 TiDB 自 4.0 版本起提供的图形化界面&#xff0c;可用于监控及诊断 TiDB 集群。TiDB Dashboard 内置于 TiDB 的 PD 组件中&#xff0c;无需独立部署。 [外链图片转存中…(img-nQFfHgkf-1679905899529)] 集群概况 查看集群…...

Slope One:一种简单但实用的推荐算法

Slope One推荐算法 Slope One是一种简单但实用的协同过滤推荐算法。它的基本思想是如果两个项目对同一用户有相同的评分差值,那么这两个项目对其他用户也应有相同的评分差值。 Slope One通过对评分差值的利用从而减少所需的数据,这使得它在数据稀疏的情况下仍能有效运行。 算…...

安装MinIO

MinIO是一个高性能的、分布式的对象存储服务&#xff0c;能够在常规硬件上支持PB级别的存储规模。本文将介绍在CentOS系统中安装MinIO的步骤。步骤1&#xff1a;安装wget在开始安装MinIO之前&#xff0c;需要安装wget命令行工具。可以使用以下命令在CentOS系统中安装wget&#…...

今年面试好激烈!

金三银四过去一半&#xff0c;市场火热&#xff0c;但是大家就业压力却没有缓解多少。 很多粉丝后台留言&#xff0c;Java程序员面临的竞争太激烈了…… 我自己也有实感&#xff0c;多年身处一线互联网公司&#xff0c;虽没有直面过求职跳槽的残酷&#xff0c;但经常担任技术面…...

Matbox V1.0.7更新预览与手册

哔哩哔哩地址 &#xff1a; Click Me! Github地址 &#xff1a; Click Me! YouTube演示地址 &#xff1a;Click Me! 快速更新命令 pip install https://github.com/PythonnotJava/MTBOX/releases/download/matbo1.0.7/matbox-1.0.7-py3-none-any.whl --upgradePyPi 链接 :…...

DAY58|单调栈739.每日温度、496.下一个更大元素 I(哈希表)

单调栈里面是递增或者递减的 739.每日温度 今天正式开始单调栈&#xff0c;这是单调栈一篇扫盲题目&#xff0c;也是经典题。 大家可以读题&#xff0c;思考暴力的解法&#xff0c;然后在看单调栈的解法。 就能感受出单调栈的巧妙 class Solution {public int[] dailyTempe…...

RabbitMQ Explain in Detail

“Hello World”(using the Java Client) RabbitMQ is a message broker: it accepts and forwards messages. A queue. Although messages flow through RabbitMQ and your applications, they can only be stored inside a queue. A queue is only bound by the host’s me…...

Windows安装mysql5.5图文安装教程(详细说明+安装包)

mysql 安装图解 mysql图文安装教程(详细说明) 大家都知道MySQL是一款中、小型关系型数据库管理系统&#xff0c;很具有实用性&#xff0c;对于我们学习很多技术都有帮助&#xff0c;前几天我分别装了SQL Server 2008和Oracle 10g数据库&#xff0c;也用了JDBC去连接他们&#x…...

借LeNet简单的模型对深度学习训练过程中的注意事项进一步总结

本文是在卷积神经网络(LeNet)详解_欲游山河十万里的博客-CSDN博客博文的基础之上&#xff0c;对深度学习过程遇到的一些常见的问题进行总结。本文所总结的问题&#xff0c;不仅仅适用于这个简单的模型&#xff0c;更适用在其他的多个应用场景之下。 一、训练过程中模型的保存 …...

Java基础八股文

https://zhuanlan.zhihu.com/p/516271873 1.java八大基本数据类型 6 种数字类型&#xff1a; 4 种整数型&#xff1a;byte、short、int、long2 种浮点型&#xff1a;float、double 1 种字符类型&#xff1a;char1 种布尔型&#xff1a;boolean。 2.基本类型和包装类型的区别…...

安卓面经_安卓面试题(27/30)APK打包流程和反编译

系列专栏: 安卓高频面经解析大全专栏链接:150道安卓高频面试题全解析安卓高频面经解析大全目录详情 : 安卓面经_anroid面经_150道安卓常见基础面试题全解析安卓系统Framework面经专栏:Android系统Framework面试题解析大全安卓系统Framework面经目录详情:Android系统面经_Fr…...

「解析」牛客网-华为机考企业真题61-80

又是一年春招时&#xff0c;有幸收到华为自动驾驶算法岗&#xff0c;之前刷题不多&#xff0c;在此汇总下牛客网的真题&#xff0c;主要采用Python编写&#xff0c;个人觉得语言只是实现工具而已&#xff0c;并不是很关键&#xff0c;Python简洁易懂&#xff0c;更加适合算法工…...

【vue】vue中的计算属性和监听属性详解

文章目录计算属性和侦听器计算属性1.计算属性计算属性和缓存侦听器计算属性 vs 侦听器计算属性和侦听器 计算属性 1.计算属性 用来描述依赖响应式状态的复杂逻辑 <p>Has published books:</p><!-- <span>{{ author.books.length > 0 ? Yes : No }}&…...

canal快速监听数据库变化-window版

目录 一、下载canal 二、解压 三、开启数据库 Binlog 写入功能 四、建立一个canal账号 五、启动canal 六、python客户端 七、教程地址 一、下载canal Releases alibaba/canal (github.com)https://github.com/alibaba/canal/releases 二、解压 三、开启数据库 Binlo…...

Week14周报

一.动态规划1.路径计数难点&#xff1a;由于最后的答案很大&#xff0c;所以一些代码容易出现time limited ecceed的问题思路&#xff1a;此题可以采用动态规划来完成&#xff0c;分为向右走和向下走两种情况。动态规划的转移方程&#xff1a;f[i1][j]f[i1][j]f[i][j],当我们从…...

5GC-架构及网元

** SBA&#xff08;Service-Based Architecture&#xff09;架构&#xff1a; ** 每个网元对外暴露多种服务&#xff0c;其他网元通过HTTP API的形式来调用该服务对外暴露的接口称之为SBI&#xff0c;书写格式以大写N开头&#xff0c;加上小写的网元名字&#xff0c;如Namf…...

如何学习k8s

学习Kubernetes可以遵循以下步骤&#xff1a; 了解Kubernetes的基本概念和架构。学习Kubernetes前&#xff0c;需要了解它的基本概念和组成部分&#xff0c;包括Pod、Service、ReplicaSet、Deployment、Namespace等等&#xff0c;同时也需要了解Kubernetes的整体架构和工作原理…...

第二十五章 绘制简单物体总结

简单的说,编译顶点着色器。首先需要把顶点着色器的源代码存储在一个字符串中,其次用glCreateShader创建一个着色器(参数:GL_VERTEX_SHADER) 下一步把源码附加到着色器对象上,再编译它(glShaderSource和glCompileShader) 最后用glGetShaderiv来检查是否编译时有错误(参…...

【ConfluxNews】MOSSAI 6 DCC即将上线,飞行体验官限时招募中……

1.【网络状态】当前版本V2.2.2&#xff0c;全网算力≈10T&#xff0c;昨日交易次数28K&#xff0c;昨日新增账户0.63K&#xff0c;昨日新增合约1个&#xff1b; 2.【POS参数】总锁仓247&#xff08;1&#xff09;&#xff0c;节点总数263&#xff08;1&#xff09;&#xff0c;…...

include、require、include_once、require_once的区别

include() 与require()1.1相同点首先&#xff0c;include() 与require() 的功能是相同&#xff0c;它们的结构在包含文件上完全一样&#xff0c;都是包含并运行指定文件1.2 不同点1.2.1区别一 对错误的处理不同require()语句在遇到包含文件不存在&#xff0c;或是出错的时候&am…...

登录那些事

Cookie HTTP 是无状态的协议&#xff08;对于事务处理没有记忆能力&#xff0c;每次客户端和服务端会话完成时&#xff0c;服务端不会保存任何会话信息&#xff09;&#xff1a;每个请求都是完全独立的&#xff0c;服务端无法确认当前访问者的身份信息&#xff0c;无法分辨上一…...

【Linux】计算机网络1

计算机网络的背景背景&#xff1a;早在20世纪50年代初&#xff0c;美国建立的地面防空系统就是将地面的雷达和其他测量控制设备的信息通过通信线路汇集到一台中心计算机进行处理&#xff0c;开创了把计算机技术和通信技术相结合的尝试。20世纪60年代中期开始&#xff0c;出现、…...

安卓面经_安卓基础面全解析<28/30>之注解全解析

系列专栏: 安卓高频面经解析大全专栏链接:150道安卓高频面试题全解析安卓高频面经解析大全目录详情 : 安卓面经_anroid面经_150道安卓常见基础面试题全解析安卓系统Framework面经专栏:Android系统Framework面试题解析大全安卓系统Framework面经目录详情:Android系统面经_Fr…...

STM32个人笔记-I2S

现实存在的声音是模拟量&#xff0c;这对声音保存和长距离传输造成很大的困难&#xff0c;一般的做法是把模拟量转成对应的数字量保存&#xff0c;在需要还原声音的地方再把数字量的转成模拟量输出。 模拟量转换成数字量&#xff0c;3个过程&#xff1a;采样、量化和编码。 蓝…...

Qt 学习笔记 8. QStringList

1.clear() 函数来清空 QStringList 对象中的内容 在 Qt 中&#xff0c;我们可以使用 clear() 函数来清空 QStringList 对象中的内容&#xff0c;将其重新变为空列表。 以下示例代码演示了如何清空 QStringList 对象中的内容&#xff1a; QStringList myList {"apple"…...

书籍阅读-《杨绛传:墨染里的彩色人生》

作者: 林希美 出版社&#xff1a;台海出版社 出版时间&#xff1a;2021-09 2023年3月26日 1.直到她知道一家人南归的原因&#xff0c;才深知许多事不是静静陪伴就能岁月安好。 2.一个人从懂事起便丢了童年…...

基于`Caché/IRIS`实现`Socket`解决方案

文章目录基于Cach/IRIS实现Socket解决方案简介什么是Socket&#xff1f;Socket有两种类型使用场景Socket与Web Socket的区别工作流程示例1. 利用Socket实现简单客户端、服务器通信。2. 利用Socket实现客户端服务端文件传输。3. 利用Socket实现实时聊天应用程序4. 利用Socket实现…...

展会邀请|虹科诚邀您3月29-31日参加深圳国际传感器与应用技术展览会!

01 展会介绍 深圳国际传感器与应用技术展览会&#xff08;Shenzhen International Sensor Technology Expo 2023&#xff09;将于2023年3月29-31日于深圳会展中心&#xff08;福田&#xff09;举办&#xff0c;届时展会规模在原有基础上将扩大一倍&#xff0c;专业技术含量和产…...

考pmp有什么好处?

PMP证书报名条件要求高&#xff0c;这是众所周知的事&#xff0c;那你通过了PMP考试&#xff0c;就证明你是有一定能力的&#xff0c;重要的是&#xff0c;你已经有了至少半年的项目管理经验&#xff0c;并且在你申请考试的前六年内&#xff0c;累计项目管理达三年。 PMP有什么…...

Python入门教程+项目实战-6.5节: 神奇的Python交互模式

目录 6.5.1 理解交互模式 6.5.2 进入交互模式 6.5.3 交互模式的基本用法 6.5.4 在交互模式中获取帮助 6.5.5 退出交互模式 6.5.6 系统学习python 6.5.1 理解交互模式 理解交互模式&#xff0c;首先得理解什么是交互。“交互”在日常生活中很常见&#xff0c;比如人与人之…...

积性函数及其初级应用

积性函数及其初级应用 垃圾博客&#xff0c;我本地 LaTeX 挂了&#xff0c;艹 大量内容和入门方式都参考了 莫比乌斯反演与数论函数 。感谢 CMD 大爷&#xff01; 0xFF 前置知识 1.质数及其判定&#xff0c;质因数及其分解 小学课本里面讲过质数的定义了&#xff0c;不细讲…...

A1015 Reversible Primes 反转数字后仍为素数

1015 Reversible Primes 分数 20A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.Now given an…...

简单的电脑网络故障定位

windows 电脑是否有问题 ping 127.0.0.1 检测本地环回口是否可用 测试本地的IP接口地址是否可用 ping 本机IP一般是192.168.0.x或者在命令行输入 ipconfig | find "IPv4"获取 测试本地网关地址是否可用. ping 192.168.0.1或者是254或者通过输入命令行 ipconfig /al…...

随手记 AutoML for Deep Recommender Systems: A Survey

AutoML for Deep Recommender Systems: A Survey AUTOMATED EMBEDDING DIMENSION SEARCH (AUTO-EDS) 动机&#xff1a; 计算资源消耗过大&#xff1a;Embedding占整个模型参数的80%以上 不令人满意的表现&#xff1a;很多特征域的交互是无用的&#xff0c;有些却非常有用&am…...

钢铁冶金VR虚拟仿真实训软件-广州华锐互动

炼钢作业是一个高危、高压、高温的行业&#xff0c;在实际操作中需要严格遵守安全规范和操作规程&#xff0c;一旦出现差错可能造成巨大的经济损失和人员伤亡。 利用广州华锐互动开发的钢铁冶金VR虚拟仿真实训软件&#xff0c;可以有效帮助员工更好地理解和掌握炼钢作业中的相…...

【C#】程序开发,使用 DataTable 还是 List?

系列文章 【C#】单号生成器&#xff08;编号规则、固定字符、流水号、产生业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】二维码标签制作及打印&#xff08;完整版&#xff09; 本文链接&#xff1a;https:/…...

视频添加字幕

工具下载 使用了格式工厂这个工具 官网下载地址&#xff0c;推荐下载5.1.1的&#xff0c;最新版5.1.3有问题&#xff0c;添加不了字幕&#xff0c;浪费了我好长时间。 字幕的添加 打开格式工厂&#xff0c;选择你想转换成的格式&#xff0c;我这里选的是MP4 点击进去之后&…...

PowerPoint 2010

文章目录一、界面介绍二、选项卡1. 文件选项卡2. 开始选项卡3. 插入选项卡4. 设计选项卡5. 切换选项卡6. 动画选项卡7. 幻灯片放映选项卡8. 视图选项卡9. 效果识别三、幻灯片操作1.选择幻灯片2.移动(调整幻灯片顺序&#xff09;和复制3.删除幻灯片四、幻灯片放映1.按次序放映2.…...

异常:Error和Exception

异常机制&#xff08;Exception&#xff09; 什么是异常 实际工作中&#xff0c;遇到的情况不可能是非常完美的。比如&#xff1a;你写的某个模块&#xff0c;用户输入不一定符合你的要求、你的程序要打开某个文件&#xff0c;这个文件可能不存在或者文件格式不对&#xff0c…...

2023年政府飞地经济研究报告

飞地概述 飞地是指一个国家或地区的领土内&#xff0c;被另一个国家或地区所包围的、不与其领土相连的一块独立区域。这种情况通常是因为历史、政治、地理等原因而形成的。 飞地通常存在于两个国家或地区之间&#xff0c;其中一个国家或地区的领土将另一个国家或地区的领土分…...

【Python+selenium】自动化生成测试报告

批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、入HTMLTes…...

小皮Windows web面板漏洞详解

漏洞简介 PhpStudy国内12年老牌公益软件&#xff0c;集安全、高效、功能与一体&#xff0c;已获得全球用户认可安装&#xff0c;运维也高效。 支持一键LAMP、LNMP、集群、监控、网站、数据库、FTP、软件中心、伪静态、云备份、SSL、多版本共存、Nginx反向代理、服务器防火墙、…...

MySQL OCP888题解069-CHECK TABLE

文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3.1、知识点1&#xff1a;CHECK TABLE语句4、总结1、原题 1.1、英文原题 1.2、答案 B、E 2、题目解析 2.1、题干解析 本题主要考察CHECK TABLE的作用和注意事项。 2.2、选项解析 C…...

【C++进阶】异常

文章目录C语言传统处理异常的方式C异常概念异常的用法异常的抛出和捕获异常的重新抛出异常安全异常规范自定义异常体系标准库异常体系异常的优缺点C语言传统处理异常的方式 传统的错误处理机制&#xff1a; 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以…...

【Python入门第四十天】Python丨NumPy数组创建

创建 NumPy ndarray 对象 NumPy 用于处理数组&#xff0c;NumPy 中的数组对象称为 ndarray。 我们可以使用 array() 函数创建一个 NumPy ndarray 对象。 实例 import numpy as np arr np.array([1, 2, 3, 4, 5])print(arr)print(type(arr))运行实例 type(): 这个内置的 Py…...

【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”

【第十一届泰迪杯B题产品订单的数据分析与需求预测产品订单的数据分析与需求预测 】第一大问代码分享&#xff08;后续更新LSTMinformer多元预测多变量模型&#xff09; PS: 代码全写有注释&#xff0c;通俗易懂&#xff0c;包看懂&#xff01;&#xff01;&#xff01;&…...