命令模式

命令模式(Command)

╄→гoц情女王★ 提交于 2020-03-28 03:12:53
一、命令模式介绍 命令模式: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。 说白了,就是将一系列的请求命令封装起来,不直接调用真正执行者的方法,这样比较好扩展。 命令模式UML图: Command(抽象命令类) :抽象出命令对象,可以根据不同的命令类型。写出不同的实现类 ConcreteCommand(具体命令类) :实现了抽象命令对象的具体实现 Invoker(调用者/请求者) : 请求的发送者,它通过命令对象来执行请求。 一个调用者并不需要在设计时确定其接收者,因此它只与抽象命令来之间 存在关联。在程序运行时,将调用命令对象的execute() ,间接调用接收者的相关操作。 Receiver(接收者) :接收者执行与请求相关的操作, 真正执行命令的对象 。具体实现对请求的业务处理。未抽象前,实际执行操作内容的对象。 Client(客户端) :在客户类中需要创建调用者对象,具体命令类对象,在创建具体命令对象时指定对应的接收者。发送者和接收者之间没有之间关系。 都通过命令对象来调用。 二、命令模式代码实现 首先定义一个命令的接收者,也就是到最后真正执行命令的那个人 1 2 3 4 5 6 //接收者:真正执行命令的对象 public class Receiver { public void action(){

Linux文件

别说谁变了你拦得住时间么 提交于 2020-03-27 23:43:02
一、文件系统 管理文件系统 文件系统日志方法: 数据模式 索引节点和文件都会被写入日志;丢失数据风险低,但性能差 有序模式 只有索引节点数据会被写入日志,但只有数据成功写入后才删除;在性能和安全性之间取得了良好的折中 回写模式 只有索引节点数据会被写入日志,但不控制文件数据何时写入;丢失数据风险高,但仍比不用日志好 操作文件系统 fdisk 创建分区——sudo fdisk /dev/sdb fdisk 命令: a 设置活动分区标志 b 编辑BSD Unix系统用的磁盘标签 c 设置DOS兼容标志 d 删除分区 l 显示可用的分区类型 m 显示命令选项 n 添加一个新分区 o 创建DOS分区表 p 显示当前分区表 q 退出,不保存更改 s 为Sun Unix系统创建一个新磁盘标签 t 修改分区的系统ID u 改变使用的存储单位 v 验证分区表 w 将分区表写入磁盘 x 高级功能 创建文件系统——sudo mkfs.ext4 /dev/sdb 创建文件系统的命令行程序: 工 具 用 途 mkefs 创建一个ext文件系统 mke2fs 创建一个ext2文件系统 mkfs.ext3 创建一个ext3文件系统 mkfs.ext4 创建一个ext4文件系统 mkreiserfs 创建一个ReiserFS文件系统 jfs_mkfs 创建一个JFS文件系统 mkfs.xfs

《吐血整理》Redis 性能优化的 13 条军规!史上最全

六月ゝ 毕业季﹏ 提交于 2020-03-27 23:04:31
Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1)),但由于 Redis 是单线程执行的特点,因此它对性能的要求更加苛刻,本文我们将通过一些优化手段,让 Redis 更加高效的运行。 本文我们将使用以下手段,来提升 Redis 的运行速度: 缩短键值对的存储长度; 使用 lazy free(延迟删除)特性; 设置键值的过期时间; 禁用长耗时的查询命令; 使用 slowlog 优化耗时命令; 使用 Pipeline 批量操作数据; 避免大量数据同时失效; 客户端使用优化; 限制 Redis 内存大小; 使用物理机而非虚拟机安装 Redis 服务; 检查数据持久化策略; 禁用 THP 特性; 使用分布式架构来增加读写速度。 1.缩短键值对的存储长度 键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下: 从以上数据可以看出,在 key 不变的情况下,value 值越大操作效率越慢,因为 Redis 对于同一种数据类型会使用不同的内部编码进行存储,比如字符串的内部编码就有三种:int(整数编码)、raw(优化内存分配的字符串编码)、embstr(动态字符串编码),这是因为 Redis

《吐血整理》Redis 性能优化的 13 条军规!史上最全

烂漫一生 提交于 2020-03-27 23:04:20
Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1)),但由于 Redis 是单线程执行的特点,因此它对性能的要求更加苛刻,本文我们将通过一些优化手段,让 Redis 更加高效的运行。 本文我们将使用以下手段,来提升 Redis 的运行速度: 缩短键值对的存储长度; 使用 lazy free(延迟删除)特性; 设置键值的过期时间; 禁用长耗时的查询命令; 使用 slowlog 优化耗时命令; 使用 Pipeline 批量操作数据; 避免大量数据同时失效; 客户端使用优化; 限制 Redis 内存大小; 使用物理机而非虚拟机安装 Redis 服务; 检查数据持久化策略; 禁用 THP 特性; 使用分布式架构来增加读写速度。 1.缩短键值对的存储长度 键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下: 从以上数据可以看出,在 key 不变的情况下,value 值越大操作效率越慢,因为 Redis 对于同一种数据类型会使用不同的内部编码进行存储,比如字符串的内部编码就有三种:int(整数编码)、raw(优化内存分配的字符串编码)、embstr(动态字符串编码),这是因为 Redis

惊呆了,竟然可以用这种方式秒建Redis集群?

