刷新
C# 面向对象的7大原则之开闭原则(Open-Closed Principle,OCP)

博主头像 定义 开闭原则(OCP):软件实体应对扩展开放,对修改关闭。 通俗来讲就是,当需要进行扩展时,在不更改现有代码的前提之下,进行扩展。 举例 假设有一个动物发出声音的类为Animal,最初只有Dog(狗)和Cat(猫),后续需要新增Cow(牛);按照开闭原则,不应修改Animal类、Dog类或Cat类 ...

关于Protobuf在使用中的一些注意点

Protobuf是谷歌旗下的一款二进制序列化协议 协议的编写 在项目中新建一个xxx.proto文件 文件的格式 第一行写protobuf的版本 syntax = "proto3" ; 第二行写 包的名字 在C#中就说命名空间的名字,避免重复 例如 package Test; 接下来写协议内容 例如 ...

vs2022不安装docker desktop可以打包镜像吗

vs2022开发的项目可以直接打包镜像到 linux主机。 idea 可以使用docker插件直接打包镜像到linux,我想vs2022也可以,于是开始摸索 官网只说支持docker desktop 本机打包,但是安装docker desktop 再加上安装虚拟机特性占用空间太大 ,能不能借助远程l ...

WPF 设备输入事件封装

博主头像 本文主要介绍WPF应用对鼠标输入、触摸屏触笔以及触摸事件的封装 之前有简单说明设备输入类型 WPF 屏幕点击的设备类型 - 唐宋元明清2188 - 博客园 (cnblogs.com) 1、鼠标 - 通过Mouse相关的事件参数MouseButtonEventArgs中的数据,e.StylusDeci ...

GC终结标记 SuspendEE 是怎么回事

博主头像 一:背景 1. 讲故事 写这篇是起源于训练营里有位朋友提到了一个问题,在 !t -special 输出中有一个 SuspendEE 字样,这个字样在 coreclr 中怎么弄的?输出如下: 0:000> !t -special ThreadCount: 3 UnstartedThread: 0 Ba ...

《黑神话:悟空》神话再现,虚幻引擎与Unity/C#谁更强?

博主头像 前言 在国产游戏领域,《黑神话:悟空》无疑是一颗耀眼的明星,以独特的艺术风格、深厚的文化底蕴以及卓越的技术表现,赢得了国内外玩家的广泛关注。然而,在这款游戏光鲜亮丽的背后,是我们开发者对技术选择的深思熟虑与探索。 今天我们就来揭秘《黑神话:悟空》幕后的技术对决—虚幻引擎与Unity/C#,究竟谁更强 ...

C#泛型

博主头像 泛型(Generics)是C#中的一个重要特性,它允许您编写灵活、类型安全且可重用的代码。下面我将详细介绍泛型的概念、使用方法及其在C#中的实现细节。 泛型的基本概念 1. 什么是泛型? 泛型是一种允许您定义类型参数的机制,这些类型参数可以在编译时由具体的类型替换。这样,您可以编写一个通用的类或方法 ...

VS常用拓展以及快捷键

博主头像 VS常用拓展以及快捷键 扩展1:Select Next Occurrence 该拓展可以当前目标、下一个目标、上一个目标,类似于Alt+鼠标拖动,但是可以在没对齐的情况下使用 安装 设置4个常用的快捷键 工具->选项->键盘->c# 2005 选择下一个 快捷键:Ctrl+D 选择上一个 快捷键:C ...

.NET 高效Nuget管理工具(开源)

博主头像 我们.NET开发会引用很多外部Nuget包,多项目、多个解决方案、甚至多个仓库。 简单的Nuget包管理,通过VS就能比较简单处理好。但复杂的场景呢,比如: 1.一个仓库里,有多个解决方案的Nuget包管理 -- 我现在项目就是这样的,针对会议大屏的全家桶软件集代码仓库。这个仓库里,接近30个工具/ ...

C# 使用特性的方式封装报文

