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

学习threejs,构建THREE.ParametricGeometry参数化函数生成几何体

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
    • 1.1 ☘️THREE.ParametricGeometry
      • 1.1.1 ☘️构造函数
      • 1.1.2 ☘️属性
      • 1.1.3 ☘️方法
  • 二、🍀构建THREE.ParametricGeometry参数化函数生成几何体
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于threejs在三维场景中构建THREE.ParametricGeometry参数化函数生成几何体,亲测可用。希望能帮助到您。一起学习,加油!加油!

1.1 ☘️THREE.ParametricGeometry

THREE.ParametricGeometry生成由参数表示其表面的几何体。
代码示例:

const geometry = new THREE.ParametricGeometry( THREE.ParametricGeometries.klein, 25, 25 );
const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
const klein = new THREE.Mesh( geometry, material );
scene.add( klein );

创建一个波浪曲面:

import { ParametricGeometry } from 'three/addons/geometries/ParametricGeometry.js';// 定义参数化函数(波浪)
function wave(u, v, target) {const x = u * 20 - 10; // u: 0→1 → x: -10→10const y = v * 20 - 10; // v: 0→1 → y: -10→10const z = Math.sin(x * 0.5) * Math.cos(y * 0.5); // 计算波浪高度target.set(x, y, z);
}// 创建几何体(50x50 分段)
const geometry = new ParametricGeometry(wave, 50, 50);// 创建材质和网格
const material = new THREE.MeshPhongMaterial({ color: 0x0099ff, wireframe: true });
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

创建一个圆环面:

function torus(u, v, target) {const R = 4; // 主半径const r = 1; // 管道半径const theta = u * Math.PI * 2; // u 对应环绕角度const phi = v * Math.PI * 2;   // v 对应管道角度const x = (R + r * Math.cos(phi)) * Math.cos(theta);const y = (R + r * Math.cos(phi)) * Math.sin(theta);const z = r * Math.sin(phi);target.set(x, y, z);
}const geometry = new ParametricGeometry(torus, 64, 32);

1.1.1 ☘️构造函数

ParametricGeometry(func : Function, slices : Integer, stacks : Integer)
func — 一个函数,它接受一个介于 0 和 1 之间的 u 和 v 值,并修改第三个 Vector3 参数。默认是生成曲面的函数。

slices — 用于参数函数的切片数。默认值为 8。

stacks — 用于参数函数的堆栈数。默认值为 8。

1.1.2 ☘️属性

共有属性请参见其基类BufferGeometry。

.parameters : Object
一个包含着构造函数中每个参数的对象。在对象实例化之后,对该属性的任何修改都不会改变这个几何体。

1.1.3 ☘️方法

共有方法请参见其基类BufferGeometry。

二、🍀构建THREE.ParametricGeometry参数化函数生成几何体

1. ☘️实现思路

  • 1、初始化renderer渲染器。
  • 2、初始化Scene三维场景scene。
  • 3、初始化camera相机,定义相机位置 camera.position.set,设置相机方向camera.lookAt。
  • 4、创建THREE.SpotLight聚光灯光源spotLight,设置聚光灯光源位置和投影,scene场景加入spotLight。
  • 5、加载几何模型:定义klein方法,用于创建克莱因瓶函数。定义radialWave方法,用于创建纵向波函数。创建createMesh方法,使用THREE.MeshPhongMaterial高光材质,创建THREE.ParametricGeometry几何体。传入radialWave函数和其他参数调用createMesh方法创建参数化函数生成几何体网格对象mesh,scene场景添加mesh。定义render方法,实现mesh旋转动画。具体代码参考下面代码样例。
  • 6、加入stats监控器,监控帧数信息。

2. ☘️代码样例

