tool
订阅转换转换链接sub SwitchyOmega (V3) 配置 配置备份.bak ssh-keygen -R ip
C++ 泛型编程和模板
SFINAESubstitution Failure Is Not An Error : 替换失败不是错误*** 在模板的参数替换过程中,如果某个模板参数导致不合法的替换,编译器并不会立即报错,而是尝试寻找其他匹配的模板。 ***当编译器在实例化一个模板时,进行模板参数替换,如果替换过程中发生了错误(例如类型不匹配、表达式非法等),编译器会忽略这个模板,而不会将其视为编译错误。这时,编译器会继续寻找其他可能匹配的模板。如果没有找到其他匹配的模板,编译才会失败。SFINAE 主要用于函数模板的重载,通过某些条件选择合适的模板函数,而忽略不适用的函数模板。 typenametemplate <typename T>typename std::enable_if<std::is_integral<T>::value, void>::typeprocess(T value) { std::cout << "Processing integral type: " << value...
动态链接库和pybind11
构建 为了在C++项目下直接测试该DLL,在头文件中也需要暴露dll的API.如果需要生成python可调用的pyd模块, 需要include python解释器的include目录和boost目录、site-packages下的pybind11de include目录,另外还需要添加python的libs目录和boost目录下的编译完的stage下的lib目录。链接python*.lib #define BOOST_PYTHON_STATIC_LIB#include <boost/python.hpp>#define NOMINMAX#include<pybind11/pybind11.h>#undef max//放在<pybind11/numpy.h>之前(#define NOMINMAX有时不起作用)#include<pybind11/numpy.h>#define EXPORT_DLL __declspec(dllexport)class EXPORT_DLL className{ ...
architecure design
RPC远程过程调用(RPC):RPC 是一种通信机制,用于在分布式系统中不同的进程或计算机之间进行远程调用,使得它们可以像本地调用一样进行通信和交互。在嵌入式系统中,RPC 可用于实现分布式应用程序的模块化设计,允许不同的嵌入式设备或模块之间通过网络或其他通信介质进行函数调用和数据传输。通过 RPC,嵌入式系统的不同组件可以相互协作,共享资源和功能,提高系统的可扩展性和灵活性。
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 函数指针表 ││ ┌─────────────────────────┐ ││ │...
