【设计模式】三个原则
三个原则SRP(单一职责原则)就一个类来说,应该仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者限制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受意想不到的破坏。软件设计真正要做的许多内容其实就是发现职责并把那些职责互相分离。如果你能想到多于一个理由去修改一个类,那么这个类就有多于一个的职责。
举个例子窗体程序俄罗斯方块,窗体程序和游戏逻辑应该是分离的。比如说如果要移植程序,那么在不同平台上只需要修改窗体类而不需要再去修改游戏逻辑的类。写到这里的时候我想起了我自己写过的多功能日历ValCalender。在这个用QT开发的程序里,虽然我已经尽量地进行了封装和创建了足够多的类,现在来反思我发现我封装的大多数还是窗口杂糅了对应功能的类,我的功能依赖于窗口实体,因此二者是杂揉的,没有符合单一职责原则,可移植性就很低了……🤔
OCP(Open-Close Principle)开放封闭原则OCP认为软件实体应该是可扩展但是不可修改的。也就是说一方面对于扩展是开放的,另一方面对于更改是封闭的。尽管是理想 ...
关于在七月凌晨反思自己生活状态的随想
于是我干脆不睡了,反正心思不在睡眠。
与其囫囵吞枣发布我琐碎庸碌的生活中好不容易积攒起来的宁静,我想不如模仿摄影作品的简介,给每一张这样的相片给出足够的描述,也当作是我当下对生活感触的记录。
是的,对生活的感触,老实说,我已经很久没有看书——没错就是那种在深夜醒来意识到也没有愧疚感的状态,也很久没有画画或是认真地去做一支视频了……这些事情是我曾经最喜欢做的事情,自以为是在表达自己眼中的世界。所以这意味着什么呢,这一段时间,我丢失了对生活的感触,或者说没有时间、不愿意把时间留给感悟生活了。现如今回想,反倒是时间最紧张的高中,是我这些事情私底下偷偷干的最多,留下的文字恐怕也是最多的时候。
是的那么为什么我现在又开始了?因为我意识到了自己现在的处境。高中在对我来说现实苦闷和理想翱翔冲突最大的时候,哪几件事情对我来说是灵魂的偷渡,是人文、艺术,是跟世界、跟自己的对话,是救赎。现在同样是我落差比较大而且面临比较重要的人生抉择而颇感迷茫的时候。所以,当某天晚上我终于因为某些情绪有意无意点开一支探讨孤独的视频,我尘封的记忆被唤醒了。
怎么说呢,那只视频刘擎教授是在谈孤独,谈别人谈孤独,谈别人谈孤独的 ...
【刘擎】孤独应该被享受还是应该被拯救?我们如何面对孤独?
本文转载分享B站上刘擎教授的视频内容,使用AI工具提取音频整理而成。
【刘擎】孤独应该被享受还是应该被拯救?我们如何面对孤独?
害怕孤独的人,大约是害怕自己:因为肤浅而不敢深究自己,或者,因为自己过于复杂纠结,而不能够,明辨自己。承受孤独的能力是一个人灵魂深度的显现。
大家好,我是刘擎。今天呢,我们继续来谈论孤独这个话题。上一次我们谈了孤独是什么,以及他是为什么来的。孤独呢,是一种难以描述、难以定义,却是正确的感觉。主要是让我们感到跟世界脱节了,我们有一种虚空、无力、无意义感的这样一种普遍的感受。而他是一种现代现象,那么现代人怎么来面对孤独呢?有一些方法,但是我先说大部分是不太起作用的。如果它起作用,我们现代人不会为普遍的这个孤独感困扰或者感到焦虑了。
这本书啊,《孤独传》他里面专门讲了,就是说爱情成为现代人好像拯救孤独的一个特别重要的方式。为什么呢?是因为当我们觉得跟世界脱节的时候,如果有一亲密关系就是爱情关系,爱情当中人和人之间的联系是非常全面的。他是从身体到精神到趣味,它是一个全面的关系。于是好像是成为一个传统社会的一个替代物,在这里呢,而且我们会有一种一种灵魂的高度的契合。所 ...
WSL安装Linux虚拟机(以Ubuntu为例)
WSL安装Linux虚拟机(以Ubuntu为例)为什么要用WSLWSL作为win10的新特性,比起传统获取Linux操作系统环境的方式更加轻量化,简单便捷,使用的开发者也不少。
WSL原理图剖析
使用WSL安装Ubuntu具体步骤
打开WSL相关设置在应用->可选功能->更多windows功能中,拉到最下面勾选Windows下的Linux子系统选项和虚拟机平台选项,然后重启(截图的时候没有勾选虚拟机平台,后来网上看经验贴和视频弹幕的时候发现有人说要勾选)。
安装Ubuntu重启之后,直接在Windows store搜索Ubuntu下载。打开cmd,这个时候在新建标签页那里点击下拉菜单会发现已经出现了Ubuntu的选项。于是就新建一个Ubuntu标签页打开,看到如下图所示的内容,发现这里和黑马的教程不一样了,出现了看不懂的报错……但是给了一个文档的地址。
错误处理(下载一个更新包)点击查看文档,发现需要安装Linux kernel update更新包,大小只有6mb左右。
安装好Linux kernel update更新包之后重新打开,发现已经可以注册账号并且正常使用命令行了 ...
VMware + Linux centOS 联网 & final shell 远程连接
VMware workstation 17 player + Linux centOS 实现联网 & final shell 实现远程连接VMware workstation 17 player + Linux centOS 实现联网vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那么这些都是有什么作用呢?其实,我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。
前置知识桥接模式桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相 ...
【数据结构】树与二叉树
树与二叉树前置知识
树和图属于非线性结构(一对多),其他线性结构属于一对一(前驱和后驱唯一)。
树的其他表示方式:嵌套集合,凹入表示,广义表
树的度是节点度的最大值
有序树、无序树
森林:是 m 棵互不相交的树的集合(把根节点删除,树就变成了森林)
二叉树的逻辑结构和存储结构
完全二叉树的高度 h 和节点数 n 的关系 $2^{(h-1)}-1 < n < 2^h-1$ , 变形为 $h = [log_2n](向下取整) +1$ 或者 $h = [log_2 (n+1)] (向上取整)$
总分支数量 = 总结点数
叶节点数$N_0$,单分支节点数$N_1$,双分支节点数$N_2$
则有总结点数 $=N_0+N_1+N_2$
总分支数 $=N_1+2N_2$
$N_0=N_2+1$(叶子结点数量等于双分支节点数量+1)
完全二叉树顺序存储结构:比如某个节点序号为 n,则其左孩子序号为 2n+1,右孩子的序号为 2n+2
$N(总结点数) = e(边数)+1$
$e = N00+N11+N22+……Nnn$(这两条公式都可以通过把所有分支拿到同一边来完成证明)二叉树链式存 ...
【设计模式】简单工厂模式
简单工厂模式一句话概括简单工厂的特点就是,使用 唯一工厂类 来完成 抽象产品类 对象实例化的工作,客户端只负责调用工厂类的函数接口。举个例子,一个计算器项目中有一个名为 operationFactory 的工厂类,这个工厂类包含一个createOperate的成员方法,返回的是一个符合需求的该类型的对象。客户端只需要创建一个新对象并且把在这个对象赋值为调用 createOperator 的返回值。以下是工厂类代码:12345678910111213class Operation{Operation createOperate(string operator){Operaton oper = null;switch(operatpr){case “+”: oper = new OperationAdd(); break;//其他类似运算省略}return oper;}}以下是客户端代码:12345Operator oper;oper = OperationFactory.createOperate(“+”);oper ...
Digital Logic Review Notes
数字逻辑复习笔记
Chapter 1 二进制控制复杂性的艺术“3Y” 原则
Hierarchy (层次化)把系统划分为若干模块,然后进一步划分每个模块直到这些模块可以很容易理解
Modularity(模块化)所有模块有定义好的功能和接口,以便于他们之间可以很容易地相互连接而不会产生意想不到的副作用
Regularity(规整化)在模块之间寻求一致,通用模块可以重复使用多次,以便减少设计不同模块的数量
数制十进制、二进制、八进制和十六进制的转换二进制加减法数字抽象噪声容限NM_L = V_IL - V_OLNM_H = V_OH - V_IH
静态约束 static discipline牺牲使用任意模拟电路元件的自由来换取数字电路的简单可靠
同一个逻辑系列(logic family)的元器件遵循相同的静态约束,逻辑门之间保持兼容的逻辑电平Chapter 2 组合逻辑设计组合电路的概念
每一个电路元件本身就是组合电路
每一个电路结点或者是一个电路的输入,或者是连接到外部电路的一个输出端
电路不包含回路;经过电路的每条路径最多只能经过每个电路结点一次布尔表达式与或式(SOP,sum of p ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment