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

前端八股文第二篇

11.事件循环

事件循环(Event Loop)是 JavaScript 运行时中的一种机制,用于处理异步操作和事件驱动的编程。在浏览器环境中,事件循环是指浏览器通过事件队列(Event Queue)来管理和调度异步任务的执行顺序。

事件循环的基本原理如下:

  1. 执行同步任务:首先执行当前执行栈(Execution Stack)中的所有同步任务,直到执行栈为空。

  2. 处理异步任务:检查异步任务队列,如果有异步任务需要执行,则将其移出队列,放入执行栈中执行。异步任务可以包括定时器回调.事件回调.Promise 的回调等。

  3. 等待新的任务:一旦当前执行栈中的任务执行完毕,事件循环会检查是否有新的任务需要执行。如果有,就重复执行上述步骤;如果没有,则继续等待新的任务。

事件循环保证了 JavaScript 运行时的单线程特性,同时也确保了异步任务的执行顺序和正确性。JavaScript 运行时通过事件队列来存储和调度异步任务,通过事件循环来不断地检查队列中是否有待执行的任务,并按照顺序执行它们,从而实现了异步编程。

12.箭头函数

箭头函数(Arrow Functions)是 ES6 新增的一种函数声明方式,它提供了一种更简洁的语法形式来定义函数。

基本语法形式如下:

// 无参数箭头函数
const func = () => {// 函数体
};// 有参数箭头函数
const funcWithParam = (param1, param2) => {// 函数体
};// 简写形式:如果只有一个参数,可以省略参数括号
const funcWithSingleParam = param => {// 函数体
};// 如果函数体只有一条语句,可以省略花括号和 return 关键字
const singleStatementFunc = () => console.log("Hello");// 箭头函数可以与解构赋值结合使用
const sum = (a, b) => a + b;

箭头函数具有以下特点:

  1. 简洁的语法:相比传统的函数声明方式,箭头函数的语法更为简洁明了,尤其适合用于回调函数或者只包含单一表达式的函数。

  2. 绑定 this:箭头函数没有自己的 this,它会捕获所在上下文的 this 值。这意味着箭头函数内部的 this 始终指向词法作用域中的 this,而不是在运行时动态绑定。

  3. 不能作为构造函数:箭头函数不能使用 new 关键字来实例化对象,因为它没有自己的 this 绑定,也没有 prototype

  4. 不能使用 arguments 对象:箭头函数没有 arguments 对象,但可以使用剩余参数(rest parameters)来替代。

总的来说,箭头函数简化了函数的声明方式,并且通过固定的 this 绑定规则,避免了 this 指向的不确定性,使得代码更加可读和可维护。

13.react中组件传值

在 React 中,组件之间传值可以通过不同的方式实现:

  1. 父传子
    • 父组件通过在子组件上添加属性(props)来传递数据。
    • 子组件通过 this.props 访问传递的值。

示例代码:

// ParentComponent.js
import React from 'react';
import ChildComponent from './ChildComponent';class ParentComponent extends React.Component {render() {return (<div><ChildComponent message="Hello from ParentComponent" /></div>);}
}// ChildComponent.js
import React from 'react';class ChildComponent extends React.Component {render() {return (<div><p>{this.props.message}</p></div>);}
}
  1. 子传父
    • 子组件通过回调函数的方式,将数据传递给父组件。
    • 父组件定义一个回调函数,并将其作为 props 传递给子组件。
    • 子组件在需要传递数据时调用该回调函数。

示例代码:

// ParentComponent.js
import React from 'react';class ParentComponent extends React.Component {constructor(props) {super(props);this.state = {message: ''};this.handleData = this.handleData.bind(this);}handleData(data) {this.setState({ message: data });}render() {return (<div><ChildComponent onData={this.handleData} /><p>Message from child: {this.state.message}</p></div>);}
}// ChildComponent.js
import React from 'react';class ChildComponent extends React.Component {constructor(props) {super(props);this.handleClick = this.handleClick.bind(this);}handleClick() {this.props.onData('Hello from ChildComponent');}render() {return (<div><button onClick={this.handleClick}>Send Message to Parent</button></div>);}
}
  1. 兄弟组件互传
    • 如果兄弟组件之间需要相互传递数据,通常可以通过它们共同的父组件作为中介来实现。
    • 将需要共享的数据或者状态提升到它们的共同父组件中,并通过 props 将数据传递给需要的兄弟组件。

