(学习日记)2024.05.06:UCOSIII第六十节:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

2024.05.06:UCOSIII第六十节:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

  • 六十七、UCOSIII:User文件夹函数概览(uCOS-III->Source文件夹)第六部分
    • 5、uCOS-III文件夹
      • Source文件夹
        • os_sem.c文件
          • OSSemCreate
          • OSSemDel
          • OSSemPend
          • OSSemPendAbort
          • OSSemPost
          • OSSemSet
          • OS_SemClr
          • OS_SemDbgListAdd
          • OS_SemDbgListRemove
          • OS_SemInit
          • OS_SemPost
        • os_stat.c文件
          • OSStatReset
          • OSStatTaskCPUUsageInit
          • OS_StatTask
          • OS_StatTaskInit
        • os_task.c文件
          • OSTaskChangePrio
          • OSTaskCreate
          • OSTaskDel
          • OSTaskQFlush
          • OSTaskQPend
          • OSTaskQPendAbort
          • OSTaskQPost
          • OSTaskRegGet
          • OSTaskRegGetID
          • OSTaskRegSet
          • OSTaskResume
          • OSTaskSemPend
          • OSTaskSemPendAbort
          • OSTaskSemPost
          • OSTaskSemSet
          • OSTaskStkChk
          • OSTaskSuspend
          • OSTaskTimeQuantaSet
          • OS_TaskDbgListAdd 和 OS_TaskDbgListRemove
          • OS_TaskInit
          • OS_TaskInitTCB
          • OS_TaskQPost
          • OS_TaskResume
          • OS_TaskReturn
          • OS_TaskSemPost
          • OS_TaskSuspend

六十七、UCOSIII:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

5、uCOS-III文件夹

在这里插入图片描述

Source文件夹

这些文件通常是 Micrium OS (UC/OS-III) 内核的核心文件,提供了操作系统的各种基本功能和特性。
在这里插入图片描述

os_sem.c文件

os_sem.c 实现了 UC/OS-III 内核中的信号量(Semaphore)功能。
包括了信号量的创建、等待、释放等操作的具体实现。
信号量用于任务间的同步和资源管理,它可以控制多个任务对共享资源的访问,防止资源竞争和冲突。

OSSemCreate
  • 功能:创建一个多值信号量。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    p_name:多值信号量的名称。
    cnt:初始的信号量计数值,表示资源的个数或事件是否发生的标志。
    p_err:返回错误类型的指针。
  • 其他:该函数用于创建一个多值信号量,初始化相关数据结构,并根据给定的初始计数值设置信号量的资源数目。
OSSemDel
  • 功能:删除一个多值信号量。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    opt:选项,可以是删除等待的任务中的一个或全部。
    p_err:返回错误类型的指针。
  • 其他:该函数用于删除一个多值信号量,可以选择删除等待的任务中的一个或全部,或者在没有任务等待的情况下立即删除。
OSSemPend
  • 功能:请求一个多值信号量。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    timeout:等待超时时间。
    opt:选项,用于指定等待是否会堵塞。
    p_ts:返回等到信号量时的时间戳的指针。
    p_err:返回错误类型的指针。
  • 其他:该函数用于请求一个多值信号量,并根据选项设置是否会堵塞等待。如果信号量的资源数目不为零,则立即获取资源;否则根据选项决定是否堵塞等待。
OSSemPendAbort
  • 功能:中止等待中的任务对一个多值信号量的等待。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    opt:选项,用于指定中止等待的任务数量。
    p_err:返回错误类型的指针。
  • 其他:该函数用于中止等待中的任务对一个多值信号量的等待,可以选择中止一个或全部等待中的任务。
OSSemPost
  • 功能:释放一个多值信号量。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    opt:选项,用于指定释放资源的数量。
    p_err:返回错误类型的指针。
  • 其他:该函数用于释放一个多值信号量的资源,可以选择释放一个或全部资源,并根据选项决定是否进行任务调度。
