- 博客(161)
- 收藏
- 关注
原创 【Linux线程】之线程同步与生产消费模型
*条件变量(Condition Variable)**是一种线程同步的机制,它允许线程在满足某些条件时被等待或通知。我们举个例子来理解条件变量:条件变量本身并不提供对共享资源的保护,它只是一种机制,用于协调特定条件下线程的等待与通知,而互斥锁则确保多个线程访问共享资源时的互斥性,避免竞争条件和数据不一致的问题。所以我们在使用条件变量时,需要自己手动传互斥锁,来保护共享资源,避免因为多线程并发访问,造成数据不一致等问题。是线程库中表示条件变量的抽象类型和(锁的抽象类型)、pthread_t。
2024-12-29 15:47:48
1085
1
原创 【Linux学习工具篇】之apt的使用及apt镜像源的配置(保姆级教程)
上篇博客,我们介绍了关于Linux权限的相关知识,今天这篇博客我们继续介绍Linux系统中常用的几大工具,基于Ubuntu 22.04.4LTS。
2024-10-24 16:12:08
6439
原创 探索CANN框架中ascend-transformer-boost仓库:Transformer模型的极致融合加速库
华为CANN框架中的ascend-transformer-boost(ATB)是一个专为Transformer模型优化的高性能融合算子库,通过将多个小算子合并为超级算子,显著提升计算效率。该库支持FlashAttention、FFN深度融合、RoPE优化等关键技术,在LLaMA、Qwen等大模型上实现1.6-3倍加速,并节省30-55%显存。ATB位于CANN生态的专用加速层,通过SRAM分块、在线softmax等技术减少内存访问,为Ascend NPU上的Transformer训练/推理提供极致性能优化。
2026-02-10 22:04:43
739
原创 探索CANN框架中hcomm仓库:分布式通信底座的底层支撑与深度实现
摘要: 华为CANN框架中的hcomm仓库是支撑分布式AI训练的核心通信底座,针对Ascend NPU集群优化,解决了万卡级训练中的通信瓶颈问题。hcomm位于HCCL底层,负责高效实现集合通信原语,通过解耦设计、拓扑感知、零拷贝、异步流水线等关键技术,显著降低通信开销(案例显示优化后通信占比从45%降至12%)。其核心模块包括通信域管理、资源池、协议抽象等,支持分层容错与动态扩展。相比NCCL,hcomm在HCCS硬件优势下展现出更强的异构兼容性和长稳训练能力,为国产AI大模型训练提供了关键基础设施支撑。
2026-02-10 21:57:57
1152
原创 剖析CANN框架中Runtime仓库:AI应用运行时的关键支撑
CANN框架的Runtime仓库是AI应用运行时的核心支撑,为Ascend NPU提供硬件资源管理、数据预处理、算子执行等关键功能。其模块化设计包含资源管理、媒体处理、执行引擎等组件,通过优化内存池、流调度和并行计算显著提升性能。仓库提供丰富的C++/Python示例,涵盖设备初始化、模型推理全流程,支持云端训练到边缘推理场景。相比CUDA和TensorRT,Runtime在Ascend硬件上具有更深优化和全栈支持优势,其开源特性降低了开发门槛。实际案例显示,Runtime在实时图像处理、大模型服务等场景中
2026-02-06 21:56:11
481
原创 探索CANN框架中Community仓库:开源生态构建与贡献指南
摘要: CANN框架的Community仓库是构建开源生态的核心枢纽,提供社区规范、贡献指南、工具链和开发者资源。该仓库通过清晰的目录结构(规范文档、自动化工具、示例项目等)降低贡献门槛,支持从Issue提交到PR审查的全流程协作。其特色包括优化的工作流、严格的代码规范、社区激励机制及多语言支持。相比CUDA、TensorFlow等社区,CANN更注重新手友好性与Ascend硬件适配。未来将加强国际化与自动化,推动全球开发者共建AI异构计算生态。用户可通过Fork-PR流程快速参与,共同完善这一开源“活教材
2026-02-06 21:51:32
778
原创 华为CANN框架中HCCL仓库的全面解析:分布式通信的引擎
HCCL仓库是CANN的通信心脏,提供高效分布式支持,推动AI创新。通过全面解析,我们看到其在优化、应用中的价值。适合大规模AI开发者探索。
2026-02-06 21:44:21
1047
原创 华为CANN框架中GE仓库的深度剖析:图引擎的优化与执行
GE仓库是CANN框架的宝石,提供强大图引擎,推动AI创新。通过深度剖析,我们看到其在优化、执行和应用中的价值。无论研究还是开发,GE都是值得探索的资源。
2026-02-06 21:37:38
836
原创 深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南
本文深入解析华为CANN框架中的Ops-CV仓库,这是一个专为Ascend NPU优化的计算机视觉算子库。文章从基础概念入手,介绍了Ops-CV在CANN架构中的位置及其核心功能,包括图像预处理、边缘检测、目标检测等关键算子。通过实战示例展示了如何安装配置Ops-CV,并演示了在MindSpore中调用优化算子的方法。文章还详细剖析了Ops-CV的内核融合、数据布局优化等关键技术,指导开发者构建自定义算子。最后通过实际应用案例对比了Ops-CV与竞品的优势,并提供了常见问题排查与性能调优建议,帮助开发者充分
2026-02-06 21:34:33
939
原创 探索CANN框架中ops-transformer仓库:Transformer大模型算子的加速引擎
摘要: CANN框架中的ops-transformer仓库是专为Transformer大模型优化的高性能算子库,包含Multi-Head Attention、FlashAttention等核心算子的Ascend NPU硬件级加速实现。通过融合优化、量化支持和并行策略,显著提升训练与推理效率(性能提升30%-60%)。该仓库已应用于LLaMA、Qwen等模型,提供MindSpore/PyTorch集成示例,支持FP16/INT8等多种精度。开源生态持续扩展,未来将增强多模态支持与社区共建,推动国产大模型基础设
2026-02-06 21:24:02
732
原创 探索华为CANN框架中的Ops-NN仓库
Ops-NN仓库是CANN框架的基石,提供高效神经网络运算符,推动AI创新。无论初学者还是专家,都能从中获益。
2026-02-06 20:48:27
816
原创 探索CANN框架中ops-math仓库:数学基础算子的高性能加速库
摘要:CANN框架下的ops-math仓库是专为Ascend NPU优化的高性能数学基础算子库,提供向量运算、矩阵计算、特殊函数等核心数学操作。作为AI计算的底层支撑,ops-math通过SIMD向量化、数据分块和精度控制等技术,在LLM训练、科学计算等场景实现极致性能。该开源库采用C++/Ascend C实现,支持多精度计算和算子融合,相比cuBLAS等方案在Ascend硬件上更具优势。未来将持续扩展函数覆盖度并优化易用性,为开发者提供更强大的数学计算加速能力。
2026-02-06 20:17:11
668
原创 MySQL事务介绍
事务是MySQL中的多个(或一个)sql语句。如果这些语句都被成功执行,并且成功提交后,将会永久更改数据;否则将会Rollback(回滚到之前的版本)。事务的四大属性原子性 (Atomicity):原子性确保事务是一个不可分割的工作单位;事务中的操作要么全部完成,要么全部不执行,不存在部分完成的情况。如果事务过程中遇到错误,系统会自动回滚到事务开始前的状态。一致性 (Consistency):一致性保证了事务必须将数据库从一种一致状态转换为另一种一致状态。
2025-07-09 23:55:42
1263
原创 【实习篇】之Http头部字段之Disposition介绍
本文介绍了HTTP头部字段Content-Disposition的作用及其相关RFC规范。该字段控制客户端如何处理服务器返回的内容,如直接显示或强制下载文件。文章重点解析了RFC 6266(HTTP中Content-Disposition的标准)、RFC 5987(非ASCII文件名编码方案)和RFC 2047(MIME邮件头非ASCII字符编码)三个核心规范,并对比了不同协议下中文文件名的处理方式。最后建议参考Google浏览器源码实现多协议兼容,为开发中遇到的下载兼容性问题提供了解决方案。
2025-07-09 23:46:55
1150
原创 【深入浅出MySQL】之数据类型介绍
我们从实际的现象来观察并思考为什么会这样。创建表tt9居然!num1被近似成了,而且总长度是11位,我们不是规定了总长度吗?这个num2是正常显示的。我们手动插入一下一行让num1为很明显失败了,MySQL报错了。总结FLOAT是近似类型:它不保证精确存储和显示,可能会对大数值进行近似处理。DECIMAL是精确类型:它严格按照定义的范围和精度存储和显示数据。
2025-05-04 23:09:28
1496
原创 【掌握 DDL】:SQL 中的数据库与表管理
是 SQL 的一个子集,用于定义和管理数据库结构,包括数据库和表。本文详细介绍了用于创建、查看、修改和删除数据库及表的基本 DDL 命令,附带实用示例和最佳实践。
2025-05-03 23:12:42
2238
5
原创 【深入浅出Linux网络编程】之数据链路层
数据链路层是TCP/IP五层协议和OSI七层协议中的倒数第二层,它主要负责在同一局域网之间的节点间进行可靠的数据帧的传输。注意:在网络中我们将主机可以称之为节点。以太网是局域网技术的一种,常见的局域网技术还有令牌环网技术、WIFI技术(无线局域网)。以太网是最流行的局域网技术,使用物理电缆(如双绞线或光纤)连接网络设备。它支持从10Mbps到100Gbps及以上的传输速率。
2025-05-03 22:56:52
1019
原创 【Linux深入浅出】之全连接队列及抓包介绍
全连接队列就是我们内核(传输层)中某个结构体中维护的一个队列,每一个listen套接字都有一个全连接队列:在Linux内核中所谓的连接和全连接队列都是struct结构体,后面我们会结合Linux内核重点介绍。注意:全连接队列的大小并不是代表TcpServer服务器只能同时处理这么多,而是表示它来不及处理(来不及调用accept)的连接的最大数量。结构体是我们网络socket的入口,它是一个通用的套接字类型。short type:它是一个保存各种函数方法的类型,可以通过type。
2025-05-02 23:16:52
1089
原创 【网络层】之IP协议
4位版本:标识你使用的IP协议是IPv4还是IPv6。4位首部长度:和TCP协议中的手表长度一样也有基本单位,基本单位为四字节,存储IP报文报头的长度(包括选项)。16位总长度:存储整个IP报文的长度。8位生存时间:TTL的主要作用是限制数据包在网络中的存活时间或经过的路由器跳数,以防止数据包在网络中无限循环。因为路由器在网络中是可能出现bug。
2025-05-02 23:14:46
877
原创 【MySQL从入门到精通】之基础概念详解
数据库是按照特定结构组织、存储和管理数据的一套系统,通常存储在内存或磁盘中。关系型数据库:适合结构化数据和强一致性场景,如金融系统。NoSQL 数据库:适合半结构化数据和高扩展性需求,如社交网络。云原生数据库:适合弹性扩展、免运维的云上应用。NewSQL 数据库:结合 SQL 和 NoSQL 优势,适合分布式混合负载。应用层:提供客户端、API 等与 MySQL 交互的方式。查询处理器:解析、优化和执行 SQL 语句。存储引擎层:管理数据的存储和访问方式。数据存储层:负责数据持久化和高效存取。
2025-04-12 00:24:02
1017
原创 【深入浅出 Git】:从入门到精通
Git 是一种分布式版本控制系统,帮助开发者高效管理文件的不同版本。无论是代码、配置文件,还是其他文本文件,Git 都能追踪其变更历史,尤其在程序开发中不可或缺。Git 是一个功能强大且灵活的工具,掌握其核心操作能极大提升开发效率。本文从安装、基本操作到分支管理和远程协作,全面介绍了 Git 的使用方法。善用暂存区:精细控制提交内容。规范提交信息:清晰记录每次变更。谨慎操作:如和强制推送。实践为王:通过实际项目加深理解。试一试。
2025-04-12 00:02:34
1997
原创 分布式在线评测系统
一般的在线oj平台给每道题都会设置超时时间和内存上限值,但是可能不会展示给用户,这两个功能我们的项目中也有体现,只需要调用系统调用就可以设置程序执行的最大时间和使用内存,如果一但超过这个值,OS就会给进程发送信号,终止它。打开输入、输出、错误等临时文件放在主进程中,是为了给上层报告错误,如果放在子进程中,不好返回,放在主进程中,这样子进程就只会出现运行错误了,会返回信号码(一般程序替换不会执行失败,除非参数错误,这些我们
2025-03-20 22:31:17
1324
原创 PCRE2 站内搜索引擎项目
项目所用技术栈:STL。准标准库库。Jsoncpp库。cppjieba库。cpp-httplib库。多线程/多路复用。html5,css,js、jQuery、Ajax。ICU库。项目开发环境:在学习PCRE2 (Perl Compatible Regular Expressions 2)这个库时,去官网查阅文档,发现没有站内搜索功能:正好它提供了下载源码的功能,源码中有文档对应的文件,我决定给它做一个站内搜索的功能。中是一个目录,然后这个目录中就是我们网站对应的各种文件:我们想做一个类似百度搜索引擎的效果,
2025-03-20 22:22:36
1499
原创 【网络编程】之TCP实现客户端远程控制服务器端及断线重连
这是一条预处理指令,是Microsoft Visual C++ 编译器MSVC的扩展指令,它的功能和gcc/g++中的-l选项类似,可以告诉编译器要链接的库的名称。MSVC(Microsoft Visual C++)是由微软开发的一款集成开发环境(IDE)和编译器工具套件,用于开发基于CC++和C++/CLI的应用程序。
2025-03-03 20:51:34
1408
原创 【网络编程】之TCP通信步骤
函数功能:返回当前套接字bind的地址。参数int sockfd:要查看bind地址的套接字描述符。:输出型参数,该函数会把地址写进这个变量指向的空间中。:指向保存结构体大小变量的指针,输入型参数。返回值:成功0被返回。否则-1被返回,errno被设置。头文件。
2025-03-03 20:48:15
1279
原创 应用层之HTTPS协议简单介绍
加密就是将原本在网络中明文传输的数据,通过某种加密算法,将明文数据变成不能被人类直接识别的密文的行为。解密就是通过密钥和加密算法,将从服务器端获取到的数据解析为可识别的数据的行为。加密和解密的事情也不用我们去做,在应用层已经有很成熟的TTLSSL等用于数据加密的协议。TLS(Transport Layer Security,传输层安全性协议)和 SSL(Secure Sockets Layer,安全套接层)是用于在网络通信中提供加密和安全性保障的协议。
2025-03-03 20:43:31
877
原创 【网络编程】之数据链路层
数据链路层是TCP/IP五层协议和OSI七层协议中的倒数第二层,它主要负责在同一局域网之间的节点间进行可靠的数据帧的传输。注意:在网络中我们将主机可以称之为节点。以太网是局域网技术的一种,常见的局域网技术还有令牌环网技术、WIFI技术(无线局域网)。以太网是最流行的局域网技术,使用物理电缆(如双绞线或光纤)连接网络设备。它支持从10Mbps到100Gbps及以上的传输速率。
2025-02-17 22:40:23
1006
原创 【网络编程】之NAT技术与代理
NAT技术是当代路由器的核心功能,它主要负责在进行网络通信时,将内网中的主机的源IP地址(私网IP)与当前路由器的WAN口的IP地址不断替换,直到这个IP地址变成公网IP,简单点说,NAT技术就是将内网IP在对外进行网络通信时将其转化为公网IP、而当报文想要发送给内网中的主机时又将公网IP转化为内网IP的技术。NAT转化过程:当路由器收到来自服务器A的数据时,又会把目标IP地址从转化为10.0.0.2为什么内网中可能有很多主机,路由器能准确的直到应该将数据帧中的IP报文的目的IP替换为哪一个主机的内网。
2025-02-17 22:38:19
1156
原创 【网络编程】之TCP协议
TCP报文是有类型的,因为TCP通信需要建立连接,所以就肯定有建立连接的报文、关闭连接的报文以及正常通信的报文,这些报文不同类型用什么标 识呢?它们肯定要体现在TCP的报头中,以OS的角度来看,OS只需要设置不同的比特位为1即可。下面我们将介绍PSH标志位、URGPSH指示接收方尽快将数据交付给上层应用程序,而无需等待接收缓冲区满:当接收缓冲区有数据时,OS并不会马上通知上层,而是等待缓冲区满或者有更多数据,当设置了这个标志位,就可以立即通知上层。URG标志位:用来标识报文中有紧急数据,当URG。
2025-02-14 13:47:27
1023
原创 【网络编程】之Udp网络通信步骤
函数功能:返回当前套接字bind的地址。参数int sockfd:要查看bind地址的套接字描述符。:输出型参数,该函数会把地址写进这个变量指向的空间中。:指向保存结构体大小变量的指针,输入型参数。返回值:成功0被返回。否则-1被返回,errno被设置。头文件。
2025-02-13 22:16:23
1772
原创 【网络编程】之Udp通信小demo
客户端输入一个英文单词发送给服务器,服务器返回该单词的中文意思给客户端,如果没有则返回NOT FOUND。使用多线程处理翻译任务。可以支持多个客户端同时通信,服务器端负责消息的转发,具体如下图所示:细节:服务器端接受到客户端发来的信息,需要将它的地址信息(IP和端口号)新增,新增的前提是没有保存过。因为只有客户端向服务器发送过请求,服务器才能知道客户端的地址信息,只有知道地址信息了,才能将消息转发。
2025-02-13 22:11:25
1313
原创 【网络通信】传输层之UDP协议
虽然UDP是不可靠的,但是还是提供了简单的数据校验的方法,通常这个校验和的计算是有一个固定的方式的(与此次通信的协议中的字段相关),通过计算填充到这个字段中,通过网络传输后再次计算,如果两次结果不同就证明传输过程中出现了问题。假设此时你在给你的朋友写信,信写完后会通过快递员运输,虽然可能你的信件会经过很多地方,但是这些地方都不会关注你的信件的具体内容(它只有到你朋友这里才会被拆封),最终信件到你朋友这里,的都是这里面的端口号,由于这些端口是动态分配的,因此不应该长期固定地分配给任何特定的服务。
2025-02-13 22:07:24
1204
原创 【Linux网络编程】之配置阿里云安全组
在Linux中,防火墙是一种网络安全机制,用于控制网络流量的进出。它通过一组规则(称为防火墙规则)来决定哪些网络流量可以进入或离开系统,哪些流量应被拒绝或限制。防火墙的核心目的是防止恶意攻击、网络入侵,以及控制系统的网络通信。安装firewalld。启动和启用firewalld服务。# 启动 firewalld 服务 sudo systemctl start firewalld # 设置 firewalld 开机自启动 sudo systemctl enable firewalld检查firewalld。
2025-02-07 19:49:44
2505
原创 【Linux网络编程】之守护进程
组长进程就是进程组中的第一个创建的进程(按照时间),如果这个进程组中就只有一个进程,那么它就是进程组中的组长。
2025-02-07 19:45:16
1479
原创 【网络编程】之应用层协议http Session技术介绍
Http Session介绍Session的定义Session技术的原理代码验证Session技术http.hppSession技术的不足之处前言:上接博客,这篇博客将介绍Cookie技术的更新方案Session。Session是一种会话保持技术,它和cookie技术的区别是,cookie技术将数据存储在客户端,容易直接泄漏用户的数据,而Session技术则是将用户的数据存储在服务器中,不易泄漏数据。
2025-02-05 21:36:51
1308
原创 【网络编程】之http协议Cookie
无状态:指的是httpserver不会记住之前与特定客户端的交互细节,保存与它相关的任何会话状态(比如登录状态),再次刷新又是一个独立的请求,需要提供之前需要的信息。(这个信息可以由用户手动提供,也可以是浏览器客户端提供)无连接:准确的来讲是叫无持续连接,因为http底层是tcp,但是每一次发送请求给httpserverhttpserver发送响应报文后,这次连接就关闭了,再次发起请求会建立一个新的连接,所以是无持续连接。Cookie。
2025-02-05 21:29:30
1160
原创 【Linux网络编程】之UDP网络通信
这个库是Windows系统中的网络库,这个库不在内核,而是在用户层,需要用户初始化。Linux不需要像Windows一样初始化网络库(如WSAStartup),因为其网络协议栈是内核的一部分,操作系统启动时自动加载和初始化。函数功能:这个函数用于初始化Windows下的网络库Winsock库,只有正确初始化了这个库,我们才能使用网络库中的一些函数。将网络库加载进内存:并映射到当前进程的虚拟地址空间中,并准备好用于网络通信的资源。版本管理。
2025-02-04 16:42:36
1133
原创 【Linux网络编程】之应用层http协议介绍
http协议介绍URL基本概念URL组成URL示例urlencode和urldecodehttp请求与响应http请求http响应请求方法GETPOSTPUTPATCHDELETEHEADOPTIONSweb根目录HTTP状态码http版本demo代码Http.hpp相关类介绍代码实现服务器程序主函数Socket.hpp运行结果虽然TCP/IP协议中,应用层协议是程序猿自己写的,但是随着发展,有那么几种应用层协议是我们经常使用的,所以就有大佬将其写出来并开源了,http协议就是其中一种。http协议。
2025-02-04 16:37:33
1026
原创 Udp与Tcp Soket编程API介绍
SocketAPI介绍Socket的概念Socket的分类API介绍socketstruct socket结构体再谈文件描述符bind将数据转换为网络字节序的函数inet_pton和inet_ntop函数listenacceptconnect发送数据(send、sendto)接收数据(recv、recvfrom)close--清理资源Soket是应用层和传输层之间的中间抽象层。它将应用层和网络协议栈连接起来,使得开发者可以调用简单的API实现复杂的网络通信。功能:创建一个Socket描述符(文件描述符)。
2025-01-25 19:37:09
676
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