示例代码:

// ParentComponent.js
import React from 'react';
import FirstSibling from './FirstSibling';
import SecondSibling from './SecondSibling';class ParentComponent extends React.Component {constructor(props) {super(props);this.state = {sharedData: ''};this.handleData = this.handleData.bind(this);}handleData(data) {this.setState({ sharedData: data });}render() {return (<div><FirstSibling onData={this.handleData} /><SecondSibling sharedData={this.state.sharedData} /></div>);}
}// FirstSibling.js
import React from 'react';class FirstSibling extends React.Component {constructor(props) {super(props);this.handleClick = this.handleClick.bind(this);}handleClick() {this.props.onData('Hello from FirstSibling');}render() {return (<div><button onClick={this.handleClick}>Send Message to SecondSibling</button></div>);}
}// SecondSibling.js
import React from 'react';class SecondSibling extends React.Component {render() {return (<div><p>Message from FirstSibling: {this.props.sharedData}</p></div>);}
}
  1. Context 机制跨层级组件通信
    • Context 是 React 提供的一种跨层级传递数据的方式,可以避免 props 层层传递的繁琐。
    • 使用 React.createContext() 创建一个 Context 对象,并通过 ProviderConsumer 分别提供数据和消费数据的能力。

示例代码:

// Context.js
import React from 'react';const MyContext = React.createContext();export const MyProvider = MyContext.Provider;
export const MyConsumer = MyContext.Consumer;// ParentComponent.js
import React from 'react';
import { MyProvider } from './Context';
import ChildComponent from './ChildComponent';class ParentComponent extends React.Component {render() {return (<MyProvider value="Hello from ParentComponent"><ChildComponent /></MyProvider>);}
}// ChildComponent.js
import React from 'react';
import { MyConsumer } from './Context';class ChildComponent extends React.Component {render() {return (<MyConsumer>{value => <p>{value}</p>}</MyConsumer>);}
}

这些是 React 中常见的组件传值方式,根据具体的应用场景和需求,选择合适的方式来实现组件之间的通信。

14.虚拟dom的理解

虚拟 DOM(Virtual DOM)是 React 中的一种优化技术,用于提高页面渲染性能和用户体验。它是一个内存中的虚拟树形结构,对应着真实 DOM 中的节点,但不直接操作浏览器中的 DOM。

虚拟 DOM 的基本原理是:

  1. 组件状态变化触发重新渲染:当组件的状态(state)发生变化时,React 会调用组件的 render() 方法重新渲染组件。

  2. 生成虚拟 DOM:在重新渲染过程中,React 会生成新的虚拟 DOM 树,表示更新后的页面结构。

  3. 比较虚拟 DOM:React 会将更新前后的两棵虚拟 DOM 树进行比较,找出发生变化的部分。

  4. 计算更新:根据比较结果,React 会计算出使真实 DOM 发生变化的最小操作集合。

  5. 更新真实 DOM:React 会将计算出的更新操作应用到真实 DOM 上,使页面得到更新。

虚拟 DOM 的优势包括:

  • 提高性能:通过在内存中操作虚拟 DOM,避免直接操作真实 DOM 导致的性能损耗。React 会将多次 DOM 修改操作合并成一次,减少了浏览器的重绘和重排次数,从而提高了页面渲染性能。

  • 简化复杂性:虚拟 DOM 的存在使得开发者可以专注于组件的状态和结构,而不必过多关注底层的 DOM 操作细节,简化了开发复杂界面的难度。

  • 跨平台兼容:虚拟 DOM 可以提供与平台无关的抽象,使得 React 可以同时运行在浏览器.移动端和服务器端等不同的环境中,实现了跨平台兼容。

总的来说,虚拟 DOM 是 React 的核心技术之一,它通过在内存中操作虚拟 DOM 树,有效地提高了页面渲染性能和开发效率。

