前端面试的性能优化部分(13)每天10个小知识点


目录

  • 系列文章目录
    • 前端面试的性能优化部分(1)每天10个小知识点
    • 前端面试的性能优化部分(2)每天10个小知识点
    • 前端面试的性能优化部分(3)每天10个小知识点
    • 前端面试的性能优化部分(4)每天10个小知识点
    • 前端面试的性能优化部分(5)每天10个小知识点
    • 前端面试的性能优化部分(6)每天10个小知识点
    • 前端面试的性能优化部分(7)每天10个小知识点
    • 前端面试的性能优化部分(8)每天10个小知识点
    • 前端面试的性能优化部分(9)每天10个小知识点
    • 前端面试的性能优化部分(10)每天10个小知识点
    • 前端面试的性能优化部分(11)每天10个小知识点
    • 前端面试的性能优化部分(12)每天10个小知识点
  • 知识点
    • 121.**如何处理移动端的触摸事件,以实现流畅的交互体验?**
    • 122.**如何在网页加载时实现平滑的渐进式图像加载效果?**
    • 123.HTTP/3 在性能上的优势,如何在项目中应用它来提高性能
    • 124.**什么是 Critical CSS,如何应用它以提高页面加载速度?**
    • 125.**在使用第三方库时,你如何避免打包过多的无用代码?**
    • 126.**在性能优化过程中,如何处理大量数据的渲染和交互?**
    • 127.**在使用框架(如React、Vue等)时,如何优化组件渲染性能的?**
    • 128.**如何处理国际化(i18n)在性能优化方面的问题?**
    • 129.**如何处理首次加载时的闪烁问题(Flash of Unstyled Content,FOUC)?**
    • 130.**在使用字体图标时,你是如何避免性能问题和可访问性问题的?**


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

系列文章目录

前端面试的性能优化部分(1)每天10个小知识点

前端面试的性能优化部分(2)每天10个小知识点

前端面试的性能优化部分(3)每天10个小知识点

前端面试的性能优化部分(4)每天10个小知识点

前端面试的性能优化部分(5)每天10个小知识点

前端面试的性能优化部分(6)每天10个小知识点

前端面试的性能优化部分(7)每天10个小知识点

前端面试的性能优化部分(8)每天10个小知识点

前端面试的性能优化部分(9)每天10个小知识点

前端面试的性能优化部分(10)每天10个小知识点

前端面试的性能优化部分(11)每天10个小知识点

前端面试的性能优化部分(12)每天10个小知识点

知识点

121.如何处理移动端的触摸事件,以实现流畅的交互体验?

处理移动端的触摸事件是实现流畅交互体验的重要部分。以下是一些方法来处理移动端的触摸事件:

  1. 使用合适的事件: 使用合适的触摸事件,如touchstarttouchmovetouchend等,来响应用户的触摸操作。
  2. 避免阻止默认行为: 在处理触摸事件时,避免阻止默认行为,除非有明确的需要。这可以确保浏览器能够正确地处理用户的触摸操作,如滚动和缩放。
  3. 防止多次触发: 使用适当的节流(throttle)或去抖动(debounce)技术,防止事件在短时间内多次触发,以避免性能问题。
  4. 触摸和鼠标兼容性: 考虑使用支持触摸和鼠标的事件库,以确保在不同设备上都有良好的交互体验。
  5. 优化动画效果: 如果有涉及到动画效果,使用硬件加速,如transformopacity等,以确保动画流畅。
  6. 手势识别库: 使用手势识别库,如Hammer.js,来处理复杂的手势操作,如滑动、缩放和旋转。
  7. 缩放和滚动: 在需要支持缩放和滚动的区域,确保适当的缩放和滚动行为,以实现更自然的交互。
  8. 处理滑动冲突: 如果页面中有多个可滑动的区域,确保正确处理滑动冲突,避免不必要的滚动问题。
  9. 响应式触摸区域: 考虑到不同设备尺寸,保证触摸区域足够大,以便用户在不同尺寸的设备上都能轻松触摸操作。
  10. 触摸反馈: 提供触摸反馈,如点击效果、颜色变化等,让用户能够清楚地感知他们的触摸操作。
  11. 性能测试: 使用性能分析工具来测试移动端触摸事件的性能表现,识别潜在的性能问题。
  12. 用户体验测试: 在真实的移动设备上进行用户体验测试,检查触摸事件的响应速度和交互效果。

