自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 收藏
  • 关注

原创 【Linux线程】之线程同步与生产消费模型

*条件变量(Condition Variable)**是一种线程同步的机制,它允许线程在满足某些条件时被等待或通知。我们举个例子来理解条件变量:条件变量本身并不提供对共享资源的保护,它只是一种机制,用于协调特定条件下线程的等待与通知,而互斥锁则确保多个线程访问共享资源时的互斥性,避免竞争条件和数据不一致的问题。所以我们在使用条件变量时,需要自己手动传互斥锁,来保护共享资源,避免因为多线程并发访问,造成数据不一致等问题。是线程库中表示条件变量的抽象类型和(锁的抽象类型)、pthread_t。

2024-12-29 15:47:48 1067 1

原创 【Linux学习工具篇】之apt的使用及apt镜像源的配置(保姆级教程)

上篇博客,我们介绍了关于Linux权限的相关知识,今天这篇博客我们继续介绍Linux系统中常用的几大工具,基于Ubuntu 22.04.4LTS。

2024-10-24 16:12:08 6209

原创 剖析CANN框架中Samples仓库:从示例到实战的AI开发指南

本文深入解析CANN框架中的Samples仓库,展示其作为AI开发实践指南的核心价值。该仓库提供覆盖基础运算到复杂模型部署的丰富示例,包含MindSpore集成、分布式训练、自定义算子等关键场景,每个项目都配有详细文档和运行脚本。文章详细剖析了仓库的五大核心模块:基础示例、模型训练、推理部署、分布式训练和自定义扩展,并通过代码片段展示典型实现。Samples仓库不仅帮助开发者快速掌握CANN框架的使用技巧,还能直接应用于实际项目开发,大幅提升AI应用开发效率。

2026-02-06 21:56:11 79

原创 探索CANN框架中TBE仓库:张量加速引擎的优化之道

摘要:CANN框架中的TBE仓库是专为Ascend硬件优化的张量加速引擎,提供自定义算子开发工具和内核优化框架。其核心特性包括DSL语法定义算子、Tiling算法优化、量化支持及算子融合功能,能显著提升AI模型性能。TBE通过Python-like语法简化开发流程,支持从计算机视觉到自然语言处理等多种AI应用场景。开源后成为构建自定义AI操作的重要工具,在MindSpore生态中发挥关键作用,既加速了开发周期又实现了硬件级性能优化。

2026-02-06 21:51:32 160

原创 华为CANN框架中HCCL仓库的全面解析:分布式通信的引擎

HCCL仓库是CANN的通信心脏,提供高效分布式支持,推动AI创新。通过全面解析,我们看到其在优化、应用中的价值。适合大规模AI开发者探索。

2026-02-06 21:44:21 263

原创 华为CANN框架中GE仓库的深度剖析:图引擎的优化与执行

GE仓库是CANN框架的宝石,提供强大图引擎,推动AI创新。通过深度剖析,我们看到其在优化、执行和应用中的价值。无论研究还是开发,GE都是值得探索的资源。

2026-02-06 21:37:38 193

原创 深入剖析华为CANN框架下的Ops-CV仓库:从入门到实战指南

本文深入解析华为CANN框架中的Ops-CV仓库,这是一个专为Ascend NPU优化的计算机视觉算子库。文章从基础概念入手,介绍了Ops-CV在CANN架构中的位置及其核心功能,包括图像预处理、边缘检测、目标检测等关键算子。通过实战示例展示了如何安装配置Ops-CV,并演示了在MindSpore中调用优化算子的方法。文章还详细剖析了Ops-CV的内核融合、数据布局优化等关键技术,指导开发者构建自定义算子。最后通过实际应用案例对比了Ops-CV与竞品的优势,并提供了常见问题排查与性能调优建议,帮助开发者充分

2026-02-06 21:34:33 282

原创 探索华为CANN框架中的ACL仓库