OSSemSet
  • 功能:设置一个多值信号量的资源数目。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    cnt:设置的信号量资源数目。
    p_err:返回错误类型的指针。
  • 其他:该函数用于设置一个多值信号量的资源数目,可以设置为任意非负整数,但如果有任务在等待该信号量,可能会导致错误。
OS_SemClr
  • 功能:清除一个多值信号量的相关数据结构。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
  • 其他:该函数用于清除一个多值信号量的相关数据结构,将其恢复到初始状态。
OS_SemDbgListAdd
  • 功能:将一个多值信号量插入到调试列表的最前端。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
  • 其他:该函数用于将一个多值信号量插入到调试列表的最前端,用于跟踪和调试多值信号量的使用情况。
OS_SemDbgListRemove
  • 功能:从调试列表中移除一个多值信号量。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
  • 其他:该函数用于从调试列表中移除一个多值信号量,当不再需要跟踪和调试该信号量时使用。
OS_SemInit
  • 功能:初始化多值信号量。
  • 参数:
    p_err:返回错误类型的指针。
  • 其他:该函数用于初始化多值信号量,包括调试列表的初始化,将信号量的计数值置零,并返回无错误状态。
OS_SemPost
  • 功能:发布一个多值信号量。
  • 参数:
    p_sem:指向多值信号量控制块的指针。
    opt:选项,用于指定发布资源的数量和是否调度任务。
    ts:时间戳,用于记录发布资源的时间。
    p_err:返回错误类型的指针。
  • 其他:该函数用于发布一个多值信号量的资源,可以选择发布给所有等待任务或优先级最高的等待任务,并根据选项决定是否进行任务调度。
os_stat.c文件

os_stat.c 实现了 UC/OS-III 内核中的统计信息功能。
包括了统计内核运行时间、任务运行时间、中断次数等系统运行状态信息的功能。
这些统计信息可以帮助开发者评估系统的性能,分析系统运行状况,优化系统设计。

OSStatReset
  • 功能:重置统计数据,包括任务、中断、定时器和消息队列的统计信息。
  • 参数:
    p_err:返回错误类型的指针。
  • 其他:这个函数用于重置系统的各项统计数据,包括任务执行时间、中断禁用时间、任务堆栈使用情况等。
OSStatTaskCPUUsageInit
  • 功能:初始化统计任务用于计算 CPU 使用率。
  • 参数:
    p_err:返回错误类型的指针。
  • 其他:这个函数用于初始化统计任务,以计算 CPU 使用率。它通过暂时挂起定时器任务,并在一段时间内测量空闲任务的运行次数,以计算 CPU 使用率。
OS_StatTask
  • 功能:统计任务,用于周期性地收集和更新系统的统计信息。
    参数**:
    p_arg:任务参数(未使用)。
  • 其他:这个函数是一个独立的统计任务,定期收集并更新系统的统计信息,包括 CPU 使用率、任务执行时间、中断禁用时间等。
OS_StatTaskInit
  • 功能:初始化统计任务,包括创建统计任务的任务控制块(TCB)和分配堆栈空间。
  • 参数:
    p_err:返回错误类型的指针。
  • 其他:
    首先,函数将统计任务的计数器重置为零,并将任务设置为未准备状态。
    然后,它检查统计任务所需的堆栈和优先级是否合法,并创建统计任务。如果堆栈无效、堆栈大小不足、或优先级超出范围,会返回相应的错误代码。
    最后,它使用 OSTaskCreate 函数创建统计任务,并传递了任务的相关参数,包括任务名、入口函数、优先级、堆栈地址和大小等。
os_task.c文件

os_task.c 实现了 UC/OS-III 内核中的任务管理功能。
包括了任务的创建、删除、挂起、恢复、优先级调整等操作的具体实现。
任务管理模块负责管理系统中的任务,调度器会根据任务的优先级和状态来决定任务的执行顺序。

