在机器视觉中,纹理是一种图像特征,指图像中局部区域在视觉上呈现的重复或规则的图案和结构。这些图案通常不直接取决于物体的形状或边缘,而是由局部像素的排列、强度和颜色的分布决定的。纹理在物体的表面或背景上提供了丰富的信息,可以帮助算法识别物体的类别、形状、位置、表面状态等。
本文是 The TensorRT Ecosystem 的中文翻译。
最近在跟着 小彭老师的 CUDA 课程 学习时,发现了一个平时很少用到的 vector 的功能,那就是自定义内存分配器。
通过查看 cppreference,发现 vector 的构造函数有两个形参,一个是 T 类型的对象,另一个是 Allocator 类型的对象, 其中 Allocator 默认为 std::allocator<T>
:
template<
class T,
class Allocator = std::allocator<T>
> class vector;
在往 vector 中插入元素时,会调用 Allocator 的 allocate 函数来分配内存,移除元素时会调用 deallocate 函数来释放内存。
在C++标准库中,std::sort的底层实现通常使用的是混合排序算法,具体来说是introsort(内省排序)。
introsort结合了快速排序、堆排序和插入排序的优点:
快速排序:在一般情况下,std::sort使用快速排序,因为它平均情况下有很好的时间复杂度 O(nlogn)
。它通过选择一个基准(pivot),然后将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归排序。
堆排序:快速排序的最坏情况时间复杂度是 O(n²)
,为避免这一情况,当递归深度超过某个阈值时,std::sort会切换到堆排序,确保时间复杂度为 O(nlogn)
。
插入排序:在数组规模较小的时候,std::sort会切换为插入排序,因为在小规模数据上,插入排序效率更高。
这种组合使得std::sort在处理不同规模和不同结构的数据时,既能保持高效的平均性能,又能避免最坏情况的性能退化。
Libwebsockets is a simple-to-use, MIT-license, pure C library providing client and server for http/1, http/2, websockets, MQTT and other protocols in a security-minded, lightweight, configurable, scalable and flexible way. It's easy to build and cross-build via cmake and is suitable for tasks from embedded RTOS through mass cloud serving.
libwebsockets
是一个简单易用的、MIT 许可的、纯 C 语言库,提供了 HTTP/1、HTTP/2、WebSockets、MQTT 和其他协议的客户端和服务器实现。它以安全为导向,轻量级、可配置、可扩展和灵活。通过 cmake
构建和交叉构建非常容易,适用于从嵌入式 RTOS 到大规模云服务的任务。
留作备忘。
本文主要介绍了 /sys/class/devfreq
和 /sys/devices/system/cpu/cpufreq
目录,以及如何手动管理和监控设备频率和 CPU 频率。同时提供了简单的 Python 脚本,用于打印设备和 CPU 的频率信息。
环境信息:
部分内容由 Github Copilot
自动生成,仅供参考。