【Cesium】介绍及基础使用

文章目录

  • 一、Cesium 介绍
  • 二、 使用
    • 1、引入 cesium
    • 2、Viewer 配置选项
      • 1. 基础控件配置
      • 2. 场景与渲染配置
      • 3. 地形配置
      • 4. 天空与大气效果
    • 3、坐标系系统
      • 3.1 地理坐标系
      • 3.2 笛卡尔空间直角坐标系
      • 3.3 屏幕坐标系
    • 4、Entity 实体
      • 4.1 简介
      • 4.2 Entity 常见图形类型
        • Point 点
        • Polyline 线
        • Polygon 多边形
        • Label 文本
        • Billboard 广告牌
        • Model 模型
      • 4.3 DataSource 数据源
        • GeoJsonDataSource
        • KmlDataSource
        • CzmlDataSource
    • 5、Camera
      • 5.1 核心属性
      • 5.2 位置控制方法
        • 1. setView(options)
        • 2. flyTo(options)
        • 3. lookAt(target, offset)
      • 5.3 视角控制方法
      • 5.4 控制模式
      • 5.5 事件
    • 6、Scene
      • 6.1 常用属性
      • 6.2 常用方法
        • 1. pick
      • 6.3 事件

一、Cesium 介绍

CesiumJS 是一个开源 JavaScript 库,用于创建具有最佳性能、精度、视觉质量和易用性的世界级 3D 地球仪和地图

  • 官网: https://cesium.com/
  • 官方示例: https://sandcastle.cesium.com/
  • API文档: https://cesium.com/learn/cesiumjs/ref-doc/
  • Cesium 中文网: http://cesium.xin/

二、 使用

注:当前使用的是 1.132 版本

1、引入 cesium

两种方式引入:

  • 从 CDN 导入
  • 使用 NPM 安装

(1)使用 CDN,如下示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><script src="https://cesium.com/downloads/cesiumjs/releases/1.132/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.132/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
</head>
<body><div id="cesiumContainer"></div><script type="module">Cesium.Ion.defaultAccessToken = 'your_access_token';const viewer = new Cesium.Viewer('cesiumContainer');    </script></div>
</body>
</html>

(2)使用 npm

npm install cesium

使用示例:

import { Viewer } from 'cesium';
import "cesium/Build/Cesium/Widgets/widgets.css";const viewer = new Viewer('cesiumContainer');    

2、Viewer 配置选项

new Cesium.Viewer(container, options)

options所有可配选项:Cesium.Viewer.ConstructorOptions

1. 基础控件配置

  • animation
    Boolean,默认 true
    控制是否显示左下角的动画控件(播放/暂停/时间倍率调整)

  • baseLayerPicker
    Boolean,默认 true
    是否显示右上角的底图选择器(切换影像/地形)

  • fullscreenButton
    Boolean,默认 true
    是否显示全屏按钮

  • geocoder
    Boolean | Array,默认 true
    是否显示地理编码搜索框(支持地名搜索)

  • homeButton
    Boolean,默认 true
    是否显示"返回初始视角"按钮

  • infoBox
    Boolean,默认 true
    点击实体时是否显示信息框

  • sceneModePicker
    Boolean,默认 true
    是否显示场景模式切换按钮(3D/2D/哥伦布视图)

  • timeline
    Boolean,默认 true
    是否显示时间轴控件

  • navigationHelpButton
    Boolean,默认 true
    是否显示操作帮助按钮

2. 场景与渲染配置

  • scene3DOnly
    Boolean,默认 false
    设为true时所有几何体仅以3D模式渲染(节省GPU内存)

  • sceneMode
    Cesium.SceneMode,默认 SCENE3D
    初始场景模式(SCENE2D/SCENE3D/COLUMBUS_VIEW)

  • mapProjection
    MapProjection,默认 GeographicProjection
    2D/哥伦布视图使用的地图投影方式

  • shadows
    Boolean,默认 false
    是否启用光源阴影

  • terrainShadows
    ShadowMode,默认 RECEIVE_ONLY
    地形是否投射/接收阴影

  • requestRenderMode
    Boolean,默认 false
    是否启用按需渲染模式(减少资源占用)

