operhero

戚骏的博客

SynchronizationContext(同步上下文)

SynchronizationContext

问题产生 当异步操作需要将结果传递给指定线程执行,需要一个中介来实现。 列如UI程序需要ui线程执行异步结果显示;单线程模型服务器需要由主线程执行异步结果操作逻辑。 基础概念 工作单元(Task)应列入上下文(Context),而不是某个特定线程(Thread); 微软为开发者提供了SynchronizationContext,在线程与线程通讯中充当传输者的角色; 不是每个线程都附加Syn...

nginx

nginx

安装 sudo yum install nginx 设置开机自启动 systemctl enable nginx.service 如果出现No package nginx available.找不到包源,先: yum -y install epel-release 后yum -y install nginx X-Forwarded-For 参考 假设有三层代理Proxy1、Proxy2...

synapse

synapse

前言 synapse是一款优秀的开源聊天框架,github地址https://github.com/matrix-org/synapse centos服务器部署 我是参考博客 如果对外提供https服务,需要提供tls证书,参考 openssl genrsa -out privkey.pem 2048 openssl req -new -x509 -key privkey.pem -ou...

asp.net core

Builder pattern

前言 在阅读.NET Core源码时,时常碰到IHostBuilder,IWebHostBuilder,IConfigurationBuilder,ILoggingBuilder等诸如此类带Builder名称的类/接口,这些是典型的建造者模式 建造者模式(Builder pattern) 当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。 拿Compu...

Go-Slice

数组 数组是值类型,一个数组变量表示整个数组,而不是指向数组的首元素的指针,这和C语言不同。 将数组赋值给另一个数组,或者数组作函数参数传递时,会将数组的全部数据拷贝一份过去而不是传递一个指针(因此用切片代替数组)。 数组类型包括长度,即[5]int和[10]int不是一种类型。 切片 切片不是指针类型,切片数据类型是包含指向一个数组片段的指针,和当前数组片段的长度,以及当...

StatefulSet

有状态应用 1、拓扑状态:应用的多个实例之间不是完全对等的。这些应用实例必须按照某种顺序启动。并且,新创建出来的Pod必须和原来Pod的网络表示一致,这样原先的访问者才能使用同样的方法访问到这个新Pod。 2、存储状态:应用的多个实例分别绑定了不同的存储数据,他们之间应该保持固定的映射关系。 Service Service是Kubernetes项目中用来将一组Pod暴露给外界访问的一种机...

PV

NFS方式 1、关闭防火墙 2、安装配置nfs yum -y install nfs-utils rpcbind 3、新建共享目录并设置权限 for i in {0..2};do mkdir -p /k8s/nfs${i} chmod 775 /k8s/nfs${i} done 4、配置nfs $ vi /etc/exports /k8s/nfs0 *(rw,sync,no_ro...

Centos7安装k8s

#使用阿里镜像 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gp...

Docker0

Linux tun:tap tun/tap 虽然工作原理一致,但是工作的层次不一样。 tun是三层网络设备,收发的是IP层数据包,无法处理以太网数据帧,例如OpenVPN的路由模式就是使用了tun网络设备,OpenVPN Server重新规划了一个网段,所有的客户端都会获取到该网段下的一个IP,并且会添加对应的路由规则,而客户端与目标机器产生的数据报文都要经过OpenVPN网关才能转发。 ...

读MoreEffectiveC#

泛型 C#早期使用Object来代表任意类型,运行时强制转换存在安全问题,类型判断影响效率。 public interface IComparable { int CompareTo(object other); } public class Customer : IComparable { public string Name; public int Compar...