自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 想做测开,是学Java还是Python?

更关键的是,Python 的生态几乎覆盖了测开的全场景:Pytest 做测试框架、Selenium 搞 Web 自动化、Appium 测移动端、Requests 调接口,这些工具的文档和社区支持都极其完善。在学习Python的过程中,你可以逐步了解测试开发的基本概念和技能。Java的学习曲线入门门槛较高,要深入理解和掌握其面向对象编程、多线程、异常处理、JVM、垃圾回收等概念,需要一定的时间和精力,且开发效率相对较低、想写个小脚本都要整一堆项目结构,对于初学者来说,可能会觉得有些枯燥和难度。

2025-12-21 14:35:06 284

原创 Vue视差标题背景

requestId: undefined, // 用于跟踪 requestAnimationFrame 的标识。原理就是通过几张透明的png进行叠加,然后在上下滚动时,外层png移动的快,内层png移动得慢来实现视差效果。这里实际的距离X和Y在观察者看来是一样的,原因是距离观察者的距离Z不一样导致的。// 使用 requestAnimationFrame 更新样式。这个我是为了放在博客的标题部分作为背景图,上下滚动的时候比较好看。// 使用 passive 参数优化滚动性能。这里为了代码高亮分三部分展示。

2025-12-21 14:34:30 643

原创 .NET 8+ 飞书API实战:自动化群组管理与消息推送

