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

ts基础知识总结

TypeScript(简称TS)是JavaScript(简称JS)的一个超集,它在JS的基础上增加了静态类型检查、类、模块等特性。

TypeScript 与 JavaScript 的不同及好处

不同点

  • 类型系统
    JavaScript 是一种弱类型语言,这意味着在声明变量时,不需要明确指定变量的类型,而且变量的类型可以在运行时随意改变。例如:
let num = 10;
console.log(typeof num); // 输出: number
num = 'hello';
console.log(typeof num); // 输出: string

在这个例子中,变量 num 最初被赋值为一个数字,后来又被赋值为一个字符串,JavaScript 解释器并不会报错。这种灵活性虽然在某些情况下可以提高开发效率,但也容易导致一些难以调试的问题,特别是在大型项目中,类型的不确定性会让代码的维护变得异常困难。

而 TypeScript 是一种静态类型语言,在声明变量时,需要明确指定变量的类型,并且变量的类型一旦确定,就不能随意改变,除非进行显式的类型转换。例如:

let num: number = 10;
// num = 'hello'; // 编译错误,不能将字符串赋值给数字类型的变量

在 TypeScript 中,如果尝试将一个不符合类型要求的值赋给变量,编译器会立即报错,这样可以在开发阶段就发现并解决类型相关的问题,避免在运行时出现错误。

  • 编译过程
  1. JavaScript 是一种解释型语言,代码在运行时由浏览器或 Node.js 环境直接解释执行,不需要进行编译。这使得 JavaScript 代码的开发和调试非常方便,开发者可以快速看到代码的运行结果。

  2. 而 TypeScript 需要先经过编译,将 TypeScript 代码转换为 JavaScript 代码,然后再由浏览器或 Node.js 环境执行。编译过程中,TypeScript 编译器会对代码进行类型检查,如果发现类型错误,会给出相应的提示。虽然增加了编译步骤,但这也为代码的质量提供了保障,让开发者能够提前发现并解决潜在的问题。

好处

  • TypeScript 的好处
  1. 早期错误检测:TypeScript 的静态类型检查机制可以在编译阶段就发现类型相关的错误,避免在运行时出现难以调试的问题。例如,在一个函数中,如果传入的参数类型不符合要求,TypeScript 编译器会立即报错。
function add(a: number, b: number): number {return a + b;
}
// add('1', '2'); // 编译错误,参数类型必须是数字
  1. 代码可读性和可维护性:明确的类型注解让代码更易于理解,特别是在团队协作开发中,其他开发者可以更快地理解代码的意图。例如,在一个复杂的函数中,通过类型注解可以清晰地知道每个参数的类型和返回值的类型。
function getUserInfo(id: number): { name: string; age: number } {// 函数实现return { name: 'John', age: 25 };
}

提示:在使用集成开发环境(IDE)时,TypeScript 可以提供更准确的智能提示,提高开发效率。IDE 可以根据变量的类型,自动提示该类型的属性和方法,让开发者可以更方便地编写代码。

  • JavaScript 的好处
  1. 灵活性:弱类型的特性让 JavaScript 代码编写更加灵活,开发速度更快,适合快速原型开发。开发者可以在不考虑类型的情况下,快速实现各种功能,然后再根据需要进行优化。
  2. 广泛的兼容性:几乎所有的浏览器和服务器环境都支持 JavaScript,无需额外的编译步骤。这使得 JavaScript 可以在各种平台上运行,具有很强的通用性。

TypeScript 的类型

基本类型

  • number
    number 类型表示数字,包括整数和浮点数。在 JavaScript 中,所有的数字都使用 Number 类型表示,而在 TypeScript 中,同样使用 number 类型来表示数字。
let age: number = 25;
let price: number = 9.99;
  • string
    string 类型表示字符串,可以使用单引号、双引号或反引号来定义字符串。
let name: string = 'John';
let message: string = "Hello, world!";
let template: string = `My name is ${name}.`;
  • boolean
    boolean 类型表示布尔值,只有 true 和 false 两个值。
let isStudent: boolean = true;
let isAdult: boolean = false;
  • null 和 undefined
    null 表示一个空值,undefined 表示变量已声明但未赋值。在 TypeScript 中,null 和 undefined 既是实际的值,也是类型。