博主头像 在编写上位机软件时,需要经常处理命令拼接与其他设备进行通信,通常对不同的命令封装成不同的方法,扩展稍许麻烦。 本次拟以特性方式实现,以兼顾维护性与扩展性。 思想: 一种命令对应一个类,其类中的各个属性对应各个命令段,通过特性的方式,实现其在这包数据命令中的位置、大端或小端及其转换为对应的目标类型; ...

.NET8 Blazor 从入门到精通:(二)组件

博主头像 目录Blazor 组件基础路由导航参数组件参数路由参数生命周期事件状态更改组件事件 Blazor 组件 基础 新建一个项目命名为 MyComponents ,项目模板的交互类型选 Auto ,其它保持默认选项: 客户端组件 (Auto/WebAssembly): 最终解决方案里面会有两个项目:服务器 ...

通过 C# 将数据写入到Excel表格

博主头像 Excel 是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中,Excel 的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到 Excel 中,包括文本、数值、数组、和DataTable数据的输入。 C# 在Excel单元格中写入文本、或数值 C# 在Ex ...

编程技巧 --- 远程调试

博主头像 引言 最近在做的项目上做了一些性能优化的工作,用到了 Visual Studio 远程调试,所以本篇文章整理一下远程调试技巧。 首先,了解一下 Visual Studio远程调试是什么? Visual Studio 的远程调试功能允许在本地调试远程计算机上运行的应用程序。用远程调试,可以在本地计算机 ...

记一次 .NET某环境监测系统 崩溃分析

博主头像 一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序崩溃了,也自己分析了下初步结果,让我帮忙再确认下,既然让我确认,那就开始dump分析之旅吧。 二:WinDbg 分析 1. 为什么会崩溃 windbg 有一个强大之处就是带有一个自动化的分析命令 !analyze -v 可以帮助我们快速的分析 ...

记一次 .NET某智慧出行系统 CPU爆高分析

博主头像 一:背景 1. 讲故事 前些天有位朋友找到我,说他们的系统出现了CPU 100%的情况,让我帮忙看一下怎么回事?dump也拿到了,本想着这种情况让他多抓几个,既然有了就拿现有的分析吧。 二:WinDbg 分析 1. 为什么会爆高 既然说是 100%,作为调试者得拿数据说话,可以使用 !tp 来观测一 ...

使用dapper,因错误SQL字串拼接方式 导致的内存泄漏

作者就职的公司在19年就开始使用.net core并且部署到Linux上,这些年也遇到不少问题,有些问题都是使用土方法去解决,后面再慢慢写吧,准备将遇到的问题写成一个系列。 前情提要 本次的项目是20年上线的储值卡系统,上线后发现内存缓慢增长(半个月涨到4G多),一直没有找到原因就让运维小伙伴设置每 ...

C#.Net筑基-解密委托与事件

博主头像 委托与事件是C#中历史比较悠久的技术,从C#1.0开始就有了,核心作用就是将方法作为参数(变量)来传递和使用。其中委托是基础,需要熟练掌握,编程中常用的Lambda表达式、Action、Func都是委托,包括事件也是基于委托实现的。 ...

如何同时Ping多个IP地址

遇到些问题需要同时ping多个地址来检查网络状态,找了一圈都是用批处理实现的简单同网段批量ping 既然没有现成的那就自己写个吧。。。。 https://github.com/dawn-lc/Pings Pings 高效、轻量的实时网络监控工具,支持对多个目标的ping以及记录延迟波动、链接状态、丢 ...

c#获取惠普打印机状态

博主头像 最近遇到一个项目,由于客户指定了打印机型号:HP LaserJet Pro M501n ,本来想着参考网上的代码,使用System.Management来实现对打印机状态的查询,测试过程中发现无论是缺纸、空闲,获取到的统统都是空闲状态,咨询售后也是说无法获取状态,也不提供SDK;后面在社区看见可以通 ...

<123···23>