自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 云实验平台

2023-04-22 16:02:32 152 1

原创 DDoS 攻击与防御

分布式拒绝服务攻击(Distributed Denial of Service),是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击。DDoS 是一种基于 DoS 的特殊形式的拒绝服务攻击。单一的 DoS 攻击一般是采用一对一方式,利用网络协议和操作系统的缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。与 DoS 相比,DD

2022-07-02 09:54:15 1629

原创 动态链接概述

静态链接是由链接器在链接时将库/模块的内容加入到可执行程序中。静态链接使得不同的程序开发者和部门能够相对独立开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率,原先限制程序的规模也随之扩大。但是慢慢地,静态链接的诸多缺点也暴露出来,比如浪费内存和磁盘空间,模块更新困难等问题。想象一下每个程序内部除了都保留 , 等公用函数外,还引用了很多的其他库函数。在现代的程序中,一个普通程序可能用到 1MB 的静态库,那么如果我们的机器中运行 100 个同样的程序,就要重复近 99 MB 的内存,高达 9

2022-06-25 23:01:53 1217

原创 2022春招后的一些感悟

你的春招怎么样了呢?

2022-05-15 10:45:56 265

原创 慢慢说计网:HTTP 长短连接

小Q:什么是 HTTP 长连接?慢慢:在 HTTP1.0 中,默认使用的是短连接,也就是服务端和客户端每进行一次 HTTP 请求,就建立一次连接,而建立一次连接需要三次握手,比较耗费时间。从 HTTP1.1 开始,默认使用长连接,为了保持连接性,我们会在响应头加上 Connection:keep-alive,使得客户端和服务器之间发送请求后不会端口,下一次请求不用三次握手。长连接并不是永久的保证连接性,他有一个保持时间,一般都是在服务器中设置。小Q:长连接和短连接有哪些使用场景?慢慢:长.

2021-12-17 22:04:15 869

原创 慢慢说计网:HTTP 协议

小Q:什么是 HTTP 协议?慢慢:HTTP 是一个属于应用层的面向对象的协议,由于其简便,快捷的方式,适用于分布式超媒体信息系统。其特点如下:支持客户/服务器模式简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,通信速度快。灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。无状态:HTTP 协议是无状态协议。指对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信.

2021-10-18 20:41:03 420

原创 慢慢说计网:DNS 协议

小Q:什么是 DNS?慢慢:DNS 域名解析就是把域名指向真实的 IP 地址。为了方便人的记忆,我们采用域名来代替 IP 地址,域名解析就是域名到 IP 地址的转换过程。小Q:DNS 是如何进行解析的?慢慢:DNS 解析分为两种,分别是递归查询和迭代查询。主机向本地域名服务器的查询一般采用递归查询。即:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户端的身份,向根域名服务器继续发出查询请求报文(替主机继续查询),而不是让主机自己进行下一步.

2021-10-10 20:45:01 137

原创 慢慢说计网:粘包和拆包

小Q:什么是粘包呢?慢慢:TCP 协议的服务端和客户端是保持长连接的状态(若短连接,一次连接发一个数据报就不会产生粘包和拆包问题)。双方在连接不断的情况下,可以一直传输数据。当发送的数据报过小时,TCP 默认会采用 Nagle 算法,将小的数据报合并在一起,再发送给服务端。这样就产生了粘包问题。小Q:什么是拆包呢?慢慢:虽然 tcp 是面向字节流的,上层传过来多少字节就接收多少字节,可以算是没有长度限制,但网络层的 IP 数据报是有长度限制。于是如果字节流过长的话,在网络层就得要把这个字节流拆.

2021-10-09 21:32:42 110

原创 慢慢说计网:TCP 可靠传输

小Q:TCP 是如何保证可靠传输的?数据报校验:数据链路层的差错检测(冗余校验)保证了数据的完整性,tcp 的序列号和确认号保证数据不会丢失。通过滑动窗口来对失序的数据报进行重排;通过序列号和确认号找到重复的数据并丢弃;应答机制:只有收到确认后才继续发送数据报;超时重传(ARQ):若不能及时收到确认,或确认号指明只接收到原先的数据,就会将数据报重传;流量控制:TCP 连接的双方都有固定大小的缓存空间(滑动窗口),其能根据网络的拥堵情况以及对方的接收情况来控制发送速率。小Q:如何做到超.