1, result?_logger.LogInformation("获取群组详情成功: {GroupName}", result.Data?_logger.LogError("获取群组详情失败: {Error}", result?_logger.LogError("创建群组失败: {Error}", result?_logger.LogError("更新群组失败: {Error}", result?_logger.LogError("解散群组失败: {Error}", result?

2025-12-17 19:12:49 611

原创 正式发布CTyunOS V4.0!

在社区治理方面,天翼云在openEuler委员会中担任委员,参与社区决策。大会由开放原子开源欧拉(OpenAtom openEuler,简称“开源欧拉”或“openEuler”)社区,协同数十家产业伙伴共同举办,旨在汇聚全球产业界力量,打造极具创新力的操作系统,加速全球基础软件开源生态发展。中国电信科技委主任、原总经理邵广禄在致辞中表示,在“数字中国”战略指引下,中国电信积极拥抱开源打造国云基础底座,当前CTyunOS系统已规模化应用于电信、金融和政务等关键领域,展现出高可靠、高安全等特性。

2025-12-17 19:11:53 310

原创 C#AI系列(6): C#离线实现高效OCR

执行OCR之前,要准备训练好模型,可以在官方仓库找到(https://github.com/tesseract-ocr/tessdata_best,https://github.com/tesseract-ocr/tessdata_fast),都是免费。本项目中对这个wrapper进行了处理,将原来动态加载的非托管库直接写死为win环境下的x64了,这样就可以很好的单文件发布(13.4mb + 模型)及aot发布(3mb + 2.6mb + 4mb + 模型)。适合深度集成,提高性能,减少出错。

2025-12-15 12:48:01 869

原创 Java关键字解析之abstract:抽象的本质、规范定义与多态基石

在Java面向对象的世界里,abstract是一个充满“前瞻性”的关键字——它像一张“设计蓝图”,将类或方法标记为“未完成”或“待实现”,强制后续开发者遵循预设的规范去填充细节。抽象类可以没有抽象方法(仅用abstract修饰类),此时它的作用是禁止实例化(如工具类的抽象父类,防止直接创建对象),但这种情况较少见(通常用私有构造器实现)。封装变化,隔离共性:将多个子类的共性(如Shape的printInfo())抽离到抽象类,变化的部分(如area())留给子类实现;

2025-12-15 12:47:18 912

原创 React:使用Tailwind CSS、Streamdown与Ant Design X

除了丰富的 UI 组件,@ant-design/x 还提供了一揽子 API 解决方案,支持开发者通过令牌认证直接接入现有 AI 服务,无缝衔接与 AI 的对话和交互。这个组件比较新直接让AI来写是不太行的,需要自己看下文档,不过文档已经提供了比较详细的示例代码了,自己看懂之后,复制粘贴一下交给AI,当做AI的上下文,写起来估计问题也不大。目前使用Ant Desgin X做了一个简单的AI聊天界面了,自己用AI写的组件的质量跟大厂写的肯定是不能比的,既然大厂都做的这么好了,直接用大厂做好的轮子就行了。

2025-12-14 10:37:19 244

原创 用 LaraDumps 高效调试 PHP 和 Laravel

用 ds($games) 代替 dd($games),结果会直接出现在 LaraDumps 桌面应用里,不会中断请求,也不会在浏览器里输出乱七八糟的东西。如果你开发 Laravel 应用有一段时间了,肯定用过无数次 dd()、dump() 或 var_dump()。这就是 LaraDumps —— 一个免费开源的桌面调试应用,能把你的 PHP 和 Laravel 调试体验提升一个档次。你的调试输出会一直保留,即使多次请求后也能回看之前的数据。就这样 —— 你可以开始用 ds() 进行干净的调试了。

2025-12-14 10:36:32 356

原创 MPK(Mirage Persistent Kernel)源码笔记(4)--- 转译系统

TaskRegister:register_*_task 函数(如 register_embedding_task, register_custom_task 等)会根据 TaskBlock::Graph 和参数生成特定的 CUDA 调用代码字符串,并将其注册到 all_task_variants 中,返回该变体在向量中的索引(即 variant_id)。具体而言,算子级依赖会被拆解为任务间的依赖链,即事件。在register_task_variant中,会检查是否存在相同的代码变体,避免重复存储。

2025-12-13 17:43:23 334

原创 Serilog 日志库简单实践(一):文件系统 Sinks(.net8)

ASP.NET Core 框架本身会产生大量关于Microsoft、Microsoft.AspNetCore 两个命名空间的 Information 和 Debug 级别的日志,如果不加限制,在生产环境中会非常冗长且影响性能。Serilog.Sinks.Async 不是一个独立的 Sink,而是一个异步包装器,用于将任何其他同步的 Sink(如 Serilog.Sinks.File)包装在异步操作中,减少日志记录对主线程的阻塞(特别是 Web 请求线程)。其中,异步操作的最大延迟稍高。

2025-12-13 17:42:31 299

原创 浅谈InheritableThreadLocal---线程可继承的小书包

总体上了来说,ThreadLocal,InheritableThreadLocal的实现都非常的优雅,不但很好的利用了对象的继承,保证用户在使用时无感知的发生了继承。最后是 childValue() 方法,它是指当发生继承动作时,父类中的存储的变量转化为子类对象的转化转换。在获取value 值时,调用的是key的childValue()方法,也就是InheritableThreadLocal.childValue()中重写的方法,将父线程的value值转为子线程的value时。

2025-12-12 10:56:45 470

原创 利用 OpenTelemetry 集成 JMX 监控

有了这些,我们现在就具备了将生成JMX遥测数据的应用程序集成到任何支持 OpenTelemetry 的遥测管道中的工具。很多新的开源项目直接暴露 Prometheus 协议的监控数据,确实更方便,但很多老的 Java 应用仍然通过 JMX 暴露指标数据,所以掌握 JMX 监控方式,等于掌握了一批 Java 应用的监控方式。使用JMX抓取工具是个不错的入门方法,但它确实需要一个额外的 JAR 包,如果我们已经在使用 Java 代理,可能就不希望这样了。出于这个原因,它比 JMX 抓取工具更常用。

2025-12-12 10:55:48 431

原创 .NET操作Word实现智能文档处理 - 内容查找替换与书签操作

这是实现模板化报告的关键技术。通过在模板文档中预定义书签,我们可以创建高度灵活的文档生成系统,根据不同的数据源生成个性化的文档。想象一下,如果您的公司有数百份合同、报告、手册等文档,而公司地址发生了变更,手动逐一修改这些文档将是一项耗时且容易出错的工作。通过书签定位插入内容的方式比传统的查找替换更加精确和可靠,因为它不依赖于文本内容的匹配,而是通过预定义的标记来定位插入点。通配符替换在处理技术文档、法律文件和财务报告时特别有用,可以帮助我们快速识别和格式化特定模式的文本,如电话号码、身份证号、日期格式等。

2025-12-11 09:59:55 850

原创 使用docker部署自建PLANET和controller 二次开发ztncui控制面板

调整了自动化构建docker镜像的流程,修改了ztncui项目的链接,改为自己二次开发的ztncui,添加了支持环境变量BASE_PATH,使用vars.SPEC_ZEROTIER_TAG可以指定打包docker镜像时用到的zerotier-one的版本号。controller 通过controller创建的 Network,ID为16位,其前10位就是controller的ztaddr,自建PLANET的时候,controller和PLANET的ztaddr是一致的。

2025-12-11 09:58:56 484

原创 Manim实现阴影特效

RealisticShadow3D类进一步增强了3D阴影的真实感,主要特点是加入了光源位置参数(light_source),允许用户更精确地控制阴影的投射方向和形状,从而模拟出更真实的光照效果。Shadow3D类在2D阴影的基础上增加了锐度参数(sharpness)和模糊处理,通过调整缩放因子和透明度来模拟不同锐度的阴影效果。通过设置不同的光源位置(light_source),可以为不同的3D对象创建符合物理规律的阴影效果。3D支持:专门提供了3D阴影实现,支持在3D场景中创建具有空间感的阴影效果。

2025-12-10 13:51:13 870

原创 使用PySide6/PyQt6实现全国省市区的级联选择组件

win = CascadeSelector(region_data, root_code="86", levels=3, labels=["省", "市", "区"])win = CascadeSelector(region_data, root_code="86", levels=3, labels=["省", "市", "区"])# -------------------- 测试 --------------------"""获取完整的选择结果 (code 和 name)"""

2025-12-10 13:50:27 859 1

空空如也

空空如也

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

TA关注的人

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