- 博客(11)
- 收藏
- 关注
原创 IP和mac地址的区别与传输时的地位
IP和mac地址是啥,有什么关系今天面试被问到了这个,答得不好,所以查了一点资料,尝试在这边复现以下,IP地址是位于传输层的地址,是被分配的逻辑地址,每个主机可以同时拥有不止一个,但是每个IP地址只能被一台机器拥有,而mac地址对于每个主机来说就是唯一的,因为这是出厂的时候厂家烧录好的,同时一个被分配在传输层,一个在数据链路层ps:小小总结一下,MAC地址是数据传输的时候在底层的真正依据,而IP很多时候是被封装的目标的载体,如何实现这个目标由ARP协议来进行路由器或者主机的指向几张图来聊一下他们
2020-09-26 01:15:59 863
原创 详解HTTPS中的证书
HTTPS与HTTP在提到HTTPS的证书之前,我们都不可避免会提及HTTP与HTTPS的区别,两者都是进行报文传输的超文本传输协议,但是HTTPS却多出了一个S也就是SSL层(Secure Sockets Layer 安全套接字协议),现在也被称为TLS,我们都知道SSL中的保证安全的加密通信是一次对称加密和非对称加密的结果,但是客户端与服务端建立通信的前提就是服务端是否能够被证书发型机构CA授予证书,那证书是怎么样的呢。证书SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。CA机构颁发
2020-09-26 00:45:12 4430
原创 聊一聊乐观锁悲观锁
索引为啥会有这两种锁呢?我们先说一个背景,在数据库查询的时候,很多时候会涉及到并发的修改或者是查询,当这些查询互相冲突的时候会如何处理呢,当然就是对这些数据加以权限上的限制,我们把这称为锁,而解决这种指令冲突情况而加的锁被分为两大类,一种也就是乐观锁,另外一种就是悲观锁概述乐观锁悲观锁是非常直观的名称,在处理并发的查询或者修改这一问题上分别体现了悲观与乐观的态度...
2020-09-24 16:39:05 267
原创 简述引用和指针的区别
引用是什么引用就是一个变量的别名,其特殊性表现在一个引用在绑定了一个对象之后,就不会再做变化了,在C++中的实际实现为静态指针,而且和指针不一样的地方在于引用不能引用空值而指针可以,因为指针指向的是地址但是引用不能是一个不存在的对象的别名指针是什么指针指向一段内存表示的内容,对指针取地址就能得到指向内存的地址,指针能够改变指向的对象并且可以指向空值...
2020-09-23 15:15:53 370
原创 僵尸进程和孤儿进程
进程状态变化所有进程在完成任务exit之后需要调用 wait 和waitid 来获取子进程的终止状态,否则进程的状态符就会一直保留在内核中,这种进程未能完全消亡或者未消亡的状态,引出了几种特殊情况也就是僵尸进程和孤儿进程孤儿进程父进程创建子进程之后,子进程的运行和父进程的结束是一个异步过程,不会互相影响,而父进程exit之后,获取子进程状态的任务就变成了init进程的任务,它会接管这个失去了父进程获取状态信息功能的子进程,并负责在其生命周期消亡的时候使用wait和waitid获取子进程的终止状态僵尸
2020-09-23 14:48:16 126
原创 聊一聊多态,虚函数,虚函数表
什么是多态我们接触到的多态被分为静态多态和动态多态静态多态也被称为编译时多态,即在程序编译的时候便绑定了函数动态多态也被称为运行时多态,即可以灵活地进行一个接口,多种方法的调用静态多态表现为运算符重载和函数重载,动态多态则是主要体现在虚函数的使用,虚函数使父类可以用父类的指针指向子类的对象,调用子类的虚函数,这一过程被称为重写(Override),这一过程是怎么实现的呢,我们将引入虚函数表虚函数表我们在构造对象之后,会给这个类赋予一个虚函数表,这个虚函数表占用内存空间,如何访问?根据统一赋予
2020-09-15 22:07:11 150
原创 虚拟内存原理及其存在意义
虚拟内存内存是程序的以进行的基础,进程的进行内存资源是非常必要的,如何在有限的内存中运行足够大的程序,变成了一个非常有挑战的事情,而虚拟内存相对于物理内存可以提供更大的空间。简单来说,虚拟内存可以让系统看上去去拥有比物理内存大得多的内存空间,为多道程序的执行提供了资源。虚拟内存为每一个进程提供了非常大的,一致的,独占的虚拟地址空间虚拟内存提供了三个关键能力1.虚拟内存将主存看作是在磁盘地址空间上的高速缓存,主存中只保存活动区域并根据需要在磁盘和主存之间来回传送数据2.虚拟内存保护每个进程的地址
2020-09-13 17:07:39 2511
原创 进程通信与进程同步某种程度上的总结
进程通信与同步的一些知识来聊一下进程的通信与同步首先我们回顾一下进程与线程的关系与差别1.进程是资源分配的最小单位,而线程依赖于进程存在每个进程至少拥有一个线程,每个线程都会依赖于一个进程,线程共享进程被分配到的资源 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程2.线程是cpu给与算力的最小单位,线程的切换效率非常高某进程内的线程在其他进程不可见进程通信进程通信更多的是保证一种状态,进程之间彼此有信息进行交换的时候进行信息交互的手段,包括不限于1.套接字 套
2020-09-13 00:41:42 256
原创 聊一聊归并排序与求逆序数的过程
关于归并排序归并排序是众多logn级别排序算法中的一种,其优点是相对稳定,我们来看一下归并的思路自底向上的归并在这里我们仅介绍使用递归的自底向上的排序方法,如果不用递归的话自然就是用栈存了,用递归好看点,所谓自底向上即是考虑以下情形,在子任务解决了的情况下再来解决当前规模的任务,归并的子任务就是,我们在假设对于当前序列aa[l,mid] && a[mid+1,r]均已经排好序的情况下,我们去把这两个序列合并,让a[l,r]这整个序列都处于有序情况所以在合并之前我们需要先完成 子
2020-09-12 13:44:35 161
原创 DNS使用的是TCP还是UDP中的哪一种?TCP协议与UDP协议在上层协议中的应用情况
DNS用的是TCP还是UDP呢面试的时候被问到了上层协议如HTTP、DNS使用的传输层协议是什么呢?感觉那时候答的不是很好,所以解答一下以上的这个问题我们再进行网络通信,在进行客户端服务端进行通信的过程,很多情况下会用到DNS,也就是域名服务器,其存在的目的是达成从域名(门牌号)到IP地址(真正的住址) 的映射DNS使用TCP协议与UDP协议视情况而定1.域名解析,实现这种功能一般来说是认为使用的UDP协议,当客户端向DNS查询域名,一般不会超过512字节,而且无连接的过程更安全也更快,所以使用UD
2020-09-11 18:09:36 4085
原创 聊聊面试中new与malloc的区别
关于老生常谈的new、delete与malloc、free的区别因为在面试的时候答得不太好,所以我就找了一些资料,想聊聊其中比较有意思的一些点细数他们之间的一些特点非常不意外地,我们在面试地时候被问到的C++问题中对于new与malloc的区别,当然在此我们仅讨论一端的问题,也就是new与malloc的一些相同点与不同点new与malloc的相同点其实,new与malloc都是在堆区由程序员申请的内存,但是他们之间确实存在或多或少的一些区别,不过他们的目的比较明确,都是申请一段空间,接下来我们讨论
2020-09-11 17:41:40 537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人