前端入门到入土?

这篇具有很好参考价值的文章主要介绍了前端入门到入土?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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,需要确保每次分配内存后都要正确释放。可以使用智能指针等自动内存管理的工具来避免手动释放内存的问题。

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

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

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

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

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

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力文章来源地址https://www.toymoban.com/news/detail-694609.html

到了这里,关于前端入门到入土?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hashcat从入门到入土(一)

    Hashcat的官方是这么介绍自己的 Hashcat is a password recovery tool. It had a proprietary code base until 2015, but was then released as open source software. Versions are available for Linux, OS X, and Windows. Examples of hashcat-supported hashing algorithms are LM hashes, MD4, MD5, SHA-family and Unix Crypt formats as well as algorithms used in M

    2024年02月16日
    浏览(31)
  • ES教程:从入门到入土

    建议直接用docker。 docker启动参数说明: -d 后台启动 -p 9200:9200 将虚拟机9200端口映射到elasticsearch的9200端口(web通信默认使用9200端口) -p 9300:9300 将虚拟机9300端口映射到elasticsearch的9300端口(分布式情况下,各个节点之间通信默认使用9300端口) –name MyEs7 指定一个名字(MyEs

    2024年02月07日
    浏览(41)
  • ElasticSearch详细笔记( 从入门到入土)

    ​ Google,百度类的网站搜索,它们都是根据网页中的生成索引,我们在搜索的时 候输入,它们会将该即索引匹配到的所有网页返回;还有常见的项目中应用日 志的搜索等等。对于这些非结构化的数据文本,关系型数据库搜索不是能很好的支持。 一般传统

    2023年04月23日
    浏览(54)
  • 数据结构入门到入土——链表(1)

    目录 一,顺序表表/ArrayList的缺陷 二,链表 三,链表的实现 四,与链表有关的题目练习(1) 1.删除链表中等于给定值 val 的所有节点 2.反转一个单链表 3.给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点 4.输入一个

    2024年02月02日
    浏览(38)
  • Redis入门到入土(day01)

    在90年代,一个网站的访问量一般不大,用单个数据库完全可以轻松应付! 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小,一个机器放不下时 数据的索引(B+ Tree)一个机器的内存放不下时

    2023年04月26日
    浏览(42)
  • 动态规划:从入门到入土系列(一)

    🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 本篇是动态规划系列的入门基础题,以\\\"第 n 个泰波那契数\\\"和 \\\"三步问题\\\"为例子. 题目来源于:力扣 题目链接:传送门 泰波那契序列 Tn 定义如下:

    2024年02月16日
    浏览(42)
  • 新版 Next.js 从入门到入土

    本教程用的Next.js 是 13 版本 完善的React项目,搭建轻松 自带数据同步,解决服务端渲染最大难点 丰富的插件 灵活配置 手动创建 初始化 安装所需要的依赖包 增加快捷命令 创建测试文件 在根目录下创建pages文件夹,并在该文件下创建 index.js pages 文件夹是Next 规定的,在这个

    2024年02月10日
    浏览(51)
  • MacOS安装brew教程从入门到入土

    1.打开macos的终端,输入  2.等待安装完成后的提示   提示需要执行一个命令将homebrew添加到path中,复制提示文本继续在终端中执行,注意,这里每个人的电脑名字不一样,一定要复制你自己终端里提示的命令,我的只是一个参考,直接复制全部就行,不需要换行和调整格式什

    2024年02月11日
    浏览(50)
  • 小黑子—Java从入门到入土过程:第六章

    1.1 文字版格斗游戏= 1.简单版 User类包 GameTest类包 参数占位,格式化输出回顾 关于printf和print和println的区别 print为一般输出,同样不能保留精度格式转化,也不能换行输出 printf常用于格式转换,但需要注意不是换行输出,只用于精度转换 println为换行输出,不能用于格式转换

    2023年04月16日
    浏览(53)
  • 五分钟带你了解spark | 从入门到入土

    spark是一种基于内存的 快速、通用、可扩展 的大数据分析计算引擎。 1. 速度快 一般情况下,对于迭代次数较多的应用程序,Spark 程序在内存中的运行速度是 Hadoop和MapReduce 运行速度的 100 多倍,在磁盘上的运行速度是 Hadoop MapReduce 运行速度的 10 多倍。 2. 易于使用 Spark 支持使

    2024年03月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包