15.单点登录

单点登录(Single Sign-On,简称 SSO)是一种身份认证和授权机制,允许用户通过一次登录,即可访问多个相关系统或服务,而无需在每个系统中重新进行身份验证。

基本原理如下:

  1. 用户认证:用户在访问系统 A 时,需要进行身份认证。如果用户尚未登录,则系统 A 将重定向用户到身份提供者(如认证服务器或身份提供商)进行登录认证。

  2. 颁发令牌:身份提供者验证用户的身份后,会颁发一个令牌(Token),其中包含了用户的身份信息和授权信息。这个令牌可以是基于标准的令牌协议,如 JSON Web Token(JWT)。

  3. 访问其他系统:用户在系统 A 登录成功后,系统 A 会保存用户的登录状态,并向用户返回一个会话凭证(Session Cookie)等。用户在访问其他相关系统 B.C 等时,这些系统会检查用户的会话状态。如果用户已经登录,系统 B.C 等会通过令牌认证机制向身份提供者验证令牌的有效性,从而确定用户的身份和授权信息,而无需用户再次登录。

优点:

  • 简化用户体验:用户只需进行一次登录,即可访问多个相关系统,大大简化了用户的操作流程,提升了用户体验。
  • 提高安全性:通过中心化的身份认证和授权机制,可以减少密码的传输和存储,提高了系统的安全性。
  • 降低开发和维护成本:单点登录可以降低系统间的集成成本,减少了重复开发和维护的工作量。

常见的单点登录解决方案包括 OAuth.OpenID Connect(OIDC).SAML 等,各自有不同的特点和适用场景。企业级的单点登录解决方案还包括常见的身份提供商,如 Microsoft Azure AD.Okta.Auth0 等。

16.vuex

Vuex 是 Vue.js 的状态管理模式,用于管理 Vue.js 应用中的状态(state)。它提供了一种集中式的存储管理方案,用于统一管理应用中的数据,并实现数据在组件之间的共享和响应式更新。

Vuex 主要包含以下几个核心概念:

  1. State(状态):即应用中的数据状态,保存在 Vuex 的状态树中。可以通过 this.$store.state 来访问。

  2. Getter(获取器):用于从状态树中派生出一些新的状态,类似于计算属性。可以通过 this.$store.getters 来访问。

  3. Mutation(变更):用于修改状态树中的数据,必须是同步函数。通过提交 mutation 来触发状态的变更,可以通过 this.$store.commit() 方法来提交。

  4. Action(动作):用于提交异步操作,可以包含任意异步操作。通常用于提交 mutation,而不直接变更状态。可以通过 this.$store.dispatch() 方法来分发。

  5. Module(模块):将 Vuex 的状态树分割成模块,每个模块拥有自己的 state.getters.mutations 和 actions。

Vuex 的工作流程如下:

  1. 组件通过触发 action 来提交异步操作,action 中可以进行一些异步操作后再提交 mutation。

  2. Mutation 中定义的方法用于修改状态,是同步函数。

  3. 通过 Getter 可以从状态树中派生出一些新的状态,Getter 类似于计算属性。

  4. 组件通过 this.$store.state 来访问状态,通过 this.$store.commit() 来提交 mutation,通过 this.$store.dispatch() 来分发 action。

总的来说,Vuex 提供了一种集中式的状态管理机制,用于解决 Vue.js 应用中的组件通信和状态共享问题,是构建大型单页应用的理想选择。

17.vue的声明周期有哪些,data里面的数据初始化是在哪个阶段

Vue.js 的生命周期包括了创建、挂载、更新和销毁等多个阶段,具体的生命周期钩子函数如下:

  1. 创建阶段(Creation)

    • beforeCreate:在实例初始化之后,数据观测 (data observation) 和 event/watcher 事件配置之前被调用。
    • created:在实例创建完成后被立即调用。在这一步,实例已完成了数据观测 (data observation),属性和方法的运算,watch/event 事件回调。但是挂载阶段还未开始,$el 属性目前尚不可用。
  2. 挂载阶段(Mounting)

    • beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
    • mounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子函数。在该钩子函数中,组件已经被创建,DOM 树中已经有了对应组件的元素,因此可以进行 DOM 操作。
  3. 更新阶段(Updating)

    • beforeUpdate:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在该钩子函数中进一步地更改状态,不会触发附加的重渲染过程。
    • updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。调用时,组件 DOM 已经更新,所以可以执行依赖于 DOM 的操作。
  4. 销毁阶段(Destroying)

    • beforeDestroy:在实例销毁之前调用。在这一步,实例仍然完全可用。
    • destroyed:在实例销毁之后调用。该钩子函数被调用时,所有的指令和子实例都已经被销毁,所有的事件监听器被移除。

关于 data 中的数据初始化是在哪个阶段,数据初始化是在 Vue 实例创建的生命周期阶段中,即在 beforeCreatecreated 阶段之间。此时的数据可以在组件的其他生命周期中访问和使用。

18.vue双向数据绑定的原理

Vue 的双向数据绑定原理主要基于以下两个核心概念:数据劫持和发布-订阅模式。

  1. 数据劫持

    • 当 Vue 实例被创建时,会对 data 中的数据进行劫持(或称为响应式化),即通过 Object.defineProperty() 方法将 data 中的每个属性转换为 getter 和 setter,这样当属性被访问或修改时,Vue 就能够监测到,并触发相应的更新操作。
  2. 发布-订阅模式

    • Vue 中采用了发布-订阅模式来实现数据的变化通知和更新。每个数据属性都维护了一个依赖收集器(Dep),在模板中使用到该属性的地方都会创建一个 Watcher 对象并添加到该属性的依赖收集器中。
    • 当属性发生变化时,其对应的 setter 方法会被调用,触发依赖收集器中所有 Watcher 对象的更新操作。这些 Watcher 对象负责将变化通知到对应的视图,并执行视图的更新操作,实现了数据和视图的双向绑定。

综上所述,Vue 的双向数据绑定原理是通过数据劫持和发布-订阅模式实现的。数据劫持确保了数据的变化能够被监测到,而发布-订阅模式则确保了数据变化时能够及时通知到相关的视图进行更新,从而实现了数据和视图之间的双向绑定。

19.闭包

闭包(Closure)是指函数和函数内部能够访问到函数外部作用域的变量的组合。在 JavaScript 中,函数可以创建闭包。闭包由两部分组成:函数本身和函数能够访问的外部作用域(词法环境)。

闭包的特点包括:

  1. 函数内部可以访问外部作用域的变量:闭包可以访问包含它的外部函数中声明的变量,即使在外部函数执行完毕之后仍然可以访问这些变量。

  2. 变量的值被保护:外部函数的变量在闭包内被引用时,其值会被保护起来,不会被垃圾回收机制回收,直到闭包不再被使用时才会被释放。

  3. 延长了变量的生命周期:由于闭包中包含对外部变量的引用,这些变量的生命周期会延长,直到闭包不再被使用。

闭包在 JavaScript 中的应用非常广泛,常见的应用场景包括:

  • 封装变量:可以使用闭包封装变量,避免全局变量的污染。
  • 实现私有变量和方法:闭包可以实现类似于私有变量和方法的效果,对外部代码隐藏内部实现细节。
  • 定时器和回调函数:在定时器和回调函数中经常会使用闭包来保持对外部变量的引用,以确保在函数执行时能够访问到正确的变量值。

总的来说,闭包是 JavaScript 中强大而灵活的特性,合理地运用闭包能够帮助我们编写更加优雅和健壮的代码。

20.https为什么比http更安全

