Share Mind

Love Reading | Film | Climbing | Snooker

前言


Tmux是一个终端复用器(Terminal multiplexer)类自由软件,类似于ScreenByohu,但是比这两者功能更强大,Wiki上这样说Tmux

tmux is an open-source terminal multiplexer for Unix-like operating systems. 
It allows multiple terminal sessions to be accessed simultaneously in a single window.
It is useful for running more than one command-line program at the same time.
It can also be used to detach processes from their controlling terminals, allowing remote sessions to remain active without being visible

Tmux是类Unix操作系统上的开源终端复用器,其允许多个终端会话在单个窗口中同时被访问,对于同一时刻允许多个命令行的程序来说很有用。它可以从控制终端中分离出进程并且允许远程回话在无窗口不可视化情况下保持激活状态。

阅读全文 »

前言


有些小伙伴喜欢去像美国、加拿大,包括中国台湾等国家或地区旅游时候,准备不充分的时候出现这样尴尬的情况:当手机没电的时候,想用自己从国内带的充电器充电时候发现充电器罢工不能用了,这是因为上述这些国家的插座使用的不是国内50Hz的220V电压,而是60Hz的110V电压供电的,电压低了1倍,自然是不能用了。有经验的童鞋会准备一个电源插座转换器,将110V电压转为国内标准的220V电压。这里所说的转换器,其实就是起到一个适配电压的目的,也就是本篇要讨论的适配器模式。

阅读全文 »

前言


在平时的生活中,手机几乎无处不在,有些比较细心的机友可能会给手机增加各种一些额外扩展的功能,如屏保防止手机碎屏,添加些小挂件增加美观等等。同时市面上有各种类型的手机,如Iphone,Nokia等等,,这样就会组合成带有装饰功能的各种手机了,如带屏保的iphone手机,带屏保又带挂件的Nokia手机等。对于此种现象的描述,可以考虑使用装饰模式。

阅读全文 »

前言


在稍微大一些的公司组织结构体系中,会有不同的功能部门,如HR Department、Financial Department等等。而有时候为了方便异地管理,又设置不同的子公司,子公司内部又有上述不同的功能部门组成,对于这种类似于文件系统的树形结构,可以考虑使用组合模式去实现。

阅读全文 »

前言


在使用Visual Studio开发应用程序时候,在完成代码后,大家都习惯的点击Build按钮完成代码的编译链接过程,其实在IDE内部进行了一系列的操作:先Scanner扫描,后Parser解析,而后MidcodeGenerator产生中间代码,最后MachcodeGenerator产生最终的机器码。IDE的好处就是界面对客户来说非常简洁,内部的各个子系统对客户来说是隐藏的,客户也没必要知道,只需一个按钮即可。这个按钮与本文要介绍的外观模式很类似。

阅读全文 »

前言


在一个陌生的城市找房子住的时候,一般都需要通过房产中介或者熟人介绍的方式来找房子。这个第三方的角色相当于代理的角色,负责代理真实的房东或业主来给我们提供相关的租房信息,而不需要我们直接与房东接触。同时,而为了安全性,一般代理还会让我们进行身份验证,同时为了方便租户管理,他们还会记录相关的租户信息。这里的第三方角色就是本文将要介绍的代理模式中的代理对象。

阅读全文 »

前言


最近的Google AlphaGo大战李世石的围棋人机大战很火,虽然人类最终败北,但是正如Google执行董事施密特所说:“不管输赢,都是人类的巨大的胜利”。如果想自己设计一个围棋软件程序,你会发现,围棋中存在着大量的黑子和白子,它们的形状、大小都一模一样,只是出现的位置不同而已。如果将每一个棋子都作为一个独立的对象存储在内存中,将导致该围棋软件在运行时所需内存空间较大,为了解决这个问题,可以考虑使用对象共享复用模式—享元模式来设计该围棋软件的棋子对象。

阅读全文 »

前言


在绘图时候,会用到各种各样的画笔,画笔按照型号大小,可以分为大中小三种型号,而对于三种不同的型号的画笔又包含多种颜色,对于M种型号的N种颜色的画笔,需要涉及到M*N种画笔对象;但如果把画笔的型号和颜色这两个属性分开来处理,即提供三种型号的画笔,不同颜色通过另外的单独的不同的颜料来搭配之,此时,对于M种不同型号的N种颜色的画笔,仅需要涉及到M + N种对象。
而且增加一种类型的画笔,对于前者来说需要增加N种颜色的类型,而后者只需要增加一种类型即可。对于画笔来说型号和颜色有两种不同变化维度,两个维度有较强的耦合性,将两者解耦,使两个维度独立变化就是本章要介绍的桥接模式。

阅读全文 »

前言


在玩RPG之类游戏的时候,每次通过一次游戏关卡的时候,一般我们都会把游戏的角色状态保存一下,继续通下一关,如果下一关难度比较大很难通过失败后,又懒得从第一关开始重新。幸亏有关卡的保存功能,我们可以直接从上次保存的关卡中重新开始即可,提高了通关的效率。这里的游戏角色的保存和恢复功能就是本文将要介绍的备忘录模式。

阅读全文 »

前言


有时候,我们想用一些简单的语言来实现一些特点的操作,只要向计算机输入一个特定的句子,能够按照预定的文法规则对其进行解释。如一个简单的加减法解释器,只要输入一个加减法表达式,他就能计算出表达式的结果。像这种设计自定义的简单语言文法的功能可以采用解释器模式来实现。

阅读全文 »