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

【前端面试】Typescript

Typescript面试题目回答

Typescript有哪些常用类型?

Typescript的常用类型包括:

  • 基本类型:boolean(布尔类型)、number(数字类型)、string(字符串类型)。
  • 特殊类型:null、undefined、void、never。
  • 数组和元组:Array(数组类型)、Tuple(元组类型)。
  • 枚举和任意类型:Enum(枚举类型)、Any(任意类型)。
  • 对象类型:Object(对象类型),可以通过接口或类型别名来定义更具体的对象类型。
什么是TypeScript的对象类型?怎么定义对象类型?

在TypeScript中,对象类型用于表示具有多个属性的数据结构。可以通过字面量、接口或类型别名来定义对象类型。

  • 字面量定义:直接在变量声明中指定对象的结构,例如:let obj: { name: string; age: number } = { name: 'Alice', age: 30 };
  • 接口定义:使用interface关键字定义对象的形状,例如:interface Person { name: string; age: number; },然后可以使用这个接口来声明变量:let person: Person = { name: 'Bob', age: 25 };
  • 类型别名定义:使用type关键字为对象类型创建一个别名,例如:type Employee = { id: number; name: string; position: string };,然后可以使用这个别名来声明变量:let employee: Employee = { id: 1, name: 'Charlie', position: 'Engineer' };
什么是TypeScript的类型别名?怎么定义类型别名?

类型别名是TypeScript中的一个功能,它允许你为复杂的类型表达式创建一个简洁的名称。这有助于提高代码的可读性和可维护性。

定义类型别名的语法是:type AliasName = Type;。例如,可以为一个包含两个数字的对象类型定义一个别名:type Point = { x: number; y: number };。然后可以使用这个别名来声明变量:let point: Point = { x: 10, y: 20 };

什么是TypeScript的接口?怎么定义接口?

接口是TypeScript中的一个核心概念,它用于定义对象的形状,即对象应该包含哪些属性以及这些属性的类型。接口还可以包含方法签名,用于描述对象应该实现哪些方法。

定义接口的语法是:interface InterfaceName { /* 属性和方法签名 */ };。例如,可以定义一个表示人的接口:interface Person { name: string; age: number; greet(): void; }。然后可以使用这个接口来声明一个类,该类实现了接口中定义的所有属性和方法:

class RealPerson implements Person {  name: string;  age: number;  constructor(name: string, age: number) {  this.name = name;  this.age = age;  }  greet() {  console.log(`Hello, my name is ${this.name}`);  }  
}

 

TypeScript的类型别名和接口有什么区别?

类型别名和接口在TypeScript中都可以用于定义对象的形状,但它们之间有一些关键的区别:

  • 命名规范:类型别名的名称是唯一的,不能重复定义;而接口的名称可以重复,因为接口支持声明合并。
  • 表示范围:类型别名可以表示任何类型,包括原始类型、联合类型、交叉类型和映射类型等;而接口只能表示对象类型。
  • 互操作性:类型别名和接口可以相互扩展,但语法不同。类型别名可以使用&操作符来组合多个类型,而接口可以使用extends关键字来继承另一个接口。
TypeScript中如何定义和导入模块?

在TypeScript中,可以使用ES模块或CommonJS模块系统来定义和导入模块。

  • 定义模块:使用export关键字将函数、类、变量或类型导出为模块成员。例如:export const hello = () => { console.log('Hello, world!'); };
  • 导入模块:使用import关键字从其他模块中导入成员。例如:import { hello } from './helloModule'; hello();

对于ES模块,TypeScript遵循ES6模块规范;对于CommonJS模块,TypeScript则使用Node.js的模块解析策略。

TypeScript的类有哪些成员可见性?

TypeScript的类成员具有三种可见性修饰符:

  • public:成员在类的外部和内部都是可见的。这是默认修饰符。
  • protected:成员在类的内部和派生类中是可见的,但在类的外部不可见。
  • private:成员仅在类的内部可见,在类的外部和派生类中都不可见。