OSTaskChangePrio
  • 功能:改变任务的优先级。
  • 参数:
    p_tcb:指向要修改优先级的任务控制块的指针。
    prio_new:新的优先级。
    p_err:返回错误类型的指针。
  • 其他:
    函数首先进行一些安全性检查,例如检查是否处于中断上下文,以及是否正在等待中断后延迟执行。
    接下来,根据任务的状态进行相应的操作。如果任务是就绪状态,则修改优先级并重新插入到就绪列表中;如果任务是延迟、挂起等状态,则仅修改优先级;如果任务正在等待信号量、消息队列等,则根据等待的对象类型进行不同的操作。
    最后,调用 OSSched 函数以重新调度任务。
OSTaskCreate
  • 功能:创建一个新的任务。
  • 参数:
    p_tcb:指向任务控制块的指针。
    p_name:任务的名称。
    p_task:任务的入口函数。
    p_arg:传递给任务入口函数的参数。
    prio:任务的优先级。
    p_stk_base:任务堆栈的基地址。
    stk_limit:任务堆栈的限制。
    stk_size:任务堆栈的大小。
    q_size:消息队列的大小。
    time_quanta:时间片大小。
    p_ext:指向任务扩展数据的指针。
    opt:任务选项。
    p_err:返回错误类型的指针。
  • 其他:
    函数首先对参数进行检查,例如检查是否为 NULL,是否在中断上下文中等。
    接下来,函数会初始化任务控制块和堆栈。
    然后,设置任务的各种属性,例如任务名称、优先级、堆栈指针等。
    最后,将任务插入到就绪列表中,并调用 OSSched 函数以启动任务调度。
OSTaskDel
  • 功能:删除任务。
  • 参数:
    p_tcb:指向要删除的任务控制块的指针,如果为 NULL,则表示删除当前任务。
    p_err:返回错误类型的指针。
  • 其他:
    函数首先进行一些安全性检查,例如检查是否处于中断上下文中,以及是否试图删除空闲任务。
    接下来,根据任务的状态进行相应的操作。如果任务是就绪状态,则从就绪列表中移除;如果任务正在等待延迟、消息等,则取消相应的等待;最后,清理任务控制块,并调用任务删除的钩子函数。
    最后,调用 OSSched 函数以重新调度任务。
OSTaskQFlush
  • 功能:清空任务消息队列,并返回队列中消息的数量。
  • 参数:
    p_tcb:要清空消息队列的任务的指针。如果为 NULL,则表示清空当前任务的消息队列。
    p_err:返回错误类型的指针。
    返回值:返回清空的消息数量。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    如果在中断上下文中调用该函数,则返回错误。
    函数首先检查是否要清空当前任务的消息队列,然后进入临界区,并调用 OS_MsgQFreeAll 函数清空任务消息队列。
    最后,将错误设置为 OS_ERR_NONE,并返回清空的消息数量。
OSTaskQPend
  • 功能:等待接收任务消息。
  • 参数:
    timeout:超时时间。
    opt:等待选项。
    p_msg_size:指向存储接收到的消息大小的变量的指针。
    p_ts:指向存储时间戳的变量的指针。
    p_err:返回错误类型的指针。
    返回值:返回接收到的消息指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    如果在中断上下文中调用该函数,则返回错误。
    函数首先对参数进行检查,例如检查传入的消息大小指针是否为空。
    然后,根据等待选项和当前任务的状态进行相应的操作。如果消息队列中有消息,则从中获取消息并返回;如果没有消息,根据超时时间决定是否阻塞当前任务。
    如果任务被阻塞,则将任务添加到挂起列表中,并调用调度器以寻找下一个最高优先级的任务。
    最后,根据等待状态设置错误码,并返回接收到的消息指针。
OSTaskQPendAbort
  • 功能:终止任务的消息队列等待。
  • 参数:
    p_tcb:要终止等待的任务的指针。
    opt:终止选项。
    p_err:返回错误类型的指针。
    返回值:返回终止是否成功的布尔值。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    如果在中断上下文中调用该函数,则返回错误。
    函数首先对参数进行检查,例如检查传入的任务指针是否为空。
    然后,根据终止选项和当前任务的状态进行相应的操作。如果任务正在等待消息队列,则终止等待,并根据选项决定是否立即调度。
    最后,设置错误码,并返回终止是否成功的布尔值。
