自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 十大排序算法

1、稳定排序稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。冒泡排序、归并排序、插入排序、记数排序、桶排序、基数排序是稳定排序;快速排序、希尔排序、选择排序、堆排序是不稳定排序。2、最坏情况下时间复杂度最小的排序算法?

2022-09-25 23:52:17 1216 3

原创 华为笔试真题

第一题:分配捐赠

2022-09-25 23:34:47 49

原创 互联网大厂笔试历年真题,轻松熟悉ACM

一、2016华为校园招聘上机笔试题第一题 :最高分是多少

2022-08-16 16:12:35 409

原创 快速上手ACM,常见输入输出的写法

is是一个流,例如cinstr是一个string类型的引用,读入的字符串将直接保存在str里面delim是结束标志,默认为换行符

2022-08-09 15:54:53 996

原创 MySTL项目常见面试题目(C++)

一、初识STL1、STL六大组件(1)容器(containers):各种数据结构,用于存放数据。如vector,list,deque,set,map(2)算法(algorithms):常用sort,search,copy

2022-07-23 23:06:05 985

原创 web服务器项目常见面试题目(C++)

项目介绍1、为什么要做这样一个项目?2、介绍下你的项目

2022-07-17 23:26:26 19919 4

原创 C++中的常量指针和指针常量有什么区别

常量指针: 指针的指向(存放在指针的那个地址)不可以改变,但指针所指对象的值可以改变。 int *const p=&a*p=20 // 正确p=&b // 错误指针常量: 指针所指对象的值不可以改变,指针的指向可以改变。 const int *p=&a*p=20 // 错误p=&b // 正确...

2022-05-12 19:59:13 244

原创 力扣LeetCode刷题笔记总结2

题型十三:二叉树0.二叉树的基础知识(1)二叉树的分类: a. 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。b.完全二叉树:除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。c.二叉搜索树:不同于以上两种,二叉搜索树有数值,且数值有序。若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结..

2022-05-06 21:15:28 442

原创 同步IO和异步IO

同步(阻塞)I/O:在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO。 异步(非阻塞)I/O:当代码需要执行一个耗时的IO操作时,它只发出IO指令,并不等待IO结果,然后就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理。...

2022-04-27 15:58:54 469

原创 牛客网SQL刷题笔记总结

非技术快速入门1.基础查询(1)基础查询查询单列:查询所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中查询数据。select device_id from user_profile 查询多个列:唯一的不同是必须在SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。select device_id,gender,age,university from user_profile查询所有列:在实际列名的位置使用星号(*)通配符select *

2022-04-13 17:12:38 2562

原创 极客时间MySQL实战45讲学习笔记

第一讲:基础架构:一条SQL查询语句是如何执行的?MySQL的基本架构示意图1.MySQL基础架构大体来说,MySQL可以分为Server层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务 功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在 这一层实现,比如存储过程、触发器、视图等。 而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、 ..

2022-04-09 18:46:28 1223 1

原创 力扣LeetCode刷题笔记总结1