let emptyValue: null = null;
let unassignedValue: undefined = undefined;
  • any
    any 类型表示任意类型,当你不确定变量的具体类型时,可以使用 any。但要注意,过度使用 any 会失去 TypeScript 类型检查的优势,因为 any 类型的变量可以赋值为任何类型的值。
let unknownValue: any = 'could be a string';
unknownValue = 10; // 可以随意改变类型
unknownValue = true; // 也可以赋值为布尔值
  • 数组类型
    在 TypeScript 中,有两种方式定义数组类型。
  1. 使用类型 + 方括号
let numbers: number[] = [1, 2, 3];
let strings: string[] = ['a', 'b', 'c'];
  1. 使用泛型数组
let numbers: Array<number> = [1, 2, 3];
let strings: Array<string> = ['a', 'b', 'c'];

这两种方式的效果是相同的,开发者可以根据自己的喜好选择使用。

  • 元组类型
    元组类型允许你定义一个固定长度和类型的数组。元组中的每个元素可以有不同的类型,但元素的数量和类型必须与定义时一致。
let person: [string, number] = ['John', 25];
// person = ['John', 25, true]; // 编译错误,元组长度和类型必须与定义时一致

元组类型在处理一些具有固定结构的数据时非常有用,例如在函数返回多个不同类型的值时。

  • 枚举类型
    枚举类型用于定义一组命名的常量。枚举类型可以提高代码的可读性和可维护性,特别是在处理一些具有固定取值范围的数据时。
    枚举成员默认从 0 开始编号
enum Color {Red,Green,Blue
}let myColor: Color = Color.Green;
console.log(myColor); // 输出: 1,

可以通过赋值来改变枚举成员的编号

enum Color {Red = 1,Green = 2,Blue = 3
}let myColor: Color = Color.Green;
console.log(myColor); // 输出: 2
  • 函数类型
    在 TypeScript 中,可以为函数的参数和返回值指定类型。这样可以确保函数的输入和输出符合预期,提高代码的可靠性。
function add(a: number, b: number): number {return a + b;
}let result: number = add(1, 2);
console.log(result); // 输出: 3

如果函数没有返回值,可以使用 void 类型表示:

function printMessage(message: string): void {console.log(message);
}printMessage('Hello, world!');
  • TypeScript 的类
  1. 基本概念
    类是面向对象编程的核心概念之一,它是一种抽象的数据类型,用于描述具有相同属性和方法的对象的集合。TypeScript 支持类的定义和使用,它的语法与 JavaScript 的类语法相似,但增加了类型注解。
    示例代码
class Person {// 成员变量name: string;age: number;// 构造函数constructor(name: string, age: number) {this.name = name;this.age = age;}// 成员方法sayHello() {return `Hello, my name is ${this.name} and I'm ${this.age} years old.`;}
}let person = new Person('John', 25);
console.log(person.sayHello());

在这个示例中,Person 类有两个成员变量 name 和 age,一个构造函数 constructor 用于初始化对象的属性,一个成员方法 sayHello 用于返回一个问候语。
2. 类的继承
TypeScript 支持类的继承,通过 extends 关键字可以创建一个子类,子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。

class Student extends Person {grade: number;constructor(name: string, age: number, grade: number) {super(name, age);this.grade = grade;}study() {return `${this.name} is studying in grade ${this.grade}.`;}
}let student = new Student('Alice', 20, 3);
console.log(student.sayHello());
console.log(student.study());

在这个示例中,Student 类继承自 Person 类,除了继承 Person 类的属性和方法外,还添加了自己的属性 grade 和方法 study。在子类的构造函数中,需要使用 super 关键字调用父类的构造函数。
3. 访问修饰符
TypeScript 支持三种访问修饰符:publicprivateprotected

  • public:默认的访问修饰符,成员可以在类的内部和外部访问。
class Person {public name: string;constructor(name: string) {this.name = name;}
}let person = new Person('John');
console.log(person.name); // 可以在类的外部访问

- private:私有成员只能在类的内部访问,不能在类的外部访问。

class Person {private age: number;constructor(age: number) {this.age = age;}getAge() {return this.age;}
}let person = new Person(25);
// console.log(person.age); // 编译错误,不能在类的外部访问私有成员
console.log(person.getAge()); // 可以通过类的方法访问私有成员
  • protected:受保护的成员可以在类的内部和子类中访问,但不能在类的外部访问。
