effective python
单例类的实现单例类的实现需要注意几点: 显式创建单例,重写__new__方法 确保线程安全,加线程锁 import threadingclass Test: _instance = None _lock = threading.Lock() def __new__(cls, *args, **kwargs): if not cls._instance: with cls._lock: if not cls._instance: cls._instance = super(Test, cls).__new__(cls, *args, **kwargs) return cls._instance def __init__(self): # 初始化代码,确保只会在第一次实例化时执行 if not hasattr(self, '_initialized'): # 初始化代码...
C artifice
artifice结构体字面量赋值struct hal_support_s{ uint16_t data0; uint16_t data1;};const struct hal_support_s hal_support ={ .data0 = 1, .data2 = 2}; HAL(Hardware Abstraction Layer,硬件抽象层)┌──────────────────────────────┐│ 应用/业务层 ││ (如主循环、业务逻辑、CLI等) │└─────────────▲────────────────┘ │ │ 调用 │┌─────────────┴────────────────┐│ HAL 支持层 ││ hal_support_s 函数指针表 ││ ┌─────────────────────────┐ ││ │...
C++ 常用函数
Welcome to [C++]CPP合集(github)虚函数表实现机制 Quick Start 多引用自github上的C++项目 成员变量或函数的命名约定public : 公共的成员变量不建议直接暴露,而是通过公共成员函数来获取protect : 结尾加下划线, 比如member_private : 结尾加下划线, 比如member_ (我觉得也可用开头加下划线 _member) UML类图箭头 普通箭头: 箭头通常表示关联关系(Association)。它指示两个类之间的连接,表示类之间的关联或依赖关系。 空心箭头:空心箭头通常用于表示继承关系(Inheritance)。它表示一个类继承自另一个类,即子类继承父类的属性和方法。 菱形符号菱形通常用于表示聚合关系(Aggregation)或组合关系(Composition)。聚合关系:表示整体与部分之间的关系,部分可以存在独立于整体。组合关系:表示整体与部分之间的关系,部分不能存在独立于整体。 实线和虚线实线:...
Eigen
矩阵Matrix 模板参数Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime, int Options = 0, int MaxRowsAtCompileTime = RowsAtCompileTime, int MaxColsAtCompileTime = ColsAtCompileTime> Options 参数是指定矩阵使用行为主存储顺序,比如RowMajor(枚举) 就是指定行主序,一行在内存中是连续的。MaxRowsAtCompileTime和MaxColsAtCompileTime在需要指定时非常有用,即使在编译时不知道矩阵的确切大小,但在编译时知道一个固定的上限。这样做的最大原因可能是为了避免动态内存分配。 点乘和叉乘dot(), cross() 欧几里得范数squaredNorm : 所有系数的平方之和norm : 欧几里得范数的平方根v.lpNormEigen::Infinity() :...
Eigen
lwip ethernetmac addrIPV4的全网广播地址是 FF:FF:FF:FF:FF:FFMAC 地址的结构:OUI + NIC 前 3 个字节 (24 位) 后 3 个字节 (24 位) OUI (Organizational Unique Identifier) NIC 部分 (Network Interface Controller) 组织唯一标识符 网络接口控制器标识符 标识 设备的制造商 由制造商分配的唯一序列号 由 IEEE 统一分配和管理 由制造商自行分配,确保在其 OUI 下唯一 OUIOUI 是由 IEEE(电气与电子工程师学会) 的注册管理机构 RA(Registration Authority) 官方分配给设备制造商的一个全球唯一的标识符。 特殊位:U/L 和 I/G在第一个字节中,有两个非常重要的位(最低有效位),它们定义了地址的属性: I/G (Individual/Group) Bit:位置:第一个字节的 第 0...
Qt
关于Qt的一些笔记Qt Creator的安装用清华镜像注意qt的账户分商务和社区版本https://mirrors.tuna.tsinghua.edu.cn/qt/ moveToThreadmoveToThread 设置线程亲和性的作用是将对象及其事件处理关联到指定的线程。在 Qt 等框架中,每个对象默认属于创建它的线程,只有属于某个线程的对象才能在该线程中安全地接收和处理事件。
关于嵌入式的一些概念
U-Boot常见的 开源引导加载程序,用于嵌入式系统。它支持多种架构,包括 ARM、x86、PowerPC、RISC-V 等。U-Boot 提供了启动嵌入式系统的关键功能,如加载操作系统内核、引导文件系统、硬件初始化和系统调试。 b: Byte 8bitw: Word 字 16bit(嵌入式)I: 整型 interge 32bit BSP板级支持包(BSP):BSP 是嵌入式系统开发中的一个重要概念,指的是为特定的硬件平台或开发板提供的软件支持包。BSP 包含了针对特定硬件平台的驱动程序、操作系统适配层、外设控制库以及其他必要的软件组件。它的目的是为嵌入式开发人员提供一个统一的接口和工具集,简化针对特定硬件平台的软件开发过程。BSP 可以包括针对处理器、内存、外设(如串口、GPIO、SPI、I2C 等)、中断控制等的底层驱动程序和库。 PS and PLPS : Processing SystemPS端通常指的是处理系统部分,即嵌入式处理器或CPU。这个部分通常运行软件,执行高层次的应用程序代码和控制任务。在Xilinx的Zynq系列FPGA中,PS端通常指的是内嵌的ARM...
arm
RICRIC 通常指 RAN Intelligent Controller(无线接入网智能控制器)
linux kernel
kernel 编译常见错误编译选项证书make[1]: [/home/hjk/Desktop/workspace/00.linux-kernel/linux-6.14.2/Makefile:1994: .] Error 2make: [Makefile:251: __sub-make] Error 2 编译时内存不足(多半是虚拟机分配的内存空间不足)# 1. 创建分区sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 # 1 * 1024 = 1024 创建 1 g 的内存分区sudo mkswap /swapfilesudo swapon /swapfile# free -m #可以查看内存使用# 创建完交换分区之后就可以继续编译# 编译完之后记得用以下命令关闭交换分区# 某次我就是忘了关闭交换分区,导致开不了机,然后切换 tty1 ,登进去之后关闭交换分区才可以进入桌面的。#2. 关闭分区sudo swapoff /swapfilesudo...