3. 地形配置

  • terrainProvider
  • 示例:
    terrainProvider: await Cesium.createWorldTerrainAsync()
    

4. 天空与大气效果

  • skyBox
    SkyBox | false
    自定义星空背景,设为false可禁用

  • skyAtmosphere
    SkyAtmosphere | false
    是否显示地球大气层辉光效果

3、坐标系系统

3.1 地理坐标系

  • Cartographic
    • 表示 WGS84 弧度坐标系(经度、纬度、高度,单位为弧度)。
    • 使用 Cesium.Cartographic(longitude, latitude, height) 表示,其中经度和纬度为弧度值
    • 主要方法:
      • Cartographic.fromDegrees(longitude, latitude, height)(角度转弧度)
      • Cartographic.fromRadians(longitude, latitude, height)(直接使用弧度)
      • Cartographic.fromCartesian(cartesian3)(笛卡尔坐标转地理坐标)

3.2 笛卡尔空间直角坐标系

  • Cartesian3
    • 表示 3D 笛卡尔坐标(x, y, z),原点在地球中心。
      • X轴指向本初子午线(经度0°)与赤道(纬度0°)的交点
      • Z轴指向北极
      • Y轴与X、Z轴构成右手坐标系,指向东经90°与赤道的交点
    • 用于三维空间计算,如模型变换、相机控制等
    • 通过 Cesium.Cartesian3(x, y, z) 定义
    • 主要方法:
      • Cartesian3.fromDegrees(longitude, latitude, height)
        • 经纬度转笛卡尔坐标
      • Cesium.Cartesian3.fromDegreesArray(coordinates)
        • 返回一个 Cartesian3 位置数组,给定一个以度为单位给出的经度和纬度值数组
      • Cesium.Cartesian3.fromDegreesArrayHeights(coordinates)
        • 返回一个笛卡尔3位置数组,给定经度、纬度和高度值数组,其中经度和纬度以度为单位。
      • Cartesian3.fromRadians(longitude, latitude, height)
        • 弧度转笛卡尔坐标
      • Cartesian3.fromElements(x, y, z)(直接构造)

3.3 屏幕坐标系

  • 用于与屏幕交互的 2D 坐标系:
    • 原点在画布左上角
    • X轴向右,Y轴向下单位:像素
    • 使用 Cartesian2 表示

示例:

const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction((event) => {const screenPosition = event.position; // Cartesian2 类型console.log("点击屏幕坐标:", screenPosition.x, screenPosition.y);// 转换为世界坐标const ray = viewer.camera.getPickRay(screenPosition);const cartesian3Position = viewer.scene.globe.pick(ray, viewer.scene);  // Cartesian3 类型if (cartesian3Position) {console.log("对应的世界坐标:", cartesian3Position);}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

4、Entity 实体

4.1 简介

实体实例将多种形式的可视化聚合到单个高级对象中。
它们可以手动创建,并添加到数据源 Viewer#entities
或由数据源生成,例如 CzmlDataSource 和 GeoJsonDataSource 。

entity 配置选项文档:Entity.html#.ConstructorOptions

Entity 常用方法:
添加 Entity

const entity = viewer.entities.add({ /* 配置 */ });

移除 Entity

viewer.entities.remove(entity);

查找 Entity

const entity = viewer.entities.getById('unique-id');

集合操作

// 移除所有实体
viewer.entities.removeAll();// 显示/隐藏所有实体
viewer.entities.show = false;

4.2 Entity 常见图形类型

Point 点

属性文档: PointGraphics.html#.ConstructorOptions

示例:

viewer.entities.add({name: "RedPoint",position: Cesium.Cartesian3.fromDegrees(-75, 35),point: {show: true,pixelSize: 30,color: Cesium.Color.RED,},
});
Polyline 线

属性文档: PolylineGraphics.html#.ConstructorOptions

示例:

viewer.entities.add({name: "Red line on terrain",polyline: {positions: Cesium.Cartesian3.fromDegreesArray([-75, 35, -125, 35]),width: 5,material: Cesium.Color.RED,},
});

官方示例: Polyline 示例

Polygon 多边形

属性文档: PolygonGraphics.html#.ConstructorOptions

示例:

viewer.entities.add({name: "Red polygon",polygon: {hierarchy: Cesium.Cartesian3.fromDegreesArray([118.12, 24.69, 118.22, 24.69, 118.22, 24.79, 118.12, 24.79]),height: 10,material: Cesium.Color.RED.withAlpha(0.5),outline: true,outlineColor: Cesium.Color.BLUE,},
});

官方示例: Polygon 示例

Label 文本

属性文档: LabelGraphics.html#.ConstructorOptions

示例:

viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),label: {text: "Philadelphia",font: "24px Helvetica",fillColor: Cesium.Color.SKYBLUE,outlineColor: Cesium.Color.BLACK,outlineWidth: 2,style: Cesium.LabelStyle.FILL_AND_OUTLINE,scale: 2.0,showBackground: true,},
});
Billboard 广告牌

属性文档: BillboardGraphics.html#.ConstructorOptions

示例:

viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),billboard: {show: true,image: "./dist/assets/Cesium_Logo_Color.jpg",scale: 1,width: 100,height: 25,},
});

官方示例: Billboards 示例

Model 模型

Cesium 支持加载多种格式的 3D 模型,包括 glTF/GLB (推荐)、OBJ 等格式

属性文档: ModelGraphics.html#.ConstructorOptions

示例:

const entity =  viewer.entities.add({name: "air",position: Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706),model: {uri: './dist/SampleData/models/CesiumDrone/CesiumDrone.glb',minimumPixelSize: 128,maximumScale: 2000,},
});
viewer.zoomTo(entity);

官方示例: Models 示例

4.3 DataSource 数据源

GeoJsonDataSource

A DataSource 处理 GeoJSON 和 TopoJSON 数据

GeoJSON 介绍: 点击查看

示例:

viewer.dataSources.add(Cesium.GeoJsonDataSource.load('../../SampleData/ne_10m_us_states.topojson', {stroke: Cesium.Color.HOTPINK,fill: Cesium.Color.PINK,strokeWidth: 3,markerSymbol: '?'})
);

API文档: GeoJsonDataSource
官方示例: GeoJSON 和 TopoJSON

KmlDataSource

A DataSource 处理 Keyhole Markup Language 2.2 (KML)
KML 标准: https://www.ogc.org/standards/kml/

示例:

viewer.dataSources.add(Cesium.KmlDataSource.load("../SampleData/kml/facilities/facilities.kml",{camera: viewer.scene.camera,canvas: viewer.scene.canvas,},),
);

API文档: KmlDataSource
官方示例: KML 示例

CzmlDataSource

处理 DataSource CZML。
API文档: CzmlDataSource
官方示例: CZML Demo
CZML 指南: CZML-Guide
CZML Packet - CZML 文档/流中存在的标准内容的架构 /czml-writer/wiki/Packet

CZML 是 Cesium 的专有数据格式,具有以下特点:

  • 基于 JSON 的文本格式
  • 用于描述随时间变化的场景
  • 支持点、线、面、模型、标签等多种可视化元素
  • 支持时间动态属性(位置、颜色、大小等随时间变化)

示例:

const czml = [{id: "document",name: "Basic CZML billboard and label",version: "1.0",},{id: "some-unique-id",name: "AGI",billboard: {show: true,image: "./dist/assets/Cesium_Logo_Color.jpg",scale: 1,width: 100,height: 25,},position: {cartesian: [1216361.4096947117, -4736253.175342511, 4081267.4865667094], // },},{id: "some-unique-id2",name: "Label Demo",label: {show: true,text: "Label文本",font: "18px sans-serif",},position: {cartographicDegrees: [-91.17466499519793, 40.31480547471602, 0]},}
]
viewer.dataSources.add(Cesium.CzmlDataSource.load(czml));

5、Camera

官方API: https://cesium.com/learn/cesiumjs/ref-doc/Camera.html
相机由位置、方向和视锥体定义。
作用: 控制场景的观察视角和位置

5.1 核心属性

  • position: Cartesian3 相机位置
  • direction : Cartesian3 相机的观察方向
  • DEFAULT_VIEW_RECTANGLE:创建时相机将查看的默认矩形

示例:

// 获取相机位置
const position = viewer.camera.position;// 获取相机方向向量
const direction = viewer.camera.direction;// 设置全局默认视角为中国上空
// 在创建 Viewer 实例之前,设置默认的视图矩形区域
Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(75.0, // 西经 (West Longitude)0.0,  // 南纬 (South Latitude)140.0, // 东经 (East Longitude)60.0  // 北纬 (North Latitude)
);
const viewer = new Cesium.Viewer("cesiumContainer");

5.2 位置控制方法

1. setView(options)

设置相机位置、方向和变换。

options属性:

  • destination 摄像机在世界坐标中的最终位置或从自上而下视图可见的矩形。
  • orientation 包含方向和向上属性或航向、俯仰和滚动属性的对象。默认情况下,方向在 3D 视图中指向帧的中心,在哥伦布视图中指向负 z 方向。向上方向将在 3D 中指向当地北方,在哥伦布视图中指向正 y 方向。在无限滚动模式下,在 2D 中不使用方向
  • endTransform
  • convert

示例1:

viewer.camera.setView({destination : Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});

示例2:

viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(116.39, 39.91, 10000.0),orientation: {heading: Cesium.Math.toRadians(0.0),    // 偏航角pitch: Cesium.Math.toRadians(-90.0),    // 俯仰角roll: 0.0                               // 翻滚角}
});
2. flyTo(options)

将相机从当前位置飞行到新位置。
options:

  • destination 摄像机在世界坐标中的最终位置
  • orientation 包含方向和向上属性或航向、俯仰和滚动属性的对象
  • duration 飞行持续时间(以秒为单位)
  • complete 完成时要执行的函数
  • cancel 取消时要执行的函数

示例:

viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(116.39, 39.91, 2000.0),duration: 3.0,  // 飞行时间(秒)complete: function() {console.log('飞行完成');}
});
3. lookAt(target, offset)

使用目标和偏移设置相机位置和方向。目标必须以世界坐标给出

nametype描述
targetCartesian3世界坐标中的目标位置
offsetCartesian3|HeadingPitchRange以目标为中心的局部东西向上参考系中与目标的偏移量。

示例:

viewer.camera.lookAt(Cesium.Cartesian3.fromDegrees(116.39, 39.91, 1000.0), // 目标点new Cesium.HeadingPitchRange(0.0, -1.57, 1000.0)      // 相对偏移
);

5.3 视角控制方法

1. 旋转相机:
注: angle:旋转的角度,以弧度为单位

viewer.camera.rotate(axis, angle);  // 绕轴旋转
viewer.camera.rotateUp(angle);         // 向上旋转
viewer.camera.rotateDown(angle);       // 向下旋转
viewer.camera.rotateLeft(angle);       // 向左旋转
viewer.camera.rotateRight(angle);      // 向右旋转

2. 移动相机
注: amount: 移动的量,以米为单位