HTTPS(HyperText Transfer Protocol Secure)是一种通过加密通道传输数据的安全 HTTP 协议,而 HTTP(HyperText Transfer Protocol)则是一种明文传输数据的协议。HTTPS 相对于 HTTP 更安全的主要原因包括以下几点:

  1. 数据加密传输

    • 在 HTTPS 中,传输的数据会经过 SSL/TLS 协议进行加密,可以有效防止中间人攻击和窃听,使得数据传输更加安全可靠。
  2. 身份验证

    • HTTPS 还可以通过证书来验证网站的身份,确保用户与服务器之间的通信是安全可信的,防止钓鱼网站等恶意攻击。
  3. 完整性保护

    • HTTPS 在传输过程中使用了数字证书对数据进行签名,可以验证数据的完整性,防止数据被篡改或修改。
  4. 信任机构认证

    • HTTPS 使用了公开密钥基础设施(PKI)来验证网站的身份,浏览器会对证书进行信任机构的验证,确保用户访问的网站是可信任的,防止了中间人攻击。
  5. 搜索引擎优化

    • 由于 HTTPS 可以提供更安全的用户体验,搜索引擎会更倾向于将使用 HTTPS 的网站排名更靠前,提高网站的可见性和流量。

综上所述,HTTPS 相比 HTTP 更安全的原因主要在于数据加密传输、身份验证、完整性保护、信任机构认证等方面,这些安全机制有效地保护了用户和网站之间的通信安全,提高了网络数据传输的安全性和可靠性。

在这里插入图片描述

相关文章:

前端八股文第二篇

11.事件循环 事件循环&#xff08;Event Loop&#xff09;是 JavaScript 运行时中的一种机制&#xff0c;用于处理异步操作和事件驱动的编程。在浏览器环境中&#xff0c;事件循环是指浏览器通过事件队列&#xff08;Event Queue&#xff09;来管理和调度异步任务的执行顺序。…...

springboot汽车保修服务管理系统-计算机毕业设计源码00052

摘 要 随着汽车数量的不断增加和汽车保修服务需求的日益增长&#xff0c;建立一套高效的汽车保修服务管理系统变得至关重要。基于Spring Boot框架的汽车保修服务管理系统旨在整合汽车保修流程&#xff0c;简化管理流程&#xff0c;提高服务质量和用户体验未来&#xff0c;我们将…...

分布式架构搭建博客网站

目录 运行环境基础配置需求准备工作配置静态ip修改主机名及host映射开启防火墙时间同步配置免密ssh登录 环境搭建Server-Web端安装LNMP环境软件Server-NFS-DNS端上传博客软件Server-NFS-DNS端设置NFS共享Server-Web设置挂载远程共享目录nginx设置在数据库中创建数据库和用户重启…...

python-opencv给图片或视频去水印

文章目录 引言inpaint函数的使用方法鼠标事件回调函数cv2.setMouseCallback介绍去水印步骤实现代码 引言 本文主要基于cv2.inpaint函数实现图片的水印去除。 inpaint函数基于图像修复算法&#xff0c;通过对缺陷区域周围像素的分析和插值&#xff0c;生成合适的像素值来填充缺…...

免费送源码:Java+ssm+Springboot Springboot手办定制销售系统 计算机毕业设计原创定制

Springboot手办定制销售系统 摘 要 随着人们生活水平的提高和互联网的发展&#xff0c;人们消费思想和消费方式的逐渐改变&#xff0c;使得消费者开始追求自身品味和个性。手办定制就是在这种条件下应运而生。手办定制是基于客户需求来定制产品&#xff0c;满足客户对其功能、结…...

卡夫卡的使用

关于消息队列的使用 一、消息队列概述 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveM…...

mac|maven项目在idea中连接redis

安装maven brew install maven idea-setting导入redis插件 idea新建maven项目 构建系统选择maven 项目右侧数据库图标导入redis 新建一个数据库&#xff0c;名称必须为数字&#xff0c;测试一下是否可以连接&#xff0c;连接成功后选择确定 pom.xml导入redis <depende…...

Python基础学习------第一天

print("hello world") 1.括号和引号&#xff0c;必须使用的是英文 被双引号包围起来的称为字符串。 python注释&#xff1a;单行注释&#xff1a;1.井号# 2.多行注释 &#xff1a;""" """ print输出多个内容是中间用逗号隔开就好…...

MySQL的SQL语句之触发器和存储过程的应用

触发器 Trigger 一.触发器 作用&#xff1a;当检测到某种数据表发生数据变化时&#xff0c;自动执行操作&#xff0c;保证数据的完整性。 1.创建一个触发器 如上图所示&#xff0c;查看这个create的帮助信息的时候&#xff0c;这个create trigger就是创建触发器的意思。 如…...

