- 博客(9)
- 收藏
- 关注
原创 《More Effective C++》技术篇——要求(或禁止)对象产生于heap之中
要求对象产生于heap中,意思是需要阻止clients不得使用new以外的方法产生对象。比较好的方法就是将destructor定义为private,因为constructor的类型太多,所以仍然将constructor定义为public。然后定义一个pseudo destructor来调用真正的destructor。示例如下:class HeapBasedObject {public: HeapBasedObject() {} void destroy() const { delet.
2021-10-31 17:44:50 123
原创 《More Effective C++》技术篇——限制某个class所能产生的对象数量
如下例,只要继承Counted template就可以限制class所能产生的对象数量,超过了设置的maxObjects就会抛出异常。#include <stdlib.h>#include <iostream>template<class BeingCounted>class Counted {public: class TooManyObjects{}; //这是可能被抛出的exceptions。 static int objectCou.
2021-10-24 16:11:32 93
原创 Windows通过ssh免密登录Ubuntu
生成Windows公钥Windows的CMD中执行:ssh-keygen -t rsa,执行过程中直接回车。执行完后会在C:\Users\xxx\.ssh文件夹下生成如下三个文件:id_rsa是本地私钥id_rsa.pub是公钥known_hosts是已知的ip将Windows公钥上传到Ubuntu将C:\Users\xxx\.ssh\id_rsa.pub拷贝到Ubuntu的~/.ssh中。(通过scp)然后再Ubuntu中执行:cat ~/.ssh/id_rsa.pub &g.
2021-10-23 15:10:13 1087
原创 《More Effective C++》技术篇——将constructor和non-member function虚化
所谓virtual constructor是某种函数,视其获得的输入,可产生不同类型的对象。有一种特别的virtual constructor——所谓virtual copy constructor——也被广泛地运用、virtual copy constructor会返回一个指针,指向其调用者(某对象)的一个新副本。基于这种行为,virtual copy constructor通常以copyself或cloneself命令,或者直接命名为clone。当derived class重新定义其base cl.
2021-10-17 18:27:28 108
原创 音视频基础知识点
音频PCM:脉冲编码调制(Pulse Code Modulation)。通过采样、量化、编码将模拟信号转换为数字信号。根据奈奎斯特采样定理:为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。采样率:即采样的频率。因为采样率要大于原声波频率的2倍,而人耳能听到的最高频率为20kHz,所以为了满足人耳的听觉要求,采样率至少为40kHz,通常为44.1kHz,更高的通常为48kHz。采样位数:波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号一般是不连续的,所以模
2021-10-07 16:19:11 154
原创 Vim基本操作
简介Vim是Linux中一款常见的文本编辑器。本文将简单介绍一下Vim的基本使用方式。Vim编辑器有三种模式——命令模式、编辑模式、末行模式。三种模式的切换方式如下图:需要注意的是:编辑模式和末行模式之间不可直接切换。命令模式vim filename可直接新建文件,打开文件后默认进入命令模式。命令模式下可以移动光标或者进行删除、复制、粘贴。移动光标常用命令:方向键或者h(左)、j(下)、k(上)、l(右):光标移动一个字符。[Ctrl] + [f]:向下翻页。[C
2021-10-05 17:44:10 178
原创 linux目录、文件操作命令
命令基本格式命令格式:cmd [-options [parameter]] [file]cmd :命令名,如ls,cd等。[]:表示可省略内容。-option:选项,用于控制命令。格式有2种:-h、–help。parameter:给不同选项的设置的参数。file:执行命令的文件或目录。目录操作pwd:显示当前目录的绝对路径。cd:切换目录。示例:cd .. #切换到上级目录cd ~ #切换到用户根目录cd - #返回上次的工作目录ls:显示目录内容。常用参数:
2021-10-05 17:43:04 179
原创 linux动态库搜索路径顺序
在linux中执行程序时,有时会遇到“error while loading shared libraries”这种错误,这是因为动态链接器ld无法找到程序启动需要的动态库。这时就需要设置动态库的搜索路径了。动态链接器ld搜索路径的顺序以及如何设置:ELF文件中Dynamic Section段的DT_RPATH设置的路径。例如,可以在编译时添加链接参数“-Wl,–rpath,./lib”来指定搜索./lib。环境变量LD_LIBRARY_PATH设置的路径。ELF文件中Dynamic se..
2021-10-03 16:24:20 233
原创 Linux中获取当前进程的绝对路径
通过readlink的方式获取。bool GetExePath(std::string &path){ std::string exe_path(PATH_MAX, std::string::value_type()); auto exe_path_len = readlink("/proc/self/exe", &exe_path[0], exe_path.size()); if (exe_path_len < 0) { std::ce.
2021-10-03 16:22:57 478
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人