♀尐吖头ヾ 提交于 2020-03-27 23:04:10
前面我们讲了 《Redis 性能优化的 13 条军规!》 ,其中最重要的一条就是使用 Redis 的集群功能,那么本文我们就来看看,如何用 1s 钟的时间来创建一个 Redis 集群。 Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。 Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。 Redis Cluster 是无代理模式去中心化的运行模式,客户端发送的绝大数命令会直接交给相关节点执行,这样大部分情况请求命令无需转发,或仅转发一次的情况下就能完成请求与响应,所以集群单个节点的性能与单机 Redis 服务器的性能是非常接近的,因此在理论情况下,当水平扩展一倍的主节点就相当于请求处理的性能也提高了一倍,所以 Redis Cluster 的性能是非常高的。 Redis Cluster 架构图如下所示: 搭建 Redis Cluster Redis Cluster 的搭建方式有两种,一种是使用 Redis 源码中提供的 create-cluster 工具快速的搭建 Redis

docker常用管理命令

喜你入骨 提交于 2020-03-27 22:00:28
本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来。 根据自己的理解,总的来说分为以下几种: 容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause] 容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port] 容器rootfs命令 — docker [commit|cp|diff] 镜像仓库 — docker [login|pull|push|search] 本地镜像管理 — docker [images|rmi|tag|build|history|save|import] 其他命令 — docker [info|version] 看一个变迁图 1. 列出机器上的镜像(images) # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.10 2185fd50e2ca 13 days ago 236.9 MB … 其中我们可以根据REPOSITORY来判断这个镜像是来自哪个服务器,如果没有 / 则表示官方镜像,类似于username/repos

docker学习(2)--基础命令

て烟熏妆下的殇ゞ 提交于 2020-03-27 20:52:51
  转载请注明源出处: http://www.cnblogs.com/lighten/p/6875355.html 1.基本命令   搭建好docker环境之后,使用docker help命令查看docker的基本用法: docker COMMAND.            目前我们较为常使用的是commands下面的指令,如果使用swarm相关功能会用到management commands。目前我使用的是17.03.1-ce,后续版本功能应该会更加细分,可能会替换成management来使用。比如docker images列出所有镜像,和docker image ls的功能是一样的,通常我们习惯使用docker build构建镜像,也可以使用docker image build命令。本文还是介绍commands的相关命令,management的命令更多,熟悉了其实都一样。主旨还是为了学会怎么使用docker,命令不会用就通过docker swarm --help的方式去查看。 2.命令详解   命令太多,介绍不完,这里介绍一些使用docker时接触比较频繁的命令。 2.1 attach   连接一个运行中的容器。      1.detach-key: 覆盖脱离容器的键序列   2.no-stdin:不连接STDIN   3.sig-proxy:代理进程所接收的所有字符

Linux命令find讲解

北城以北 提交于 2020-03-27 18:42:37
3 月,跳不动了?>>> 感谢参考原文- http://bjbsair.com/2020-03-27/tech-info/7096/ find 命令概览 Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 1.命令格式: find pathname -options [-print -exec -ok ...] 2.命令功能: 用于在文件树种查找文件,并作出相应的处理 3.命令参数: pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print:find命令将匹配的文件输出到标准输出。 -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令

2019-2020-2 网络对抗技术 20175318 Exp3 免杀原理与实践

孤街浪徒 提交于 2020-03-27 12:18:51
一、免杀原理及基础问题回答 1.免杀原理 2.基础问题回答 3.免杀效果评价 二、实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 使用msf编码器生成各种后门程序及检测 使用veil-evasion生成后门程序及检测 半手工注入Shellcode并执行 使用其他课程未介绍的方法 任务二:通过组合应用各种技术实现恶意代码免杀 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本 三、开启杀软能绝对防止电脑中恶意代码吗? 四、实验总结与体会 一、免杀原理及基础问题回答 1.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。 2.基础问题回答 杀软是如何检测出恶意代码的? 基于特征码的检测:简单来说一段特征码就是一段或多段数据,经过对许多恶意代码的分析,我们发现了该类恶意代码经常出现的一段或多段代码,而且是其他正常程序没有的,即特征码。如果杀软检测到一个可执行文件包含特征码就认为其是恶意代码。

十个你可能没用过的Linux命令

。_饼干妹妹 提交于 2020-03-27 04:13:43
excerpted from 图灵社区 如果你是一个硬件系统管理员或者Linux工程师,你可能会记得大多数Linux命令行技巧。下面的这些Linux命令行技巧通常不被Linux用户所使用。 1.使用 pgrep 快速查找一个PID pgrep 遍历目前正在运行的进程然后列出符合查找规则的进程ID(PID)。 pgrep ssh 这条命令会列出所有与ssh有关的进程。 2.执行上次执行过的命令 这个标题有些绕口,但是它是名副其实的。 !! 这会执行你上一次在命令行中执行过的命令。 3.执行最近一次以XX开头的命令 如果你想要从命令行历史中执行一个s开头的命令时,你可以使用如下命令: !s 它会执行最近一次在命令行中执行且以字母s开头的命令。 4.反复执行一个命令并在屏幕上输出 watch 会反复运行一个命令,并在屏幕上打印输出。它可以让你实时的观察程序的输出变化。默认情况下,程序每2秒运行一次。 watch 命令与 tail 命令很相似。 watch -d ls -l 这条命令会监视当前目录的所有文件,并且高亮文件所发生的改变。 5.在VI/VIM中快速保存 如果你很匆忙,你可以通过 【SHIFT + zz】 快速从vi的插入模式中退出。 6.快速登出终端 你可以快速使用 【CTRL+D】 快速登出终端。 7.返回你上一个所在目录 你可以使用如下命令返回你上一次所在的目录: cd -