自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 转:看过最清晰的KMP详解与一道谷歌面试题

KMP算法-极客

2020-04-30 16:57:15 258

原创 失败面试经验总结(包含一些理解,但不一定正确)(3)

C++智能指针有什么shared_ptr:通过引用计数,让多个对象共享同一个内存weak_ptr:当我们创建一个weak_ptr时,需要用一个shared_ptr实例来初始化weak_ptr,由于是弱共享,weak_ptr的创建并不会影响shared_ptr的引用计数值。unique_ptr:强制要求一块内存(一个指针)只能有一个对象,拷贝构造函数只能是移动拷贝。虚函数表是什...

2020-04-30 00:00:15 129

原创 失败面试题整理(含自己的一些答案,但不一定正确)(2)

网络http状态码相关问题get和post的区别cookie与session的区别ddos攻击是什么?如何防止ddos攻击场景题1:让你设计一个只包含c/s的客户端-服务器架构,只要求实现读取读取客户数据并返回固定答案的场景提2:C++内存管理...

2020-04-26 17:04:03 212

原创 失败面试题整理(含自己的一些答案,但不一定正确)(1)

因为面了比较多,忘记具体是哪几家公司了网络从浏览器输入URL到请求返回TCP如何实现可靠传输校验和拥塞控制慢启动流量控制滑动窗口:接受窗口与发送窗口滑动窗口大小:由C++内存管理进程给变量分配的地址是物理地址吗?不是,操作系统中,每个进程可见的的内存地址都是逻辑地址,并非物理地址,物理地址是由操作系统中的页表映射得到的。堆与栈的区别...

2020-04-24 17:53:15 204

原创 面试题:grep正则表达式的一些用法

匹配文件扩展名 grep -P --color '^.*?\.(html|css|jpg)$'匹配IP地址IP地址由4个0~255的数据组成,因此,我们只需要能够表示0-255如何匹配就可以,此时我们应该考虑每一个字符的范围。首先是0-99: [1-9]?\d,这表示第一位最多出现1次且范围是1-9,而第二位则是0-9的任意数值。然后是100-199: 1\d{2},这表示第一...

2020-04-23 23:39:57 195

原创 C++11右值引用:移动语义与右值引用

什么是右值(right value)所有的具名变量或者对象都是左值,而右值不具名字,也不会开辟地址存储,比如x=y+z中,y+z的计算结果是一个右值什么是引用我们通常说的引用就是左值引用左值引用的是有具体对象的,因为左值引用就是多个变量共享一段内存,换句话说就是别名疑惑都说右值是临时数据,不会开辟空间存储,而引用又是一段空间的别名,那么右值和引用如何结合起来?按照左值引...

2020-04-22 20:37:02 241 1

原创 初学者:一天一个设计模式-策略模式

策略模式避免过多的if...else策略模式让一个类的行为或其算法可以在运行时更改如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为策略模式举例comparable接口comparator接口 :含有int compare(T o1, T o2)和boolean equals(Object obj) 两个函数...

2020-04-21 11:58:32 189

原创 快餐笔记:记录常用的linux指令以及一些系统文件夹

文件管理与终端输出echo $variable:输出变量touch filename:创建文件string >> filename:追加型输出重定向,如果文件存在,则往后添加消息,如果不存在则创建string > filename:覆盖型输出重定向,如果文件存在,则覆盖内容,如果不存在则创建cat filename: 读取文件中数据,并且输出到屏幕, 也可以重定向f...

2020-04-19 21:52:19 122

原创 经典面试题:消费者生产者模型

