游戏开发的TypeScript(4)TypeScript 的一些内置函数
在 TypeScript 中,内置函数分为两类:JavaScript 原生函数(TypeScript 继承)和TypeScript 特有函数(类型系统相关)。以下是详细分类介绍:
一、JavaScript 原生函数
TypeScript 继承了所有 JavaScript 内置对象和方法,按对象分类如下:
1. 全局对象函数
// 类型转换
const num: number = parseInt("10", 10); // 10
const float: number = parseFloat("3.14"); // 3.14
const str: string = String(42); // "42"
const bool: boolean = Boolean(0); // false// 数学运算
const abs: number = Math.abs(-5); // 5
const pow: number = Math.pow(2, 3); // 8
const random: number = Math.random(); // 0-1 随机数// 日期处理
const now: Date = new Date();
const year: number = now.getFullYear(); // 当前年份
const formatted: string = now.toISOString(); // 格式化日期
2. 数组方法
const arr: number[] = [1, 2, 3];// 遍历与转换
const doubled: number[] = arr.map(x => x * 2); // [2, 4, 6]
const filtered: number[] = arr.filter(x => x > 1); // [2, 3]
const sum: number = arr.reduce((acc, x) => acc + x, 0); // 6// 查找与判断
const found: number | undefined = arr.find(x => x === 2); // 2
const hasEven: boolean = arr.some(x => x % 2 === 0); // true
const allPositive: boolean = arr.every(x => x > 0); // true// 修改数组
const sliced: number[] = arr.slice(0, 2); // [1, 2]
const spliced: number[] = arr.splice(1, 1); // 删除索引1,返回 [2]
const joined: string = arr.join("-"); // "1-3"
3. 字符串方法
const str: string = "Hello, TypeScript!";const length: number = str.length; // 17
const subStr: string = str.substring(7, 11); // "Type"
const index: number = str.indexOf("Type"); // 7
const replaced: string = str.replace("Type", "JavaScript"); // "Hello, JavaScript!"
const upper: string = str.toUpperCase(); // "HELLO, TYPESCRIPT!"
const trimmed: string = " abc ".trim(); // "abc"
4. 对象方法
const obj = { a: 1, b: 2 };const keys: string[] = Object.keys(obj); // ["a", "b"]
const values: number[] = Object.values(obj); // [1, 2]
const entries: [string, number][] = Object.entries(obj); // [["a", 1], ["b", 2]]const cloned: typeof obj = Object.assign({}, obj); // 浅拷贝
const frozen: typeof obj = Object.freeze(obj); // 冻结对象
5. 异步函数
// Promise
const fetchData = (): Promise<string> => {return new Promise((resolve, reject) => {setTimeout(() => resolve("Data"), 1000);});
};// async/await
async function getData() {try {const data = await fetchData();return data;} catch (error) {console.error(error);}
}// 定时器
setTimeout(() => console.log("Delayed"), 1000);
const interval = setInterval(() => console.log("Every second"), 1000);
clearInterval(interval); // 清除定时器
二、TypeScript 特有函数
这些函数主要用于类型操作和编译时检查。
1. 类型守卫(Type Guards)
// typeof 守卫
function printValue(x: string | number) {if (typeof x === "string") {console.log(x.toUpperCase()); // x 被收窄为 string} else {console.log(x.toFixed(2)); // x 被收窄为 number}
}// instanceof 守卫
class Dog { bark() {} }
class Cat { meow() {} }function petSound(animal: Dog | Cat) {if (animal instanceof Dog) {animal.bark(); // animal 被收窄为 Dog} else {animal.meow(); // animal 被收窄为 Cat}
}// 用户自定义守卫
function isNumber(x: any): x is number {return typeof x === "number";
}
2. 类型断言(Type Assertion)
const value: any = "hello";
const length: number = (value as string).length; // 断言为 string// 非空断言
const element: HTMLElement | null = document.getElementById("app");
element!.innerHTML = "Hello"; // 断言 element 非空
3. 泛型函数
function identity<T>(arg: T): T {return arg;
}const num: number = identity(10);
const str: string = identity("hello");
4. 工具类型
// Partial<T> - 创建可选类型
type User = { name: string; age: number };
type PartialUser = Partial<User>; // { name?: string; age?: number }// Readonly<T> - 创建只读类型
type ReadonlyUser = Readonly<User>; // 所有属性只读// Pick<T, K> - 选取部分属性
type NameOnly = Pick<User, "name">; // { name: string }// Omit<T, K> - 排除部分属性
type AgeOnly = Omit<User, "name">; // { age: number }// Exclude<T, U> - 从 T 中排除 U
type NonNumber = Exclude<string | number, number>; // string
5. 装饰器(Decorators)
// 类装饰器
function log(target: Function) {console.log(`Class ${target.name} was created`);
}@log
class MyClass {}// 方法装饰器
function readonly(target: any, propertyKey: string, descriptor: PropertyDescriptor) {descriptor.writable = false;
}class Example {@readonlymethod() {}
}
三、DOM/Browser API
TypeScript 为浏览器环境提供了类型定义:
// DOM 操作
const element: HTMLElement | null = document.getElementById("app");
if (element) {element.textContent = "Hello";element.addEventListener("click", (event: MouseEvent) => {console.log(event.clientX);});
}// Fetch API
async function fetchData() {const response: Response = await fetch("https://api.example.com/data");const data: any = await response.json();return data;
}
四、其他实用函数
// 解构赋值
const { name, age } = { name: "Alice", age: 30 };// 扩展运算符
const arr1 = [1, 2];
const arr2 = [...arr1, 3]; // [1, 2, 3]// 可选链操作符
const user = { address: { city: "New York" } };
const city: string | undefined = user?.address?.city;// 空值合并操作符
const value: string = null ?? "default"; // "default"
在游戏中的使用举例
在H5游戏开发中,TypeScript 的内置函数和类型系统特性可大幅提升开发效率和代码质量。以下是内置函数在游戏开发中的具体应用场景及示例:
五、游戏开发中原生函数的应用
1. 数学与随机数(游戏逻辑)
// 生成随机位置
function getRandomPosition(min: number, max: number): number {return Math.random() * (max - min) + min; // 内置 Math.random
}// 计算两点间距离
function calculateDistance(x1: number, y1: number, x2: number, y2: number): number {return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); // 内置 Math.sqrt/pow
}// 角度转弧度(常用于旋转计算)
const angleInRadians: number = (45 * Math.PI) / 180; // 内置 Math.PI
2. 数组操作(实体管理)
class GameObject {constructor(public x: number, public y: number) {}
}const gameObjects: GameObject[] = [];// 添加对象
gameObjects.push(new GameObject(100, 200));// 更新所有对象位置
gameObjects.forEach(obj => {obj.x += 5; // 内置 Array.forEach
});// 过滤可见对象
const visibleObjects = gameObjects.filter(obj => obj.x > 0 && obj.x < 800); // 内置 Array.filter
3. 定时器与动画(游戏循环)
// 游戏主循环(使用 requestAnimationFrame)
function gameLoop(timestamp: number) {updateGameState();render();requestAnimationFrame(gameLoop); // 内置浏览器 API
}// 启动游戏
requestAnimationFrame(gameLoop);// 延迟执行(如技能冷却)
function activateSkill() {// 技能激活setTimeout(() => {// 冷却结束}, 3000); // 内置 setTimeout
}
4. 对象操作(配置管理)
// 游戏配置合并
const defaultConfig = {volume: 0.8,difficulty: "medium",graphics: "high"
};const userConfig = { difficulty: "hard" };const finalConfig = { ...defaultConfig, ...userConfig }; // 内置对象扩展
5. 类型系统(实体建模)
// 游戏角色接口
interface Character {name: string;health: number;attack(): void;
}// 实现类
class Warrior implements Character {constructor(public name: string, public health: number = 100) {}attack() {console.log(`${this.name} 挥剑攻击!`);}
}// 类型守卫(判断角色类型)
function isWarrior(character: Character): character is Warrior {return 'name' in character;
}
6. 泛型(组件复用)
// 通用状态管理器
class StateManager<T> {constructor(private state: T) {}getState(): T {return this.state;}setState(newState: Partial<T>): void {this.state = { ...this.state, ...newState };}
}// 使用示例
const playerState = new StateManager({ health: 100, level: 1 });
playerState.setState({ health: 80 }); // 更新部分状态
7. 装饰器(行为增强)
// 日志装饰器(记录方法调用)
function logMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {const originalMethod = descriptor.value;descriptor.value = function(...args: any[]) {console.log(`Calling ${propertyKey} with args: ${JSON.stringify(args)}`);return originalMethod.apply(this, args);};return descriptor;
}class Player {@logMethodattack(enemy: string) {console.log(`${this.name} attacks ${enemy}`);}
}
8. 工具类型(简化开发)
// 从接口创建可选配置
interface Weapon {name: string;damage: number;durability: number;
}type WeaponConfig = Partial<Weapon>; // 所有属性可选// 创建只读常量
const readonlyConfig: Readonly<WeaponConfig> = { name: "Sword", damage: 10 };
// readonlyConfig.damage = 20; // 错误:无法修改只读属性
六、DOM/Browser API 应用(前端游戏)
1. Canvas 渲染
// 获取 Canvas 上下文
const canvas = document.getElementById("gameCanvas") as HTMLCanvasElement;
const ctx = canvas.getContext("2d");// 绘制矩形(玩家)
function drawPlayer(x: number, y: number, width: number, height: number) {ctx.fillStyle = "blue";ctx.fillRect(x, y, width, height); // 内置 Canvas API
}// 监听键盘事件(控制玩家)
document.addEventListener("keydown", (event: KeyboardEvent) => {if (event.key === "ArrowRight") {// 向右移动}
});
2. 事件系统
// 自定义事件管理器
class EventEmitter {private listeners: { [event: string]: Function[] } = {};on(event: string, callback: Function) {if (!this.listeners[event]) this.listeners[event] = [];this.listeners[event].push(callback);}emit(event: string, ...args: any[]) {if (this.listeners[event]) {this.listeners[event].forEach(callback => callback(...args));}}
}// 使用示例
const gameEvents = new EventEmitter();
gameEvents.on("playerDeath", () => console.log("Game Over"));
七、异步操作(资源加载)
// 异步加载图片资源
async function loadImage(url: string): Promise<HTMLImageElement> {return new Promise((resolve, reject) => {const img = new Image();img.onload = () => resolve(img);img.onerror = reject;img.src = url;});
}// 并行加载多个资源
async function loadAssets() {const [background, playerSprite, enemySprite] = await Promise.all([loadImage("bg.png"),loadImage("player.png"),loadImage("enemy.png")]);// 资源加载完成后初始化游戏initGame(background, playerSprite, enemySprite);
}
八、实际游戏开发框架示例
1. Phaser 3 + TypeScript
import Phaser from "phaser";class MyGame extends Phaser.Scene {private player!: Phaser.Physics.Arcade.Sprite;constructor() {super("GameScene");}preload() {this.load.image("player", "assets/player.png"); // 内置加载器}create() {this.player = this.physics.add.sprite(400, 300, "player"); // 物理引擎this.physics.world.setBounds(0, 0, 800, 600); // 世界边界}update() {// 游戏逻辑更新if (this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.RIGHT).isDown) {this.player.setVelocityX(200); // 移动控制}}
}// 游戏配置
const config: Phaser.Types.Core.GameConfig = {type: Phaser.AUTO,width: 800,height: 600,physics: {default: "arcade",arcade: {gravity: { y: 200 }}},scene: [MyGame]
};// 启动游戏
new Phaser.Game(config);
总结
TypeScript 的内置函数涵盖了 JavaScript 的所有原生功能,并通过类型系统增强了安全性。主要分为:
JavaScript 原生函数:如 Array.map
、String.trim
、Promise
等。
类型系统函数:如类型断言、泛型、工具类型等。
装饰器与元编程:如类装饰器、方法装饰器。
DOM/Browser API:如 document.querySelector
、fetch
。
游戏开发中,TypeScript 的内置函数和特性主要用于:
数学计算:位置、碰撞检测、随机生成。
实体管理:使用数组方法处理游戏对象集合。
游戏循环:通过定时器和动画帧实现。
类型安全:利用接口、类和泛型构建健壮的游戏架构。
资源管理:异步加载和处理游戏资源。
渲染与交互:结合 DOM 和 Canvas API 实现可视化界面。
cocos creator,laya,egret,phase,threejs,对ts都有良好的支持,如果感兴趣可以去官方获取相关资料进一步学习。
相关文章:
游戏开发的TypeScript(4)TypeScript 的一些内置函数
在 TypeScript 中,内置函数分为两类:JavaScript 原生函数(TypeScript 继承)和TypeScript 特有函数(类型系统相关)。以下是详细分类介绍: 一、JavaScript 原生函数 TypeScript 继承了所有 Java…...
软考 系统架构设计师系列知识点之杂项集萃(52)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(51) 第82题 以下关于系统性能的叙述中,不正确的是()。 A. 常见的Web服务器性能评估方法有基准测试、压力测试和可靠性测试 B. 评价Web服务器的主…...
大连理工大学选修课——图形学:第五章 二维变换及二维观察
第五章 二维变换及二维观察 二维变换 基本几何变换 图形的几何变换是指对图形的几何信息经过平移、比例、旋转等变换后产生新的图形。 基本几何变换都是相对于坐标原点和坐标轴进行的几何变换。 平移变换 推导: x ′ x T x y ′ y T y xxT_x\\ yyT_y x′xT…...
观察者模式(Observer Pattern)详解
文章目录 1. 什么是观察者模式?2. 为什么需要观察者模式?3. 观察者模式的核心概念4. 观察者模式的结构5. 观察者模式的基本实现简单的气象站示例6. 观察者模式的进阶实现推模型 vs 拉模型6.1 推模型(Push Model)6.2 拉模型(Pull Model)7. 观察者模式的复杂实现7.1 在线商…...
复刻低成本机械臂 SO-ARM100 标定篇
视频讲解: 复刻低成本机械臂 SO-ARM100 标定篇 组装完机械臂后,要进行初始标定,参考github的markdown lerobot/examples/10_use_so100.md at main huggingface/lerobot 只有从臂,所以arms里面只填follower即可 python lerobot…...
idea创建springboot工程-指定阿里云地址创建工程报错
idea创建springboot工程-指定阿里云地址创建工程报错 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】࿱…...
OpenStack HA高可用集群Train版-0集群环境准备
OpenStack HA高可用集群Train版-0集群环境准备 目录 主机配置1.主机名2.网卡配置网卡UUID配置主机名解析配置免密登录防火墙相关配置时间同步配置 二、基础软件安装数据库构建数据库集群设置心跳检测clustercheck准备脚本创建心跳检测用户,(任意控制节点)检测配置文件每个控制节…...
Python3与Dubbo3.1通讯解决方案(dubbo-python)
【文章非VIP可读,如果发现阅读限制为系统自动修改阅读权限,请留言我改回】 概述 最近AI项目需要java与python通讯,两边都是比较新的版本。因此需要双方进行通讯,在这里记录一下所采用的方案和关键点。 JAVA调用Python python通…...
深入探索 Java 区块链技术:从核心原理到企业级实践
一、Java 与区块链的天然契合 1.1 区块链技术的核心特征 区块链作为一种分布式账本技术,其核心特征包括: 去中心化:通过 P2P 网络实现节点自治,消除对中央机构的依赖。不可篡改性:利用哈希链和共识机制确保数据一旦…...
NV214NV217美光闪存固态NV218NV225
NV214NV217美光闪存固态NV218NV225 在当今数据驱动的时代,固态硬盘(SSD)的性能直接决定了计算系统的效率上限。美光科技作为全球存储解决方案的领军者,其NV系列产品凭借尖端技术持续刷新行业标准。本文将围绕NV214、NV217、NV218、…...
第三方组件库:element-uiiviewVant
第三方组件库:element-ui 使用方法: 1.引入样式 <!-- 引入element-ui样式 --><link rel"stylesheet" type"text/css" href"http://unpkg.com/view-design/dist/styles/iview.css">2.引入vue <!-- 引入Vue …...
Qt实现 hello world + 内存泄漏(5)
文章目录 实现hello world的两种方式通过图形化的方式通过纯代码的方式1. 新老头文件的说明2.堆或栈上创建对象的选择3.QString的说明 内存泄漏问题 实现hello world的两种方式 通过图形化的方式 通过图形化的方式,在界面上创建出一个控件,显示出hello …...
13:图像处理—畸变矫正详解
1.制作标定板和描述文件 (用PS软件打印) * 0.00375 mark 点间距 , 不是 点的直径//倒数第二个就是描述文件 gen_caltab(7,7,0.00375,0.5,caltab_30mm.descr,30-30.ps) * 1 比 1 打印 。Photoshop 格式 2.把标定板调正 调正的目的是为了…...
Prompt compress 技术探究-LLMLingua
Prompt summary:是通过精心设计的提示词(prompt)引导大型语言模型(如 GPT-4)生成特定风格或结构的摘要。其目标不仅是压缩信息,还包括满足特定的格式要求、风格偏好或任务需求,所以和一般的文本…...
Python|Pyppeteer实现自动登录小红书(32)
前言 本文是该专栏的第32篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 本文中,笔者以小红书为例,基于Pyppeteer实现自动登录“小红书”。 需要注意的是,对Pyppeteer不太熟悉的同学,可往前翻阅本专栏前面介绍的Pyppeteer知识点,本专栏将带你了解并熟练使…...
Milvus(13):自定义分析器、过滤器
1 自定义分析器 1.1 标准标记符 Milvus 中的standard 令牌分割器根据空格和标点符号分割文本,适用于大多数语言。要配置使用standard 令牌转换器的分析器,请在analyzer_params 中将tokenizer 设置为standard 。 analyzer_params {"tokenizer&quo…...
调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则
调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则 苏勇 Andrew, 2025-05 最近在Keil中调试一款新的Cortex-M85内核MCU的SDK代码时,从原有其它芯片的工程中引入了汇编语言编写的启动代码和配套的sct文件,结果总是报错,清理到最后&#…...
SpringMVC——第五章:视图View
一、SpringMVC中视图的实现原理 1.Spring MVC视图支持可配置 在Spring MVC中,视图View是支持定制的,例如我们之前在 springmvc.xml 文件中进行了如下的配置: <!--视图解析器--> <bean id"thymeleafViewResolver" class…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.4 数据重复与去重(IDENTITY COLUMN/UNIQUE约束)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL数据分析实战:数据质量分析之数据重复与去重(IDENTITY COLUMN/UNIQUE约束)3.4 数据重复与去重3.4.1 数据重复的影响与识别3.4.…...
数据分析之药物-基因-代谢物
记录一下最近的数据分析过程: 假如我有一个Dataframe,有两列[Drug, Gene],我想构造一个矩阵,行名为Drug,列名为Gene,值为0或者1,其中0表示药物的靶点是该基因,0表示不是靶点。 &am…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.2 缺失值检测与处理(NULL值填充/删除策略)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 缺失值检测与处理全攻略:NULL值填充与删除策略实战3.2 缺失值检测与处理3.2.1 缺失值类型与业务影响3.2.1.1 缺失值的三种形态3.2.1.2 业务影响分级 3.2.2 缺失值…...
科普简洁版:同态加密——密码学的未来瑰宝
文章目录 一、同态加密的基本概念1.1 什么是同态加密1.2 同态加密的数学本质1.3 同态加密的类型 二、主要同态加密方案详解2.1 ElGamal加密2.2 Paillier加密2.3 Gentry的完全同态加密方案2.4 BGV方案2.5 BFV方案2.6 CKKS方案 三、同态加密的关键技术3.1 噪声管理技术3.2 多项式…...
时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解
时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解 目录 时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 WOA-MVMD鲸鱼算法优化多元变分模态分解时间序列信号分解 可直接运行 分解效果好 适合作为创…...
模型部署与提供服务
工具准备 FastApi (提供接口服务) LLamafactory(模型测试) AutoDL-SSH(隧道工具) 结构目录 app ├── api.sh ├── lawbot_infer.py ├── main.py ├── models.py ├── prompts │ ├── chat.jinja2 │ ├── prediction.jinja2 │…...
【Linux】深入理解程序地址空间
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:Linux 目录 前言 一、什么是程序地址空间 二、深入理解程序地址空间 1. 引例 2. 理解地址转化 3. 再谈程序地址空间 4. 补充知识 总结 前言 在现代操作系…...
基于AWS Marketplace的快速解决方案:从选型到部署实战
1. 引言:为什么选择AWS Marketplace? 在数字化转型的背景下,企业需要快速获取成熟的软件工具和服务以降低开发成本。AWS Marketplace 作为亚马逊云科技的官方应用商店,提供超过万款预配置的第三方和AWS原生解决方案,涵…...
Android 常用输入控件
一 控件名称 TextView二 示例代码 <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.a…...
ubuntu修改时区和设置24小时格式时间
这里写目录标题 一、修改时区二、设置24小时格式时间endl 一、修改时区 使用timedatectl命令更改当前时区为东八区[rootubuntu24-16:~]# timedatectl list-timezones | grep -i shanghai Asia/Shanghai [rootubuntu24-16:~]# timedatectl set-timezone Asia/Shanghai [rootubu…...
Android之Button、ImageButton、ChipGroup用法
一 控件名称及UI代码 Button、ImageButton、ChipGroup <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app=&qu…...
【中间件】brpc_基础_用户态线程中断
bthread之用户态线程中断 源码 1 简介 interrupt_pthread 核心功能是 通过信号机制中断阻塞的 pthread 线程,以实现线程的协作式中断。 2 核心功能与设计 2.1 信号选择与注册 信号选择:使用 SIGURG 作为中断信号。 原因:SIGURG 通常用于…...
MATLAB中tabulate函数——先验概率的简单估计
load fisheriris X meas(:,1:2); Y species; labels unique(Y); tabulate(Y)ValueCountPercentsetosa5033.33%versicolor5033.33%virginica5033.33%...
修复笔记:SkyReels-V2 项目中的 torch.load 警告
#工作记录 一、问题描述 在运行项目时,出现以下警告: FutureWarning: You are using torch.load with weights_onlyFalse (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pic…...
[特殊字符] 人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总) [特殊字符]
Large Language Model (LLM) 即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。 所谓 "语言模型",就是只用来处理语言文字(或者符号…...
自监督学习(Self-supervised Learning)李宏毅
目录 Self-supervised Learning简介: BERT : How to use BERT case1:sequence to class 语言积极性OR消极性判断 case2:sequence to sequence句子中的词语词性标注 case3:sequence2 to class两个句子是不是一个为前提一个为…...
数字化时代下,软件测试中的渗透测试是如何保障安全的?
在如今数字化与信息化的时代,软件测试中存在渗透测试,其位置十分重要,它借助模拟恶意攻击的方式,去发现软件系统所存在的漏洞以及安全问题,这是保障软件安全的关键环节,接下来我会对它的各个方面进行详细介…...
内容中台的AI中枢是什么?
智能算法与知识图谱融合引擎 现代内容中台的核心竞争力在于智能算法与知识图谱的深度融合,这种技术组合构建了动态演化的认知网络。通过将机器学习模型与领域知识图谱进行耦合,系统不仅能识别文本、图像、视频等多模态数据的关联特征,还能实…...
PostgreSQL 的 REINDEX 命令
PostgreSQL 的 REINDEX 命令 REINDEX 是 PostgreSQL 中用于重建索引的重要命令,它可以解决索引损坏、索引膨胀或性能下降等问题。 一 REINDEX 基本语法 -- 重建单个索引 REINDEX [ ( option [, ...] ) ] { INDEX | TABLE | SCHEMA } [ CONCURRENTLY ] name REIND…...
GNOME扩展:Bing壁纸
难点 网络请求(Soup) 下载文件(Soup) 读写设置(Gio.Settings) 源码 import GLib from "gi://GLib"; import Gio from gi://Gio; import St from gi://St; import Soup from gi://Soup;import { Extension } from resource:///org/gnome/shell/extensions/extens…...
BUUCTF——Fake XML cookbook
BUUCTF——Fake XML cookbook 进入靶场 只有一个登录框 先弱口令万能密码试一下吧 弱口令和万能密码都失败了 找其他突破口 F12看看 发现xml代码 function doLogin(){var username $("#username").val();var password $("#password").val();if(user…...
【数据结构】线性表--链表
【数据结构】线性表--链表 一.前情回顾二.链表的概念三.链表的实现1.链表结点的结构:2.申请新结点函数:3.尾插函数:4.头插函数:5.尾删函数:6.头删函数:7.在指定结点之前插入:8.在指定结点之后插…...
2022年第十三届蓝桥杯省赛B组Java题解
2022年第十三届蓝桥杯省赛B组Java题解 个人心得: 2022年蓝桥杯省赛Java B组共包含10道题目,其中填空题2道(A、B),编程题8道(C-J)。题目覆盖数论、字符串处理、动态规划、数据结构等核心知识点…...
【操作系统】死锁
1. 定义 死锁是指两个或多个进程(或线程)在执行过程中,因争夺资源而造成的一种僵局,每个进程都无限期地等待其他进程释放它们所持有的资源。在这种情况下,没有任何进程能够继续执行,除非有外部干预。 2. …...
Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题
本文提供一种解决 Buildroot SIGSTKSZ 报错途径 解决途径来源参考:Buildroot error when building with Ubuntu 21.10 其出现原因在于 GNU C Library 2.34 release announcement: Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _DYNAMIC_STACK_SIZE_SOU…...
postgresql数据库基本操作
1. 连接 PostgreSQL 数据库 首先,使用 psql 命令行工具连接到数据库。如果是本地连接,命令格式如下: psql -U postgres -d <数据库名称> -h <主机地址>其中: -U postgres:表示以 postgres 用户身份登录…...
【运维】构建基于Python的自动化运维平台:用Flask和Celery打造高效管理工具
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着企业IT基础设施的复杂性不断增加,手动运维已无法满足高效管理的需求。本文详细介绍如何基于Python构建一个自动化运维平台,利用Flask…...
ES6入门---第三单元 模块三:async、await
async function fn(){ //表示异步:这个函数里面有异步任务 let result await xxx //表示后面结果需要等待 } 读取文件里数据实例: const fs require(fs);//简单封装 fs封装成一个promise const readFile function (fileName){return…...
洛谷 P2866 [USACO06NOV] Bad Hair Day S
题目描述 农夫约翰有 N 头奶牛正在过乱头发节。 每一头牛都站在同一排面朝右,它们被从左到右依次编号为 1,2,⋯,N。编号为 i 的牛身高为 hi。第 N 头牛在最前面,而第 1 头牛在最后面。 对于第 i 头牛前面的第 j 头牛,如果 hi>hi1…...
TS 变量类型生成
TS简单类型注解 let count:number 15 let myName:string MIO let isLoading:boolean false let a:null null let b:undefined undefined let s:symbol Symbol()console.log(hello ts)TS数组类型 数组类型两种写法: 问题:数组中只能存在单一类型数…...
工业大模型:从设备诊断到工艺重构
引言 工业大模型正在引发制造业认知革命。据埃森哲研究,到2026年全球工业大模型市场规模将突破280亿美元,其中工艺优化应用占比达42%。本文将系统解析工业大模型的"预训练-领域适配-应用落地"技术路径,并通过设备健康诊断与工艺参数生成的实践案例,展示如何构建…...
【项目篇之统一内存操作】仿照RabbitMQ模拟实现消息队列
我们的操作分为两种,一种是在内存上进行统一的操作,一种是在硬盘上面操作,今天我写的文章是编写了一个MemoryDataCenter类来实现了 在内存上面的统一操作: 实现统一内存操作 如何使用内存来组织数据 创建一个类来统一管理内存上的…...