综上所述,处理移动端的触摸事件需要综合考虑性能、用户体验和交互效果,确保流畅的交互体验和良好的性能。

122.如何在网页加载时实现平滑的渐进式图像加载效果?

实现平滑的渐进式图像加载效果可以提升用户体验,以下是一种常见的方法:

  1. 使用渐进式图像: 使用渐进式图像格式,如JPEG格式的渐进式图像。这种格式允许图像从模糊到清晰逐步加载,而不是一次性加载整个图像。
  2. 设置图像大小: 在HTML的<img>标签中设置图像的宽度和高度。这可以确保页面在图像加载之前就有了一块占位区域,防止页面内容因图像加载而抖动。
  3. 加载占位图像: 在图像加载之前,可以使用小尺寸的占位图像作为预览。这可以保证页面的布局稳定,不会因为图像加载而变化。
  4. 使用CSS动画: 使用CSS的opacity属性和动画过渡效果,使得图像以渐进的方式显示出来。可以设置一个较长的渐变过渡时间,使图像逐渐显示。
  5. 懒加载技术: 使用懒加载技术,在页面初始加载时只加载可视区域内的图像,随着用户滚动,逐步加载其他图像。这可以减少初始加载时间,提升用户体验。
  6. 模糊图像预览: 使用模糊的小尺寸图像作为预览,然后通过渐进式加载,逐步替换为清晰的图像。
  7. JavaScript加载控制: 使用JavaScript控制图像的加载,当图像完全加载后再显示在页面上,而不是等到所有图像都加载完再显示整个页面。
  8. 性能测试: 使用性能分析工具来测试渐进式加载效果对页面加载速度的影响,以确保不会影响整体性能。

通过这些方法,你可以实现平滑的渐进式图像加载效果,提升用户体验并降低页面的加载感知时间。

123.HTTP/3 在性能上的优势,如何在项目中应用它来提高性能

HTTP/3是一种基于QUIC协议的新一代网络传输协议,旨在提高网络性能和安全性。它具有以下一些优势:

  1. 减少连接建立延迟: HTTP/3使用QUIC协议,通过多路复用和0-RTT(零往返时间)连接建立,显著降低了连接建立的延迟。
  2. 减少头部压缩: HTTP/3采用更高效的头部压缩算法,减少了数据传输过程中的头部开销,提高了有效数据传输率。
  3. 抗丢包: QUIC协议内建了前向纠错等机制,能够更好地处理丢包和网络抖动,提高了数据传输的稳定性。
  4. 解决队头阻塞: HTTP/3采用多路复用的方式,可以避免HTTP/2中的队头阻塞问题,提升并行传输效率。
  5. 快速拥塞控制: HTTP/3使用QUIC内置的快速拥塞控制机制,能够更快地适应网络状况的变化。

要在项目中应用HTTP/3以提高性能,你可以考虑以下步骤:

  1. 服务器配置: 确保你的服务器支持HTTP/3协议。大多数现代的Web服务器,如Nginx和Apache,都已经开始支持HTTP/3。
  2. 域名解析: HTTP/3需要使用UDP进行连接,所以确保域名解析器也支持UDP协议。
  3. 启用TLS: HTTP/3通常与TLS一起使用,所以确保你的网站启用了TLS证书。
  4. CDN支持: 如果你使用了CDN(内容分发网络),确保CDN提供商已经支持HTTP/3。
  5. 测试和监控: 在应用HTTP/3之前,进行充分的测试,确保它与你的应用程序兼容,并使用性能监控工具来跟踪性能的改进。
  6. 升级库和框架: 如果你使用了前端库和框架,确保它们支持HTTP/3,并更新到最新版本。
  7. 性能评估: 使用性能分析工具来评估HTTP/3对于你的网站性能的影响,确保它带来了预期的性能提升。