解耦,将消息生产与消息处理分开,仅通过一个消息队列联系支持并发public class MyContainer<T>{ private LinkedList<T> lists = new LinkedList<>(); final private int MAX = 10; public synchronized void put(T t){ ...

2020-04-17 11:42:38 293

原创 初学者:一天一个设计模式-代理模式

什么是代理模式一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。常见于web服务器中,客户端发送的消息先是被服务器代理(反向代理)接受,然后代理再分发给上游服务器代理模式必备三个类接口类image, 接口的实体类RealImage,代理类ProxyImage ProxyPatternDemo,我们的演示类使用 ...

2020-04-17 10:24:17 100

原创 线程局部变量

用空间换时间:Threadlocal,其他线程不知道这个线程内部的变量,如下面的程序中,第一个线程输出的是null,而不是set()的值可能会导致内存泄漏public class ThreadLocal2{ static ThreadLocal<Person> tl = new ThreadLocal<>(); public static void main(S...

2020-04-15 21:01:24 129

原创 初学者:一天一个设计模式-单例模式

什么是单例模式单例模式是最简单的设计模式对象只能由类进行创建,一个类也只能拥有一个对象这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象核心操作:将构造函数放到private中,只在public中提供一个get方法用于获取实例面试题:手写一个单例模式单例模式虽然简单,但是实现起来也是很有讲究的,这也是面试常考的问题,接下来就由坏到好的介绍几种单例模式的...

2020-04-15 11:54:03 121

原创 C++11小特性之一:构造函数的几个改进

继承构造函数C98继承表现class A{private: int x;public: A(int i): x(i){}};class B:public A{private: int y;public: B(int i): y(i) {} //编译失败,B这个构造函数中没有调用A的构造函数 //B(int i):A(i),y(i) {}};int mai...

2020-04-14 19:59:54 154

原创 C++11特性:总览

C++11:更适应泛型编程特性__cplusplus宏对齐支持alignment support原子操作多线程要求(指令不可重排?)推断类型autoauto自动推断类型,常用于迭代器遍历, decltype推断变量类型,如int i =1 ; decltype(i) j;强类型枚举常量表达式constexpr显示默认和删除的函...

2020-04-14 16:59:26 130

原创 常见SQL考题:TOPK工资与中位数工资

可以忽略的部分吐槽:SQL的题目在逻辑上并不会特别复杂,但是因为SQL语句只有那么几个函数,而且符号系统相对其他语言比较陌生,导致我们经常不知道如何下手不熟悉sql语句功能的可以先看菜鸟教程总的来说,SQL题目比较偏向于让我们从主要逻辑到实现,到特殊情况判断的逐层分析三个相关题目leetcode 176 第二高薪水题目大意:从Employee表中选出第二高薪水数额(去掉并列)主...

2020-04-10 14:50:30 458

原创 负载均衡算法:一致性哈希

名词解释哈希:即将输入数据利用同一个函数映射到一个固定范围内,因此最后一步一般是求模运算一致性:在范围发生变动之后,同一个数据的哈希值不会发生改变扩容当数据量过于庞大,导致无法进行存储的时候,需要进行扩容,扩容包含垂直扩容和水平扩容水平扩容新增服务器,让每个服务器分担的数据降低垂直扩容则增强一个服务器的性能,从而能够容纳更多数据为什么要一致性哈希水平扩容就产生了一个问题,...

2020-04-09 14:12:06 841

原创 leetcode 310:最小高度树

题目题目:对于一个具有树特征的无向图,我们可选择任何一个节点作为根,在所有可能的树中,具有最小高度的树被称为最小高度树。输入:无向图输出:最小高度树根节点链接leetcode 310题解多起点拓扑排序,从所有叶子节点开始,一层一层的删除节点(每次把一层的所有叶子节点的相邻节点的入度-1),最后剩下的入度<=1的节点都可以作为根节点。最后剩下几个根节点?一定...

2020-04-08 18:05:53 129

原创 面试题:仅使用位运算将数字扩大k倍

为什么要用位运算实现加减乘除?了解计算机通过半导体实现加减乘除的逻辑不装了,其实根本就是面试可能会问加法这里可能会啰嗦一些,后面基于加法就没有这么痛苦了加法加法,其实是由两种状态组成的:第一是各个数位都没有进位,这种最简单,就是将对应位置的数值直接相加即可第二是则是数位中有进位,这种也不难,首先是将对应位置数值加起来之后,要模上进制数,然后考虑进位数怎么计算,回忆下加法的过程...

2020-04-07 20:58:19 1534

原创 学习触发器的一丁点笔记

触发器顾名思义,触发器是监听表中特定事件,如果有相关事件发生,那么将会触发触发器中定义的操作语法:CREATE TRIGGER trigger_name trigger_time trigger_eventON tbl_name FOR EACH ROW trigger_stmt下面举一个例子,在TABLE1上创建一个EXAMPLE触发器,监听的事件是,当TABLE1中有数据插入...

2020-04-07 16:30:54 132

原创 C++各种类型转换

前提知识继承:子类继承父类,会把父类数据原封不动的复制一份,再往后添加属于自己的方法(如果函数是虚函数的话,那么子类会复制一个虚函数表,子类重写该方法,在自己的类空间中覆盖掉父类)父类指针指向子类的时候,指的仅仅是子类中复制的父类空间,但如果是子类指针指向父类,则不行,一来子类会丢失属于自己的方法,二来如果重写了虚函数,那么虚函数表关系会混乱简单介绍一下虚函数与非虚函数的对同名函数的不同处...

2020-04-07 12:03:28 79

原创 优雅关闭是什么

学习自这篇博客优雅关闭是在结束传输的时候调用shutdown函数而不是close/closesocket函数好处调用close之后,即便仍有数据未发送,或者发送的数据尚未确认收到,对应的fd也会被销毁,也就是说连接直接中断调用shutdown,并且设置了参数SO_LINGER>0(该参数代表延时事件)之后,连接只有超过这个事件,或者发送完数据才会中断。shutdown()不会销...

2020-04-05 23:13:04 632

原创 面试题记录-网络

打开浏览器输入URL到目标网站,需要经过哪些过程DNS解析:从浏览器缓存中寻找目标IP从计算机本地寻找目标IP从本地DNS缓存中寻找目标IP从根DNS服务器中查找到二级域名服务器从二级服务器递推,直到找到域名,映射为IP,将IP返回给主机根据IP地址与端口,三次握手之后建立TCP连接。如果是https协议,则会有一个加密密钥验证过程建立起安全的加密信道后,请求都会使用发送...

2020-04-05 00:19:54 103

原创 HTTPs交换密钥过程

前提非对称加密公私钥能相互解开,但是对于被嵌套的公私钥,相当于嵌套的锁,一定要将外层的锁解开之后才能解开内层的锁有一个公证人,即证书中心,CA过程服务器产生公私钥将公私钥发送给CACA生成客户端浏览器公私钥CA使用客户端浏览器的私钥对共服务器的公钥进行加密,得到证书,返回给服务器CA将证书发给客户端服务器发送公钥与证书给客户端客户端利用公钥对证书解密,对比服务端公钥,确...

2020-04-04 20:33:15 1229

原创 用户线程与内核线程

内核的意思为减少系统本身的开销,将一些与硬件紧密相关,运行频率较高的模块独立开来(如中断处理程序、设备驱动程序,时钟管理、进程调度等),使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核,内核也是进程,该进程操作的是底层硬件用户线程最明显的就是TCB处于用户空间,由用户线程库进行管理对操作系统不可见,也就是操作系统无法直接管理,操作系统只能直接管理它所属的进程...

2020-04-03 11:05:32 127

原创 UNIX网络编程学习-第二部分

传输层UDP不可靠,本身没有任何确认机制,即不保证每次发送数据包对方都能收到,不保证接收到的数据包有序,不保证数据包只接受一次每个数据包都有一个长度无连接协议,最明显的特点就是当客户端通过一个socket给服务端发送请求之后,立马就可以使用同一个socket发送请求。TCP可靠,有确认机制,TCP自动重传数据,并等待,直到数次失败之后,标记故障含有预估往返时间的算...

2020-04-01 12:33:47 99

空空如也

空空如也

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

TA关注的人

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