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

面经-浏览器/网络/HTML/CSS

目录

1. http缓存机制

缓存机制

流程概述

2. 常见的http状态码

1xx(信息性状态码)

3xx(重定向状态码)

4xx(客户端错误状态码)

5xx(服务器错误状态码)

3. http和https的区别?

4. 跨域的解决方案

5. 浏览器存储,他们的区别?

6. 页面优化

1、某个页面加载较慢,从哪些方向分析、解决问题?

2、使用缓存

7. 计算机原理

8. GET和POST请求方式的区别

9. script标签,async和defer的作用

10. 重绘和重排(回流)的区别

重排(Reflow)

重绘(Repaint)

总结

11. Dom事件流的顺序?什么是事件委托?

12、防抖/节流的区别? 

13、margin高度塌陷

产生原因

解决方案


1. http缓存机制

HTTP缓存机制旨在通过减少网络请求的数量来加快网页加载速度,同时降低服务器负载。它主要通过浏览器和服务器之间的协议头信息来实现。以下是HTTP缓存的主要机制和相关头部字段:

缓存机制

  1. 强缓存:通过Cache-ControlExpires头部控制。

    • Cache-Control:提供了更细粒度的缓存控制,包括但不限于:
      • no-cache:要求在使用缓存前必须向服务器验证资源是否有更新。
      • no-store:禁止缓存,每次都要从服务器获取最新数据。
      • public:指示响应可以被任何缓存存储。
      • private:指示响应仅对单个用户有效,不能被共享缓存存储。
      • max-age=<seconds>:指定资源被认为新鲜的最大时间(秒)。
    • Expires:指定了一个绝对的过期时间,格式为GMT时间。由于其依赖于客户端时钟准确性,现代实践中更多使用Cache-Control
  2. 协商缓存:当强缓存未命中或根据策略需要重新验证时,使用ETag和/或Last-Modified进行缓存验证。

    • ETag:提供了一个唯一的标识符(通常是哈希值),用于判断资源是否发生变化。
    • If-None-Match:随请求发送给服务器,包含之前收到的ETag值。如果资源未变化,服务器返回304 Not Modified状态码,客户端继续使用缓存。
    • Last-Modified:指示资源最后修改的时间。
    • If-Modified-Since:随请求发送给服务器,包含上次收到的Last-Modified时间。逻辑同If-None-Match。

流程概述

  • 当用户首次访问一个页面时,浏览器会从服务器下载资源,并根据响应头部设置本地缓存。
  • 在后续访问中,浏览器首先检查强缓存是否可用且未过期。如果是,则直接使用缓存,不会发起请求。
  • 如果强缓存已过期或者根据Cache-Control指示需要验证,浏览器将发起条件请求(带有If-None-Match或If-Modified-Since头部)到服务器进行验证。
  • 服务器根据请求头部中的信息决定资源是否自上次请求后发生改变。如果没有变化,返回304状态码;如果有变化,则返回新的资源以及相应的缓存指令。

通过合理配置这些头部,可以有效地利用HTTP缓存机制提升用户体验,同时减轻服务器负担。不过需要注意的是,缓存策略应根据实际情况精心设计,以避免因缓存导致的数据不一致问题。

2. 常见的http状态码

1xx(信息性状态码)

  • 100 Continue:客户端应继续其请求。
  • 101 Switching Protocols:服务器已理解客户端的请求,并将通过升级协议进行切换。

2xx(成功状态码)

  • 200 OK:请求成功,所希望的回应头或数据体将随此回应返回。
  • 201 Created:请求已被实现,且有一个新的资源依据请求的需要而建立。
  • 204 No Content:服务器成功处理了请求,但没有返回任何内容。

3xx(重定向状态码)

  • 301 Moved Permanently:请求的资源已永久移动到新位置,并且未来任何对此资源的引用都应该使用本响应返回的URI。
  • 302 Found:请求的资源临时从不同的URI响应请求。
  • 304 Not Modified:资源未被修改,可以使用缓存的版本。

4xx(客户端错误状态码)

  • 400 Bad Request:由于语法无效,服务器无法理解该请求。
  • 401 Unauthorized:当前请求需要用户验证。
  • 403 Forbidden:服务器理解请求但拒绝执行。
  • 404 Not Found:服务器找不到请求的网页。
  • 405 Method Not Allowed:禁用请求中指定的方法。

5xx(服务器错误状态码)

  • 500 Internal Server Error:服务器遇到未知情况阻止它完成请求。
  • 501 Not Implemented:服务器不具备完成请求的功能。
  • 502 Bad Gateway:作为网关或代理角色的服务器从上游服务器接收到无效响应。
  • 503 Service Unavailable:服务器目前无法使用(因为超载或停机维护)。
  • 504 Gateway Timeout:作为网关或代理角色的服务器未能及时从上游服务器获得响应。

了解这些状态码有助于快速定位问题所在,优化Web应用的性能和可靠性。

3. http和https的区别?

  1. HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  2. 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  4. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

4. 跨域的解决方案

