Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
一:背景 1. 讲故事 前面跟大家分享过一篇 C# 调用 C代码引发非托管内存泄露 的文章,这是一个故意引发的正向泄露,这一篇我们从逆向的角度去洞察引发泄露的祸根代码,这东西如果在 windows 上还是很好处理的,很多人知道开启一个 ust 即可,让操作系统帮忙介入,在linux上就相对复杂一...[2025/3/7]
被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
大家好,我是程序员鱼皮。最近删除了一位微信好友,结果成功删除后的那一瞬间,我大脑就完全宕机了。。。聊天记录竟然同时被删除了!比我兜儿都干净,再想搜索这个人都搜不到。 我慌了呀,因为还有一些很重要的聊天记录没有截图,也怪我几乎没有删除过好友,没想到会这样。 现在怎么办呢?听说微信聊天记录一旦删...[2025/3/7]
非容器环境中使用Selenium,提升Chrome与ChromeDiver兼容性
背景 在 Windows 环境下使用 Selenium 时,Chrome 浏览器版本与 ChromeDriver 版本的兼容性问题是一个常见的困扰。 由于 Chrome 频繁更新,而 ChromeDriver 需要与特定版本的 Chrome 精确匹配,导致 Selenium 代码可能会因版本不...[2025/3/7]
RVV1.0指令中关于_m系列函数的使用方法,即掩码mask的转换使用
在RVV1.0指令函数的使用中,遇到了mask加载不匹配问题 uint8_t mask_data[] = {15, 0, 0, 0, 0, 0, 0, 0}; vbool8_t mask = vlm_v_b8(mask_data, vl); printf("mask:\n")...[2025/3/7]
开发者必知的日志记录最佳实践
??对程序来说,良好的日志风格能够极大的降低排错的成本,增强程序的健壮性与可运维性,但大多数开发同学并没有将日志的重要性提的和代码本身一样高,本文讨论我个人记录日志的一些最佳实践 基本原则 将日志作为程序的第二个UI ??软件的第一UI当然是使用方或API调用方,而日志作为第二UI,用于开发、运维...[2025/3/7]
C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
前言 自从 DeepSeek 大模型火了以来,网络上出现了许多关于本地部署的教程和方法。然而,要真正深入了解其功能和应用,还是需要自己动手进行一次本地部署。 DeepSeek 作为一个高效的自然语言处理模型,其本地部署能力为大家提供了灵活的应用场景。不管是开发私有化的 AI 应用,还是集成到现...[2025/3/7]
没有源码,如何修改代码逻辑?
拍摄于西安德福巷 前段时间接手了一个二次开发其他团队代码的项目,过程中发生了不少有意思的小插曲。今天正好有点空闲时间,就简单梳理一下,希望能给大家提供一些参考和帮助。 当我咨询对方团队:“大哥,我们这边要对你们在xxx项目上的代码进行二次开发,想了解...[2025/3/7]
.NET 10首个预览版发布:重大改进与新特性概览!
前言 .NET 团队于2025年2月25日发布博文,宣布推出 .NET 10 首个预览版更新,重点改进.NET Runtime、SDK、Libraries 、C#、ASP.NET Core、Blazor 和.NET MAUI 等。 .NET 10介绍 .NET 10 是 .NET 9 的后...[2025/3/7]
AI与.NET技术实操系列(二):开始使用ML.NET
引言 在当今技术飞速发展的时代,机器学习(Machine Learning, ML)已成为推动创新和变革的核心力量。从智能推荐系统到自动化决策工具,ML的应用无处不在,深刻影响着我们的生活和工作方式。对于.NET开发者而言,掌握ML技术不仅意味着紧跟潮流,更是在竞争激烈的市场中保持优势的关键。作...[2025/3/7]
.NET 10 首个预览版发布,跨平台开发与性能全面提升
前言 2025年2月25日,微软正式推出 .NET 10 预览版 1,标志着这一跨平台开发框架迈入新里程碑。 本次更新聚焦 JIT 编译器优化、运行时性能提升和跨平台开发体验增强,同时引入多项开发者期待的功能改进。 无论是服务端应用、移动开发,还是桌面程序,.NET 10 都展现了强大的技术...[2025/3/7]
Blazor Hybrid适配到HarmonyOS系统
1. 前言 Blazor Hybrid是一个基于Web技术的MVVM开发模式的客户端框架,它只有UI是由Webview渲染,而逻辑均由.NET开发,可以突破浏览器限制访问本地文件,或者发起TCP或者UDP请求,相比Electron框架,理论上性能会更好。 当我适配完.NET运行时,觉得应该快速...[2025/3/7]
NetPad:一个.NET开源、跨平台的C#编辑器
前言 今天大姚给大家分享一个基于.NET开源、跨平台的C#编辑器和游乐场:NetPad。 项目介绍 NetPad是一个基于.NET开源(MIT License)、跨平台的C#编辑器和游乐场,它允许用户立即运行C#代码,无需创建和管理项目。 项目技术栈 .NET:作为底层框架,提供强大的开...[2025/3/7]
分享4款.NET开源、免费、实用的商城系统
前言 今天大姚给大家分享4款.NET开源、免费、实用的商城系统,希望可以帮助到有商城系统开发需求的同学。 nopCommerce nopCommerce是一个.NET开源功能丰富、免费、灵活且可定制的开源电子商务解决方案(大家假如有商城需求可以直接使用该项目进行二次开发,省时省力) ,具备...[2025/3/7]
百万级群聊的设计实践
作者:来自 vivo 互联网服务器团队- Cai Linfeng 本文介绍了服务端在搭建 Web 版的百万人级别的群聊系统时,遇到的技术挑战和解决思路,内容包括:通信方案选型、消息存储、消息有序性、消息可靠性、未读数统计。 一、引言 现在I...[2025/3/7]
记一次.NET内存居高不下排查解决与启示
前情 我们有个海外的项目,一共70个服务,前前后后花了超过一年时间完成了云服务迁移和架构调整。主要是架构调整了,原来的docker swarm托管服务,几台云服务器将n个服务堆在一起,只会对服务器资源做整体监控,服务器没事没人管单个服务的内存情况。新架构对单个服务改动不大,但外部相关架构则改头换...[2025/3/7]
微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
2025年2月25日,.NET团队在博客上宣布了.NET 10 Preview 1的正式发布,文章参见:https: devblogs.microsoft.com/dotnet/dotnet-10-preview-1/,标志着.NET框架在跨平台开发领域迈出了重要一步。这一新版本在.NET R...[2025/3/7]
PowerShell开发游戏 · 打蜜蜂 - SHARP-EYE
可以看到,虽然非常抽象简单,但是基础游戏框架已经搭建,游戏机制完善,就缺美工了,哈哈~~~~ 【首先】 Powershell不是用来开发游戏的,但是没人规定不能开发。因为它可以调取windows下的程序集,比如 ...[2025/3/7]
vivo 大规模容器集群运维平台实践
作者:来自 vivo 互联网服务器团队- Zhou Qi 、Kong Manyu 容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点,运维管理难度不断增大。为提升运维效率和稳定性,容器团队开发了北斗运维管理平台用于解决大规模...[2025/3/7]
go语言实现终端里的倒计时
最近在更新系统的时候发现pacman的命令行界面变了,我有很久没更新过设备上的Linux系统了,所以啥时候变的不好说。但这一变化成功勾起了我的好奇心。新版的更新进度界面如下: 新的更新进度界面能同时显示多个进度条,而且并没有依靠ncurses这个传统的TUI库。为啥我能断定没有用ncurs...[2025/3/7]
重生之数据结构与算法----哈希表
简介 hash的基本原理,可以理解为一个加强版的数组。为什么这么说呢,数组通过index来实现随机访问Log(1),而hash的key也是类似,把key理解为index,本质上还是一个基于数组的随机访问。 那么问题来了,如何把hash的key转换成数组的index呢? hash函数如何实现 ...[2025/3/7]
AI与.NET技术实操系列(三):在.NET中使用大语言模型(LLMs)
引言 在技术迅猛发展的今天,大语言模型(Large Language Models, LLMs)已成为人工智能领域的核心驱动力之一。从智能对话系统到自动化内容生成,LLMs的应用正在深刻改变我们的工作与生活方式。对于.NET开发者而言,掌握LLMs不仅意味着跟上技术潮流,更是在竞争激烈的市场中保...[2025/3/7]
『Python底层原理』--异步机制(async/await)
在现代编程中,并发是提高程序效率的关键技术之一,它允许程序同时执行多个任务,充分利用系统资源。 本文将深入探讨 Python 中的async/await机制,从并发编程基础讲起,逐步剖析其工作原理和实现方式。 1. 并发编程基础 计算机程序的执行方式主要有两种:顺序执行和并发执行。 顺序执...[2025/3/7]
为什么 退出登录 或 修改密码 无法使 token 失效
前文说过 token 由 3 个部分组成,分别是 metadata:加密方式; payload:token 业务层级的内容,例如 用户id,token 过期时间,token 签发人,token 签发时间等内容; signature:对 payload 加密后的密文。 一般地,当服务...[2025/3/7]
展开说说关于C#中ORM框架的用法!
Entity Framework(EF)是微软提供的一个开源的对象关系映射(ORM)框架,用于.NET应用程序。它经历了多个版本的演进,主要分为两大分支:Entity Framework 6 (EF6) 和 Entity Framework Core (EF Core)。以下是它们的主要区别和特点...[2025/3/7]
ISCSI数据盘的多路径配置
本文分享自天翼云开发者社区《ISCSI数据盘的多路径配置》,作者:w****n 多路径出现的背景 多路径,就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉...[2025/3/7]
『Python底层原理』--GIL对多线程的影响
在 Python 多线程编程中,全局解释器锁(Global Interpreter Lock,简称 GIL)是一个绕不开的话题。 GIL是CPython解释器的一个机制,它限制了同一时刻只有一个线程可以执行 Python 字节码。 尽管多线程在某些场景下可以显著提升程序性能,但 GIL 的存...[2025/3/7]
复杂任务分解:Tree of Thought
像搭乐高一样玩转AI思考 今天要带大家解锁一个让AI从"单细胞生物"进化成"八爪鱼思考者"的神技——Tree of Thought(思维树)。准备好了吗?我们要开始种树啦! 为什么AI需要"分叉思考"?(从单线程到多线程的进化) 想象一下:让AI策划婚礼就像让直男选口红——要么全红,要么死亡芭...[2025/3/7]
Appflowy cloud 部署测试避坑指南
在进行 Appflowy cloud 部署测试时,我可谓是踩坑无数。下面,我想从几个关键方面来分享一下我的经验。 先给大家讲讲我的基础情况。Appflowy cloud 的部署是在 docker 环境下,借助 docker compose 来完成的。我之前对 docker 有...[2025/3/7]
netcore后台服务慎用BackgroundService
在 .NET Core 开发中,BackgroundService 是一个非常方便的后台任务运行方式,但它并不适用于所有场景。 BackgroundService 一时爽,并发火葬场。 BackgroundService 适用于单实例的无状态后台任务,例如: 定期清理任务(删除过...[2025/3/7]
Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
在众多开源项目中,高颜值、功能强大且部署简单的项目往往更能俘获开发者的心。然而,实际部署 Web 应用时,面对数据库、缓存、消息队列等复杂的依赖关系,常常令人头疼。Docker 的开源为我们普及了容器化技术,能够快速打包和部署 Web 应用,让一切变得轻松简单。 但当你从开发环境迈入生...[2025/3/7]
Net跨平台硬件信息查询库 Hardware.Info:全面获取系统硬件详情
Hardware.Info 是一个基于 .NET Standard 2.0 的跨平台库,提供了硬件信息查询的功能,支持 Windows、Linux 和 macOS 操作系统。该库通过不同平台下的系统接口获取硬件信息,包括电池、电池管理、BIOS、CPU、存储驱动、键盘、内存、显示器、主板、鼠标、...[2025/2/20]
在线客服的独立产品之路:如何将复杂的 .NET 系统打包到 Docker 镜像,使之能一键上线
我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也积累了不少如何开发运营一款独立产品的经验。 在这几年时间中,有一些客户始终在用我的客服系统,昨天给一位客户更新系统,...[2025/2/20]
用 C# 插值字符串处理器写一个 sscanf
前言 什么?用 C# 插值字符串处理器写一个输入用的 canf?你确定不是输出用的 sprintf? 我猜不少读者看到标题后大概会有上述的想法。然而我们这里还真就是实现 canf,而不是 sprintf。 插值字符串处理器 C# 有一个特性叫做插值字符串,使用插值字符串,你可以自然地往字...[2025/2/20]
Tinyfox 简易教程-1:Hello World!
一,什么是 Tinyfox: Tinyfox 是一款自带 HTTP 服务器的以 WebApi、WebSocket 及“动态HTML”为核心功能的超轻量级的、独立性极强的高性能 Web 服务程序基础框架。 Tinyfox 简单易用,性能强劲,跨平台,既支持 Linux 也支持 Windows,...[2025/2/20]
我们是如何解决abp身上的几个痛点
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。 abp框架在.net社区是spring一样的存在,用的人也非常多,毫无疑问,它确实是一个不错的框架,不然社区的star也不会那么多。我也是因为它的模块化,ddd,微服务兼容...[2025/2/20]
Linux环境Docker使用代理推拉镜像
闲扯几句 不知不觉已经2月中了,1个半月忙得没写博客,这篇其实很早就想写了(可追溯到Docker刚刚无法拉镜像的时候),由于工作和生活上的事比较多又在备考软考架构,拖了好久…… 简单记录下怎么做的,以防同事和朋友问我怎么拉镜像仓库的,直接祭出本文?? 适用于将Docker以Systemd服...[2025/2/20]
多租户的 4 种常用方案!
前言 某中型电商平台的报表系统曾在深夜突然崩溃,起因竟是运营误删了共享表中的某租户数据列。 运维团队排查发现,因为缺乏有效租户隔离,一条误操作的ALTER TABLE语句导致全平台数据混乱。 这让我们警惕:选择多租户方案的每一步,都是安全与成本的权衡。 今天这篇文章就跟大家一起聊聊,多租户...[2025/2/20]
挑战分库分表后实现跨分页查询
想象你有一个图书馆(单库单表),所有书按顺序放在书架上。当你要找第100-110本书时,直接数到第100本就能拿到。但图书馆的书爆炸式增长后,馆长决定: 分库:把书分到10个房间(10个数据库) 分表:每个房间再分成20个书架(20张表) 每个书架只放特定规则的书(比如按ID取模:I...[2025/2/20]
c++中bitset的常见用法
C++ 中的 bitset 是一个用于处理固定大小位序列的模板类,提供高效的位操作功能。以下是对其关键特性的详细介绍: 1. 声明与初始化 头文件:需包含 <bitset>。 声明:bitset<N> 表示一个包含 N 位的二进制集合(N 为编译时常量)。 bitset...[2025/2/20]
并发编程 - 线程同步(九)之信号量Semaphore
前面对自旋锁SpinLock进行了详细学习,今天我们将学习另一个种同步机制——信号量Semaphore。 01、信号量是什么? 在 C# 中,信号量(Semaphore)是一种用于线程同步的机制,能够控制对共享资源的访问。它的工作原理是通过维护一个计数器来控制对资源的访问次数。它常用于限制...[2025/2/20]
ASP.NET Core 6 基础入门系列(1) ASP.NET Core 6.0 简介
系列目录 【已更新最新开发文章,点击查看详细】 预备知识1: C#5、C#6、C#7、C#8、C#9、C#10 预备知识2: .NET 对比 .NET Framework 预备知识3: &nbs...[2025/2/20]
精选4款基于.NET开源、功能强大的通讯调试工具
前言 今天大姚给大家分享4款基于.NET开源、功能强大的通讯调试工具,旨在帮助.NET开发者们更好的应对通讯调试方面的学习和工作,提升调试效率。 LLCOM LLCOM是一个.NET开源的、功能强大的串口调试工具。支持Lua自动化处理、串口调试、串口监听、串口曲线、TCP测试、MQTT测试、编...[2025/2/20]
.NET周刊【2月第2期 2025-02-09】
国内文章 开箱即用的.NET MAUI组件库 V-Control 发布了! https: www.cnblogs.com/jevonsflash/p/18701494 文章介绍了V-Control,一个适用于.NET MAUI的组件库。作者计划将其开源,强调.NET MAUI是生产力强的跨平台...[2025/2/20]
【杂谈】主键ID如何选择——自增数 OR UUID?
1.生成位置如何影响选择? 数据库往返时间 使用自增数时,ID是由数据库在执行INSERT操作时生成的;而UUID则可以在应用层生成。 考虑这样的场景: 一个方法需要插入A和B两个实体。其中B的数据需要引用A的ID。 如果使用自增ID,则必须与数据库进行两次网络请求: 1.先插入A,获...[2025/2/20]
『Python底层原理』--CPython的变量实现机制
在Python中,变量的使用看起来非常简单,例如 a = 10,s = "hello"等等。 然而,这种简单的赋值操作背后,CPython其实做了很多复杂的工作。 本文将通过一些简单易懂的代码示例,一起探索Python变量背后的奥秘,让我们对它的实现机制有更深一步的理解。 1. 变量到底是什...[2025/2/20]
为什么Raft算法是分布式系统的首选?
背景 当今的数据中心和应用程序在高度动态的环境中运行,为了应对高度动态的环境,它们通过额外的服务器进行横向扩展,并且根据需求进行扩展和收缩。同时,服务器和网络故障也很常见。 因此,系统必须在正常操作期间处理服务器的上下线。它们必须对变故做出反应并在几秒钟内自动适应;对客户来说的话,明显的中断通...[2025/2/20]
Gradio.NET 支持 .NET 8 简化 Web 应用开发
前言 Gradio.NET 是 Gradio 在 .NET 平台上的移植版本。Gradio 是一个开源的 Python 包,用于快速构建机器学习模型、API 或任意 Python 函数的演示或 Web 应用程序。 Gradio.NET 继承了 Gradio 的核心理念,以.NET 开发习惯和熟...[2024/8/26]
Terraform管理云资源实践
背景 Terraform是一款开源的Cli工具,网上的很多文章都是单机安装一个然后创建个目录就去操作云资源;如果在高可用的前提,如何将Terraform cli变成一个嵌入运维流程的一个组件?不仅仅是人编写tf模板然后去apply? 自动化的驱动Terraform,无非包含这几个步骤: 初始...[2024/8/26]
#8. 「模板」树链剖分
题目传送门:#8. 「模板」树链剖分、 前置知识 重链:重链(Heavy Path)是指树链剖分中的一条主要的路径,该路径上的节点数量较多,相邻节点之间的距离较近。轻链(Light Path)是指树链剖分中的其他路径,相邻节点之间的距离较远。 LCA:最近公共祖先 分析 上树状...[2024/8/26]
折腾 Quickwit,Rust 编写的分布式搜索引擎-官方教程
快速上手 在本快速入门指南中,我们将安装 Quickwit,创建一个索引,添加文档,最后执行搜索查询。本指南中使用的所有 Quickwit 命令都在 CLI 参考文档 中进行了记录。 https: quickwit.io/doc main-branch/reference/cli 使用 ...[2024/8/26]