- 博客(69)
- 收藏
- 关注
原创 【大模型】1. 深度学习框架和推理框架概念
深度学习框架:用于构建、训练和部署神经网络模型,包含:TensorFlow、PyTorch、OneFlow等。LMIR:是TVM在优化和编译深度学习模型时使用的低级中间表示形式,用于表示模型的计算图和计算操作。深度学习模型交换格式ONNX:实现不同深度学习框架之间的模型转换和互操作性。TVM:是一个开源的深度学习编译器和优化器,
2024-05-07 16:08:48
251
原创 【More Effective C++】条款27:要求或禁止在堆中产生对象
方法:禁止使用隐式的析构函数,引进专用的伪析构函数,用来访问真正的析构函数。包含UPNumber对象的类可以修改为包含指向UPNumber的指针。析构函数声明为protected;弊端:该类不能被继承和被包含。
2024-04-30 13:53:39
147
原创 【More Effective C++】条款4:避免无用的缺省构造函数
【代码】【More Effective C++】条款4:避免无用的缺省构造函数。
2024-04-26 14:11:36
210
原创 【Effective Modern Cpp】条款9:优先考虑别名声明而非typedef
是什么,这就是为什么编译器会坚持要求你在前面加上。将会是一个数据成员,不是一个类型,在。是否表示一个类型取决于。
2024-04-24 11:36:14
223
原创 【More Effective C++】条款11:禁止异常流出析构函数之外
【代码】【More Effective C++】条款11:禁止异常流出析构函数之外。
2024-03-11 23:15:02
358
原创 【More Effective C++】条款8:new和delete的理解
operator new []:用于给数组对象分配内存,和单一版本的区别是调用构造函数的次数。程序员无法直接调用对象初始化的构造函数,所以在堆上创建对象必须使用new操作符。new:内建的操作符和sizeof一样,不能被改变意义,包含下面两个部分。operator new:只负责分配内存,可以被冲重载,改变内存分配方法。placement new:在指定的内存上构建对象,返回指向该对象的指针。上述创建对象的必须和删除对象的操作符对应起来。
2024-02-24 21:36:54
548
原创 【More Effective C++】条款22:采用op+=取代op+优势
operator+=比operator+效率高,可以通过返回值优化避免临时对象的构造和析构成本;
2024-02-22 22:44:59
601
原创 【More Effective C++】条款21:用重载技术避免隐式类型转换
【代码】【More Effective C++】条款21:用重载技术避免隐式类型转换。
2024-02-15 17:03:02
549
原创 【More Effective C++】条款20:返回值优化RVO
RVO:编译器将return表达式定义的对象构造于c内,减少了函数的临时对象的构造和析构。
2024-02-15 16:04:57
358
原创 【More Effective C++】条款18:分期摊还预期的计算成本
【代码】【More Effective C++】条款10:分期摊还预期的计算成本。
2024-02-13 12:15:02
389
原创 【More Effective C++】条款17:考虑使用lazy evaluation
含义:将计算拖延到必须计算的时候,以下为4个场景优点:避免不必要的计算,节省成本。
2024-02-13 11:28:46
513
原创 【More Effective C++】条款5:警惕隐式类型转换
转换成这种形式 if (a == static_cast(b[i]))if (a == b[i]) 忘记写了a[i],编译器不会报错,是因为发生的隐式转换;隐式类型转换操作符,可能导致错误的函数调用,应该提供显示的函数调用。
2024-02-11 16:24:44
808
原创 【More Effective C++】条款3:不以多态的方式处理数组
注意:通过array[i]操作本质上是*(array + i),通过父类指针操作子类,会出现未定义的行为。
2024-02-10 21:33:17
355
原创 【Ubuntu 18.04 安装截图软件 flameshot 】
截完图后保存Ctrl+S,复制到剪贴板 Ctrl+C。创建快捷键:设备->键盘->+>输入名字和快捷键。
2024-01-31 15:51:24
534
原创 【More Effective C++】条款16:谨记80-20法则
80-20法则说一个程序80%的资源用于20%代码上:软件的整体性能几乎是代码的一小部分决定的,即使性能瓶颈所在:
2024-01-27 23:20:18
459
原创 【Effective C++】4. 设计与声明
1. 语法一致性:访问class成员时每一个都是函数,不需要记住是否需要小括号。2. 使成员变量的处理有更精准的控制。3. 实现良好的封装特性。
2024-01-22 23:54:22
545
1
原创 【Effective C++】2. 构造/析构/赋值运算
2. 如果显式定义了其中的任何一个特殊成员函数,编译器将不会生成默认的对应函数;3. 默认拷贝赋值函数只有生成代码合法的情况下才会被创建。
2024-01-20 16:48:02
1073
原创 【Effective C++】1. 让自己习惯C++
1. 预处理器只进行简单的替换,变量名称不会被记录符号表,同时可能导致编译的目标文件包含常量的多份拷贝;2. 定义字符串的采用string替换char*,避免写两次const的情况出现;3. #define没有作用域,不能将常量的作用域限制在class内;5. enum 和 #define定义的对象不会导致非必要的内存分配;4. 如果上述类中,编译器不允许在类中设定初值,可以改用枚举值替代;6. 形似函数的宏,最好用inline函数替换。
2024-01-19 23:31:00
1109
原创 【推荐系统实践—好的推荐系统】
推荐系统的任务是联系用户和信息,实现信息消费者和信息生产者的双赢推荐系统的组成:前台的展示界面,后台的日志系统和推荐算法。
2024-01-18 23:35:22
454
原创 【程序员的自我修养—内存模型】
栈:1. 用于维护函数调用的上下文;2. 通常有几M的容量堆:1. 用来容纳应用程序动态分配的内存区域;2. 使用malloc或者new分配内存;3. 一般比栈大,几十到几百M的容量保留区:1. 对内存中收到保护而禁止访问的内存区域的总称;2. 如NULL无法访问,C语言中通常设置为0问题:程序中出现的段错误和非法操作是怎么回事?
2024-01-16 22:19:31
313
原创 【程序员的自我修养】4.静态链接
对于32位Intel X86 系列处理器,重定位表的结构是由下面结构数组定义,每个元素代表一个重定位入口。重定位:会将符合的地址用一个假的临时地址地替代,真正地址的计算留给了链接器;使用第二种方法的链接器一般采用两部链接。
2024-01-14 11:22:56
390
原创 【程序员的自我修养】3.目标文件中有什么
目标文件:源代码编译后未经过链接的中间文件可执行文件和目标文件在内容和结构上很相似,广义上可以看作一种类型的文件动态链接库和静态链接库也按照这种格式存储包含代码和数据;被用来链接成可执行文件或者共享目标文件;静态链接库可以归为这一类。可以直接执行的程序;Linux下一般没有扩展名。/bin/bash(变了).exe包含代码和数据;1. 可以和其他可重定位文件或共享目标文件链接生成新的目标文件;2. 动态连接器将该种类文件和可执行文件链接,作为进程映射的一部分。
2024-01-13 22:54:38
405
原创 【程序员的自我修养】2. 编译和链接
以"hello world"程序为例子,整个过程可以用如下的图表示。构建过程分为4个过程:预处理、编译、汇编、链接。
2024-01-13 19:02:51
725
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人