华为CANN框架中的ACL仓库是Ascend NPU硬件编程的核心组件,提供设备管理、内存分配、张量操作等底层API,支持直接硬件访问以优化AI计算性能。作为CANN运行时层的关键部分,ACL通过异步执行、内存优化和自动量化等技术提升效率,并与MindSpore等框架深度集成。该仓库提供C++/Python接口,适用于图像处理、NLP等AI场景,未来将扩展对新硬件的支持。开发者可通过ACL实现高性能自定义AI应用,充分发挥Ascend芯片的计算潜力。

2026-02-06 21:24:02 298

原创 探索华为CANN框架中的Ops-NN仓库

Ops-NN仓库是CANN框架的基石,提供高效神经网络运算符,推动AI创新。无论初学者还是专家,都能从中获益。

2026-02-06 20:48:27 446

原创 CANN pyacl 仓库深度实战:AIGC 应用快速集成昇腾 NPU 的开发指南

pyacl(Python Ascend Computing Library)是 CANN 生态提供的 Python API 封装库,核心目标是降低 AIGC 开发者对昇腾 NPU 的调用门槛,解决传统 C/C++ 开发效率低、跨平台兼容性差的问题。支持图片(JPG/PNG/BMP)、文本(字符串 / Tensor)、音频(WAV/MP3)等 AIGC 核心数据格式的直接输入。关键特性:支持同步 / 异步推理、批量推理、动态 Batch 调整,适配 AIGC 场景的多样化输入需求。

2026-02-06 20:17:11 315

原创 MySQL事务介绍

事务是MySQL中的多个(或一个)sql语句。如果这些语句都被成功执行,并且成功提交后,将会永久更改数据;否则将会Rollback(回滚到之前的版本)。事务的四大属性原子性 (Atomicity):原子性确保事务是一个不可分割的工作单位;事务中的操作要么全部完成,要么全部不执行,不存在部分完成的情况。如果事务过程中遇到错误,系统会自动回滚到事务开始前的状态。一致性 (Consistency):一致性保证了事务必须将数据库从一种一致状态转换为另一种一致状态。

2025-07-09 23:55:42 1209

原创 【实习篇】之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 1098

原创 【深入浅出MySQL】之数据类型介绍

我们从实际的现象来观察并思考为什么会这样。创建表tt9居然!num1被近似成了,而且总长度是11位,我们不是规定了总长度吗?这个num2是正常显示的。我们手动插入一下一行让num1为很明显失败了,MySQL报错了。总结FLOAT是近似类型:它不保证精确存储和显示,可能会对大数值进行近似处理。DECIMAL是精确类型:它严格按照定义的范围和精度存储和显示数据。

2025-05-04 23:09:28 1449

原创 【掌握 DDL】:SQL 中的数据库与表管理

是 SQL 的一个子集,用于定义和管理数据库结构,包括数据库和表。本文详细介绍了用于创建、查看、修改和删除数据库及表的基本 DDL 命令,附带实用示例和最佳实践。

2025-05-03 23:12:42 2181 5

原创 【深入浅出Linux网络编程】之数据链路层

数据链路层是TCP/IP五层协议和OSI七层协议中的倒数第二层,它主要负责在同一局域网之间的节点间进行可靠的数据帧的传输。注意:在网络中我们将主机可以称之为节点。以太网是局域网技术的一种,常见的局域网技术还有令牌环网技术、WIFI技术(无线局域网)。以太网是最流行的局域网技术,使用物理电缆(如双绞线或光纤)连接网络设备。它支持从10Mbps到100Gbps及以上的传输速率。

2025-05-03 22:56:52 930

原创 【Linux深入浅出】之全连接队列及抓包介绍

全连接队列就是我们内核(传输层)中某个结构体中维护的一个队列,每一个listen套接字都有一个全连接队列:在Linux内核中所谓的连接和全连接队列都是struct结构体,后面我们会结合Linux内核重点介绍。注意:全连接队列的大小并不是代表TcpServer服务器只能同时处理这么多,而是表示它来不及处理(来不及调用accept)的连接的最大数量。结构体是我们网络socket的入口,它是一个通用的套接字类型。short type:它是一个保存各种函数方法的类型,可以通过type。