viewer.camera.move(direction, amount);  // 沿方向移动
viewer.camera.moveForward(amount);     // 向前移动
viewer.camera.moveBackward(amount);    // 向后移动
viewer.camera.moveUp(amount);          // 向上移动
viewer.camera.moveDown(amount);        // 向下移动
viewer.camera.moveLeft(amount);        // 向左移动
viewer.camera.moveRight(amount);       // 向右移动

3. 缩放
注: amount: 移动的量,以米为单位

viewer.camera.zoomIn(amount);          // 放大
viewer.camera.zoomOut(amount);         // 缩小

5.4 控制模式

// 获取相机控制器
const controller = viewer.scene.screenSpaceCameraController;// 配置控制参数
controller.enableRotate = true;        // 允许旋转
controller.enableTranslate = true;     // 允许平移
controller.enableZoom = true;          // 允许缩放
controller.enableTilt = true;          // 允许倾斜
controller.enableLook = true;          // 允许环视// 灵敏度设置
controller.zoomFactor = 2.0;           // 缩放灵敏度
controller.rotateFactor = 1.0;         // 旋转灵敏度

5.5 事件

// 相机移动事件
viewer.camera.moveStart.addEventListener(function() {console.log('相机开始移动');
});viewer.camera.moveEnd.addEventListener(function() {console.log('相机移动结束');
});

6、Scene

Cesium 场景中所有3D图形对象和状态的容器。通常,场景不是直接创建的;而是由CesiumWidget隐式创建。

官方API: https://cesium.com/learn/cesiumjs/ref-doc/Scene.html

Scene 的作用:

  • 管理场景中所有可视化对象(实体、图元、数据源等)
  • 控制渲染流程和渲染状态
  • 处理场景的视觉效果(光照、雾、大气等)
  • 管理相机和视图变换

Scene 的层级结构:

// Scene 包含的主要组件
const scene = viewer.scene;
const globe = scene.globe;           // 地球对象
const camera = scene.camera;         // 相机对象
const primitives = scene.primitives; // 图元集合
const groundPrimitives = scene.groundPrimitives; // 地面图元集合

6.1 常用属性

场景模式属性:

// 场景模式
scene.mode = Cesium.SceneMode.SCENE3D; // 3D模式
// scene.mode = Cesium.SceneMode.SCENE2D; // 2D模式
// scene.mode = Cesium.SceneMode.COLUMBUS_VIEW; // 哥伦布视图

globe(地球)
文档: Globe
示例:

viewer.scene.globe.show = false

Primitives(图元)
文档: PrimitiveCollection
示例:

viewer.scene.primitives.add(primitive); // 添加图元
scene.primitives.remove(primitive);   // 移除图元
scene.primitives.removeAll();         // 移除所有图元
scene.primitives.lowerToBottom(primitive); // 移动到底层
scene.primitives.raiseToTop(primitive);    // 移动到顶层

6.2 常用方法

1. pick

pick (windowPosition, width , height )
返回具有’ primitive’属性的对象,该对象包含场景中的第一个(顶部)基本体在特定的窗口坐标处
示例:

const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function(movement) {const feature = scene.pick(movement.endPosition);console.log('feature', feature)
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

对比 drillPick
pick :方法只返回鼠标位置最顶层的可见对象;如果多个对象重叠,只返回最上面的一个
drillPick:方法返回鼠标位置的所有对象(从顶层到底层);适合需要选择多个重叠对象的场景

6.3 事件

postRender
获取将在渲染场景后立即引发的事件。
活动订阅者接收Scene实例作为第一个参数,并接收当前时间作为第二个参数。

preRender
获取在场景更新之后以及场景渲染之前立即引发的事件。
事件的订阅者将Scene实例作为第一个参数,将当前时间作为第二个参数参数。

preUpdate
获取在更新或渲染场景之前将引发的事件。
活动订阅者接收Scene实例作为第一个参数,并接收当前时间作为第二个参数。

示例:

// 预渲染事件
scene.preRender.addEventListener(function(scene, time) {// 每帧渲染前执行console.log('预渲染:', scene);
});// 渲染后事件
scene.postRender.addEventListener(function(scene, time) {// 每帧渲染后执行console.log('渲染完成:', scene);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921383.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的运动服装销售系统【2026最新】

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【嵌入式DIY实例-ESP32篇】-倾斜弹跳球游戏

倾斜弹跳球游戏 文章目录 倾斜弹跳球游戏 1、MPU6050介绍 2、硬件准备与接线 3、代码实现 在这个交互式 ESP32 Arduino 项目中,我们模拟了一个绿色球体在全彩 ST7789 170320 LCD 屏幕上弹跳,完全由 MPU6050 陀螺仪的运动控制。当你倾斜传感器时,球体会呈现出逼真的物理运动,…

从spring MVC角度理解HTTP协议及Request-Response模式

什么是HTTP协议&#xff1f;HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种通信规则&#xff0c;它定义了客户端&#xff08;如浏览器、手机APP&#xff09; 和服务器 之间如何交换信息&#xff0c;是用于在万维网&#xff08;…

江协科技STM32学习笔记补充之003 :STM32复位电路的详细分析

电路作用与每个器件R1&#xff08;10 kΩ&#xff0c;上拉到 3V3&#xff09;让 NRST 在无外力时保持高电平&#xff1d;不复位&#xff1b;同时与电容形成 RC&#xff0c;决定上电复位延时。阻值不能太小&#xff08;否则调试器或芯片复位驱动下拉电流太大&#xff09;&#x…

Spring Boot HTTP状态码详解

Spring Boot HTTP状态码完全指南&#xff1a;从入门到精通 前言 在RESTful API开发中&#xff0c;HTTP状态码是与客户端通信的重要桥梁。Spring Boot通过HttpStatus枚举提供了完整的HTTP状态码支持。本文将深入解析这些状态码的含义、使用场景以及在Spring Boot中的最佳实践。 …

怎样让外网计算机访问局域网计算机?通过公网地址访问不同内网服务的设置方法

局域网服务器提供公网访问&#xff0c;或指定某些端口应用资源给外地访问&#xff0c;都是常见跨网通信需求。在一些场景下&#xff0c;内部网络中的服务器需要通过公网地址进行访问&#xff0c;尤其是在没有固定公网IP或需要在外部访问时。为了解决这一问题&#xff0c;可以使…

Spring Boot启动失败从循环依赖到懒加载配置的深度排查指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…

从零开始学大模型之大语言模型

大语言模型 4.1 什么是 LLM 在前三章&#xff0c;我们从 NLP 的定义与主要任务出发&#xff0c;介绍了引发 NLP 领域重大变革的核心思想——注意力机制与 Transformer 架构。随着 Transformer 架构的横空出世&#xff0c;NLP 领域逐步进入预训练-微调范式&#xff0c;以 Tran…

如何将视频从 iPhone 转移到 Mac

将视频从 iPhone 转移到 Mac 是许多用户常见的需求。无论你是想备份重要的视频&#xff0c;还是希望在更大的屏幕上观看&#xff0c;以下方法都能帮助你轻松完成。方法一&#xff1a;使用 iReaShare iPhone ManageriReaShare iPhone Manager 是一款功能强大的工具&#xff0c;可…

五、Docker 核心技术:容器数据持久化之数据卷

Docker 容器本身是无状态且生命周期短暂的。当一个容器被删除时&#xff0c;它在可写层产生的所有数据都会随之消失。这对于需要持久化存储数据的应用 (如数据库、日志系统、用户上传内容) 来说是不可接受的。为了解决这个问题&#xff0c;Docker 提供了多种数据持久化方案&…

前端视觉交互设计全解析:从悬停高亮到多维交互体系(含代码 + 图表)

在前端用户体验领域&#xff0c;视觉交互是连接用户与产品的 “隐形桥梁”—— 它通过可视化信号传递操作意图、反馈系统状态&#xff0c;直接决定用户对产品的感知。很多开发者对视觉交互的认知停留在 “鼠标悬停高亮”&#xff0c;但实际上&#xff0c;视觉交互是一个覆盖 “…

从零打造商业级LLMOps平台:开源项目LMForge详解,助力多模型AI Agent开发!

最近&#xff0c;我发现了一个超级实用的开源项目——LMForge-End-to-End-LLMOps-Platform-for-Multi-Model-Agents&#xff08;以下简称LMForge&#xff09;。这个项目是一个端到端的LLMOps&#xff08;Large Language Model Operations&#xff09;平台&#xff0c;专为多模型…

【C++练习】06.输出100以内的所有素数

目录输出100以内的所有素数方法1&#xff1a;基础判断法方法2&#xff1a;埃拉托斯特尼筛法&#xff08;效率更高&#xff09;方法3&#xff1a;优化版筛法&#xff08;只考虑奇数&#xff09;方法4&#xff1a;使用STL算法方法5&#xff1a;递归实现总结&#xff1a; 输出100以…

在开发中使用git rebase的场景

rebase介绍 一、背景 远程仓库有oh4w-dev和oh4k-dev两个分支&#xff0c;oh4k-dev是基于oh4w-dev开发到80%的代码新拉的分支&#xff1b;此后两条分支同步开发&#xff0c;当oh4k-dev开发完成&#xff0c;oh4w-dev还在开发阶段&#xff0c;oh4k-dev需要拉取到oh4w-dev自分出o…

TDengine 时序函数 NOW() 用户手册

TDengine NOW() 函数用户使用手册 目录 功能概述函数语法返回值说明技术特性使用场景及示例时间运算操作注意事项常见问题 功能概述 NOW() 函数是 TDengine 中的时间函数&#xff0c;用于获取客户端当前系统时间。该函数在时序数据库中特别有用&#xff0c;可以用于数据插入…

JavaWeb ——事务管理

文章目录事务管理事务回顾Spring事务管理事务进阶事务属性 - 回滚 rollbackFor事务属性 - 传播行为 propagationSpring框架第一大核心: IOC控制反转&#xff0c; 其第二大核心就是 AOP 面向切面编程 事务管理 事务回顾 Spring事务管理 # spring 事务管理日志 logging:level:org…

【跨国数仓迁移最佳实践8】MaxCompute Streaming Insert: 大数据数据流写业务迁移的实践与突破

本系列文章将围绕东南亚头部科技集团的真实迁移历程展开&#xff0c;逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第八篇&#xff0c;MaxCompute Streaming Insert&#xff1a; 大数据数据流写业务迁移的实践与突破。注&#xff1a;客户背景为东南…

2025-09-05 CSS4——浮动与定位

文章目录1 显示&#xff08;Display&#xff09;1.1 visibility:hidden1.2 display:none2 块和内联元素2.1 块元素2.2 内联元素2.3 改变元素的显示方式3 浮动&#xff08;Float&#xff09;3.1 float 属性3.2 clear 属性4 定位&#xff08;Position&#xff09;4.1 五种定位模式…

43这周打卡——生成手势图像 (可控制生成)

目录 前言 1.导入数据及数据可视化 2.构建模型 3.训练模型 4.模型分析并生成指定图像 总结 前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.导入数据及数据可视化 from torchvision import data…

TDengine 时间函数 TIMEDIFF() 用户手册

TDengine TIMEDIFF() 函数详细使用手册 目录 功能概述函数语法参数说明返回值说明版本变更说明技术特性使用场景及示例时间单位处理数据类型兼容性注意事项常见问题最佳实践 功能概述 TIMEDIFF() 函数用于计算两个时间戳的差值&#xff0c;返回 expr1 - expr2 的结果。结果…