总之,通过使用HTTP/3,你可以在项目中显著提高性能,减少延迟和提升用户体验。但在应用之前,确保你的服务器和应用环境都已做好相应的准备工作。

124.什么是 Critical CSS,如何应用它以提高页面加载速度?

Critical CSS是一种优化技术,用于提高页面加载速度和首次渲染性能。它的核心思想是将与首次渲染相关的关键样式(Critical Styles)提取出来,内联到HTML中,从而避免不必要的网络请求和等待,以尽快呈现页面的可视内容。

通常,一个网页的样式表(CSS)包含了整个网站的样式定义,但页面的首次渲染只需要一部分关键样式,如头部、导航栏、主要内容等。而将整个样式表加载会导致延迟,因为浏览器需要下载整个CSS文件才能开始渲染页面。

要应用Critical CSS以提高页面加载速度,可以采取以下步骤:

  1. 识别关键样式: 首先,识别出页面的关键样式,即首次渲染所需的样式。这通常包括上述提到的头部、导航栏、主要内容等。
  2. 提取关键样式: 将关键样式从整个样式表中提取出来,创建一个新的CSS文件,这就是Critical CSS。
  3. 内联到HTML: 将Critical CSS内容内联到HTML的<style>标签中,放在页面的头部。这样,当浏览器解析HTML时,就会立即应用这些关键样式,而不需要等待外部CSS文件加载。
  4. 异步加载剩余样式: 将剩余的样式放在一个外部CSS文件中,并使用异步加载技术,如<link rel="preload" as="style" href="path/to/remaining-styles.css" onload="this.onload=null;this.rel='stylesheet'">,这样可以在页面加载完成后再加载其他样式,不会阻塞首次渲染。
  5. 测试和优化: 使用性能分析工具,评估Critical CSS的效果。确保关键内容能够快速渲染,并且用户能够尽快看到页面的内容。

需要注意的是,Critical CSS的应用需要权衡考虑,因为内联CSS会增加HTML文件的大小,可能会影响页面整体性能。因此,需要根据具体情况和页面需求来决定哪些样式是关键的,以及如何平衡页面加载速度和性能。

125.在使用第三方库时,你如何避免打包过多的无用代码?

避免打包过多的无用代码是在前端开发中非常重要的一项任务,可以通过以下几种方法来实现:

  1. 按需引入: 许多第三方库支持按需引入,这意味着你只需要导入项目中实际使用的模块或组件,而不是整个库。这可以显著减小打包的体积。
  2. Tree Shaking: 使用工具如Webpack,在打包过程中进行Tree Shaking,它会自动检测并移除未使用的代码,从而减少打包出来的文件大小。
  3. 代码分割: 将第三方库与自己的代码分开打包,可以使用Webpack的代码分割功能。这样,在不同的页面或路由上只加载必要的代码,减少无用代码的加载。
  4. 动态导入: 使用动态导入(Dynamic Imports)来按需加载第三方库,这可以通过异步加载模块来避免在初始加载时加载不必要的代码。
  5. 使用CDN: 将一些常用的第三方库使用CDN引入,这样可以避免将它们包含在打包文件中,减少打包体积。
  6. 分析工具: 使用打包分析工具,如Webpack Bundle Analyzer,来检查打包后的文件,识别哪些模块占用了较大的体积,进而优化代码。
  7. 版本控制: 仔细选择第三方库的版本,尽量避免导入不必要的功能或模块。
  8. 定制构建: 如果第三方库提供了定制构建的选项,可以根据项目的需求选择只包含所需的功能。

总之,通过以上方法,你可以有效地避免打包过多的无用代码,从而减小项目的打包体积,提高应用的性能。

126.在性能优化过程中,如何处理大量数据的渲染和交互?

