11 2024 档案
摘要:查看目标文件信息 查看目标文件段信息 readelf -S test | grep debug 查看文件信息,是否有调试信息等 file test 移除调试信息 strip test gdb调试 1. 可执行文件 gcc -g test.c -o test gdb test (gdb)set arg
阅读全文
摘要:可见性修饰符和目标 cmake中有三种可见性修饰符:PRIVATE、PUBLIC和INTERFACE 这些修饰符随着命令一起使用,如target_include_directories和target_link_libraries等 这些修饰符是在目标targets的上下文中指定的 目标targets
阅读全文
摘要:Spacemacs快捷键 光标行位置 | zt | evil-scroll-line-to-top | 顶部 | | zz | evil-scroll-line-to-center | 居中 | | zb | evil-scroll-line-to-bottom | 底部 | 折叠快捷键 快捷键 函
阅读全文
摘要:客户端发送图像文件 import socket data= numpy.frombuffer(stringData, numpy.uint8) # 将获取到的字符流数据转换成1维数组 # decimg= cv2.imdecode(data, cv2.COLOR_BGR2GRAY) # 将数组解码成图
阅读全文
摘要:前面我们模拟了一个带有时钟中断的x86 CPU并初始化了系统变量 只需要在mymain.c基础上完成进程描述符PCB和进程链表管理,在myinterrupt.c中完成进程切换代码,即可完成一个可运行的OS kernel 定义进程描述符PCB linux内核中进程PCB由数据结构struct task
阅读全文
摘要:使用qemu虚拟一个x86 CPU的硬件平台 sudo apt-get install qemu-system-x86 1.下载linux内核代码 wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.4.tar.xz xz -d l
阅读全文
摘要:为了更直观的感受到内存布局,我们使用gcc的编译选项-fdump-lang-class查看 如下代码 class Base{ public: Base(){} virtual ~Base(){} privte: int i; }; 使用如下命令编译 g++ -O0 -std=c++11 -fdump
阅读全文
摘要:在计算机中,我们都知道0.1+0.2是不等于0.3的 那等于多少呢?我们使用程序测试一下 #include<iomanip> int main(){ std::cout<<std::setprecision(18)<<0.1+0.2; return 0; } //out: 0.30000000000
阅读全文
摘要:迭代器失效 序列式容器 vector deque 使用连续分配的内存 删除一个元素,会导致后面的元素前移 不能使用如erase(iter++)这种方式删除元素 erase()会返回下一个有效的迭代器 /* for(iter=v.begin(); iter!=v.end(); iter++){ if(
阅读全文
摘要:C++初始化 C++11之前的初始化 T var; // 构造 T var(val); T var= val; // 列表 T var{val}; T var={val}; C++11统一了初始化方法:列表初始化 brace-initialization 消除了之前初始化基本类型、聚合类型和非聚合类
阅读全文
摘要:conda使用 conda update conda conda info -e # conda env list conda create -n envname python=ver conda remove –n envname --all conda activate envname cond
阅读全文
摘要:测试中间层输出 import torch import numpy as np from PIL import Image from torchvision import transforms, models import matplotlib.cm from torchinfo import su
阅读全文
摘要:VGG16 from torch import nn class VGG(nn.Module): """ 一共6个版本,最常用VGG16 VGG采用五组卷积,三个全连接,最后用Softmax分类 VGG显著特点:每次经过池化层maxpool后特征图尺寸减小一倍,,通道数增加一倍(最后一个池化层除外)
阅读全文
摘要:实现神经网络 torch 将张量转换为torch.cuda.TensorFloat并在GPU上进行计算 torch.autograd 构建计算图并自动获取梯度 torch.nn 具有共享层和损失函数的神经网络库 torch.optim 通用优化算法 神经网络基本结构 网络层:神经网络的基本模型 网络
阅读全文
摘要:PyTorch数据处理工具箱 torch.utils.data Dataset 抽象类,其他数据集类定义时需继承自该类,并覆写两个方法:getitem__和__len DataLoader 定义一个新的迭代器,实现批量batch读取,打乱shuffle数据和并行加速等功能 random_split
阅读全文
摘要:优化器 建立优化器实例 所有的优化方法都继承自optim.Optimizer 包含属性: optimizer.defaults optimizer.param_groups optimizer.param_groups[0].keys() torch.optim实现了大多数优化方法,如RMSProp
阅读全文
摘要:(转)Editor MACroS(宏编辑器) 最初,人们认为Emacs是一个编辑器,与Vim一起并称为两大编辑神器,据说Vim是编辑器之神而Emacs是神之编辑器,又据说这世界上的程序员分三种,一种是使用Emacs,一种是使用Vim,另外一种是其他。 也有人认为Emacs是一个架构在编辑器上的集成环
阅读全文
摘要:构造函数constructor explicit的引入,是为了能够制止“单一参数的constructor”被当作一个conversion运算符 带有默认构造函数的对象成员 若一个类中包含对象成员,且该对象有默认构造函数,此时: 若该类没有构造函数 则编译器会合成一个默认构造函数,且发生在真正调用时
阅读全文
摘要:一、object typedef struct{ float x; float y; float z; }Point3d; 可以有以下方法打印上述类型字段: 定义函数 void print_point3d(const Point3d* pd){ printf("(%g,%g,%g)", pd->x,
阅读全文
摘要:在许多为了性能和效率的场景下,需要开发一些lock-free的算法和数据结构 atomic_flag 原子布尔类型,只支持 test-and-set 和 clear 操作 构造函数 atomic_flag()noexcept=default; atomic_flag(const atomic_fla
阅读全文
摘要:std::future 在介绍promise和packaged_task时多次提到future,现在详细介绍该类型 std::future用来获取异步任务的结果,是一种线程间同步的方式,通常由某个Provider创建,Provider在某个线程中设置共享状态的值,与该共享状态相关联的future对象
阅读全文
摘要:头文件包含: Providers类 std::promise std::packaged_task Futures类 std::future std::shared_future Providers函数 std::async() 其他类型 std::future_error std::future_
阅读全文
摘要:std::packaged_task std::packaged_task包装一个可调用对象,并允许获取该可调用对象计算的结果,可调用对象内部包含两个基本元素: 1.被包装的任务 任务是一个可调用对象,如函数指针或函数对象,该对象的执行结果会传递给共享状态 2.共享状态 用于保存任务的返回结果,并可
阅读全文
摘要:条件变量 类似于pthread库中的pthread_cond_*()提供的功能,C++ 11标准提供了两种表示条件变量的类,分别是condition_variable和condition_variable_any,定义在头文件<condition_variable>中 std::condition_
阅读全文
摘要:互斥量 C++11互斥锁定义在<mutex>头文件中,提供了独占资源的特性 C++11头文件中定义的互斥量 互斥量 说明 mutex 基本互斥量 recursive_mutex 递归互斥量 timed_mutex 定时互斥量 recursive_timed_mutex 递归定时互斥量 std::mu
阅读全文
摘要:进程与线程 进程:系统资源分配的最小单元,通常被定义为一个正在运行的程序实例 线程:系统任务调度的最小单元 进程间通信:管道,信号量,信号,消息队列,共享内存,套接字 线程间通信:锁机制,信号量机制,信号机制,屏障 同步:保证任务片段的先后顺序 互斥:为了保证资源在同一时刻只能被一个线程使用,即数据
阅读全文
摘要:信号 信号是UNIX系统里常用的进程间异步通信方式 asio库提供类,利用异步IO的方式处理UNIX信号 类原型 class signal_set{ public: explicit signal_set(io_service& io_service); signal_set(io_service&
阅读全文
摘要:boost.pool boost.pool库基于简单分隔存储的思想实现了一个快速、紧凑的内存池 不仅能够管理大量对象,还可以用作STL的内存分配器,在需要大量分配或释放小对象时效率很高,且不需要考虑delete 包含4个组成部分 简单pool 分配类实例object_pool 单件内存池single
阅读全文
摘要:asio 基于操作系统提供的异步机制,不要求使用多线程和锁,采用前摄器proactor设计模式,实现了可移植的异步IO操作 目前asio主要关注于网络通信方面,封装了socket API,提供了TCP、UDP、ICMP等网络通信协议,但asio的异步操作不局限于网络编程,还支持UNIX信号,定时器,
阅读全文
摘要:ROS2小乌龟测试 下载turtlesim功能包 source /opt/ros/humble/setup.bash git clone https://github.com/ros/ros_tutorials.git -b humble-devel # 创建工作空间 mkdir -p turtle
阅读全文
摘要:colcon工具相对于bazel等,效率不算高,但是其模块化做得好,易用性程度高 通过解析package.xml获取配置信息,包括描述规范,名称,版本,构建方法和测试方法等 有关依赖会附有_depend扩展名说明 如构建依赖build_depend 构建工具依赖buildtool_depend 测试
阅读全文
摘要:ROS2工作空间与功能包 ros2是基于分布式设计的模块化软件中间件,各个功能分布在不同软件包,并在不同仓库中维护,通过XML文件描述各个功能包的依赖关系 CMake可以配置自动化测试,下载并构建依赖库,运行特定脚步和获取环境变量并配置宏定义等 一个进程可以有若干个节点,一个节点可以提供若干个不同的
阅读全文
摘要:节点 ROS2中,节点是一个抽象的实体,可以代表某类特定功能的抽象集合体,可以存在于进程或线程中 是ROS2的基础功能的载体,所有通信都需要通过节点来实现 节点和节点执行器 节点执行器executor是协调和调度节点运作的实体,并响应各类通信的回调结果 每个进程有一个或多个节点执行器,每个节点执行器
阅读全文
摘要:一. 前言 Lisp语言 Lisp诞生的时候包含了9中新思想,其中一些被用于其他高级语言,我们已经习以为常,至今还有2种是Lisp独有的。 条件结构 (即if-else结构),在Fortran 1时只有基于底层机器指令实现的goto结构。 函数也是一种数据类型 Lisp语言中,函数跟整数和字符串一样
阅读全文
摘要:随机数生成设备 随机数生成设备random_device,生成非确定性随机数,在Linux中通过读取/dev/urandom设备,Windows中使用rand_s 重载了()运算符,每次调用会生成一个min()到max()之间的高质量随机数种子,若在Linux(Unix Like)下,可以使用这个生
阅读全文
摘要:ratio 先看一下ratio的定义 template<intmax_t N,intmax_t D=1> class ratio; ratio是由非类型参数定义的模板,用来定义一个比率N/D,如ratio<1,-2>表示-0.5 标准库中定义的常用ratio类型 type definition 说明
阅读全文
摘要:Emacs安装 # Install essential build tools sudo apt-get install build-essential texinfo libx11-dev libxpm-dev libjpeg-dev libpng-dev libgif-dev libtiff-d
阅读全文
摘要:{ "files.autoSave": "afterDelay", "editor.lineNumbers": "relative", "vim.easymotion": true, "vim.leader": "<space>", "vim.useSystemClipboard": true, "
阅读全文
摘要:[Desktop Entry] Encoding=UTF-8 Name=ApplicationName Comment=ApplicationComment Exec=/path/exe # 可执行文件路径 Icon=/path/icon # icon路径 Terminal=false #软件打开时
阅读全文
摘要:Richard Matthew Stallman 被誉为自由软件的斗士和精神领袖,是伟大的理想主义者。作品: GNU Emacs GPL CopyLeft FSF 进入八十年代后,黑客社群在软件工业商业化的强大压力下日渐土崩瓦解,黑客文化正在受到攻击,Matthew作为一名黑客,于1985年发表了著
阅读全文
摘要:建立dev分支 在当前分支下新建一个dev分支然后切换到该分支 git branch dev git checkout dev # 相当于 git checkout -b dev git branch -a 查看分支,当前分支前会有*标识 git add . git commit -m "some
阅读全文
摘要:远程仓库 Git是分布式版本控制系统,同一个仓库可以分布到不同机器上 可用git remote查看远程仓库信息,使用-v显示更详细的信息 克隆远程仓库 git clone git@github.com:username/gitrepo.git git支持多种协议,如https等,但通过ssh支持的原
阅读全文
摘要:ubuntu安装git sudo apt-get install git 全局配置 git config --global user.name "your name" git config --global user.email "your email" --global参数表示在这台机器上的git
阅读全文
摘要:卷积层 提取数据特征,矩阵点乘求和运算 import torch from torch import nn conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3, stride=1, padding=1, dilation=1,
阅读全文
摘要:autograd自动求导 torch.Tensor与torch.Function为autograd的核心类,其相互连接生成DAG,PyTorch采用动态计算图,每次前向传播时会重新构建计算图 Tensor部分属性说明: requires_grad属性 新建Tensor时,用requires_grad
阅读全文
摘要:1. 格式化字符串 %格式化 最早用%进行格式化字符串 # %d %s %f 格式化字符串 name = "Max" num = 1 print("Hello %s, your num is %d"%(name, num)) # Hello Max, your num is 1 # 也支持字典形式格
阅读全文
摘要:Python中数值的表示 进制表示 n= 97 # 十进制表示97 n= 0b01100001 # 二进制表示97 n= 0x61 # 十六进制表示97 n= 0o141 # 八进制表示97 上面四种方式定义的值是等价的,均为十进制的97 ASCII编码表示 n= "a" n= "\b0110000
阅读全文
摘要:Python深浅拷贝 一. 变量的内存模型 x= 1 print(id(x)) # 94454455464992 print(id(1)) # 94454455464992 print(id(5)) # 94454455465120 x= 5 print(id(x)) # 9445445546512
阅读全文
摘要:1. os模块 对操作系统进行操作,如 import os os.name # 正在使用的操作系统,Windows:nt, Linux:posix os.getenv("PATH") # 读取环境变量的PATH值 os.putenv(KEY, VALUE) # 相当于 os.environ[KEY]
阅读全文