- 博客(1537)
- 资源 (68)
- 收藏
- 关注

原创 C/C++学习总结
文章目录Markdown常用语法一、面试二、编程语言1.C/C++(1)C和C++进阶的学习笔记总结目录(2)Linux系统编程(3)C语言开源项目(4)C++开源项目(5)Linux运维2.java3.python4.数据结构与算法三、分布式四、Docker,OpenStack五、Github和开源项目学习六、个人简历七、关于测试八、镜像地址或网站九、自勉之语Markdown常用语法 (1)CSDN Markdown空行:  (2)分割线:用三个以上的星号、减号、底线来建立一个分
2020-08-16 20:14:00
2456
1
原创 自编教材实操课程学习笔记
在进行语义分析后可以检查源代码有无语义错误。词法分析是对构成程序的源代码从左到右将字符逐个读入编译器,并扫描和分解字符流,从而识别出一个个单词,并确定单词的类型,将识别出的单词转换为统一的语法单元形式。在代码生成阶段可以通过编译阶段选项指定不同的处理阶段,通过数据选项选择对数据的处理方式,通过对目标平台选项生成指定平台的代码,通过后端生成选项打开不同后端支持的优化功能。语义分析阶段的任务是审查源代码有无语义错误,源代码中有些语法成分,按照语法规则去判断是正确的,但不符合语义规则,比如使用了没有声明的变量。
2025-08-09 17:01:06
692
原创 LLVM编译器入门
Clang中语法分析器会从之前的分析中提取要使用的标记信息,确定它的语法元素后会被推送到语义分析Sema,并为它创建AST节点,建立一颗与(词法分析出的)输入单词流对应的正确语法树。Clang 项目为LLVM项目提供C 语言系列语言C、C++、Objective C/C++、OpenCL、CUDA 和RenderScript)的语言前端和工具基础设施。Clangdriver(命令行表示是clang)和Clang前端(依照详细实现来说就是Clang的那些库所实现的前端)是不同的。
2025-08-09 15:54:02
540
原创 gitlab+jenkins
修改里面的pipline 脚本中的credential id。打开jenkins,修改pipeline脚本。打开gitlab,配置webhook。gitlab手动触发jenkins。用户:admin,对应的密码如下。点击安装自定义推荐的插件。配置pipline脚本。进入到已经创建的任务中。安装gitlab插件。gitlab修改触发。
2025-07-19 16:10:24
433
原创 LLVM LIT测试框架
与**//check后面的字符串**是否匹配,匹配方式是前缀匹配。LIT是一个测试基础设施,最初是为LLVM的回归测试而开发的。FILECHECK2做的事情比较。现在可以用在LLVM之外。
2025-07-04 15:49:52
533
原创 【C++】transform, reduce, scan是什么意思?理解常用并行算法及其实现原理(TBB开启并行编程之旅)
区别在于,一个任务不一定对应一个线程,如果任务数量超过CPU最大的线程数,会由 TBB 在用户层负责调度任务运行在多个预先分配好的线程,而不是由操作系统负责调度线程运行在多个物理核心。类似加法分配律的思想,1+2+3+4,方法:((1+2)+3)+4或者(1+2)+(3+4)。结论:并行缩并的时间复杂度为 O(n/c+c),工作复杂度为 O(n),其中 n 是元素个数。结论:并行映射的时间复杂度为 O(n/c),工作复杂度为 O(n),其中 c 是线程数量。4个线程,每人处理2个元素的映射,花了2秒。
2025-06-28 18:12:54
665
原创 CUDA开启的GPU编程
_global__ 用于定义核函数,他在 GPU 上执行,从 CPU 端通过三重尖括号语法调用,可以有参数,不可以有返回值。\ __device__ 则用于定义设备函数,他在 GPU 上执行,但是从 GPU 上调用的,而且不需要三重尖括号,和普通函数用起来一样,可以有参数,有返回值。即:host 可以调用 global;global 可以调用 device;device 可以调用 device。__device__ 将函数定义在 GPU 上,而 __host__ 则相反,将函数定义在 CPU 上。
2025-06-25 15:52:01
681
原创 Flang:LLVM Fortran 前端简介
高性能计算(HPC)中的流行语言大量遗留代码用途天气预报(WRF、UM)、数值模拟/建模库:LAPACK、BLASFortran程序员通常期望,过去成功编译过的代码将继续无限期地编译并正常运行。
2025-06-19 21:07:33
708
原创 C/Fortran多核并行计算
新的0penMP标准(目前是5.2)支持GPU设备(显卡或专业计算卡)加速,但现有的OMP库对该功能支持有限(intel oneAPl套件支持intel的显卡),因此Devices相关的指令不做介绍。OMP的线程数可为任意正整数(实际受限,可由omp_get_thread_limit函数查询),但线程数不宜超过CPU物理核心数(CPU的超线程对计算密集型任务无益),| 初始值 | 0 | 0 | 1 | 所有位均为1 | 所有位均为0 | 所有位均为0 | 1 | 所有位均为0 |
2025-06-18 18:18:37
910
原创 LLVM后端代码生成
编译器工作流程为在高级语言 C/C++ 编译过程中,源代码经历了多个重要阶段,从词法分析到生成目标代码。整个过程涉及前端和后端的多个步骤,并通过中间表示(IR)在不同阶段对代码进行转换、优化和分析。通过上述图像分别展示了 LLVM 的各个流程,和代码在不同流程下的状态,最后我们再回顾一下各个阶段所代表的功能和内容。前端阶段词法分析(Lexical Analysis):源代码被分解为词法单元,如标识符、关键字和常量。
2025-06-17 15:37:19
965
原创 LLVM前端和优化层
以clang为例,通过 Clang 的三个关键步骤:词法分析、语法分析和语义分析,源代码被逐步转化为高效的中间表示形式,为进一步的优化和目标代码生成做准备。
2025-06-17 13:26:23
931
原创 LLVM IR中间表达详解
每个三地址码指令,都可以被分解为一个四元组(4-tuple)的形式:(运算符,操作数1,操作数2,结果),LLVM IR 中,每个变量都在使用前都必须先定义,且每个变量只能被赋值一次。SSA静态单赋值含义:当程序中的每个变量都有且只有一个赋值语句时,称一个程序是SSA 形式的。每个值只有单一赋值定义了它。每次使用一个值,可以立刻向后追溯到给出其定义的唯一的指令。,也就是一个值到达使用之处的定义的列表。
2025-06-17 09:48:18
773
原创 LLVM设计架构
LLVM 把编译器移植到新语言只需要实现编译前端,复用已有的优化和后端;LLVM 实现不同组件隔离为单独程序库,易于在整个编译流水线中集成转换和优化 Pass;LLVM 作为实现各种静态和运行时编译语言的通用基础结构。
2025-06-16 17:45:55
1014
原创 GCC编译过程
在预处理阶段,编译器会保留以 #pragma 开头的预处理指令,如 #pragma once、#pragma pack 等,这些指令可以用来指导编译器进行特定的处理,如控制编译器的行为或优化代码。GCC 编译过程的四个阶段与传统的三段式划分的前端、优化、后端三个阶段有一定的重合和对应关系,但 GCC 更为详细和全面地划分了编译过程,使得每个阶段的功能更加明确和独立。在预处理阶段,编译器会将源文件中包含的头文件内容插入到源文件中对应的位置,以便在编译时能够访问头文件中定义的函数、变量、宏等内容。
2025-06-16 15:46:06
856
原创 开源编译器介绍
编译技术是计算机科学皇冠上的一颗明珠,作为基础软件中的核心技术编译器能够识别高级语言程序代码中的词汇、句子以及各种特定的格式和数据结构编译过程,是将源代码程序转换成机器能够识别的二进制码传统编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)
2025-06-16 15:06:08
971
原创 开源大模型使用总结
2.推荐使用的大模型:gemini-2.0-flash-hinking-exp以及gemini-2.0-pro-exp。3.使用cherry studio调用,添加API以及添加模型。(3)打开cherry-studio,将API密钥copy过来。(2)在cherry-studio中设置密钥以及模型。添加模型id到cherry-studio。4.可以在cursor的设置如下。2.在cursor中配置API。在cursor中增加模型。1.创建API key。选择免费的bge-m3。(1)创建API密钥。
2025-03-25 22:27:04
571
原创 AI agent(MCP)尝鲜小结
如果你要调用采集工具,那就接个 Pupprteer MCP Servers。它在能力上类似Manus,但形式上则是采用自由画布+工作流进行呈现的。如果你要实现文生图能力,那就接一个Magic MCP Servers。cherry studio已经支持MCP!AI agent功能位置。
2025-03-25 07:50:09
1780
原创 Cursor从小白到专家
在使用 Accept All 时需谨慎:虽然 Accept All 可以快速应用所有建议,但在应用之前最好仔细检查 Cursor 提供的建议是否符合你的需求,避免引入不必要的错误。composer模式下,cursor不仅会进行长篇代码的编写,更改还会帮你把生成的代码直接弄到文件里,不用我们手动复制粘贴。chat模式下,cursor会根据我们的开发需求给出相应的代码,但是需要我们手动创建相关的文件并把代码复制进去。接着就是根据cursor的提示,以及你自己的需求一步步完善这个插件的代码。
2025-03-22 23:44:28
1470
原创 Cursor的五种高级用法
只需使用 Composer(Ctrl+I),描述你想要实现的功能,Cursor 就能生成相应的代码。你可以让它生成大纲,然后根据大纲写出完整文稿。让 AI 为代码添加注释,或者直接告诉它你想要的改动。无论是数据清洗、格式转换,还是生成测试数据,都可以通过简单的自然语言指令完成,无需编写复杂的代码。只需导入相关文档,让 AI 理解平台的功能和节点,然后让它设计一个工作流并生成配置文件。eg:微调,把hugging face上的数据集修改成标准格式的数据集。打开dify,通过导入的方式打开工作流。
2025-03-22 22:31:29
2646
原创 Cursor基本使用教程
智能代码补全:Cursor 能预测下一个编辑操作,帮助快速完成代码。自然语言编辑:可以使用自然语言指令来编写或修改代码,简化开发过程。代码库理解:Cursor 能够理解整个代码库,提供相关建议和答案。隐私与安全:提供隐私模式,确保代码仅存储在本地,并已通过 SOC 2 认证。兼容性:支持导入个人喜爱的扩展、主题和快捷键,提供熟悉的开发环境。
2025-03-22 15:25:07
3236
原创 gitlab自动code review
前文中的自动化评审机器人封装在 docker 镜像中,其角色声明为资深编程专家,以精炼、严厉的语气给出审查建议。如果想让机器人“注入感情”,可以自定义角色声明,例如定义一个傲娇少女来评审。创建 ai_code_review.py 文件,编写代码实现自动化评审功能,核心函数包括:(1)ai_code_review:调用 openai.ChatCompletion.create() 方法基于预设 prompt 角色发起对话,得到评审结果。
2025-03-22 15:22:59
749
原创 AI创业指南
发现需求->AI产品设计->制作MVP->验证MVP->商业模式验证->迭代优化。找到一个问题,洞察到一个别人根本没注意到的需求,这是最重要的一步。AI会帮你分析用户需求、市场竞争情况,甚至告诉你是否值得尝试。将AI当作产品经理和市场调研员,帮你完善想法并做初步判断。利用社交平台的精准流量分发机制,找到你的目标用户。根据用户反馈不断改进产品,提高获客效率和变现效率。让AI帮你创建最小可行产品,快速验证你的想法。找到1000个目标用户,验证产品是否满足需求。关注产品的点击率、留存率等关键指标。
2025-03-22 13:25:01
1340
原创 【AI】AI编程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine
代码生成 - 定义代码风格,如私有变量前缀规则测试生成 - 指定测试框架等测试相关要求代码审查 - 设置代码审查重点提交信息生成 - 规范提交信息格式官网文档讲解很详细,有需要可以直接看官网:https://code.visualstudio.com/docs/copilot/copilot-customization自定义模式让你能够调整 Roo Code 的角色、指令和权限:1)内置模式Code – 默认的多用途编码助手Architect – 提供高级系统架构和设计见解。
2025-03-20 23:51:18
3138
原创 Linux 检测内存泄漏方法总结
gcc和clang编译选项:主要是-fsanitize=address。如果 malloc 数量远大于 free,说明可能有 内存泄漏。
2025-02-28 09:08:00
652
原创 【C++】手搓variant
在 visit 函数中,std::common_type 确保 Lambda 适用于所有 Ts,并且它的返回类型是 所有返回值类型的公共类型。std::common_type<T1, T2, …>::type 计算出 所有 T1, T2, T3, …即,Lambda 作用于 T1 &, T2 &, T3 &, …封装个简单variant,为了防止类型是int,但是赋得的却是double类型的。它的作用是 推导出 Lambda 作用于所有 Ts 类型的返回值的公共类型。是 Variant 的所有可能类型。
2025-02-20 08:42:41
191
原创 【C/C++】printf后并不会立即显示?文件流的缓冲机制探究
模式触发输出的条件终端输出情况_IONBF(无缓冲)每次调用putchar()立即输出依次出现_IOLBF(行缓冲)遇到\n时刷新缓冲区Hello直到\n才一次性出现_IOFBF(全缓冲)缓冲区满了,或程序结束时才刷新可能什么都看不到,除非手动flush()
2025-02-20 08:41:03
300
原创 【C++20】编译期检测所有未定义行为和内存泄露
数组指针加法,超出了数组的范围也会报错,clang++会直接报错,gcc只在解引用的时候报错。std::end(a) 返回数组 a 尾后位置(即 &a[32],超出数组范围的一个位置)。使用 std::begin() 和 std::end() 初始化 std::vector。= std::end(a) 避免访问 a[32] 这个非法位置。std::begin(a) 返回数组 a 的首地址(即 &a[0])。结合 std::begin() 和 std::end()下面的会死循环,int越界是未定义行为。
2025-02-20 08:39:34
258
原创 AI效率工具总结
(1)提问+同时上传简历:我是前端开发工程师,我现在要找工作,我想你帮我优化一下简历,量化我的成果,要让面试官看到简历就想让我去面试的那种。TalenCat 简历生成器(CV Maker)是一款专业且易于使用的在线简历制作工具。(2)打开TalentCat,导入生成的简历(通过markdown填写)Deepseak提问方法:我是谁+我要干啥+我的目标是啥。
2025-02-13 11:26:28
1277
原创 对rust的全局变量使用drop方法
全局变量的生命周期应该和main的程序生命周期是一样长的,所以可以在main中创建一个CleanUp局部对象,为CleanUp()实现Drop特征,在Drop()特征中,完成释放全局变量的资源的功能。Rust 的静态变量不会在程序退出时自动调用 Drop,因为它们的生命周期与进程绑定。
2024-12-13 11:58:36
475
vscode的remote ssh中需要的ubuntu服务器中的sshd配置文件
2022-06-19
postgresql数据库插件PG-Strom中Scan算子执行流程分析
2022-03-16
CUDAppt.zip
2021-12-28
跟我一起学C++.zip
2020-05-06
Shell编程ppt[C++教程网cppcourse[1].com].zip
2020-05-06
NetworkProgramming-master.zip
2020-05-06
Docker学习资料总结.7z
2020-02-08
muduo_server_learn.zip
2020-03-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人