当前位置: 首页 > news >正文

前端入门到入土?

文章目录

  • 前言
  • http和https的区别,https加密的原理是?
    • 区别
    • https的加密原理
  • TCP为什么要三次握手?
  • proxy代理的原理?
  • 内存泄漏?
    • 什么是内存泄漏?
    • 为什么会有内存泄漏?
    • 内存泄漏的情况?
    • 如何防止内存泄漏的问题?
  • 后言

前言

后序我会更新一系列的前端面试题,感兴趣的可以关注一手

http和https的区别,https加密的原理是?

区别

http

HTTP 是一种无状态协议。每个请求都是独立的,服务器不会保留任何与先前请求相关的信息。
数据传输是明文的,不进行加密。这意味着攻击者可以截获、查看和修改传输的数据。
默认使用端口80进行通信。

https

HTTPS 是在 HTTP 基础上加入了安全性的扩展版本。
HTTPS 使用 SSL(安全套接字层)或 TLS(传输层安全)协议对数据进行加密。这样,通过加密传输,使得数据更难以被窃取、篡改或伪造。
HTTPS 需要使用数字证书来验证服务器的身份。这样客户端可以确保它们正在与预期的服务器进行通信,而不是中间人攻击者。
默认使用端口443进行通信。

https的加密原理

HTTPS 的加密原理主要基于公钥加密和对称密钥加密两种方式的结合。
公钥加密(非对称加密):

服务器生成一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。
服务器将公钥发送给客户端。
客户端使用服务器的公钥对要发送的数据进行加密,并将加密后的数据发送给服务器。
由于只有服务器拥有与之配对的私钥,所以只有服务器能够解密客户端发送的数据。

对称密钥加密:

在建立安全连接后,服务器和客户端协商生成一个临时的对称密钥(会话密钥)。
服务器使用自己的私钥对对称密钥进行加密,然后将加密后的对称密钥发送给客户端。
客户端使用服务器的公钥解密收到的加密对称密钥。
服务器和客户端之间的后续通信将使用对称密钥进行加密和解密。

混合加密解决的问题
通过公钥加密,HTTPS 实现了数据传输阶段的安全性,保护了数据在传输过程中的机密性;通过对称密钥加密,实现了数据传输阶段的高效性,提高了数据传输的速度。这样,HTTPS 综合了公钥加密和对称密钥加密的优点,确保了数据的安全性和完整性。

TCP为什么要三次握手?

  • 双方同步初始序列号:双方在建立连接之前,发送方和接收方都需要确定初始的序列号,以便用于后续的数据传输和确认。通过三次握手,发送方和接收方可以同时交换并确认彼此的初始序列号。

  • 确认双方的接收能力:三次握手过程中,发送方首先发送一个带有 SYN(同步)标志的包给接收方,表示请求建立连接,并将自己的初始序列号发送给接收方。接收方收到后,会发送一个带有 SYN/ACK(同步/确认)标志的包给发送方,表示接收方已收到请求并同意建立连接,同时确认发送方的初始序列号。最后,发送方再发送一个带有 ACK(确认)标志的包给接收方,表示发送方收到了接收方的确认。

  • 防止已失效的连接请求被误认为有效:由于网络延迟或其他原因,可能会出现发送方发送的连接请求在传输过程中被丢失,而接收方无法正确确认该连接是否建立。如果没有三次握手,接收方会认为发送方发送的请求是有效的,从而可能导致建立了不必要的无效连接。通过三次握手,可以确保发送方和接收方都确认了彼此的连接请求,避免了误认为失效连接请求的情况。

proxy代理的原理?

创建代理对象:通过使用 Proxy 构造函数,我们可以创建一个代理对象。该构造函数接受两个参数:目标对象(target)和处理程序(handler)。

定义处理程序:处理程序是一个对象,其中定义了一些特殊的方法,用于拦截对目标对象的操作。常见的拦截方法包括 get、set、apply 等。当我们对代理对象进行操作时,这些拦截方法会被触发。

操作拦截:当我们对代理对象进行操作时,比如获取属性、设置属性、调用函数等,处理程序中相应的拦截方法会被调用。我们可以在这些拦截方法中自定义行为逻辑。

转发操作:在处理程序中,我们可以选择将操作转发给目标对象,也可以选择忽略操作或返回自定义的结果。通过将操作转发给目标对象,我们可以保持对目标对象的访问,并且可以在转发前后执行自定义逻辑。

