自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 Language Models are Few-Shot Learners: 开箱即用的GPT-3(四)

GPT-3论文的测试结果(续)

2025-07-28 13:36:54 111

原创 Language Models are Few-Shot Learners: 开箱即用的GPT-3(三)

GPT-3论文的测试结果

2025-07-28 13:36:06 176

原创 大模型浪潮下,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

原创 Attention Is All You Need: Transformer的提出(二)

Transfomer模型解读

2025-07-04 16:31:04 52

原创 Attention Is All You Need: Transformer的提出(一)

Transfomer模型解读

2025-07-04 16:30:33 138

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

原创 C++ DLL导出时变量与函数的区别:IAT导入地址表

DLL编程中的IAT导入地址表

2025-03-27 15:32:59 196

原创 知识蒸馏: 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++利用多态对工厂模式的一种实现

这种模式是可以实现根据不同的传入参数实现不同的类的创建,但是稍显不优雅。

2024-12-20 16:21:21 228

原创 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版本的代码

也就是chrome浏览器的87版本代码。已经用cmake编译成了VS 2022的项目文件,下载后即可使用VS 2022进行运行和调试。学习CEF的必备。 参考文章:https://pcgamer.blog.csdn.net/article/details/136561787

2025-08-13

单图像生成3D动画模型TripoSR代码

已经本地部署和调试过了,可以运行。 通过输入单张2D图像,生成一个3D的MESH文件,也可以生成带纹理的模型。 但是生成的模型精度,纹理都还差强人意。这是初始版。 因为上传文件的大小不能超过1GB,所以没有上传模型。模型文件可以在https://modelscope.cn/models/VAST-AI-Research/TripoSR/files上下载。 全程的部署过程在https://pcgamer.blog.csdn.net/article/details/148420645文章中有阐述。

2025-08-11

经典计算机算法演示网页程序,用基本的HTML, CSS, JS构成

包括冒泡排序,快速排序,堆排序,A*算法,迪杰斯特拉算法5个经典算法的演示程序构成

2025-08-05

程序员的文本编辑器Sublime Text3

一款极为好用的文本编辑器,推荐两个用法:第一是用二进制直接打开所有文件,程序员分析程序的利器。第二就是列模式的使用。比其他的文本编辑器都要好用

2025-05-11

Linux系统编程,包括基本命令,gcc,makefile,文件和目录操作等等,包括进程,信号等内容

Linux系统编程,包括基本命令,gcc,makefile,文件和目录操作等等,包括进程,信号等内容

2024-11-21

opencv-4.2.0-libs-with-contrilb

opencv 4.2.0版本的一些C++语言扩展库的静态包文件(lib),包括了opencv_xfeatures2d420, opencv_ximgproc420,opencv_xobjdetect420等扩展包。可以直接调用

2024-11-15

零基础学AI,python部分课件

零基础学AI,python部分课件

2024-11-05

零基础学AI,python部分代码

零基础学AI,python部分代码

2024-11-05

零基础学AI-python语言:python基础语法(课件部分)

零基础学AI-python语言:python基础语法(课件部分)

2024-11-05

零基础学AI-python语言:anaconda(课件部分)

零基础学AI-python语言:anaconda(课件部分)

2024-11-03

零基础学AI-python语言:基础知识(课件部分)

零基础学AI-python语言:基础知识(课件部分)

2024-11-03

MINIST手写数字识别DEMO

深度学习图像领域的入门DEMO,MINIST手写数字识别,包含了推理,训练代码,还有已经下载好了的模型与数据。 方便入门深度学习的朋友一起使用。

2024-10-28

数据库访问软件:DBeaver免安装版本

用于mysql等数据库访问,不需要和navicat一样还需要激活等。免安装,开箱即用。 DBeaver是一款免费和开源的通用数据库管理工具。它支持多种数据库,包括MySQL、PostgreSQL、Oracle等,并且提供了数据导入导出、ER图设计等多种功能。 多数据库连接:通过JDBC驱动,DBeaver可以连接到几乎所有类型的数据库,包括NoSQL和大数据平台。 高级SQL编辑:内置的SQL编辑器支持语法高亮、自动补全等功能,极大地提高了编写和执行SQL语句的效率。 数据操作与管理:用户可以进行数据导入导出、生成ER图、比较数据库结构等操作,满足各种数据库管理和开发需求。

2024-10-23

yolov5的python代码

yolov5的标准python代码,其中包括了训练和推理代码。

2024-10-22

GAN网络的几篇论文,主要是图像方面的论文

包括: 《Conditional Generative Adversarial Nets》,2014年; 《Semi-Supervised Learning with Generative Adversarial Networks》,2016; 《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》,2016; 《Self-Attention Generative Adversarial Networks》,2019 《Generative Adversarial Nets》,2014; 《Generative Adversarial Networks- A Survey and Taxonomy》,一篇综述 还有几篇其他的。

2024-10-22

空空如也

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

TA关注的人

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