分类: 技术实践

Git子目录迁移:如何将项目子目录迁移到另一个仓库并保留完整提交历史

本文介绍了如何使用 `git subtree` 命令,将一个项目中的子目录完整迁移到另一个独立仓库,并保留其全部提交历史。 核心操作分为两步:首先,在源仓库使用 `git subtree split` 从指定子目录抽取历史,生成一个内容为该子目录的新分支;然后,在目标仓库通过 `git subtree add --prefix` 将此分支合并到指定目录下。 该方法解决了直接复制粘贴丢失历史的问题,能优雅地整合两条独立的Git历史线,确保代码的演进轨迹完整可追溯,是项目重构与代码整合的最佳实践。

Python现代项目管理:从 venv 到 uv

本文系统梳理了Python项目管理工具从`venv`、`conda`到新兴工具`uv`的演进。`venv`轻量原生,适合单人项目,但依赖管理能力有限。`conda`能管理Python及系统级依赖,是科学计算的利器,但部署相对笨重。而基于Rust的`uv`速度极快,通过`pyproject.toml`实现现代化的项目依赖管理与锁定,更适配团队协作与工程化需求。文章强调,`pyproject.toml`已成为现代Python项目的核心配置标准,统一了项目构建、依赖声明及工具配置。

本地Git多身份配置

为应对论文评审、开源贡献等场景需在同一机器配置两个Git身份:实名与匿名。本文推荐“全局实名+局部匿名”策略,即通过`git config --global`设置默认身份,再在特定仓库内用`git config`局部覆盖。同时,为匿名身份生成独立SSH密钥,并配置`~/.ssh/config`文件创建专属Host别名(如`github-anon`),最后在匿名项目中使用该别名设置远程地址,即可实现身份隔离与安全管理。该方法利用Git配置层级和SSH别名,清晰、安全地解决了多身份切换需求。

【占坑】Go语言进阶:从零实现跳表

本文记录基于Go语言实现跳表的完整过程,旨在通过实践深入理解跳表数据结构的核心原理与优化思路。跳表作为一种高效的概率平衡数据结构,通过多层索引实现快速查找、插入及删除操作,时间复杂度可达O(log n)。文中详细阐述了跳表的节点设计、层级构建逻辑及核心算法实现,包括随机层级生成、节点遍历与更新等关键步骤。目前已完成代码开发,相关实现已同步至GitHub仓库,可供参考学习,助力开发者掌握Go语言与高级数据结构的结合应用。

爬虫攻防:一次js动态cookie的反爬虫解决经历

本文记录解决JS动态生成Cookie反爬虫的过程,旨在爬取学院新闻公告制作RSS订阅器。反爬机制为:服务器返回加密JS生成Cookie,需二次请求携带Cookie才能获取数据。尝试JS逆向(混淆JS难分析)、Puppeteer/Selenium(被检测为自动化工具)均失败。最终采用seleniumbase库,结合uc参数实现无头模式反检测,成功获取数据。过程中解决Linux环境需安装Chrome(非Chromium)的兼容问题。总结爬虫攻防需灵活应对,经验积累尤为重要。

云原生学习01:容器与镜像

本文围绕容器与镜像的核心知识展开。针对进程隔离需求,通过Namespace实现进程资源视图隔离,chroot提供独立文件系统,Cgroup限制资源使用,形成容器本质——视图隔离、资源可限制、独立文件系统的进程集合。容器依赖分层复用的镜像(通过Dockerfile构建),运行时由initial进程决定生命周期,数据卷独立于容器保障数据持久化。架构上,moby daemon、containerd及containerd shim分工协作。相较于VM,容器无需Guest OS,轻量且启动快,隔离效果稍弱但正向强隔离发展。

又错过官网消息啦?如何优雅订阅学校官网的消息

大学生常因错过官网通知(如项目申请、比赛信息等)影响关键机会。传统依赖辅导员或公众号通知存在滞后,手动查官网又费时。RSS技术可主动订阅各网站最新动态,集中至阅读器浏览,解放双手,避免信息遗漏。除学校官网外,还可订阅知乎、CSDN等平台内容,聚焦信息、降低过载风险。使用需两步:获取RSS订阅链接(如RSSHub提供第三方源,作者自建SCU官网订阅源可联系获取)和安装阅读器(推荐PC端Fluent Reader、手机端Feeder)。通过RSS,学生能高效整合学习资源,及时掌握校园动态与学术前沿。

CI/CD初探:GitHub Action的使用

GitHub Actions是GitHub推出的CI/CD工具,通过工作流实现自动化构建、测试与部署。CI(持续集成)指开发者频繁提交代码,自动化构建和测试验证,确保代码库稳定;CD(持续交付)则在此基础上确保代码随时可部署。GitHub Actions核心概念包括workflow(工作流)、job(任务)、step(步骤)和action(动作),通过.github/workflows目录下的YAML文件配置,支持触发条件(如push事件)、任务依赖及环境指定。文章以Vue项目自动打包为例,演示配置流程:拉取代码、设置Node环境、安装依赖、构建项目并上传至artifacts,助力团队高效实现自动化流程。

动手学设计模式:七种OOP设计原则是哪些?

本文为《动手学设计模式》系列开篇,旨在系统梳理设计模式知识。设计模式是特定环境下解决重复问题的成功方案,广义为被反复使用的代码设计经验总结,分创建型、结构型、行为型三类,可提升开发效率、方便沟通并增强代码复用性与可扩展性。学习需结合UML(统一建模语言)理解类图及类间关系(关联、依赖、泛化、接口实现等),并遵循七大面向对象设计原则:单一职责(类职责单一)、开闭(对扩展开放、对修改关闭)、里氏代换(子类可替换父类)、依赖倒转(依赖抽象而非细节)、接口隔离(定制化接口)、合成复用(优先组合继承)、迪米特法则(降低对象间耦合)。专栏将结合案例与代码实现,帮助读者掌握设计模式的核心与应用。

星优灵犀项目介绍 | 中软杯国二 | 数智化教育应用平台

星优灵犀-基于讯飞AI的智适应学习平台’针对高等教育课前、课时、课后知识孤岛、评估低效等痛点,以人机共创与社群化学习融合为目标。项目采用前后端分离与微服务架构,深度整合讯飞星火大模型、语音合成等AI能力,构建“三大核心赋能+十大功能”体系:课前提供智能预习、备课及知识图谱;课时支持课堂回放、语句级社群智答;课后实现五维学情评估、闯关式复习及RAG资料问答。通过AI技术全流程渗透,助力高等教育数字化转型,让学习更智能、便捷、高效。