在.NET Core中生成二维码和识别二维码内容,可以使用ZXing.NET库。ZXing.NET是一个开源的二维码处理库,可以方便地生成和解码二维码。下面是一个示例,演示如何在.NET Core中生成二维码和识别二维码内容。 首先,我们需要在.NET Core项目中添加ZXin...
1.前言 .Net8通过各种骚操,把性能提升到了前所未有的高度。超越以往任何版本,也涵盖了后续版本,比如.NET9或许可能没有如此大的性能优化了。本篇来看下它其中的一个优化:类型转换的优化效果。 2.示例 通过类型检查的优化,优化掉某些情况下...
一:背景 1. 讲故事 前些天有位朋友找到我,说他程序中的线程数爆高,让我帮忙看下怎么回事,这种线程数爆高的情况找问题相对比较容易,就让朋友丢一个dump给我,看看便知。 二:为什么会爆高 1. 查看托管线程 别人说的话不一定是真,得...
前言 在.NET 6之前我们一直是使用QRCoder来生成二维码(QRCoder是一个非常强大的生成二维码的组件,用到了System.Drawing.Common 包),然后从.NET 6开始,当为非 Windows 操作系统编译引用代码时,平台分析器会发出编译时警告。异常如下: Syst...
1.前言 空闲列表(free_list)实质上是GC经过垃圾回收之后形成的碎片空间,它的空间可以进行重新分配新的对象。本篇看下它的重新分配过程。 2.概述 当进行一个对象分配的时候,如果是慢速分配(JIT_New)的时候,它会查找空闲列表里面是否有足够的...
一、背景 1. 讲故事 前段时间有位朋友找到我,说他程序CPU直接被打满了,让我帮忙看下怎么回事,截图如下: 看了下是两个相同的程序,既然被打满了那就抓一个 dump 看看到底咋回事。 二、为什么会打满 1. 真的被打满了吗 凡事都要用...
一:背景 1. 讲故事 上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反馈两个问题: · GDIView 统计不准怎么办? · 我...
前言 很多人用第三方工具修改(实际上修改了也没用,现代化加密工具是直接hook JIT)MSIL 比如dnspy/ilspy/dotpeek/Reflector 等等,这些工具看似不错,实际上完全不经打,如果把程序集进行虚拟化,这些工具完全无法展示出来。本篇还是来看下比较能...
.NET 如何实现ChatGPT的Stream传输 ChatGPT是如何实现不适用websocket进行一个一个字返回到前端的? 下面我们会介绍一下EventSource。 EventSource EventSource 接口是 web 内容与服务器发送事件[1]通信的接口。 一个 EventSource 实例...
一、AForge库简介 AForge是一个.NET平台下的开源计算机视觉和人工智能库,它提供了许多常用的图像处理和视频处理算法、机器学习和神经网络模型,并且具有高效、易用、稳定等特点。AForge由一个包含多个组件模块的类库构成,可以为开发者在图像处理、...
一:背景 1. 讲故事 前几天写了一篇 如何洞察 .NET程序 非托管句柄泄露 的文章,文中使用 WinDbg 的 !htrace 命令实现了句柄泄露的洞察,在文末我也说了,WinDbg 是以侵入式的方式解决了这个问题,在生产环境中大多数情况下是不能走附加进程的模...
GDI+(Graphics Device Interface Plus)是一个Microsoft Windows操作系统中的二维图形API,它提供了很多绘制图像和文本的方法和类。这些方法和类可以让开发人员轻松地在Windows应用程序中创建和管理各种视觉元素,如位图、图形、文本等。本文将介绍GD...
一:讲故事 很多朋友可能会有疑问,C# 是一门托管语言,怎么可能会有非托管句柄泄露呢? 其实一旦 C# 程序与 C++ 语言交互之后,往往就会被后者拖入非托管泥潭,让我们这些调试者被迫探究 非托管领域问题。 二:非托管句柄泄露 1. 测试案例 ...
一:背景 1. 讲故事 前几天有位朋友找到我,说他的程序有内存泄露,让我帮忙排查一下,截图如下: 说实话看到 32bit, 1.5G 这些关键词之后,职业敏感告诉我,他这个可能是虚拟地址紧张所致,不管怎么说,有了 Dump 就可以上马分析。 二:...
一:背景 1. 讲故事 经常有朋友跟我反馈,说看你的文章就像看天书一样,有没有一些简单入手的dump 让我们先找找感觉,哈哈,今天就给大家带来一篇入门级的案例,这里的入门是从 WinDbg 的角度来阐述的,这个问题如果你通过 记日志,分析代码 的方...
整体上可以分为以下几个模块: 应用程序托管模块 应用程序托管模块是入口点,主要负责创建 Host、解析 ConfigureServices 和 Configure 方法,创建 Pipeline 等。Host 是应用程序的主机运行时环境,它提供了一些配置和管理应用程序的基础功能,例...
一:背景 1. 讲故事 有很多朋友跟我说,在 Windows 上看过你文章知道了怎么抓 Crash, CPU爆高,内存暴涨 等各种Dump,为什么你没有写在 Docker 中如何抓的相关文章呢?瞧不上吗? 哈哈,在DUMP的分析旅程中,跑在 Docker 中的 .NET 占比真的不...
有一句谚语“你不必重新发明轮子”。一个好的项目使用一些实用的好的库能大大节约开发周期。 我认为 .NET 不需要任何介绍。它用于开发各种各样的应用程序,包括物联网设备、游戏、桌面和移动应用程序等。在这里,我整理了 7 个非常实用的 .NET 库,...
SuperSocket框架是一款基于.NET平台的高性能、可扩展、模块化的网络通信框架。它提供了TCP、UDP、WebSocket等多种协议支持,可以轻松构建出各种类型的网络应用程序,如游戏服务器、聊天系统、实时数据推送等。 SuperSocket框架的主要特点包括: ...
介绍几种 .NET 中常用的网络编程类型及其示例: 1、Socket 编程 Socket 是最基础、最原始的网络编程方式之一,它提供了一组 API 来实现数据传输和通信。使用 Socket 编程时需要手动处理与底层协议和繁琐的细节,但同时也具有灵活性和可定制性。 ...