08 2021 档案

摘要:链表反转 #!/usr/bin/env python # -*- coding: utf-8 -*- # @File : ReverseSingleLinkImpl.py class Node: data = 0 next = None def build_single_link_list(node 阅读全文
posted @ 2021-08-31 15:25 holmes_now 阅读(27) 评论(0) 推荐(0)
摘要:栈的Python实现 栈可以用顺序表方式实现,也可以用链表方式实现。我大Python的内建数据结构太强大,可以用list直接实现栈,简单快捷。人生苦短,我用Python。代码如下: class Stack(object): # 初始化栈为空列表 def __init__(self): self.it 阅读全文
posted @ 2021-08-31 14:40 holmes_now 阅读(39) 评论(0) 推荐(0)
摘要:# 针对有序查找表的二分查找算法 # 时间复杂度O(log(n)) def binary_search(lis, key): low = 0 high = len(lis) - 1 time = 0 while low < high: time += 1 mid = int((low + high) 阅读全文
posted @ 2021-08-31 14:30 holmes_now 阅读(66) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/weixin_45901519/article/details/110482428 阅读全文
posted @ 2021-08-18 09:39 holmes_now 阅读(20) 评论(0) 推荐(0)
摘要:*args 用来将参数打包成tuple给函数体调用 **kwargs 打包关键字参数成dict给函数体调用 注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。 #*args的用法:当传入的参数个数未知, 阅读全文
posted @ 2021-08-17 10:33 holmes_now 阅读(202) 评论(0) 推荐(0)
摘要:最长公共子串 def longSubStr(str1,str2): len1 = len(str1) len2 = len(str2) longest,start1,start2 = 0,0,0 c = [[0 for i in range(len2+1)]for i in range(len1+1 阅读全文
posted @ 2021-08-15 14:59 holmes_now 阅读(50) 评论(0) 推荐(0)
摘要:| 协议 | 功能用处 | 端口号 | Python 模块 | | HTTP | 网页访问 | 80 | httplib, urllib(request), xmlrpclib | | NNTP | 阅读和张贴新闻文章,俗称为"帖子" | 119 | nntplib | | FTP | 文件传输 | 阅读全文
posted @ 2021-08-15 14:25 holmes_now 阅读(56) 评论(0) 推荐(0)
摘要:1、数组和链表的区别。 从逻辑结构上来看,数组必须实现定于固定的长度,不能适应数据动态增减的情况,即数组的大小一旦定义就不能改变。当数据增加是,可能超过原先定义的元素的个数;当数据减少时,造成内存浪费;链表动态进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。 从内存存储的角 阅读全文
posted @ 2021-08-14 22:29 holmes_now 阅读(53) 评论(0) 推荐(0)
摘要:二叉树的遍历分深度优先遍历(DFS)和宽度优先遍历(BFS)。其中深度优先遍历又分为先序遍历,中序遍历,后序遍历。因为二叉树是递归类数据结构,因此大部分关于二叉树的操作都可以通过递归实现。下面将介绍二叉树几种遍历的实现代码以及思路。 二叉树结点定义: class Node: def __init__ 阅读全文
posted @ 2021-08-14 22:10 holmes_now 阅读(89) 评论(0) 推荐(0)
摘要:一.冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 def bub 阅读全文
posted @ 2021-08-14 21:56 holmes_now 阅读(90) 评论(0) 推荐(0)
摘要:1、TCP和UDP的区别: 1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制);UDP提供无连接的传输,通信前不需要建立连接。 2)TCP提供可靠的传输(有序,无差错,不丢失,不重复);UDP提供不可靠的传输。 3)TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;U 阅读全文
posted @ 2021-08-14 19:55 holmes_now 阅读(248) 评论(0) 推荐(0)
摘要:什么是多路复用 在 HTTP 1.1 中,发起一个请求是这样的: 浏览器请求 url -> 解析域名 -> 建立 HTTP 连接 -> 服务器处理文件 -> 返回数据 -> 浏览器解析、渲染文件 这个流程最大的问题是,每次请求都需要建立一次 HTTP 连接,也就是我们常说的3次握手4次挥手,这个过程 阅读全文
posted @ 2021-08-11 16:10 holmes_now 阅读(390) 评论(0) 推荐(0)
摘要:内存对齐规则 每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。32位系统,gcc中默认#pragma pack(4),可以通过预编译命令#pragma pack(n),n = 1,2,4,8,16来改变这一系数。 有效对齐值:是给定值#pragma pack(n)和结构体中最长数据 阅读全文
posted @ 2021-08-11 16:05 holmes_now 阅读(121) 评论(0) 推荐(0)
摘要:将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。 C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其析构函数如果是虚函数,就会 阅读全文
posted @ 2021-08-11 16:00 holmes_now 阅读(302) 评论(0) 推荐(0)
摘要:底层实现: STL 众多容器中,vector 是最常用的容器之一,其底层所采用的数据结构非常简单,就只是一段连续的线性内存空间。 通过分析 vector 容器的源代码不难发现,它就是使用 3 个迭代器(可以理解成指针)来表示的: //_Alloc 表示内存分配器,此参数几乎不需要我们关心 templ 阅读全文
posted @ 2021-08-11 15:53 holmes_now 阅读(1319) 评论(0) 推荐(0)
摘要:1 什么是HttpsHTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL 4 HTT 阅读全文
posted @ 2021-08-11 15:40 holmes_now 阅读(134) 评论(0) 推荐(0)
摘要:static作用:“改变生命周期” 或者 “改变作用域” static 关键字至少有下列 n 个作用: (1)函数体内 static 变量的作用范围为该函数体,不同于auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的 static 全局变量可以被模块内所 阅读全文
posted @ 2021-08-11 15:35 holmes_now 阅读(238) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/yuxiaoba/p/8646169.html https://www.cnblogs.com/JcwArticles/p/11638053.html 阅读全文
posted @ 2021-08-11 10:22 holmes_now 阅读(32) 评论(0) 推荐(0)
摘要:vector迭代器什么时候会失效? 一、 push_back导致迭代器失效 vector在push_back的时候当容量不足时会触发扩容,导致整个vector重新申请内存,并且将原有的数据复制到新的内存中,并将原有内存释放,这自然是会导致迭代器失效的,因为迭代器所指的内存都已经被释放。 二、inse 阅读全文
posted @ 2021-08-11 09:30 holmes_now 阅读(635) 评论(0) 推荐(0)
摘要:HTTPSRFC2818:HTTP Over TSL HTTP与HTTPS不同HTTPS需要CA(Certificate Authority,数字证书认证机构) 申请证书,免费的很少HTTP默认80端口;HTTPS默认443端口http是超文本传输协议,信息时明文传输;https则是具有安全性的ss 阅读全文
posted @ 2021-08-10 19:59 holmes_now 阅读(223) 评论(0) 推荐(0)
摘要:目前市场上也出现了品类丰富的安全产品,如“防火墙、抗D、负载均衡、WAF、数据库审计、漏扫、网页防篡改、上网行为管理、堡垒机等”这些产品由于功能不同在网络中部署的位置也有区别。下面来简单聊一下每类产品的功能和部署位置。 (1)防火墙一般不属于区域的边界,如数据中心中核心区域和业务区域的边界防火墙、园 阅读全文
posted @ 2021-08-10 19:30 holmes_now 阅读(1605) 评论(0) 推荐(0)
摘要:7. TCP怎么连接的 三次握手: Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,等待Server确认。 Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置1,ack=J+1,随机产生一个值se 阅读全文
posted @ 2021-08-09 15:10 holmes_now 阅读(46) 评论(0) 推荐(0)
摘要:在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程) 输入域名到获取页面的过程 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;浏览器发出读取文件(URL 中 阅读全文
posted @ 2021-08-09 15:02 holmes_now 阅读(548) 评论(0) 推荐(0)
摘要:1、获取IP。浏览器地址栏中输入"http://www.xxx.edu.cn/"并提交之后,首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找,如此下去,当找到对应的ip后,则返回给浏览器。 2、建立TCP连接。当获取到IP之后,就开始与所请求的服务器建立T 阅读全文
posted @ 2021-08-09 14:57 holmes_now 阅读(1047) 评论(0) 推荐(0)
摘要:1. 虚拟内存有什么用?为什么要有虚拟内存? 虚拟内存:操作系统为每一个进程分配一个独立的地址空间,就是虚拟内存。虚拟内存与物理内存存在映射关系,通过页表寻址完成虚拟地址和物理地址的转换。 为什么要用虚拟内存:因为早期的内存分配方法存在以下问题: (1)进程地址空间不隔离。会导致数据被随意修改。 ( 阅读全文
posted @ 2021-08-09 12:25 holmes_now 阅读(1189) 评论(0) 推荐(1)
摘要:分页和分段有什么区别(内存管理)? 段式存储管理是一种符合用户视角的内存分配管理方案。在段式存储管理中,将程序的地址空间划分为若干段(segment),如代码段,数据段,堆栈段;这样每个进程有一个二维地址空间,相互独立,互不干扰。段式管理的优点是:没有内碎片(因为段大小可变,改变段大小来消除内碎片) 阅读全文
posted @ 2021-08-09 12:12 holmes_now 阅读(2865) 评论(0) 推荐(0)
摘要:1). 死锁的概念 通俗的讲,就是两个或多个进程无限期的阻塞、相互等待的一种状态。 2). 死锁产生的四个必要条件 互斥:至少有一个资源必须属于非共享模式,即一次只能被一个进程使用;若其他申请使用该资源,那么申请进程必须等到该资源被释放为止; 占有并等待:一个进程必须占有至少一个资源,并等待另一个资 阅读全文
posted @ 2021-08-09 12:11 holmes_now 阅读(769) 评论(0) 推荐(0)
摘要:封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 继承(inheritance):C++通过类派生机制来支持继承。被继承的类型称为基类或超类,新产生的类为派生类或子类。保持已有类的 阅读全文
posted @ 2021-08-09 11:53 holmes_now 阅读(649) 评论(0) 推荐(0)
摘要:C++中的虚函数的作用主要是实现多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。 虚函数表 C++ 虚函数(Virtua 阅读全文
posted @ 2021-08-09 11:45 holmes_now 阅读(37) 评论(0) 推荐(0)
摘要:单例模式 单例模式顾名思义,保证一个类仅可以有一个实例化对象,并且提供一个可以访问它的全局接口。实现单例模式必须注意一下几点: 单例类只能由一个实例化对象。 单例类必须自己提供一个实例化对象。 单例类必须提供一个可以访问唯一实例化对象的接口。 单例模式分为懒汉和饿汉两种实现方式。 懒汉单例模式 懒汉 阅读全文
posted @ 2021-08-09 11:42 holmes_now 阅读(58) 评论(0) 推荐(0)
摘要:1.STL六大组件? 容器,迭代器,算法,仿函数,空间配置器,容器配接器。 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。 算法:各种常用的算法,如sort、find、copy、for_each 阅读全文
posted @ 2021-08-09 11:13 holmes_now 阅读(69) 评论(0) 推荐(0)
摘要:auto_ptr、unique_ptr策略:建立所有权概念,对于特定的对象,只有一个智能指针可以拥有它,这样只有拥有对象的智能指针的构造函数才能删除该对象。然后,让赋值操作转让所有权。unique_ptr的策略更严格。 shared_ptr:采用引用计数。类中有一个计数器,赋值时加1,过期时减1,当 阅读全文
posted @ 2021-08-09 11:09 holmes_now 阅读(72) 评论(0) 推荐(0)
摘要:五种IO模型1:阻塞IO:再内核将数据准备好之前,系统调用会一直等待;(所有的套接字默认都是阻塞方式) 2:非阻塞IO:如果内核未将数据准备好,系统调用仍然会直接返回,并且返回EWOULDBLOCK错误码。(非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符,这个过程成为轮回。对cpu来说是很 阅读全文
posted @ 2021-08-09 10:47 holmes_now 阅读(353) 评论(0) 推荐(0)
摘要:粘包、拆包发生原因发生TCP粘包或拆包有很多原因,现列出常见的几点,可能不全面,欢迎补充,1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发 阅读全文
posted @ 2021-08-09 10:34 holmes_now 阅读(340) 评论(0) 推荐(1)
摘要:C++内存管理中内存泄露(memory leak)一般指的是程序在申请内存后,无法释放已经申请的内存空间,内存泄露的积累往往会导致内存溢出。 一、内存分配方式 通常内存分配方式有以下三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, 阅读全文
posted @ 2021-08-09 10:32 holmes_now 阅读(71) 评论(0) 推荐(0)
摘要:关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在哪里 1、const int *a 这里const 修饰的是int,而int定义的是一个整值 因此*a 所指向的对象 值 不能通过 *a 来修改,但是 可以重新给 a 来赋值,使其指向不同的对象 eg: const int *a 阅读全文
posted @ 2021-08-09 10:18 holmes_now 阅读(177) 评论(0) 推荐(0)
摘要:C++的hash表中有一个负载因子loadFactor,当loadFactor<=1时,hash表查找的期望复杂度为O(1).因此,每次往hash表中添加元素时,我们必须保证是在loadFactor <1的情况下,才能够添加。 因此,当Hash表中loadFactor==1时,Hash就需要进行re 阅读全文
posted @ 2021-08-09 09:45 holmes_now 阅读(160) 评论(0) 推荐(0)
摘要:红黑树是一种自平衡的二叉查找树。 1.每个结点是红色或者黑色的。 2、根结点是黑色的。 3、每个空结点(NULL/NIL)是黑色的。(这里将空结点作为一个特殊的结点对待,设定他们必须是黑色的。) 4、如果一个结点是红色的,则它的左右子结点都必须是黑色的。(但黑色结点的子结点可以是黑色的。) 5、对任 阅读全文
posted @ 2021-08-09 09:08 holmes_now 阅读(299) 评论(0) 推荐(0)
摘要:1.C++ this 指针介绍一下 通常在class定义时要用到类型变量自身时,因为这时候还不知道变量名(为了通用也不可能固定实际的变量名),就用this这样的指针来使用变量自身。一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。 阅读全文
posted @ 2021-08-09 09:07 holmes_now 阅读(23) 评论(0) 推荐(0)
摘要:原因如下 B+树能显著减少IO次数,提高效率 B+树的查询效率更加稳定,因为数据放在叶子节点 B+树能提高范围查询的效率,因为叶子节点指向下一个叶子节点 索引如何优化: 慢查询日志、查磁盘的I/O读写的数据量、show status MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间 阅读全文
posted @ 2021-08-09 08:58 holmes_now 阅读(213) 评论(0) 推荐(0)
摘要:输入域名到获取页面的过程 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接; 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报 阅读全文
posted @ 2021-08-09 08:56 holmes_now 阅读(63) 评论(0) 推荐(0)
摘要:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试地,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结 阅读全文
posted @ 2021-08-08 23:48 holmes_now 阅读(87) 评论(0) 推荐(0)
摘要:系统调用:进程管理、内存管理、设备管理、文件管理、提供用户接口 进程管理: 进程管理的主要作用就是任务调度,在单核处理器下,操作系统会为每个进程分配一个任务,进程管理的工作十分简单;而在多核处理器下,操作系统除了要为进程分配任务外,还要解决处理器的调度、分配和回收等问题 内存管理:内存管理主要是操作 阅读全文
posted @ 2021-08-08 23:40 holmes_now 阅读(427) 评论(0) 推荐(0)
摘要:缓冲区溢出缓冲区溢出的定义:指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上 缓冲区溢出的危害:程序崩溃导致拒绝服务、跳转并且执行一段恶意代码 缓冲区溢出的原因:程序中没有仔细检查用户输入的参数 阅读全文
posted @ 2021-08-08 23:35 holmes_now 阅读(340) 评论(0) 推荐(0)
摘要:虚拟内存的基本思想是:每个进程拥有独立的地址空间,这个空间被分为大小相等的多个块,称为页(Page),每个页都是一段连续的地址。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻进行必要的映射;当程序引用到一部分不在物理内存中的 阅读全文
posted @ 2021-08-08 23:35 holmes_now 阅读(92) 评论(0) 推荐(0)
摘要:互斥:指某一个资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的同步:是指在互斥的基础上(大多数情况下),通过其它机制实现访问者对资源的有序访问。大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多 阅读全文
posted @ 2021-08-08 23:32 holmes_now 阅读(407) 评论(0) 推荐(0)
摘要:进程同步 进程同步的主要任务:是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。 同步机制遵循的原则: (1)空闲让进; (2)忙则等待(保证对临界区的互斥访问); (3)有限等待(有限代表有限的时间,避免死等); (4)让权等待 阅读全文
posted @ 2021-08-08 23:29 holmes_now 阅读(86) 评论(0) 推荐(0)
摘要:我们考虑一个测试对象的时候至少从以下五方面来考虑:功能性、兼容性、UI显示、性能、安全性 水杯测试: 1.功能 水倒水杯容量的一半、水倒规定的安全线、水倒满且流出来、水杯容量刻度与其他水杯一致、盖子拧紧水倒不出来、烫手验证 2.性能 使用最大次数或时间、掉地上不易损坏、盖子拧到什么程度水倒不出来、保 阅读全文
posted @ 2021-08-08 23:18 holmes_now 阅读(240) 评论(0) 推荐(0)
摘要:URG:紧急指针有效位。 SYN:建立连接,当需要建立连接时,他的值为1.即SYN=1 ACK:确认连接,当ACK=1是才有效,ACK=0是此控制位无效。 FIN:断开连接,提出断开连接这一方的值为1. RST:重新建立连接,值为1时代表重新建立连接。 PSH:要求接收方将数据尽快将数据段送达应用层 阅读全文
posted @ 2021-08-08 23:03 holmes_now 阅读(70) 评论(0) 推荐(0)