OSTaskQPost
  • 功能:向任务消息队列发送消息。
  • 参数:
    p_tcb:要发送消息的任务的指针。
    p_void:指向要发送的消息的指针。
    msg_size:消息的大小。
    opt:发送选项。
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先对参数进行检查,例如检查发送选项是否有效。
    然后,获取当前时间戳,并根据是否在中断上下文中调用该函数决定如何处理发送消息。
    如果不在中断上下文中,则直接调用 OS_TaskQPost 函数发送消息;如果在中断上下文中,则将消息放入中断队列中等待后续处理。
OSTaskRegGet
  • 功能:获取任务的指定寄存器的值。
  • 参数:
    p_tcb:要获取寄存器值的任务的指针。如果为 NULL,则表示获取当前任务的寄存器值。
    id:寄存器的 ID。
    p_err:返回错误类型的指针。
    返回值:返回指定寄存器的值。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先检查寄存器 ID 的有效性,然后进入临界区,获取任务指定寄存器的值,并将错误码设置为 OS_ERR_NONE。
OSTaskRegGetID
  • 功能:获取可用的任务寄存器 ID。
  • 参数:
    p_err:返回错误类型的指针。
    返回值:返回可用的任务寄存器 ID。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先检查是否还有可用的任务寄存器 ID,如果没有则返回错误码,并设置错误类型为 OS_ERR_NO_MORE_ID_AVAIL。
    如果有可用的 ID,则获取下一个可用的 ID,并将错误码设置为 OS_ERR_NONE。
OSTaskRegSet
  • 功能:设置任务的指定寄存器的值。
  • 参数:
    p_tcb:要设置寄存器值的任务的指针。如果为 NULL,则表示设置当前任务的寄存器值。
    id:寄存器的 ID。
    value:要设置的寄存器值。
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先检查寄存器 ID 的有效性,然后进入临界区,设置任务指定寄存器的值,并将错误码设置为 OS_ERR_NONE。
OSTaskResume
  • 功能:恢复被挂起的任务。
  • 参数:
    p_tcb:要恢复的任务的指针。
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先检查是否在中断上下文中调用该函数,并根据情况返回相应的错误码。
    然后进入临界区,检查传入的任务指针是否有效,如果无效则返回相应的错误码。
    最后,调用 OS_TaskResume 函数恢复任务,并将错误码设置为 OS_ERR_NONE。
OSTaskSemPend
  • 功能:等待一个任务信号量。
  • 参数:
    timeout:等待信号量的超时时间。
    opt:等待选项,可以是阻塞或非阻塞。
    p_ts:用于返回等待开始时的时间戳。
    p_err:返回错误类型的指针。
    返回值:如果成功等待到信号量,则返回剩余的信号量计数;如果超时或发生其他错误,则返回0。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先检查是否在中断上下文中调用该函数,然后验证选项的有效性。
    如果任务已经被信号量激活,函数会减少信号量计数并返回剩余计数。
    如果是非阻塞等待,并且信号量未可用,函数会立即返回,并设置错误码为 OS_ERR_PEND_WOULD_BLOCK。
    如果是阻塞等待,会将任务挂起,并设置状态为等待信号量状态。
OSTaskSemPendAbort
  • 功能:中止一个任务的信号量等待。
  • 参数:
    p_tcb:要中止等待的任务的指针。
    opt:中止选项,可以是简单的中止或不调度中止。
    p_err:返回错误类型的指针。
    返回值:如果成功中止等待,则返回 DEF_TRUE;否则返回 DEF_FALSE。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先检查是否在中断上下文中调用该函数,然后验证选项的有效性。
    如果任务正在等待信号量,函数会中止等待,并根据选项是否调度来执行相应的操作。
OSTaskSemPost
  • 功能:发布一个任务信号量。
  • 参数:
    p_tcb:要发布信号量的任务的指针。
    opt:发布选项,可以是简单的发布或不调度发布。
    p_err:返回错误类型的指针。
    返回值:返回发布后的信号量计数。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先验证选项的有效性,然后获取时间戳并调用 OS_TaskSemPost 函数发布信号量。
