V2Ray服务搭建
V2RayV2Ray是近几年兴起的科学上网技术,采用新的协议,因功能强大,能有效抵抗墙的干扰而广受好评。V2Ray安装部署及流量伪装请参考:V2Ray教程 和 V2Ray高级技巧:流量伪装。
V2Ray 是 Project V 下的一个工具。Project V 是一个包含一系列构建特定网络环境工具的项目,而 V2Ray 属于最核心的一个。官方中介绍Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。不过从时间上来说,先有 V2Ray 才有 Project V。 如果还是不理解,那么简单地说,V2Ray 是一个与 Shadowsocks 类似的代理软件,可以用来科学上网(翻墙)学习国外先进科学技术。
SSR也有V2Ray插件
V2Ray优势:
更完善的协议 :V2Ray 使用了新的自行研发的 VMess 协议,改正了 Shadowsocks 一些已有的缺点,更难被墙检测到
更强大的性能 :网络性能更好,具体数据可以看 V2Ray 官方博客
更丰富的功能 :
mKCP: KC ...
异步编程模型(APM)
前言最近改了个老项目,当初异步是用APM写的,于是重温了下APM
你知道APM吗APM即异步编程模型的简写(Asynchronous Programming Model),写代码的时候或者查看.NET的类库的时候肯定会经常看到和使用以BeginXXX和EndXXX类似的方法,其实你在使用这些方法的时候,你就再使用异步编程模型来编写程序。对于给定XXX同步操作,异步版本的就是BeginXXX和EndXXX,BeginXXX启动操作,EdnXXX获取操作结果,此时如果操作未完成,则阻塞线程等待,变成同步方法。
异步模型从.NET1.0开始就支持的异步编程模型,整个过程是围绕IAsyncResult对象进行的,异步操作通过Begin操作和End操作这两个方法实现。
IAsyncResult对象存储有关异步操作的信息。
12345678910111213141516171819public interface IAsyncResult{ bool IsCompleted { get; } WaitHandle AsyncWai ...
Visual Studio 2019使用Source Link调试源码
背景最开始在开发java的时候,eclipse可以直接调试源码,但是在微软开源前,基本上没办法调试源码,完全靠ReSharper反编译来调试。后来微软开源了.NetCore,在看.NetCore源码的时候发现测试项目用到了Source Link。于是好奇心驱使点进链接一看才知道是用于源码调试的工具,果断开整。
Source LinkSource Link是一种为二进制文件提供无关语言和源代码控制的调试系统。目的是为任何基于Nuget构建项目的用户提供几乎无感的源码调试。微软开发并维护。Source Link是一组用于描述可嵌入到符号、二进制文件和包中的源代码控制元数据的包和规范。官网链接:https://github.com/dotnet/sourcelink
SourceLink当前支持的源码来源
Github
Azure DevOps(VSTS)
TFS
Gitlab
Bitbucket
如何在Visual Studio 2019中使用Source LinkVisual Studio 17 15.3以上版本中已经支持了Source Link,Visual Studio 17 1 ...
Git子模块管理
子模块(Submodules)大型项目都是按照子模块开发,子模块又是单独git管理,如果分成多个仓库合并的时候又很麻烦,放一个仓库又会频繁提交冲突,子模块命令就很好解决这个问题,多个git子模块仓库管理,统一组成项目仓库
Git命令Initgit submodule add <repository> <path> 添加子模块
git submodule init 初始化子模块
Clone递归方式克隆整个项目,会克隆所有子模块
git clone <repository> --recursive
如果项目已存克隆,可以执行初始化子模块
git submodule update --init
Update当项目执行git pull并不会自动同步更新子模块,需要更新所有子模块,保持与项目子模块commit id一致
git submodule update
更新所有子模块,保持与项目远端同步
git submodule update --remote
更新指定子模块,保持与项目远端同步
git submodule update --remote modul ...
AspNetCore管道机制
Middleware理解Applicationbuilder维护着一个中间件集合
1private readonly IList<Func<RequestDelegate, RequestDelegate>> _components = new List<Func<RequestDelegate, RequestDelegate>>();
本质都是是往ApplicationBuilder对象的_components成员里添加中间件Func<RequestDelegate, RequestDelegate>
123public delegate Task RequestDelegate(HttpContext context);private readonly IList<Func<RequestDelegate, RequestDelegate>> _components
通过传值和返回都是RequestDelegate委托,对HttpContext的处理,各个中间件首尾相连,形似管道
Middl ...
Linux下source命令详解
source命令用法source FileName
通常用”.“来替代
source命令作用
在当前bash环境下读取并执行FileName中的命令
功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source /etc/profile。 source命令(从 C Shell 而来)是bash shell的内置命令。点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。
source命令应用鉴于上述的描述,最简单的一种应用场景就是,进行交叉编译时,在当前shell内采用source命令临时指定系统的编译环境为嵌入式编译环境,然后进行源码的编译和调试。而在别的shell内或者你关闭本shell时,一切又恢复原样。
所以把编译所需环境放在一个脚本文件中,在当前shell需 ...
Kubernetes集群-Kubernetes部署
kube-proxy开启ipvs的前置条件
加载netfilter模块
1[root@k8s-master-01 ~]# modprobe br_netfilter
添加配置文件
123456789101112131415[root@k8s-master-01 ~]# cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOF
赋予权限并引导
12345[root@k8s-master-01 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules[root@k8s-master-01 ~]# bash /etc/sysconfig/modules/ipvs.modules[root@k8s-master-01 ~ ...
Kubernetes集群-node节点配置
修改主机名1[root@k8s-master-01 ~]# hostnamectl set-hostname xxx
修改hosts文件vim /etc/hosts1234567[root@k8s-master-01 ~]# vim /etc/hosts127.0.0.1 k8s-master-01 k8s-master-01127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.18.98.3 k8s-master-01172.18.98.4 k8s-node-01172.18.98.5 k8s-node-02
将写好的hosts文件拷贝到其他节点1[root@k8s-master-01 ~]# scp /etc/hosts root@k8s-node-01:/etc/hosts ...
Vagrant初体验
介绍VagrantVagrant 就是为了方便的实现虚拟化环境而设计的,使用Ruby开发,基于VirtualBox等虚拟机管理软件的接口,提供了一个可配置、轻量级的便携式虚拟开发环境。使用Vagrant可以很方便的就建立起来一个虚拟环境,而且可以模拟多台虚拟机,这样我们平时还可以在开发机模拟分布式系统。
Vagrant还会创建一些共享文件夹,用来给你在主机和虚拟机之间共享代码用。这样就使得我们可以在主机上写程序,然后在虚拟机中运行。如此一来团队之间就可以共享相同的开发环境,就不会再出现类似“只有你的环境才会出现的bug”这样的事情。
团队新员工加入,常常会遇到花一天甚至更多时间来从头搭建完整的开发环境,而有了Vagrant,只需要直接将已经打包好的package(里面包括开发工具,代码库,配置好的服务器等)拿过来就可以工作了,这对于提升工作效率非常有帮助。
Vagrant不仅可以用来作为个人的虚拟开发环境工具,而且特别适合团队使用,它使得我们虚拟化环境变得如此的简单,只要一个简单的命令就可以开启虚拟之路。
VirtualBoxVirtualBox 是一款开源虚拟机软件。Virtual ...
win10在鼠标右键中添加程序启动
注意:这里只是拿VS Code作为例子安装注册表,新建文本文件,以.reg为拓展名保存,双击安装
文件的鼠标右击点击事件
123456789Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode]@="Edit with VSCode""Icon"="D:\\Microsoft VS Code\\Code.exe"[HKEY_CLASSES_ROOT\*\shell\VSCode\command]@="\"D:\\Microsoft VS Code\\Code.exe\" \"%1\""
文件夹上右击点击事件
123456789Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\shell\vscode] @="Open with VSCode" "Icon" ...