跨域资源共享(CORS, Cross-Origin Resource Sharing)是一种机制,它使用额外的HTTP头部让浏览器能够从一个源请求另一个源的资源。以下是几种常见的跨域解决方案:

  1. CORS(跨域资源共享)

    • 服务器通过设置特定的HTTP响应头来允许某些或所有来源的访问。例如,Access-Control-Allow-Origin头部可以指定哪些域名可以访问资源。
    • 可以配置更复杂的规则,比如允许特定的方法(GET、POST等),或者允许携带凭证(如cookies)的请求。
  2. JSONP(JSON with Padding)

    • JSONP是一种利用<script>标签不受同源策略限制的特点实现跨域请求的方法。
    • 它的工作原理是动态创建一个<script>元素,并设置其src属性为目标跨域URL,该URL返回的数据会被包装在一个函数调用中,这个函数在当前页面定义。
    • 注意:由于安全性问题,现代应用推荐使用CORS而非JSONP。
  3. 代理服务器

    • 如果无法直接从浏览器端进行跨域请求,可以在服务器端搭建一个代理服务。
    • 浏览器向同一域下的代理服务器发送请求,代理服务器再向目标服务器发起请求并转发结果给浏览器。
    • 这种方法避免了浏览器的同源策略限制。
  4. WebSocket

    • WebSocket协议提供了一种新的途径来建立客户端和服务器之间的交互,且不受同源策略的限制。
    • 当需要实时通信时,这是一种有效的解决跨域问题的方法。
  5. 修改.htaccess文件(适用于Apache服务器):

    • 可以通过编辑.htaccess文件添加必要的CORS头部信息,使服务器支持跨域请求。
  6. iframe与postMessage API

    • 使用iframe嵌入外部内容,并结合HTML5的postMessageAPI实现跨文档消息传递。
    • 这样可以让不同源的文档之间安全地交换字符串消息。

选择哪种方案取决于具体的应用场景和需求。对于大多数情况,推荐使用CORS作为首选解决方案,因为它既符合标准,又具有良好的兼容性和灵活性。如果需要支持老旧浏览器或者有特殊的跨域需求,则可能需要考虑其他方法。

CORS注解

参考:https://blog.csdn.net/Do_LaLi/article/details/117568142

@CrossOrigin的使用:

  • 在方法上,表示该方法可以实现跨域请求。
  • 在类上,表示该类中所有方法都可实现跨域请求。

@CrossOrigin的两个参数:

  • origins:允许可访问的域列表
  • maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。
示例:@CrossOrigin(origins = "http://localhost:8082", maxAge = 3600)

5. 浏览器存储,他们的区别?

  • localStorage:永久保存,以键值对保存,存储空间5M
  • sessionStorage:关闭页签/浏览器时清空
  • cookie:随着请求发送,通过设置过期时间删除
  • session:保存在服务端

localStorage/sessionStorage是window的属性,cookie是document的方法

6. 页面优化