OSTaskSemSet
  • 功能:设置任务的信号量计数。
  • 参数:
    p_tcb:要设置信号量计数的任务的指针。如果为 NULL,则表示设置当前任务的信号量计数。
    cnt:要设置的信号量计数。
    p_err:返回错误类型的指针。
    返回值:返回设置之前的信号量计数。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先验证任务指针的有效性,然后进入临界区,设置任务的信号量计数,并将错误码设置为 OS_ERR_NONE。
OSTaskStkChk
  • 功能:检查任务堆栈的空闲空间和已使用空间。
  • 参数:
    p_tcb:要检查的任务的指针。如果为 NULL,则表示检查当前任务的堆栈。
    p_free:返回空闲堆栈空间的指针。
    p_used:返回已使用堆栈空间的指针。
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    函数首先验证是否在中断上下文中调用该函数,并验证参数的有效性。
    然后计算任务堆栈的空闲空间和已使用空间,并将结果存储在传入的指针中。
OSTaskSuspend
  • 功能:挂起一个任务。
  • 参数:
    p_tcb:要挂起的任务的指针。
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    首先检查是否在中断上下文中调用该函数,然后确保不会挂起空闲任务或中断处理任务。
    如果在中断上下文中调用该函数,则将挂起任务的请求放入中断服务请求队列中,以便在适当的时候处理。
    否则,直接调用 OS_TaskSuspend 函数挂起任务。
OSTaskTimeQuantaSet
  • 功能:设置任务的时间片大小。
  • 参数:
    p_tcb:要设置时间片的任务的指针。如果为 NULL,则表示设置当前任务的时间片。
    time_quanta:时间片大小。
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    首先检查是否在中断上下文中调用该函数,然后设置任务的时间片大小。
OS_TaskDbgListAdd 和 OS_TaskDbgListRemove
  • 功能:添加和移除任务的调试列表。
  • 参数:
    p_tcb:要添加或移除的任务的指针。
  • 其他:
    OS_TaskDbgListAdd 用于将任务添加到调试列表中,而 OS_TaskDbgListRemove 用于将任务从调试列表中移除。
OS_TaskInit
  • 功能:初始化任务管理器。
  • 参数:
    p_err:返回错误类型的指针。
  • 其他:
    如果安全性检查使能,并且传入的错误指针为空,则会引发异常。
    主要用于清除任务数量和上下文切换计数,并将错误码设置为 OS_ERR_NONE。
OS_TaskInitTCB
  • 功能:初始化任务控制块(TCB)。
    参数**:**
    p_tcb:要初始化的任务的 TCB 指针。
  • 其他:
    用于初始化任务控制块中的各种字段,包括堆栈指针、扩展指针、任务名字、优先级、状态等。
OS_TaskQPost
  • 功能:向任务的消息队列中发送消息。
  • 参数:
    p_tcb:要发送消息的任务的指针。如果为 NULL,则表示发送消息给当前任务。
    p_void:指向要发送的消息的指针。
    msg_size:消息的大小。
    opt:发送消息的选项。
    ts:时间戳。
    p_err:返回错误类型的指针。
  • 其他:
    如果 p_tcb 为 NULL,则消息发送给当前任务。
    根据任务的状态,将消息放入任务的消息队列中,或者如果任务在等待消息,则直接将消息发送给任务,并根据需要调度任务。
OS_TaskResume
  • 功能:恢复被挂起的任务。
  • 参数:
    p_tcb:要恢复的任务的指针。
    p_err:返回错误类型的指针。
  • 其他:
    根据任务的状态,将任务从挂起状态恢复到就绪状态,并根据需要调度任务。
OS_TaskReturn
  • 功能:任务返回函数,用于删除任务或者在任务不支持删除时使任务无限循环延迟。
  • 参数:无。
  • 其他:
    调用用户定义的任务返回钩子函数。
    如果任务删除功能使能,则删除任务;否则,任务进入无限循环延迟状态。