2025-05-02 23:16:52 1042

原创 【网络层】之IP协议

4位版本:标识你使用的IP协议是IPv4还是IPv6。4位首部长度:和TCP协议中的手表长度一样也有基本单位,基本单位为四字节,存储IP报文报头的长度(包括选项)。16位总长度:存储整个IP报文的长度。8位生存时间:TTL的主要作用是限制数据包在网络中的存活时间或经过的路由器跳数,以防止数据包在网络中无限循环。因为路由器在网络中是可能出现bug。

2025-05-02 23:14:46 828

原创 【MySQL从入门到精通】之基础概念详解

数据库是按照特定结构组织、存储和管理数据的一套系统,通常存储在内存或磁盘中。关系型数据库:适合结构化数据和强一致性场景,如金融系统。NoSQL 数据库:适合半结构化数据和高扩展性需求,如社交网络。云原生数据库:适合弹性扩展、免运维的云上应用。NewSQL 数据库:结合 SQL 和 NoSQL 优势,适合分布式混合负载。应用层:提供客户端、API 等与 MySQL 交互的方式。查询处理器:解析、优化和执行 SQL 语句。存储引擎层:管理数据的存储和访问方式。数据存储层:负责数据持久化和高效存取。

2025-04-12 00:24:02 988

原创 【深入浅出 Git】:从入门到精通

Git 是一种分布式版本控制系统,帮助开发者高效管理文件的不同版本。无论是代码、配置文件,还是其他文本文件,Git 都能追踪其变更历史,尤其在程序开发中不可或缺。Git 是一个功能强大且灵活的工具,掌握其核心操作能极大提升开发效率。本文从安装、基本操作到分支管理和远程协作,全面介绍了 Git 的使用方法。善用暂存区:精细控制提交内容。规范提交信息:清晰记录每次变更。谨慎操作:如和强制推送。实践为王:通过实际项目加深理解。试一试。

2025-04-12 00:02:34 1974

原创 分布式在线评测系统