TypeScript的关键字static有什么作用?

static关键字用于定义类的静态成员。静态成员是属于类的,而不是属于类的实例的。这意味着可以在不创建类实例的情况下访问静态成员。静态成员通常用于表示与类本身相关而不是与类的实例相关的数据或方法。

TypeScript类的readonly修饰符有什么作用?

readonly修饰符用于定义类的只读属性。只读属性可以在类的构造函数中被初始化,但之后就不能再被修改了。这有助于保护类的状态不被意外改变。

TypeScript的void类型、object类型、never类型是什么?
  • void类型:表示没有返回值的方法或函数的类型。当一个方法或函数不返回任何值时,可以将其返回类型指定为void
  • object类型:表示非原始类型的值,即除nullundefined之外的所有类型的值。在TypeScript中,object类型是所有非原始类型值的超类型。
  • never类型:表示那些永不存在的值的类型。never类型通常用于表示函数永远不会正常返回的情况,例如函数内部总是抛出异常或进入无限循环。
TypeScript的Function类型是什么?

在TypeScript中,Function类型表示一个函数。但是,通常更推荐使用箭头函数或具名函数签名来定义函数的类型,而不是直接使用Function类型。因为Function类型过于宽泛,它无法提供关于函数参数和返回值的类型信息。

TypeScript的any类型、unknown类型是什么?和any类型有什么区别?
  • any类型:表示任意类型的值。在编译阶段,使用any类型的变量可以赋予任意类型的值,并且不会进行类型检查。这有助于在编写代码时提供更大的灵活性,但也会失去TypeScript提供的类型安全性。
  • unknown类型:表示未知类型的值。与any类型不同,unknown类型的值在赋值给另一个变量之前必须进行类型断言或类型检查。这有助于在编写代码时保持类型安全性,避免意外的类型错误。

any类型相比,unknown类型更加安全,因为它要求在使用未知类型的值之前进行明确的类型检查。

TypeScript的关键字extends有什么作用?

extends关键字在TypeScript中有两个主要用途:

  • 类继承:用于定义一个类继承自另一个类。继承的类可以访问父类的属性和方法,并可以添加新的属性和方法或重写父类的方法。
  • 接口继承:用于定义一个接口继承自另一个接口。继承的接口可以扩展父接口的属性和方法签名,并可以添加新的属性和方法签名。
TypeScript的关键字infer有什么作用?

infer关键字是TypeScript中的高级类型操作之一,它用于在条件类型中推断类型。当使用条件类型时,如果需要根据某个条件来推断出一个类型,可以使用infer关键字来声明一个占位符类型,并在条件满足时将其替换为实际的类型。

TypeScript的泛型是什么?

泛型是TypeScript中的一个强大功能,它允许在定义函数、接口或类时不具体指定类型,而是在使用时才指定类型。这有助于编写更加通用和可重用的代码。

例如,可以定义一个泛型函数来处理不同类型的数组:

function logArrayElements<T>(array: T[]): void {  array.forEach(element => {  console.log(element);  });  
}

在这个例子中,<T>是一个类型参数,它表示函数将处理的数组元素的类型。在调用函数时,可以指定这个类型参数的具体值:

logArrayElements<number>([1, 2, 3]);  
logArrayElements<string>(['Hello', 'World']);
TypeScript的索引访问类型、条件类型、映射类型是什么?
  • 索引访问类型:允许通过索引来访问对象类型的属性类型。例如,如果有一个对象类型Person,可以使用Person['name']来获取name属性的类型。
  • 条件类型:根据条件表达式的结果来选择不同的类型。条件类型的语法是Type1 extends Type2 ? ResultType1 : ResultType2。如果Type1可以赋值给Type2,则结果是ResultType1,否则结果是ResultType2
  • 映射类型:通过映射一个对象的所有属性来创建一个新的类型。映射类型的语法是{ [P in K]: T },其中K是属性名的类型(通常是字符串或数字索引类型),T是属性值的类型。这可以用于将对象的所有属性转换为另一种类型,或者添加新的属性等。