题型一:数组0.数组的基础知识(1)数组下标都是从0开始的,数组内存空间的地址是连续的。因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。(2)数组的元素是不能删的,只能覆盖。(3)C++中,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。1.二分查找解法1:左闭右闭的区间定义target在[left, right]区间内,所以有如下两点:while (le

2022-04-09 15:18:49 690

原创 为什么说UDP比TCP更有优势?

UDP以其简单、传输快的优势,在越来越多的场景下取代了TCP,如实时游戏。(1)网速的提升给UDP的稳定性提供了可靠的网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。(3)采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接受到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包发

2022-04-07 23:00:29 5050

原创 TCP粘包产生的原因、解决办法

TCP粘包现象发送方发送的多个数据包,到接收方后粘连在一起,导致数据包不能完整的体现发送的数据。TCP粘包原因分析导致TCP粘包的原因,可能是发送方的原因,也有可能是接受方的原因。发送方:由于TCP需要尽可能高效和可靠,所以TCP协议默认采用Nagle算法,以合并相连的小数据包,再一次性发送,以达到提升网络传输效率的目的。这个合并过程就是在发送缓冲区中进行的,也就是说数据发送出来它已经是粘包的状态了。但是接收方并不知道发送方合并数据包,而且数据包的合并在TCP协议中是没有分界线的,所以这就会

2022-04-06 14:51:35 5173 1

原创 力扣(LeetCode)刷题笔记

217.存在重复元素题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。题解: 方法一:排序在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。class Solution {public: bool containsDuplicate(vector<int>

2021-12-24 10:59:54 367

原创 进程间通信只用TCP

Linux中进程间通信(IPC)常见的有:匿名管道(pipe)、具名管道(FIFO)、POSIX消息队列、共享内存、信号(signals)等,但首选是Sockets(主要指TCP)。TCP Sockets最大的优点:可以跨主机,具有伸缩性。 可记录,可重现;可跨语言,服务端和客户端不必使用同一种语言。同:在编程上, TCP sockets 和 pipe 都是操作文件描述符用来收发字节流,都可以 read / write / fcntl / select /...

2021-10-20 17:18:06 692

原创 stdlib.h和stdio.h有什么区别

一、定位不同1、stdlib.h是standard library标准库头文件,定位在通用工具函数。2、stdio.h是standard input&output标准输入输出头文件,定位在标准的输入输出工具函数。二、封装函数不同1、stdlib.h主要封装了malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等函数。2、stdio.h主要封装了getchar()、putcha

2021-10-07 15:36:54 5314

原创 B站设计模式第9章——Builder

Builder 定义将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。Builder 要点总结 (1)Builder 模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。 (2)变化点在哪里,封装哪里—— Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动。 (3)在Builder模式中,要注意不同语言中构...

2021-10-05 18:51:24 92

原创 B站设计模式第8章——Prototype

Prototype 定义 使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。Prototype 定义(1)Prototype 模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有“稳定的接口”。(2)Prototype 模式对于“如何创建易变类的实体对象”采用“原型克隆"的方法来做,它使得我们可以非常灵活地动态创建“拥有某些稳定接口”的新对象——所需工作仅仅是注册一个新类的对象(即原型),然后在任何需要的地方 Clon...

2021-10-04 14:23:16 95

原创 B站设计模式第7章——Abstract Factory

Abstract Factory 定义提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。Abstract Factory 要点总结(1)如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工厂完全可以。 (2)“系列对象”指的是在某一特定系列下的对象之间有相互依赖、或作用的关系。不同系列的对象之间不能相互依赖。 (3)Abstract Factory模式主要在于应对...

2021-10-03 22:15:01 76

原创 B站设计模式第6章——Factory Method

Factory Method 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。Factory Method要点总结 (1)Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。 (2)Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非...

2021-10-03 21:46:37 80

原创 B站设计模式第5章——Bridge

Bridge 定义将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。Bridge 要点总结 (1)Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。所谓抽象和实现沿着各自纬度的变化,即“子类化”它们。 (2)Bridge模式有时候类似于多继承方案,但是多继承方案往往违背单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比多继承方案更好的解决方法。 ...

2021-10-03 15:32:35 48

原创 B站设计模式第4章——Decorator

Decorator 定义动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。Decorator 要点总结 (1)通过采用组合而非继承的手法,Decorator模式实现了在运行时动态扩展对象功能的能力,而且可以根据需要扩展多个功能。避免了使用继承带来的“灵活性差”和“多子类衍生问题”。 (2)Decorator类在接口上表现为is-a Component的继承关系,即Dec...

2021-10-03 15:05:33 51

原创 B站设计模式第3章——Observer / Event

Observer 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。Observer 要点总结 (1)使用面向对象的抽象,Observer模式使得我们可以独立地改变目标与观察者,从而使二者之间的依赖关系达致松耦合。 (2)目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数)会自动传播。 (3)观察者自己决定是否需要订阅通知,目标对象对此一无所知。 (4)Obse...

2021-10-03 11:34:54 52

原创 B站设计模式第2章——Strategy

Strategy 要点总结(1)Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。 (2)Strategy模式提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式。 (3)如果Strategy对象没有实例变量,那么各个上下文可以共享同一个Strategy对象,从而节省对象开销。...

2021-10-03 00:38:36 74

原创 B站设计模式第1章——Template Method

Template Method 要点总结 (1)Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。 (2)除可以灵活应对子步骤的变化外,“不要调用我,让我来调用你”的反向控制结构是Template Method的典型应用。 (3)在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚...

2021-10-03 00:06:06 89

原创 B站设计模式第0章——设计模式简介

软件设计复杂的根本原因:变化软件设计的目标:复用!解决复杂性的方法:1、分解(不容易被复用)分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。2、抽象(容易被复用)由于不能掌握全部的复杂对象,选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。变化是复用的天敌! 面向对象设计最大的优势在于:抵御变化!分解的案例:(1)Shape1.hclass Point{public: int x; int y;};.

2021-10-02 23:48:48 101

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除