<!DOCTYPE html><html><head><title>学习threejs,构建THREE.ParametricGeometry参数化函数生成几何体</title><script type="text/javascript" src="../libs/three.js"></script><script type="text/javascript" src="../libs/stats.js"></script><script type="text/javascript" src="../libs/dat.gui.js"></script><style>body {margin: 0;overflow: hidden;}</style>
</head>
<body><div id="Stats-output">
</div>
<div id="WebGL-output">
</div><!-- Js 代码块 -->
<script type="text/javascript">// 初始化function init() {var stats = initStats();// 创建三维场景var scene = new THREE.Scene();// 创建相机var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);// 创建渲染器并设置颜色、大小和投影var webGLRenderer = new THREE.WebGLRenderer();webGLRenderer.setClearColor(new THREE.Color(0xEEEEEE, 1.0));webGLRenderer.setSize(window.innerWidth, window.innerHeight);webGLRenderer.shadowMapEnabled = true;// 设置相机位置和方向camera.position.x = -30;camera.position.y = 50;camera.position.z = 50;camera.lookAt(new THREE.Vector3(10, -20, 0));var spotLight = new THREE.DirectionalLight();spotLight.position = new THREE.Vector3(-20, 250, -50);spotLight.target.position.x = 30;spotLight.target.position.y = -40;spotLight.target.position.z = -20;spotLight.intensity = 0.3;scene.add(spotLight);// 渲染器绑定html页面元素document.getElementById("WebGL-output").appendChild(webGLRenderer.domElement);var step = 0;// 克莱因瓶klein = function (u, v) {u *= Math.PI;v *= 2 * Math.PI;u = u * 2;var x, y, z;if (u < Math.PI) {x = 3 * Math.cos(u) * (1 + Math.sin(u)) + (2 * (1 - Math.cos(u) / 2)) * Math.cos(u) * Math.cos(v);z = -8 * Math.sin(u) - 2 * (1 - Math.cos(u) / 2) * Math.sin(u) * Math.cos(v);} else {x = 3 * Math.cos(u) * (1 + Math.sin(u)) + (2 * (1 - Math.cos(u) / 2)) * Math.cos(v + Math.PI);z = -8 * Math.sin(u);}y = -2 * (1 - Math.cos(u) / 2) * Math.sin(v);return new THREE.Vector3(x, y, z);};// 径向波radialWave = function (u, v) {var r = 50;var x = Math.sin(u) * r;var z = Math.sin(v / 2) * 2 * r;var y = (Math.sin(u * 4 * Math.PI) + Math.cos(v * 2 * Math.PI)) * 2.8;return new THREE.Vector3(x, y, z);};var mesh = createMesh(new THREE.ParametricGeometry(radialWave, 120, 120, false));scene.add(mesh);render();function createMesh(geom) {geom.applyMatrix(new THREE.Matrix4().makeTranslation(-25, 0, -25));var meshMaterial = new THREE.MeshPhongMaterial({specular: 0xaaaafff,color: 0x3399ff,shininess: 40,metal: true});meshMaterial.side = THREE.DoubleSide;// 创建波浪网格对象var plane = THREE.SceneUtils.createMultiMaterialObject(geom, [meshMaterial]);return plane;}function render() {stats.update();// 网格对象旋转动画mesh.rotation.y = step += 0.01;mesh.rotation.x = step;requestAnimationFrame(render);webGLRenderer.render(scene, camera);}function initStats() {var stats = new Stats();stats.setMode(0);stats.domElement.style.position = 'absolute';stats.domElement.style.left = '0px';stats.domElement.style.top = '0px';document.getElementById("Stats-output").appendChild(stats.domElement);return stats;}}window.onload = init;
</script>
</body>
</html>

效果如下:
径向波:
在这里插入图片描述
克莱因瓶:
在这里插入图片描述

相关文章:

学习threejs,构建THREE.ParametricGeometry参数化函数生成几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.ParametricGeometry1…...

【华为OD-E卷 - 单词接龙 100分(python、java、c++、js、c)】

【华为OD-E卷 - 单词接龙 100分&#xff08;python、java、c、js、c&#xff09;】 题目 单词接龙的规则是&#xff1a; 可用于接龙的单词首字母必须要前一个单词的尾字母相同&#xff1b; 当存在多个首字母相同的单词时&#xff0c;取长度最长的单词&#xff0c;如果长度也相…...

美团Leaf分布式ID生成器使用教程:号段模式与Snowflake模式详解

引言 在分布式系统中&#xff0c;生成全局唯一ID是核心需求之一。美团开源的Leaf提供了两种分布式ID生成方案&#xff1a;号段模式&#xff08;高可用、依赖数据库&#xff09;和Snowflake模式&#xff08;高性能、去中心化&#xff09;。本文将手把手教你如何配置和使用这两种…...

性能测试过程实时监控分析

