apple script使用
on run {input, parameters} (* Your script goes here *) tell application "Google Chrome" activate try tell front window make new tab with properties {URL:"https://weixine.ustc.edu.cn/2020/login"} delay 3 end tell tell window 1 tell active tab execute javascript "document.getElementsByClassName('btn')[0].click()" delay 4 -- execute javascript "document.getElementsByClassName('btn ripple bottom-box-button-area-1')[0].click()" end tell ...
build cluster with bash on one node
在我自己的机器上进行实验,sh文件实现一条命令部署单个节点集群 下面是解析步骤 常量定义定义在另一个文件中 #!/bin/bash # Redis_Cluster # REDIS_SERVER_BIN="/home/k8s/homie/redis/src/redis-server" BASE_DIR=/home/k8s/homie REDIS_SERVER_BIN=$BASE_DIR/redis/src/redis-server REDIS_CLI_BIN=$BASE_DIR/redis/src/redis-cli REDIS_CLUSTER_BASE=$BASE_DIR/redis_cluster NODELIST="node2 node3 node4 node5" PORTS=`seq 7000 7005` BASEPORT=${ENTRY_PORT} HG_BASEPORT=${HG_PORT} 根据自己需要进行修改 安装redis# Check redis command if [ ! -f $REDIS_SERVER_BIN ]; then echo "Red...
redis cluster build
下载redis6.2.2并安装wget http://download.redis.io/releases/redis-6.2.2.tar.gz tar -zxvf ./redis-6.2.2.tar.gz mv redis-6.2.2 redis cd redis make 准备配置文件1、新建目录,并拷贝出6个节点的配置文件cd redis-6.2.2 mkdir -p config mkdir -p log mkdir -p data mkdir -p node cp redis.conf ./config/redis-7000.conf 2、修改每个节点的配置文件内容远程访问需要把bind注释掉 # bind 127.0.0.1 修改端口号 port 7000 默认启动时为后台启动,yes为后台启动 daemonize yes 指定进程信息存储文件 pidfile /var/run/redis_7000.pid 指定日志文件(改成自己的路径) logfile "/home/k8s/hom...
redis cluster
redis集群理论单机遇到内存、并发、流量等瓶颈时,可以采用Cluster架构方案来达到负载均衡 一 基础理论1.1分区规则数据集按照分区规则映射到各个节点 常见哈希分区: 节点取余分区 使用特定的数据,如Redis的键或用户ID,再根据节点数量N使用公式: hash(key)%N计算出哈希值,用来决定数据映射到哪一个节点上。 缺点:当节点数量变化时,如扩容或收缩节点,数据节点映射关系需要重新计算,会导致数据的重新迁移。 优点:这种方式的突出优点是简单,易理解; 这种方式常用于数据库的分库分表规则,一般采 用预分区的方式,提前根据数据量规划好分区数,比如划分为512或1024张 表,保证可支撑未来一段时间的数据量,再根据负载情况将表迁移到其他数 据库中。扩容时通常采用翻倍扩容,避免数据映射全部被打乱导致全量迁移 的情况 一致性哈希分区 一致性哈希分区(Distributed Hash Table)实现思路是为系统中每个节点分配一个token(范围一般在0~2^32),这些token构成一个哈希环。 数据读写 执行节点查找操作时,先根据key计算hash值,然后顺时针找到第一...
Redis hotkey solutions
一、热点数据的存放场景:数据库中有2000w数据,而redis中只有100w数据,如何保证redis中存放的都是热点数据? 方案:限定redis占用的内存,redis会根据自身数据淘汰策略,留下热数据到内存。所以可以计算100w数据大约占用的内存, 然后设置一下redis内存限制即可,并将淘汰策略设置为allkeys-lru或者volatile-lru. 设置redis最大占用内存: 打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型哦! maxmemory 268435456 设置过期策略: maxmemory-policy volatile-lru 当redis使用的内存超过设置的最大内存时,会触发redis的key淘汰机制,在redis3.0中的6中淘汰策略如下: noeviction :不删除策略。当达到最大内存限制时,如果需要使用更多内存,则直接返回错误信息(redis默认淘汰策略) allkeys-lru:在所有key中优先删除最近最少使用(less recently used,LRU)的key...
mac命令行加密sha等
Note: echo -n 代表不发送换行符; 不带参数默认发送换行符。 base64 encode echo -n 123|base64 or echo -n "123"|base64 or base64 -i 1.txt or echo -n 123|openssl enc -base64 1234567 base64 decode echo -n MTIz|base64 -D or echo -n "MTIz"|base64 -D or base64 -D -i 1.txt or echo MTIz|openssl enc -base64 -d;echo or echo MTIz|openssl enc -base64 -d 123456789 MD5 openssl dgst -md5 123.bin or openssl md5 123.bin or md5 123.bin or md5 -s "text" or echo -n foo|md5 or echo -n "foo"|md5 or echo -n "foo"|openssl dgst -md...
mac命令行
man一条命令man解决所有问题。 man command-name进入命令指南页面,上箭头或下箭头上下移动,使用空格来翻页,输入 / 和关键字来按照关键字搜索,按 Q 来退出使用指南页面。 输入 man -k 和关键字来对整个使用指南数据库进行搜索。 以下都是可以用man查看具体用法的: 目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 dir2 cd 改变当前目录 cd dirname pwd 显示当前目录的路径名 pwd ls 显示当前目录的内容 ls -la dircmp 比较两个目录的内容 dircmp dir1 dir2 文件操作 命令名 功能描述 使用举例 cat 显示或连接文件,可以用>>来增加文本文件内容 cat filename pg 分页格式化显示文件内容 pg filename more 分屏显示文件内容 more filename o...
会议记录
2022.2.24lxy 尽力和新的论文做比较 ycsb我还没看 要表现自己不是精心构造的case,实验数据要具有说服力 ywqnetwork打破cpu隔离 高网络流量下隔离被打破 2022.3.10lxy 对于不同的workload可以说明是总的图,先展示总和的图 ycsb只是会跑了官方版本,但是对于魔改版本还没接触 强调自己的工作与相关工作的比较,体现自己的贡献 ywq混合部署下网络对于CPU隔离的打破 举例子要写清楚区别 zxz 在相同的物理机器上时延也会上升 别人做过的最好别做了,尽量提出新的解决方式 对比别人做的related work,体现自己的区别 qzh相当于加了cache 由被动缓存到冷热感知的主动缓存 创新点在哪,宏观上有把握 或者是细节上注意,宏观上没有相应的把握 2022.3.18lxyzxz 数据中心内部流量高 虚拟化技术使得东西方向的流量很大,以前南北方向流量很大(怎么定义东西南北) 客户端和服务器之间的流量被称为南北流量。简而言之,南北流量是server-client流量 不同服务器之间的流量与数据中心或不同数据中心之间的网络流被称...
GOmake函数和slice,map解析
make函数 首先看个例子 package main import ( "fmt" ) func main() { var i *int *i=10 fmt.Println(*i) } 这个例子会打印出什么?0还是10?。以上全错,运行的时候会painc,原因如下: panic: runtime error: invalid memory address or nil pointer dereference 从这个提示中可以看出,对于引用类型的变量,我们不光要声明它,还要为它分配内容空间,否则我们的值放在哪里去呢?这就是上面错误提示的原因 对于值类型的声明不需要,是因为已经默认帮我们分配好了 分配内存,Go提供了两种方式,分别是new和make newGo提供内建函数new func new(Type) *Type 它只接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。同时请注意它同时把分配的内存置为零,也就是类型的零值。那么上面的函数可以改写成 func main() { var i *int i=new(int)...
MIT 6.824 2022 notes 2 chinese version
Lecture 2:RPC and threads为什么用 Go 语法先进。在语言层面支持线程(goroutine)和管道(channel)。对线程间的加锁、同步支持良好。 类型安全(type safe)。内存访问安全(memory safe),很难写出像 C++ 一样内存越界访问等 bug。 支持垃圾回收(GC)。不需要用户手动管理内存(特别是shared memory),这一点在多线程编程中尤为重要,因为在多线程中你很容易引用某块内存,然后忘记了在哪引用过。 简洁直观。没 C++ 那么多复杂的语言特性,并且在报错上很友好。 线程(Threads)线程为什么这么重要?因为他是我们控制并发的主要手段,而并发是构成分布式系统的基础。在 Go 中,你可以将 goroutine 认为是线程,以下这两者混用。 每个线程可以有自己的内存栈、寄存器,但是他们可以共享一个地址空间。 使用原因IO concurrency(IO 并发):一个历史说法,以前单核时,IO 是主要瓶颈,为了充分利用 CPU,一个线程在进行 IO 时,可以让出 CPU,让另一个线程进行计算、读取或发送网络消息等。在这里...
MIT 6.824 2022 notes 1 chinese version
chinese version课程背景构建分布式系统的原因: Parallelism,资源并行(提高效率)。 Fault tolerance,容错。 Physical,系统内在的物理分散。 Security,不可信对端(区块链)。 分布式系统面临的挑战: Concurrency,系统构件很多,并行繁杂,交互复杂。 Partial failure,存在部分失败,而不是像单机一样要么正常运行,要么完全宕机。 Performance,精巧设计才能获取与机器数量线性相关的性能。 课程组成 Lectures,授课,一些案例学习。 Papers,论文。 包括一些经典的和前沿的、学术的和工业界的。 看其观点,学其实现,断其性能。 抓重要部分,略次要部分。 课程主页有所有论文链接。 Exams,期中期末两次考试。 Labs:四个实验 lab1: MapReduce lab2: Raft 容错 lab3: K/V server use Raft lab4: Shared K/V based on lab3分布式系统巨难调试,做好心理准备,早点开做。 Project,可以自选相关题目...
GFS chinese version
The Google File System中文版2020-04-18 | 论文 The Google File System GFS MapReduce BigTable关系GFS(2003年发表)使用商用硬件集群存储海量数据。文件系统将数据在节点之间冗余复制。MapReduce(2004)是GFS架构的一个补充,因为它能够充分利用GFS集群中所有低价服务器提供的大量CPU。它与GFS一道形成了处理海量数据的核心力量,包括构建Google的搜索索引。不过这两个系统都缺乏实时随机存取数据的能力,意味着尚不足以处理Web服务。 GFS的另一个缺陷就是,它适合存储少许非常非常大的文件,而不适合存储成千数万的小文件,例如社交平台上的图片,因为文件的无数据信息最终要存储在主节点的内存中,文件越多master的压力越大。 这时候需要一个能够驱动交互应用的解决方案,且能够同时利用以上两种基础架构和依靠GFS 存储的数据冗余和数据可用性较强的特点。存储的数据应该拆分成特别小的条目,然后由系统将这些小记录聚合到非常大的文件中,并提供一些索引排序,让用户可以查找最少的磁盘就能够获取到数据。最终,...