【MD5】密码加密之加盐算法

哈喽&#xff0c;哈喽&#xff0c;大家好~ 我是你们的老朋友&#xff1a;保护小周ღ 本期主要是给大家分析一下, 密码的如果加密存储的, 学习加盐算法的思想, 通过一个简单的案例, 即可快速学习. 一起来看看叭~ 适用于编程初学者&#xff0c;感兴趣的朋友们可以订阅&…...

服务器虚拟化

前言 服务器虚拟化是一种技术&#xff0c;它通过将一台物理服务器的软件环境分割成多个独立分区&#xff0c;使每个分区都能模拟出一台完整的虚拟服务器。这种技术利用虚拟化技术充分发挥服务器的硬件性能&#xff0c;提高运营效率&#xff0c;节约能源并降低经济成本。 通过…...

贪心算法理论基础和习题【算法学习day.17】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…...

爬虫ip技术未来发展趋势

各位朋友&#xff0c;大家好&#xff01;有伙伴问爬虫技术未来会有更好的发展么&#xff0c;那今天小蝌蚪来跟大家聊聊爬虫技术未来的发展趋势分享一下行业咨询。 大家在日常工作和生活中&#xff0c;都希望事情能更省心、高效吧&#xff1f;未来的爬虫技术就朝着这个方向发展…...

推荐一款功能强大的文字处理工具:Atlantis Word Processor

Atlantis word proCEssor是一款功能强大的文字处理工具。该软件可以让用户放心的去设计文档&#xff0c;并且软件的界面能够按用户的意愿去自定义&#xff0c;比如工具栏、字体选择、排版、打印栏等等&#xff0c;当然还有更多的功能&#xff0c;比如你还可以吧软件界面中的任何…...

语言≠思维,大模型学不了推理:一篇Nature让AI社区炸锅了

转自&#xff1a;机器之心 大语言模型&#xff08;LLM&#xff09;为什么空间智能不足&#xff0c;GPT-4 为什么用语言以外的数据训练&#xff0c;就能变得更聪明&#xff1f;现在这些问题有 「标准答案」了。 近日&#xff0c;一篇麻省理工学院&#xff08;MIT&#xff09;等…...

Ubuntu 安装 npm

1. 升级apt sudo apt-get update 2. 安装nodejs sudo apt install nodejs 3. 安装npm sudo apt-get install npm 4. 查看版本 node -v npm -v 完成安装&#xff01;...

Go:package

文章目录 标准库概述regexp包锁和sync包自定义包和可见性基本格式导入外部安装包包的初始化 自定义包使用godoc自定义包的目录结构 标准库概述 在之前的部分已经用了很多和标准库有关的内容&#xff0c;比如有fmt&#xff0c;os这种功能 unsafe: 包含了一些打破 Go 语言“类型…...

大数据之微服务注册、发现与熔断方案

大数据微服务注册、发现与熔断方案 介绍实现框架利用Spring Cloud实现微服务注册&#xff0c;发现&#xff0c;熔断实例&#xff1f; 一&#xff0c;介绍 大数据微服务注册、发现与熔断是微服务架构中的关键概念&#xff0c;它们各自在微服务架构中扮演着重要的角色。以下是对这…...

最新出炉!2024年邮件营销平台综合盘点

随着数字化营销的不断发展&#xff0c;邮件营销依然是企业与客户保持联系的重要渠道之一。2024年&#xff0c;邮件营销平台市场竞争激烈&#xff0c;各大平台纷纷推出新功能&#xff0c;以满足企业日益增长的需求。在众多平台中&#xff0c;Zoho Campaigns作为一款成熟的邮件营…...

Qgis 开发初级 《ToolBox》

Qgis 有个ToolBox 的&#xff0c;在Processing->ToolBox 菜单里面&#xff0c;界面如下。 理论上Qgis这里面的工具都是可以用脚本或者C 代码调用的。界面以Vector overlay 为例子简单介绍下使用方式。Vector overlay 的意思是矢量叠置分析&#xff0c;和arcgis软件类似的。点…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...