OS_TaskSemPost
  • 功能:向任务发送信号量。
  • 参数:
    p_tcb:要发送信号量的任务的指针。如果为 NULL,则表示发送信号量给当前任务。
    opt:发送信号量的选项。
    ts:时间戳。
    p_err:返回错误类型的指针。
    返回值:返回任务的信号量计数器值。
  • 其他:
    如果 p_tcb 为 NULL,则信号量发送给当前任务。
    根据任务的状态,将信号量发送给任务或者直接给任务发送信号量,并根据需要调度任务。
OS_TaskSuspend
  • 功能:挂起任务。
  • 参数:
    p_tcb:要挂起的任务的指针。如果为 NULL,则表示挂起当前任务。
    p_err:返回错误类型的指针。
  • 其他:
    如果 p_tcb 为 NULL,则挂起当前任务。
    根据任务的状态,将任务挂起,并根据需要调度任务。

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

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

相关文章

CentOS安装CRI--containerd

前言 CRI,Container Runtimes,通常直译成容器进行时因为kubernetes,从1.24开始,移除了Dockershim,需要额外安装CRI,保障Pod能顺利运行。网上有很多容器进行时的工具,本文采用containerd工具。 …

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后,双击PDF文件就会出现打印,而无法直接打开。 右键PDF文件就会发现,第一栏出现的不是用Adobe打开,而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

AIGC的发展历程

AI生成内容(AIGC)的发展历程可以追溯到20世纪50年代,当时人工智能(AI)的概念还处于起步阶段。然而,AIGC技术的快速发展主要集中在21世纪初,特别是随着深度学习、自然语言处理和其他相关领域的突…

异次元店铺商品系统自带支付源码

异次元店铺系统是荔枝店铺系统3.0的完全重构版本,从零开始编写,采用原生php开发。数据库底层使用Eloquent ORM,模板渲染使用Smarty3.1以及PHP原生渲染,会话保持全程使用session。以下是一些主要功能的简要介绍: 下 载…

MySQL常见问题与解决方案详述

MySQL:常见问题与解决方案详述 作为一款广泛使用的开源关系型数据库管理系统,MySQL对于初学者来说既充满吸引力又充满挑战。本文将列举初学者在使用MySQL过程中可能遇到的一些典型问题,并提供详细的解决方案,配以图片辅助说明&am…

【漏洞复现】艺创科技智能营销路由器后台命令执行漏洞

漏洞描述: 成都艺创科技有限公司是一家专注于新型网络设备研发、生产、销售和服务的企业,在大数据和云时代,致力于为企业提供能够提升业绩的新型网络设备。 智能营销路由器存在后台命令执行漏洞,攻击者可利用漏洞获取路由器控制…

AI预测福彩3D第9套算法实战化测试第5弹2024年4月27日第5次测试

今天继续进行新算法的测试,今天是第5次测试。好了,废话不多说了,直接上图上结果。 2024年4月27日福彩3D预测结果 6码定位方案如下: 百位:3、5、6、2、7、1 十位:8、4、9、3、1、0 个位:3、5、2、…

【源码】WBF多语言交易所/申购+自发币平台币+币币+杠杆+合约/附带安装教程/带VUE工程源码

【源码介绍】 WBF多语言交易所/申购自发币平台币币币杠杆合约/附带安装教程/带VUE工程源码 【源码说明】 带VUE工程源码最新申购,自发币平台币,币币,法币,杠杆,合约多语言交易所,附带pc和手机VUE&#x…

网络基础(day3)

【 理论重点】 网络是什么&#xff1f; &#xff08;网络是载体&#xff0c;目的是传输互联网中的数据&#xff0c;数据是终端产生<手机、电脑、服务器等>。&#xff09; 如何组件网络&#xff08;良性网络架构&#xff09;&#xff1f;有网络架构思维&#xff0c;得按层…

C++从入门到精通——string类

string类 前言一、为什么学习string类C语言中的字符串示例 二、标准库中的string类string类string类的常用接口说明string类对象的常见构造string类对象的容量操作string的接口测试及使用string类对象的访问及遍历操作下标和方括号遍历范围for遍历迭代器遍历相同的代码&#xf…

