命令模式

Redis-Scan命令

纵饮孤独 提交于 2020-03-06 02:05:53
Scan命令 Scan命令:从海量的 key 中找出满足特定前缀的 key 列表 查询key为某一类型的数据可能有很多方法,例如可以通过keys*或者是keys codehole*,查询key前缀为codehole的redis缓冲数据,但是当缓冲数据量比较大时,该命令表耗费时间,效率比较慢,具体的缺点如下列所说那样。 一、keys * 、keys codehole* 分别是查询全部的key以及查询前缀为codehole的key。特点太暴力,性能不好,搜索的是整个redis; 缺点: 1、没有 offset、limit 参数,一次性吐出所有满足条件的 key,万一实例中有几百 w 个 key 满足条件,当你看到满屏的字符串刷的没有尽头时,你就知道难受了。 2、keys 算法是遍历算法,复杂度是 O(n),如果实例中有千万级以上的 key,这个指令就会导致 Redis 服务卡顿,所有读写 Redis 的其它的指令都会被延后甚至会超时报错,因为 Redis 是单线程程序,顺序执行所有指令,其它指令必须等到当前的 keys 指令执行完了才可以继续。 二、由于keys命令存在以上的缺点,所以redis引入以下scan命令,scan命令的特点: 1、复杂度虽然也是 O(n),但是它是通过游标分步进行的,不会阻塞线程; 2、提供 limit 参数,可以控制每次返回结果的最大条数,limit

设计模式-命令模式

▼魔方 西西 提交于 2020-03-05 23:40:29
命令模式结构图 意图: 将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 主要解决: 在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。 其中: Command声明执行操作的接口。 ConcreteCommand将一个接收者对象绑定于一个动作;调用接收者相应的操作,以实现Execute。 Client创建一个具体命令对象并设定它的接收者。 Invoker要求该命令执行这个请求。 Receiver知道如何实施与执行一个请求相关的操作。任何类都可以作为一个接收者。 应用举例 假如,程序员负责改bug和写代码,主管负责命令程序员执行操作。 #include <iostream> #include <string> #include <vector> using namespace std; //程序员,负责改bug,写程序 class Programmer { public: //改bug void ChangeBug() { cout << "ChangeBug" << endl; } //写程序 void WriteCode() { cout << "WriteCode" << endl; } }; /

Git命令总结

自作多情 提交于 2020-03-05 18:09:32
1,配置用户名和邮箱 $ git config --global user.name “Your Name” $ git config --global user.email “email@example.com” 2,初始化一个Git仓库 $ git init 3,添加文件到Git仓库 (1)使用命令git add ,注意,可反复多次使用,添加多个文件; 强制添加忽略文件到Git:$ git add -f App.class (2)使用命令git commit -m ,完成 4,查看状态 $ git status: 可以让我们时刻掌握仓库当前的状态 5,查看修改内容 $ git diff: 顾名思义就是查看difference,显示的格式正是Unix通用的diff格式 用git diff HEAD – red.txt命令可以查看工作区和版本库里面最新版本的区别 6,日志查看 (1)git log可以查看提交历史,以便确定要回退到哪个版本。 (2)用git reflog查看命令历史,以便确定要回到未来的哪个版本。 简化log命令: $ git log --pretty=oneline $ git log --pretty=oneline --abbrev-commit 用git log --graph命令可以看到分支合并图。 7,回退 HEAD指向的版本就是当前版本,因此

linux

泄露秘密 提交于 2020-03-05 18:03:30
计算机相关 linux linux的发行版 远程登录 常用的基础命令 vim编辑器 tar 解压缩 dns Virtualenv 虚拟环境 nginx 负载均衡 supervisor Redis redis 持久化 Docker dockerfile rabbitmq 作用 ACK 机制 salt RPC 计算机必须有的组成部分:cpu、硬盘、内存、电源 服务器硬件 显示屏 内置键盘 usb接口 触摸板 网口 电源接口 散热口 摄像头 电源开关 服务器硬件厂商 dell :戴尔 hp :惠普 联想 浪潮 ibm cpu : 人的记忆,如同计算机的内存条,如果进程不重启,服务器不重启,内存中的数据也不丢 内存: 是CPU和磁盘之间的缓冲设备,也叫临时存储器(存放数据),断电时数据丢失 服务器分类:互联网公司,怎么选择服务器?一般有什么 1).物理服务器,有钱的大公司,买自己的服务器,建造自己的机房(零度,无尘,无静电)防止机器短路,数据丢失 有钱的公司,bat,建造自己的机房 中等的公司,普通的外企,也有自己的服务器,但是服务器,托管在别人的机房(世纪互联这家公司) 2).云服务器,阿里云,腾讯云(便宜,省钱,无烦恼),初创型的小公司 3).vmware虚拟化技术 linux linux 系统的优势: 跨平台的硬件支持; 丰富的软件支持; 多用户多任务; 可靠的安全性 ;

30 分钟快速入门 Docker 教程

不想你离开。 提交于 2020-03-05 16:03:08
原文地址: 梁桂钊的博客 博客地址: http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 一、欢迎来到 Docker 世界 1. Docker 与虚拟化 在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系统上建立了一个中间虚拟软件层 Hypervisor ,并利用物理机器的资源虚拟出多个虚拟硬件环境来共享宿主机的资源,其中的应用运行在虚拟机内核上。但是,虚拟机对硬件的利用率存在瓶颈,因为虚拟机很难根据当前业务量动态调整其占用的硬件资源,因此容器化技术得以流行。其中,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。 Docker 容器不使用硬件虚拟化,它的守护进程是宿主机上的一个进程,换句话说,应用直接运行在宿主机内核上。因为容器中运行的程序和计算机的操作系统之间没有额外的中间层,没有资源被冗余软件的运行或虚拟硬件的模拟而浪费掉。 Docker 的优势不仅如此,我们来比较一番。 特性 Docker 虚拟机 启动速度 秒级 分钟级 交付/部署 开发、测试、生产环境一致 无成熟体系 性能 近似物理机 性能损耗大 体量 极小(MB) 较大(GB) 迁移/扩展 跨平台,可复制