处理大量数据的渲染和交互是一个常见的挑战,特别是在构建数据密集型应用或大型列表时。以下是一些处理大量数据的渲染和交互的方法:

  1. 虚拟化: 使用虚拟化技术(如React的虚拟列表或Infinite Scroll)来只渲染可见区域的数据,而不是全部渲染。这可以大大减少DOM元素的数量,提高渲染性能。
  2. 分页加载: 将数据分成多页进行加载,每次只加载一页数据。这可以减少一次性加载大量数据的负担,提高页面响应速度。
  3. 分批渲染: 将数据分成多个小批次进行渲染,每次只渲染一部分数据。这可以将渲染的工作分散到多个时间段,避免一次性渲染大量数据。
  4. 懒加载: 对于列表中的每个项,可以采用懒加载技术,只在需要时才加载该项的内容,而不是一开始就加载所有项的内容。
  5. 数据优化: 在渲染之前,对数据进行优化和筛选,只渲染需要展示的数据,避免不必要的渲染。
  6. 性能优化库: 使用一些专门针对大量数据渲染的性能优化库,如React Virtualized或List.js,它们提供了优化过的渲染和交互方式。
  7. Web Workers: 将渲染和数据处理任务移交给Web Workers,在后台线程中进行处理,避免阻塞主线程,提高渲染性能。
  8. 无限滚动: 对于长列表,使用无限滚动技术,当用户滚动到底部时,动态加载更多数据,避免一次性加载所有数据。
  9. 事件委托: 在处理大量数据的交互时,使用事件委托,将事件监听器添加到父元素上,避免为每个子元素都添加监听器,提高交互性能。
  10. 状态管理: 使用状态管理库(如Redux、Mobx等)来管理数据状态,确保只有真正需要重新渲染的部分会进行更新。

处理大量数据的渲染和交互需要综合考虑性能和用户体验,选择适合项目需求的技术和方法。在实际应用中,可能需要结合多种技术来优化渲染和交互性能。

127.在使用框架(如React、Vue等)时,如何优化组件渲染性能的?

优化框架中组件的渲染性能是前端开发中非常重要的任务,以下是一些优化组件渲染性能的方法:

  1. 使用Pure Components: 在React中,使用React.PureComponentReact.memo来避免不必要的渲染。这些组件只会在其props发生变化时才重新渲染,避免不必要的渲染开销。
  2. 使用Key属性: 在渲染列表时,确保为每个列表项提供唯一的key属性。这可以帮助React更好地识别哪些元素需要更新,减少渲染开销。
  3. 避免不必要的渲染: 在组件中使用shouldComponentUpdate(在React中)或shouldUpdateComponent(在Vue中)来判断是否需要进行渲染。只在必要时返回true,避免不必要的渲染。
  4. 使用组件拆分: 将大型组件拆分成更小的可复用组件,这样可以提高组件的可维护性和性能。每个小组件只负责自己的部分渲染。
  5. 懒加载和动态导入: 对于不是首次渲染时就需要的组件,使用懒加载和动态导入来延迟加载,避免不必要的初始渲染开销。
  6. 使用虚拟化: 对于大型列表或长列表,使用虚拟化技术(如React的虚拟列表)来只渲染可见区域的内容,避免一次性渲染大量内容。
  7. 避免过深的嵌套: 避免过多的组件嵌套,因为每层嵌套都会增加渲染和更新的开销。
  8. 优化无用Props: 避免将大量无用的props传递给组件,这可能会触发不必要的渲染。使用属性解构来只传递需要的props。
  9. 使用Memoization: 在组件内部,使用memoization技术(如useMemocomputed属性)来缓存计算结果,避免在每次渲染时都重新计算。
  10. 批量更新: 在React中,使用setState的回调函数形式,将多个状态更新合并成一次批量更新,减少渲染次数。
  11. 使用状态管理: 对于复杂应用,使用状态管理库(如Redux、Mobx等)来管理组件的状态,确保状态变化时只渲染需要更新的部分。
  12. 性能监测: 使用性能分析工具来监测组件的渲染性能,识别性能瓶颈并进行优化。

通过综合应用这些方法,可以显著提升框架中组件的渲染性能,提供更好的用户体验。

128.如何处理国际化(i18n)在性能优化方面的问题?

