- 博客(217)
- 收藏
- 关注
原创 Google C++ 异常处理建议 & Google C++ Style Guide
摘要:Google C++ Style Guide禁用异常主要考虑大规模项目的可维护性、异常安全风险及性能开销,建议使用显式错误码。assert仅限调试阶段,因其在Release模式会被移除且直接终止程序,生产环境需显式错误处理。该指南强调代码可读性、一致性,规范包括命名规则(如snake_case变量)、文件结构、类设计(禁用多重继承)、智能指针优先、禁用异常等核心原则,与其他规范(如LLVM)在异常和命名风格上存在差异。(149字)
2025-08-05 11:20:42
28
原创 C++头文件:注意模板类在头文件中的使用 & C++20的模块
C++模板类在编译时会针对不同参数类型展开生成独立代码,导致编译后文件体积显著增加。本文通过实验展示,每增加一种vector实例化类型(如int、string、double),程序大小几乎翻倍。这是因为编译器会为每个模板实例生成完整代码,在多cpp文件中重复实例化会加剧编译负担。文章建议使用C++20模块功能,将模板定义封装在模块中(如myvector.cppm),通过导入(import)方式复用,避免重复展开,从而提升编译效率。这种方法特别适用于大型项目,能有效减少编译时间和最终二进制体积。
2025-08-05 11:19:20
130
原创 BERT:Bidirectional Encoder Representations from Transformers,双向预训练的NLP模型(二)
BERT模型论文3,4,5章节
2025-07-31 10:34:01
58
原创 BERT:Bidirectional Encoder Representations from Transformers,双向预训练的NLP模型(一)
BERT论文第一,二部分
2025-07-31 10:33:09
142
原创 大模型浪潮下,AI产品经理的破局与新生
在当下科技浪潮中,大模型技术成为了闪耀的焦点,各行各业都在探索如何借助这一前沿技术实现创新与突破。这一热潮也为产品经理们带来了新的机遇与挑战,尤其是那些渴望转型为AI产品经理的从业者。本文将深入剖析深度学习与大模型的发展历程,探讨AI产品经理的核心职责,并结合具体产品实例,为有志于在这一领域发展的人士提供全面的洞察与指引。同时,着重探讨AI产品经理如何判断AI或大模型的能力边界,这是驾驭技术、打造成功产品的关键。
2025-07-17 20:13:50
880
原创 JAVA几个注解记录
在Java中,、和是Lombok库提供的注解,用于自动生成Java类中的样板代码(如getter、setter、构造函数等),从而减少冗余代码,提高开发效率。以下是它们的详细功能和使用场景:功能:示例:等效于手动编写:2. 注解功能:示例:等效于手动编写:3. 注解功能:示例:等效于手动编写:4. 组合使用场景常见组合:为什么需要同时使用?与Jackson等库的兼容性:final字段与冲突:自定义构造函数冲突:要使用这些注解,需在项目中添加Lombok依赖:Maven:Gradle
2025-07-17 20:11:18
250
原创 Language Models are Few-Shot Learners: 开箱即用的GPT-3(一)
GPT-3论文翻译与解读第一部分:abstract和introduction
2025-07-10 14:53:08
34
原创 Language Models are Few-Shot Learners: 开箱即用的GPT-3(二)
GPT-3论文翻译解读第二部分:Approach
2025-07-10 14:52:13
229
原创 CUDA编程模型中的线程模型
本文介绍了CUDA编程中的线程模型,包括逻辑模型和物理模型。在逻辑模型中,kernel执行对应grid,包含block和thread两个层级,通过<<<>>>指定形状参数。物理模型涉及GPU硬件执行单元SM(流式多处理器)的运作机制,SM采用SIMT架构以32线程的warp为基本执行单元。文章强调block大小应设为32的倍数以适配硬件特性,并提供了设备信息查询代码示例,说明不同grid/block配置对性能的影响。CUDA驱动负责将逻辑线程模型映射到物理设备上进行调度执
2025-07-03 17:52:48
52
原创 使用Visual Studio 2022创建CUDA编程项目
本文介绍了在Visual Studio 2022中配置CUDA开发环境的完整流程。首先需要安装VS2022并勾选C++开发组件,然后安装CUDA Toolkit和兼容的NVIDIA驱动。创建项目时选择CUDA模板,VS会自动生成数组相加的示例代码。项目配置包含CUDA头文件依赖和链接器设置(cudart_static.lib)。文章详细说明了从环境搭建到代码编写、调试的完整步骤,帮助开发者快速上手CUDA编程。
2025-07-03 17:51:52
393
原创 单图像生成3D动画模型TripoSR的部署过程
最近想做一个3D建模的事情,在做了一番技术调研之后,发现现在的一个技术路径是通过单张的图像直接生成对应的3D模型,而其中的一个模型:TripoSR的应用还比较多。决定深入研究一下,和之前不一样,这次打算在读论文之前,把demo先跑起来。把模型跑起来还是有点小坑的。
2025-06-06 15:58:21
258
原创 windows上的visual studio2022的项目使用jenkins自动打包
本文介绍了如何在Linux系统上使用Jenkins自动打包Windows端的Visual Studio 2022项目。主要包括配置Jenkins服务、设置Windows代理节点、安装VS2022构建工具等步骤。重点说明了通过Jenkins代理连接Windows节点,以及使用MSBuild命令进行项目打包的方法。该方案实现了跨平台自动化构建,适用于需要在Linux服务器上管理Windows项目持续集成的场景。
2025-06-06 15:53:47
580
原创 系统级编程(六):windows编程:LIB和OBJ格式文件解析
在C++编程中,目标文件(OBJ)和静态库文件(LIB)是编译过程中的重要组成部分。OBJ文件采用COFF(Common Object File Format)格式,而PE文件(如EXE和DLL)是COFF的扩展。COFF文件结构包括文件头、节表、符号表和字符串表。通过定义相应的结构体,可以解析OBJ文件的内容。例如,使用CoffFileHeader结构体读取文件头,SymbolTableEntry结构体读取符号表。然而,在读取符号表时,由于内存对齐问题,实际读取的字节数与文件中的字节数可能不一致,需要手动
2025-05-16 17:55:30
195
原创 系统级编程(五):windows编程中加载DLL的两种典型方式的比较
在Windows编程中,集成DLL的两种主要方式是在IDE中直接调用和使用系统API LoadLibrary动态加载。直接调用会在exe文件的导入表中写入依赖信息,导致程序启动时检查DLL依赖,而LoadLibrary则不会。此外,LoadLibrary方式无法直接使用DLL中的类,需要通过工厂函数创建类实例。直接调用方式在IDE中可能对函数命名进行了转换,而LoadLibrary需要显式使用extern "C"来避免名称修饰问题。通过代码示例展示了两种方式的实现及其导入表依赖的差异,并
2025-05-16 17:54:36
249
原创 系统级编程(四):利用windows API使用操作系统剪切板
剪切板是操作系统提供的一种内存空间,用于在进程之间传递数据。通过系统级编程,可以实现对剪切板的基本操作,如写入和读取数据。写入剪切板时,首先需要打开剪切板,清空其内容,然后将数据复制到全局内存中,并设置剪切板数据类型(如CF_TEXT)。读取剪切板时,打开剪切板后检查数据类型,获取数据并输出。此外,还可以通过自定义数据类型(如999)传递复杂的数据结构,如自定义的结构体。需要注意的是,如果结构体中包含指针,必须进行深度复制,否则在其他进程中访问该指针会导致崩溃。
2025-05-10 11:56:54
132
原创 系统级编程(三):通过读取PE文件获取EXE或者DLL的依赖的另一种办法
本文介绍了如何通过Windows API将PE文件映射到内存中,以快速获取其导入表信息。首先,使用CreateFile和CreateFileMapping将文件加载到内存,并通过MapViewOfFile获取内存首地址。然后,通过指针操作解析PE文件结构,将相对虚拟地址(RVA)转换为文件偏移,定位并读取导入表。最终,通过UnmapViewOfFile和CloseHandle释放内存和文件句柄。这种方法适用于大文件处理,能够显著提升读取效率。
2025-05-10 11:55:18
73
原创 系统级编程(二):通过读取PE文件获取EXE或者DLL的依赖
Windows的PE文件(Portable Executable)是一种专为Windows操作系统设计的标准可执行文件格式,用于存储和管理可执行程序、动态链接库(DLL)、驱动程序等二进制文件。PE文件格式自Windows NT 3.1引入以来,已成为Windows平台上所有可执行文件的标准格式,并广泛应用于后续的Windows版本,包括Windows XP、Windows 7、Windows 10等。
2025-05-06 17:25:34
330
原创 系统级编程(一):内存的段页式管理
C++语言的强大之处就在于利用指针直接操作内存,从而得到超高的性能和非常灵活的编码方式。所以,更加进一步的了解操作系统对内存的使用和分配是非常有必要的,这一部分不完全是C++/C语言的范畴,更多的是操作系统原理,或者是计算机体系结构知识体系的范畴。
2025-05-06 17:24:31
179
原创 知识蒸馏: Distilling the Knowledge in a Neural Network(下)
上面两篇文章已经把知识蒸馏这篇论文说的差不多了,只剩下最后一点,这一篇文章全部说完。上一篇说到了通用+专用模型的方式如何划分数据。接下来就说这种模型集成的方式的性能了。
2025-03-27 15:51:56
107
原创 知识蒸馏: Distilling the Knowledge in a Neural Network(中)
上一篇已经详细讲了论文的前两章,知识蒸馏的基本逻辑和详细的算法过程。这一篇来说说论文中的后面几张,包括了知识蒸馏算法在MNIST和一个语音识别数据集上的实验效果,还有就是通用模型+专家模型与多专家系统的区分。
2025-03-20 17:28:32
178
原创 知识蒸馏: Distilling the Knowledge in a Neural Network(上)
整片论文主要讨论和解决一个问题,在模型越来越大,数据集越来越多的情况下,即使算力已经翻了N倍,训练和部署大模型仍然是一个非常耗时的工作。知识蒸馏,distill knowledge通用模型 + 专用模型并行训练的方式。文章的摘要一开头就说的这个事情:这一段说的是说一个普遍的提高机器学习算法性能的方法就是用同样的数据训练多个模型,然后把多个模型的结果拿来做平均,就能提高算法性能。
2025-03-20 17:27:26
241
原创 DDPM网络:训练过程的数学模型
图像生成领域中,论文《Denoising Diffusion Probabilistic Models》是一篇非常重要的论文,数学属性比较大,自己花了不少时间去理解里面的数学推导过程。所以总共花了3篇内容来记录这篇论文的内容,这是第二篇。
2025-02-20 21:56:54
103
原创 DDPM模型:正向/反向过程的数学模型
图像生成领域中,论文《Denoising Diffusion Probabilistic Models》是一篇非常重要的论文,数学属性比较大,自己花了不少时间去理解里面的数学推导过程。所以总共花了3篇内容来记录这篇论文的内容,这是第一篇。
2025-02-20 21:49:30
267
原创 2024对DevOps的思考
而敏捷开发更强调的是人与人之间的合作和沟通,而不是依赖文档(当然,不是不需要文档,必要的文档记录是很重要和必要的工作)。但是随着社会的发展,各行各业对软件的依赖越来越大,各种复杂的业务都需要有软件的介入,复杂的业务场景,更短的开发周期,更频繁的业务场景变更,导致瀑布模型的开发模式无法保证有效和高质量的产品开发。一个简单的例子就是,对于一个需求的优先级和重要性,无法有一个客观的判断,而对于客户而言,他提出的每一个需求对他而言都是重要和关键的,而我们的团队无法对其进行判别,更别说去对客户进行引导。
2025-01-22 19:28:43
622
1
原创 嵌入式开发:程序下载(包括ARM和FPGA)
嵌入式开发的范围很广,ARM公司的STM芯片应该算是应用很广的开发内容。ARM一般通过Keil软件来进行开发。用Keil软件编译完成之后,就可以通过下载线下载到ARM芯片的固件中存储起来。
2025-01-22 10:44:54
267
原创 C++异步编程之协程
这个函数会返回一个包含promise_type的类,以及这个类的一个句柄std::coroutine_handle<promise_type> coro_handle;所谓的异步编程,主要的问题也是说如何解决好多个线程之间调用先后问题,通过锁机制可以有效的控制多个线程的执行顺序,比如上面文章中提到的生产者-消费者模式。在JS语言中,对于这个异步编程模型有着一个非常通用的编程模型:Promise。在之前的异步编程的文章中,提到过C++中一种非常普遍的异步编程方式:锁机制。通过co_return来结束协程。
2025-01-22 10:44:19
126
原创 C++中的左值,右值,拷贝,移动,转发等概念
写C++的人都知道,C++类定义中的构造函数是非常重要的,如果一个类中的成员有指针的话,是需要定义一些不同类型的构造函数来处理这些指针的,不然非常容易出现内存的越界访问和内存泄漏。而右边的值可以是变量,也可以是常量,也就是在执行过程中不发生变化的,在内存中也没有地址(其实是有地址的,一般在常量去,&这个取地址运算符不能做用于这个上面)。简单的理解,赋值运算符的左边的值可以是变量,是可以在执行过程中发生变化的,或者说这个值在内存中是有地址的,可以被取地址操作的。
2025-01-02 14:50:17
276
原创 C++代码中数组操作的安全性探讨:基础数组,vector和span
但是这里存在的一个问题就是vector会存在一个内存拷贝的问题,也就是vector和vector内的元素都会重新拷贝一份,如果是类的话,还会执行内存拷贝的构造函数。这样的数组在函数传递的时候,会存在一个数组退化的问题(array decay),也就是退化成了一个指针。在函数参数传递的时候,必须跟一个size的参数过去,否则无法对这个指针进行安全的使用。越界问题我们等下比较vector和span的时候再说,先提一下span的用法,我理解其实就是一个vector的引用!以我自己用的比较多的vector为例。
2025-01-02 14:48:56
140
原创 C++代码强制转换之reinterpret_cast
double这个会提示报错。doubledouble输出结果是4.94066e-324,这个可以参考double在各种体系结构中的分解了。从大模型中截取了一段给给位做个参考,这个就不细说了:在x86架构中,double双精度类型数据遵循IEEE 754标准进行存储和表示。根据IEEE 754标准,双精度浮点数由三个主要部分组成:1位符号位(S),11位指数位(E),以及52位尾数位(M)。这种结构使得双精度浮点数能够表示非常大的数值范围和高精度的小数部分。
2024-12-23 16:20:15
246
原创 C++代码强制转换之dynamic_cast
dynamic_cast 是 C++ 中用于在运行时进行类型转换的操作符,主要用于处理多态类型(即包含虚函数的类)。它允许将基类指针或引用安全地转换为派生类指针或引用。如果转换失败,dynamic_cast 会返回 nullptr(对于指针)或抛出 std::bad_cast 异常(对于引用)。
2024-12-23 16:19:30
170
原创 C++代码强制转换之static_cast
static_cast用于基本数据类型转换、指针和引用的转换以及类层次结构中的上行和下行转换。static_cast 是编译器内置的功能,是在编译时进行的,没有运行时开销,也就是编译链接后就直接形成了汇编代码。其实现细节通常不在标准库的源码中,而是直接嵌入到编译器的代码生成部分。static_cast会做一些类型检查,比如指针的转换,基本类型的指针转换是无法通过static_cast来做转换的完全不相干类之间也无法通过static_cast来做转换。
2024-12-20 16:19:01
113
原创 C++类中const变量的使用过程中的一些注意事项
const变量是C++代码中一个比较常用的关键字,比起定义一个宏,const修饰的变量可以让编译器做一些类型检查等工作,能比较好的保证代码的稳定性和可靠性。但是这个const用起来,有时候也有点小坑。
2024-12-16 09:25:14
110
原创 C++的虚表:重载逻辑详解
C++的虚表结构与逻辑是实现面向对象编程的基石之一,虽然是一个比较老的话题,也必须拿出来再整理一遍。结构大概是这样的:下面所有的代码都是在Visual Studio下调试的,VS的图形界面调试还是比linux下要舒服的多。
2024-12-16 09:24:26
231
原创 C++编程中的段错误:segmentation fault和bus error常见原因和捕获方法
任何一个C++ coder应该都碰到过这个问题,程序跑着跑着直接出现这个错误,整个程序崩掉。这个错误的本质原因在于代码中有代码访问了不属于代码进程的内存范围,就会触发这个segmentation fault。或者换句话说就是,内存访问越界,访问了不属于自己的内存。在说具体哪些之前,先简单插一句,为什么内存访问会越界,又为什么会提示segmentation fault这个错误信息。
2024-12-12 09:41:45
401
1
CEF框架87版本的代码
2025-08-13
单图像生成3D动画模型TripoSR代码
2025-08-11
程序员的文本编辑器Sublime Text3
2025-05-11
Linux系统编程,包括基本命令,gcc,makefile,文件和目录操作等等,包括进程,信号等内容
2024-11-21
opencv-4.2.0-libs-with-contrilb
2024-11-15
MINIST手写数字识别DEMO
2024-10-28
数据库访问软件:DBeaver免安装版本
2024-10-23
GAN网络的几篇论文,主要是图像方面的论文
2024-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人