
C#开源架构分析
文章平均质量分 83
主要讲解各类项目和架构
优惠券已抵扣
余额抵扣
还需支付
¥59.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
A_nanda
夜临门 路难行 手提孤灯 晓烛之明 且行且珍惜
展开
-
c#获取使用串口信息
获取串口号有多种方法,下面是几种不同的实现方法:using System.IO.Ports;原创 2025-03-18 14:44:51 · 360 阅读 · 0 评论 -
c#中使用时间戳转换器
在C#中,时间戳转换器通常用于将时间戳(通常是一个表示自某一特定时间点(如1970年1月1日UTC)以来的毫秒数的长整型值)转换为DateTime对象,或者将DateTime对象转换回时间戳。原创 2025-03-10 11:40:40 · 232 阅读 · 0 评论 -
优化 EF Core 和 LINQ 以实现高性能应用程序
实体框架核心(Entity Framework Core,简称 EF Core)是一款强大的对象关系映射(ORM)工具,它弥合了面向对象编程与关系型数据库之间的差距,而 LINQ 在.NET 中提供了强大的查询语法。二者结合起来简化了与数据库的交互操作,但一些不经意的使用方式可能会导致性能瓶颈以及可扩展性问题。本文将深入探讨针对 EF Core 和 LINQ 的有效优化技巧,展示好与不好的代码示例,讨论相关优势,并着重介绍那些有助于提升性能和可扩展性的特性。原创 2025-02-28 23:12:03 · 349 阅读 · 0 评论 -
DotnetSpider实现网络爬虫
通过使用DotnetSpider框架或HtmlAgilityPack库,.NET开发者可以快速实现网页数据的抓取。这些工具不仅提高了开发效率,而且提供了强大的功能来处理复杂的网页数据抓取需求。在进行网页数据抓取时,请确保遵守相关网站的爬虫政策和法律法规,合理合法地使用爬虫技术。DotnetSpider是一个开源的、轻量、灵活、高性能、跨平台的分布式网络爬虫框架,适用于.NET平台。创建一个数据模型来表示你想要抓取的数据。首先,你需要在你的.NET项目中安装DotnetSpider NuGet包。原创 2024-12-30 13:45:49 · 1041 阅读 · 0 评论 -
C#中通过Mapster实现轻量级高效对象映射器
当谈到 C# 中的对象关系映射时,许多人会立即想到 AutoMapper。事实上,AutoMapper 是一个出色的对象映射库。但是,今天我想分享另一个我个人认为更轻量级、更有用的库:Mapster。虽然它的受欢迎程度可能不如 AutoMapper 高,但它的力量是不可否认的。原创 2024-12-30 11:53:01 · 390 阅读 · 0 评论 -
c#跨进程通讯
进程间通讯是指在操作系统中,不同进程之间进行数据和信息进行交换的机制。在C#中,进程间通信可以通过多种方式实现,包括文件共享、命名管道、套接字、消息队列、远程过程调用(RPC)等。消息队列通常是独立于进程的,可以在不同的机器上运行。管道是一种半双工的通信机制,可以在同一台机器上的两个进程之间传输数据。管道分为匿名管道和命名管道。匿名管道通常用于父子进程之间的通信,而命名管道可以在不相关的进程之间进行通信。共享内存允许两个或多个进程访问同一块内存区域,这是最快的IPC形式,因为数据不需要在进程之间复制。原创 2024-09-26 09:14:22 · 872 阅读 · 0 评论 -
MVVM开发框架
在C# WPF开发中,MVVM(Model-View-ViewModel)是一种流行的设计模式,它通过分离用户界面(View)和业务逻辑(ViewModel)来提高应用程序的可维护性和可测试性。以下是一些最受欢迎的MVVM框架,以及它们的代码实例、优缺点和使用场景。原创 2024-09-18 10:22:44 · 224 阅读 · 0 评论 -
winform开发中如何签入3D模型
要加载3D模型,你可以使用SharpGL的Model类,或者集成其他的3D建模库,如3ds Max的SDK或者Blender的Python API。在WinForms开发中,要签入3D模型,你可以使用第三方库,如OpenGL或者SharpGL。以下是一个基本的例子,展示如何在WinForms应用程序中使用SharpGL来签入一个3D模型。这只是一个基本的框架,实际的3D模型加载和渲染需要更复杂的代码。如果你需要加载复杂的3D模型,可能还需要考虑物理学(如使用Bullet物理库)、动画、纹理等方面的处理。原创 2024-09-24 13:57:40 · 473 阅读 · 0 评论 -
ASP.NET Core 中的 CRUD 操作
我们的披萨服务支持对披萨列表执行 CRUD 操作。这些操作是通过 HTTP 谓词执行的,它们通过 ASP.NET Core 属性进行映射。正如你所了解的,HTTPGET谓词用于从服务检索一个或多个项。此类操作使用[HttpGet]属性进行批注。GET你已经了解了GET操作的工作原理。让我们来详细了解一下POSTPUT和DELETE操作。原创 2024-09-14 17:34:00 · 523 阅读 · 0 评论 -
应用程序的复原能力
复原能力是指从暂时性故障中恢复的能力。应用的恢复策略会恢复正常功能且将对用户的影响降到最低。云环境中可能会发生故障,应用应以尽可能减少停机时间和数据丢失的方式做出响应。理想情况下,你的应用可以在用户根本就觉察不到问题的情况下正常完成故障的处理。由于微服务环境可能不稳定,因此在设计应用时要使其能够预期并处理部分故障。部分故障的示例可能包括代码异常、网络中断、服务器进程无响应或硬件故障。即使是计划内的活动(例如将容器移到 Kubernetes 群集中的其他节点)也可能会导致暂时性故障。原创 2024-09-14 09:27:06 · 613 阅读 · 0 评论 -
CAP (C# Distributed Application Framework)
当 CAP 启动时,会使用当前程序集名称作为默认组名,如果多个同组订阅者订阅同一个 topic 名,则只有一个订阅者可以接收到消息。然后,消息队列上的订阅将是类上定义的主题和方法上定义的主题的组合。它与消息队列中的广播模式相同,用于在多个不同的微服务实例之间处理相同的消息。CAP 是一个基于 .Net 标准的库,是处理分布式事务的解决方案,具有 EventBus 的功能,轻量级、易用、高效。作为节点发现,在实现网关代理功能的同时,您还可以轻松查看节点或其他节点数据,就像您正在访问本地资源一样。原创 2024-09-09 10:30:21 · 760 阅读 · 0 评论 -
TulingMember进销存系统
使用.net6,基于 Furion +viewui开发的一套极简的进销存管理系统。原创 2024-09-06 09:20:04 · 429 阅读 · 0 评论 -
.net maui界面动态添加元素(二)
Entry x:Name="useCode" Text="{Binding Barcode}" Placeholder="请输入设备编号" WidthRequest= "200" HorizontalOptions="Start" Grid.Row="2" Grid.Column="1" TextChanged ="barcode_TextChanged"/><TextCell TextColor="#161617" Text="1.检查电源"></TextCell>Text="点检明细:"原创 2024-08-22 15:43:08 · 270 阅读 · 0 评论 -
.net maui安卓开发中使用明文传输(一)
背景:最近在做一个pad上的项目,目的是执行每日点检功能(就是检查设备的各项保养指标);前期用HBuilder做了一个,但是现场的触摸屏选用的是TouchPie 安卓版本是6.0版本,上次开发的软件可以在安卓7.0上完美兼容,但由于触摸屏安卓版本太低不能兼容;询问厂商才知道这款触摸屏主板是rk3288,安卓版本不能兼容;因此想升级安卓版本是不可能的。因此用.net maui重新开发了个每日点检的小功能,以兼容低版本安卓设备;原创 2024-08-21 16:54:13 · 322 阅读 · 0 评论 -
uni-app可替换radio-group的控件uni-segmented-control(十九)
选项卡1的内容</text></view><view v-if="current === 1"><text class="content-text">选项卡2的内容</text></view><view v-if="current === 2"><text class="content-text">选项卡3的内容原创 2024-08-06 11:08:05 · 372 阅读 · 0 评论 -
uni-app步骤条steps源码解析(十八)
例如:网上购买一个商品需要先在网上下单-->当地物流人员取件-->中间物流转送--->目的地物流接收--->配送到买家手中;* @property {Array} options 数据源,格式为:[{title:'xxx',desc:'xxx'},{title:'xxx',desc:'xxx'}]activeColor: 选中状态的颜色 options: 数据源,格式为:[{title:'xxx',desc:'xxx'},{title:'xxx',desc:'xxx'}]原创 2024-08-06 09:33:50 · 691 阅读 · 0 评论 -
uni-app关于跨域问题(十七)
打印设备编号:设备信息原创 2024-08-05 10:23:03 · 484 阅读 · 0 评论 -
关于缓存的一些心得
Cache penetration(缓存穿透) :缓存穿透是指大量请求查询系统中不存在的数据如通过不存在的 UID 访问用户,既然这些数据在系统中不存在,那么肯定在Redis缓存中也不存在这批数据,这样导致这些请求都会穿透到DB,导致系统崩溃。有些同学可能就会问了,既然系统中都没这些数据,为什么还会存在这样的请求了?别忘了,这个世界上还有一群计算机破坏分子,他们可能基于各种目的,伪造这样的请求去攻击你的系统。原创 2024-08-02 11:22:18 · 256 阅读 · 0 评论 -
推荐一款处理TCP数据的架构--EasyTcp4Net
EasyTcp4Net是一个基于c# Pipe,ReadonlySequence的高性能Tcp通信库,旨在提供稳定,高效,可靠的tcp通讯服务。原创 2024-07-17 11:48:52 · 1351 阅读 · 0 评论 -
C#实现自定义标签的设计和打印
说明:第一行放的是带有公司log的图片,用的控件是picture;//默认打印机始终出现在列表的第一项。// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。设计标签:选用的是Fastreport自带的,可拆包忌用的标签设计器;/// ResourceService 的摘要说明。原创 2024-07-12 11:49:41 · 686 阅读 · 0 评论 -
UNI_App平台调试指南 debug(十五)
操作步骤:在 HBuilderX 编辑器中对目标行的行号处点右键,在右键菜单中选择“同步断点到调试器”,然后调试控制台会自动打开对应的代码并在指定行处标记断点。(图中指示 2)下找到需要调试的页面,单击打开 ,在右侧可以看到我们需要调试的内容(图中指示 3)。在需要调试的代码行号的位置,点击打上断点(图中指示 4)。的调试还提供一个便利的功能,可直接在编辑器中打断点,断点会自动同步到调试工具中。之后,在设备上进行操作,进入断点位置,可以方便我们跟踪调试代码。,项目启动后,在下方的控制台选择。原创 2024-07-11 15:17:56 · 1047 阅读 · 0 评论 -
一款简单的验证器Valit
验证规则Valit 是 .NET Core 的验证。代码周围不再有 if 语句。改写漂亮干净!原创 2024-07-01 10:51:39 · 562 阅读 · 0 评论 -
c#上位机与PLC通讯心跳的实现方法
在上位机与PLC的通信中,心跳机制类似于人体的心跳,是系统保持正常运行的关键指标之一。但是在实际应用中,我们写上位机时很多时候是不需要这么做的,因为大部分情况下,上位机本身就是实时通信的,也就是说它会不断地给PLC发送请求指令,因此上位机是很容易通过响应的报文来知道连接是否正常,因为心跳的本质仍然是数据交互。3、PLC心跳程序编写:在PLC的程序中,需要编写相应的逻辑来生成和发送心跳信号,如果需要检测,可以采用接通延时定时器,检测值的变化,如果在规定的时间内未收到心跳信号,系统应该及时发出警告或采取措施。原创 2024-06-28 10:43:14 · 1091 阅读 · 0 评论 -
uni-app菜单tabbar(十四)
原生tabBar是相对固定的配置方式,可能无法满足所有场景,这就涉及到自定义tabBar。但注意除了H5端,自定义tabBar的性能体验会低于原生tabBar。App和小程序端非必要不要自定义。H5端的自定义tabBar组件:H5端不存在原生tabBar性能更高的概念,并且宽屏下常见的tabBar在顶部而不是底部,此时可以使用custom-tab-bar组件来自定义普通自定义tabBar:使用view自行绘制tabBar。如果页面是多页方式,切换tabBar将无法保持底部tabBar一直显示。原创 2024-06-28 08:46:50 · 636 阅读 · 0 评论 -
uni-app数据和缓存(十三)
将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。从本地缓存中异步获取指定 key 对应的内容。从本地缓存中同步获取指定 key 对应的内容。异步获取当前 storage 的相关信息。同步获取当前 storage 的相关信息。从本地缓存中异步移除指定 key。从本地缓存中同步移除指定 key。同步清理本地数据缓存。原创 2024-06-26 17:38:00 · 354 阅读 · 0 评论 -
uni-app页面之间参数传递(十二)
保留当前页面,跳转到应用内的某个页面,使用。原创 2024-06-26 17:25:07 · 687 阅读 · 0 评论 -
uni-app滑块视图容器(十一)
注意滑动切换和滚动的区别,滑动切换是一屏一屏的切换。swiper下的每个swiper-item是一个滑动切换区域,不能停留在2个滑动区域之间。组件中,宽高自动设置为100%。注意:宽高100%是相对于其父组件,不是相对于子组件,不能被子组件自动撑开。一般用于左右滑动或上下滑动,比如banner轮播图。原创 2024-06-26 11:25:57 · 592 阅读 · 0 评论 -
uni-app实现下拉刷新/停止刷新(十)
开始下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。在 js 中定义 onPullDownRefresh 处理函数(),监听该页面用户下拉刷新事件。停止当前页面下拉刷新。原创 2024-06-26 08:52:31 · 862 阅读 · 0 评论 -
一款轻量级的WPF UI库---Adonis UI
Adonis UI适用于 WPF 应用程序的轻型 UI 工具包,提供经典但增强的 Windows 视觉对象。原创 2024-06-24 11:32:39 · 507 阅读 · 0 评论 -
LiteDB - 一个单数据文件 .NET NoSQL 文档存储
DbRef(x => x.Customer, "customers") // 1 对 1/0 引用。.DbRef(x => x.Products, "products") // 1 对多引用。// "Produts" 和 "Customer" 来自其他集合 (而不是嵌入的文档).Include(x => x.Products) // 1 对多引用。// 每个 Order 实例都会加载 Customer/Products 引用。// 插入新的 customer 文档 (Id 是自增的)原创 2024-06-24 10:14:49 · 277 阅读 · 0 评论 -
FTP数据传输响应问题
大部分提供的是本地存储,讲主程序存储到一个文件,然后根据主程序内运行的子程序,找到子程序运行文件,获取实时的加工参数。表面上很简单,大不了把对应设备的运行程序文件夹做个共享,在获取文件分布解析。//ftp下载文件时超时处理,继续重新处理。看着没有任何问题,但是在我获取主程序后,再次获取子程序时就会发现,由于远程设备一直在运行,大部分显示文件被占用。logger.Info("ftp文件:"+ftpfileparh);//应对ftp下载文件超时处理代码,待测试。/// 从ftp上下载文件到本地。原创 2024-06-21 13:54:00 · 104 阅读 · 0 评论 -
抓取另一个应用程序(app)内的测试数据方法
在Windows操作系统中,利用C#来抓取另一个应用程序(app)内的数据通常涉及到一些高级技术,如Windows API调用、内存读取、UI自动化等。这些技术都有其特定的用途和限制,而且可能涉及到法律和道德问题。在尝试这样的操作之前,请确保你了解相关的法律和隐私政策,并确保你有合法的理由和权限去获取其他应用程序的数据。原创 2024-06-19 15:28:17 · 382 阅读 · 0 评论 -
推荐一款WPF绘图插件OxyPlot
开始PlotViewPlotModelPlotView例子您可以在代码存储库的文件夹中找到示例。NuGet 包最新的预发布包由 AppVeyor CI 推送到。若要安装这些包,请设置 myget.org 包源并记住“-pre”标志。OxyPlot 是 .NET 的跨平台绘图库。该代码在 MIT 许可证下获得许可。这是一个非常宽松且对企业友好的许可证。参见和了解更多详情。核心库是一个,可以在不同的平台上使用。原创 2024-06-12 16:00:42 · 2290 阅读 · 2 评论 -
使用 ML.NET CLI 自动进行模型训练
ML.NET CLI 是一个.NET 工具。若没有安装,打开vs ,点击新建下项目按装多个工具和功能安装位置;安装后,你为其指定一个机器学习任务和一个训练数据集,而它将生成一个 ML.NET 模型以及要运行的 C# 代码,以便在应用程序中使用该模型。如下图所示,生成高质量的 ML.NET 模型(序列化模型 .zip 文件)以及用于运行该模型/对该模型评分的示例 C# 代码非常简单。此外,还会生成用于创建/训练该模型的 C# 代码,以便可以研究和迭代用于该生成的“最佳模型”的算法和设置。原创 2024-06-11 22:07:22 · 443 阅读 · 0 评论 -
HBuilder中能否使用机器学习
例如,你可能会使用JavaScript库如TensorFlow.js来进行前端的轻量级机器学习模型开发,或者使用Python后端与HBuilder配合,通过API调用实现机器学习服务。在HBuilder项目中使用TensorFlow.js(简称TF.js)是一个很好的选择,如果你想在Web应用中集成机器学习能力,尤其是浏览器端的计算。: 首先,确保你已经安装了HBuilder(原名DCloud),然后在HBuilder的项目中,可以通过npm来安装TF.js。: 对于预测任务,你可以使用。原创 2024-06-07 15:13:45 · 661 阅读 · 0 评论 -
.NET 使用Automapper映射 Record类型
值得注意的是,由于record是不可变的,因此我们只能在创建时初始化其属性,无法在后续代码中修改属性值。因此,在映射过程中,Automapper会自动为record类型的目标对象生成一个构造函数,并根据源对象的属性值进行初始化。我已经将项目的所有Dto都是用record类型,但是record类型还是有些需要注意的点,本文将介绍如何使用Automapper将POCO映射成record的对象。安装完成后,我们可以在项目中引入Automapper的命名空间,以便在代码中使用Automapper相关的功能。原创 2024-06-04 08:44:47 · 531 阅读 · 0 评论 -
机器学习ML.NET
是用于 .NET 的跨平台开源机器学习 (ML) 框架。ML.NET 允许开发人员在其 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,而无需开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载数据,支持数据转换,并包含许多 ML 算法。借助 ML.NET,您可以针对(如分类、预测和异常检测)训练模型。您还可以在 ML.NET 中使用 TensorFlow 和 ONNX 模型,这使得框架更具可扩展性,并扩展了支持的方案数量。原创 2024-06-04 13:53:04 · 1048 阅读 · 2 评论 -
一款高性能的轻量级ORM数据映射框架——Chloe
Chloe 是一个轻量级的对象/关系映射 (ORM) 库。查询接口类似于 LINQ。可以像 LINQ 一样查询数据并执行任何操作(联接查询 |群查询 |聚合查询 |插入 |批量更新 |批量删除 |分片)。对应文档链接:适应数据库包括:SqlServer、MySql、Oracle、SQLite、PostgreSQL、The Golden Warehouse of the National People's Congress。原创 2024-05-31 09:57:30 · 450 阅读 · 0 评论 -
uni-app增加home图标,实现回到功能主页(九)
众所周知,这个会将页面推入堆栈中,结合框架可以实现后退功能;但是界面堆栈中的界面如果推入过多,想要回到主界面就显得耗时很多;因此决定在app上加一个home图标,可以从任何页面退回功能主页。众所周知pages.json是应用的功能菜单,记录各个页面的位置,粗体代码意思是增加home导航按钮,悬浮在左侧。最近在优化一个uni-app项目,项目中有许多设备需要点检,点检完成后可以继续点检;点击功能列表下子页面,子页面包含回到主页图标,点击后回到功能列表。二、对应页面增加回到公共菜单方法。原创 2024-05-28 09:26:14 · 1107 阅读 · 0 评论 -
利用EAS自动生成数据模型和sql脚本
用户类是分两个分布类进行映射的,第一个从dataentity继承过来,这个可以自己对原始方法进行扩展,例如调用数据库的存储过程。刚打开的时候项目报错是因为项目中缺少项目引用的两个引用文件导致的,在成功引用后就正常;在这个应用程序中,用户可自定义实体模型和枚举模型,只要选择相应的实体或者枚举进行右击添加即可。解决方案参数设定,在解决方案的设定中可设置项目名称、通用语言,命名空间和输出位置。点击生成代码,就会弹出生成路径的提示框,我们确认没问题后就会有对应的项目文件生成。同步可生成项目的管理文件和 设计文件。原创 2024-05-25 23:22:27 · 281 阅读 · 0 评论