-
3、MAC_IP地址
参考:【MJ亲授】网络协议从入门到底层原理目录 快速浏览 MAC地址 IP地址 子网 超网快速浏览一、mac地址6个字节 前三厂商标识后三自行分配二、IP地址+子网掩码网络号 + 主机号 主机号全0代表网段 主机号全1代表广播向这个网段所有主机发信息三、网址分类A类 B类:128开头 128.0.0.0是第一个B类网段 C类:192开头 192.0.0.0是第一个C类网段四、等长子网划分子网、超网、等长子网划分、变长子网划分 不管是什么怎么划分,都是在A类、B类、...…
-
2、基本概念(二)
参考:【MJ亲授】网络协议从入门到底层原理目录 快速浏览 网络互联模型 计算机之间的通信基础快速浏览一、设备认识1、集线器 无智商,将数据发给任何跟它相连的设备2、网桥 只有两个接口 可以记录接口一侧设备的Mac地址 隔绝冲突域 缺点:接口太少同一接口侧仍然会有冲突3、交换机 具有多个接口的网桥,每个接口的mac地址都知道 局域网的最终解决方案 全球计算机只有网桥连接会怎样?4、路由 连接两个不同的网段 隔绝广播域(连接不同网段)现代的网络使用的是...…
-
1、基本概念
参考:【MJ亲授】网络协议从入门到底层原理目录 快速浏览 互联网(internet) 搭建环境 总结快速浏览一、客户端与服务器通讯过程1、服务端 搭建Java服务器开发环境 项目创建 项目部署到服务器软件,客户端才能访问到。 部署可以理解为给服务器安装软件,只有部署了客户端才能访问到要访问的内容2、客户端 只能由客户端发出请求https://128.10.10.12:8080/qqip地址 + 端口号 + 项目IP地址找到服务器 + 服务器软件监听端口 + 同一个端口下可...…
-
12、优化和重构技巧
目录 优化和重构技巧 总结优化和重构技巧通过前面两篇,MVC转MVP的介绍,我们总结一些优化和重构代码的技巧一 事不过三1.大段重复的代码出现了三次或以上提取成一个公共的方法,这一点是最常见也最容易做到的,只要在平时的编码过程中养成这种习惯,对于出现过三次以上重复代码段,提取成一个公共方法。2.一个类的职责有三种或以上通过合理分层的方式,减少职责这一点在MVP的例子中已经阐述地比较清楚了,通过职责的分层,上层持有下层,下层通过接口与上层通讯。其实这也是MVP模式的本质。3.同类的if/...…
-
11、MVP
目录 MVC模式的问题 MVP模式 总结MVC模式的问题下图是比较标准的MVC模式,也是苹果官方推荐的架构模式。 Model层用来表示实体类,View层负责界面展示和传递UI事件,Controller层负责大部分的业务逻辑。 除此之外,对一部分公共的可复用的逻辑,我们抽象出Service层,提供给Controller使用,另外网络层也独立出来。下图比较清楚地展示了整体架构 根据上篇对MVC模式的介绍,网络层,公共服务,持久化,也可以放在Model层.MVC架构作为苹...…
-
10、MVC
参考:iOS MVC详解本想写一篇关于MVC的文章,发现了上边这篇,摘抄过来,方便阅览目录 MVC的理想模型 MVC在iOS里面的实现 iOS的MVC各层职责 MVC中M层实现的准则 MVC优缺点MVC的理想模型从字面意思来理解,MVC 即 Model View Controller(模型 视图 控制器),是 Xerox PARC 在 20 世纪 80 年代为编程语言 Smalltalk-80 发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中。其用意在于将数据与视图...…
-
9、Observer
参考:观察者模式目录 观察者模式 代码实现观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。主要解决了:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。关键代码:在抽象类里有一个 ArrayList 存放观察者们。可以使用观察者模式创建一种链式触发机制,需要在系统中创建一个触发链,A对象的行为将影响B对象,B对象的行为将影响C对象……...…
-
8、Decorator
参考:装饰器模式目录 装饰器模式 代码实现装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能...…
-
7、Mediator
参考:设计模式入门——中介者模式(mediator) 参考:设计模式之中介者模式(调停模式)目录 中介者模式 代码实现 总结中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。应用实例:1、中国加入 WTO 之前是各个国家相互贸易,结构复杂,现在是各个国家通过 WTO 来互相贸易。 2、机场调度系统。 3、MVC 框...…
-
6、Facade
参考:JAVA设计模式之门面模式(外观模式) 参考:JAVA设计模式之门面模式(外观模式)目录 举一个例子 门面模式 代码实现举一个例子现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其”分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。首先病人必须先挂号,然后门...…
-
5、Strategy
参考:Java设计模式-策略模式实际应用场景 参考:设计模式应用之策略模式目录 策略模式 实际应用 策略模式实现策略模式当业务需求涉及到很多的分支逻辑时,过多的if-else或者过多的switch代码显得很不简洁,而且当我们修改某一分支逻辑时,要改动的很多,比如现在某一分支不要了,就要把这个if条件删除掉,这样是很不好的,这个时候,我们想到了策略模式,替换掉过多的if-else或者switch语句。策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自...…
-
4、AbstractFactory
目录 抽象工厂模式 抽象工厂实现 - 工厂类 抽象工厂实现 - 产品类 抽象工厂实现 - 使用 总结抽象工厂模式简单工厂模式和工厂模式,解决了增加产品对象时的可扩展性,但都是增加的单一类产品,比如CardWatchCenter和Vehicle接口。当我们需要增加产品族(比如冰箱、电视、洗衣机三个物品就是一个产品族)时,就可以使用抽象工厂抽象工厂实现 - 工厂类一、创建抽象工厂接口protocol Factory { func createTelevison() -> ...…
-
3、Factory
目录 工厂模式 工厂模式实现 - 工厂类 工厂模式实现 - 产品类 工厂模式实现 - 使用工厂模式简单工厂模式在产品数量较少时很好用,当数量很多时,工厂类就会很重,代码很多。这个时候我们可以使用工厂模式,使用多个解耦的工厂类,每个工厂类负责创建对应的产品对象这就需要我们有一个工厂类接口,一个产品类接口工厂模式实现 - 工厂类一、创建一个工厂类接口protocol VehicleFactory { func create() -> Vehicle}二、多个 (解耦的) 工...…
-
2、SimpleFactory
目录 什么是工厂模式 简单工厂模式实现 总结什么是工厂模式一、工厂模式工厂模式也是最常用的实例化对象模式了,是用工厂方法代替 new 操作的一种模式。但为什么有了初始化方法,还要有工厂模式?1、是为了控制生产过程,并将生产和使用隔离开。实际开发过程中创建一个产品对象的逻辑可能很复杂,这时我们把这个过程交给工厂。使用时并不关心产品对象是怎么创建的。2、便于扩展,使用工厂模式当我们添加一个新的产品对象时,并不会影响之前的逻辑。开闭原则,对扩展开放,对修改关闭所以工厂模式也是用来创建实例对...…
-
1、Singleton
目录 什么是单例模式 单例模式实现 单例模式应用 补充什么是单例模式最简单,最常用的设计模式之一,主要解决了一个全局使用的类频繁地创建与销毁。 当您想控制实例数目,节省系统资源的时候,就可以使用单例模式1、全局唯一,只初始化一次,只有一个实例 2、只提供一个接口,私有化初始化接口 3、线程安全 4、最好能懒加载(不强求)单例模式实现一、实现class Singleton: NSObject { //存储类型属性在初始化时必须赋值,因为没有初始化器来初始化它,...…
-
【题目】9、高频
目录 283. 移动零 1. 两数之和 283. 移动零题目描述 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/move-zeroes 著作权归领扣网络所有。商业转载...…
-
【题目】8、DFS
目录 17. 电话号码的字母组合 46. 全排列 47. 全排列 II 22. 括号生成17. 电话号码的字母组合题目描述17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以...…
-
【题目】7、二叉树
目录 236. 二叉树的最近公共祖先 99. 恢复二叉搜索树 333. 最大BST子树二叉树的绝大部分题目都可以直接通过递归 遍历解决 前序遍历 中序遍历 后序遍历 层序遍历236. 二叉树的最近公共祖先题目描述236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q, 最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自...…
-
【题目】6、动态规划
目录 47. 礼物的最大价值 64. 最小路径和 62. 不同路径 121. 买卖股票的最佳时机 72. 编辑距离 5. 最长回文子串47. 礼物的最大价值题目描述在一个 m*n 的棋盘的每一格都放有一个礼物, 每个礼物都有一定的价值(价值大于0)。 你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。 给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例 1: 输入: [ [1,3,1], [1,5,1], ...…
-
【题目】5、字符串
目录 01.09. 字符串轮转 242. 有效的字母异位词 572. 另一个树的子树 151. 翻转字符串里的单词 3. 无重复字符的最长子串01.09. 字符串轮转题目描述 01.09. 字符串轮转 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成( 比如,waterbottle是erbottlewat旋转后的字符串)。 示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True 示例2: 输入...…