1、某个页面加载较慢,从哪些方向分析、解决问题?

    传统页面
    首先判断是接口慢,还是页面慢。如果接口慢,后端优化。

    如果前端页面加载慢,看是否是因为图片等资源过大,尝试替换不同格式体积的图片。定位是否是某些数据处理的函数,比较耗时。或者是否循环操作DOM,js生成dom后再批量插入。

    如果页面直接卡死,就需要分析是否内存泄漏。比如大屏展示的定时刷新卡死,排查思路可如下:

    使用chrome的任务管理器,操作页面观察的内存占用的变化。定位到是哪些操作,哪块代码导致内存占用飙升。

    因为js并没有直接释放缓存的语法,只有靠浏览器的垃圾回收机制自动清理。我们需要做的是及时给不需要的变量赋空。

    特别注意大数据的循环实例化后,变量是否及时赋空。定时器等闭包方法中是否存在内存泄漏,循环渲染地图时,是否先将之前地图数据清空等。

    单页面应用
    单页面一般不会某个页面加载慢,一般都集中在首屏加载时白屏较久。处理方法可参考上文中

    2、使用缓存
    • 有些接口没必要每次打开页面都请求,可用cookie计时。某个时间段内不重新获取。
    • 某些数据初始化时加载一次即可,可通过cookie计时,某个时间段内不用请求。
    • 某些数据可用localstorage存储,默认填充input,更新时才重写缓存。这个只是用户体验好些

      7. 计算机原理

      1、进程和线程的关系?
      进程(Process)和线程(Thread)是操作系统中两个重要的概念,它们之间存在密切的关系。

      进程:

      进程是程序执行的实例,是操作系统资源分配的基本单位
      每个进程都有独立的地址空间、代码、数据和系统资源。
      进程之间相互独立,彼此不受影响。
      线程:

      线程是进程内的执行单元,是操作系统调度的基本单位
      同一进程内的多个线程共享相同的地址空间和系统资源。
      线程之间可以方便地进行通信和数据共享。
      关系:

      一个进程可以包含多个线程,这些线程共享进程的资源,包括内存、文件句柄等。
      同一进程内的线程之间可以通过共享的内存空间进行通信和数据交换,这使得线程间的协作变得更加高效。


      总的来说,进程和线程之间是包含关系,一个进程可以拥有多个线程,而线程则是在进程内执行的单元。通过线程的使用,可以更加高效地利用系统资源,提高程序的并发性和响应性。

      8. GET和POST请求方式的区别

      数据传输方式

      • GET:将参数附加在URL后面作为查询字符串发送到服务器。例如:http://example.com/page?key1=value1&key2=value2
      • POST:通过请求体发送数据,参数不会显示在URL中。

      数据大小限制

      • GET:由于数据是附加在URL中的,而浏览器对URL长度有限制(不同浏览器限制不同),因此GET请求的数据大小也受到限制,通常建议不超过2048个字符。
      • POST:理论上可以发送大量数据,受限于服务器配置和内存情况。

      安全性

      • GET:因为数据直接暴露在URL中,所以相对不安全,不适合传输敏感信息如密码等。
      • POST:数据在请求体中,相对更安全一些,但也不是绝对安全,仍需使用HTTPS协议保证数据传输的安全性。

      缓存

      • GET:请求可被浏览器缓存,适合用于获取数据的操作,如搜索内容。
      • POST:请求一般不会被缓存,更适合用于提交数据的操作,如表单提交。

      幂等性

      • GET:应该是幂等的,即多次相同的GET请求应该产生相同的结果,不会影响服务器状态。
      • POST:不是幂等的,每次请求可能会导致服务器状态的变化(比如数据库记录的增加)。

      用途

      • GET:适用于获取资源,不应有副作用。
      • POST:适用于提交数据,可能会改变服务器上的资源状态。

      选择GET还是POST应根据具体的应用场景来决定。如果只是简单地获取数据且不需要保密,GET通常是不错的选择;如果涉及到用户输入、文件上传或任何可能修改服务器端资源的操作,则应使用POST。

      9. script标签,async和defer的作用

      在HTML中,<script>标签用于加载和执行JavaScript代码。为了优化网页的性能,避免脚本阻塞页面的渲染或资源加载,asyncdefer属性被引入。它们的作用是控制脚本的加载和执行行为。

      1. 默认行为(无 async 和 defer

      • 如果 <script> 标签没有指定 async 或 defer 属性:
        • 加载:浏览器会立即加载脚本,并且阻塞 HTML 的解析。
        • 执行:一旦脚本加载完成,浏览器会立即执行脚本,然后继续解析剩余的HTML内容。
        • 问题:这种方式可能会导致页面渲染延迟,尤其是在脚本文件较大或网络较慢的情况下。
      <script src="example.js"></script>

      2. async 属性

      • 作用

        • 脚本异步加载,不会阻塞HTML的解析。
        • 脚本加载完成后,会立即执行,即使HTML尚未完全解析。
        • 多个带有 async 属性的脚本之间的执行顺序不保证,谁先加载完成谁先执行。
      • 适用场景

        • 适用于独立的脚本(如统计分析脚本、广告脚本等),这些脚本不需要依赖其他脚本或DOM结构。
      <script src="example.js" async></script>
      • 特点
        • 不会阻塞HTML解析。
        • 执行时机不确定(取决于脚本的加载速度)。

      3. defer 属性

      • 作用

        • 脚本异步加载,不会阻塞HTML的解析。
        • 脚本加载完成后,会等待HTML解析完成后才执行。
        • 多个带有 defer 属性的脚本会按照它们在HTML中的顺序依次执行。
      • 适用场景

        • 适用于需要操作DOM但又不想阻塞页面渲染的脚本(如主程序逻辑)。
      <script src="example.js" defer></script>
      • 特点
        • 不会阻塞HTML解析。
        • 执行顺序是确定的,按照脚本在HTML中的顺序执行。
        • 执行时机是在HTML解析完成后、DOMContentLoaded事件之前。

      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title>Script Example</title><script src="script1.js" async></script><script src="script2.js" defer></script>
      </head>
      <body><h1>Hello World</h1>
      </body>
      </html>

      行为分析:

      1. script1.js(async)

        • 异步加载,加载完成后立即执行。
        • 可能会在页面渲染之前执行,也可能在渲染之后执行。
        • 如果script1.jsscript2.js先加载完成,则会先执行。
      2. script2.js(defer)

        • 异步加载,但会等待HTML解析完成后按顺序执行。
        • 即使script2.jsscript1.js先加载完成,也会等到HTML解析完成后再执行。

      6. 总结

      • 如果脚本之间有依赖关系,或者需要确保脚本在HTML解析完成后执行,使用 defer
      • 如果脚本是独立的,且不需要依赖HTML解析结果,使用 async
      • 如果脚本必须同步加载并立即执行(如某些关键逻辑),则不加 async 或 defer

      通过合理使用 asyncdefer,可以显著提升网页的加载速度和用户体验。

      10. 重绘和重排(回流)的区别

      重排(Reflow)

      重排是指当浏览器为了重新渲染部分或全部文档,需要重新计算元素的几何属性(如宽度、高度、位置等)的过程。任何影响到元素布局的操作都会导致重排。例如:

      • 改变窗口大小
      • 添加或删除可见的DOM元素
      • 改变内容,比如文本改变或者图片尺寸变化
      • 浏览器窗口的滚动

      重排是一个昂贵的过程,因为它会触发页面中其他元素的布局更新,有时甚至是整个页面的重新布局。

      重绘(Repaint)

      重绘发生在不需要重新计算布局但需要重新绘制元素的情况下。这通常是因为某些只影响元素外观而非其大小或位置的属性发生了变化,比如:

      • 改变元素的颜色
      • 改变背景图像
      • 可见性(visibility)的变化

      相比于重排,重绘的成本较低,因为它不涉及重新计算布局,但它仍然消耗资源,尤其是在大规模发生时。

      总结

      • 重排(Reflow):涉及到元素尺寸或位置的改变,需要重新计算布局,成本较高。
      • 重绘(Repaint):只涉及元素外观的改变,不需要重新计算布局,成本相对较低。

      优化网站性能的一个关键点就是尽量减少重排和重绘的次数。通过批量修改DOM、使用CSS3硬件加速以及避免频繁的布局操作,可以有效提升网页的响应速度和用户体验。

      11. Dom事件流的顺序?什么是事件委托?

      当页面上的一个元素被点击时,先从document向下一层层捕获到该元素。然后再向上冒泡,一层层触发。

      事件委托是将事件写在父级元素上,e.target是事件捕获时那个最小的元素,即选中的元素。所以可以根据e.target操作选中的元素。这样不需要给每个子元素绑定事件,代码更加简约。

      DOM(文档对象模型)事件流描述了事件在页面中触发和传播的顺序,它包括三个阶段:捕获阶段、目标阶段和冒泡阶段。 

      1. 捕获阶段(Capture Phase)

      • 事件从文档的根节点(document)开始,依次向下查找,直到找到事件目标元素的父元素。在这个过程中,事件会依次经过各级祖先元素。
      • 例如,当你点击一个页面中的按钮时,事件会从 document 开始,经过 htmlbody 等元素,逐渐向下查找,直到按钮的父元素。

      2. 目标阶段(Target Phase)

      • 当事件到达目标元素时,就进入了目标阶段。目标元素就是实际触发事件的元素,比如上面提到的按钮。
      • 在这个阶段,事件会直接作用于目标元素。

      3. 冒泡阶段(Bubbling Phase)

      • 事件从目标元素开始,依次向上传播,经过各级祖先元素,直到到达文档的根节点(document)。
      • 继续以点击按钮为例,事件在目标阶段作用于按钮后,会依次经过按钮的父元素、父元素的父元素,一直传播到 document

      在实际的事件绑定中,可以通过 addEventListener 方法的第三个参数来指定事件处理函数是在捕获阶段还是冒泡阶段执行。如果第三个参数为 true,则事件处理函数在捕获阶段执行;如果为 false 或者省略该参数,则事件处理函数在冒泡阶段执行。

      事件委托

      事件委托(Event Delegation)是一种利用事件冒泡原理的技术,它允许将事件处理程序绑定到一个父元素上,而不是直接绑定到每个子元素上。当子元素上的事件触发时,事件会冒泡到父元素,然后由父元素上的事件处理程序来处理。

      优点

      • 减少内存占用:如果有大量的子元素需要绑定相同的事件处理程序,直接绑定到每个子元素上会占用大量的内存。使用事件委托只需要在父元素上绑定一个事件处理程序,从而减少内存开销。
      • 动态添加子元素时无需重新绑定事件:当动态添加新的子元素时,由于事件处理程序是绑定在父元素上的,新的子元素会自动继承该事件处理程序,无需重新为每个新元素绑定事件。

      12、防抖/节流的区别? 

      区别:防抖只会在最后一次事件后执行触发函数,节流不管事件多么的频繁,都会保证在规定时间段内触发事件函数。

      • 防抖:

      原理是维护一个定时器,将很多个相同的操作合并成一个。规定在delay后触发函数,如果在此之前触发函数,则取消之前的计时重新计时,只有最后一次操作能被触发。例如:实时搜索的input,一直输入就不发送。

      let input = document.querySelector("input");
      let time = null;//time用来控制事件的触发input.addEventListener('input',function(){//防抖语句,把以前的定时删除,只执行最后一次if(time !== null){clearTimeout(time);}time = setTimeout(() => {console.log(this.value);//业务实现语句,这里的this指向的是input},500)})

      封装成通用函数

      • 防抖逻辑可以封装成一个通用的工具函数,方便复用。
      function debounce(fn, delay) {let timer = null;return function(...args) {if (timer !== null) {clearTimeout(timer);}timer = setTimeout(() => {fn.apply(this, args);}, delay);};
      }input.addEventListener('input', debounce(function() {console.log(this.value);
      }, 500));
      • 节流:

      原理是判断是否达到一定的时间来触发事件。某个时间段内只能触发一次函数。例如:在指定的时间内多次触发无效

          //节流function throttle(fn, time) {//连续触发事件  规定的时间let flag = false;return function () {//使用标识判断是否在规定的时间内重复触发了函数,没有就触发,有就不触发if (!flag) {//不为假时 执行以下fn();//触发事件flag = true;//为真setTimeout(() => {//超时调用(在规定的时间内只执行一次)flag = false;}, time);}}}mybtn.onclick = throttle(btn, 3000);//单击事件   节流(btn,3s时间)

      13、margin高度塌陷

      在 CSS 中,margin 高度塌陷是指在一些特定情况下,元素的margin属性没有按照预期产生垂直方向的间距,导致元素之间的距离出现异常。以下是对其产生原因及解决方案的介绍。

      产生原因

      • 父子元素 margin 重叠:当父元素没有边框、内边距或其他能阻止 margin 传递的属性时,子元素的 margin-top 或 margin-bottom 会与父元素的相应 margin 合并,导致父元素的高度塌陷。例如,一个父元素包含一个子元素,子元素设置了margin-top: 20px,如果父元素没有设置border-toppadding-top等属性,那么子元素的margin-top会作用在父元素上,使父元素顶部出现 20px 的空白,而不是子元素与父元素之间有 20px 的间距。
      • 相邻兄弟元素 margin 合并:垂直方向上相邻的两个兄弟元素,它们的margin值会取其中较大的值作为它们之间的间距,而不是两者相加。例如,一个元素有margin-bottom: 20px,它下面的兄弟元素有margin - top: 10px,那么这两个元素之间的实际间距是 20px,而不是 30px。

      解决方案

      • 为父元素设置边框或内边距:给父元素添加borderpadding,可以阻止子元素的margin与父元素的margin合并。例如,设置border-top: 1px solid transparentpadding - top: 1px
      • 使用 overflow:hidden:给父元素设置overflow: hidden,可以创建一个新的块级格式化上下文,从而防止margin塌陷。但要注意,这可能会导致子元素中超出父元素范围的内容被隐藏。
      • 使用 flex 或 grid 布局:在父元素上应用display: flexdisplay: grid,可以改变元素的布局方式,避免margin塌陷问题。因为 flex 和 grid 布局有自己的一套布局规则,会影响margin的行为。
      • 分开设置 margin:对于相邻兄弟元素,尽量避免同时设置上下方向的margin。可以根据实际情况,只在其中一个元素上设置margin,以达到期望的间距效果。

      相关文章:

      面经-浏览器/网络/HTML/CSS

      目录 1. http缓存机制 缓存机制 流程概述 2. 常见的http状态码 1xx&#xff08;信息性状态码&#xff09; 3xx&#xff08;重定向状态码&#xff09; 4xx&#xff08;客户端错误状态码&#xff09; 5xx&#xff08;服务器错误状态码&#xff09; 3. http和https的区别…...

      轻松实现文件批量命名的实用工具

      软件介绍 今天要给大家介绍一款超实用的批量文件重命名小工具&#xff0c;它完全可以称得上是同类产品的绝佳替代品。 软件特性 这小工具叫 MiniRenamer&#xff0c;身材十分苗条&#xff0c;大小还不到 300KB 呢。解压完后&#xff0c;不用任何复杂操作&#xff0c;直接就能…...

      基于Redis实现高并发抢券系统的数据同步方案详解

      在高并发抢券系统中&#xff0c;我们通常会将用户的抢券结果优先写入 Redis&#xff0c;以保证系统响应速度和并发处理能力。但数据的最终一致性要求我们必须将这些结果最终同步到 MySQL 的持久化库中。本文将详细介绍一种基于线程池 Redis Hash 扫描的异步数据同步方案&#…...

      【Pandas】pandas DataFrame sub

      Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象&#xff08;如 DataFrame、Series 或标量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...

      4.21总结

      正式开始设计和实现前端页面 1.目标效果 2.今日实现内容 在前端编写了相应的store,api,utils文件&#xff0c;以便后续的组件复用 2.编写了相应的css文件...

      VLA论文精读(十四)PointVLA: Injecting the 3D World into Vision-Language-Action Models

      这篇论文瞄准的是2025年在arxiv上发布的一篇VLA领域论文。这篇文章最大的创新点在于将3D点云信息作为补充条件送入模型&#xff0c;而不是DP3一样只用纯3D数据从头训练模型&#xff0c;按照作者的说法这样可以在保留模型原有2D解释能力的同时添加了其3D能力&#xff0c;并且可以…...

      BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection

      背景 对于现有的BEVDet方法,它对于速度的预测误差要高于基于点云的方法,对于像速度这种与时间有关的属性,仅靠单帧数据很难预测好。因此本文提出了BEVDet4D,旨在获取时间维度上的丰富信息。它是在BEVDet的基础上进行拓展,保留了之前帧的BEV特征,并将其进行空间对齐后与当…...

      Java学习路线--自用--带链接

      1.Java基础 黑马&#xff1a;黑马程序员Java零基础视频教程_下部 2.MySQL 尚硅谷&#xff1a;MySQL数据库入门到大牛&#xff0c;mysql安装到优化&#xff0c;百科全书级&#xff0c;全网天花板 3.Redis 黑马&#xff1a;黑马程序员Redis入门到实战教程&#xff0c;深度透…...

      【锂电池容量特征提取】NASA数据集锂电池容量特征提取(Matlab完整源码)

      目录 效果一览程序获取程序内容代码分享研究内容基于NASA数据集的锂电池容量特征提取方法研究摘要关键词 1. 引言1.1 研究背景1.2 研究意义1.3 研究目的 2. 文献综述2.1 锂电池容量特征提取相关理论基础2.2 国内外研究现状 3. NASA数据集介绍3.1 数据集来源与构成3.2 数据采集方…...

      vue2使用markdown-it解析markdown文本

      1.安装markdown-it npm instal markdown-it 2. 页面中引用 import MarkdownIt from markdown-it ...const mdRender MarkdownIt(); ...data {return {md: new MarkdownIt(),} } 3. html <p v-html"md.render(conetnt)" ></p>...

      云服务器怎么选择防御最合适

      用户问的是怎么选择云服务器的防御最合适。这个问题看起来是关于云安全方面的&#xff0c;尤其是如何配置防御措施来保护云服务器免受攻击。首先&#xff0c;我需要理解用户的需求可能是什么。他们可能是一个企业或者个人用户&#xff0c;正在考虑上云&#xff0c;但担心安全问…...

      ubuntu20.04安装安装x11vnc服务基于gdm3或lightdm这两种主流的显示管理器。

      前言&#xff1a;在服务端安装vnc服务&#xff0c;可以方便的远程操作服务器&#xff0c;而不用非要插上显示器才行。所以在服务器上安装vnc是很重要的。在ubuntu20中&#xff0c;默认的显示管理器已经变为gdm3&#xff0c;它可以带来与 GNOME 无缝衔接的体验&#xff0c;强调功…...

      汽车动力转向器落锤冲击试验台

      汽车动力转向器落锤冲击试验台依据标准&#xff1a;QC/T29096-1992《汽车转向器总成台架试验方法》&#xff1b;以工控机为控制核心&#xff0c;采用步进电机举升机构&#xff0c;高精度的光电编码器为位置反馈元件。能够自动完成落锤的起吊、精确的定位、释放、冲击过程的测量…...

      Mybatis延迟加载、懒加载、二级缓存

      DAY22.2 Java核心基础 Mybatis 延迟加载、懒加载 提高程序运行效率的技术 延迟加载&#xff0c;也叫惰性加载或者懒加载 延迟加载如何提升程序的运行效率&#xff1f; 持久层操作有一个原则&#xff1a;Java 程序和数据库交互频率越低越好 Java 程序每次和数据库进行交互…...

      Linux网络编程 多进程UDP聊天室:共享内存与多进程间通信实战解析

      知识点1【项目功能介绍】 今天我们写一个 UDP &#xff0c;多进程与不同进程间通信的综合练习 我这里说一下 这个项目的功能&#xff1a; 1、群发&#xff08;有设备个数的限制&#xff09;&#xff1a;发送数据&#xff0c;其他所有客户端都要受到数据 2、其他客户端 都 可…...

      网络结构及安全科普

      文章目录 终端联网网络硬件基础网络协议示例&#xff1a;用户访问网页 OSI七层模型网络攻击&#xff08;Hack&#xff09;网络攻击的主要类别&#xff08;一&#xff09;按攻击目标分类&#xff08;二&#xff09;按攻击技术分类 网络安全防御 典型攻击案例相关名词介绍网络连接…...

      CAD文件如何导入BigemapPro

      问题描述 在使用 BigemapPro 加载 CAD 文件的过程中&#xff0c;会出现两种不同的情况&#xff1a;部分文件能够被软件自动识别投影并顺利加载&#xff1b;而另一部分文件则无法自动识别投影&#xff0c;需要手动干预才能准确加载到影像上。下面为您详细介绍这两种情况的具体操…...

      Spring-AOP分析

      Spring分析-AOP 1.案例引入 在上一篇文章中&#xff0c;【Spring–IOC】【https://www.cnblogs.com/jackjavacpp/p/18829545】&#xff0c;我们了解到了IOC容器的创建过程&#xff0c;在文末也提到了AOP相关&#xff0c;但是没有作细致分析&#xff0c;这篇文章就结合示例&am…...

      opencv 对图片的操作

      对图片的操作 1.图片镜像旋转&#xff08;cv2.flip()&#xff09;2 图像的矫正 1.图片镜像旋转&#xff08;cv2.flip()&#xff09; 图像的旋转是围绕一个特定点进行的&#xff0c;而图像的镜像旋转则是围绕坐标轴进行的。图像的镜像旋转分为水平翻转、垂直翻转、水平垂直翻转…...

      Python第一周作业

      Python第一周作业 文章目录 Python第一周作业 如何在命令行中创建一个名为venv的虚拟环境&#xff1f;请写出具体命令编写一段代码&#xff0c;判断变量x是否为偶数&#xff0c;如果是则返回"Even"&#xff0c;否则返回"Odd"编写代码&#xff0c;使用分支结…...

      jinjia2将后端传至前端的字典变量转换为JS变量

      后端 country_dict {AE: .amazon.ae, AU: .amazon.com.au} 前端 const country_list JSON.parse({{ country_list | tojson | safe }});...

      [渗透测试]渗透测试靶场docker搭建 — —全集

      [渗透测试]渗透测试靶场docker搭建 — —全集 对于初学者来说&#xff0c;仅仅了解漏洞原理是不够的&#xff0c;还需要进行实操。对于公网上的服务我们肯定不能轻易验证某些漏洞&#xff0c;否则可能触犯法律。这是就需要用到靶场。 本文主要给大家介绍几种常见漏洞对应的靶场…...

      二分查找、分块查找、冒泡排序、选择排序、插入排序、快速排序

      二分查找/折半查找 前提条件&#xff1a;数组中的数据必须是有序的 核心逻辑&#xff1a;每次排除一半的查找范围 优点&#xff1a;提高查找效率 代码 public static int binarySearch(int[] arr, int num) {int start 0;int end arr.length - 1;while (start < end) {…...

      【AI】SpringAI 第三弹:接入通用大模型平台

      1.添加依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId> </dependency> 2.设置 yml 配置文件 在 application.yml 中添加 DeepSeek 的配置信息&#xff1a; spr…...

      C++常用函数合集

      万能头文件&#xff1a;#include<bits/stdc.h> 1. 输入输出流&#xff08;I/O&#xff09;函数 1.1cin 用于从标准输入流读取数据。 1.2cout 用于向标准输出流写入数据。 // 输入输出流&#xff08;I/O&#xff09;函数 #include <iostream> using namespace…...

      22. git show

      基本概述 git show 的作用是&#xff1a;显示各种 Git 对象&#xff08;如提交、标签、树对象、文件对象等&#xff09;的详细信息 基本用法 1.基本语法 git show [选项] [对象]2.查看提交的详细信息 git show <commit-hash> # 示例 git show a1b2c3d # 显示某…...

      使用blob文件流

      1.后端 GetMapping(value "/static/**")public void view(HttpServletRequest request, HttpServletResponse response) {// ISO-8859-1 > UTF-8 进行编码转换String imgPath extractPathFromPattern(request);if(oConvertUtils.isEmpty(imgPath) || imgPath&q…...

      操作指南:在vue-fastapi-admin上增加新的功能模块

      近期在github上看到一个很不错的web框架&#xff0c;https://github.com/mizhexiaoxiao/vue-fastapi-admin。该项目基于 FastAPI Vue3 Naive UI 的现代化前后端分离开发平台&#xff0c;融合了 RBAC 权限管理、动态路由和 JWT 鉴权&#xff0c;可以助力中小型应用快速搭建&am…...

      文字、语音、图片、视频四个模态两两之间(共16种转换方向)的生成技术及理论基础的详细说明及表格总结

      以下是文字、语音、图片、视频四个模态两两之间&#xff08;共16种转换方向&#xff09;的生成技术及理论基础的详细说明及表格总结&#xff1a; 1. 技术与理论基础详解 (1) 文字与其他模态的转换 文字→文字 技术&#xff1a;GPT、BERT、LLaMA等语言模型。理论&#xff1a;T…...

      FramePack:让视频生成更高效、更实用

      想要掌握如何将大模型的力量发挥到极致吗&#xff1f;叶梓老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具&#xff08;限时免费&#xff09;。 1小时实战课程&#xff0c;您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型&#xff0c;以发挥其…...

      【大语言模型DeepSeek+ChatGPT+python】最新AI-Python机器学习与深度学习技术在植被参数反演中的核心技术应用

      在全球气候变化与生态环境监测的重要需求下&#xff0c;植被参数遥感反演作为定量评估植被生理状态、结构特征及生态功能的核心技术&#xff0c;正面临数据复杂度提升、模型精度要求高、多源异构数据融合等挑战。人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;…...

      RSS 2025|苏黎世提出「LLM-MPC混合架构」增强自动驾驶,推理速度提升10.5倍!

      论文题目&#xff1a;Enhancing Autonomous Driving Systems with On-Board Deployed Large Language Models 论文作者&#xff1a;Nicolas Baumann&#xff0c;Cheng Hu&#xff0c;Paviththiren Sivasothilingam&#xff0c;Haotong Qin&#xff0c;Lei Xie&#xff0c;Miche…...

      Oracle expdp的 EXCLUDE 参数详解

      Oracle expdp的 EXCLUDE 参数详解 EXCLUDE 是 Oracle Data Pump Export (expdp) 工具中的一个关键参数&#xff0c;用于指定在导出过程中要排除的对象或对象类型。 一、基本语法 expdp username/password DUMPFILEexport.dmp DIRECTORYdpump_dir EXCLUDEobject_type[:name_c…...

      Git创建空分支并推送到远程仓库

      new-empty-branch是新分支的名称 完全空提交&#xff08;Git 2.23&#xff09;【推荐】 git switch --orphan new-empty-branch git config user.email "youexample.com" git config user.name "Your Name" git commit --allow-empty -m "初始空提交…...

      TDS电导率传感器详解(STM32)

      目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main文件 tds.h文件 tds.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 TDS电导率传感器介绍 &#xff1a; TDS&#xff08;Total Dissolved Solid&#xff09;&#xff0c;中文名总溶解固…...

      初识Redis · C++客户端list和hash

      目录 前言&#xff1a; list lpush lrange rpush rpush llen rpop lpop blpop hash hset hget hmget hkeys hvals hexists hdel 前言&#xff1a; 在上一篇文章我们介绍了string的基本使用&#xff0c;并且发现几乎唯一的难点就是使用迭代器方面&#xff0c;并且我们…...

      SpringBoot和微服务学习记录Day3

      Hystrix 熔断器 在分布式架构中&#xff0c;很多服务因为网络或自身原因不可避免发生故障&#xff0c;如果某个服务出现问题往往会导致一系列的服务都发生故障&#xff0c;导致整个微服务架构瘫痪&#xff0c;称为服务雪崩&#xff0c;Hystrix就是为了解决这个问题的 服务熔…...

      12个领域近120个典型案例:2024年“数据要素X”大赛典型案例集(附下载)

      2024年10月25日&#xff0c;2024年“数据要素”大赛全国总决赛颁奖仪式在北京举行。这次大赛是首届“数据要素x”大赛&#xff0c;全国共有近2万支队伍踊跃参赛&#xff0c;10万参赛者用数据编织梦想&#xff0c;最终角逐出12个赛道120个典型案例。 根据国家数据局等相关公开资…...

      如何在腾讯云Ubuntu服务器上部署Node.js项目

      最近弄了一个Node.js项目&#xff0c;包含前端用户前台&#xff0c;管理后台和服务端API服务三个项目&#xff0c;本地搭建好了&#xff0c;于是在腾讯云上新建了个Ubuntu 24.04服务器&#xff0c;想要将本地的Node.js项目部署上去&#xff0c;包括环境配置和数据库搭建。 本文…...

      【NLP 67、知识图谱】

      你像即将到来的夏季一样鲜明&#xff0c; 以至于我这样寡淡的生命&#xff0c; 竟山崩般为你着迷 —— 25.4.18 一、信息 VS 知识 二、知识图谱 1.起源 于2012年5月17日被Google正式提出&#xff0c;初衷是为了提高搜索引擎的能力&#xff0c;增强用户的搜索质量以及搜索体验 …...

      Java写数据结构:栈

      1.概念&#xff1a; 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xff1a;栈的插…...

      跨境电商行业新周期下的渠道突围策略

      2024年初&#xff0c;跨境电商圈动荡不断&#xff0c;多家卖家平台股价大跌&#xff0c;引发行业舆论热议。而作为东南亚主战场的Shopee&#xff0c;仅仅几个月时间跌幅已达23%。在这一波冲击中&#xff0c;大多数卖家都在"止血"&#xff0c;但有棵树却逆势而上&…...

      Docker如何更换镜像源提高拉取速度

      在国内&#xff0c;由于网络政策和限制&#xff0c;直接访问DockerHub速度很慢&#xff0c;尤其是在拉取大型镜像时。为了解决这个问题&#xff0c;常用的方法就是更换镜像源。本文将详细介绍如何更换Docker镜像源&#xff0c;并提供当前可用的镜像源。 换源方法 方法1&#x…...

      平方根倒数快速算法

      一、平方根倒数算法的由来 在制作3D游戏的时候&#xff0c;曲面是由许多平面构成的&#xff0c;要求出光线在物体表面反射后的效果&#xff0c;就需要知道平面的单位法向量&#xff0c;法向量的长度的平方R很容易求出&#xff0c;单位法向量 坐标值 / R的平方根。电脑每次都要…...

      详解.vscode 下的json .vscode文件夹下各个文件的作用

      1.背景 看一些开源项目的时候,总是看到vscode先有不同的json文件,再次做一下总结方便之后查看 settings.json肯定不用多说了 vscode 编辑器分为 全局用户配置 和 当前工作区配置 那么.vscode文件夹下的settings.json文件夹肯定就是当前工作区配置了 在此文件对单个的项目进行配…...

      【消息队列RocketMQ】二、RocketMQ 消息发送与消费:原理与实践

      一、RocketMQ 消息发送原理与模式​ 1.1 消息发送原理​ RocketMQ 消息发送的核心流程围绕 Producer、NameServer 和 Broker 展开。Producer 启动时&#xff0c;会向 NameServer 请求获取 Topic 的路由信息&#xff0c;这些信息包括 Topic 对应的 Broker 列表以及 Broker 上的…...

      WPF的发展历程

      文章目录 WPF的发展历程引言起源与背景&#xff08;2001-2006&#xff09;从Avalon到WPF设计目标与创新理念 WPF核心技术特点与架构基础架构与渲染模型关键技术特点MVVM架构模式 WPF在现代Windows开发中的地位与前景当前市场定位与其他微软UI技术的关系未来发展前景 社区贡献与…...

      新书速览|OpenCV计算机视觉开发实践:基于Qt C++

      《OpenCV计算机视觉开发实践:基于Qt C》 本书内容 OpenCV是计算机视觉领域的开发者必须掌握的技术。《OpenCV计算机视觉开发实践:基于Qt C》基于 OpenCV 4.10与Qt C进行编写&#xff0c;全面系统地介绍OpenCV的使用及实战案例&#xff0c;并配套提供全书示例源码、PPT课件与作…...

      本地搭建一个简易版本的 Web3 服务

      一、环境搭建与工具准备 &#xff08;一&#xff09;安装 Node.js 和 npm Node.js 是一个基于 JavaScript 的运行时环境&#xff0c;npm 是其默认的包管理器。在 Web3 开发中&#xff0c;Node.js 和 npm 是必不可少的工具。 访问 Node.js 官网 并下载最新的 LTS 版本。 安装…...

      电脑安装CentOS系统

      前言 电脑是Windows10系统&#xff0c;安装CentOS之前要将硬盘格式化&#xff0c;这个操作会将Windows10系统以及电脑上所有资料抹除&#xff0c;操作前务必谨慎复查是否有重要资料需要备份。 准备工作 准备两个U盘&#xff0c;一台电脑。提前把镜像下载好。镜像在百度网盘里…...