class Person {protected age: number;constructor(age: number) {this.age = age;}
}class Student extends Person {getAge() {return this.age; // 可以在子类中访问受保护的成员}
}let student = new Student(20);
// console.log(student.age); // 编译错误,不能在类的外部访问受保护的成员
console.log(student.getAge());

TypeScript 的泛型

  1. 基本概念
    泛型是一种创建可重用组件的方式它允许你在定义函数、类或接口时不预先指定具体的类型,而是在使用时再指定。通过使用泛型,可以编写更加灵活和通用的代码。
  2. 函数泛型示例
function identity<T>(arg: T): T {return arg;
}let result1 = identity<string>('hello');
let result2 = identity<number>(10);console.log(result1);
console.log(result2);

在这个示例中,<T> 是泛型类型参数,它表示一个占位符类型。在调用 identity 函数时,通过 <string><number> 来指定具体的类型。也可以省略类型参数,让 TypeScript 编译器自动推断类型:

let result3 = identity('world'); // 编译器自动推断类型为 string
let result4 = identity(20); // 编译器自动推断类型为 number
  1. 类泛型示例
class GenericNumber<T> {zeroValue: T;add: (x: T, y: T) => T;
}let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function (x, y) {return x + y;
};console.log(myGenericNumber.add(5, 3));

在这个示例中,GenericNumber 类使用了泛型类型参数 <T>,可以在创建实例时指定具体的类型,这里指定为 number。这样,zeroValue 属性和 add 方法的参数和返回值类型都变成了 number。
4. 泛型约束
有时候,我们希望对泛型类型参数进行一些限制,确保它具有某些属性或方法。可以使用泛型约束来实现这一点。

interface Lengthwise {length: number;
}function loggingIdentity<T extends Lengthwise>(arg: T): T {console.log(arg.length); // 现在可以访问 length 属性return arg;
}// loggingIdentity(10); // 编译错误,数字类型没有 length 属性
loggingIdentity('hello'); // 可以正常调用,字符串类型有 length 属性

在这个示例中,T extends Lengthwise 表示泛型类型参数 T 必须是实现了 Lengthwise 接口的类型,这样就可以确保 arg 参数具有 length 属性。

总结

TypeScript 作为 JavaScript 的超集,为开发者带来了很多好处,特别是在大型项目中,它的类型系统和面向对象特性可以让代码更加稳健和易于维护。
通过合理使用 TypeScript 的类型、类和泛型等特性,可以提高开发效率,减少错误的发生。希望通过这篇博客,你对 TypeScript 有了更深入的了解,在今后的开发中能够充分发挥 TypeScript 的优势,编写出高质量的代码。

相关文章:

ts基础知识总结

TypeScript&#xff08;简称TS&#xff09;是JavaScript&#xff08;简称JS&#xff09;的一个超集&#xff0c;它在JS的基础上增加了静态类型检查、类、模块等特性。 TypeScript 与 JavaScript 的不同及好处 不同点 类型系统 JavaScript 是一种弱类型语言&#xff0c;这意味…...

操作系统内存管理

为什么要有虚拟内存 单片机的CPU直接操作内存的物理地址&#xff0c;这就导致在内存中同时运行两个程序是不可能的&#xff0c;有可能会出现第一个程序在2000的位置写入新的值将会擦掉第二个程序存放在相同位置上的内容。 出现这个问题的根本原因是两个程序引用了绝对物理地址。…...

M芯片,能运行普通应用程序的原架构虚拟机

在我们使用搭载了Apple芯片的Mac时,很多时候会用到windows虚拟机来使用windows应用程序 但是Apple芯片是ARM架构,如果运行原价构的虚拟机,很多64位的普通应用程序就无法运行,如果使用UTM来安装64位的跨架构虚拟机,就会非常卡慢 但实际上使用一种特殊的系统镜像,就可以使用ARM…...

多功能指示牌的主要功能有哪些?

哇哦&#xff01;咱们的多功能指示牌可有着超多超厉害的主要功能哦&#xff0c;简直就是生活中的超级小助手&#xff0c;涵盖了方方面面呢&#xff01; 指示导向功能 道路指引&#xff1a;不管是在繁华热闹的城市道路&#xff0c;还是车水马龙的高速公路&#xff0c;亦或是风…...

Superset 问题

和nginx结合使用&#xff0c;如果不是配置到根路径&#xff0c;会比较麻烦&#xff0c;我试了很多种方法&#xff0c;也就 这个 靠谱点&#xff0c;不过&#xff0c;我最后还是选择的部署在根路径&#xff0c;先探索一番再说默认不能选择mysql数据库&#xff0c;需要安装mysql客…...

安装gpu版本的dgl

1.先去网址&#xff0c;找到对应版本的dgl,然后下载到本地。 dgl-whl下载地址 我的是python 3.8 &#xff0c;cuda 11.6. windows 2.在虚拟环境里 输入 pip install E:\dgl-1.0.2cu116-cp38-cp38-win_amd64.whl &#xff08;因为我下载到E盘里了&#xff09; 这样GPU版本的d…...

vue watch和 watchEffect

在 Vue 3 中&#xff0c;watch 和 watchEffect 是两个用于响应式地监听数据变化并执行副作用的 API。它们在功能上有一些相似之处&#xff0c;但用途和行为有所不同。以下是对 watch 和 watchEffect 的详细对比和解释&#xff1a; 1. watch watch 是一个更通用的 API&#xf…...

JavaScript基础--03-变量的数据类型:基本数据类型和引用数据类型

JavaScript基础--03-变量的数据类型&#xff1a;基本数据类型和引用数据类型 前言变量的数据类型为什么需要数据类型JS中一共有六种数据类型 一个经典的例子栈内存和堆内存 前言 我们接着上一篇文章 JavaScript基础–02-变量 来讲。 下一篇文章 JavaScript基础–04-基本数据类…...

WindowsPE文件格式入门05.PE加载器LoadPE

https://bpsend.net/thread-316-1-1.html LoadPE - pe 加载器 壳的前身 如果想访问一个程序运行起来的内存,一种方法就是跨进程读写内存,但是跨进程读写内存需要来回调用api,不如直接访问地址来得方便,那么如果我们需要直接访问地址,该怎么做呢?.需要把dll注进程,注进去的代码…...

【Redis】通用命令

使用者通过redis-cli客户端和redis服务器交互&#xff0c;涉及到很多的redis命令&#xff0c;redis的命令非常多&#xff0c;我们需要多练习常用的命令&#xff0c;以及学会使用redis的文档。 一、get和set命令&#xff08;最核心的命令&#xff09; Redis中最核心的两个命令&…...

Android学习总结之service篇

引言 在 Android 开发里&#xff0c;Service 与 IntentService 是非常关键的组件&#xff0c;它们能够让应用在后台开展长时间运行的操作。不过&#xff0c;很多开发者仅仅停留在使用这两个组件的层面&#xff0c;对其内部的源码实现了解甚少。本文将深入剖析 Service 和 Inte…...

基于CATIA产品结构树智能排序的二次开发技术解析——深度定制BOM层级管理系统的Pycatia实践

引言 在航空制造与汽车装配领域&#xff0c;CATIA产品结构树&#xff08;Product Tree&#xff09;的规范性直接影响MBOM管理效率。传统手动排序存在两大痛点&#xff1a; ​多级编号混乱&#xff1a;混合零件号&#xff08;PartNumber&#xff09;与实例名&#xff08;Insta…...

机器人轨迹跟踪控制——CLF-CBF-QP

本次使用MATLAB复现CLF-CBF-QP算法,以实现机器人轨迹跟踪同时保证安全性能 模型 使用自行车模型来进行模拟机器人的移动动态,具体的模型推导参考车辆运动学模型-自行车模型 采用偏差变量 p ~ = p − p r e f u ~ = u − u r e f \tilde{p} = p - p_{ref} \\ \tilde{u} = …...

道路裂缝数据集CrackForest-156-labelme

来源于开源的数据集 https://github.com/cuilimeng/CrackForest-dataset 进行整理修改而成。 文章目录 1. 介绍2. 数据文件3. 应用场景4. 相关工具5. 下载地址 1. 介绍 在现代城市管理中&#xff0c;道路状况的监测与维护是确保交通安全和城市基础设施健康的重要环节。 CrackF…...

数据定义语言

一、DDL的核心功能 DDL用于定义和管理数据库对象的结构,包括数据库、表、索引、视图等,主要操作包括创建、修改、删除。其核心命令包括: CREATE:创建对象(数据库、表、索引等) ALTER:修改对象结构(如添加/删除列) DROP:删除对象 TRUNCATE:清空表数据(保留结构) RE…...

爬楼梯问题-动态规划

一、题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 方法1. 1 阶 1 阶 方法2. 2 阶…...

MySQL篇(四)事务相关知识详解

MySQL篇(四&#xff09;事务相关知识详解 MySQL篇(四&#xff09;事务相关知识详解一、事务的特性&#xff08;ACID&#xff09;原子性&#xff08;Atomicity&#xff09;一致性&#xff08;Consistency&#xff09;隔离性&#xff08;Isolation&#xff09;持久性&#xff08;…...

C++第14届蓝桥杯b组学习笔记

1. 日期统计 小蓝现在有一个长度为 100100 的数组&#xff0c;数组中的每个元素的值都在 00 到 99 的范围之内。数组中的元素从左至右如下所示&#xff1a; 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4…...

4.5蓝桥杯|高塔登顶方案(5025)

作者语录&#xff1a; 1、 从不会做到会做的过程&#xff0c;从不理解到不理解的过程&#xff0c;从一个不会做这道题的人的角度出发看这个问题&#xff0c;好命苦嗷嗷嗷&#xff01; 2、只有我受煎熬吗&#xff0c;偶买噶&#xff0c;&#xff0c;&#xff0c; 目录 研究步骤…...

[MySQL初阶]MySQL(9)事务机制

标题&#xff1a;[MySQL初阶]MySQL&#xff08;9&#xff09;事物机制 水墨不写bug 文章目录 一、认识事务1、多线程访问数据库出现的问题2、对CURD的限制是通过事务机制实现的3、事务的四个属性4、哪些引擎支持事务 二、事务的提交与autocommit设置三、事务的隔离性和隔离级别…...

3535 数组分割

3535 数组分割 ⭐️难度&#xff1a;困难 &#x1f31f;考点&#xff1a;2023、省赛、动态规划 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int MOD 1000000007;static int N 1005;public static void main(String[] args) {Scanner sc …...

线程池的工作原理

固定线程池&#xff1a;线程池中的线程数是固定的&#xff0c;线程池创建时就已经设定了固定的线程数量。在任务提交时&#xff0c;线程池会将任务分配给空闲的线程执行。如果所有线程都在执行任务&#xff0c;新的任务会被放到任务队列中&#xff0c;直到有线程空闲出来。 线…...

论文导读 | SOSP23 | Gemini:大模型 内存CheckPoint 快速故障恢复

本期分享的是一篇SOSP 2023论文&#xff1a; Gemini: Fast Failure Recovery in Distributed Training with In-Memory Checkpoints Zhuang Wang (Rice University), Zhen Jia (Amazon Web Services, Inc.), Shuai Zheng (Amazon Web Services), Zhen Zhang (Amazon Web Servic…...

windows 常用命令总结

工作中用到的 Linux 总结&#xff08;持续更新中...&#xff09;_linux工作经验-CSDN博客 PS&#xff1a; 推荐使用 powershell 而不是 cmd&#xff0c;因为PowerShell 是一个更先进和功能更强大的工具&#xff08; powershell 有命令记忆功能&#xff0c;比较方便&#xff09…...

【Linux】进程间通信、匿名管道、进程池

一.什么是通信 进程间通信(Inter-Process Communication&#xff0c;IPC),是指在操作系统中&#xff0c;不同进程之间进行数据交换和同步的机制。由于每个进程通常拥有独立的内存空间&#xff0c;进程间无法直接访问对方的内存&#xff0c;因此需要通过特定的机制来实现通信和…...

【Block总结】PlainUSR的局部注意力,即插即用|ACCV2024

论文信息 标题: PlainUSR: Chasing Faster ConvNet for Efficient Super-Resolution作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguang Liu发表时间: 2024年会议/期刊: 亚洲计算机视觉会议&#xff08;ACCV 2024&#xff09;研究背景: 超分辨率&#xff08;Super-Resolution, S…...

35信号和槽_信号槽小结

Qt 信号槽 1.信号槽是啥~~ 尤其是和 Linux 中的信号进行了对比&#xff08;三要素&#xff09; 1) 信号源 2) 信号的类型 3)信号的处理方式 2.信号槽 使用 connect 3.如何查阅文档. 一个控件&#xff0c;内置了哪些信号&#xff0c;信号都是何时触发 一…...

现代复古电影海报品牌徽标设计衬线英文字体安装包 Thick – Retro Vintage Cinematic Font

Thick 是一种大胆的复古字体&#xff0c;专为有影响力的标题和怀旧的视觉效果而设计。其厚实的字体、复古魅力和电影风格使其成为电影海报、产品标签、活动品牌和编辑设计的理想选择。无论您是在引导电影的黄金时代&#xff0c;还是在现代布局中注入复古活力&#xff0c;Thick …...

低代码开发平台:飞帆画 echarts 柱状图

https://fvi.cn/711 柱状图这个控件是由折线图的控件改过来的&#xff0c;在配置中&#xff0c;单选框选择柱状图就行了。...

Linux中C++ gdb调试命令

编译可执行文件需要带上-g选项参数 输入回车则重复执行上一次命令&#xff1b; 进入gdb&#xff1a; gdb 程序名运行gdb命令&#xff1a; r打断点命令&#xff1a; b 行号查看断点命令&#xff1a; i b打印变量命令&#xff1a; p 变量名持续查看变量命令&#xff1a; d…...

Python精进系列:从 __name__ 开始了解 python 常见内置变量

目录 引言一、__name__是什么&#xff1f;案例1&#xff1a;直接运行模块案例2&#xff1a;模块被导入 二、__name__的主要用途&#xff08;一&#xff09;区分主程序和导入模块案例3&#xff1a;测试代码隔离&#xff08;二&#xff09;动态导入模块案例4&#xff1a;根据环境…...

Nacos 服务发现的核心模型有哪些?Service, Instance, Cluster 之间的关系是什么?

Nacos 服务发现的核心模型 Nacos 服务发现的核心数据模型主要围绕以下几个关键概念构建&#xff0c;它们共同构成了服务注册与发现的基础&#xff1a; Namespace (命名空间): 用途: 用于进行环境隔离。比如&#xff0c;你可以为开发环境 (dev)、测试环境 (test) 和生产环境 (p…...

Java程序设计第1章:概述

一、Hello World 1.代码&#xff1a; public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!");} } 2.运行结果&#xff1a; Hello World! 二、输出姓名、学号、班级 1.题目&#xff1a; 编写一个Application&a…...

C++开发工具全景指南

专业编译与调试工具深度解析 2025年4月 编译器套件 GNU Compiler Collection (GCC) GNU编译器套件是自由软件基金会开发的跨平台编译器系统&#xff0c;支持C、C、Objective-C、Fortran、Ada等多种编程语言。作为Linux系统的标准编译器&#xff0c;GCC以其强大的优化能力和…...

Java的Selenium的特殊元素操作与定位之iframe切换

iframe切换 四种切换方式: driver.switchTo().frame(index);driver.switchTo().frame(id);driver.switchTo().frame(name);driver.switchTo().frame(WebElement); 切换之后&#xff0c;回到默认内容页面(否则会找不到元素 driver.switchTo().defaultContent(); //iframe处…...

AI比人脑更强,因为被植入思维模型【42】思维投影思维模型

giszz的理解&#xff1a;本质和外在。我们的行为举止&#xff0c;都是我们的内心的表现。从外边可以看内心&#xff0c;从内心可以判断外在。曾国藩有&#xff17;个识人的方法&#xff0c;大部分的人在他的面前如同没穿衣服一样。对于我们自身的启迪&#xff0c;我认为有四点&…...

7-12 最长对称子串(PTA)

对给定的字符串&#xff0c;本题要求你输出最长对称子串的长度。例如&#xff0c;给定Is PAT&TAP symmetric?&#xff0c;最长对称子串为s PAT&TAP s&#xff0c;于是你应该输出11。 输入格式&#xff1a; 输入在一行中给出长度不超过1000的非空字符串。 输出格式&…...

嵌入式AI的本地化部署的好处

嵌入式AI本地化处理&#xff08;即边缘计算&#xff09;的核心优势在于将AI算力下沉至设备端&#xff0c;直接处理数据而非依赖云端&#xff0c;这种模式在多个维度上展现出显著价值&#xff1a; 一、数据隐私与安全性提升 1. 敏感数据本地存储 金融、医疗等涉及隐私的行业…...

0基础 | 硬件 | 电源系统 一

降压电路LDO 几乎所有LDO都是基于此拓扑结构 图 拓扑结构 LDO属于线性电源&#xff0c;通过控制开关管的导通程度实现稳压&#xff0c;输出纹波小&#xff0c;无开关噪声 线性电源&#xff0c;IoutIin&#xff0c;发热功率P电压差△U*电流I&#xff0c;转换效率Vo/Vi LDO不适…...

LeetCode详解之如何一步步优化到最佳解法:20. 有效的括号

LeetCode详解系列的总目录&#xff08;持续更新中&#xff09;&#xff1a; LeetCode详解之如何一步步优化到最佳解法&#xff1a;前100题目录&#xff08;更新中...&#xff09;-CSDN博客 LeetCode详解系列的上一题链接&#xff1a; LeetCode详解之如何一步步优化到最佳解法…...

LeetCode18四数之和

代码来源&#xff1a;代码随想录 /*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/ int com…...

《K230 从熟悉到...》无线网络

《K230 从熟悉到...》无线网络 STA模式 《庐山派 K230 从熟悉到...》无线网络 无线网络中通常是STA&#xff08;Station&#xff0c;站点&#xff09;和AP&#xff08;Access Point&#xff0c;无线接入点&#xff09;。 STA&#xff08;站点&#xff09; 定义&#xff1a;STA…...

去中心化指数(链上ETF)

去中心化指数&#xff08;链上ETF&#xff09; 核心概念 去中心化指数&#xff1a; 类似传统金融的ETF&#xff08;交易所交易基金&#xff09;&#xff0c;通过一篮子代币分散投资风险&#xff0c;无需主动管理。 核心价值&#xff1a;降低研究成本、分散风险、自动化资产…...

LeeCode题库第1695题

项目场景&#xff1a; 给你一个正整数数组 nums &#xff0c;请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子数组可获得的 最大得分 。 如果数组 b 是数组 a 的一个连续子序列&#xff0c;即如果它等于 a[l],…...

【LeetCode 热题100】23:合并 K 个升序链表(详细解析)(Go语言版)

&#x1f680; LeetCode 热题 23&#xff1a;合并 K 个升序链表&#xff08;详细解析&#xff09; &#x1f4cc; 题目描述 LeetCode 23. Merge k Sorted Lists 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合…...

LeetCode hot 100—删除链表的倒数第N个节点

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&…...

超级科学软件实验室(中国) : Super Scientific Software Laboratory (SSSLab)

Super Scientific Software Laboratory (SSSLab) gitee 官网...

2025大唐杯仿真1——车联网

车联网 V2N是指车辆与网络 Uu接口是用户设备&#xff08;UE&#xff09;与基站之间的通信接口&#xff0c;用于终端和基站之间的通信 Uu接口可用的是N41频段&#xff0c;归属中国移动 车辆间交互是V2V&#xff0c;频段是PCS PC5接口是一种用于设备间直接通信&#xff08;D2D…...

云资源合规基线:确保云环境安全与合规的完整指南

1. 引言 随着越来越多的企业将其IT基础设施迁移到云端,确保云资源的安全性和合规性变得至关重要。云资源合规基线是一套最佳实践和标准,旨在帮助组织维护安全、高效且符合法规要求的云环境。本文将深入探讨云资源合规基线的各个方面,为IT管理者和安全专业人士提供全面的指导。…...

1.0 软件测试全流程解析:从计划到总结的完整指南

软件测试全流程解析&#xff1a;从计划到总结的完整指南 摘要 本文档详细介绍了软件测试的完整流程&#xff0c;包括测试计划、测试设计、测试执行、测试报告和测试总结等主要阶段。每个阶段都从目标、主要工作、输出物和注意事项等方面进行了详细说明。通过本文档&#xff0…...