最近使用.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) 3890℃ 2评论
13喜欢
SON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。
一、跨域认证的问题
联网服务离不开用户认证。一般流程是下面这样。
1、用户向服务器发送用户名和密码。
2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。
3、服务器向用户返回一个 session_id,写入用户的 Cookie。
4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。
5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。
这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的服务导向架构,就要求 session 数据共享,每台服务器都能够读取 session。
举例来说,A 网站和 B 网站是同一家公司的关联服务。现在要求,用...
6年前 (2018-12-09) 1374℃ 0评论
0喜欢
相关问题
在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后或...
7年前 (2018-12-08) 3009℃ 0评论
2喜欢
Docker中的settings里的Shared Drives 选择对应盘符后,点击Apply后无法生效。试了两遍都不行,这是有问题的 。
解决办法
win+R ,键入gpedit.msc,出现如下界面,找到高亮处的网络访问:本地账户的共享和安全模型,选择如图中的 经典 选项
转载请注明:清风亦平凡 » Docker for Windows 设置的Shared Drives 设置不生效
...
7年前 (2018-12-07) 1667℃ 0评论
3喜欢
什么是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...
7年前 (2018-12-04) 3805℃ 0评论
2喜欢
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 是...
7年前 (2018-12-03) 1405℃ 0评论
3喜欢
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...
7年前 (2018-12-01) 1806℃ 0评论
0喜欢
共享内存
共享内存指 (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,...
7年前 (2018-11-30) 4109℃ 0评论
19喜欢
在一些博客上遇到点击鼠标的时候有文字或者符号漂浮,感觉挺不错的。如下图:
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({...
7年前 (2018-11-22) 1453℃ 0评论
0喜欢
Windows 10创建虚拟机并安装其操作系统。
从开始菜单打开Hyper-V管理器。
在Hyper-V管理器中,在右侧的“ 操作”菜单中单击“ 快速创建 ” 。
自定义您的虚拟机
单击“ 连接”以启动虚拟机。不用担心编辑设置,您可以随时返回并更改它们。
自定义您的虚拟机:
(可选)为虚拟机命名。
选择虚拟机的安装介质。您可以从.iso或.vhdx文件进行安装。如果要在虚拟机中安装Windows,则可以启用Windows安全启动。否则将其取消选中。
设置网络。如果您有现有的虚拟交换机,则可以在网络下拉列表中进行选择。如果您没有现有的交换机,您将看到一个用于设置自动网络的按钮,该按钮将自动配置虚拟网络。
打开Hyper-V管理器
快速创建
一、选择“快速创建”
二、选择“本地安装源”,右侧选择本地的ISO镜像文件。那样选择Windows dev Environment 和 Ub...
7年前 (2018-11-21) 2390℃ 0评论
0喜欢
Hyper-V
Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化。Hyper-V是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。Hyper-V设计的目的是为广泛的用户提供更为熟悉以及成本效益更高的虚拟化基础设施软件,这样可以降低运作成本、提高硬件利用率、优化基础设施并提高服务器的可用性。
运行Hyper-V虚拟机的要求
方法一:打开“系统信息”窗口查看
Win + R 快捷键调出“运行”对话框,输入“msinfo32”,确定,即可打开“系统信息”窗口。
在任务栏中的Cortana搜索框中输入“系统信息”即可搜索到“系统信息桌面应用”,点击即可打开。
这两种打开“系统信息”窗口的方法,显而易见,第二种更简单,不需要记忆命令,所以可见微软在Windows10中引入的Cortana数字助手的强大方便
打开的“系统信息”窗口...
7年前 (2018-11-20) 2706℃ 0评论
2喜欢
启用Hyper-V以在Windows 10上创建虚拟机。
可以通过多种方式启用Hyper-V,包括使用Windows 10控制面板,PowerShell(我最喜欢的)或使用部署映像服务和管理工具(DISM)。本文档介绍了每个选项。
注意: Hyper-V作为可选功能内置于Windows中 ,没有Hyper-V就需要下载
检查要求
Windows 10企业版,专业版或教育版
具有二级地址转换(SLAT)的64位处理器。
VM监控模式扩展的CPU支持(Intel CPU上的VT-c)。
至少4 GB内存。
无法在Windows 10 Home上安装Hyper-V角色。
通过打开“设置” >“ 更新和安全” >“ 激活”,从Windows 10 Home Edition升级到Windows 10 Pro 。
使用PowerShell启用Hyper-V
Enable-Windows...
7年前 (2018-11-19) 1767℃ 0评论
1喜欢
Hyper-V适用于64位版本的Windows 10 Pro,Enterprise和Education。Hyper-V需要二级地址转换(SLAT) – 存在于Intel和AMD的当前一代64位处理器中。
您可以在具有4GB RAM的主机上运行3或4个基本虚拟机,但是您需要更多资源来支持更多虚拟机。另一方面,您还可以创建具有32个处理器和512GB RAM的大型虚拟机,具体取决于您的物理硬件。
操作系统要求
可以在这些版本的Windows 10上启用Hyper-V角色:
Windows 10企业版
Windows 10专业版
Windows 10教育
无法安装Hyper-V角色:
Windows 10 Home
Windows 10移动版
Windows 10移动企业版
Windows 10 Home Edition可以升级到Windows 10 Pro。为此,请打开“设...
7年前 (2018-11-19) 5290℃ 0评论
12喜欢
Hyper-V取代了Microsoft Virtual PC。
无论您是软件开发人员,IT专业人员还是技术爱好者,您都需要运行多个操作系统。Hyper-V允许您在Windows上将多个操作系统作为虚拟机运行。
Hyper-V专门提供硬件虚拟化。这意味着每个虚拟机都在虚拟硬件上运行。Hyper-V允许您创建虚拟硬盘驱动器,虚拟交换机和许多其他虚拟设备,所有这些都可以添加到虚拟机中。
使用虚拟化的原因
虚拟化允许您:
运行需要较旧版本的Windows或非Windows操作系统的软件。
试验其他操作系统。Hyper-V使创建和删除不同的操作系统变得非常容易。
使用多个虚拟机在多个操作系统上测试软件。使用Hyper-V,您可以在一台台式机或笔记本电脑上运行它们。可以导出这些虚拟机,然后将其导入任何其他Hyper-V系统,包括Azure。
系统要求
Hyper-V适用于64位版本的Window...
7年前 (2018-11-18) 1431℃ 0评论
0喜欢
什么是 Docker 容器
正在运行的镜像(Image)实例称为容器。 Docker使用Docker镜像作为只读模板来进行启动。 如果您启动镜像,则表示您拥有此镜像的运行容器。 当然,您可以拥有许多相同镜像的运行容器。 我们使用命令“docker run”来运行docker容器。
查看Docker容器列表
要查看容器,请运行以下命令:
docker ps [ OPTIONS ]
要列出正在运行和已停止的容器,请使用-a选项,如下所示:
docker ps -a
CONTAINER ID –容器的唯一ID
IMAGE –已启动容器的基本映像
COMMAND –启动容器时使用的命令
CREATED –创建容器的时间
STATUS –容器的当前状态(Up或Exited)
PORTS –端口号(如果有),转发到doc...
7年前 (2018-11-16) 2658℃ 0评论
2喜欢
之前对接一个接口,实现加密文件上传,于是写了一个简单的方法进行调用。
public static class HttpUtil
{
/// <summary>
/// 向指定的URL进行post
/// </summary>
/// <param name="url"></param>
/// <param name="bodyPartList"></param>
/// <returns></returns>
public static string MultipartPost(string url, List<FormBodyPart> bodyPartList
, bool isBrowerUser...
7年前 (2018-11-15) 2976℃ 2评论
1喜欢
shadowsocks中文名为影梭,是一个有名的加密socks5代理。
官网称:A secure socks5 proxy, designed to protect your Internet traffic.
目前官方客户端支持Windows、Mac OS X、Linux、Android、ios、OpenWRT。
官方服务端支持Python语言、Go语言、C with libev、C++ with Qt。
官方提供了各种版本的安装包方便部署:pip包(Python)、npm包(nodejs)、aur包(Arch Linux)、freshports包(FreeBSD)
Nodejs是基于Javascript实现的一款后台程序开发平台,所以在windows下也能够很方便的安装npm包.
下载安装nodejs
下载地址:https://nodejs.org/en/ ,下载LTS长期支持版本,然...
7年前 (2018-11-13) 5638℃ 0评论
33喜欢
一、背景
朋友给了一个小的Windows应用程序,打开这个应用程序会让登录QQ,然后会判断登录的QQ是不是已经加入了指定的QQ群。如果已经加入,则可以继续使用软件,否则就退出这个程序,大致就是这样。朋友希望知晓这种判断qq是否加入指定QQ群的方法。如下图:
二、分析
这里使用fiddler进行抓包看一下,通过抓包结果来看,这个程序首先访问了http://qun.qzone.qq.com/,然后进行了授权登录,登成功之后就会回调到http://qun.qzone.qq.com/上,然后所有群号一览无余,就可以判断指定的群号了,基本上就是上图看到的界面了。fiddler抓包图如下:
三、实现
这里使用Microsoft .net的Windows Form实现,使用WebBrowser控件加载http://qun.qzone.qq.com/,登录成功只有使用正则匹配指定的群号来完成操作。代码...
7年前 (2018-10-21) 3954℃ 3评论
7喜欢
一、下载docker-compose文件
curl -L https://github.com/docker/compose/releases/download/1.23.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
二、添加可执行权限
chmod +x /usr/local/bin/docker-compose
三、测试安装结果,查看版本。
docker-compose –version
转载请注明:清风亦平凡 » Linux系统安装docker-compose...
7年前 (2018-10-19) 1369℃ 0评论
0喜欢
docker启动命令,docker重启命令,docker关闭命令
启动
systemctl start docker
守护进程重启
sudo systemctl daemon-reload
查看docker运行状态
sudo service docker status
重启docker服务
systemctl restart docker
sudo service docker restart
关闭docker
service docker stop
systemctl stop docker
转载请注明:清风亦平凡 » docker启动,重启,关闭命令
...
7年前 (2018-10-18) 1382℃ 0评论
0喜欢
Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具,以 yaml 格式的数据来保存容器配置,使用更简单的命令完成对容器的管理。此外 docker-compose.yml 还起到一个说明文档的作用, 一切配置在里面显得一目了然,就不用另外单独写部署文档了。
1. 安装 Docker Compose
# curl方式安装(推荐)
# 如果权限不够,先执行 sudo -i 切换到root帐号
curl -L https://get.daocloud.io/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /tmp/docker-compose
chmod +x /tmp/docker-compose
sudo mv /tmp/docker-c...
7年前 (2018-10-17) 1742℃ 0评论
0喜欢
使用Dockerfile来构建镜像。
用法说明
选项
用法
说明
FROM
FROM <image>:<tag>
指定基础镜像
MAINTAINER
MAINTAINER <name> <email>
创建者信息
RUN
RUN <command>
执行容器操作,主要用来安装软件
CMD
CMD [“executable”,”param1″,”param2″]
CMD command param1 param2
CMD [“param1″,”param2”]
镜像启动时的操作,会被容器的启动命令覆盖。
指定多次则最后一条生效
ENTRYPOINT
同 CMD,与CMD差别主要
在...
7年前 (2018-10-16) 1249℃ 0评论
0喜欢
docker 分为客户端和服务端两部分, docker 为客户端调用的命令, dockerd 为服务端调用的命令, 本文着重介绍客户端的用法。
主要用法:docker [ docker命令选项 ] [ 子命令 ] [ 子命令选项 ]
docker [ 子命令 ] –help 可查看每个子命令的详细用法。
docker命令选项列表
选项
说明
其他
–config [string]
客户端本地配置文件路径
默认为 ~/.docker
-D, –debug
启用调试模式
–help
打印用法
-H, –host list
通过socket访问指定的docker守护进程(服务端)
unix:// , fd:// , tcp://
-l, –log-level [string]
设置日志级...
7年前 (2018-10-15) 1692℃ 0评论
0喜欢
/// <summary>
/// 缓存帮助类
/// </summary>
public class MemoryCacheHelper
{
private static readonly MemoryCache Cache = new MemoryCache(new MemoryCacheOptions());
/// <summary>
/// 验证缓存项是否存在
/// </summary>
/// <param name="key">缓存Key</param>
/// <returns></returns>
public stat...
7年前 (2018-10-14) 2080℃ 0评论
0喜欢
有时候需要通过JavaScript中获取网址中传递的参数,以下就提供两种方法,仅供参考。这个也是很早时候的内容了,由原来的QQ空间整理出来,这里也做下记录。
方法一:正则分析法
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
调用方法:
alert(GetQueryString("参数名1"));
alert(GetQueryString(...
7年前 (2018-10-11) 1280℃ 0评论
2喜欢