2021-10-08 20:06:02 100

原创 慢慢说计网:三次握手和四次挥手

小Q:什么是三次握手?慢慢:TCP 协议是面向连接的协议。于是在连接之前,我们得确保发送主机和接收主机存在且能够连接。三次握手就是解决这个问题的关键。首先客户端先送一条同步报文给服务端,这个报文用 SYN 标注为同步报文并设置一个随机的序列号服务端收到报文后发送一条同步确认报文,并且 ack = seq+1客户端收到确认报文后再发送响应报文给服务端,这个时候不是同步状态,且可以携带数据。小Q:为什么非得三次握手?慢慢:握手的目的主要是确认客户端和服务器直接存在且可用。如果只有两次报.

2021-10-07 19:29:45 159 2

原创 慢慢说计网:TCP 和 UDP

小Q:什么是 TCP 协议?慢慢:TCP 协议是传输层的协议,它主要的特点如下:TCP 是面向连接的。(就像打打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);TCP 连接是点对点的连接;TCP 提供可靠交付的服务,通过 TCP 连接传输的数据,无差错,不丢失,不重复,且按序到达;TCP 提供全双工的通信服务。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 两端都有发送和接收缓存来临时存放双方通信的数据。TCP 面向字节流,流指的是流入进程或流出进程的字节序列.

2021-10-06 21:09:31 97

原创 慢慢说计网:网络层

小Q:什么是网络层的基本特征?慢慢:网络层介于传输层和数据链路层,主要是寻找要发送的路径,对上层提供简单灵活的,无连接的,尽最大努力交付的数据报服务。由于网络层不提供服务质量的保证,所以可能会出现出错,丢失,重复,失序等问题,需要上层协议去规避这些错误。小Q:什么是 IP 地址慢慢:整个互联网是单一的,抽象的网络。IP 地址就是给互联网上的每一台主机或路由器分配一个在全世界范围内唯一的 32 位的标识符。IP 地址可以分为 5 类地址:从 IP 地址的结构来看,IP 地址并不仅仅表明一.

2021-10-03 22:23:00 215

原创 慢慢说计网:数据链路层

小Q:什么是数据链路层的基本特征?慢慢:数据链路层的基本特征为:封装成帧,透明传输,差错检测。小Q:什么是封装成帧?慢慢:封装成帧就是在一段数据的前后分别添加首部和尾部,从而构成一个帧。所有互联网上传送的数据都是以分组(IP 数据报)为传送单位,网络层的 IP 数据报传送到数据链路层就成为帧的数据部分,再添加首部和尾部,构成一个完整的帧。小Q:什么是透明传输?慢慢:由于帧的开始和结束的标记使用专门的控制字符。但如果数据中出现了开始或结束字符,我们应当想方法让他们保持原意,于是就得要通过.

2021-09-27 21:23:12 54

原创 慢慢说计网:网络架构

小Q:什么是 OSI 七层模型慢慢:OSI(Open System Interconnection Reference Model),是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准架构。七层模型为:物理层:制定底层数据传输的标准,如机械特性,电器特性和功能特性,网线和网卡标准等。数据链路层:定义数据的格式,如何传输,如何标识,主要为封装成帧,透明传输,差错检测。网络层:定义 IP 编址,定义路由功能。传输层:端到端传输数据的基本传输。会话层:控制应.

2021-09-27 21:21:59 125

原创 慢慢说 IO 模型:AIO

小Q:什么是 AIO 呢?AIO 即 Asynchronous I/O,异步非阻塞 I/O 模型。小Q:AIO 和 NIO 的区别是什么呢?慢慢:我们知道 NIO 是同步非阻塞模型,其不管是普通 NIO 还是多路复用,都需要去轮询查看有没有事件发生,而这个不断的轮询也是对应者同步的概念。AIO 则没有了轮询的过程。通过对事件绑定一个回调函数,当事件发生时就会自动触发这个回调函数。当然,这得需要硬件的强力支持。小Q:有没有代码演示下。慢慢:那我们来模拟下读取磁盘操作。@Slf4j.

