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

 分类:代码世界

.net core配置信息appsettings读取

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

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

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”字符集不被...

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

莫名其妙的网站跳转

昨天19:50左右突然收到之前同事的一条微信消息,发来一个网址。点开网址之后呈现的是一个信息内容网站,之后跳转到一个时时彩的网站。当时直接就关掉了,随后就问下他是不是被盗了账号,是不是使用了自动清理微信好友的公众号!最后得知其也在帮朋友查找这个网站跳转的问题,故发给我看一下。 背景由来 被恶意跳转的网站 随后使用Chrome开发人员工具看了下网页加载,基本就确定是被注入了JavaScript代码,至于注入了什么地方就需要另行查证。在页面进行了相关的查证,并没有发现任何JavaScript的跳转代码。最后考虑外部文件,果然发现了恶意的跳转代码。如下图: 被插入的恶意跳转 发现被插入的代码以后,立即告知了他。他即刻进行了修改。强制刷新以后,问题不再出现。奈何几分钟后此问题再次复现,并且位置已经发生改变。这一定是被入侵或者是挂了马的,随后将推测告知并让其采用其他...

5年前 (2019-03-07) 635℃ 0评论 0喜欢

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"> ...

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

Docker容器日志清理

Docker会将容器应用标准化输出的内容做为日志进行记录,并永久保存在磁盘上。久而久之容器日志占用磁盘空间就越来越大。使用以下命令可以查看指定容器日志,如下: docker logs -f containerId 日志位置 对应的Docker容器的日志位置一般如下: /var/lib/docker/containers/containerid/containerid-json.log containerid是指应用容器的id 通过以下命令确定要清理日志的容器id,如下: #查找正在运行的容器列表docker ps#根据容器列表的CONTAINER ID 来查找完整的容器iddocker inspect containerid 查找容器id 日志清理 cat /dev/null >/var/lib/docker/cont...

5年前 (2019-01-07) 749℃ 0评论 0喜欢

数据驱动之表驱动编程

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

5年前 (2019-01-06) 765℃ 0评论 9喜欢

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...

5年前 (2019-01-04) 3255℃ 2评论 26喜欢

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 声明方法...

5年前 (2018-12-27) 2119℃ 0评论 17喜欢

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 ...

5年前 (2018-12-26) 2535℃ 0评论 14喜欢

Docker 入门教程

2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。 一、环境配置的难题 软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。 如果某些老旧的模块与当前环境不兼容,那就麻烦了。开发者常常会说:”它在我的机器可以跑了”(It works on my machine),言下之意就是,其他机器很可能跑不了...

5年前 (2018-12-22) 537℃ 0评论 0喜欢

CentOS 安装 Docker 应用容器引擎

Docker支持以下的CentOS版本: CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本 CentOS 安装Docker的必要条件 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 使用 yum 安装(CentOS 7) Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本 uname -r 安装 Docker ...

5年前 (2018-12-20) 674℃ 0评论 5喜欢

解决CentOS系统下docker info 出现的警告

CentOS系统下执行docker info后出现两条警告, 如下: WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled 如下图: 解决办法,编辑:/etc/sysctl.conf  并添加如下内容: net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1 编辑保存之后,执行如下内容: sysctl -p 完成之后,再次使用docker info进行查看就发现已经没有这两条警告了,这样此问题就解决了!这里做个记录吧!!! 转载请注明:清风亦平凡 » 解决CentOS系统下docker inf...

5年前 (2018-12-18) 715℃ 0评论 4喜欢

.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...

5年前 (2018-12-17) 837℃ 0评论 6喜欢

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:/e...

5年前 (2018-12-14) 2122℃ 2评论 13喜欢

JSON Web Token 入门教程

SON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 一、跨域认证的问题 联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。 5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。 这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的服务导向架构,就要求 session 数据共享,每台服务器都能够读取 session。 举例来说,A 网站和 B 网站是同一家公司的关联服务。现在要求,用...

5年前 (2018-12-09) 785℃ 0评论 0喜欢

Docker for Windows 更改磁盘镜像位置

相关问题 在windows10下安装docker for windows,随着用docker pull image文件后,虚拟机的镜像越来越大,但C盘的容量越来越小了,于是就想修改下相关路径到其他盘符。 原因分析 windows上安装的docker其实本质上还是借助与windows平台的hyper-v技术来创建一个linux虚拟机(默认使用的镜像是MobyLinuxVM),你执行的所有命令其实都是在这个虚拟机里执行的,所以所有pull到本地的image都会在虚拟机的Virtual hard disks目录的文件中,这个文件就是虚拟硬盘文件。如果要想改变路径只需要在hyper-v管理器里设置就可以了。默认的安装路径是C:\Users\Public\Documents\Hyper-V\Virtual hard disks下。 解决方案 一、当你的刚刚安装docker for windows后或...