内存泄漏?

什么是内存泄漏?

内存泄漏指的是程序在使用内存时,由于某些原因导致程序无法释放已经分配的内存。这会导致系统中的可用内存逐渐减少,最终可能会导致程序崩溃或系统资源不足。

为什么会有内存泄漏?

  • 资源未释放:最常见的内存泄漏是忘记释放已经动态分配的内存。例如,在使用malloc、new等分配内存的函数后,如果没有使用相应的free、delete函数释放内存,就会导致内存泄漏。

  • 引用计数错误:某些语言或框架可能使用引用计数来管理内存,即对象被引用时计数加一,不再被引用时计数减一。如果引用计数错误,计数值无法归零,就会导致内存泄漏。

  • 循环引用:当两个或多个对象相互引用时,如果没有正确处理,它们之间会形成循环引用。在这种情况下,即使对象已经不再被使用,由于引用关系仍存在,对象无法被垃圾回收,从而导致内存泄漏。

  • 缓存问题:缓存是提高性能的常用技术,但如果没有合理管理缓存,就容易导致内存泄漏。比如过期的缓存没有及时清理,或者缓存中存储了大量不再使用的数据。

  • 句柄泄漏:句柄是一种用于访问资源或对象的引用,如文件句柄、网络连接句柄等。如果在使用完毕后没有关闭或释放句柄,就可能导致内存泄漏。

  • 异常处理不当:在异常处理时,如果没有正确释放分配的内存和资源,就会导致内存泄漏。

内存泄漏的情况?

  • 内存使用量逐渐增加:在长时间运行的程序中,如果存在内存泄漏,内存使用量会逐渐增加而不会释放,导致系统可用内存不断减少。

  • 程序运行变慢或卡顿:由于内存泄漏导致系统内存不足,程序可能会变得运行缓慢或出现卡顿现象。这是因为系统不得不频繁进行内存交换,从而影响了程序的执行效率。

  • 频繁的垃圾回收操作:某些编程语言或框架中使用垃圾回收机制来自动管理内存,在发生内存泄漏的情况下,垃圾回收器需要不断运行来释放未被引用的内存,这会导致频繁的垃圾回收操作,降低了程序的性能。

  • 程序异常终止或崩溃:当内存泄漏达到一定程度时,可用内存耗尽,可能会导致程序异常终止或崩溃。这是因为操作系统无法为程序提供所需的内存资源。

  • 资源无法释放:在代码中未释放已分配的内存或其他资源,这些资源将一直占用系统资源,直到程序结束或系统重新启动。

  • 内存泄漏警告:一些开发工具或调试器可能会检测到内存泄漏,并给出相应的警告信息。这些警告通常指示程序中存在未释放的内存或资源。

如何防止内存泄漏的问题?

  • 仔细审查代码:检查代码,找出可能导致内存泄漏的地方。查看是否有未释放的内存分配、资源未关闭或清理的情况。

  • 使用合适的内存管理机制:在使用动态内存分配的语言中,例如C++中的new和delete,需要确保每次分配内存后都要正确释放。可以使用智能指针等自动内存管理的工具来避免手动释放内存的问题。

  • 注意循环引用:如果出现了对象之间的循环引用,应该采取一些手段打破这种引用关系。例如,使用弱引用代替强引用,或者重新设计对象之间的关系,以避免产生循环引用。

  • 合理使用缓存:对于使用缓存的情况,需要注意合理管理缓存的生命周期。及时清理过期的缓存或不再使用的缓存项,避免长时间保留不必要的数据。

  • 引入垃圾回收机制:对于支持垃圾回收的语言或框架,可以使用垃圾回收机制来自动管理内存,减少手动内存释放的风险。但仍需要注意编写代码时的一些规范,避免产生无法回收的对象。

  • 使用性能分析工具:使用专业的性能分析工具来检测和识别内存泄漏问题。这些工具可以帮助定位内存泄漏的源头,并提供相应的修复建议。

  • 进行测试和代码审查:进行全面的测试,包括单元测试、集成测试和回归测试,以确保程序在各种情况下都没有内存泄漏。同时进行代码审查,借助团队合作的力量来发现和纠正潜在的内存泄漏问题。

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力

相关文章:

前端入门到入土?

文章目录 前言http和https的区别,https加密的原理是?区别https的加密原理 TCP为什么要三次握手?proxy代理的原理?内存泄漏?什么是内存泄漏?为什么会有内存泄漏?内存泄漏的情况?如何防…...