2021-09-25 21:36:37 86

原创 慢慢说 IO 模型:Reactor 和 Proactor

小Q:什么是 Reactor 和 Proactor 呢?慢慢:Reactor 和 Proactor 都是以多路复用为基础的网络模型。Reactor 的主要思想是主线程监听事件的连接和文件描述符上是否有变化,具体的 IO 操作和业务逻辑交由工作线程执行。Proactor 的主要思想是将 IO 操作交给主线程,工作线程仅负责业务逻辑。小Q:能举下实际场景吗?慢慢:Reactor 的工作流程:主线程监听到有连接,往 epoll 复用表中注册读就绪事件;主线程调用 epoll_wait 等.

2021-09-25 21:35:50 98

原创 慢慢说 IO 模型:多路复用

小Q:什么是多路复用呢?慢慢:理解完 NIO 模型,我们可能会注意到,在 Linux 中,万物皆文件,而文件的话就得要操作到磁盘,而操作磁盘则需要用户态和内核态的切换。在 NIO 模式下,我们不断的去判断连接是否有数据传过来,这里我们就得操作到磁盘。我们在轮询的过程中不断地切换内核态和用户态,这是非常浪费资源的。于是,我们想,有没有一种方法可以不用到内核态和用户态的切换。我们可以把轮询的过程交由内核去完成,当内核监听到有连接收到数据时,再告诉我们,从而我们通过线程去处理它。把轮询交由内核,用户态只.

2021-09-20 21:06:35 81

原创 慢慢说 IO 模型:传统 NIO

小Q:前面说了 BIO 无法克服长连接,那么有什么模式可以支持长连接呢?慢慢:这里介绍下 NIO 模型,即同步非阻塞。每当我们去食堂点餐时,点好餐后还得要排队等厨师弄好取餐。在这个过程中,我们得一直在这条队伍里等待,不能上厕所也不能坐下休息。这里就相当于 BIO 模型中,当有一个连接建立后,就得要有一个线程去处理,直到连接处理完毕,并且这个线程在整个过程中都被占用。于是有人提出了一种思路:我们下单后就给我们一个订单号,并且有个屏幕显示现在哪个订单已经做完了。于是,我们彻底被解放了,我们可以去做其他事.

2021-09-19 21:08:07 68

