突然有一个需求,要求数组中数据在返回前进行随机打乱,于是就记录下来。
方法一
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)
{
...
5年前 (2020-03-31) 4459℃ 0评论
8喜欢
每年春节买票都成为相当重要的事情,快人一步基本能尽可能的抢占先机。使用抢票软件尽可能的减少手工操作,从而提高抢票的成功机率,由于时间误差也可会丧失先机,所以同步系统时间也是重要一步。为了可以自动的同步本地时间,所以就使用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年前 (2020-02-08) 3958℃ 4评论
4喜欢
简介
缓存的工作机制是先从缓存中读取数据,如果没有,再从慢速设备上读取实际数据并同步到缓存。计算机系统里天然就存在多级缓存系统,这是由于不同的硬件设备的访问速度以及容量大小不一致引起的一个选择。比如,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年前 (2020-01-16) 1129℃ 0评论
0喜欢
由于项目中需要实时消息,所以就使用了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年前 (2020-01-13) 3515℃ 0评论
30喜欢
因某些需求,需要将指定的对象序列化放到缓存中,在使用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 &...
5年前 (2020-01-11) 3606℃ 0评论
4喜欢
因某些情况需要在测试人员机器上安装.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.
根据错误信息得知应该是证书相关问题...
5年前 (2020-01-03) 1899℃ 0评论
12喜欢
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开...
5年前 (2019-12-16) 2785℃ 0评论
3喜欢
Topshelf
Topshelf是一个使用.NET 构建 Windows 服务的简单服务托管框架 。简化了服务的创建,允许开发人员创建一个简单的控制台应用程序,该应用程序可以使用 Topshelf 作为服务安装。原因很简单:调试控制台应用程序比调试服务容易得多。一旦应用程序经过测试并准备好生产,Topshelf 可以轻松地将应用程序安装为服务。
项目地址
GIT托管Topshelf源码Topshelf官方项目
转载请注明:清风亦平凡 » Topshelf构建Windows服务框架...
5年前 (2019-12-14) 1167℃ 0评论
0喜欢
背景后台任务和计划任务最终可能需要在基于微服务的应用程序或任何类型的应用程序中实现。 使用微服务体系结构的区别在于,可以实现一个微服务进程/容器来托管这些后台任务,以便根据需要对其进行减少/增加,或者甚至可以确保它运行该微服务进程/容器的单个实例。
一般在 .NET Core 中,我们将这些类型的任务称为托管服务 ,因为它们是托管在主机/应用程序/微服务中的服务/逻辑。 请注意,在这种情况下,托管服务仅表示具有后台任务逻辑的类。
前言
从 .net core 2.0 开始,开始引入 IHostedService,可以通过 IHostedService 来实现后台任务,但是只能在 WebHost 的基础上使用。从 .net core 2.1 开始微软引入通用主机(Generic Host),使得我们可以在不使用 Web 的情况下,也可以使用 IHostedSe...
5年前 (2019-12-07) 2679℃ 0评论
3喜欢
使用.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上,同时支持文件的...
6年前 (2019-06-12) 3170℃ 0评论
0喜欢
主要目的演示如何使用 ML.NET 为鸢尾花数据集构建聚类分析模型。了解ML.NET使用基本流程。
问题
问题的本质即基于花卉特征将鸢尾花数据归入不同的组。 这些特征包括:花萼的长度和宽度以及花瓣的长度和宽度。 需通过这些特征了解数据集的结构,并预测数据实例与此结构的拟合相似分类。
创建控制台应用程序
打开 Visual Studio。 从菜单栏中选择“文件” > “新建” > “项目”。 在“新项目”对话框中,依次选择“Visual C#”和“.NET Core”节点。 然后,选择“控制台应用程序(.NET Core)”项目模板。 在“名称”文本框中,键入“MLNet”,然后选择“确定”按钮 在项目中创建一个名为“数据”的目录来保存数据集和模型文件: 在“解决方案资源管理器”中,右键单击项目,然后选择“添加”...
6年前 (2019-05-27) 1079℃ 0评论
0喜欢
ML.NET 是一个跨平台框架且允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学习语言(如R和Python)开发的模型,并将它们集成到用C#等语言编写的企业应用程序中需要付出相当大的努力。ML.NET填平了机器学习专家和软件开发者之间的差距,从而使得机器学习的平民化,即使没有机器学习背景的人们能够建立和运行模型。通过为.NET创建高质量的机器学习框架,微软已经使得将机器学习转化为企业(或通过Xamarin移动应用程序)变得更容易。这是一种使机器学习更加可用的形式。
ML.NET 由微软研究院研发,在过去的十年里发展成为一个重要的框架,它在微软的许多产品团队中都有使用,比如 Windows、必应、Azure 等等。
使用ML.NET可以解决哪些类型的问题
基于微软内部W...
6年前 (2019-05-26) 1739℃ 0评论
0喜欢
类与类的UML表示
在UML 2.0的13中图形当中,类图是使用最为广泛的图形之一,它用于描述系统中所包含的类以及他们之间的相互关系,每一个设计模式的结构都可以使用类图进行表示。类图帮助人们简化对系统的理解,是系统分析和设计阶段的重要产物,也是系统编码的重要模型依据。
1.类
类(Class)封装了数据和行为。是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得比较好的类通常有且仅有一种职责。在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。类的属性即类的数据职责,类的操作即类的行为职责。设计类是面向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。
在软件系统运行时,类将被实例化为对象(Object),对象对应于某个...
6年前 (2019-04-27) 1363℃ 0评论
3喜欢
...
6年前 (2019-03-23) 2118℃ 0评论
25喜欢
因为使用.net core写了一些简单的控制台应用程序,并且需要一些配置信息。于是想是用.net framework中的 ConfigurationManager进行处理,发ConfigurationManager在.net core 中不被支持。
.net core配置说明
.NET CORE 配置主要涉及三个对象,它们分别是Configuration、ConfigurationBuilder和ConfigurationProvider,Configuration对象承载着在编程过程中使用的配置信息,ConfigurationProvider则是配置信息原始数据源的提供者,两者之间沟通由ConfigurationBuilder来完成,它利用ConfigurationProvider提取源数据将其转换为Configuration对象。
IConfigurationR...
6年前 (2019-03-12) 1263℃ 0评论
1喜欢
在.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”字符集不被...
6年前 (2019-03-10) 1623℃ 0评论
1喜欢
朋友发消息说他老婆公司资料无法拷贝出来,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">
...
6年前 (2019-01-10) 1995℃ 0评论
1喜欢
前提背景在清理以前相关代码时候,发现了之前使用表驱动的部分函数。所以,在这里简要的记录一下。
定义
数据驱动编程的核心出发点是相对于程序逻辑,人类更擅长于处理数据。数据比程序逻辑更容易驾驭,所以我们应该尽可能的将设计的复杂度从程序代码转移至数据。
所谓表驱动法(Table-Driven Approach),简单讲是指用查表的方法获指定的数据内容。
常用的查表方式
直接查询索引查询 分段查询
如果要把星期几用中文输出,无论是用if语句或switch语句都比较臃肿,如下:
static string GetChineseWeek(DayOfWeek week)
{
switch (week)
{
case DayOfWeek.Monday:...
6年前 (2019-01-06) 1279℃ 0评论
9喜欢
因某些原因需要在图片上添加文字水印、图片水印、水印旋转、可以指定水印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...
6年前 (2019-01-04) 4701℃ 2评论
26喜欢
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 声明方法...
6年前 (2018-12-27) 2963℃ 0评论
17喜欢
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 ...
6年前 (2018-12-26) 3432℃ 0评论
14喜欢
情况背景
之前朋友让模仿的一个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...
6年前 (2018-12-17) 1247℃ 0评论
6喜欢
最近使用.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:/e...
6年前 (2018-12-14) 3382℃ 2评论
13喜欢
什么是MIME
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
它是一个互联网标准,扩展了电子邮件标准,使其能够支持:非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。
这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822转变而来的RFC 2822,这些旧标准规定电子邮件标准并不允许在邮件消息中使用7...
6年前 (2018-12-04) 3182℃ 0评论
2喜欢
SuperSocket
SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。官方地址:http://www.supersocket.net/
功能特点
高性能的事件驱动通信;
非常简单易用; 你只需要通过创建几个类就能获得一个健壮的 Socket 服务器;
内置的命令行协议让你能够迅速创建一个网络命令行接口服务器;
强大且高性能的协议解析实现工具帮你简化了网络数据的分析工作;
灵活的配置功能和友好的配置 API;
多监听器支持; 让你在一个服务器实例内监听多个端口;
多服务器实例托管的...
6年前 (2018-12-02) 1252℃ 0评论
0喜欢