普通话水平测试用朗读作品60篇-(练习版)

普通话考试题型有读单音节字词、读多音节字词、朗读作品和命题说话。 具体分值如下&#xff1a; 1、读单音节字词100个&#xff0c;占10分&#xff1b;目的考查应试人普通话声母、韵母和声调的发音。 2、读双音节词语50个&#xff0c;占20分&#xff1b;目的是除了考查应试人声…

------分割线之 WebSecurityConfigrerAdapter弃用问题------

WebSecurityConfigurerAdapter 被弃用的原因是 Spring Security 项目的维护者希望将项目的主要开发工作集中在新的配置方式上&#xff0c;即基于 Java 的配置&#xff08;Java Configuration&#xff09;和基于 Lambda 的表达式。这主要是因为 Spring 5.0 引入了重量级的 Java …

【NR RedCap】Release 18标准中对5G RedCap的增强

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

ArcGIS小技巧—你分得清投影与定义投影吗

Arcmap中关于投影的工具有四个&#xff0c;分别是定义投影、投影、投影栅格、批量投影。这四个工具既有相同之处也有不同之处&#xff0c;下面我将一一介绍。 ①定义投影&#xff1a;Arcmap中关于定义投影工具是这样描述的&#xff1a;“所有地理数据集均具有一个用于显示、测…

PD虚拟机和双系统哪个好 Mac建议装双系统吗

在当今数字化时代&#xff0c;对于部分使用Mac电脑的用户来说&#xff0c;选择如何在系统中运行Windows或其他操作系统能节省大量精力。Parallels Desktop&#xff08;PD&#xff09;虚拟机和双系统是两种常见的选择&#xff0c;它们各自具有优势和限制。下面我们来看看PD虚拟机…

SM5308 兼容IP5306 2.1A充电 2.4A放电 移动电源IC芯片

SM5308电源管理芯片的应用领域很广泛&#xff0c;主要包括&#xff1a; 1. 移动电源和充电宝&#xff1a;SM5308常用于移动电源解决方案中&#xff0c;因为它可以高效地管理锂电池的充放电过程&#xff0c;并且提供了高集成度和低外部元件数量的需求。 2. 智能手机和平板电脑…

页面分页打印,echarts图解决办法;生成PDF

1&#xff1a;echarts图片前端打印不是很完美&#xff0c;对于VUE2.0版本不是很有好 2&#xff1a;360浏览器不支持vue的最新版本的插件vue3-print-nb 3&#xff1a;vue-print-nb 可以打印带有echarts 一页内容&#xff0c;并且还存在bug&#xff0c;第一次点击打印没有&…

BIM为电力、供水和道路工程无缝集成,助力智慧城市计划

在道路和公用事业工程中利用 Bentley Open 系列应用程序&#xff0c;项目进度加快 10%&#xff0c;节省成本 1,000 万印度卢比 推动基础设施现代化&#xff0c;实现智慧城市愿景 Dholera特别投资区位于印度艾哈迈达巴德西南 100 公里处&#xff0c;毗邻古吉拉特邦的贸易中心&a…

英智数字孪生机器人解决方案,赋能仓库物流模式全面升级

工业机械臂、仓储机器人、物流机器人等模式的机器人系统在现代产业中扮演着愈发重要的角色&#xff0c;他们的发展推动了自动化和智能化水平的提高&#xff0c;有助于为制造业、物流业、医疗保健业和服务业等行业创造新效率并提升人们的生活质量。 行业面临的挑战 机器人开发、…

区块链 | OpenSea:Wyvern protocol

目录 Wyvern on the OpenSea 1 交易流程 1.1 卖家 1.2 买家 2 组成部分 2.1 WyvernProxyRegistry 2.2 OwnableDelegateProxy 2.3 NFT Contract 2.4 OpenSea Order Book 2.5 Wyvern Exchange Contract 3 总结 &#x1f951;原文&#xff1a;Wyvern on the …