Cesium 核心思想及基础概念应用
文章目录
- Cesium 基础理解(一)
- 1. 场景(Scene)
- 2. 查看器(Viewer)
- 3. 相机(Camera)
- 4. 实体(Entity)
- 5. 图元(Primitive)
- 6. 数据加载与解析
- 7. 时间系统(TimeLine & Clock)
- 8. 坐标系与变换
- 9. 材质与着色器
- 10. 交互与事件
- 11. 性能优化
- 12. 扩展与插件
- 总结
- Scene、Camera 和 Viewer 相关介绍
- 三者之间的关系
- 1. `Viewer`
- 2. `Scene`
- 3. `Camera`
- 正确运用和理解
- 1. `Viewer` 的运用
- 2. `Scene` 的运用
- 3. `Camera` 的运用
- 实体(Entity) 与 图元(Primitive)
- 一、核心定义与区别
- 二、实体(Entity)
- **1. 核心作用**
- **2. 典型应用场景**
- **3. 示例代码**
- 三、图元(Primitive)
- **1. 核心作用**
- **2. 典型应用场景**
- **3. 示例代码**
- 四、如何选择?
- 五、关键补充
- Entity 或 Primitive 之 DataSource 与 Group
- 一、核心概念对比
- 二、数据源(DataSource)与实体的关系
- **1. 数据源的作用**
- **2. 实体与数据源的绑定**
- **3. 关键特点**
- 三、分组(Group)与实体/图元的关系
- **1. 分组的作用**
- **2. 实体分组**
- **3. 图元分组(GroupPrimitive)**
- **4. 关键特点**
- 四、四者关系总结
- 五、典型应用场景
- 六、注意事项
Cesium 基础理解(一)
1. 场景(Scene)
- 作用:负责渲染三维地球、地图、实体和其他可视化元素。
- 功能:管理光照、阴影、雾效、大气效果等渲染属性。
2. 查看器(Viewer)
- 作用:封装了常用的交互界面(如地图控制、时间轴、图层管理),提供快速初始化应用的入口。
- 功能:包含相机控制、全屏切换、数据加载等预设功能。
3. 相机(Camera)
- 作用:控制视角的位置、方向和投影方式(如透视投影或正交投影)。
- 功能:支持自由飞行、路径动画、固定视角等模式。
4. 实体(Entity)
- 作用:用于在场景中添加几何对象(点、线、面、模型等),并绑定属性(如颜色、标签、时间动态)。
- 示例:飞机轨迹、建筑模型、气象数据标记等。
5. 图元(Primitive)
- 作用:底层渲染对象,直接操作几何数据(如三角形网格),适合高性能需求场景。
- 优化:支持分层细节(LOD)和实例化渲染。
6. 数据加载与解析
- 支持格式:GeoJSON、KML、CZML(Cesium 自定义时间序列格式)、3D Tiles(大规模三维模型)等。
- 数据源:通过
DataSource管理外部数据的加载、更新和可视化。
7. 时间系统(TimeLine & Clock)
- 作用:管理时间轴动画,支持动态数据(如车辆轨迹、气象变化)的时间驱动展示。
- 功能:时间缩放、关键帧控制、实时数据同步。
8. 坐标系与变换
- 核心类:
Cartesian3(三维坐标)、Cartographic(经纬度高度)、Transforms(坐标系转换)。 - 投影:墨卡托投影(Web Mercator)、地理坐标系(WGS84)等。
9. 材质与着色器
- 作用:自定义对象外观,支持纹理、颜色渐变、动态效果(如流光、闪烁)。
- 扩展:通过 GLSL 着色器实现复杂视觉效果(如水体涟漪、热力图)。
10. 交互与事件
- 作用:处理鼠标、键盘、触摸等输入事件,支持自定义交互逻辑。
- 示例:点击查询实体属性、拖拽调整相机位置。
11. 性能优化
- 技术:层次细节(LOD)、延迟加载、异步渲染、WebGL 优化。
- 工具:性能分析器(Profiler)帮助定位瓶颈。
12. 扩展与插件
- 生态:支持第三方库(如 Three.js 模型导入)和自定义插件(如数据可视化工具)。
- 社区资源:Cesium Sandcastle 提供丰富的代码示例。
总结
Cesium 通过上述核心元素,结合 WebGL 的高性能渲染能力,实现了三维地理信息的动态可视化与交互。开发者可根据需求灵活组合这些组件,构建从简单地图到复杂三维场景的应用。
Scene、Camera 和 Viewer 相关介绍
三者之间的关系
1. Viewer
Viewer 是 Cesium 中用于快速搭建三维地理信息系统应用的高级封装对象。它就像是一个完整的应用容器,初始化时会自动创建很多必要的组件,其中就包括 Scene 和 Camera。它为用户提供了一个包含地图控件、时间轴、图层管理等交互界面的完整应用环境。
2. Scene
Scene 是 Cesium 中负责渲染三维场景的核心对象。它管理着场景中的所有元素,比如地球、地形、模型、实体等,同时也处理光照、阴影、大气效果等渲染相关的属性。Viewer 在创建时会自动初始化一个 Scene 对象,用户可以通过 Viewer.scene 来访问这个场景。
3. Camera
Camera 控制着场景的视角,决定了用户从哪个位置、以什么方向和投影方式来观察场景。Viewer 同样会自动创建一个 Camera 对象,用户可以通过 Viewer.camera 来访问它。Camera 是 Scene 的一部分,它的状态变化会直接影响 Scene 的渲染结果。
可以简单理解为,Viewer 是一个完整的应用窗口,Scene 是这个窗口里展示的具体内容,而 Camera 则是观察这个内容的“眼睛”。
正确运用和理解
1. Viewer 的运用
Viewer 适用于快速搭建一个功能较为完整的三维地理信息系统应用。以下是一个简单的示例代码:
// 创建一个 Viewer 实例,它会自动初始化场景和相机
var viewer = new Cesium.Viewer('cesiumContainer');// 可以通过 viewer 来添加数据,例如添加一个 KML 文件
var kmlOptions = {camera: viewer.scene.camera,canvas: viewer.scene.canvas
};
viewer.dataSources.add(Cesium.KmlDataSource.load('path/to/your.kml', kmlOptions));
在这个示例中,我们创建了一个 Viewer 实例,并将其挂载到 cesiumContainer 这个 HTML 元素上。然后通过 viewer.dataSources.add 方法添加了一个 KML 文件。
2. Scene 的运用
Scene 主要用于管理场景的渲染属性和元素。以下是一些常见的操作示例:
// 获取 Viewer 中的 Scene 对象
var scene = viewer.scene;// 设置场景的光照模式
scene.globe.enableLighting = true;// 禁用大气效果
scene.skyAtmosphere.show = false;// 在场景中添加一个实体
var entity = viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),point: {pixelSize: 10,color: Cesium.Color.YELLOW}
});
在这个示例中,我们通过 viewer.scene 获取了 Scene 对象,然后设置了光照模式和大气效果,最后在场景中添加了一个实体。
3. Camera 的运用
Camera 主要用于控制视角。以下是一些常见的相机操作示例:
// 获取 Viewer 中的 Camera 对象
var camera = viewer.camera;// 设置相机的位置和方向
camera.setView({destination: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 5000),orientation: {heading: Cesium.Math.toRadians(0.0),pitch: Cesium.Math.toRadians(-15.0),roll: 0.0}
});// 相机飞行到指定位置
camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(-122.4175, 37.655, 5000),duration: 5 // 飞行时间为 5 秒
});
在这个示例中,我们通过 viewer.camera 获取了 Camera 对象,然后设置了相机的位置和方向,最后让相机飞行到指定位置。
综上所述,Viewer 提供了一个便捷的应用入口,Scene 负责场景的渲染管理,Camera 控制视角。在实际开发中,你可以根据需求灵活运用这三个对象来构建丰富的三维地理信息系统应用。
在 Cesium 中,Scene、Camera 和 Viewer 是三个非常重要的概念,下面为你详细介绍它们之间的关系以及如何正确运用和理解。
实体(Entity) 与 图元(Primitive)
在 Cesium 中,实体(Entity) 和 图元(Primitive) 是用于在三维场景中渲染几何对象的两种核心方式,它们的设计目标和应用场景有所不同。以下是它们的详细对比:
一、核心定义与区别
| 特性 | 实体(Entity) | 图元(Primitive) |
|---|---|---|
| 抽象层级 | 高层封装,提供简单易用的 API(如点、线、面、模型等) | 底层渲染对象,直接操作几何数据(如三角形网格) |
| 使用场景 | 快速开发、简单数据可视化(如标记点、路径、建筑模型等) | 高性能需求、复杂几何处理(如大规模地形、3D Tiles 模型、自定义着色器效果) |
| 灵活性 | 预设属性丰富(颜色、标签、动画等),但自定义能力有限 | 需手动管理几何数据和渲染参数,支持高度定制(如自定义着色器、顶点属性) |
| 性能 | 中等(适用于中小规模数据) | 更高(通过分层细节 LOD、实例化渲染等优化) |
二、实体(Entity)
1. 核心作用
- 快速创建几何对象:通过
viewer.entities.add()方法直接添加点、线、面、模型等。 - 封装常用属性:内置颜色、透明度、标签、时间动态等属性,无需手动处理底层渲染。
2. 典型应用场景
- 数据标注:在地图上标记兴趣点(POI)。
- 路径展示:飞机或车辆的移动轨迹。
- 简单模型加载:如 KML/KMZ 文件中的建筑模型。
3. 示例代码
// 添加一个点实体
var pointEntity = viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(-122.4175, 37.7749), // 经纬度坐标point: {pixelSize: 12, // 点的大小color: Cesium.Color.RED, // 颜色outlineColor: Cesium.Color.WHITE, // 描边颜色outlineWidth: 2 // 描边宽度},label: {text: "San Francisco", // 标签文本font: "14px sans-serif",verticalOrigin: Cesium.VerticalOrigin.BOTTOM}
});
三、图元(Primitive)
1. 核心作用
- 底层渲染控制:直接操作几何数据(顶点、索引、材质等),适合高性能场景。
- 复杂效果支持:通过自定义着色器实现动态纹理、水体涟漪等高级效果。
2. 典型应用场景
- 大规模三维模型:如 3D Tiles 格式的城市模型。
- 地形与地质数据:分层细节(LOD)优化的地形渲染。
- 自定义可视化:热力图、动态流线等复杂数据可视化。
3. 示例代码
// 创建一个立方体图元
var cubeGeometry = Cesium.GeometryPrimitives.createBoxGeometry({length: 100000,width: 100000,height: 100000
});var cubePrimitive = new Cesium.GeometryPrimitive({geometry: cubeGeometry,appearance: new Cesium.MaterialAppearance({material: Cesium.Material.fromType('Color', {color: Cesium.Color.BLUE.withAlpha(0.5)})}),asynchronous: false
});viewer.scene.primitives.add(cubePrimitive);
四、如何选择?
-
优先使用实体(Entity):
- 开发效率优先,快速验证功能。
- 数据量较小,无需复杂渲染逻辑。
-
使用图元(Primitive):
- 处理大规模数据(如城市级 3D 模型)。
- 需要自定义着色器或精细控制渲染性能。
- 实现复杂可视化效果(如动态流体、自定义光照)。
五、关键补充
- 实体与图元的关系:Cesium 的
Entity本质上是对Primitive的封装,通过Entity添加的对象最终会被转换为Primitive进行渲染。 - 性能优化:
Primitive支持分层细节(LOD)、实例化渲染(Instancing)等技术,适合处理百万级以上的几何对象。 - 扩展能力:
Primitive允许直接操作 WebGL 资源,适合与 Three.js 等 3D 库结合使用。
通过合理选择实体和图元,可以兼顾开发效率与渲染性能,构建高效的三维地理信息应用。
Entity 或 Primitive 之 DataSource 与 Group
在 Cesium 中,实体(Entity) 和 图元(Primitive) 是三维场景的核心渲染对象,而 数据源(DataSource) 和 分组(Group) 则是用于组织和管理这些对象的重要概念。以下是它们之间的关系及正确运用方式:
一、核心概念对比
| 概念 | 作用 | 与实体/图元的关系 |
|---|---|---|
| 数据源(DataSource) | 管理数据加载、解析和组织的容器(如 KML、GeoJSON、自定义数据) | 实体的容器,通过 datasource.entities 管理一组实体,图元不直接关联数据源 |
| 分组(Group) | 逻辑或物理上的对象集合,用于批量操作(如隐藏、移动、设置统一属性) | 可包含实体或图元,通过 viewer.entities.addCollection() 或 scene.primitives.add() 管理 |
二、数据源(DataSource)与实体的关系
1. 数据源的作用
- 数据加载:从外部文件(如 KML、GeoJSON)或自定义数据格式加载实体。
- 生命周期管理:通过
viewer.dataSources.add()添加数据源,自动处理数据的解析、更新和释放。 - 统一控制:通过
datasource.visible开关整个数据源的可见性。
2. 实体与数据源的绑定
// 创建数据源并添加实体
const dataSource = new Cesium.CustomDataSource('My Data');
const entity = dataSource.entities.add({position: Cesium.Cartesian3.fromDegrees(117.267, 31.861), // 合肥坐标point: { color: Cesium.Color.RED }
});// 添加数据源到场景
viewer.dataSources.add(dataSource);
3. 关键特点
- 动态更新:数据源支持实时更新实体属性(如位置、颜色)。
- 性能优化:通过
datasource.isLoading控制加载状态,避免阻塞主线程。
三、分组(Group)与实体/图元的关系
1. 分组的作用
- 逻辑组织:将多个实体或图元归为一类(如“城市建筑”、“交通路线”)。
- 批量操作:统一设置属性(如透明度)、隐藏/显示、删除。
- 性能优化:通过
GroupPrimitive合并图元,减少渲染调用。
2. 实体分组
// 创建实体分组
const group = new Cesium.EntityCollection();
group.add({position: Cesium.Cartesian3.fromDegrees(117.267, 31.861),point: { color: Cesium.Color.BLUE }
});// 添加分组到场景
viewer.entities.addCollection(group);
3. 图元分组(GroupPrimitive)
// 创建多个图元并合并为GroupPrimitive
const primitives = [primitive1, primitive2, primitive3];
const groupPrimitive = new Cesium.GroupPrimitive({ primitives });// 添加到场景
viewer.scene.primitives.add(groupPrimitive);
4. 关键特点
- 层次化管理:分组可嵌套(如城市分组包含建筑分组、道路分组)。
- 实例化渲染:
GroupPrimitive支持实例化,提升大规模图元渲染效率。
四、四者关系总结
-
数据源 → 实体
- 数据源是实体的容器,通过
datasource.entities管理一组实体。 - 示例:加载 KML 文件生成多个实体,存入同一个数据源。
- 数据源是实体的容器,通过
-
分组 → 实体/图元
- 分组是独立于数据源的集合,可包含任意实体或图元。
- 示例:将多个实体(来自不同数据源)放入同一分组,统一设置透明度。
-
图元与数据源的间接关联
- 图元不直接关联数据源,但实体最终会被转换为图元渲染(通过
Entity#primitive属性)。
- 图元不直接关联数据源,但实体最终会被转换为图元渲染(通过
五、典型应用场景
| 场景 | 使用方式 |
|---|---|
| 加载 KML 文件 | 使用 KmlDataSource 加载,自动生成实体并关联到数据源 |
| 管理动态数据 | 通过数据源的 entities 集合实时增删实体,保持数据一致性 |
| 优化大规模渲染 | 将相似图元合并为 GroupPrimitive,减少 WebGL 绘制调用 |
| 分层可视化 | 按业务逻辑创建分组(如“行政区”、“水系”),通过 viewer.entities 控制可见性 |
六、注意事项
-
数据源 vs 分组
- 数据源侧重数据加载和生命周期管理,分组侧重对象组织和操作。
- 一个数据源可包含多个分组,一个分组可包含多个数据源的实体。
-
性能优化
- 避免在同一分组中混合大量实体和图元,优先使用
GroupPrimitive合并图元。 - 通过
viewer.entities或scene.primitives的removeAll()及时释放资源。
- 避免在同一分组中混合大量实体和图元,优先使用
通过合理使用数据源和分组,可以高效管理三维场景中的实体和图元,提升开发效率和渲染性能。
相关文章:
Cesium 核心思想及基础概念应用
文章目录 Cesium 基础理解(一)1. 场景(Scene)2. 查看器(Viewer)3. 相机(Camera)4. 实体(Entity)5. 图元(Primitive)6. 数据加载与解析…...
vue中的 拖拽
拖拽总结 实现方式特点适用场景HTML5 原生拖拽 API✅ 直接使用 dataTransfer 进行数据传输 ✅ 兼容性好(大部分浏览器支持) ✅ 适合简单的拖拽场景低代码平台、表单生成器、组件拖拽Vue/React 组件库(如 Vue Draggable、SortableJSÿ…...
Linux进程间通信(1)
1.IPC 1.什么是IPC? Inter Process Communication 2.进程间通信常用的几种方式 1,管道通信:有名管道,无名管道 2,信号- 系统开销小 3,消息队列-内核的链表 4,信号量-计数器 5,共享…...
Scala相关知识学习总结3
包 - 包声明:和Java类似,作用是区分同名类、管理类命名空间。Scala包名只能含数字、字母等,不能数字开头、不能用关键字。 - 包说明:有类似Java的包管理风格,也有独特嵌套风格。嵌套风格有两个特点,一是&…...
Opencv计算机视觉编程攻略-第七节 提取直线、轮廓和区域
第七节 提取直线、轮廓和区域 1.用Canny 算子检测图像轮廓2.用霍夫变换检测直线;3.点集的直线拟合4.提取连续区域5.计算区域的形状描述子 图像的边缘区域勾画出了图像含有重要的视觉信息。正因如此,边缘可应用于目标识别等领域。但是简单的二值边缘分布图…...
中和农信:让金融“活水”精准浇灌乡村沃土
2025年政府工作报告首提“投资于人”概念,并22次提及“金融”,强调要着力抓好“三农”工作,深入推进乡村全面振兴;一体推进地方中小金融机构风险处置和转型发展;扎扎实实落实促进民营经济发展的政策措施,切…...
背包DP总结
牛客周赛 Round 81 E.建筑入门 知识点:完全背包,完全背包的路径转移以及回溯 由题意可以推导出,下层麻将的数字一定大于上层数字,所以我们可以假设一个最基础的麻将塔,也就是: 1 2 2 3 3 3 … 形如这样的&…...
Labview信号采集与多功能分析系统(可仿真)
1.摘要 《Labview信号采集与多功能分析系统》可以实时分析信号的时域特征,例如信号的均值、方差、峰值、峭度等。系统可以进行信号的自相关与互关分析。此系统也可以分析信号的频域特征,包括快速傅里叶变换后的时频特征、短时傅里叶变换STFT后的时频域特…...
【C#使用S7.NET库读取和写入西门子PLC变量】
C#使用S7.NET库读取和写入西门子PLC变量 前言使用S7.NET库读取使用S7.NET库写入 前言 本来想用Wincc的接口给读和写Wincc,但是速度实在太感人了,所以不如直接读和写PLC的变量,这种方式速度瞬间快了不知道多少倍(经测试4000个变量…...
蓝桥杯 游戏 6251 单调队列
传送门 0游戏 - 蓝桥云课 有了单调队列,在求解答案时:当我们需要对最大值的列表和最小值的列表进行俩俩组合,如果直接用两个f0r循环进行匹配,那么时间复杂度太大,容易超时。我们可以进行一个推导,假设最大…...
[250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
目录 Paozhu 发布 1.9.0:C Web 框架,快速开发,比肩脚本语言DeaDBeeF 音乐播放器发布 1.10.0 版本! Paozhu 发布 1.9.0:C Web 框架,快速开发,比肩脚本语言 Paozhu (炮竹🧨) 是一个功…...
einsum函数
理解专家并行,需要了解einsum函数 import torch# 设置输入张量的维度:s 3 tokens, e 2 experts, c 2 capacity, m 4 embedding dim s, e, c, m 3, 2, 2, 4# 1. 输入 token 的嵌入向量 (s, m) reshaped_input torch.tensor([[1.0, 1.0, 1.0, 1.0],…...
gitee 配置git上传
Git入门?查看 帮助 , Visual Studio / TortoiseGit / Eclipse / Xcode 下如何连接本站, 如何导入仓库 简易的命令行入门教程: Git 全局设置: 以 176fuguM2项目为例 git config --global user.name "堕落圣甲虫" git config --global user.email "11…...
【电子通识】为什么电子元件的规格书常常要看英文版本
在我们查看电子器件规格书的时候,如果有中文版本和英文版本两种供我们选择,那我们常常需要查看英文版本,大家有想过这是为什么吗? 为什么英文规格书很重要? 电子元件规格书(Datasheet)常以英文版…...
Scala基础知识5
面向对象 Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的。 Scala 中语法和 Java 不同,补充了更多的功能。 1.Scala包 基本语法:package 包名 Scala 包的三大作用(和 Java 一样) 1.区分相同名字的类。 2.当类很多…...
【图像处理基石】什么是RAW格式?
在图像处理中,RAW格式是一种未经处理、记录了相机传感器原始数据的图像文件格式。它保留了相机传感器捕捉到的全部原始信息,未经任何压缩或处理,因此被称为“原始数据”(Raw)。以下是关于RAW格式的详细解释:…...
AI Agent 实战:搭建个人在线旅游助手
AI Agent 实战:搭建个人在线旅游助手 本次实验中,我们将继续探索 Agent 的提示词,学习更加规范的提示词撰写方法。 本实验中你将掌握的知识点 使用 Dify 构建 Agent 的方法结构化的提示词撰写技巧变量的使用方法 1. 准备 在新建 Agent 之…...
【JavaScript】十四、轮播图
文章目录 实现一个轮播图,功能点包括: 自动播放鼠标经过暂时播放鼠标离开继续播放点击切换按钮手动切换 div盒子嵌套先写出静态HTML,再使用JS来修改样式和数据,渲染页面: <!DOCTYPE html> <html lang"…...
2025 全球音乐 AI 大模型对决:技术革新引领商业变革浪潮
未来的世界声音: 音乐产业如今正被 AI 技术推动着,开启一场智能革命的全新篇章。无论是旋律的诞生,还是工业化编曲的流程,AI 大模型都在以飞快的速度改变着行业的基本逻辑架构。在中国,昆仑万维依靠 Mureka 系列产品在…...
RabbitMQ详解,RabbitMQ是什么?架构是怎样的?
目录 一,RabbitMQ是什么? 二,RabbitMQ架构 2.1 首先我们来看下RabbitMQ里面的心概念Queue是什么? 2.2 交换器Exchange 2.3 RabbitMQ是什么? 2.4 重点看下优先级队列是什么? 三,RabbitMQ集群 3.1 普通集群模式 3.2 镜像队列集群 一,RabbitMQ是什么? 假设我们程序…...
Java 大视界 -- Java 大数据在智能教育自适应学习平台中的用户行为分析与个性化推荐(169)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
智能打印预约系统:微信小程序+SSM框架实战项目
微信小程序打印室预约系统,采用SSM(SpringSpringMVCMyBatis)经典框架组合。 一、系统核心功能详解 1. 智能化管理后台 用户数据看板打印店资源管理预约动态监控服务评价系统 2. 微信小程序端 智能定位服务预约时段选择文件…...
Redisson 操作 Redis Stream 消息队列详解及实战案例
目录 一、Redis Stream 概念 1.Redis消息队列-认识消息队列 2.Redis Stream特点 3.Redis Stream与RabbitMQ等消息队列的比较 二.Redis Stream基本操作命令 1.生产消息 2.消费消息 3.消费者组操作 4.确认消息处理 三、Redisson 操作 Stream 的核心 API 1. 获取流的API…...
【深度学习量化交易19】行情数据获取方式比测(1)——基于miniQMT的量化交易回测系统开发实记
我是Mr.看海,我在尝试用信号处理的知识积累和思考方式做量化交易,应用深度学习和AI实现股票自动交易,目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。 经常使用MiniQMT的朋友都知道,xtquant的…...
23种设计模式-结构型模式-代理
文章目录 简介问题解决方案代码核心设计要点 总结 简介 代理是一种结构型设计模式,让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在把请求提交给对象前后进行一些处理。 问题 为什么要控制对于某个对象的访问呢?…...
Windows C++ 排查死锁
开发出来应用程序突然间卡死不动,如果其中是因为死锁问题卡列该如何排查 下面是一个简单的死锁例子 #include <iostream> #include <thread> #include <mutex>std::mutex a, b;void function_a() {std::lock_guard<std::mutex> _x(a);std:…...
ctfshow
1,web517 通过输入两个单引号让查询语句正常,判断是什么注入,使用的是什么字符 然后我们通过order by 判断回显位,进行一个联合查询注入 获取数据库名 ctfshow的sqli-labs和本地搭建最大的不同,就是show的flag不在当前…...
【AI论文】什么、如何、何处以及效果如何?大语言模型测试时缩放技术调研
摘要:随着预训练时代对计算(数据和参数)缩放的热情逐渐减退,测试时缩放(Test-Time Scaling, TTS),也被称作“测试时计算”,已成为一个备受瞩目的研究焦点。近期研究表明,…...
大模型学习一:deepseek api 调用实战以及参数介绍
一、说明 DeepSeek(杭州深度求索人工智能基础技术研究有限公司)是一家专注于大语言模型(LLM)研发的中国创新型科技公司,成立于2023年7月17日,由幻方量化孵化。其核心产品包括开源推理模型DeepSeek-R1、多模…...
C++ 编程指南33 - 使用模板来表达适用于多种参数类型的算法
一:概述 在 C 中,模板(Templates)提供了一种强大的泛型编程方式,使代码可以适用于不同的数据类型,而无需重复编写类似的逻辑。模板的主要目标是: 泛化能力(Generality)&a…...