TypeScript 的模板字面量类型

在 TypeScript 中,模板字面量类型是一种特殊的类型,它允许你通过模板字符串的方式来定义类型。模板字面量类型可以包含嵌入的表达式,这些表达式在类型检查的阶段会被求值。这种类型通常用于定义与字符串相关的类型,并且可以在类型定义中嵌入变量或类型运算。例如:

type Greeting = `Hello, ${string}`; // 定义一个模板字面量类型  
const greeting: Greeting = "Hello, World"; // 正确  
const wrongGreeting: Greeting = "Hi, World"; // 错误,不符合模板字面量类型的定义
 TypeScript 的类型操作符 keyof

keyof 是 TypeScript 中的一个类型操作符,用于获取一个对象类型(或接口)的所有公共属性名组成的字符串字面量联合类型。它常用于类型安全的属性访问和映射类型的定义。例如:

interface Person {  name: string;  age: number;  
}  type PersonKeys = keyof Person; // "name" | "age"
TypeScript 的类型操作符 typeof

typeof 是 TypeScript 中的一个类型操作符,用于获取给定变量或表达式的类型,并返回一个表示该变量或表达式类型的字符串字面量。它常用于类型检查和类型映射。例如:

const num = 10;  
type NumType = typeof num; // number
TypeScript 的内置工具类型 Awaited

Awaited 是 TypeScript 中的一个内置工具类型,用于取出 Promise 的返回值类型。它适合用在描述 then() 方法和 await 命令的参数类型时。例如:

type StringType = Awaited<Promise<string>>; // string
TypeScript 的内置工具类型 Partial

Partial 是 TypeScript 提供的一个内置工具类型,用于将对象类型中的所有属性变为可选属性。这在你只需要更新对象的部分属性时非常有用。例如:

interface Person {  name: string;  age: number;  
}  type PartialPerson = Partial<Person>; // { name?: string; age?: number; }
TypeScript 的内置工具类型 Required

Required 是 TypeScript 提供的一个内置工具类型,用于将对象类型中的所有属性设置为必需(非可选)。例如:

interface Person {  name?: string;  age?: number;  
}  type RequiredPerson = Required<Person>; // { name: string; age: number; }
TypeScript 的内置工具类型 Readonly

Readonly 是 TypeScript 提供的一个内置工具类型,用于将给定类型的所有属性设置为只读。这意味着新创建的类型将具有与原始类型相同的属性,但这些属性在新类型中是只读的,不可修改。例如:

interface Person {  name: string;  age: number;  
}  type ReadonlyPerson = Readonly<Person>; // { readonly name: string; readonly age: number; }
TypeScript 的内置工具类型 Pick

Pick 是 TypeScript 提供的一个内置工具类型,用于从对象类型中挑选出一个或多个属性,并创建一个包含这些属性的新类型。例如:

interface Person {  name: string;  age: number;  address: string;  
}  type PersonPick = Pick<Person, "name" | "age">; // { name: string; age: number; }
TypeScript 的内置工具类型 Record

Record 是 TypeScript 提供的一个内置工具类型,用于创建一个对象类型,该对象的属性键是特定类型,属性值是另一种类型。例如:

type StringToNumber = Record<string, number>; // { [key: string]: number }
TypeScript 的内置工具类型 Exclude

Exclude 是 TypeScript 提供的一个内置工具类型,用于从联合类型中排除某些类型,并返回一个新的类型。例如:

type T1 = Exclude<'a' | 'b' | 'c', 'a'>; // 'b' | 'c'
TypeScript 的内置工具类型 Extract

Extract 是 TypeScript 提供的一个内置工具类型,用于从联合类型中提取与给定类型兼容的所有类型,并返回一个新的类型。它是 Exclude 的反向操作。例如:

type T1 = Extract<'a' | 'b' | 'c', 'a' | 'd'>; // 'a'
TypeScript 的内置工具类型 Omit

Omit 是 TypeScript 提供的一个内置工具类型,用于从对象类型中排除一个或多个属性,并创建一个包含剩余属性的新类型。它是 Pick 的反向操作。例如:

interface Person {  name: string;  age: number;  address: string;  
}  type PersonOmit = Omit<Person, "address">; // { name: string; age: number; }
TypeScript 的内置工具类型 NonNullable

NonNullable 是 TypeScript 提供的一个内置工具类型,用于从类型中排除 null 和 undefined,并返回一个新的类型。例如:

type T1 = NonNullable<string | null | undefined>; // string
TypeScript 的内置工具类型 Parameters

Parameters 是 TypeScript 提供的一个内置工具类型,用于获取一个函数类型的参数类型,并返回一个表示这些参数类型的元组。例如:

function foo(x: number, y: string): boolean {  return x > 0 && y.length > 0;  
}  type FooParams = Parameters<typeof foo>; // [x: number, y: string]
TypeScript 的内置工具类型 ConstructorParameters

ConstructorParameters 是 TypeScript 提供的一个内置工具类型,用于获取一个构造函数的参数类型,并返回一个表示这些参数类型的元组。例如:

class MyClass {  constructor(x: number, y: string) {}  
}  type MyClassParams = ConstructorParameters<typeof MyClass>; // [x: number, y: string]
TypeScript 的内置工具类型 ReturnType

ReturnType 是 TypeScript 提供的一个内置工具类型,用于获取一个函数类型的返回类型。例如:

function foo(): string {  return "hello";  
}  type FooReturnType = ReturnType<typeof foo>; // string
TypeScript 的内置工具类型 InstanceType

InstanceType 是 TypeScript 提供的一个内置工具类型,用于获取一个构造函数类型的实例类型。例如:

class MyClass {  name: string;  constructor(name: string) {  this.name = name;  }  
}  type MyClassInstance = InstanceType<typeof MyClass>; // MyClass

注意:这里的 InstanceType 返回的应该是 MyClass 的实例类型,而不是 MyClass 本身。但在 TypeScript 的类型系统中,我们通常不需要显式地表示实例类型(因为它会自动推断),因此这里的描述主要是为了解释 InstanceType 的作用。在实际使用中,你可能会将 InstanceType 用于泛型约束或类型映射等场景。

TypeScript 的内置工具类型(Nolnfer、ThisParameterType、OmitThisParameter、ThisType)
  • Nolnfer:这个类型在您的问题中可能是个拼写错误,我猜测您可能是想问 NonNullable,上面已经介绍过了。
  • ThisParameterTypeThisParameterType 是 TypeScript 提供的一个内置工具类型,用于获取一个函数类型的 this 参数的类型。这在处理类方法或需要明确 this 类型的函数时非常有用。例如:
function foo(this: { bar: number }, x: string): number {  return this.bar + x.length;  
}  type FooThisType = ThisParameterType<typeof foo>; // { bar: number }
  • OmitThisParameter:这个类型在 TypeScript 的标准内置工具类型中并不存在。可能是您记错了某个类型或者看到了某个特定库中的扩展类型。在 TypeScript 中,没有直接的方式来“省略” this 参数,因为 this 参数的类型通常是由函数所在的上下文决定的。
  • ThisTypeThisType 是一个在 JSX 中使用的特殊类型,用于指定 this 的类型。在普通的 TypeScript 代码中,你通常不需要使用 ThisType。但在 JSX 中,当你需要在回调函数中访问组件的实例时,可以使用 ThisType 来指定 this 的类型。例如:
interface MyComponentThisType {  myMethod: () => void;  
}  const MyComponent = (props: {}) => {  /* JSX code here */  return <button onClick={(e) => {  // 在这里,`this` 被指定为 MyComponentThisType  (this as MyComponentThisType).myMethod();  }}>Click me</button>;  
} as React.FC<{}> & { this: ThisType<MyComponentThisType> };

 注意:上面的 ThisType 示例是在 JSX 和 React 的上下文中使用的。在普通的 TypeScript 函数或类中,你通常不需要使用 ThisType

为什么要使用 TypeScript?TypeScript 有哪些常用特性?

why

  1. 静态类型检查:TypeScript使用静态类型,能在编译时进行类型检查,这有助于避免在运行时遇到类型相关的错误,从而提高代码的健壮性和稳定性。
  2. 提高代码可读性:通过类型注解和接口等特性,TypeScript能够清晰地描述代码的结构和数据的类型,使代码更易于阅读和理解。
  3. 便于重构和维护:对于大型、复杂的应用程序,TypeScript的类型系统使得重构代码变得更加容易,同时降低了维护成本。
  4. 支持现代JavaScript特性:TypeScript不仅包含了JavaScript的所有元素,还提供了最新的和不断发展的JavaScript特性,如异步功能和Decorators等,有助于建立健壮的组件。
  5. 提高开发效率:TypeScript提供了自动完成和动态输入等智能感知功能,这些功能能够大大提高开发人员的工作效率。

features

  1. 类型注解:为函数和变量添加约束的方式,使得代码在编译时就能进行类型检查。
  2. 接口:使用接口来描述一个拥有具体字段的对象,确保实现接口的对象包含了接口要求的结构。
  3. :TypeScript引入了“类”的概念,使得面向对象编程在JavaScript中得以实现。
  4. 枚举:枚举类型是对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
  5. 模块:TypeScript支持模块的概念,可以把声明、数据、函数和类封装在模块中,避免全局命名空间污染,并方便管理依赖关系。
  6. 访问修饰符:TypeScript支持访问修饰符(public、private、protected),它们决定了类成员的可访问性,有助于封装和保护类的内部状态。
  7. 泛型:泛型允许在定义函数、接口或类时不指定具体类型,而是在使用时指定类型,这有助于编写更加灵活和可复用的代码。
  8. 类型断言:类型断言是一种告诉编译器“相信我,我知道自己在干什么”的方式,它允许开发人员将一个变量断言为特定类型,以便在编译时获得更好的类型检查。

具体讲解 

  • Typescript 有哪些常用类型?
  • 什么是 TypeScript 的对象类型?怎么定义对象类型?
  • 什么是 TypeScript 的类型别名?怎么定义类型别名?
  • 什么是 TypeScript 的接口?怎么定义接口?
  • TypeScript 的类型别名和接口有什么区别?
  • TypeScript 中如何定义和导入模块?
  • TypeScript 的类有哪些成员可见性?
  • TypeScript 的关键字 static 有什么作用?
  • TypeScript 类的 readonly 修饰符有什么作用?
  • 什么是 TypeScript 的 void 类型?
  • 什么是 TypeScript 的 object 类型?
  • 什么是 TypeScript 的 never 类型?
  • 什么是 TypeScript 的 Function 类型?
  • 什么是 TypeScript 的 any 类型?
  • 什么是 TypeScript 的 unknown 类型?和 any 类型有什么区别?
  • TypeScript 的关键字 extends 有什么作用?
  • TypeScript 的关键字 infer 有什么作用?
  • 什么是 TypeScript 的泛型?
  • 什么是 TypeScript 的索引访问类型?
  • 什么是 TypeScript 的条件类型?
  • 什么是 TypeScript 的映射类型?
  • 什么是 TypeScript 的模板字面量类型?
  • TypeScript 的类型操作符 keyof 有什么作用?
  • TypeScript 的类型操作符 typeof 有什么作用?
  • TypeScript 的内置工具类型 Awaited 有什么作用?
  • TypeScript 的内置工具类型 Partial 有什么作用?
  • TypeScript 的内置工具类型 Required 有什么作用?
  • TypeScript 的内置工具类型 Readonly 有什么作用?
  • TypeScript 的内置工具类型 Pick 有什么作用?
  • TypeScript 的内置工具类型 Record 有什么作用?
  • TypeScript 的内置工具类型 Exclude 有什么作用?
  • TypeScript 的内置工具类型 Extract 有什么作用?
  • TypeScript 的内置工具类型 Omit 有什么作用?
  • TypeScript 的内置工具类型 NonNullable 有什么作用?
  • TypeScript 的内置工具类型 Parameters 有什么作用?
  • TypeScript 的内置工具类型 ConstructorParameters 有什么作用?
  • TypeScript 的内置工具类型 ReturnType 有什么作用?
  • TypeScript 的内置工具类型 InstanceType 有什么作用?
  • TypeScript 的内置工具类型 Nolnfer 有什么作用?
  • TypeScript 的内置工具类型 ThisParameterType 有什么作用?
  • TypeScript 的内置工具类型 OmitThisParameter 有什么作用?
  • TypeScript 的内置工具类型 ThisType 有什么作用?
  • 为什么要使用 TypeScript?TypeScript 有哪些常用特性?

 

相关文章:

【前端面试】Typescript

Typescript面试题目回答 Typescript有哪些常用类型? Typescript的常用类型包括&#xff1a; 基本类型&#xff1a;boolean&#xff08;布尔类型&#xff09;、number&#xff08;数字类型&#xff09;、string&#xff08;字符串类型&#xff09;。特殊类型&#xff1a;nul…...

程序语言的内存管理:垃圾回收GC(Java)、手动管理(C语言)与所有权机制(Rust)(手动内存管理、手动管理内存)

文章目录 程序语言的内存管理&#xff1a;垃圾回收、手动管理与所有权机制引言一、垃圾回收机制&#xff08;GC&#xff09;&#xff08;Java&#xff09;1. 什么是垃圾回收机制2. 垃圾回收的工作原理3. 优点与缺点4. 示例代码 二、手动管理内存的分配和释放&#xff08;C语言&…...

研究生论文学习记录

文献检索 检索论文的网站 知网&#xff1a;找论文&#xff0c;寻找创新点paperswithcode &#xff1a;这个网站可以直接找到源代码 直接再谷歌学术搜索 格式&#xff1a;”期刊名称“ 关键词 在谷歌学术搜索特定期刊的关键词相关论文&#xff0c;可以使用以下几种方法&#…...

毕业设计选题:基于Django+Vue的图书馆管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 图书馆界面 图书信息界面 个人中心界面 后台登录界面 管理员功能界面 用户…...

#网络安全#NGSOC与传统SOC的区别

NGSOC是Next Generation Security Operation Center&#xff08;下一代安全运营中心&#xff09;的缩写。 NGSOC安全运营服务基于态势感知与安全运营平台来开展监测分析等一系列的服务工作&#xff0c;旨在通过专业、高效的运营服务工作&#xff0c;帮助用户尽可能发挥NGSOC作…...

GCN+BiLSTM多特征输入时间序列预测(Pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GCNBiLSTM多特征输入时间序列预测&#xff08;Pytorch&#xff09; 可以做风电预测&#xff0c;光伏预测&#xff0c;寿命预测&#xff0c;浓度预测等。 Python代码&#xff0c;基于Pytorch编写 1.多特征输入单步预测…...

LinkedList和链表之刷题课(下)

1. 给定x根据x把链表分割,大的结点放在x后面,小的结点放在x前面 题目解析: 注意此时的pHead就是head(头节点的意思) 基本上就是给定一个链表,我们根据x的值来把这个链表分成俩部分,大的那部分放在x后面,小的那部分放在x前面,并且我们不能改变链表本来的顺序,比如下面的链表,我…...

ollama 在 Linux 环境的安装

ollama 在 Linux 环境的安装 介绍 他的存在在我看来跟 docker 的很是相似&#xff0c;他把市面上已经存在的大语言模型集合在一个仓库中&#xff0c;然后通过 ollama 的方式来管理这些大语言模型 下载 # 可以直接通过 http 的方式吧对应的 shell 脚本下载下来&#xff0c;然…...

C语言二刷指针篇

&取得变量的地址 printf("%p\n", &a); printf("%p\n", a); printf("%p\n", &a[0]); printf("%p\n", &a[1]); 前三个输出相同&#xff0c;a[0]和a[1]之间相差4 指针就是保存地址的变量&#xff0c;指针里放的是别的…...

LeetCode题练习与总结:回文对--336

一、题目描述 给定一个由唯一字符串构成的 0 索引 数组 words 。 回文对 是一对整数 (i, j) &#xff0c;满足以下条件&#xff1a; 0 < i, j < words.length&#xff0c;i ! j &#xff0c;并且words[i] words[j]&#xff08;两个字符串的连接&#xff09;是一个回文…...

CesiumJS 案例 P7:添加指定长宽的图片图层(原点分别为图片图层的中心点、左上角顶点、右上角顶点、左下角顶点、右下角顶点)

CesiumJS CesiumJS API&#xff1a;https://cesium.com/learn/cesiumjs/ref-doc/index.html CesiumJS 是一个开源的 JavaScript 库&#xff0c;它用于在网页中创建和控制 3D 地球仪&#xff08;地图&#xff09; 一、添加指定长宽的图片图层&#xff08;原点为图片图层的中心…...

Redis 主从同步 问题

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 主从同步 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 主从同步 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis &a…...

【SQL Server】探讨 IN 和 EXISTS之间的区别

前言 在使用 SQL 查询相关表数据时,通常需要根据另一个表中的值来筛选数据。而 IN 与 EXISTS 子句都是用于此场景的常用方式,但使用时两者存在工作方式不同。它们使用上的选择会显著影响查询的性能,尤其是在大型数据集中。本文我们一起探讨 IN 和 EXISTS 之间的区别、使用与…...

清理pip和conda缓存

当用户目录没有空间时&#xff0c;可清理pip和conda缓存 清理conda缓存&#xff1a; conda clean --all清理pip缓存&#xff1a; pip cache purgeNote&#xff1a; 可以利用软链接&#xff0c;将用户目录下的文件链接到其他位置 首先移动文件或文件夹到其他位置 mv ~/test /…...

git rebase和merge的区别

Git merge和Git rebase是两种不同的合并策略&#xff0c;它们在处理分支合并时有各自的优点和缺点。 Git fetch git fetch 命令用于从远程仓库获取最新的更改&#xff0c;但不会自动合并这些更改到你的本地分支。它会下载远程仓库的所有分支和标签&#xff0c;并更新你的本地…...

【elkb】linux麒麟v10安装ELKB 8.8.X版本(ARM架构)

下载软件 相关版本信息 elasticsearch&#xff1a;8.8.1kibana&#xff1a;8.8.1logstash&#xff1a;8.8.1filebeat&#xff1a;8.8.1 下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-aarch64.tar.gzhttps://artifacts.elastic…...

bluez hid host介绍,连接键盘/鼠标/手柄不是梦,安排

零. 前言 由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统…...

GPT打数模——电商品类货量预测及品类分仓规划

背景 电商企业在各区域的商品存储主要由多个仓库组成的仓群承担。其中存储的商品主要按照属性&#xff08;品类、件型等&#xff09;进行划分和打标&#xff0c;便于进行库存管理。图 1 是一个简化的示意图&#xff0c;商品品类各异&#xff0c;件数众多&#xff0c;必须将这些…...

华为OD机试 - 螺旋数字矩阵 - 矩阵(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…...

分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB)

分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB) 目录 分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB)分类效果基本介绍程序设计参考资料分类效果 基本介绍 GCN图卷积神经网络多特征分类预测(MATLAB) 在图卷积神经网络(GCN)中,多特征分类...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...