在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

标签:dotnet

C#

C#实现图片压缩

有些时候会在博客中分享一些拍摄的照片,而这些拍摄照片的大小均在1.5M以上,随随便便分享点图片占用的存储空间就有点惊人。为了节省存储空间,避免尽早将剩余存储空间消耗完毕,所以就考虑压缩一下图片。这里来做下记录。 using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace ImageCompress { class Program { static void Main(string[] args) { string path = $"{Path.Combine(Directory.GetCurrentDirectory(), "image")}"; Compre...

3个月前 (04-03) 70℃ 0评论 2喜欢

C#

C#实现大文本文件切割/分割

因某些原因,需要打开日志进行排查,本来是很简单的事情,当看到日之后就觉得力不从心。日志文件太大了,将近5G,自己电脑打不开这种大文件。一开始就想到了文件分割,然后就再网上找一些分割工具,找了几个分割工具杀毒软件都报毒。找工具也真是个麻烦的事情,找到半天没有见到一个合适的。其中一个不报毒(主动查杀了一次)的,双击后也打不开,这个时候我就怀疑自己中招(中毒)了,到底有没有中招暂时不太清楚,所以赶紧利用杀毒软件查杀病毒。在查杀病毒的期间自己就动手使用C#写一个简单的文本文件分割工具。这里就记录一下. using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Threading.Tasks; namespace TxtFileCutAp...

3个月前 (04-03) 79℃ 0评论 0喜欢

C#

C#随机打乱List数组中项的顺序

突然有一个需求,要求数组中数据在返回前进行随机打乱,于是就记录下来。 方法一 public static void ListRandom<T>(List<T> sources) { Random rd = new Random(); int index = 0; T temp; for (int i = 0; i < sources.Count; i++) { index = rd.Next(0, sources.Count - 1); if (index != i) { ...

3个月前 (03-31) 92℃ 0评论 1喜欢

C#

使用C#通过NTP同步本地Windows系统时间

每年春节买票都成为相当重要的事情,快人一步基本能尽可能的抢占先机。使用抢票软件尽可能的减少手工操作,从而提高抢票的成功机率,由于时间误差也可会丧失先机,所以同步系统时间也是重要一步。为了可以自动的同步本地时间,所以就使用C#实现一个时间同步小工具。 只针对Windows系统的时间同步且使用抢票平台的不在此列。 using System; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; namespace WindowsDateTimeSynchronization { public class Da...

5个月前 (02-08) 89℃ 0评论 0喜欢

IT相关

基于缓存系统的描述

简介 缓存的工作机制是先从缓存中读取数据,如果没有,再从慢速设备上读取实际数据并同步到缓存。计算机系统里天然就存在多级缓存系统,这是由于不同的硬件设备的访问速度以及容量大小不一致引起的一个选择。比如,CPU到L1/L2/L3到内存到磁盘的访问方式就是一个典型的多级缓存的例子。当CPU需要数据的时候,它首先到L1里找,如果没有找到,则查找L2/L3,如果还是没有找到,则再到内存里找,如果还没有,再到磁盘里查找。不同层级的缓存的访问速度和容量大小各不相同,简要对比如下所示: 名称 访问速度 通常容量大小 L1 1.3纳秒 12组每组32KB数据加32KB代码 L2 3.92纳秒 32组每组256KB L3 11.11纳秒 30MB DDR4 内存 ...

5个月前 (01-16) 100℃ 0评论 0喜欢

.net core

ASP.NET Core 配置跨域(CORS)

由于项目中需要实时消息,所以就使用了ASP.NET(Core) SignalR实时通讯库。因为业务服务与通讯服务是独立的,所以涉及到跨域的问题, 浏览器抛出的异常非常明显,这个是明显跨域相关内容。 报错信息如下: Access to XMLHttpRequest at ‘http://192.168.2.13:5005/api/v1/commommessage/messageHub/negotiate’ from origin ‘http://127.0.0.1:5500’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control...

5个月前 (01-13) 331℃ 0评论 10喜欢

DotNet

Newtonsoft.Json序列化对象时循环引用异常处理

因某些需求,需要将指定的对象序列化放到缓存中,在使用Newtonsoft.Json序列化时候报错,异常信息清晰明显就是循环引用问题。具体错误如下: 详细异常如下: fail: System.Exception[-2146233088] Self referencing loop detected for property ‘Ancestor’ with type ”. Path ‘Descendants[0]’. Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property ‘Ancestor’ with type ‘*’. Path &...

6个月前 (01-11) 121℃ 0评论 0喜欢

IT相关

Windows 7 SP1安装.net core2.1无法安装问题

因某些情况需要在测试人员机器上安装.net core 2.1,系统为Windows 7 SP1。安装.net core2.1,出现 sfx x64.cab has an invalid digital signature错误,安装不成功。错误信息如下: A file that is required cannot be installed becquse the cabinet file C:\ProgramData\Package Cache\{3551F085-7544-3527-84BA-9706CB1379A1}v2.1.14.0\sfx x64.cab has an invalid digital signature. This may indicate that the cabinet file is corrupt. 根据错误信息得知应该是证书相关问题...

6个月前 (01-03) 224℃ 0评论 3喜欢

.net core

使用Quartz.NET实现定时(计划)任务

Quartz.NET Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。 官网:http://www.quartz-scheduler.net/ 源码:https://github.com/quartznet/quartznet 示例:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html 其实Quartz是一个完全由java编写的开源作业调度框架,Quartz是OpenSymphony开...

6个月前 (12-16) 104℃ 0评论 0喜欢

其他分享

Topshelf构建Windows服务框架

Topshelf  Topshelf是一个使用.NET 构建 Windows 服务的简单服务托管框架 。简化了服务的创建,允许开发人员创建一个简单的控制台应用程序,该应用程序可以使用 Topshelf 作为服务安装。原因很简单:调试控制台应用程序比调试服务容易得多。一旦应用程序经过测试并准备好生产,Topshelf 可以轻松地将应用程序安装为服务。 项目地址 GIT托管Topshelf源码Topshelf官方项目 转载请注明:清风博客 » Topshelf构建Windows服务框架...

6个月前 (12-14) 77℃ 0评论 0喜欢

.net core

.net core 使用 IHostedService 实现定时执行的任务

背景后台任务和计划任务最终可能需要在基于微服务的应用程序或任何类型的应用程序中实现。 使用微服务体系结构的区别在于,可以实现一个微服务进程/容器来托管这些后台任务,以便根据需要对其进行减少/增加,或者甚至可以确保它运行该微服务进程/容器的单个实例。 一般在 .NET Core 中,我们将这些类型的任务称为托管服务 ,因为它们是托管在主机/应用程序/微服务中的服务/逻辑。 请注意,在这种情况下,托管服务仅表示具有后台任务逻辑的类。 前言 从 .net core 2.0 开始,开始引入 IHostedService,可以通过 IHostedService 来实现后台任务,但是只能在 WebHost 的基础上使用。从 .net core 2.1 开始微软引入通用主机(Generic Host),使得我们可以在不使用 Web 的情况下,也可以使用 IHostedSe...

7个月前 (12-07) 140℃ 0评论 1喜欢

IT相关

.NET Core api部署在IIS上405-Method Not Allowed

使用.net core api作为接口对外提供数据,在IIS Express上测试没有发现问题,部署到IIS后出现了405-Method Not Allowed。( 请求方式为DELETE ) .如下图: 由上图的错误得知,此问题应该是IIS未允许当前请求方式。首先查看aspNetCore在IIS中是否限制了请求方式,经过查看并未发现不被允许的请求方式。处理程序映射=>aspNetCore 通过了解 IIS拒绝PUT和DELETE请求是由默认注册的一个名为WebDAVModule的自定义HttpModule导致的。WebDAV的全称为Web-based Distributed Authoring and Versioning,它是一个在多用户之间辅助协同编辑和管理在线文档的HTTP扩展。该扩展使应用程序可以直接将文件写到Web Server上,同时支持文件的...

1年前 (2019-06-12) 400℃ 0评论 0喜欢

.net core

ML.NET 来对鸢尾花分类

主要目的演示如何使用 ML.NET 为鸢尾花数据集构建聚类分析模型。了解ML.NET使用基本流程。 问题 问题的本质即基于花卉特征将鸢尾花数据归入不同的组。 这些特征包括:花萼的长度和宽度以及花瓣的长度和宽度。 需通过这些特征了解数据集的结构,并预测数据实例与此结构的拟合相似分类。 创建控制台应用程序 打开 Visual Studio。 从菜单栏中选择“文件” > “新建” > “项目”。 在“新项目”对话框中,依次选择“Visual C#”和“.NET Core”节点。 然后,选择“控制台应用程序(.NET Core)”项目模板。 在“名称”文本框中,键入“MLNet”,然后选择“确定”按钮 在项目中创建一个名为“数据”的目录来保存数据集和模型文件: 在“解决方案资源管理器”中,右键单击项目,然后选择“添加”...

1年前 (2019-05-27) 187℃ 0评论 0喜欢

机器学习

一个开源且跨平台的.NET机器学习框架ML.NET

ML.NET 是一个跨平台框架且允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学习语言(如R和Python)开发的模型,并将它们集成到用C#等语言编写的企业应用程序中需要付出相当大的努力。ML.NET填平了机器学习专家和软件开发者之间的差距,从而使得机器学习的平民化,即使没有机器学习背景的人们能够建立和运行模型。通过为.NET创建高质量的机器学习框架,微软已经使得将机器学习转化为企业(或通过Xamarin移动应用程序)变得更容易。这是一种使机器学习更加可用的形式。 ML.NET 由微软研究院研发,在过去的十年里发展成为一个重要的框架,它在微软的许多产品团队中都有使用,比如 Windows、必应、Azure 等等。 使用ML.NET可以解决哪些类型的问题 基于微软内部W...

1年前 (2019-05-26) 133℃ 0评论 0喜欢

UML

UML类图

类与类的UML表示 在UML 2.0的13中图形当中,类图是使用最为广泛的图形之一,它用于描述系统中所包含的类以及他们之间的相互关系,每一个设计模式的结构都可以使用类图进行表示。类图帮助人们简化对系统的理解,是系统分析和设计阶段的重要产物,也是系统编码的重要模型依据。 1.类 类(Class)封装了数据和行为。是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得比较好的类通常有且仅有一种职责。在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。类的属性即类的数据职责,类的操作即类的行为职责。设计类是面向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。 在软件系统运行时,类将被实例化为对象(Object),对象对应于某个...

1年前 (2019-04-27) 256℃ 0评论 3喜欢

C#

C#访问https “未能创建 SSL/TLS 安全通道”异常

C#使用HttpClient访问https请求被中止: 未能创建 SSL/TLS 安全通道(Could not create SSL/TLS secure channel)。 添加回调:ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationCallback);还不行, 添加: ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; private bool CheckValidationCallback(object sender, X509Certificate certificate,...

1年前 (2019-03-23) 362℃ 0评论 3喜欢

.net core

.net core配置信息appsettings读取

因为使用.net core写了一些简单的控制台应用程序,并且需要一些配置信息。于是想是用.net framework中的 ConfigurationManager进行处理,发ConfigurationManager在.net core 中不被支持。 .net core配置说明 .NET CORE 配置主要涉及三个对象,它们分别是Configuration、ConfigurationBuilder和ConfigurationProvider,Configuration对象承载着在编程过程中使用的配置信息,ConfigurationProvider则是配置信息原始数据源的提供者,两者之间沟通由ConfigurationBuilder来完成,它利用ConfigurationProvider提取源数据将其转换为Configuration对象。 IConfigurationR...

1年前 (2019-03-12) 248℃ 0评论 0喜欢

.net core

HttpClient在.net Core 中报字符集报错的问题

在.net core 中使用了HttpClient库进行网络访问,有些网站成功,有些网络失败。报错内容如下: The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set. ‘gbk’ is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.Parameter name: name 报错 详细错误 “gbk”字符集不被...

1年前 (2019-03-10) 313℃ 0评论 0喜欢

.net core

ASP.NET Core简单的文件上传

朋友发消息说他老婆公司资料无法拷贝出来,U盘以及常见的网盘全部无效。问我有没有其他办法,于是就使用asp.net core做了一个最简单的文件上传来试一试。理论上应该可行,因为新的上传网站以及页面元素没有在他们公司网监出现过,死马当作活马医吧!离职最后一天的最后2个小时了,时间紧任务哦! 对话 ASP.NET MVC操作支持使用简单模型绑定对较小文件进行单个或者多个文件上传。 使用模型绑定上传小文件 要上传较小的文件,可以使用多部分HTML表单或使用JavaScript构建POST请求。 <form action="/Home/UploadFiles" method="post" name="upload" enctype="multipart/form-data"> <div class="form-group"> ...

1年前 (2019-01-10) 364℃ 0评论 0喜欢

C#

数据驱动之表驱动编程

前提背景在清理以前相关代码时候,发现了之前使用表驱动的部分函数。所以,在这里简要的记录一下。 定义 数据驱动编程的核心出发点是相对于程序逻辑,人类更擅长于处理数据。数据比程序逻辑更容易驾驭,所以我们应该尽可能的将设计的复杂度从程序代码转移至数据。 所谓表驱动法(Table-Driven Approach),简单讲是指用查表的方法获指定的数据内容。 常用的查表方式 直接查询索引查询 分段查询 如果要把星期几用中文输出,无论是用if语句或switch语句都比较臃肿,如下: static string GetChineseWeek(DayOfWeek week) { switch (week) { case DayOfWeek.Monday:...

1年前 (2019-01-06) 243℃ 0评论 9喜欢

C#

C#在图片指定位置添加水印(支持透明、旋转)

因某些原因需要在图片上添加文字水印、图片水印、水印旋转、可以指定水印9个位置(左上角、中上、右上角、左中、居中、右中、左下角、中下、右下角),所以这里做个简单的记录。本想在互联网上找到相关代码直接使用,经过一些测试发现并不适合目前的要求,所以就重新整理代码。 未加水印前 添加水印后 代码实现 using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Watermarker { /// <summary> /// 水印设置 /// </summary> public clas...

1年前 (2019-01-04) 614℃ 2评论 17喜欢

C#

C#封装常用的Windows API函数

Windows API Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。 C#调用Windows API C#调用Windows API之调用格式,在.Net Framework SDK文档中是比较零散。但在C#中使用Windows API最常见的方式是用DllImport 来进行处理,并 使用 C# 关键字 static 和 extern 声明方法...

2年前 (2018-12-27) 499℃ 0评论 12喜欢

C#

C#实现图片转Base64编码

Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法。 Base的索引表 Base64的索引表,字符选用了”A-Z、a-z、0-9、+、/” 64个可打印字符。数值代表字符的索引,这个是标准Base64编码规定的,如下图: base64编码表 Base64的原理 Base64的码表只有64个字符, 如果要表达64个字符的话,使用6的bit即可完全表示(2的6次方为64)。 因为Base64的编码只有6个bit即可表示,而正常的字符是使用8个bit表示, 8和6的最小公倍数是24,所以4个Base64字符可以表示3个标准的ascll字符; 如果是字符串转换为Base64码, 会先把对应的字符串转换为ascll码表对应的数字, 然后再把数字转换为2进制。 图片转化为base64 图片的 base64 ...

2年前 (2018-12-26) 496℃ 0评论 3喜欢

C#

.net C#实现IE浏览器缓存清除

情况背景 之前朋友让模仿的一个QQ群验证的Windows Form程序,需要加清除缓存的功能。关于判断登录的QQ是否已经加入指定的QQ群点击查看。由于使用的是.net 自带的WebBrower控件,其本身也是IE浏览器,所以只需要清除IE浏览器的缓存就可以了。这里调用RunDll32.exe来实现IE浏览器的缓存清除! QQ 群验证 代码实现 public void IEClear() { try { Process process = new Process(); process.StartInfo.FileName = "RunDll32.exe"; process.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 255"; process.Sta...

2年前 (2018-12-17) 335℃ 0评论 3喜欢

Docker

docker容器与Linux主机环境获取时间不一致

最近使用.net core写了一个简单的网站存活监测小程序,每十分钟进行一次检测,如果异常或者网站无法访问就通过腾讯云短信服务进行通知。在Windows 和 Linux 系统中运行均正常,但放到Linux系统下Docker环境中,获取到的时间就慢8个小时,默认似乎不是东八区了。记得之前也遇到过这个问题,使用了一个.net Core类库(NodaTime)解决的,详情请见:.net Core 中DateTime在Linux Docker中与Windows时间不一致 。但是这次不想用多余的类库来解决,所以通过同步时间来解决。 共享主机的localtime 创建容器的时候指定启动参数,挂载localtime文件到容器内 ,保证两者所采用的时区是一致的。 docker run --name qq -v /etc/localtime:/etc/localtime -d dotn...

2年前 (2018-12-14) 381℃ 2评论 6喜欢