本文记录了AscendC学习笔记,涵盖从基础概念到算子开发的完整流程。核心内容包括:AI Core的达芬奇架构(物理结构含Cube/Vector/Scalar单元,逻辑结构为SIMD);AscendC编程对象GlobalTensor(外部存储)与LocalTensor(内部存储),以及Queue队列通信机制;Vector算子开发遵循分析、核函数定义、三阶段任务(CopyIn/Compute/CopyOut)的范式;Host侧实现涉及Tiling数据切分、Shape推导及算子注册。通过Add算子实例,展示了静态形状下多核并行(SPMD)与单核流水(Stage)的开发实践。
分类: 技术实践
本文分享了作者从Hexo迁移至Halo博客时的自动化解决方案。Hexo因繁琐配置导致维护困难,而跨平台迁移面临多源数据(Obsidian、Hexo、掘金、CSDN)的格式兼容问题。作者通过Python脚本实现自动化处理:支持将Obsidian的`![[]]`格式转为标准markdown并上传图片至OSS,同时可下载掘金/CSDN的图片并替换为CDN链接。该方案通过正则匹配、七牛云SDK和HTTP请求,解决了图片迁移的核心痛点,体现了自动化工具对重复性劳动的解放价值。
本文记录了作者在微服务项目中使用Dubbo与Nacos时,通过Docker部署Nacos 2.3.1版本遇到的鉴权配置问题。部署时采用官方Docker方式,并选用MySQL存储数据。开启鉴权时,发现直接配置环境变量(如NACOS_AUTH_USERNAME/PASSWORD)无效,经排查原因为新版本未预置默认用户数据。正确做法需在MySQL的users和roles表中手动插入用户信息(密码需BCrypt加密),并配置对应角色。最终成功实现鉴权,Dubbo服务可正常向Nacos注册。
本文针对物联网项目中华为云IoT平台数据需转发至本地Web服务的需求,探讨了内网穿透解决方案。作者排除了直接部署云服务器和转发脚本方案后,重点实践了内网穿透技术。过程中先后尝试了ngrok、CloudFlare tunnel等工具,遭遇了访问限制、带宽不足、URL格式错误等问题。最终采用frp(高性能反向代理工具)实现成功穿透,通过在云服务器和本地分别部署frps和frpc服务,配置HTTP代理使公网可通过自定义域名访问本地服务。文章详细分享了frp的配置要点、systemd管理最佳实践,为类似场景提供了可复用的解决方案。
本文详细介绍了JVM内存结构与垃圾回收机制。内存结构分为线程共享(堆区、方法区)和线程私有(程序计数器、JVM栈、本地方法栈)区域,其中堆存储对象,方法区存放类元信息(JDK8后移至元空间),直接内存用于NIO优化。垃圾回收基于可达性算法,通过GC Root(如线程对象、类加载器等)判断对象存活,并支持强、软、弱、虚、终结器五种引用类型。回收算法包括标记清除(存在碎片)、复制(高效但空间利用率低)、标记整理(无碎片但效率低)及分代GC(年轻代复制算法+老年代标记整理),主流垃圾回收器有Serial(单线程)、CMS(低延迟)、Parallel(高吞吐)和G1(平衡延迟与吞吐)。
JVM是Java虚拟机的核心,负责解释执行字节码、管理内存(含自动GC)和通过JIT编译优化热点代码。其规范支持多种语言运行,常见实现包括HotSpot、GraalVM等。JVM由类加载器、运行时数据区、执行引擎和本地接口组成。字节码文件包含魔数、版本号、常量池等结构,可通过jclasslib、javap或Arthas工具查看。类生命周期包括加载、连接(验证、准备、解析)、初始化等阶段,类加载器采用双亲委派机制保证安全,也可通过自定义类加载器、线程上下文类加载器等方式打破。
本文记录了基于Docker的SpringBoot+Vue3项目部署全流程。首先在Ubuntu22服务器安装Docker及Docker Compose(国内环境采用apt安装解决网络问题);接着配置SpringBoot后端Dockerfile(基于openjdk:8-jdk-alpine)并打包Jar包,同时使用Vite构建前端项目并配置Nginx代理;通过docker-compose.yml编排MySQL5.7、Redis、Nginx及Java应用容器,实现数据卷挂载与端口映射;部署后重点解决常见问题:Maven打包需配置spring-boot-maven-plugin避免主类缺失,MySQL密码重置需修改my.cnf跳过权限校验,以及数据源问题需检查yml配置并注释多余依赖。最终通过`docker compose up -d`一键启动,实现前后端分离项目的容器化部署。
本文记录了伯克利CS61B课程Lab7中基于二叉搜索树(BST)的Map实现。BSTMap继承Map61B接口,通过内部BSTNode维护key、value及size属性,核心采用递归设计。实现要点包括:put操作时递归插入并更新节点size;size直接返回节点size属性,避免重复计算;删除操作分类处理(无子节点直接删除、单子节点替换、双子节点用右子树最小节点替换),需辅助函数removeMin和min;keySet通过先序遍历生成HashSet;iterator直接返回keySet迭代器。整体通过递归和size维护实现高效操作,体现了BST的经典应用。
本文针对前后端分离GPU预约系统多组件(Redis、MySQL、Java、Nginx)部署复杂、版本冲突问题,引入Docker简化部署。内容涵盖Docker安装配置及镜像加速,详细解析docker run命令参数与镜像、容器关系,介绍镜像/容器常用操作、数据卷挂载实现数据持久化,通过Dockerfile构建自定义镜像,讲解容器网络互连与Docker Compose多容器编排,并以实际项目部署案例演示一键部署流程,为复杂应用的高效部署提供实用指导。
本文为数据结构与算法实验课中VS Code C++ Debug配置的回顾教程。作者因久未使用VS Code进行C++开发(平时多用命令行),需通过本次实验重新掌握配置流程。主要步骤包括:下载VS Code及MinGW编译器(选择x86_64-win32-seh版本),配置MinGW的bin目录到系统环境变量,安装Chinese和C/C++插件并重启。核心在于配置三个JSON文件(c_cpp_properties.json、launch.json、task.json),需将文件中的MinGW路径替换为本地实际路径。完成配置后即可进行C++程序Debug。文中提及,若觉得麻烦可考虑使用JetBrain Clion(学生认证免费)。