性能监控 前言一、查看性能测试结果的3大方式1、GUI界面报告插件2、命令行运行 html报告3、后端监听器接入仪表盘 二、influxDB grafana jmeter测试监控大屏1、原理&#xff1a;2、linux环境中influxDB 安装和配置3、jmerer后端监听器连接influxDB4、linux环境总grafana环境搭…...

【工具类】Java的 LocalDate 获取本月第一天和最后一天

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Eclipse 创建 Java 类

Eclipse 创建 Java 类 引言 Eclipse 是一款功能强大的集成开发环境(IDE),被广泛用于 Java 开发。本文将详细介绍如何在 Eclipse 中创建 Java 类,包括配置开发环境、创建新项目、添加类以及编写类代码等步骤。 配置 Eclipse 开发环境 1. 安装 Eclipse 首先,您需要在您…...

Centos编译升级libcurl

Centos编译升级libcurl ‌下载最新版源码包安装编译依赖配置编译选项如果报错&#xff1a;通过 EPEL 仓库安装手动源码编译安装 如果报错&#xff1a;安装Brotli 开发库 如果报错&#xff1a;方法一&#xff1a;安装 libpsl-devel 依赖通过 EPEL 仓库安装重新运行 configure 方…...

蓝桥杯第九天 2022 省赛 第 4 题 最少刷题数

太多坑了&#xff0c;考虑不全只能过50%&#xff0c;有两种特殊情况 public static void main(String[]args) {Scanner scan new Scanner(System.in);int n scan.nextInt();int a[] new int [100005];int b[] new int [100005];for(int i 0;i<n;i)a[i] scan.nextInt()…...

3D点云数据处理中的聚类算法总结

1.欧式聚类&#xff1a; 基于点的空间距离&#xff08;欧几里得距离&#xff09;来分割点云&#xff0c;将距离较近的点归为同一簇。 欧式聚类需要的参数&#xff1a;邻域半径R,簇的最小点阈值minPts&#xff0c;最大点数阈值maxPts。 实现效率&#xff1a; O(n * log n) 实现…...

配置本机监控

配置本机监控 1、安装zabbix-agent 2、编辑zabbix-agent配置文件 zabbix-agent工作模式&#xff1a; 主动模式 被动模式 这两行配置都是指定监控服务器的地址 被动模式下&#xff0c;zabbix server的地址 主动模式下&#xff0c;zabbix server的地址 指定被监控端的名称&…...

基于python的Flask模块化设计与蓝图的妙用——打造轻量化Web应用

基于python的Flask模块化设计与蓝图的妙用——打造轻量化Web应用 前言 如果你刚开始学习Flask&#xff0c;可能会遇到这样的困惑&#xff1a;当项目功能越来越多&#xff0c;代码都堆在一个.py文件里&#xff0c;不仅难维护&#xff0c;还容易冲突。别担心&#xff01;本文将用…...

历年云南大学计算机复试上机真题

历年云南大学计算机复试机试真题 在线评测&#xff1a;传送门&#xff1a;pgcode.cn 喝饮料 题目描述 商店里有 n 中饮料&#xff0c;第 i 种饮料有 mi 毫升&#xff0c;价格为 wi。 小明现在手里有 x 元&#xff0c;他想吃尽量多的饮料&#xff0c;于是向你寻求帮助&#x…...

Python 线程池

Python 线程池 flyfish 线程池的概念 线程池是一种多线程处理形式&#xff0c;它预先创建了一定数量的线程&#xff0c;这些线程会被保存在一个线程池中。当有新的任务提交时&#xff0c;线程池会从池中取出一个空闲的线程来执行该任务&#xff1b;若池中没有空闲线程&#…...

【Linux】Bash是什么?怎么使用?

李升伟 整理 什么是 Bash&#xff1f; Bash&#xff08;Bourne Again Shell&#xff09;是一种 命令行解释器&#xff08;Shell&#xff09;&#xff0c;广泛用于 Unix 和 Linux 操作系统。它是 Bourne Shell&#xff08;sh&#xff09; 的增强版&#xff0c;提供了更多的功能…...

蓝桥杯day2:解码异或 后的数组

一、题意 未知 整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded &#xff0c;其中 encoded[i] arr[i] XOR arr[i 1] 。例如&#xff0c;arr [1,0,2,1] 经编码后得到 encoded [1,2,3] 。 给你编码后的数组 encoded 和原数组 arr …...

R语言软件配置(自用)

