自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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++】条款25:将构造函数和非成员函数虚拟化

如果以成员函数的方式重载operator

2024-04-29 14:19:51 167

原创 【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++】条款24:了解虚函数的成本

【代码】【More Effective C++】条款24:了解虚函数的成本。

2024-03-12 22:45:58 380

原创 【More Effective C++】条款11:禁止异常流出析构函数之外

【代码】【More Effective C++】条款11:禁止异常流出析构函数之外。

2024-03-11 23:15:02 358

原创 【More Effective C++】条款35:将非尾端类设计为抽象类

为了解决简单对象的赋值情况需要赋值转型成本,可以将拷贝函数进行重载。

2024-03-11 23:11:58 456

原创 【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++】条款6:区分前置++和后置++

后置++:返回一个const值的原因。

2024-02-23 22:56:09 399

原创 【More Effective C++】条款7:不要重载&&、||和,操作符

不能重载的原因是:不能保证函数的调用顺序,来和现有的行为保证一致。

2024-02-23 22:34:25 611

原创 【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++】条款19:了解临时对象的来源

临时对象:没有命名,不会出现在源代码中。

2024-02-15 15:49:56 780

原创 【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++】条款10:构造函数内资源泄漏处理

场景:在构造函数中遇到异常的情况。

2024-02-12 16:49:05 416

原创 【More Effective C++】条款9:利用析构函数避免资源泄漏

思想:利用对象管理资源,用析构函数自动删除指针。

2024-02-12 15:46:43 348

原创 【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

原创 【More Effective C++】条款2:使用C++转型操作符

注意:模拟的dynamic_cast不会进行是否转型成功的检查。

2024-02-10 19:36:06 385

原创 【More Effective C++】条款1:指针和引用区别

结论:除了上述情况,应该优先使用指针实现。

2024-02-10 18:08:24 512

原创 【程序员的自我修养】7. 动态链接

动态链接:将链接的过程推迟到运行时。

2024-02-02 23:06:26 526

原创 【Ubuntu 18.04 安装截图软件 flameshot 】

截完图后保存Ctrl+S,复制到剪贴板 Ctrl+C。创建快捷键:设备->键盘->+>输入名字和快捷键。

2024-01-31 15:51:24 534

原创 【程序员的自我修养】8. Linux共享库的组织

ABI接口(二进制接口):包含函数的堆栈接口、符号命名、参数规则和数据结构的内存分布。

2024-01-30 23:20:21 965

原创 【More Effective C++】条款16:谨记80-20法则

80-20法则说一个程序80%的资源用于20%代码上:软件的整体性能几乎是代码的一小部分决定的,即使性能瓶颈所在:

2024-01-27 23:20:18 459

原创 【Effective C++】6. 继承与面向对象设计

通过public继承建模,应该慎重思考父类和子类的关系,考虑下面两个例子。

2024-01-24 22:21:12 554

原创 【Effective C++11】5. 实现

【代码】【Effective C++11】5. 实现。

2024-01-23 22:40:25 723

原创 【Effective C++】4. 设计与声明

1. 语法一致性:访问class成员时每一个都是函数,不需要记住是否需要小括号。2. 使成员变量的处理有更精准的控制。3. 实现良好的封装特性。

2024-01-22 23:54:22 545 1

原创 【Effective C++】3. 资源管理

考虑以下场景,delete都不会执行,资源都会泄漏,上述函数可以使用智能指针的方式修改。

2024-01-21 15:09:45 707

原创 【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

原创 【程序员的自我修养—系统调用与API】

通过增加抽象层(标准库)来解决该问题,如,C语言中被定义在 /usr/include/unistd.h。

2024-01-17 22:05:31 348

原创 【程序员的自我修养—内存模型】

栈:1. 用于维护函数调用的上下文;2. 通常有几M的容量堆:1. 用来容纳应用程序动态分配的内存区域;2. 使用malloc或者new分配内存;3. 一般比栈大,几十到几百M的容量保留区:1. 对内存中收到保护而禁止访问的内存区域的总称;2. 如NULL无法访问,C语言中通常设置为0问题:程序中出现的段错误和非法操作是怎么回事?

2024-01-16 22:19:31 313

原创 【程序员的自我修养—进程虚拟地址空间】

问题:程序使用的空间能不能超过4GB?

2024-01-14 16:46:32 362

原创 【程序员的自我修养】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

算法+快速排序+cpp简单实现

快速排序

2023-12-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除