国际化(i18n)是一项重要的任务,但在处理性能优化时需要特别关注,因为加载和显示不同语言的内容可能会影响页面的加载时间和性能。以下是在处理国际化时考虑性能优化的一些建议:

  1. 延迟加载: 如果你的应用支持多种语言,考虑使用延迟加载来只加载用户所需的语言资源。在初始加载时只加载默认语言的内容,然后根据用户选择的语言再加载相应的资源。
  2. 按需加载: 对于国际化的内容,可以使用按需加载的技术,确保只加载当前页面或组件所需的语言资源,而不是一次性加载所有语言的资源。
  3. CDN 加速: 使用内容分发网络(CDN)来加速国际化资源的加载,这可以帮助提高资源的加载速度,减少用户等待时间。
  4. 资源缓存: 使用浏览器缓存来存储已加载的语言资源,以便在用户再次访问时能够更快地加载。
  5. 压缩和优化: 对于国际化的资源文件,使用压缩和优化工具来减小文件大小,提高加载速度。
  6. 选择合适的方案: 在选择国际化方案时,考虑使用针对性能优化的库或工具,例如React Intl或Vue I18n,它们提供了性能优化的选项。
  7. 服务器端渲染: 对于一些静态内容,可以考虑在服务器端生成国际化的页面,以提供更快的加载速度和更好的性能。
  8. 国际化资源分割: 如果使用动态导入,可以为不同的语言资源分割代码,以便只加载用户所需的语言资源。
  9. 性能测试: 在不同语言环境下进行性能测试,以确保在国际化时也能够保持良好的加载速度。
  10. 国际化的代码拆分: 如果应用使用了代码拆分技术,确保国际化的内容也参与了拆分,避免一次性加载所有语言的内容。

总之,国际化和性能优化之间需要权衡,通过合适的技术和方法,可以在提供多语言支持的同时,保持应用的性能和用户体验。

129.如何处理首次加载时的闪烁问题(Flash of Unstyled Content,FOUC)?

首次加载时的闪烁问题(FOUC)是在页面加载过程中,由于样式表(CSS)加载延迟或阻塞导致页面一开始显示无样式的内容,然后突然应用样式的现象。这会对用户体验产生负面影响。以下是一些解决FOUC问题的方法:

  1. 内联关键样式: 将页面的关键样式(如页面头部的核心样式)内联到HTML文档中,这样即使样式表尚未加载完成,页面也会有一些基本的样式,避免裸露的内容闪烁。
  2. 使用样式预加载: 使用<link rel="preload" as="style">标签来预加载样式表,确保在页面加载过程中样式表得以尽早下载。
  3. 异步加载样式: 使用<link rel="stylesheet" href="style.css" media="none" onload="if(media!='all')media='all'">标签异步加载样式表,等待样式表完全加载后再将其应用于页面,以避免FOUC。
  4. 避免重要内容的隐藏: 避免将重要内容使用样式隐藏,这样即使样式延迟加载,内容也会一开始就可见。
  5. 使用媒体查询: 根据不同设备和视口大小,使用媒体查询来为页面应用合适的样式,避免出现未样式化的内容。
  6. 优化样式表: 确保样式表的大小和复杂性适中,以减少加载时间。
  7. 缓存样式表: 使用浏览器缓存来存储样式表,以便在用户再次访问时能够更快地加载。
  8. 使用Font Display: 如果使用自定义字体,可以通过CSS属性font-display来控制字体的加载和显示方式,以减少FOUC的问题。
  9. 使用服务端渲染(SSR): 对于一些重要页面,考虑使用服务端渲染来提供首次加载时的完整内容,避免FOUC问题。
  10. 性能测试: 在不同网络条件和设备上进行性能测试,以确保页面加载时没有出现FOUC问题。

综合考虑这些方法,可以帮助减少首次加载时的闪烁问题,提供更好的用户体验。

130.在使用字体图标时,你是如何避免性能问题和可访问性问题的?

使用字体图标可以为网站提供矢量图标,但同时也需要注意性能和可访问性问题。以下是在使用字体图标时需要考虑的一些方法:

性能问题:

  1. 字体子集化: 使用字体子集化工具,只包含项目中实际使用的图标,以减小字体文件的大小。
  2. 压缩字体文件: 使用字体压缩工具,减小字体文件的体积,以提高加载速度。
  3. 使用WebP格式: 对字体图标进行转换,以WebP格式提供,以减小文件大小并加速加载。
  4. 字体加载异步化: 使用<link rel="preload">标签预加载字体文件,以确保字体文件能够尽早下载。
  5. 使用合适的缓存策略: 设置合适的HTTP缓存头,以便浏览器可以缓存字体文件,减少重复加载。

可访问性问题:

  1. 文本替代: 对于字体图标,始终提供适当的文本替代内容,以确保屏幕阅读器用户能够了解图标的含义。
  2. 使用Aria标签: 对于没有文本替代的图标,可以使用ARIA标签来为图标提供适当的描述。
  3. 适度使用: 不应过度依赖字体图标来传达重要信息,以防止屏幕阅读器用户无法理解页面内容。
  4. 测试可访问性: 在屏幕阅读器上测试页面,确保字体图标不会导致可访问性问题。
  5. 提供文本版本: 对于一些无法适当访问字体图标的用户,可以提供备用的文本版本。

总之,在使用字体图标时,要确保它们既不影响性能,又能够提供良好的可访问性,以保证用户体验的全面性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/47556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线转换器有哪些优势?在线Word转PDF操作分享

我们如果想要将两者不同格式文件进行格式转换&#xff0c;就需要下载安装转换器。如果出门带的设备没有安装转换软件客户端&#xff0c;就无法使用&#xff0c;会比较麻烦。现在有了在线转换工具&#xff0c;只需要打开相应的网页就可使用&#xff0c;那么在线Word转PDF的操作是…

【实战】十一、看板页面及任务组页面开发(三) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十五)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

4.9 C++ Boost 命令行解析库

命令行解析库是一种用于简化处理命令行参数的工具&#xff0c;它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息。C语言中&#xff0c;常用的命令行解析库有许多&#xff0c;通过本文的学习&#xff0c;读者可以了解不同的命令行解析库和它们在C项目中的应用&#…

antd5源码调试环境启动(MacOS)

将源码下载至本地 这里antd5 版本是5.8.3 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提&#xff1a;安装python3、node版本18.14.0(这是本人当前下载的版本&#xff09; python3安装教程可参考&#xff1a;https://…

Stable Diffusion入门修炼手册

简介 作为新入门的新手&#xff0c;通常安装完Stable Diffusion之后&#xff0c;一打开界面&#xff0c;在文生图输入girl或者dog&#xff0c;结果出来的画面比较糟糕&#xff0c;看起来像素很低&#xff0c;画面不清晰&#xff0c;人物也不怎么美&#xff0c;等等其他问题&am…

电脑运行缓慢?4个方法,加速电脑运行!

“我电脑才用了没多久哎&#xff01;怎么突然就变得运行很缓慢了呢&#xff1f;有什么方法可以加速电脑运行速度吗&#xff1f;真的很需要&#xff0c;看看我吧&#xff01;” 电脑的运行速度快会让用户在使用电脑时感觉愉悦&#xff0c;而电脑运行缓慢可能会影响我们的工作效率…

【vue】更改角色权限后,实现页面不刷新更改其可展示的导航菜单

登入的角色本身属于领导级别&#xff08;集团权限&#xff09;&#xff0c;没有下级的不同权限&#xff1a; 切换不同身份&#xff08;公司&#xff09;&#xff0c;以获得相应部门的不同导航菜单及权限 这里实现&#xff1a;更改角色权限后&#xff0c;实现页面 不刷新 更改…

攻防世界-supersqli

原题 解题思路 直接查找看不到明显的回显变化 先找回显变化数量 -1 order by 2 #如果是3列就报错&#xff0c;说明只有两列。接下来找数据库名称&#xff1a; -1 union select 1,databases # 结果是后端做了一些简单的过滤&#xff0c;需要更换查找语句。 -1; show …

LeetCode669. 修剪二叉搜索树