grep、egrep命令用法

99封情书 提交于 2020-03-05 14:22:15
何谓正则表达式 正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为regex、regexp或RE),是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。 正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,不表示其字面意义,而用于额外功能性描述。 正则表达式分类 正则表达式根据元字符的数量及功能不同又分为基本正则表达式(grep)和拓展正则表达式(egrep)。而grep和egrep同属于文本搜索工具,可根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。用法上grep –E等同于egrep,与grep和egrep相似的文本搜索工具还有fgrep,因不支持使用正则表达式,所以不再单独介绍。 基本正则表达式(grep) 语法格式:grep[option]... 'PATTERN' FILE... 基本正则表达式元字符: 1.字符匹配: .:任意单个字符 [ ]:匹配指定范围内的任意单个字符 [0

【linux】less 命令详解

…衆ロ難τιáo~ 提交于 2020-03-05 12:43:48
转自: https://www.cnblogs.com/GNblog/p/6932252.html less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按 键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。 1.命令格式: less [参数] 文件 2.命令功能: less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。 3.命令参数: -b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o <文件名> 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x <数字> 将“tab

Linux下的sed流编辑器命令详解

孤者浪人 提交于 2020-03-05 12:39:27
命令示例: [root@master rh]# cat test.txt this is first line this is second line this is third line this is fourth line this fifth line happy everyday end a 命令 sed '1a \add one' test.txt 本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用$表示最后一行,比如2,$表示第二行到最后一行中间所有的行(包含第二行和最后一行)。 本例的作用是在第一行之后增加字符串”add one”,从输出可以看到具体效果。 sed '1,$a \add one' test.txt 本例表示在第一行和最后一行所有的行后面都加上”add one”字符串,从输出可以看到效果。 sed '/first/a \add one' test.txt 本例表示在包含”first”字符串的行的后面加上字符串”add one”,从输出可以看到第一行包含first,所以第一行之后增加了”add one” sed '/^ha.*day$/a \add one' test.txt 本例使用正则表达式匹配行,^ha.*day$表示以ha开头,以day结尾的行,则可以匹配到文件的”happy everyday”这样

Linux基本的指令操作

被刻印的时光 ゝ 提交于 2020-03-05 12:24:43
绝对路径: 路径的写法,由根目录/写起,例如:/usr/share/doc这个目录。 相对路径: 路径的写法,不由/写起,例如由/usr/share/doc要到/usr/share/man底下时,可以写成:cd../man这就是相对路径的写法啦。 处理目录的常用命令: ls:列出目录 cd:切换目录 pwd:显示目前的目录 mkdir:创建一个新的目录 rmdir:删除一个空的目录 cp:复制文件或目录 rm:移除文件或目录 mv:移动文件与目录、文件重命名 可以使用man[命令]来查看各个命令的使用文档,例如:man cp ls(列出目录) -a:全部的文件,联通隐藏档(开头为.的文件)一起列出来 -d:仅列出目录本身,而不是列出目录内的文件数据 -l:长数据串列出,包含文件的属性与权限等等数据 cd(切换目录) cd是change Directory的缩写,这是用来变换工作目录的命令。 ~代表主目录 .代表当前目录 ..代表当前目录的上一层目录 pdw(显示目前所在的目录) pwd是print working Directory的缩写,也就是显示目前所在目录的命令。 mkdir(创建新目录) mkdir(make directory) rmdir(删除空的目录) rmdir仅能删除空的目录,可以使用rm命令来删除非空目录 cp(复制文件或目录) cp 来源档 目的档 rm

CentOS(九)--与Linux文件和目录管理相关的一些重要命令①

你。 提交于 2020-03-05 12:24:23
接上一篇文章,实际生产过程中的目录管理一定要注意用户是root 还是其他用户。 一、目录与路径 1.相对路径与绝对路径 因为我们在Linux系统中,常常要涉及到目录的切换,所以我们必须要了解 "路径" 以及 "相对路径" 与 "绝对路径" 的概念。 在之前的学习中,就反复的强调了Linux的目录是 "树状目录" 。假设我们需要在任意一个目录下切换到另一个目录下,通常是使用的是 cd 这个命令,此时在写切换的目录名时就有两种书写方式,也就是我们常说的使用 "相对路径" 与 "绝对路径" 来书写 绝对路径:路径的写法【 一定由根目录 / 写起】,例如: /usr/share/doc 这个目录。 相对路径:路径的写法【 不是由 / 写起】,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: 【cd ../man】这就是相对路径的写法。相对路径意指相对于当前的工作目录 我们知道,在Linux的系统中完整的文件路径名的长度最大可以达到4096个字符,所以一个文件路径名太长的话,此时写绝对路径时就非常的麻烦,而且可能写错,所以此时选择使用相对路径来写就会简单一些。 但是,对于文件的正确性来说,绝对路径是比较好的。当我们在写 shell scripts 时,请务必使用绝对路径。虽然可能写绝对路径会稍显麻烦,但是这种写法是绝对不会有问题的。 2.cd