docker-compose部署MinIO分布式集群
docker-compose部署MinIO分布式集群[TOC]
概述MinIO是全球领先的对象存储先锋,目前在全世界有数百万的用户。
高性能,在标准硬件上,读/写速度上高达183GB/秒和171GB/秒,拥有更高的吞吐量和更低的延迟
可扩展性,为对象存储带来了简单的缩放模型,通过添加更多集群可以扩展空间
简单,极简主义是MinIO的指导性设计原则,即可在几分钟内安装和配置
与Amazon S3兼容,亚马逊云的S3 API(接口协议)是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准
数据安全,使用纠删码来保护数据免受硬件故障和无声数据损坏
纠删码纠删码是一种恢复丢失和损坏数据的数学算法, Minio默认采用Reed-Solomon code将数据拆分成N/2个数据块和N/2个奇偶校验块。这就意味着如果是16块盘,一个对象会被分成8个数据块、8个奇偶校验块,你可以丢失任意8块盘(不管其是存放的数据块还是校验块),你仍可以从剩下的盘中的数据进行恢复。
部署官方推荐docker-compose.yaml:下载地址
稍加修 ...
docker-compose部署RabbitMQ分布式集群
docker-compose部署RabbitMQ分布式集群[TOC]
概述集群模式RabbitMQ的Cluster集群模式一般分为两种,「普通模式」和「镜像模式」。
普通模式:默认的集群模式,以两个节点(A、B)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点A(或者B),A和B两个节点仅有相同的元数据,即队列的结构。当消息进入A节点的Queue后,consumer从B节点消费时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。当A节点故障后,B节点无法取到A节点中还未消费的消息实体。如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。
镜像模式:将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。
节点类型
RAM node:内存节点将所有的队列、交换机、绑定、用户、权限和v ...
vue3中组件prop和emit的使用
vue3中组件prop和emit的使用[TOC]
组件是带有自定义名称的可复用实例,prop向下传递,emit向上传递。
组件prop通过组件prop可以实现父组件向子组件传递数据
命名规则HTML中的attribute名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用DOM中的模板时,camelCase (驼峰命名法) 的prop名需要使用其等价的kebab-case (短横线分隔命名) 命名。
在JavaScript中使用camelCase
123456const app = Vue.createApp({})app.component('blog-post', { props: ['postTitle'], template: '<h3>{{ postTitle }}</h3>'})
在HTML中使用kebab-case
1<blog-post post-title=" ...
vue3中插槽的使用
vue3中插槽的使用[TOC]
插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签,父组件填充的内容称为插槽内容。
子组件不提供插槽时,父组件填充失效
父组件无填充时,<slot></slot>中的备用内容会启用生效
父级模板里的所有内容都是在父级作用域中编译的,子模板里的所有内容都是在子作用域中编译的,互不影响
匿名插槽又名默认插槽
12345678910111213141516<!-- my-button子组件定义 --><template> <button> <slot>SUBMIT BTN</slot> </button></template><!-- 父组件调用my-button --><my-button> 提交按钮& ...
CommonJS模块与ES6模块的区别
CommonJS模块与ES6模块的区别CommonJS
对于基本数据类型,属于复制。即会被模块缓存。同时,在另一个模块可以对该模块输出的变量重新赋值。
对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。
当使用require命令加载某个模块时,就会运行整个模块的代码。
当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。
循环加载时,属于加载时执行。即脚本代码在require的时候,就会全部执行。一旦出现某个模块被”循环加载”,就只输出已经执行的部分,还未执行的部分不会输出。
ES6
ES6模块中的值属于【动态只读引用】。
对于只读来说,即不允许修改引入变量的值,import的变量是只读的,不论是基本数据类型还是复杂数据类型。当模块遇到import命令时,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。
对于动态来说 ...
vue3中ref、reactive、toRef、toRefs的使用
vue3中ref、reactive、toRef、toRefs的使用四个函数都是用于在setup中创造响应式变量的
refref可用于任何类型的数据创建响应式,取值需要加.value。对于基本数据类型,ref的性能优于reactive,而对于对象类型,ref仍然是通过reactive包装实现的。推荐优先使用ref,方便逻辑拆分和业务解耦。
1234567891011121314151617181920212223<div id="app"> <p>{{ webName }}</p></div><script>const app = Vue.createApp({ setup(props, context) { const { ref } = Vue; // 需要响应的改变的数据必须使用ref函数 let webName = ref("xiguapengpeng"); // 3s后修改 ...
typescript中interface和type的使用
typescript中interface和type的使用interface(接口)声明对象或者函数,通过extends继承拓展
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950// 描述对象interface IUser { name: string, age: number, sayHi: () => void // sayHi(): void}const user: IUser = { name: 'zhangsan', age: 25, sayHi: () => { console.log('hi, i am zhangsan') }}user.sayHi();// 描述函数interface ISetUser { (name: string, age: number, sayHi: () => v ...
2022年3月显示器科普与配置选型
2022年3月显示器科普与配置选型配置单
型号
微星 MAG274QRF-QD
AOC Q27G2S/D
雷神 LQ27F165L
宏碁 XV272UV
尺寸
27寸
27寸
27寸
27寸
分辨率
2560*1440
2560*1440
2560*1440
2560*1440
响应时间
1ms GTG
1ms GTG
1ms GTG
2ms GTG
面板
Rapid IPS
Fast IPS
Fast IPS
Fast IPS
色域
sRGB 147%,DCI-P3 97%
sRGB 126%,NTSC 108%
sRGB 99%,DCI-P3 95%
DCI-P3 95%
亮度
300nits
350nits
350nits
400nits
刷新率
165Hz
170Hz
165Hz
170Hz
HDR
HDR600
HDR400
HDR400
HDR400
SYNC
G-SYNC
G-SYNC & Adaptive-Sync
G-SYNC
FreeSync
接口
1xDP1.2,1xHDMI2.0
1xDP1.4,2 ...
nginx的全局变量
nginx的全局变量
变量
说明
$args
请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2
$content_length
HTTP请求信息里的”Content-Length”
$content_type
HTTP请求信息里的”Content-Type”
$document_root
nginx虚拟主机配置文件中的root参数对应的值
$document_uri
当前请求中不包含指令的URI,如www.123.com/1.php?a=1&b=2的$document_uri就是1.php,不包含后面的参数
$host
主机头,也就是域名
$http_user_agent
客户端的详细信息,也就是浏览器的标识,用curl -A可以指定
$http_cookie
客户端的cookie信息
$limit_rate
如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0
$remote_addr
客户端的公网ip ...
nginx的rewrite配置
nginx的rewrite配置指令语法1rewrite regex replacement [flag];
例子,匹配成功后跳转到百度,执行永久301跳转
1rewrite ^/(.*) http://www.baidu.com/$1 permanent;
应用位置server、location、if
flag参数
参数
描述
last
本条规则匹配完成后继续向下匹配新的location URI规则
break
本条规则匹配完成后终止,不在匹配任何规则
redirect
返回302临时重定向
permanent
返回301永久重定向
last和break用来实现URL重写,浏览器地址栏的URL地址不变,但在服务器访问的程序及路径发生了变化。
redirect和permanent用来实现URL跳转,浏览器地址会显示跳转后的URL地址。
last和break标记的实现功能类似,但二者之间有细微的差别,使用alias指令时必须用last标记,使用proxy_pass指令时要使用break标记。last标记在本条rewrite规则执行完毕后,会对其所在的serve ...