①输入R: The R Project for Statistical Computing ②点击进入Cran镜像网页&#xff0c;选择清华大学镜像&#xff0c;选择自己合适的版本下载即可(以我电脑windows为例)。 ③点击base或者install R for the first time&#xff0c;然后选择Download R-4.4.3 for windows&…...

基于deepseek的智能语音客服【第二讲】后端异步接口调用封装

本篇内容主要讲前端请求&#xff08;不包含&#xff09;访问后端服务接口&#xff0c;接口通过检索知识库&#xff0c;封装提示词&#xff0c;调用deepseek的&#xff0c;并返回给前端的全过程&#xff0c;非完整代码&#xff0c;不可直接运行。 1.基于servlet封装异步请求 为…...

LEDNet总结

LEDNet&#xff1a;联合低光增强和暗光去模糊 1、暗光增强和去模糊可以单独处理&#xff0c;但是合并效果不理想。 研究问题的背景&#xff1a;光线不足 可见度颜色失真 最小快门速度有限 长时间曝光引起运动模糊 低光运动模糊同时存在 存在问题&#xff1a;暗光增强后运动模…...

线性规划的标准形式

标准形式的定义 目标函数&#xff1a;最大化线性目标函数 其中&#xff0c;x 是决策变量向量&#xff0c;c 是目标系数向量。 约束条件&#xff1a;等式形式约束 A x b, 其中&#xff0c;A 是约束系数矩阵&#xff0c;b 是常数项向量。 变量非负约束&#xff1a; 。 因此…...

xxl-job 执行器端服务器的简单搭建

xxl-job 执行器端服务器的简单搭建 先讲一下我们平时怎么使用 xxl-job 的&#xff0c;再引出背后是如何实现的。 我觉得对于一款成功的框架来说&#xff0c;好用&#xff0c;是非常重要的一个特性。 框架要便于接入&#xff0c;便于使用。对于用户来说&#xff0c;不要有太多…...

数字化企业可能会用到的系统有哪些?

你是否也曾像我一样&#xff0c;对这些问题充满疑问&#xff1a; 在企业数字化转型的浪潮中&#xff0c;究竟会涉及哪些系统&#xff1f; 这些系统又分别在何种情境下被投入使用&#xff1f; 如果你也有这样的疑问&#xff0c;那么这篇文章或许能为你答疑解惑。 为了给你一…...

【Linux】:守护进程化

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来守护进程相关的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结…...

在 web 部署 YOLOv8目标检测(Django+html)

本文介绍如何将自己训练好的模型在网页上进行应用&#xff0c;使用 Django html 进行部署&#xff0c;能够对视频和图像进行识别&#xff0c;并显示到页面上&#xff0c;下面是一个效果&#xff1a; 上 传 和另外 7 个页面 - 个人 - Microsoft Edge 2025-03-13 21-52-06 下面进…...

程序员学商务英语之Making Business Calls

Dialogue-1 Reaching Somebody By Telephone电话找人 A: What do you think the secrect to success is? 你认为成功的秘诀是什么&#xff1f; B: Hold on to your dreams. 坚持你的梦想。 A: May I speak to your boss, Mr. Wong? 请你的老板&#xff0c;王先生接电话?…...

java项目之基于ssm的少儿编程在线培训系统(源码+文档)

项目简介 少儿编程在线培训系统实现了以下功能&#xff1a; 用户信息管理&#xff1a; 用户信息新增 用户信息修改 教师信息管理&#xff1a; 教师信息添加 教师信息删除 教师信息修改 课程信息管理&#xff1a; 课程信息添加 课程信息修改 课程信息删除 课程类型管理&…...

【初学者】Python语言中有没有指针类型?

李升伟 整理 在Python语言中&#xff0c;没有像C或C那样的显式指针类型。Python的设计哲学强调简洁和易读&#xff0c;因此它隐藏了许多底层的细节&#xff0c;包括指针。 不过&#xff0c;Python中的变量可以被视为对对象的引用。当你创建一个对象并将其赋值给一个变量时&am…...

RG-S3760应用协议配置

RG-S3760应用协议配置 1. dhcp 服务配置 提问&#xff1a;如何在设备上开启dhcp 服务&#xff0c;让不同VLAN 下的电脑获得相应的IP 地址&#xff1f; 回答&#xff1a; 步骤一&#xff1a;配置VLAN 网关IP 地址&#xff0c;及将相关端口划入相应的VLAN 中 S3760#con t S…...