669. 修剪二叉搜索树 文章目录 [669. 修剪二叉搜索树](https://leetcode.cn/problems/trim-a-binary-search-tree/)一、题目二、题解方法一&#xff1a;递归法方法二&#xff1a;迭代法 一、题目 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 hig…

ReenTrantLock可重入锁(和synchronized的区别)总结

可重入性&#xff1a; 从名字上理解&#xff0c;ReenTrantLock的字面意思就是再进入的锁&#xff0c;其实synchronized关键字所使用的锁也是可重入的&#xff0c;两者关于这个的区别不大。两者都是同一个线程没进入一次&#xff0c;锁的计数器都自增1&#xff0c;所以要等到锁…

七夕节日表白:七大网页风格与其适用人群

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

如何使用 ChatGPT 将文本转换为 PowerPoint 演示文稿

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 步骤 1&#xff1a;将文本转换为幻灯片演示文稿 第一步涉及指示 ChatGPT 根据给定的文本生成具有特定数量幻灯片的演示文稿。首先&#xff0c;您必须向 ChatGPT 提供要转换的文本。 使用以下提示指示…

SpringMVC-2-Spring MVC拦截器详解:从入门到精通

SpringMVC-2-Spring MVC拦截器详解&#xff1a;从入门到精通 今日目标 能够编写拦截器并配置拦截器 1.拦截器【理解】 1 拦截器介绍 1.1 拦截器概念和作用 拦截器&#xff08;Interceptor&#xff09;是一种动态拦截方法调用的机制&#xff0c;在SpringMVC中动态拦截控制器方…

C的进阶C++学习方向

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的…

L1-028 判断素数 测试点全过

题目 本题的目标很简单&#xff0c;就是判断一个给定的正整数是否素数。 输入格式 输入在第一行给出一个正整数N &#xff08; ≤ 10 &#xff09; &#xff08;≤ 10&#xff09; &#xff08;≤10&#xff09;&#xff0c;随后N行&#xff0c;每行给出一个小于 2 3 1 2^ 31…

Python开发环境(Visual Studio Code、Anaconda、PyInstaller、Enigma Virtual Box)

Python开发环境 [Anaconda、PyInstaller、Enigma Virtual Box] AnacondaAnaconda安装搭建Python环境Anaconda命令 Visual Studio CodeVisual Studio Code中Python设置Visual Studio Code中安装PyQt5Visual Studio Code中使用Qt DesignerVisual Studio Code中Anaconda切换虚拟环…

uniapp 自定义手机顶部状态栏(适配状态栏高度)

开启页面自定义导航栏功能 uniapp 在 pages.json 页面设置了全局的 globalStyle 的 "navigationStyle": "custom" 或单页面的 style 的 "navigationStyle": "custom" 之后页面顶部就没有自带的导航栏了&#xff0c;这时用户可自定义该…

介绍一些编程语言— Perl 语言

介绍一些编程语言— Perl 语言 Perl 语言 简介 Perl 是一种动态解释型的脚本语言。 最初的设计者为拉里・沃尔&#xff0c;它于 1987 1987 1987 年 12 12 12 月 18 18 18 日发表。Perl 借取了 C、sed、awk、shell scripting 以及很多其他编程语言的特性。其中最重要的特性…

仓库管理的重点在哪?仓库管理能有哪些软件?

对于做实体生意的中小商户来说&#xff0c;仓库管理工作是重中之重的&#xff0c;仓库管理的好坏&#xff0c;直接影响着门店销售和财务状况。 但对于很多中小商户来说&#xff0c;没有足够的人力和精力去高效地做好仓库管理工作&#xff0c;而借助仓库管理软件或进销存软件来…

SNAT和DNAT

SNAT和DNAT 一、SNAT策略及应用1.1SNAT策略概述1.2开启SNAT的命令1.2.1 临时打开1.2.2永久打开 1.3SNAT转换1&#xff1a;固定的公网IP地址1.4SNAT转换2&#xff1a;非固定的公网IP地址&#xff08;共享动态IP地址&#xff09;1.5SNAT案例1.5.1实验准备1.5.2配置网关服务器&…