为表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,国务院今天发布公告,决定2020年4月4日举行全国性哀悼活动。在此期间,全国和驻外使领馆下半旗志哀,全国停止公共娱乐活动。4月4日10时起,全国人民默哀3分钟,汽车、火车、舰船鸣笛,防空警报鸣响。而各大网站均实现全站灰度,腾讯视频、爱奇艺停止所有娱乐类型视频入口。
实现全站灰度可以使用CSS或者使用其他JS插件处理,例如:grayscale js。本博使用的是CSS处理全站灰度,代码示例如下:
html {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
f...
5年前 (2020-04-04) 1326℃ 0评论
2喜欢
有些时候会在博客中分享一些拍摄的照片,而这些拍摄照片的大小均在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...
5年前 (2020-04-03) 3333℃ 0评论
7喜欢
因某些原因,需要打开日志进行排查,本来是很简单的事情,当看到日之后就觉得力不从心。日志文件太大了,将近5G,自己电脑打不开这种大文件。一开始就想到了文件分割,然后就再网上找一些分割工具,找了几个分割工具杀毒软件都报毒。找工具也真是个麻烦的事情,找到半天没有见到一个合适的。其中一个不报毒(主动查杀了一次)的,双击后也打不开,这个时候我就怀疑自己中招(中毒)了,到底有没有中招暂时不太清楚,所以赶紧利用杀毒软件查杀病毒。在查杀病毒的期间自己就动手使用C#写一个简单的文本文件分割工具。这里就记录一下.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
namespace TxtFileCutAp...
5年前 (2020-04-03) 2681℃ 0评论
8喜欢
突然有一个需求,要求数组中数据在返回前进行随机打乱,于是就记录下来。
方法一
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) 5130℃ 0评论
8喜欢
因业务需求可能会导致数据存储结构发生变化,当数据保存到关系型数据库中时必将带来表结构的变化,这就涉及到对表中的列进行新增、修改、删除等操作。
在大多情况下数据库脚本执行必须是可重复的,因此对数据库表的任何表变动都需要进行判断,然而在MySQL数据库中通过SQL脚本进行列的变更就不太便利。下面记录一下曾经用到的一些MySQL脚本:
USE DATABASE NAME; -- 这里要换数据库名称
DROP PROCEDURE IF EXISTS Operate_ColumnADD_Update_Delete;
DELIMITER$$
-- 1表示新增列,2表示修改列类型,3表示删除列
CREATE PROCEDURE Operate_ColumnADD_Update_Delete(TableName VARCHAR(50),ColumnName VARCHAR(50)...
5年前 (2020-03-31) 1166℃ 0评论
3喜欢
由于Linux Centos 官方的源在国外服务器, 使用官方源速度慢的出奇,所以要更换为国内的源,于是有了以下内容。
首先备份原有Linux Centos 7的源/etc/yum.repos.d/CentOS-Base.repo。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
某些Centos镜像安装后可能没有wget,可以尝试curl 进行操作,如下
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.al...
5年前 (2020-02-27) 1103℃ 0评论
0喜欢
hyper-v虚拟机安装了centos7之后并不能上网,有些测试就无法继续进行,接下来就需要进行一些配置。
新建虚拟交换机
下图紧接着2、3、4步。
设置名称并设置连接类型。
设置网络适配器。
启动虚拟机系统Centos并登录, 进入到network-scripts目录 。
cd /etc/sysconfig/network-scripts
vi ifcfg-eth0
将ONBOOT=no改为 ONBOOT=yes保存后重启网络。
systemctl restart network
转载请注明:清风亦平凡 » hyper-v虚拟机安装Linux Centos 7 网络配置...
5年前 (2020-02-26) 2771℃ 0评论
1喜欢
点击ESC进入“正常模式”,然后输入“:”,进入“命令模式”。此时屏幕的下方会出现一个冒号,你可以输入以下命令,并按“ENTER”执行:
:q 退出(:quit的缩写) :q! 退出且不保存(:quit!的缩写) :w 保存文件但不退出vi :w file 将修改另外保存到file中,不退出vi :w! 强制保存,不退出vi :wq 保存并退出 :wq! 保存并退出即使文件没有写入权限(强制保存退出) :x 保存并退出(类似:wq,但是只有在有更改的情况下才保存) :exit 保存并退出(和:x相同) :qa 退出所有(:quitall的缩写) :cq 退出且不保存(即便有错误)
转载请注明:清风亦平凡 » Linux中退出vi编辑模式...
5年前 (2020-02-24) 1562℃ 0评论
2喜欢
在学习或者工作当中,很大机率用到CentOS系统。在此之前使用centos基本上都是阿里、腾讯云的虚拟机,并没有下载镜像到本地进行安装部署。由于某些需求,需要下载centos系统镜像,之后要在虚拟机上进行安装测试一些内容,所以就找了下镜像。
CentOS
CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。
官网下载
Centos官网地址
官方网站下载的确可行,但不建议在官方网站进行下...
5年前 (2020-02-23) 1236℃ 0评论
0喜欢
每年春节买票都成为相当重要的事情,快人一步基本能尽可能的抢占先机。使用抢票软件尽可能的减少手工操作,从而提高抢票的成功机率,由于时间误差也可会丧失先机,所以同步系统时间也是重要一步。为了可以自动的同步本地时间,所以就使用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) 4848℃ 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) 1532℃ 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) 4034℃ 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) 4212℃ 0评论
5喜欢
因某些情况需要在测试人员机器上安装.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) 2203℃ 0评论
12喜欢
网站内容在Windows环境下并没有出现任何问题,但是在Linux 系统Centos的Docker环境下就出现了相关错误。这让人一脸蒙逼啊, 未能加载libdl库。使用了EPPlus处理Excel,其内部设置了字体大小以及颜色之类的东西,使用了‘ System.Drawing.Font ’的相关内容。由于Linux系统中Docker环境下缺少相关库,故而出现异常。具体错误请看以下内容。
报错内容:
fail: System.Exception[-2146233036] The type initializer for ‘Gdip’ threw an exception. System.TypeInitializationException: The type initializer for ‘Gdip’ threw an exception. —> System...
5年前 (2019-12-31) 1952℃ 0评论
3喜欢
上周五在QQ群遇到群友提问的一个问题。问题是这样的:文字识别之后,当点击Excel单元格识别内容自动出现当前单元格中。我提供相关实现思路,使用相关Windows API来实现操作,其中基本思路就是:获取当前鼠标位置=>获取当前位置窗口句柄=>获得当前句柄类=>模拟键盘消息。但遗憾的是他一直没有搞定还一直问,无奈我就直接给他了简单的示例代码。其中使用的Windows API 接口为以下几个:
GetCursorPosWindowFromPointGetClassNamekeybd_event
using MouseKeyboardActivityMonitor;
using MouseKeyboardActivityMonitor.WinApi;
using System;
using System.Collections.Generic;
using System...
5年前 (2019-12-29) 1927℃ 0评论
11喜欢
最近因为某些原因需要用到spy++工具, 在Visual Studio中找不到Spy++工具,在系统中也没有找到。经过了解需要重新下载Spy++工具.在Visual Studio通过以下进行安装。
工具=>获取工具和功能=》单个组件=》Visual Studio C++核心功能
然后,勾选《 Visual Studio C++核心功能 》后修改完成,工具Spy++就此安装完成。如下图:
转载请注明:清风亦平凡 » Visual Studio (VS)2017/2019安装Spy++工具...
5年前 (2019-12-29) 3906℃ 0评论
21喜欢
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) 3165℃ 0评论
3喜欢
背景后台任务和计划任务最终可能需要在基于微服务的应用程序或任何类型的应用程序中实现。 使用微服务体系结构的区别在于,可以实现一个微服务进程/容器来托管这些后台任务,以便根据需要对其进行减少/增加,或者甚至可以确保它运行该微服务进程/容器的单个实例。
一般在 .NET Core 中,我们将这些类型的任务称为托管服务 ,因为它们是托管在主机/应用程序/微服务中的服务/逻辑。 请注意,在这种情况下,托管服务仅表示具有后台任务逻辑的类。
前言
从 .net core 2.0 开始,开始引入 IHostedService,可以通过 IHostedService 来实现后台任务,但是只能在 WebHost 的基础上使用。从 .net core 2.1 开始微软引入通用主机(Generic Host),使得我们可以在不使用 Web 的情况下,也可以使用 IHostedSe...
5年前 (2019-12-07) 3024℃ 0评论
3喜欢
简介
开源软件(Open source software)对我们来说越来越不陌生,开源软件一方面让我们享用到了“免费的午餐”,另一方面有效的利用和学习开源软件,也能促进我们开发软件时的效率、提升软件质量。但是在使用和借鉴开源软件的时候,我们不得不关心一下它对使用者的诸多限制,比较常见的方式即协议授权(licence),这些协议中明确说明了使用者应该遵循的原则。
现在开源协议众多,通过Open Source Initiative组织批准的开源协议有50多种,本文介绍其中一些常见的协议。
常见的协议介绍
BSD协议
BSD开源协议是一个给予使用者很大自由的协议。开发者可以自由使用和修改源代码,也可以讲修改后的源代码作为开源或者专有软件再发布。但是有一下几个要求:
如果再发布的产品中含有源代码,则在源代码中必须带有原来代码中的BSD协议。 如果再发布的只是二...
6年前 (2019-10-29) 1227℃ 0评论
0喜欢
在应用部署后访问中出现一下错误:
ERROR 1130: Host ‘localhost’ is not allowed to connect to this MySQL server
其实就是 MySQL 不允许当前的Host进行连接。为了本地以后测试方便,暴力解决方法如下:
1.在装有MySQL的机器上登录MySQL:mysql -uroot -p密码2.选择我mysql库,执行use mysql;3.更新user表,执行update user set host = ‘%’ where user = ‘root’;这一句执行完可能会报错,不用管它。4.执行FLUSH PRIVILEGES;
转载请注明:清风亦平凡 » Host is not allowed...
6年前 (2019-09-06) 1434℃ 0评论
0喜欢
本博客点使用PHP的一套出名的应用,那就是WordPress。站点建立完成后就有针对登录的暴力破解,很多都应该都是随机的用户名尝试,那个时候也就没有做任何处理。过一段时间发现,真正的用户名已被发现,经过了解发现是WordPress站点一个功能,可以暴露用户名。如下请求:
/?author=1/author/admin
这个问题解决使用方法也很简单,因为一开始就使用了 redirections ,索性就直接用301重定向。到这里这个问题是解决了。很奇怪登录失败列表还是存在真实用户名,最后发现是WordPress应用的API问题。这太扯淡了,没有权限验证用户API就能获得登录用户名。
/wp-json/wp/v2/users
WordPress 4.4 默认集成了备受关注的 JSON REST API,这个对于开发者来说,无疑是非常有用的,通过 JSON R...
6年前 (2019-09-02) 1772℃ 0评论
3喜欢
最近遇到了大规模的针对wordpress后台暴力破解,验证码好像也没有什么用。经过了解发现是WordPress的XMLRPC的接口问题。
XML-RPC 是 WordPress 用于第三方客户端(如 WordPress iPhone 和安卓客户端,Windows Live Writer 等)的 API 接口,还可以用于 pingbacks 和 trackbacks 端口,作为站点之间的通讯桥梁。
攻击方式
这种利用xmlrpc.php的攻击可以绕过限制。攻击的方式直接POST以下数据到xmlrpc.php
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>wp.getUsersBlogs</methodName>...
6年前 (2019-08-31) 2110℃ 0评论
5喜欢
使用Docker for Windows时,我们实际上正在使用在特殊Hyper-V VM中运行的小型(自定义)LinuxKit Linux。使用了相当多的方式使在Windows中使用Docker更加便利,似乎容易让人忘记它还在在Linux内核上运行。
请注意,这是关于默认的“Linux容器”模式。它不适用于“Windows容器”模式。
这只是一个可以访问Linux VM的容器,因此您可以执行诸如ps aux查看在VM中运行的守护程序之类的操作。这不是一个完整的操作系统。
首先需要创建一个具有完全root访问权限的容器,然后从那里访问文件系统。
获取可访问Docker守护程序的容器 运行具有完全root访问权限的容器 切换到主机文件系统
构建镜像
使用Docker构建一个镜像,Dockerfile如下所示:
FROM ubuntu
RUN...
6年前 (2019-08-23) 1719℃ 0评论
2喜欢
使用.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) 3680℃ 0评论
0喜欢