C++基础 [八] - list的使用与模拟实现

目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…...

skywalking微服务链路追踪

是什么&#xff1f; skywalking是一个优秀的国产开源框架&#xff0c;2015年由个人吴晟&#xff08;华为开发者&#xff09;开源 &#xff0c; 分布式链路追踪就是将一次分布式请求还原成调用链路&#xff0c;将一次分布式请求的调用情况集中展示&#xff0c;比如各个服务节点…...

K8S学习之基础三十七:prometheus监控node资源

Prometheus v2.2.1 ​ 编写yaml文件&#xff0c;包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitor-sa# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…...

Web 小项目: 网页版图书管理系统

目录 最终效果展示 代码 Gitee 地址 1. 引言 2. 留言板 [热身小练习] 2.1 准备工作 - 配置相关 2.2 创建留言表 2.3 创建 Java 类 2.4 定义 Mapper 接口 2.5 controller 2.6 service 3. 图书管理系统 3.1 准备工作 - 配置相关 3.2 创建数据库表 3.2.1 创建用户表…...

1221. 四平方和 -蓝桥杯真题-哈希函数思想

原题链接&#xff1a;1221. 四平方和 - AcWing题库 四平方和定理&#xff0c;又称为拉格朗日定理&#xff1a; 每个正整数都可以表示为至多 44 个正整数的平方和。 如果把 00 包括进去&#xff0c;就正好可以表示为 44 个数的平方和。 比如&#xff1a; 对于一个给定的正整…...

为什么要学习人工智能(AI)?—— 未来已来,AI引领时代变革

未来已来&#xff0c;AI引领时代变革 在这个日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;正以不可阻挡之势重塑着我们的世界。从教育的深耕细作到科研的突破创新&#xff0c;从行政的效率提升到管理的智慧化转型&#xff0c;AI技术如同一股强大的潮流&#x…...

Markdig:强大的 .NET Markdown 解析器详解

在现代开发中&#xff0c;Markdown 已经成为了一种广泛使用的轻量级标记语言&#xff0c;特别是在文档、博客和内容管理系统中&#xff0c;Markdown 为开发者提供了快速、简洁的格式化文本方式。而在 .NET 生态中&#xff0c;Markdig 是一款非常强大的 Markdown 解析器&#xf…...

云计算迁移革命:企业如何摆脱“单一云”锁定,构建自主云未来?

一场价值690亿美元的行业地震 2023年&#xff0c;博通&#xff08;Broadcom&#xff09;以690亿美元完成对VMware的收购&#xff0c;这不仅是企业IT历史上的一次天价并购&#xff0c;更在全球云计算市场掀起了一场深远的地震。VMware长期以来是企业数据中心的核心支柱&#xf…...

蓝桥杯篇---按键长按与双击

文章目录 前言1. 新增全局变量和宏定义解释1.1宏定义KEY_EVENT_*DEBOUNCE_TIMEHOLD_TIMEDOUBLE_TIMEMULTI_TIME 1.2全局变量Key_ValKey_OldKey_DownKey_Upsys_tickkey_eventkey_pressedkey_press_startkey_last_releaseclick_cnt 2. 定时器初始化&#xff08;1ms中断&#xff0…...

created在vue3 script setup中的写法

在 Vue 2 里&#xff0c;created 是一个生命周期钩子函数&#xff0c;会在实例已经创建完成之后被调用&#xff0c;主要用于在实例初始化之后、数据观测和 event/watcher 事件配置之前执行代码。而在 Vue 3 的 <script setup> 语法糖里&#xff0c;不再有像 Vue 2 那样直…...

基于springboot的房屋租赁系统(008)

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…...

Linux上的`i2c-tools`工具集的编译构建和安装

源码复制到Ubuntu系统中并解压 的i2c-tools工具集的源码百度网盘下载链接&#xff1a; https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwdi6xe 终端进入源码目录 cd /home/book/mybuild/i2c-tools-4.2执行编译构建命令 运行下面的命令进行编译构建 make CC${CROSS_COM…...

java项目之基于ssm的社区流浪动物救助领养系统