架构设计基础设施保障IaaS之网络

目录 1 DNS运用1.1 DNS功能作用1.2 DNS配置实践 2 DNS生产最佳实践方案2.1 全球加速功能2.2 不同运营商的加速方案2.3 全球业务高可用方案2.4 跨地域负载均衡 3 DNS域名劫持解决方案4 CDN剖析4.1 CDN原理4.2 缓存过期配置处理流程4.3 缓存配置规则 5 CDN运用6 CDN最佳实践方案6…...

zabbix安装部署

前期准备:安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…...

零碎的C++

构造函数和析构函数 构造函数不能是虚函数,而析构函数可以是虚函数。原因如下: 构造函数不能是虚函数,因为在执行构造函数时,对象还没有完全创建,还没有分配内存空间,也没有初始化虚函数表指针。如果构造…...

模糊测试面面观 | 模糊测试是如何发现异常情况的?

协议模糊测试是一种用于评估通信协议、文件格式和API实现系统安全性和稳定性的关键技术。在模糊测试过程中,监视器扮演着关键角色,它们能够捕获异常情况、错误响应、资源利用等,为测试人员提供有价值的信息,有助于发现潜在漏洞和问…...

C#备份数据库文件

c#备份数据库文件完整代码 sqlServer 存储过程: USE [PSIDBase] GO /****** Object: StoredProcedure [dbo].[sp_BackupDB] Script Date: 2023/8/31 16:49:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GOALTER procedure [dbo].[sp_BackupDB]…...

行军遇到各种复杂地形怎么处理?

行军遇到各种复杂地形怎么处理? 【安志强趣讲《孙子兵法》第30讲】 【原文】 凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。 【注释】 阳,太阳能照到的地方。阴,太阳照不到的地方。…...

Python Number(数字).............................................

Python Number 数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。 以下实例在变量赋值时 Number 对象将被创建: var1 1 var2 10您也可以使用del语句删除一些 Number 对象引用。 del语句…...

设置 Hue Server 与 Hue Web 界面之间的会话超时时间

设置 Hue Server 与 Hue Web 界面之间的会话超时时间 在 CDH 的 Hue 中,Auto Logout Timeout 参数表示用户在不活动一段时间后将自动注销(登出)的超时时间。当用户在 Hue 中处于不活动状态超过该设定时间时,系统将自动注销用户&am…...

openGauss学习笔记-57 openGauss 高级特性-并行查询

文章目录 openGauss学习笔记-57 openGauss 高级特性-并行查询57.1 适用场景与限制57.2 资源对SMP性能的影响57.3 其他因素对SMP性能的影响57.4 配置步骤 openGauss学习笔记-57 openGauss 高级特性-并行查询 openGauss的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行…...

软考(1)-面向对象的概念

目录 一. 软考基本信息 1. 软考时间: 2. 软考科目: 3.专业知识介绍 -- 综合知识考点分布 4. 专业介绍 -- 软件设计考点分布 二. 面向对象概念 1. 封装 考点一:对象 考点二:封装private 2. 继承 考点三:类 考…...

深度学习推荐系统(四)WideDeep模型及其在Criteo数据集上的应用

深度学习推荐系统(四)Wide&Deep模型及其在Criteo数据集上的应用 在2016年, 随着微软的Deep Crossing, 谷歌的Wide&Deep以及FNN、PNN等一大批优秀的深度学习模型被提出, 推荐系统全面进入了深度学习时代, 时至今日&#x…...

第十二章 YOLO的部署实战篇(中篇)

cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...

面试题查漏补缺 i++和 ++ i哪个效率更高

i 和 i 哪个效率更高? 在这里声明,简单地比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用,而是仅仅简单地用于增加一员…...

Docker的数据管理(持久化存储)

文章目录 一、概述二、数据卷三、数据卷容器四、端口映射五、容器互联(使用centos镜像)总结 一、概述 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers&a…...

定时脚本自动自动将文件push到git

写脚本 绝对路径 环境注意 写python,bash脚本执行调用 py程序 定制crontab -e 日志要指定输入文件中 项目地址 https://gitee.com/stdev_1/sshpi10/ bash脚本 #!/bin/bash 设置要监控的仓库路径 #path~/github/ #watch_dir“/home/pi/gittest/ipset/sshpi10” p…...

025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children

第025个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…...

使用js搭建简易的WebRTC实现视频直播

