随笔分类 - 课程
摘要:一、HTTP 是什么? HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。 (一)能否详细解释「超文本传输协议」? HTTP的名字「超文本协议传输」,它可以拆成三个部分: 超文本 传输 协议 1. 「协议」 在生活中,我们也能随处可见「协议」,例如: 刚毕业时
阅读全文
摘要:一、概念 单例模式的核心是保证一个单例对象的全局唯一性,并且提供给外部一个访问该唯一对象的接口。 解决问题:避免一个全局使用的类频繁地创建与销毁 如何解决:判断是否已经有这个单例,如果有则返回,如果没有则创建。 二、参与者 Singleton 单例类,负责创建自己的唯一实例,并提供外部访问接口。 C
阅读全文
摘要:一、题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的
阅读全文
摘要:一、概念 前面2种模式(简单工厂模式和工厂模式)都是创建单一的产品,即一个工厂只生产一种产品,但是大部分的工厂都是多元产品的, 譬如:美的工厂生产空调,风扇,电饭煲,机器人;格力工厂: 空调,冰箱,电饭煲。以上两种模式都不可以实现。抽象工厂模式就是解决此类问题的; 抽象工厂模式(Abstract F
阅读全文
摘要:一、题目 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 二、思路 若 flag > target ,则 target 一定在 flag 所在 行
阅读全文
摘要:一、概念 工厂方法模式,又被称为· ”多态工厂模式“·,是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。 工厂方法模式抽象出工厂接口,声明具体工厂子类必须实现的方法。将对象实际创建工作交由工厂的具体实现类完成。这样进一步抽象化的好处是 每添加一
阅读全文
摘要:一、题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 二、思路 循环二分: 当 left ≤ right 时循环 (即当闭区间 [left, j] 为空时跳出) ; 三、代码
阅读全文
摘要:一、题目 统计一个数字在排序数组中出现的次数。 二、思路 整个数组是单调递增的,我们可以利用二分法来加速查找的过程。 三、代码 class Solution { public: int binarySearch(vector<int>& nums, int target, bool lower) {
阅读全文
摘要:一、概念 简单工厂模式也叫静态工厂模式,是指由 一个工厂 决定创建哪一种产品类的实例,但它不属于GoF的23种设计模式。简单工厂模式适用于工厂类负责创建的对象较少的场景。(不属于标准的设计模式) 该工厂类一般是使用静态方法,根据我们传参的不同,返回不同的派生自同一个父类 或 实现同一接口的实例对象。
阅读全文
摘要:一、题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 二、思路 在一个长度为 n 的数组 nums 里的所有数字都在 0 ~ n-1
阅读全文
摘要:一、题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 二、思路 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 三、代码 c
阅读全文
摘要:用g++命令执行C++多文件项目 (一)过程执行 C 或者 C++ 程序的执行过程分为 4 步,依次是预处理、编译、汇编和链接。 在执行 C++ 项目时,头文件是不需要经历以上这 4 个阶段的,只有项目中的所有源文件才必须经历这 4 个阶段。 假设,当前项目中有 1 个 student.h 头文件,
阅读全文
摘要:一、题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 二、思路 在 C++ 语言中, string 被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改。 三、代码 class Solution { public: string replaceSpace(string
阅读全文
摘要:当键入网址后,到网页显示,其间发生了什么? 一、孤单小弟--HTTP (一)浏览器做的第一步工作是解析 URL 首先浏览器做的第一步工作就是要对 URL (统一资源定位符Uniform Resource Locator)进行解析,从而生成发送给 Web 服务器的请求信息。 URL 里的各个元素的代表
阅读全文
摘要:一、应用层 应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。 二、传输层 在传输层会有两个传输协议,分别是 TCP 和 UDP。 TCP 的全称叫传输控制协议(Transmission Control Protocol)。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞
阅读全文
摘要:一、题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 二、思路 反转链表 三、代码 class Solution { public: ListNode* reverseList(ListNode* head) { ListNode *now = head, *pre =
阅读全文
摘要:一、二进制信号量 struct binary_semaphore { enum(zero, one) value; queueType queue; } void waitB(binary_semaphore s) { if (s.value == 1) s.value = 0; else//为0阻
阅读全文
摘要:一、预处理(预编译)阶段 1.头文件的包含 2.清除注释 3.宏的替换 4.处理所有的条件编译指令,如#ifdef #ifndef #endif等,也就是带#那些 5.保留#pargma指令 6.添加行号和文件名标识,方便调试使用 此时源程序还是文本文件。这个过程不会检查错误,生成预处理文件xxx.
阅读全文
摘要:一、问题 讨论一种错误:XXX已经在 main.obj 中定义 二、原因 头文件中定义了全局变量或者函数。注意:是定义,不是声明。在.h文件中定义变量和函数本身没有问题。但是如果.h被2个及以上的cpp引用了。或者"另一个.h"引用了这个头文件,而"另一个.h"又被多个cpp引用。都会报这个问题。
阅读全文
摘要:一、题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 二、思路 直接转数组 再数组反转 三、代码 class Solution { public: vector<int> reversePrint(ListNode* head) { vector <int>res; whi
阅读全文

浙公网安备 33010602011771号