一般的在线oj平台给每道题都会设置超时时间和内存上限值,但是可能不会展示给用户,这两个功能我们的项目中也有体现,只需要调用系统调用就可以设置程序执行的最大时间和使用内存,如果一但超过这个值,OS就会给进程发送信号,终止它。打开输入、输出、错误等临时文件放在主进程中,是为了给上层报告错误,如果放在子进程中,不好返回,放在主进程中,这样子进程就只会出现运行错误了,会返回信号码(一般程序替换不会执行失败,除非参数错误,这些我们

2025-03-20 22:31:17 1303

原创 PCRE2 站内搜索引擎项目

项目所用技术栈:STL。准标准库库。Jsoncpp库。cppjieba库。cpp-httplib库。多线程/多路复用。html5,css,js、jQuery、Ajax。ICU库。项目开发环境:在学习PCRE2 (Perl Compatible Regular Expressions 2)这个库时,去官网查阅文档,发现没有站内搜索功能:正好它提供了下载源码的功能,源码中有文档对应的文件,我决定给它做一个站内搜索的功能。中是一个目录,然后这个目录中就是我们网站对应的各种文件:我们想做一个类似百度搜索引擎的效果,

2025-03-20 22:22:36 1474

原创 【网络编程】之TCP实现客户端远程控制服务器端及断线重连

这是一条预处理指令,是Microsoft Visual C++ 编译器MSVC的扩展指令,它的功能和gcc/g++中的-l选项类似,可以告诉编译器要链接的库的名称。MSVC(Microsoft Visual C++)是由微软开发的一款集成开发环境(IDE)和编译器工具套件,用于开发基于CC++和C++/CLI的应用程序。

2025-03-03 20:51:34 1364

原创 【网络编程】之TCP通信步骤

函数功能:返回当前套接字bind的地址。参数int sockfd:要查看bind地址的套接字描述符。:输出型参数,该函数会把地址写进这个变量指向的空间中。:指向保存结构体大小变量的指针,输入型参数。返回值:成功0被返回。否则-1被返回,errno被设置。头文件。

2025-03-03 20:48:15 1251

原创 应用层之HTTPS协议简单介绍

加密就是将原本在网络中明文传输的数据,通过某种加密算法,将明文数据变成不能被人类直接识别的密文的行为。解密就是通过密钥和加密算法,将从服务器端获取到的数据解析为可识别的数据的行为。加密和解密的事情也不用我们去做,在应用层已经有很成熟的TTLSSL等用于数据加密的协议。TLS(Transport Layer Security,传输层安全性协议)和 SSL(Secure Sockets Layer,安全套接层)是用于在网络通信中提供加密和安全性保障的协议。

2025-03-03 20:43:31 860

原创 【网络编程】之数据链路层

数据链路层是TCP/IP五层协议和OSI七层协议中的倒数第二层,它主要负责在同一局域网之间的节点间进行可靠的数据帧的传输。注意:在网络中我们将主机可以称之为节点。以太网是局域网技术的一种,常见的局域网技术还有令牌环网技术、WIFI技术(无线局域网)。以太网是最流行的局域网技术,使用物理电缆(如双绞线或光纤)连接网络设备。它支持从10Mbps到100Gbps及以上的传输速率。

2025-02-17 22:40:23 953

原创 【网络编程】之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 1129

原创 【网络编程】之TCP协议

TCP报文是有类型的,因为TCP通信需要建立连接,所以就肯定有建立连接的报文、关闭连接的报文以及正常通信的报文,这些报文不同类型用什么标 识呢?它们肯定要体现在TCP的报头中,以OS的角度来看,OS只需要设置不同的比特位为1即可。下面我们将介绍PSH标志位、URGPSH指示接收方尽快将数据交付给上层应用程序,而无需等待接收缓冲区满:当接收缓冲区有数据时,OS并不会马上通知上层,而是等待缓冲区满或者有更多数据,当设置了这个标志位,就可以立即通知上层。URG标志位:用来标识报文中有紧急数据,当URG。

2025-02-14 13:47:27 994

原创 【网络编程】之Udp网络通信步骤

函数功能:返回当前套接字bind的地址。参数int sockfd:要查看bind地址的套接字描述符。:输出型参数,该函数会把地址写进这个变量指向的空间中。:指向保存结构体大小变量的指针,输入型参数。返回值:成功0被返回。否则-1被返回,errno被设置。头文件。

2025-02-13 22:16:23 1750

原创 【网络编程】之Udp通信小demo

客户端输入一个英文单词发送给服务器,服务器返回该单词的中文意思给客户端,如果没有则返回NOT FOUND。使用多线程处理翻译任务。可以支持多个客户端同时通信,服务器端负责消息的转发,具体如下图所示:细节:服务器端接受到客户端发来的信息,需要将它的地址信息(IP和端口号)新增,新增的前提是没有保存过。因为只有客户端向服务器发送过请求,服务器才能知道客户端的地址信息,只有知道地址信息了,才能将消息转发。

2025-02-13 22:11:25 1286

原创 【网络通信】传输层之UDP协议

虽然UDP是不可靠的,但是还是提供了简单的数据校验的方法,通常这个校验和的计算是有一个固定的方式的(与此次通信的协议中的字段相关),通过计算填充到这个字段中,通过网络传输后再次计算,如果两次结果不同就证明传输过程中出现了问题。假设此时你在给你的朋友写信,信写完后会通过快递员运输,虽然可能你的信件会经过很多地方,但是这些地方都不会关注你的信件的具体内容(它只有到你朋友这里才会被拆封),最终信件到你朋友这里,的都是这里面的端口号,由于这些端口是动态分配的,因此不应该长期固定地分配给任何特定的服务。

2025-02-13 22:07:24 1175

原创 【Linux网络编程】之配置阿里云安全组

在Linux中,防火墙是一种网络安全机制,用于控制网络流量的进出。它通过一组规则(称为防火墙规则)来决定哪些网络流量可以进入或离开系统,哪些流量应被拒绝或限制。防火墙的核心目的是防止恶意攻击、网络入侵,以及控制系统的网络通信。安装firewalld。启动和启用firewalld服务。# 启动 firewalld 服务 sudo systemctl start firewalld # 设置 firewalld 开机自启动 sudo systemctl enable firewalld检查firewalld。

2025-02-07 19:49:44 2414

原创 【Linux网络编程】之守护进程

组长进程就是进程组中的第一个创建的进程(按照时间),如果这个进程组中就只有一个进程,那么它就是进程组中的组长。

2025-02-07 19:45:16 1461

原创 【网络编程】之应用层协议http Session技术介绍

Http Session介绍Session的定义Session技术的原理代码验证Session技术http.hppSession技术的不足之处前言:上接博客,这篇博客将介绍Cookie技术的更新方案Session。Session是一种会话保持技术,它和cookie技术的区别是,cookie技术将数据存储在客户端,容易直接泄漏用户的数据,而Session技术则是将用户的数据存储在服务器中,不易泄漏数据。

2025-02-05 21:36:51 1279

原创 【网络编程】之http协议Cookie

无状态:指的是httpserver不会记住之前与特定客户端的交互细节,保存与它相关的任何会话状态(比如登录状态),再次刷新又是一个独立的请求,需要提供之前需要的信息。(这个信息可以由用户手动提供,也可以是浏览器客户端提供)无连接:准确的来讲是叫无持续连接,因为http底层是tcp,但是每一次发送请求给httpserverhttpserver发送响应报文后,这次连接就关闭了,再次发起请求会建立一个新的连接,所以是无持续连接。Cookie。

2025-02-05 21:29:30 1119

原创 【Linux网络编程】之UDP网络通信

这个库是Windows系统中的网络库,这个库不在内核,而是在用户层,需要用户初始化。Linux不需要像Windows一样初始化网络库(如WSAStartup),因为其网络协议栈是内核的一部分,操作系统启动时自动加载和初始化。函数功能:这个函数用于初始化Windows下的网络库Winsock库,只有正确初始化了这个库,我们才能使用网络库中的一些函数。将网络库加载进内存:并映射到当前进程的虚拟地址空间中,并准备好用于网络通信的资源。版本管理。

2025-02-04 16:42:36 1086

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

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

原创 2024年蓝桥杯真题C/C++/java组部分真题解析(一)

2024年蓝桥杯真题C/C++/java组部分真题解析

2025-01-25 19:33:53 2332

原创 【Linux网络编程】之应用层序列化与反序列化

我们并不准备自己实现序列化和反序列化的过程,而是使用成熟的Jsoncpp库,这样可以减少我们开发的时间。Jsoncpp解析JSON字符串Jsoncpp提供将JSON数据转化为C++对象的功能。生成JSON字符串。Jsoncpp库提供将C++对象转化为JSON数据的功能。支持 JSON 的基本类型:JsonCpp 支持常见的 JSON 类型,包括对象()、数组(JSON Array)、字符串、数字、布尔值和null。Jsoncpp:是JsonCpp库的主要数据类型,用于表示JSON对象。

2025-01-25 19:27:21 1139

原创 【Linux线程】之日志

在写日志相关的函数时,我们可能会使用到可变参数。可变参数是通过省略号...来表示的。这三个点(...)表示函数可以接收一个不定数量和类型的参数。简单介绍一下可变参数,我们学习了C语言不陌生,printf和scanfformat是一个字符串,但它是用来指定参数类型和输出样式的。可变参数:根据format中的格式说明符,printf可以接收多种类型的参数。在C语言中,一般情况下,const char *format和...是绑定在一起的,其中format。

2025-01-03 17:22:37 937

空空如也

空空如也

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

TA关注的人

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