5年前 (2018-12-08) 1786℃ 0评论 2喜欢

Docker for Windows 设置的Shared Drives 设置不生效

Docker中的settings里的Shared Drives 选择对应盘符后,点击Apply后无法生效。试了两遍都不行,这是有问题的 。 解决办法 win+R ,键入gpedit.msc,出现如下界面,找到高亮处的网络访问:本地账户的共享和安全模型,选择如图中的 经典 选项       转载请注明:清风亦平凡 » Docker for Windows 设置的Shared Drives 设置不生效 ...

5年前 (2018-12-07) 911℃ 0评论 3喜欢

C#获取文件的文件的MIME Type(Content-Type)的方法

什么是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...

5年前 (2018-12-04) 1928℃ 0评论 2喜欢

js Date 操作之神奇的 date

Date 对象算是较常用的对象之一,但很多人完全不会操作,就算一些简单的操作也用 moment 而不自己尝试一下。本次分享下 Date 中的 date 使用技巧,希望能给大家启发。 MDN官网介绍 setDate()方法根据本地时间来指定一个日期对象的天数。如果 dayValue 超出了月份的合理范围,setDate 将会相应地更新 Date 对象。例如,如果为 dayValue 指定0,那么日期就会被设置为上个月的最后一天。 获取月份天数 // 获取月份天数 function getMonthDayCount(year, month) { return new Date(year, month, 0).getDate(); } console.log(getMonthDayCount(2017, 10)); // 31 Date 第三个参数的本质跟 setDate 是...

5年前 (2018-12-03) 696℃ 0评论 3喜欢

C#按照像素对图片进行放大

C#对图片进行放大且按照像素,使用C#指针(要启用非安全代码)。   using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.IO; namespace ImageMagnifier { public class MagnifierImage { private int multiple = 2; public int Multiple { get { return multiple; } set { multiple = value; } } public Magnifier...

5年前 (2018-12-01) 1121℃ 0评论 0喜欢

C#实现共享内存

共享内存 共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。 C#  调用Win32 系统APi实现共享内存: public class ShareMem { [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg,...

5年前 (2018-11-30) 2640℃ 0评论 19喜欢

JQuery特效单击漂浮文字

在一些博客上遇到点击鼠标的时候有文字或者符号漂浮,感觉挺不错的。如下图: JQuery代码实现类似效果: var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e){ var a = new Array("Javascript", "DotNet", "C#", "Java", "C", "C++", "HTML", "CSS", "NodeJS", "PHP", "SQL"); var $i = $("<span/>").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({...

6年前 (2018-11-22) 781℃ 0评论 0喜欢

Windows10使用Hyper-V创建虚拟机

Windows 10创建虚拟机并安装其操作系统。 从开始菜单打开Hyper-V管理器。 在Hyper-V管理器中,在右侧的“ 操作”菜单中单击“ 快速创建 ” 。 自定义您的虚拟机 单击“ 连接”以启动虚拟机。不用担心编辑设置,您可以随时返回并更改它们。 自定义您的虚拟机: (可选)为虚拟机命名。 选择虚拟机的安装介质。您可以从.iso或.vhdx文件进行安装。如果要在虚拟机中安装Windows,则可以启用Windows安全启动。否则将其取消选中。 设置网络。如果您有现有的虚拟交换机,则可以在网络下拉列表中进行选择。如果您没有现有的交换机,您将看到一个用于设置自动网络的按钮,该按钮将自动配置虚拟网络。 打开Hyper-V管理器 快速创建 一、选择“快速创建” 二、选择“本地安装源”,右侧选择本地的ISO镜像文件。那样选择Windows  dev Environment 和 Ub...

6年前 (2018-11-21) 1224℃ 0评论 0喜欢

Windows10开启Hyper-V虚拟机管理器

Hyper-V Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化。Hyper-V是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。Hyper-V设计的目的是为广泛的用户提供更为熟悉以及成本效益更高的虚拟化基础设施软件,这样可以降低运作成本、提高硬件利用率、优化基础设施并提高服务器的可用性。 运行Hyper-V虚拟机的要求 方法一:打开“系统信息”窗口查看 Win + R 快捷键调出“运行”对话框,输入“msinfo32”,确定,即可打开“系统信息”窗口。 在任务栏中的Cortana搜索框中输入“系统信息”即可搜索到“系统信息桌面应用”,点击即可打开。 这两种打开“系统信息”窗口的方法,显而易见,第二种更简单,不需要记忆命令,所以可见微软在Windows10中引入的Cortana数字助手的强大方便 打开的“系统信息”窗口...

6年前 (2018-11-20) 1339℃ 0评论 2喜欢