原创 慢慢说设计模式:观察者模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是观察者模式?慢慢:当对象存在一对多的依赖关系时,使用观察者模式,可以让一个对象的状态发生改变时,所有依赖的对象都被通知到并更新。小Q:赶快上代码吧。抽象观察者public interface Observer { void response(); // 回应}.

2021-09-18 21:22:20 65

原创 慢慢说设计模式:迭代器模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是迭代器模式?慢慢:迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又无需暴露该对象的内部表示。小Q:赶快上代码。慢慢:好的,先定义一个迭代器接口:public interface Iterator { public boolean hasNext(); .

2021-09-18 21:21:44 65

原创 慢慢说设计模式:责任链模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是责任链模式?慢慢:责任链的核心是解决一组服务中的先后执行关系,就像出差借款需要审批,5000 元以下直接找部门领导,5000 元以上需要找更高一级的领导审批。小Q:赶快上代码!慢慢:好的,我们以上述为例。// 领导类public abstract class Leade.

2021-09-18 21:21:10 49

原创 慢慢说设计模式:代理模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是代理模式慢慢:代理模式是为了方便访问某些资源,使对象更加易用,从而在操作上使用代理服务。例如经纪人负责演员的日常对接事务,让演员专心演戏,这就是代理。小Q:能不能上代码呢?慢慢:好的,我们以演员为例。public interface Actor { String na.

2021-09-17 20:45:48 69

原创 慢慢说设计模式:亨元模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是亨元模式慢慢:亨元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,他提供了减少对象数量从而改善应用所需的对象结构。亨元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。常见的亨元模式有数据库连接池,线程池等池化技术。小Q:明.

2021-09-17 20:45:06 48

原创 慢慢说 IO 模型:改造型 BIO

小Q:前边说了 BIO 的缺点,我们有没有什么方法对其改进呢?慢慢:为了解决前面提到的 BIO 的每一个连接都需要一个线程处理的问题,有人提出了一个解决方案,用线程池的方式对线程进行管理,防止由于海量并发接入导致线程耗尽,实现系统的可控。小Q:懂了懂了,赶快上代码。服务端public class Server { public static void main(String[] args) throws IOException { ServerSocket serv.

2021-09-10 22:11:56 57

原创 慢慢说设计模式:装饰器模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是装饰器模式慢慢:装饰器满足单一职责原则,可以在自己的装饰类中完成功能逻辑的扩展而不影响主类,同时可以按需在运行时添加和删除这一部分逻辑。这种设计模式属于结构型模式,时作为现有类的一个包装。小Q:大概理解了,但要怎么实现呢?慢慢:我们来看一个样例。public interf.

2021-09-10 22:10:31 45

原创 慢慢说设计模式:外观模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是外观模式慢慢:外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问的接口。这种设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。小Q:懂了,赶快上代码吧。public interface Shape { void draw();}.

2021-09-10 22:09:41 50

原创 慢慢说IO模型:传统BIO

小Q:什么是 IO 模型?慢慢:我们先来了解下 IO。在 linux 系统中,一切皆是文件,而文件又是一串二进制流。操作系统中有很多的流,我们需要通过一个符号表才能够管理这些流,这个符号表为 fd,即文件描述符表。所以,Linux 的内核将所有外部设备都看做一个文件来操作,每一个文件的读写操作都会返回一个 fd。我们每次操作文件,都需要用户空间,内核空间,设备空间进行紧密的配合。那么如何让他们更高效的配合呢?就提出了多种的设计方案,也叫做 IO 模型。小Q:能具体讲下 BIO 模型吗?B.

2021-09-09 12:29:46 101

原创 慢慢说设计模式:组合模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是组合模式慢慢:组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树型结构来组合对象。类似于乐高积木,它并不强制规定改如何拼接,我们可以随着我们的想象力,对其进行 diy,从而实现不同的形状。以公司为例,我们并不一定要规定公司得要有什么部门、什么岗位,反正.

2021-09-09 12:28:08 62

原创 慢慢说设计模式:适配器模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是适配器模式适配器模式的主要作用是把原本不兼容的接口通过适配器修改做到统一,方便调用方使用。例如苹果没有耳机孔,于是我们想听音乐就得要买个设备,一边可连接手机,另一边又对耳机提供可插入的接口,这个设备就是适配器。这种设计模式属于结构型模式。小Q:明白了,赶快上代码吧。慢慢:以.

2021-09-04 22:07:53 55

原创 慢慢说设计模式:桥接模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是桥接模式慢慢:桥接模式的主要作用是通过将抽象部分与实现部分分离,将多种可匹配的使用进行组合。其核心实现实在 A 类中包含有 B 类接口,通过构造函数传递 B 类的实现,这个 B 类就是设计的桥。例如蓝牙连接,手机,手表上都有蓝牙,蓝牙可以控制电视,冰箱,空调的运行。蓝牙连接就是手.

2021-09-04 22:06:57 65

原创 慢慢说设计模式:原型模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是原型模式慢慢:原型模式主要解决创建重复时繁琐的问题。该模式实现了一个接口,用于创建当前的对象的克隆,避免了我们在创建时需要重新赋值等问题。小Q:赶快上代码!慢慢:好的,我们来模拟克隆图形。// 可克隆的图形抽象类public abstract class Shape i.

2021-09-03 20:57:18 48

原创 慢慢说设计模式:建造者模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是建造者模式慢慢:建造者模式的核心目的是通过多个简单对象一步一步地构造出一个复杂对象出来。例如我们装修房子,不仅需要考虑硬装部分,如地板,瓷砖,门框等,还需要考虑软装部分,如桌椅,沙发,家电等。如果我们只用一个对象去表示整个装修过程,这会让整个代码变得复杂,不易解耦。建造者模式也属于创.

2021-09-03 20:56:04 45

原创 慢慢说设计模式:单例模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是单例模式单例模式保证了不管何时使用,都是使用同一个对象实例。使用单例模式的好处在于:不用频繁的创建和销毁对象实例,减少资源的消耗。小Q:赶快上代码!单例模式的实现有很多种,但最终可以分为两类:懒汉模式和饿汉模式。饿汉模式:及在程序启动时直接创建,不管以后是否有用到此对象.

2021-09-01 12:58:13 64

原创 慢慢说设计模式:抽象工厂

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是抽象工厂慢慢:工厂模式是创建物品的工厂,而抽象工厂则是创建工厂的工厂。这种设计模式也属于创建型模式。例如五菱公司,既有生产汽车的工厂,也有生产口罩的工厂。也就是说,在工厂的基础上,当有很多个工厂时,创建一个上一级的工厂来对其进行管理。小Q:快点上代码把!慢慢:好的。还是根据以.

2021-08-30 20:57:45 47

原创 慢慢说设计模式:工厂模式

小Q:什么是设计模式慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。小Q:什么是工厂模式慢慢:工厂模式也称简单工厂模式,是创建型设计模式的一种,这种设计模式提供了按需创建对象的最佳方式。同时,这种创建方式不会对外暴露创建细节。也就是通过定义一类物品的父类接口,通过这个接口来规范其下面的所有物品,再通过创建一个工厂,实现对这类物品的快速,灵活创建。小Q:能.

2021-08-29 23:44:07 62

原创 解决没有主清单属性

需要添加大包配置 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.5

2021-08-02 13:37:43 297

原创 第二周题解——二分法

前言与普通的二分查找不同,本周的题目大多数都是通过二分法来找结果。于是我把这类题归类为二分法猜结果。从小到大,我们经历无数多的数学题目,也掌握了一种方法:如果我们不知道这道题答案是什么时,我们可以猜一个答案套进去,如果符合题目,则答案正确。在算法中,我们也可以用到这种思路。我们只要在已知区间,就能通过在区间中找到答案。但假如区间是 int 类型,如果顺序查找的话,就得遍历 2^31 次,但如果用二分法,时间就降低到 31 次。二分法猜结果大部分应用在求最值问题。① 69. x 的平方根htt

2021-05-26 13:16:48 248 1

原创 第一周刷题

1. 二叉树的最大深度leetcode 104 https://leetcode-cn.com/problems/maximum-depth-of-binary-tree拿到这道题目,首先想的是要根据层序来遍历,但地总说了得要递归,就试着用了深度遍历的方法。深度遍历的思路有两种思路一:从上到下计算(前序遍历)从根节点开始,每下降一层,就将深度+1用全局变量来记录下最大深度每当达到叶子节点时就与全局变量进行比较和更新。class Solution { int res = 0;

2021-05-16 11:34:47 151

原创 耗时三天,终于弄清 spring bean 的生命周期

背景spring 使用了 IOC(控制反转)模型,让对象存储在 spring 容器中,每当我们要使用对象时,就可以通过依赖注入的方式从容器中获取 bean 对象。由于 bean 对象是交给容器来管理,故有了生命周期的概念。这个生命周期不仅有容器的生命周期,还有 bean 对象的生命周期。spring 的容器spring 的容器有 BeanFactory(bean 工厂)和 ApplicationContext (应用上下文)两个容器。区别:beanfactory 只提供了基础的 bean 存储

2021-05-09 16:14:29 137

原创 数据库的索引方式

数据库的索引方式由于许多查询只涉及文件中的少量记录,故我们需要能直接定位满足查询条件的功能。索引的好处:在查询中提高程序的性能。通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间。索引的坏处:创建索引和维护索引耗费资源和时间,且随数据量的增大而增大。索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大。在对表中的数据进行删除和修改时需要耗费较多的时间,因为索引也要动态的维护。数据库中有两种基本的索引

2021-04-18 16:41:03 2006

空空如也

空空如也

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

TA关注的人

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