一文总结常见基础排序算法

(本文属于排序算法总结,并非零基础讲解。更多内容可以参考:https://www.runoob.com/w3cnote/ten-sorting-algorithm.html) 0 前言 个人总结的常见基础排序算法,罗列如下: 简单排序,时间复杂度 O(N2):冒泡排序、选择排序、插入排序 高级排序,时间复杂度 O(NlogN):归并排序(自顶向下、自底向上)、快速排序(含3路快排)、堆排序 像希尔

【重学操作系统】【零】自序

1 写作动机 随着工作年限的增长,发现自己懂的越来越少。或许听说过的概念很多,但深刻理解的却极少。最恐怖的是,回顾本科专业课程,或者常见面试问题,心里都会发虚。是时候把脑子里的散乱的知识彻底整理一遍了,错误的扔掉,缺失的补上。 《操作系统》无疑是最有吸引力的。首先,它能装逼;其次,它真的有用。我的兴趣一直在业务层,具体是“业务系统”,一直苦于无从学习怎样设计并实现一个优秀的复杂软件系统。操作系统是

设计模式摘要(核心篇)四、工厂模式

白墨曰:创建对象,是极可能变化的过程,把这个过程封装到工厂中。 工厂模式包含: 简单工厂 工厂方法 抽象工厂 (一)简单工厂 简单工厂不是一个设计模式,更像一种编程习惯。 模式应用 场景 一家比萨店,生产各种比萨 应用类图: 参考代码:简单工厂 (二)工厂方法模式 定义:工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 作用 工厂方法用来处理

设计模式摘要(核心篇)三、装饰者模式

定义:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 模式类图 作用 使用对象组合的方式,在运行时装饰类。一旦熟悉了装饰技巧,你将能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。 注意点 每个地方都采用开闭原则,是一种浪费。不仅没必要,还会导致代码变得复杂且难以理解。 虽然我们用到了继承,但是这么做的重点在于,装饰者和被装饰者必须是一样的类型,

设计模式摘要(核心篇)二、观察者模式

定义:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 模式类图 作用 帮助对象知悉状况,不会错过该对象感兴趣的事。对象可以在运行时决定是否要继续被通知。观察者模式是 JDK 中使用最多的模式之一,非常有用。 注意点 一对多关系 “一个”主题对应“多个”观察者的关系。主题是真正拥有数据的人,观察者是主题的依赖者,在数据变化时更新,这样比起让许多对象控

设计模式摘要(核心篇)一、策略模式

定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 模式类图 作用 用组合替代继承。灵活性强,客户可动态修改使用的算法。 注意点 知道抽象、继承、多态这些概念,并不会马上让你变成好的面向对象设计者。设计大师关心的是建立弹性的设计,可以维护,可以应付变化。 OO原则: 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 模式应用 场景 我们有一

设计模式摘要(核心篇)零、前言

最近在看 《HeadFirst 设计模式》,写文章总结一下。 核心篇关注最常用的模式(即书中精讲的模式),其他模式后面再连载。 本系列文章将遵循此结构: 定义:一句话介绍 模式类图:最重要的,最好背下来 作用:这个模式有什么用 注意点:使用时应该注意些什么 模式应用 应用场景:给出某个应用场景(即书中的场景) 应用类图:此模式在应用场景下的类图 参考代码:github 链接

详解 HTTPS

(整理自《图解HTTP》) 1 HTTP 的缺点 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡改 这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。 1.1 通信使用明文可能会被窃听 由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。

【算法】1.3. 背包、队列和栈

正文 许多基础数据类型都和对象的集合有关。具体来说,数据类型的值就是一组对象的集合,所有操作都是关于添加、删除或是访问集合中的对象。在本节中,我们将学习三种这样的数据类型,分别是背包(Bag)、队列(Queue)和栈(Stack)。它们的不同之处在于删除或者访问对象的顺序不同。 本节目标: 说明我们对集合中的对象的表示方式将直接影响各种操作的效率。对于集合来说,我们将会设计适于表示一组对象的数据结

【算法】1.2. 数据抽象

正文 抽象数据类型(ADT)是一种能够对使用者隐藏数据表示的数据类型。使用一种数据类型并不一定非得知道它是如何实现的。 1.2.2 抽象数据类型举例 1.2.2.1 几何对象 处理几何对象的程序在自然世界模型、科学计算、电子游戏、电影等许多计算中有着广泛的应用。此类程序的研发已经发展成了“计算几何学”这门影响深远的研究学科。 1.2.2.2 信息处理 无论是需要处理数百万信用卡交易的银行,还是需要