项目简介 社区流浪动物救助领养系统实现了以下功能&#xff1a; 本社区流浪动物救助领养系统分为管理员还有用户两个权限&#xff0c;管理员可以管理用户的基本信息内容&#xff0c;可以管理回访信息以及回访的租赁信息&#xff0c;能够与用户进行相互交流等操作&#xff0c;…...

网络空间安全(34)安全防御体系

前言 安全防御体系是一个多层次、多维度的系统&#xff0c;旨在保护组织或个人的信息资产免受各种网络攻击和威胁。 一、技术层面 网络边界防御 防火墙&#xff1a;部署在网络边界&#xff0c;通过设定规则允许或阻止特定流量的进出&#xff0c;保护内部网络不受外部攻击。入侵…...

《Linux 网络架构:基于 TCP 协议的多人聊天系统搭建详解》

一、系统概述 本系统是一个基于 TCP 协议的多人聊天系统&#xff0c;由一个服务器和多个客户端组成。客户端可以连接到服务器&#xff0c;向服务器发送消息&#xff0c;服务器接收到消息后将其转发给其他客户端&#xff0c;实现多人之间的实时聊天。系统使用 C 语言编写&#x…...

知识蒸馏:让大模型“瘦身”的魔法

知识蒸馏&#xff1a;让大模型“瘦身”的魔法 什么是蒸馏模型&#xff1f;AI界的“知识浓缩术”核心定义传统训练 vs 知识蒸馏关键优势 DeepSeek的蒸馏“三步魔法”骨架提取——搭建“迷你版大脑”知识灌注——模仿教师的“思考过程”微调优化——针对场景“查漏补缺” DeepSee…...

MySQL数据库精研之旅第一期:开启数据管理新旅程

专栏&#xff1a;MySQL数据库成长记 个人主页&#xff1a;手握风云 目录 一、数据库简介 1.1. 数据库的概念 1.2. 数据库和数据结构的关系 1.3. 主流数据库 1.3.1. 关系型数据库 1.3.2. 非关系型数据库 1.4. 关系型数据库的概念 二、MySQL配置 2.1. mysqld服务端程序 …...

Linux复习——基础IO,认识文件描述符、软硬件链接

1.复习C文件接口 1.1 fopen FILE *fopen(const char *path, const char *mode); path&#xff1a;带路径的文件名称(待打开的文件) mode&#xff1a; r&#xff1a;以可读方式打开&#xff0c;不可写&#xff0c;文件不存在&#xff0c;则报错 r&…...

【Java集合夜话】第1篇:拨开迷雾,探寻集合框架的精妙设计

欢迎来到Java集合框架系列的第一篇文章&#xff01;&#x1f339; 本系列文章将以通俗易懂的语言&#xff0c;结合实际开发经验&#xff0c;带您深入理解Java集合框架的设计智慧。&#x1f339; 若文章中有任何不准确或需要改进的地方&#xff0c;欢迎大家指出&#xff0c;让我…...

Prometheus使用

介绍&#xff1a;Prometheus 是一个开源的 监控与告警系统&#xff0c;主要用于采集和存储时间序列数据&#xff08;Time Series Data&#xff09; Prometheus的自定义查询语言PromQL Metric类型 为了能够帮助用户理解和区分这些不同监控指标之间的差异&#xff0c;Prometheu…...

Java学习打卡-Day19-Set、HashSet、LinkedHashSet

Set 接口 无序&#xff08;添加和取出顺序不一致&#xff09;&#xff08;但取出顺序固定&#xff09;。没有索引。不允许重复&#xff0c;所以最多一个null。遍历方式 迭代器增强for循环不能使用普通for循环索引方式。 HashSet 实现了Set接口&#xff0c;具有相应特征。底…...

冯・诺依曼架构深度解析

一、历史溯源&#xff1a;计算机科学的革命性突破 1.1 前冯・诺依曼时代 在 1940 年代之前&#xff0c;计算机领域呈现 "百家争鸣" 的格局&#xff1a; 哈佛 Mark I&#xff08;1944&#xff09;&#xff1a;采用分离的指令存储与数据存储ENIAC&#xff08;1946&a…...

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段&#xff1a;觉得自己会的东西不少&#xff0c;但又不知道下一步该干啥。会点C语言&#xff0c;能烧录程序&#xff0c;能点亮LED&#xff0c;玩转按键&#xff0c;搞定串口等等&#xff0c;能用开发板做点小玩意儿&#xff0c;但面对…...