
C#
文章平均质量分 62
大鱼>
专注于物联网开发
展开
-
C#获取windows系统资源使用情况
如何通过C#获取Window系统的资源使用。原创 2023-12-27 15:42:10 · 836 阅读 · 0 评论 -
C#修改富文本框(RichTextBox)指定内容颜色
C#解包与组包工具,针对的是非严格的808协议,主要是记录对拆包呈现样式的一次问题记录原创 2022-12-17 12:53:35 · 7813 阅读 · 0 评论 -
C#WebApi寄宿在一个窗口应用程序
在我们开发应用程序的过程中,应用程序之间往往是需要相互之间进行通讯的,即便是一个窗口应用程序或者Winform应用程序。如何简单的将两个应用程序之间进行数据传递,我们目前通常的做法就是使用WebAPI、WebService、RPC等对外提供接口。我们这里的做法就是如何将WEBAPI寄宿在C#的窗口应用程序中。原创 2022-03-29 16:53:14 · 2974 阅读 · 0 评论 -
C# 实现国密SM4加解密封装
1.Portable.BouncyCastle 引入右键解决方案的引用,选择管理NuGet程序包在浏览的搜索框中搜索:“Portable.BouncyCastle”选择第一个,在右侧点击安装即可完成程序包的引入。2.SM42.1.SM4Contextpublic class SM4Context { public int mode; public long[] sk; public bool isPadding..原创 2021-12-28 14:32:41 · 3474 阅读 · 5 评论 -
C# 实现国密SM3加解密封装
1.Portable.BouncyCastle 引入右键解决方案的引用,选择管理NuGet程序包在浏览的搜索框中搜索:“Portable.BouncyCastle”选择第一个,在右侧点击安装即可完成程序包的引入。2.SM32.1.公共方法 public class SupportClass { /// <summary> /// Performs an unsigned bitwise right shift with..原创 2021-12-28 14:26:13 · 7352 阅读 · 3 评论 -
C# 实现国密SM2加解密封装
1.Portable.BouncyCastle 引入右键解决方案的引用,选择管理NuGet程序包在浏览的搜索框中搜索:“Portable.BouncyCastle”选择第一个,在右侧点击安装即可完成程序包的引入。2.SM22.1.密码计算 /// <summary> /// 密码计算 /// </summary> public class Cipher { private int ct = 1..原创 2021-12-28 14:21:06 · 3647 阅读 · 0 评论 -
C# 单例模式封装一个打印WebApi日志的类
1.前言 这里主要说明一下为什么日志类使用单例模式,首先我们先了解一下单例模式。单例模式:创建的类在当前进程中只能有一个实例。用在写日志主要是防止在多线程写日志的时候防止对文件操作出现访问冲突的现象。2.操作封装public class Log { private static Log _instance = null; private static readonly object syncObject = new object(); ...原创 2021-10-30 15:31:16 · 929 阅读 · 0 评论 -
C#接入阿里云ECSAPI实现系统服务器运维
1.前言最近在做服务的运维,之前有说过如何对服务器上的程序进程进行管理,参考《C#对接supervisor XML-RPC API 实现进程控制》,今天说一下如何对接阿里云的ECS实现系统对服务器的控制,完善系统自运维的服务。2.阿里云SDK的对接2.1.添加SDK包在NuGet的面板找到AlibabaCloud的程序库,进行安装2.2.实现一个SDK对接的封装类public class AlibabaCloudSDK { /** .原创 2021-10-30 14:45:10 · 1593 阅读 · 0 评论 -
经纬度坐标系之间相互转化工具(百度与WGS84、百度与国测局、国测局与WGS)
1.前言刚刚想从百度坐标拾取工具里面找到一些地点的经纬度,存储到系统中使用,由于百度拾取系统给到的是百度(BD-09)坐标系统,系统统一用到的是WGS-84,所以需要进行一次转换,本来想从网上下载一个,结果花了仅剩不多的49积分,下载到了一个用起来很不方便,而且还报错的东西下来,真TM好气!所以无奈自己编写一个提供给大家使用!2.实现2.1.语言及框架说明我这边是基于C#语言开发的winform桌面应用程序,使用的是.NET Framework 4.6.12.2.经纬度坐标系统转换类原创 2021-09-26 16:04:09 · 5058 阅读 · 0 评论 -
.NET 导出报告到PDF
1.错误的实现方式最初的时候我采用Spire.PDF将生成的word(如果导出报告到word可以查看这篇blog《.NET 利用NPOI导出报告到Word》)转成PDF,首先发现Spire.PDF是商用付费的组件,如果不购买的话会存在水印,不好清除掉。其次,如果数据量比较大,导出到word的时候本身已经用了比较长的时间了,再对word转PDF的时候,又是一个耗时的动作,所以果断抛弃了这个投机取巧的方式.2.方案选型之前让一个毕业没多久的小朋友,使用过iTextSharp实现过导出报原创 2021-09-15 11:55:57 · 3036 阅读 · 2 评论 -
.NET 利用NPOI导出报告到Word
1. 使用GuGet引入NPOI包搜素NPOI,然后点击右边的安装即可,因为我这边安装过了,所以出现了卸载与更新,因为有了新的稳定版本所以出现了更新。2.导出DataTable到Word/// <summary> /// 导出文件到Word /// </summary> /// <param name="dataTable">数据集</param> /// <para.原创 2021-09-13 11:05:59 · 1933 阅读 · 0 评论 -
C# 实现二维码详解
二维码是什么二维码 QR Code,全称为:Quick Response Code,最早用于日本汽车制造业追踪零部件。QR现有40个标准版本,4个微型版本。相比一维码(也就是我们目前还在常用的条码),拥有更高密度的编码,可存储的信息量更大。一维码只能存储字母和数字,二维码可容纳多达1850个大写字母或者2710个数字或者1108个字符或者500多个汉字,比条码存储量多了几十倍。另外,二维码可以把图片、声音、文字、等可以数字化的信息进行编码。除此之外:二维码比一维码译码错误率要低得多(误码率不超过千分原创 2021-09-06 10:36:04 · 5846 阅读 · 0 评论 -
C#对接supervisor XML-RPC API 实现进程控制
前言最近在考虑如何实现平台的自动化运维监控,就是将系统的服务器、以及在服务器上运行的程序应用通过平台自行监控起来。在此之前,有用过supervisor,并且使用了supervisor自带的web也能实现对程序的监控,具体实现可以查看我之前的博客,但是自带的那个web界面风格太过于简陋,对于目前这个看颜的时代明显不太符合要求。还好supervisor自带了XML-RPC接口,让我们实现通过自己的Web平台实现程序的自行监控变得简单起来。...原创 2021-09-01 23:43:37 · 1438 阅读 · 2 评论 -
C# 不安全代码unsafe详解
C# 不安全代码unsafe很少用到,但它的作用却是非常重要的,有时我们需要使用指针去访问内存时就要用到它,虽然C#不提倡使用指针。unsafe可能有朋友在其它语言中见到过,比如java,没错他们很相似,下面一起来学习下吧。指针变量指针 是值为另一个变量的地址的变量,即,内存位置的直接地址。就像其他变量或常量,您必须在使用指针存储其他变量地址之前声明指针。指针变量声明的一般形式为:type *var-name;以下是有效的指针声明:int *ip; /* 指向一个整数 */do转载 2021-06-02 17:52:04 · 6630 阅读 · 0 评论 -
C#使用SSH.NET编写一个Linux操作客户端
1.前言因为公司的网关与流媒体是基于Linux,如何查询网关与流媒体程序的运行日志如果直接操作服务器,存在着很大的风险。所以准备做一个基于winformde日志查询工具,原创 2021-06-01 10:02:03 · 11295 阅读 · 7 评论 -
.NET 处理WEBAPI跨域问题
1.跨域问题导致的原因出于安全考虑,浏览器会限制脚本中发起的跨站请求,浏览器要求JavaScript或Cookie只能访问同域下的内容。由于这个原因,我们不同站点之间的数据访问会被拒绝。2.解决方案2.1.导入microsoft.aspnet.webapi.cors.dll点击项目下面的引入,选择“管理NuGet程序包”搜索microsoft.aspnet.webapi.cors点击“安装”即可。2.2.代码实现在App_Start文件夹下面的WebApiConf原创 2021-04-28 13:53:17 · 1768 阅读 · 0 评论 -
Winform做一个仿360界面
1.界面效果2.界面实现实现过程中用到了第三方插件CSkin.dll,基于.NET Framework 4进行开发2.1将CSkin.dll导入到VS工具箱在工具箱点击右键点击选择项,弹出“选择工具箱项”选择.NETFramework 组件选项卡,点击“浏览”,找到准备好的CSkin.dll,弹出如下界面点击“是”,VS会将CSkin.dll封装的组件加载到常规的下面,如下:至此,CSkin.dll导入工具箱成功2.2效果实现1.创建一个主窗.原创 2021-04-16 16:15:18 · 3063 阅读 · 1 评论 -
Winform实时刷新界面的正确姿势
1.前言最近在审核工程师代码的时候,一个简单的工厂自动化软件,结果看到了居然用Timer来刷新界面通过串口过来的数据...难怪工厂测试人员一直给我反馈说我们这个系统有时候会很卡!这样的方式来处理界面的呈现不卡死才出怪事了!2.如何界面上正确的体现实时交互数据需要了解一个接口:INotifyPropertyChanged意思是说,如果我这边的实体类数据发生了变化,会向客户端发送通知,告诉客户端来更新实体类的值,前提是实体类与界面上的客户端已经进行了绑定在实体类里面增加以下代码:原创 2021-03-13 17:57:12 · 8198 阅读 · 0 评论 -
C#编写一个简单的网关服务程序
定义了一个SocketHelper类,将主要实现进行封装public class SocketHelper { //服务端 private Socket ServerSocket = null; //tcp客户端字典 public Dictionary<string, Session> dic_ClientSocket = new Dictionary<string, Session>(); /原创 2020-09-29 14:03:11 · 2581 阅读 · 1 评论 -
使用NPOI实现WEB端报表数据导出到Excel
什么是NPOINPOI是一个开源的C#读写Excel、WORD的组件,可以在没有安装Office的情况下对Word或Excel文档进行读写操作。使用NPOI的优势(1)完全开源(2)包含了大部分EXCEL的特性(单元格样式、数据格式、公式等等)(3)同时支持文件的导入和导出(4)你不需要在服务器上安装微软的Office,可以避免版权问题(5)使用起来比Office PIA的API更加方便,更人性化。....简单报表导出使用因为我使用的是DataTable,所以这里仅对原创 2020-09-07 19:32:53 · 881 阅读 · 0 评论 -
激光打标机二次开发C#实例分享(附带实例源码)
前言本文章是针对金橙子激光打标机,使用C#进行二次开发分享。金橙子的打标机有两种不同的板卡,一般他们在卖打标机的时候如果不特殊说明使用的板卡是不支持二次开发的,如果想进行二次开发需要提前告诉他们购买支持二次开发的板卡,这个也是我血的教训。此篇文章是由于我之前写的一篇博客https://blog.youkuaiyun.com/qq_17486399/article/details/101363368,这里面说明了开发过程中可能遇到的问题,并没有实例代码讲解,很多同学就私信我问我要源码,这里我就把源码共享出来供大家原创 2020-06-29 10:08:06 · 10734 阅读 · 3 评论 -
C# 泛型理解
泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个非常重要的新功能。在此之前进行数据转化时候需要进行装箱与拆箱操作。我们知道装箱与拆箱需要消耗很大性能,泛型的引用主要优点是性能。在学习泛型之前我们先了解一下值类型,引用类型以及装箱,拆箱。值类型存储在栈上,引用类型存储在堆上。C#的类是引用类型,结构是值类型。.NET很容易把值类型转换成引用类型,例如int类型的值可以任意...原创 2018-06-07 17:31:05 · 1349 阅读 · 0 评论 -
WebApiThrottle限流框架使用手册
阅读目录:介绍 基于IP全局限流 基于IP的端点限流 基于IP和客户端key的端点限流 IP和客户端key的白名单 IP和客户端key自定义限制频率 端点自定义限制频率 关于被拒请求的计数器 在web.config或app.config中定义限制策略 获取API的客户端key 存储限流的数据 运行期间更新限制频率 限流的请求日志 用ThrottlingFilter、E...转载 2019-08-28 09:30:44 · 721 阅读 · 0 评论 -
字符转int后结果与预期不符
前言: class Program { static void Main(string[] args) { string b = "1000"; String[] c = new String[4]; for (int i = 0; i < 4; i++) ...原创 2019-09-23 14:49:44 · 1741 阅读 · 0 评论 -
C#二次开发金橙子MarkEzd.dll激光打标机
最近公司这边需要生产一批设备,壳体需要根据每个设备的唯一标识号+相关信息,动态生成二维码并利用激光打标机进行打印。他们给的控制软件呢,虽然功能比较强大,但是对于我们动态生成二维码信息的场景操作起来就比较操蛋了,需要人工修改二维码字符串信息,即便再工人非常谨慎的操作下,也很容易出错。后来我们通过程序自动控制二维码内容的生产,然后再进行打标,这样以来不但节约人工成本加快生产速度,也能防止人工操作出现的...原创 2019-09-25 15:41:27 · 9573 阅读 · 10 评论 -
DataGridView绑定List<T>,出现IndexOutOfRangeException异常
最近在测试系统的时候DataGridView出现IndexOutOfRangeException异常,对DataGridView绑定的数据源类型是List<T>。由于DataGridView我使用的是第三方插件DEV,开始我以为是我引用的第三方插件dll版本不兼容造成的,很快这个假象被推翻。最后在国外一个论坛上找到一个靠谱的解答。大致意思在向DataGridView绑定List类型...原创 2016-08-16 11:32:45 · 3412 阅读 · 0 评论 -
使用.NET Framework Client Profile 导致的引用失效
今天编译公司一个项目的时候出现了让我无比头痛的问题,我引用的动态库,总是编译报错,无法使用。一开始我以为动态库编译出了问题,反复重新编译,可是错误还是出现。无奈下网上查一下解决方案,终于找到问题所在。当我们使用Visual Studio2010创建工程时(已经安装了.Net Framework 3.5和 .Net Framework 4.0),默认的目标框架是.Net Framework...原创 2016-07-07 10:45:53 · 1511 阅读 · 0 评论 -
C#多线程编程总结
在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来。一个最直接的方法便是使用多线程。多线程编程的方式在WinForm开发中必不可少。本文介绍在WinForm开发中如何使用多线程,以及在线程中如何通过Control.Invoke方法返回窗体主线程执行相关操作。-. WinForm多线程编程1. new Threa转载 2020-07-20 11:26:36 · 4913 阅读 · 2 评论 -
简单理解虚方法与抽象方法
虚方法与抽象方法说明: 在C#中虚函数的概念与标准的OOP的概念相同:可以在派生类中重写虚函数。在方法调用时会调用该对象的合适方法。在C#中,函数在默认情况下不是虚拟的,但是可以显示的声明为virtual(构造函数除外)。这点与C++一样,从性能的角度考虑,除非显式指定,否则函数就不是虚拟的。但是在Java中,所有函数都是虚拟的。C++与C#在派生类重写的时候又有所不同,C#要使用ove...原创 2018-05-09 16:38:07 · 2847 阅读 · 0 评论 -
C# WinForm应用程序降低系统内存占用方法总结
好文章需要分享!背景:微软的 .NET FRAMEWORK 现在可谓如火如荼了。但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,其主要原因是因为.NET程序在启动时,是需要由JIT动态编译并加载的,这个加载会把所有需要的资源都加载进来,很多资源是只有启动时才用的。...转载 2021-05-21 09:14:19 · 1423 阅读 · 0 评论 -
简单实例了解抽象函数,接口的使用
当我们从初级程序员向中级程序员冲击的时候,学会抽象函数与接口的使用就显得非常重要了。下面我使用一个简单的小例子来说明一下他们的使用。首先我们先说明一下接口(下面是接口的说明:个人比较懒,直接用的百度百科里面的说明)1. 接口是一个引用类型,通过接口可以实现多重继承。2. C#中接口的成员不能有new、public、protected、internal、private等修饰符。...原创 2018-02-02 15:33:56 · 2430 阅读 · 0 评论 -
网络协议-TCP和UDP最完整的区别介绍
TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式 2.网络数据大多为短消息 3.拥有大量Clie转载 2017-11-18 16:53:32 · 1008 阅读 · 0 评论 -
如何区分单击和双击事件
当我们做Winform项目的时候,有可能会遇到这样的需求,当一个控件上既绑定了单击事件又绑定了双击事件,这样就会遇到一个问题,我们的双击事件没有触发之前,往往先触发了单击事件,影响到了用户的操作。如果让系统区分用户是进行了单击还是双击事件,就显得非常必要了。我们看一下微软上面是不是有解决办法。混滚点击操作using System;using System.ComponentM...原创 2017-10-27 17:53:14 · 6450 阅读 · 4 评论 -
C#多线程同步的几种方法
1.为什么使用同步多线程操作的时候我们知道要避免线程之间共享数据,但是很多时候我们要使用多线程并且还要访问同一块内存的数据,这是我们就必须要使用同步技术,确保一次只有一个线程访问和改变共享状态。下面我就来说一下同步所用的几种方法。2.Lock语句lock是一种比较好用的简单的线程同步方式,它是通过为给定对象获取互斥锁来实现同步的。它是通过线程之间的互斥来达到同步效果的。用法如下:...原创 2017-03-06 14:37:07 · 7267 阅读 · 0 评论