首先需要一个信令服务器,我们使用nodejs来搭建。两个端:发送端和接收端。我的目录结构如下图:流程 创建一个文件夹 WebRTC-Test。进入文件夹中,新建一个node的文件夹。使用终端并进入node的目录下,使用 npm init 创建p…...

LeetCode 2707. Extra Characters in a String【动态规划,记忆化搜索,Trie】1735

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

设计模式行为型-模板模式

文章目录 一:模板方法设计模式概述1.1 简介1.2 定义和目的1.3 关键特点1.4 适用场景 二:模板方法设计模式基本原理2.1 抽象类2.1.1 定义和作用2.1.2 模板方法2.1.3 具体方法 2.2 具体类2.2.1 定义和作用2.2.2 实现抽象类中的抽象方法2.2.3 覆盖钩子方法 …...

ftrace原理

ftrace(Function Tracer)是 Linux 内核内置的动态跟踪框架,核心原理是:编译时静态插桩 运行时动态代码修改(Code Patching) 高效环形缓冲区(Ring Buffer),实现对内核函数…...

云端开发新选择:星图OpenClaw镜像+千问3.5-9B联调

云端开发新选择:星图OpenClaw镜像千问3.5-9B联调 1. 为什么选择云端联调方案? 去年尝试在MacBook Pro上本地部署OpenClaw时,风扇狂转的噪音让我意识到一个问题:个人设备跑大模型自动化框架的组合实在太吃资源。当时为了调试一个…...

从MIMO到相控阵:深入浅出聊聊RFSoC的MTS(多片同步)为啥是5G/雷达系统的核心

从MIMO到相控阵:深入浅出聊聊RFSoC的MTS(多片同步)为啥是5G/雷达系统的核心 在5G Massive MIMO基站的天线阵列背后,或是军用雷达的相控阵天线系统中,数以百计的射频收发通道需要像精密交响乐团般协同工作——任何微小的…...

Phi-4-Reasoning-Vision基础操作:图片预览、参数调整、结果复制与导出功能

Phi-4-Reasoning-Vision基础操作:图片预览、参数调整、结果复制与导出功能 1. 工具概览 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。它专为双卡4090环境优化,通过Streamlit搭建了直观的宽屏交…...

别再死记硬背了!用‘减法’和‘host/any’关键字,5分钟搞定思科ACL通配符掩码配置

思科ACL通配符掩码:5分钟掌握减法计算与host/any实战技巧 刚接触思科ACL配置时,通配符掩码总是让人头疼。那些0和1的组合看似简单,实际配置时却容易出错。但你可能不知道,掌握两个核心技巧就能彻底解决这个问题——用255.255.255.…...

ABAQUS模拟CFRP约束型钢再生混凝土短柱复现:‘保姆级教程‘中的材料、相互作用设置与曲线...

ABAQUS,CFRP约束型钢再生混凝土短柱论文复现 CFRP材料 相互作用的设置 曲线的调试(前期刚度以及承载力) 保姆级教程打开ABAQUS第一件事先冲杯咖啡——这玩意儿的曲线调试能让你怀疑人生。今天咱们来折腾CFRP裹着型钢再生混凝土的短柱&#xf…...

茉莉花插件:5分钟快速上手Zotero中文文献智能管理终极指南

茉莉花插件:5分钟快速上手Zotero中文文献智能管理终极指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在为处理…...

基于YOLOV8的车辆检测系统:快速上手与实用功能

基于YOLOV8的车辆检测系统 基于深度学习的车辆检测系统有数据集 模型已经训练好 直接用即可 报告 30r 就是售价 包搭配环境 远程运行跑通程序 本项目已经训练好模型,配置好环境可直接使用,运行效果见图像(可找我要演示视频) 项…...

IPATool终极指南:如何用命令行轻松获取iOS应用安装包?

IPATool终极指南:如何用命令行轻松获取iOS应用安装包? 【免费下载链接】ipatool Command-line tool that allows searching and downloading app packages (known as ipa files) from the iOS App Store 项目地址: https://gitcode.com/GitHub_Trendin…...

解决Swagger2集成中v2/api-docs接口404问题的关键:正确配置Docket分组

1. 为什么访问v2/api-docs会返回404? 这个问题困扰过不少开发者。当你兴冲冲地集成完Swagger2,打开swagger-ui.html页面,却发现页面一片空白,控制台报错显示v2/api-docs接口返回404。更让人抓狂的是,单独访问这个接口时…...