【前端面试3+1】11 http和https有何不同及https的加密过程、数组有哪些方法及作用、tcp三次握手四次挥手、【分发饼干】
一、http和https有何不同?https的加密过程
1、不同:
HTTP和HTTPS的主要区别在于安全性。HTTP是超文本传输协议,是一种用于传输数据的协议,但是传输的数据是明文的,容易被窃听和篡改。而HTTPS是在HTTP基础上加入了SSL/TLS协议,通过加密和认证机制来保护数据的安全性。
2、https的加密过程:
- 客户端向服务器发起HTTPS请求。
- 服务器返回自己的SSL证书,包含公钥和数字签名。
- 客户端验证证书的合法性,如果合法则生成一个随机的对称密钥,并用服务器的公钥加密这个对称密钥,然后发送给服务器。
- 服务器使用自己的私钥解密客户端发送过来的对称密钥。
- 服务器和客户端使用这个对称密钥进行对称加密通信,保障数据的安全性。
3、补充:
对称密钥是在握手过程中由客户端生成的,然后通过非对称加密的方式传输给服务器。这样可以保证数据在传输过程中是加密的,同时也确保了服务器和客户端之间的通信是安全的。
二、数组有哪些方法,并说明每个方法有什么作用?
下面列出了一些常用的数组方法以及它们的作用:
push():向数组末尾添加一个或多个元素,并返回数组的新长度。
pop():删除数组末尾的元素,并返回该元素的值。
shift():删除数组的第一个元素,并返回该元素的值,同时将数组长度减一。
unshift():向数组的开头添加一个或多个元素,并返回数组的新长度。
concat():用于合并两个或多个数组,不会改变原数组,返回一个新的数组。
slice():从已有的数组中返回选定的元素,不会改变原数组,返回一个新的数组。
splice():向/从数组中添加/删除项目,然后返回被删除的项目,会改变原数组。
join():将数组中的所有元素转换为字符串并连接起来,返回一个字符串。
indexOf():返回指定元素在数组中第一次出现的索引,如果不存在则返回-1。
lastIndexOf():返回指定元素在数组中最后一次出现的索引,如果不存在则返回-1。
forEach():对数组中的每个元素执行一次提供的函数。
map():对数组中的每个元素执行一次提供的函数,并返回一个新数组。
filter():使用提供的函数测试所有元素,并返回一个包含所有通过测试的元素的新数组。
reduce():对数组中的每个元素执行一个累加器函数,将其减少为单个值。
sort():对数组元素进行排序,默认是按照字符串Unicode码点进行排序。
reverse():颠倒数组中元素的顺序,原地修改数组。
三、tcp的三次握手和四次挥手
tcp简短:
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它通过三次握手建立连接和四次挥手释放连接。
三次握手:
- 第一步:客户端向服务器发送一个SYN(同步)标志的数据包,表明客户端请求建立连接。
- 第二步:服务器收到客户端的SYN数据包后,会回复一个带有SYN和ACK(确认)标志的数据包,表示接受客户端的请求并准备好建立连接。
- 第三步:客户端收到服务器的确认后,会再次向服务器发送一个带有ACK标志的数据包,表示客户端也确认连接已建立。
四次挥手:
- 第一步:客户端向服务器发送一个带有FIN(结束)标志的数据包,表明客户端不再发送数据,但仍愿意接收数据。
- 第二步:服务器收到客户端的FIN后,会回复一个带有ACK标志的数据包,表示服务器已接收到客户端的结束请求。
- 第三步:服务器在发送完所有数据后,会向客户端发送一个带有FIN标志的数据包,表明服务器也准备关闭连接。
- 第四步:客户端收到服务器的FIN后,会回复一个带有ACK标志的数据包,表示客户端已接收到服务器的结束请求,并准备关闭连接。
通过三次握手建立连接和四次挥手释放连接,TCP协议保证了数据在传输过程中的可靠性和完整性。三次握手确保双方都同意建立连接,四次挥手则确保双方都完成数据传输并同意关闭连接。
四、【算法】分发饼干
1、题目:
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子
i
,都有一个胃口值g[i]
,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j
,都有一个尺寸s[j]
。如果s[j] >= g[i]
,我们可以将这个饼干j
分配给孩子i
,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
int findContentChildren(int* g, int gSize, int* s, int sSize) {}
2、解题:
解题思路:
1. 首先对孩子数组g和饼干数组s进行升序排序,以便后续分配饼干时从小到大进行比较。
2. 使用双指针i和j分别指向孩子数组和饼干数组的起始位置。
3. 在一个while循环中,不断比较孩子的胃口和饼干的大小:
- 如果当前孩子的胃口可以满足当前的饼干大小,则将满足的孩子数量加一,并且移动到下一个孩子和下一个饼干。
- 如果当前孩子的胃口无法满足当前的饼干大小,则只移动到下一个饼干,继续寻找可以满足的孩子。
4. 最终返回满足的孩子数量re,即尽可能多地满足孩子的胃口。
int cmp(const void*a,const void*b) {return *(int*)a-*(int*)b; } int findContentChildren(int* g, int gSize, int* s, int sSize) {int re=0;int i=0,j=0;qsort(g,gSize,sizeof(int),cmp);qsort(s,sSize,sizeof(int),cmp);while(i<gSize&&j<sSize){if(g[i]<=s[j]){i++;j++;re++;}elsej++;}return re; }
相关文章:
【前端面试3+1】11 http和https有何不同及https的加密过程、数组有哪些方法及作用、tcp三次握手四次挥手、【分发饼干】
一、http和https有何不同?https的加密过程 1、不同: HTTP和HTTPS的主要区别在于安全性。HTTP是超文本传输协议,是一种用于传输数据的协议,但是传输的数据是明文的,容易被窃听和篡改。而HTTPS是在HTTP基础上加入了SSL/T…...
替代 Redis 和 Memcached:25 倍吞吐量! | 开源日报 No.213
dragonflydb/dragonfly Stars: 22.4k License: NOASSERTION Dragonfly 是一个内存数据存储,适用于现代应用工作负载,可替代 Redis 和 Memcached。与传统的内存数据存储相比,Dragonfly 提供了 25 倍的吞吐量、更高的缓存命中率和更低尾部延…...
Qt与OpenCV实现图像模板匹配
在 Qt 中使用 OpenCV 实现模板匹配可以通过集成 OpenCV 库和使用其相关函数来完成。以下是一般的步骤: 安装 OpenCV:首先,确保你已经安装了 OpenCV 库,并将其配置到你的开发环境中。 创建 Qt 项目:使用 Qt creator 或…...
OpenHarmony实战:CMake方式组织编译的库移植
以double-conversion库为例,其移植过程如下文所示。 源码获取 从仓库获取double-conversion源码,其目录结构如下表: 表1 源码目录结构 名称描述double-conversion/cmake/CMake组织编译使用到的模板double-conversion/double-conversion/源…...
Linux云计算之Linux基础3——Linux基本认识操作
1、终端 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备) 物理终端(console):直接接入本机器的键盘设备和显示器虚拟终端(tty):通过软件方式虚拟实现的终端。它可以…...
canvas画图,画矩形、圆形、直线可拖拽移动,可拖拽更改尺寸大小
提示:canvas画图,画矩形,圆形,直线,曲线可拖拽移动 文章目录 前言一、画矩形,圆形,直线,曲线可拖拽移动总结 前言 一、画矩形,圆形,直线,曲线可拖…...
Github 2024-04-04 Go开源项目日报 Top10
根据Github Trendings的统计,今日(2024-04-04统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Python项目1Prometheus监控系统和时间序列数据库 创建周期:4149 天开发语言:Go协议类型:Apache License 2.0Star数量:52463 个Fork…...
并发与限流实战:如何利用 RabbitMQ 在 SpringBoot 应用中实现并发控制与流量限制
在高并发场景下,如大促销、秒杀等,我们可以采用 RabbitMQ 配合 SpringBoot 来实现并发控制与流量限制。你可以将 RabbitMQ 作为一个缓冲区,暂存大量并发请求,然后消费者可以根据自身处理能力去处理这些请求。下面就以一个高并发订…...
VUE实现下一页的功能
实现步骤:1、确定分页参数:确定当前页码和每页显示的数量;2、获取数据:使用vue的axios或其他http库向后端发送请求,传递当前页码和每页显示的数量作为参数;3、更新数据:在vue组件中,…...
GraalVM运行模式和企业级应用
文章目录 GraalVM运行模式JIT模式AOT模式 GraalVM的问题和解决方案GraalVM企业级应用传统架构的问题Serverless架构函数计算Serverless应用场景Serverless应用 GraalVM内存参数 GraalVM运行模式 JIT模式 JIT( Just-In-Time )模式 ,即时编译模…...
数据挖掘入门项目二手交易车价格预测之特征工程
文章目录 目标常见的特征工程具体步骤1. 导入数据2. 删除异常值3. 特征构造3.1 为树模型构造特征3.2 为LR NN 之类的模型构造特征 4. 特征筛选过滤式包裹式嵌入式 5. 总结 本文数据集来自阿里天池:https://tianchi.aliyun.com/competition/entrance/231784/informat…...
MFC通用静态库制作与使用
开发环境VS2013 1、新建工程,选择Win32 Project,命名,选择路径等 2、选择Static library ,勾选MFC 3、点击完成。在工程中添加相应的头文件、源文件等通用功能函数或者类。 4、在其他工程引入使用。在使用的工程项目设置中Linker…...
点亮创意:ChatGPT如何搭桥DALL-E图像编辑新纪元
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
《QT实用小工具·十二》邮件批量发送工具
1、概述 源码放在文章末尾 该项目实现了邮件的批量发送,如下图所示: 项目部分代码如下所示: #ifndef SMTPCLIENT_H #define SMTPCLIENT_H#include <QtGui> #include <QtNetwork> #if (QT_VERSION > QT_VERSION_CHECK(5,0,…...
4.2总结
了解了部分Api的使用并学习了接口的API API API包含了较多种类(System,Runtime等) System其实就是一个工具类,提供了一些与系统相关的方法 下面有一些常间的System方法 方法名说明public static void exit (int status)终止当前运行的ja…...
ArcGIS 10.8中文版详细安装教程(附安装包)
ArcGIS 10.8中文版详细安装教程(附安装包) 关键词:ArcGIS 10.8中文版安装 1.概述 ArcGIS Desktop 10.8中文版是由ESRI公司开发的一款专业的地理信息系统,一套完整的桌面GIS软件套件,它包含ArcMap、ArcCatalog、ArcG…...
什么是EL表达式?怎么使用?
文章目录 一、什么是EL表达式1、命令格式:${作用域对象别名.共享数据} 二、EL表达式与作用域对象别名1、JSP文件可以使用的作用域对象2、EL表达式提供作用域对象别名3、EL表达式将引用对象属性写入到响应体4、EL表达式简化版 三、EL表达式与运算表达式四、EL表达式提…...
基于php医院预约挂号系统
摘 要 随着信息时代的来临,过去的管理方式缺点逐渐暴露,对过去的医院预约挂号管理方式的缺点进行分析,采取计算机方式构建医院预约挂号系统。本文通过阅读相关文献,研究国内外相关技术,开发并设计一款医院预约挂号系统…...
Java NIO详解
一、概念 NIO, 即new io,也叫非阻塞io 二、NIO三个核心组件: Buffer数据缓冲区Channel通道Selector选择器 1、Buffer缓冲区 缓冲区本质上是一个可以存放数据的内存块(类似数组),可以在这里进行数据写入和读取。此…...
InstantID作者的风格保持新项目InstantStyle发布,一个强化版的IPapadter来了!
之前已经和大家介绍过InstantID相关相关的文章,感兴趣的小伙伴可以点击下面链接进行阅读~ 无缝衔接Stable Diffusion,一张照片几秒钟就能生成个性化图片-InstantID_instant-id 模型-CSDN博客 今天向大家介绍Ins…...
【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南
基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…...
echart 仪表盘实现指针的渐变色及添加图片
需求: 在仪表盘中设置指针为渐变色,并在仪表盘中间添加图片。 实现重点: 1、仪表盘指针渐变色的实现 渐变色通过设置pointer的itemStyle属性内的color实现,重点是echart版本,这个原本使用4.8.0的版本不起作用ÿ…...
C#面试题目含参考答案(一)
前言 面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时,我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。本文列举一些问题及提供参考答案,题目(一)。 题目 1、什么是面向对象的三大特性 参考答案:…...
【Canvas技法】图解绘制圆弧的重要函数 arc(x,y,r,startAngle,endAngle,clockWise)
【一图释疑】 【绘制上图用代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Html5/Canvas中绘制圆弧的重要函数 arc(x,y,r,startA…...
vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2019-0193)
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能&#…...
水泥5G智能制造工厂数字孪生可视化平台,推进水泥行业数字化转型
水泥5G智能制造工厂数字孪生可视化平台,推进水泥行业数字化转型。水泥5G智能制造工厂数字孪生可视化平台,是水泥行业数字化转型的关键推手。数字孪生平台运用先进的信息技术和数字化手段,实现水泥生产过程的数字化模拟、可视化监控和智能化管…...
vue 一个简单实例化Vue.js 是一个流行的前端框架,如何创建一个基本的计数器应用
当然可以!Vue.js 是一个流行的前端框架,用于构建用户界面。下面是一个简单的 Vue.js 例子,演示了如何创建一个基本的计数器应用。 首先,确保你已经在项目中引入了 Vue.js。你可以通过 CDN 引入 Vue.js,或者在项目中安…...
1.k8s架构
k8s集群架构 一个Kubernetes集群至少包含一个控制平面(control plane),以及一个或多个工作节点(worker node)。控制平面(Control Plane) : 控制平面负责管理工作节点和维护集群状态。所有任务分配都来自于控制平面。工作节点(Worker Node) : 工作节点负责执行由控制…...
【Linux】详解动态库链接和加载对可执行程序底层的理解
一、动静态库链接的几种情况 如果我们同时提供动态库和静态库,gcc默认使用的是动态库。如果我们非要使用静态库,要加-static选项。如果我们只提供静态库,那可执行程序没办法,只能对该库进行静态链接,但程序不一定整体…...
中文Mistral模型介绍(Chinese-Mistral)——中文大语言模型
中文Mistral简介 Chinese-Mistral由清华大学地学系地球空间信息科学实验室开发。 该模型基于Mistral发布的Mistral-7B-v0.1训练得到。首先进行中文词表扩充,然后采用实验室提出的PREPARED训练框架(under review)在中英双语语料上进行增量预训…...
长春电商网站建设费用/网站推广的10种方法
转载出处:http://blog.csdn.net/wsl211511/article/details/44536157 表是用来存储数据和操作数据的逻辑结构,关系数据库中的所有数据都表现为表格的形式,并且关系数据库是由表、查询等对象组成,而查询等对象又是通过表来显示的…...
网站规划作品/营销网站设计
海尔笔记本X3超级本拆机增加内存图文教程(解决后盖开不了问题)参考文章: (1)海尔笔记本X3超级本拆机增加内存图文教程(解决后盖开不了问题) (2)https://www.cnblogs.co…...
济南网站建设要多少钱/美国疫情最新数据消息
今晚引来了微信小程序开发工具《微信web开发者工具》的一次更新,此次更新新增了很多API,修复了一些bugs,也标记了一些即将废弃的API。这次更新也升级了开发工具本身的功能,新增的文件变动实时刷新功能,跟上了时代的步伐…...
广州网站建设推广公司/手机cpu性能增强软件
在实际的生产开发中,我们会接触到很多设计模式的例子,有些可能是你熟悉的,有些可能你不熟悉,或者见也没见过。本文的宗旨就是梳理开发中常见的设计模式,让你对设计模式有一定的认识,从而在生产实际中使用。…...
站群宝塔批量建站/seo推广一年要多少钱
jQuery项目案例二:Tab选项卡切换项目介绍项目效果图项目核心知识点jQuery选择器jQuery事件类型jQuery标签操作项目源代码HTML代码CSS样式JS代码项目介绍 网页页面中最流行常用的tab切换效果,包括滑动、点击切换等多种效果。 项目效果图 项目核心知识点 jQuery选择…...
python做网站实例/cms
在虚拟机与虚拟机、虚拟机与实机之间利用Windows操作系统自带的网络负载均衡功能如选择单播集群模式,网络就无法通讯,NLB不成功。 Scenario #1 在虚拟机与虚拟机之间选择多播模式NLB可正常工作,而虚拟机与实机之间无法选择多播模式࿰…...