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

3D个人简历网站 5.天空、鸟、飞机

1.显示天空

models下新建文件Sky.jsx

Sky.jsx

// 从 React 库中导入 useRef 钩子,用于创建可变的 ref 对象
import { useRef } from "react";
// 从 @react-three/drei 库中导入 useGLTF 钩子,用于加载 GLTF 格式的 3D 模型
import { useGLTF } from "@react-three/drei";
// 从 @react-three/fiber 库中导入 useFrame 钩子,用于在每一帧渲染时执行代码
import { useFrame } from "@react-three/fiber";// 导入天空 3D 模型的 GLB 文件
import skyScene from "../assets/3d/sky.glb";// 3D 模型来源注释,表明模型来自 Sketchfab 网站
// 3D Model from: https://sketchfab.com/3d-models/phoenix-bird-844ba0cf144a413ea92c779f18912042
/*** Sky 组件,用于渲染可旋转的天空 3D 模型* @param {boolean} isRotating - 控制天空模型是否旋转的布尔值* @returns {JSX.Element} 包含天空 3D 模型的 React 元素*/
export function Sky({ isRotating }) {// 使用 useGLTF 钩子加载天空 3D 模型,返回包含模型信息的对象const sky = useGLTF(skyScene);// 使用 useRef 钩子创建一个 ref 对象,用于引用天空模型的 DOM 元素const skyRef = useRef();// 注释说明动画名称可在 Sketchfab 网站找到,以及使用 delta 确保动画帧率独立// Note: Animation names can be found on the Sketchfab website where the 3D model is hosted.// It ensures smooth animations by making the rotation frame rate-independent.// 'delta' represents the time in seconds since the last frame./*** 在每一帧渲染时更新天空模型的旋转状态*/useFrame((_, delta) => {// 如果 isRotating 为 true,则更新天空模型的 y 轴旋转角度if (isRotating) {// 调整旋转速度,delta 确保旋转速度不受帧率影响skyRef.current.rotation.y += 0.25 * delta; }});/*** 渲染天空 3D 模型组件* 返回一个包含天空 3D 模型的 mesh 元素*/return (// 创建一个 mesh 元素,用于承载 3D 模型,并通过 ref 关联到 skyRef<mesh ref={skyRef}>{/* 使用 primitive 元素直接嵌入从 GLTF 文件加载的复杂 3D 模型或场景。object 属性指定要嵌入的 3D 对象,这里使用从 GLTF 文件加载的场景。*/}<primitive object={sky.scene} /></mesh>);
}

models下新建文件index.jsx

index.jsx

export { Sky } from "./Sky";
export { Island } from "./Island";

删除Island.jsx末尾文件"export default Island"语句

在Home.jsx中添加Sky相关代码显示天空效果

Home.jsx

……
// 从 ../models/Island 路径导入 Island 组件,此组件用于渲染 3D 岛屿模型
import { Island, Sky } from "../models"……/*** Home 组件,作为应用的主页组件。* 该组件会依据屏幕尺寸对 Island 组件的缩放、位置和旋转进行调整,* 并且在 Canvas 中渲染 Island 组件,同时处理异步加载状态。* @returns {JSX.Element} 渲染后的 JSX 元素*/
const Home = () => {/*** 根据屏幕尺寸调整 Island 组件的缩放、位置和旋转。* @returns {Array} 包含屏幕缩放比例、位置和旋转值的数组*/// 定义一个状态变量 isRotating,用于控制 Sky 组件的旋转状态const [isRotating, setIsRotating] = React.useState(false)const adjustIslandForScreenSize = () => {
……{/* 渲染 Island 组件,设置其位置、缩放和旋转属性 */}<Islandposition={islandPosition}scale={islandScale}rotation={islandRotation}/>{/* 渲染 Sky 组件,设置其旋转状态 */}<Sky isRotating={isRotating}/>
……

效果图

2.飞翔的鸟

models下添加文件Bird.jsx

Bird.jsx

// 从 react 库中导入 useEffect 和 useRef 钩子
// useEffect 用于处理副作用,如数据获取、订阅等
// useRef 用于创建可变的 ref 对象,可在组件的整个生命周期内保持值
import { useEffect, useRef } from "react";
// 从 @react-three/fiber 库中导入 useFrame 钩子
// useFrame 用于在每一帧渲染时执行代码,常用于实现动画效果
import { useFrame } from "@react-three/fiber";
// 从 @react-three/drei 库中导入 useAnimations 和 useGLTF 钩子
// useGLTF 用于加载 GLTF 格式的 3D 模型
// useAnimations 用于管理 3D 模型的动画
import { useAnimations, useGLTF } from "@react-three/drei";// 导入鸟类 3D 模型的 GLB 文件
import birdScene from "../assets/3d/bird.glb";// 3D 模型来源注释,表明模型来自 Sketchfab 网站
// 3D Model from: https://sketchfab.com/3d-models/phoenix-bird-844ba0cf144a413ea92c779f18912042
/*** Bird 组件,用于渲染会移动和播放动画的鸟类 3D 模型* @returns {JSX.Element} 包含鸟类 3D 模型的 React 元素*/
export function Bird() {// 使用 useRef 钩子创建一个 ref 对象,用于引用鸟类 3D 模型的 DOM 元素const birdRef = useRef();// 使用 useGLTF 钩子加载鸟类 3D 模型和动画数据// scene 为加载后的 3D 模型场景// animations 为模型包含的动画数组const { scene, animations } = useGLTF(birdScene);// 使用 useAnimations 钩子获取动画动作对象// actions 是一个包含动画动作的对象,可用于控制动画的播放、暂停等const { actions } = useAnimations(animations, birdRef);// 使用 useEffect 钩子,在组件挂载时执行一次// 作用是播放名为 "Take 001" 的动画useEffect(() => {// 播放 "Take 001" 动画actions["Take 001"].play();}, []);// 使用 useFrame 钩子,在每一帧渲染时执行代码useFrame(({ clock, camera }) => {// 使用正弦函数模拟鸟类上下波动的飞行效果// clock.elapsedTime 表示从时钟启动到现在经过的时间// 通过正弦函数计算出一个波动值,乘以 0.2 并加上 2,更新鸟类模型的 Y 坐标birdRef.current.position.y = Math.sin(clock.elapsedTime) * 0.2 + 2;// 检查鸟类模型的 X 坐标是否超过相机 X 坐标加 10 的位置if (birdRef.current.position.x > camera.position.x + 10) {// 若超过,将鸟类模型旋转 180 度(沿 Y 轴),改变飞行方向为向后birdRef.current.rotation.y = Math.PI;} else if (birdRef.current.position.x < camera.position.x - 10) {// 若小于相机 X 坐标减 10 的位置,将鸟类模型旋转角度重置为 0,改变飞行方向为向前birdRef.current.rotation.y = 0;}// 根据鸟类模型的旋转角度更新其 X 和 Z 坐标// 如果旋转角度为 0,说明鸟类向前飞行if (birdRef.current.rotation.y === 0) {// 向前移动,X 坐标增加 0.01,Z 坐标减少 0.01birdRef.current.position.x += 0.01;birdRef.current.position.z -= 0.01;} else {// 向后移动,X 坐标减少 0.01,Z 坐标增加 0.01birdRef.current.position.x -= 0.01;birdRef.current.position.z += 0.01;}});return (// 创建一个 mesh 元素,用于承载 3D 模型// ref 关联到 birdRef,方便后续操作模型// position 设置模型的初始位置// scale 设置模型的缩放比例<mesh ref={birdRef} position={[-5, 2, 1]} scale={[0.003, 0.003, 0.003]}>{/* 使用 primitive 元素直接嵌入从 GLTF 文件加载的复杂 3D 模型或场景object 属性指定要嵌入的 3D 对象,这里使用从 GLTF 文件加载的场景*/}<primitive object={scene} /></mesh>);
}

index.jsx增加代码鸟相关代码,考虑到后面还有其他狐狸、飞机相关文件,这里统一一起添加了

index.jsx

export { Sky } from "./Sky";
export { Bird } from './Bird'
export { Plane } from "./Plane";
export { Island } from "./Island";
export { Fox } from "./Fox"

Home.jsx中增加代码

Home.jsx

……
// 从../models 路径导入组件,
import { Bird, Island, Sky } from "../models"
……{/* 渲染 Bird 组件 */}<Bird />
……

效果图

3.飞机

models下新建文件Plane.jsx

Plane.jsx

// 从 React 中导入 useEffect 和 useRef 钩子
// useEffect 用于处理副作用,如数据获取、订阅或手动修改 DOM 等
// useRef 用于创建可变的 ref 对象,可在组件的整个生命周期内保持值
import { useEffect, useRef } from "react";
// 从 @react-three/drei 库中导入 useGLTF 和 useAnimations 钩子
// useGLTF 用于加载 GLTF 格式的 3D 模型
// useAnimations 用于管理 3D 模型的动画
import { useGLTF, useAnimations } from "@react-three/drei";// 导入飞机 3D 模型的 GLB 文件
import planeScene from "../assets/3d/plane.glb";// 3D 模型来源注释,表明模型来自 Sketchfab 网站
// 3D Model from: https://sketchfab.com/3d-models/stylized-ww1-plane-c4edeb0e410f46e8a4db320879f0a1db
/*** Plane 组件,用于渲染可控制动画的飞机 3D 模型* @param {boolean} isRotating - 控制飞机动画播放的布尔值,true 播放,false 停止* @param {Object} props - 其他传递给组件的属性* @returns {JSX.Element} 包含飞机 3D 模型的 React 元素*/
export function Plane({ isRotating, ...props }) {// 使用 useRef 钩子创建一个 ref 对象,用于引用飞机 3D 模型的 DOM 元素const ref = useRef();// 使用 useGLTF 钩子加载飞机 3D 模型和动画数据// scene 为加载后的 3D 模型场景// animations 为模型包含的动画数组const { scene, animations } = useGLTF(planeScene);// 使用 useAnimations 钩子获取动画动作对象// actions 是一个包含动画动作的对象,可用于控制动画的播放、暂停等const { actions } = useAnimations(animations, ref);// 使用 useEffect 钩子,当 isRotating 或 actions 变化时执行// 作用是根据 isRotating 的值控制飞机动画的播放或停止useEffect(() => {if (isRotating) {// 若 isRotating 为 true,播放名为 "Take 001" 的动画actions["Take 001"].play();} else {// 若 isRotating 为 false,停止名为 "Take 001" 的动画actions["Take 001"].stop();}}, [actions, isRotating]);return (// 创建一个 mesh 元素,用于承载 3D 模型// 将传递给组件的其他属性展开到 mesh 元素上// ref 关联到 ref 对象,方便后续操作模型<mesh {...props} ref={ref}>{/* 使用 primitive 元素直接嵌入从 GLTF 文件加载的复杂 3D 模型或场景object 属性指定要嵌入的 3D 对象,这里使用从 GLTF 文件加载的场景*/}<primitive object={scene} /></mesh>);
}

Home.jsx

……
// 从../models 路径导入组件,
import { Bird, Island, Sky, Plane } from "../models"
……/*** 根据屏幕尺寸调整 Plane 组件(双翼飞机)的缩放和位置。* @returns {Array} 包含飞机缩放比例和位置的数组*/const adjustBiplaneForScreenSize = () => {let screenScale, screenPosition;// If screen width is less than 768px, adjust the scale and positionif (window.innerWidth < 768) {screenScale = [1.5, 1.5, 1.5];screenPosition = [0, -1.5, 0];} else {screenScale = [3, 3, 3];screenPosition = [0, -4, -4];}return [screenScale, screenPosition];};// 调用 adjustIslandForScreenSize 函数,获取调整后的岛屿缩放、位置和旋转参数const [islandScale, islandPosition, islandRotation] = adjustIslandForScreenSize();// 定义一个状态变量 currentFocusPoint,用于存储当前的焦点点const [biplaneScale, biplanePosition] = adjustBiplaneForScreenSize();……<Bird />{/* 渲染 Plane 组件 */}{/* 渲染 Plane 组件,设置其旋转状态、位置、旋转和缩放属性 */}<PlaneisRotating={isRotating}position={biplanePosition}rotation={[0, 20.1, 0]}scale={biplaneScale}/>
……

效果图

修复部分bug,得到Home.jsx完整代码

修复后Home.jsx

// 导入 React 库和 Suspense 组件,Suspense 用于处理异步组件加载
// 当异步组件还未加载完成时,可显示一个 fallback 组件
import React, { Suspense, useState } from 'react'
// 从 @react-three/fiber 库中导入 Canvas 组件,用于创建 Three.js 渲染上下文,
// 借助该组件能在 React 应用里渲染 3D 场景
import { Canvas } from '@react-three/fiber'
// 从 ../components/Loader 路径导入 Loader 组件,该组件会在异步加载时显示加载状态
import Loader from '../components/Loader'
// 从../models 路径导入组件, 
import { Bird, Island, Sky, Plane } from "../models"// <div className='absolute top-28 left-0 right-0 z-10 flex items-center justify-center'>
//   弹出窗口
// </div>/*** Home 组件,作为应用的主页组件。* 该组件会依据屏幕尺寸对 Island 组件的缩放、位置和旋转进行调整,* 并且在 Canvas 中渲染 Island 组件,同时处理异步加载状态。* @returns {JSX.Element} 渲染后的 JSX 元素*/
const Home = () => {/*** 根据屏幕尺寸调整 Island 组件的缩放、位置和旋转。* @returns {Array} 包含屏幕缩放比例、位置和旋转值的数组*/// 定义当前阶段状态,初始值为 1const [currentStage, setCurrentStage] = useState(1);// 定义一个状态变量 isRotating,用于控制 Sky 组件和 Plane 组件的旋转状态const [isRotating, setIsRotating] = React.useState(false)/*** 根据屏幕尺寸调整 Island 组件的缩放、位置和旋转。* @returns {Array} 包含岛屿缩放比例、位置和旋转值的数组*/const adjustIslandForScreenSize = () => {// 初始化屏幕缩放比例,初始值设为 nulllet screenScale = null// 初始化 Island 组件的位置,默认值为 [0, -6.5, -43]let screenPosition = [0, -6.5, -43]// 初始化 Island 组件的旋转值,默认值为 [0.1, 4.7, 0]let rotation = [0.1, 4.7, 0]// 判断当前窗口宽度是否小于 768pxif (window.innerWidth < 768) {// 若窗口宽度小于 768px,将屏幕缩放比例设置为 [0.9, 0.9, 0.9]screenScale = [0.9, 0.9, 0.9];} else {// 若窗口宽度大于等于 768px,将屏幕缩放比例设置为 [1, 1, 1]screenScale = [1, 1, 1];}// 返回包含屏幕缩放比例、位置和旋转值的数组return [screenScale, screenPosition, rotation];}/*** 根据屏幕尺寸调整 Plane 组件(双翼飞机)的缩放和位置。* @returns {Array} 包含飞机缩放比例和位置的数组*/const adjustBiplaneForScreenSize = () => {let screenScale, screenPosition;// 如果屏幕宽度小于 768px,调整缩放和位置if (window.innerWidth < 768) {screenScale = [1.5, 1.5, 1.5];screenPosition = [0, -1.5, 0];} else {screenScale = [3, 3, 3];screenPosition = [0, -4, -4];}return [screenScale, screenPosition];};// 调用 adjustIslandForScreenSize 函数,获取调整后的岛屿缩放、位置和旋转参数const [islandScale, islandPosition, islandRotation] = adjustIslandForScreenSize();// 调用 adjustBiplaneForScreenSize 函数,获取调整后的飞机缩放和位置参数const [biplaneScale, biplanePosition] = adjustBiplaneForScreenSize();return (// 创建一个 section 元素,宽度和高度占满整个屏幕,且采用相对定位<section className='w-full h-screen relative'>{/* 创建 Three.js 渲染画布,宽度和高度占满整个屏幕,背景透明,并设置相机的近裁剪面和远裁剪面 */}<CanvasclassName='w-full h-screen bg-transparent'camera={{ near:0.1, far:1000 }}>{/* 使用 Suspense 组件处理异步加载,当 Island 组件未加载完成时,显示 Loader 组件 */}<Suspense fallback={<Loader/>}>{/* 添加定向光,为场景提供有方向的光照 */}<directionalLight/>{/* 添加环境光,为场景提供全局均匀的光照 */}<ambientLight />{/* 添加点光源,从一个点向四周发射光线 */}<pointLight />{/* 添加聚光灯,发射出类似圆锥形的光线 */}<spotLight />{/* 添加半球光,模拟天空和地面的光照效果 */}<hemisphereLight />{/* 渲染 Island 组件,传递相关状态和属性 */}<IslandisRotating={isRotating}setIsRotating={setIsRotating}setCurrentStage={setCurrentStage}position={islandPosition}rotation={[0.1, 4.7077, 0]}scale={islandScale}/>{/* 渲染 Sky 组件,设置其旋转状态 */}<Sky isRotating={isRotating} />{/* 渲染 Bird 组件 */}<Bird />{/* 渲染 Plane 组件,设置其旋转状态、位置、旋转和缩放属性 */}<PlaneisRotating={isRotating}position={biplanePosition}rotation={[0, 20.1, 0]}scale={biplaneScale}/></Suspense></Canvas></section>)
}// 导出 Home 组件,供其他文件引入使用
export default Home

相关文章:

3D个人简历网站 5.天空、鸟、飞机

1.显示天空 models下新建文件Sky.jsx Sky.jsx // 从 React 库中导入 useRef 钩子&#xff0c;用于创建可变的 ref 对象 import { useRef } from "react"; // 从 react-three/drei 库中导入 useGLTF 钩子&#xff0c;用于加载 GLTF 格式的 3D 模型 import { useGLT…...

蓝桥杯-不完整的算式

问题描述 小蓝在黑板上写了一个形如 AopBCAopBC 的算式&#xff0c;其中 AA、BB、CC 都是非负整数&#xff0c;opop 是 、-、*、/、-、*、/&#xff08;整除&#xff09;四种运算之一。不过 AA、opop、BB、CC 这四部分有一部分被不小心的同学擦掉了。 给出这个不完整的算式&a…...

【Python 算法零基础 3.递推】

压抑与痛苦&#xff0c;那些辗转反侧的夜&#xff0c;终会让我们更加强大 —— 25.5.16 一、递推的概念 递推 —— 递推最通俗的理解就是数列&#xff0c;递推和数列的关系就好比 算法 和 数据结构 的关系&#xff0c;数列有点像数据结构中的线性表(可以是顺序表&#xff0c;也…...

计算机视觉与深度学习 | Matlab实现EMD-LSTM和LSTM时间序列预测对比(完整源码和数据)

EMD-LSTM与LSTM 一、数据生成与预处理二、经验模态分解(EMD)三、数据预处理四、模型构建与训练1. 单一LSTM模型2. EMD-LSTM混合模型五、预测与结果对比1. 单一LSTM预测2. EMD-LSTM预测3. 性能评估六、结果可视化七、完整代码说明八、典型输出结果九、改进方向以下是用MATLAB实…...

【爬虫】DrissionPage-6

官方文档: https://www.drissionpage.cn/browser_control/visit https://www.drissionpage.cn/browser_control/page_operation 1. Tab 对象概述 Tab 对象 是 DrissionPage 中用于控制浏览器标签页的主要单位。每个 Tab 对象对应一个浏览器标签页&#xff0c;负责执行各种网页…...

C/C++实践(十)C语言冒泡排序深度解析:发展历史、技术方法与应用场景

一、发展历史 冒泡排序&#xff08;Bubble Sort&#xff09;作为计算机科学领域最基础的排序算法之一&#xff0c;其历史可追溯至计算机编程的早期阶段。尽管具体起源时间难以考证&#xff0c;但它在20世纪50年代至60年代间被广泛讨论和应用。冒泡排序的名称来源于其独特的排序…...

git提交库常用词

新功能 feat修改BUG fix文档修改 docs格式修改 style重构 refactor性能提升 perf测试 test构建系统 build对CI配置文件修改 ci修改构建流程、或增加依赖库、工具 chore回滚版本 revert...

结构化思考力_第一章_明确理念打基础

接收信息的3个步骤 1. 梳理&#xff1a;观点、理由、事实和数据&#xff1b; 2. 画3这的结构图 3. 一句话概括 可套用固定格式。在——的基础上&#xff0c;从——、——、——N个方面&#xff0c;说明了————。 一句话概括主要内容的前提是&#xff0c;一定是结构非常…...

【C语言练习】046. 编写插入排序算法

046. 编写插入排序算法 046. 编写插入排序算法C语言实现插入排序代码说明示例运行输入:输出:插入排序的特点一、插入排序的适用场景二、C语言代码示例及分步讲解代码实现代码解析三、示例执行过程四、性能分析五、总结046. 编写插入排序算法 插入排序(Insertion Sort)是一…...

Kotlin与机器学习实战:Android端集成TensorFlow Lite全指南

本文将手把手教你如何在Android应用中集成TensorFlow Lite模型&#xff0c;实现端侧机器学习推理能力。我们以图像分类场景为例&#xff0c;提供可直接运行的完整代码示例。 环境准备 1. 开发环境要求 Android Studio Arctic Fox以上版本AGP 7.0Kotlin 1.6Minimum SDK 21 2.…...

【Linux笔记】nfs网络文件系统与autofs(nfsdata、autofs、autofs.conf、auto.master)

一、nfs概念 NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09; 是一种由 Sun Microsystems 于1984年开发的分布式文件系统协议&#xff0c;允许用户通过网络访问远程计算机上的文件&#xff0c;就像访问本地文件一样。它广泛应用于 Unix/Linux 系统&a…...

Redis持久化机制详解:保障数据安全的关键策略

在现代应用开发中&#xff0c;Redis作为高性能的内存数据库被广泛使用。然而&#xff0c;内存的易失性特性使得持久化成为Redis设计中的关键环节。本文将全面剖析Redis的持久化机制&#xff0c;包括RDB、AOF以及混合持久化模式&#xff0c;帮助开发者根据业务需求选择最适合的持…...

经典算法 求C(N, K) % mod,保证mod是质数

求C(N, K) % mod&#xff0c;保证mod是质数 问题描述 给你三个整数N,K,mod保证mod是一个质数&#xff0c;求组合数C(N, K) % mod。 输入描述 输入有多组&#xff0c;输入第一行为两个整数T&#xff0c;mod。接下来2 - T 1行&#xff0c;每行输入N&#xff0c; K。 输出描…...

NY309NY318美光科技颗粒NY319NY320

NY309NY318美光科技颗粒NY319NY320 技术解析&#xff1a;架构创新与性能突围 美光科技的NY系列颗粒&#xff08;如NY309、NY318、NY319、NY320&#xff09;延续了其在存储技术领域的创新基因。以NY319为例&#xff0c;其采用16层BiCS3 3D NAND工艺&#xff0c;通过浮栅&#…...

Buildroot 移植MiniGUI: 编写简单示例(基于君正X2000)

概述 上一篇文章: Buildroot 移植MiniGUI, 在编译打包完文件系统后, 编写一个Demo进一步验证MiniGUI的功能. 目标平台: 键值CPUX2000架构mips内存128MB存储256MBLCD600*1024 MiniGUI 的三种运行模式 在编写第一个 MiniGUI 程序之前&#xff0c;需要了解如下事实&#xff1…...

flutter长列表 ListView、GridView、SingleChildScrollView、CustomScrollView区别

组件名称用途/适合场景是否懒加载支持列表结构用法复杂度SingleChildScrollView适用于内容数量不大、不重复的页面&#xff08;如表单、静态内容&#xff09;❌ 否❌ 否⭐⭐ListView适用于垂直方向的长列表&#xff0c;自动滚动&#xff1b;适合展示大量数据✅ 支持✅ 是⭐⭐Li…...

OpenCV透视变换

概念 OpenCV 透视变换是将图像从一个视平面投影到另一个视平面的过程&#xff0c;也叫投影映射 &#xff0c;属于空间立体三维变换。它基于透视原理&#xff0c;通过 33 的变换矩阵作用于图像像素坐标来实现映射转换 &#xff0c;能模拟人眼或相机镜头观看三维空间物体时的透视…...

Node.js 实战四:数据库集成最佳实践

你写了个登录接口&#xff0c;用上了 JWT&#xff1b;然后&#xff0c;产品来了句&#xff1a; “用户数据能分页查吗&#xff1f;能关联公司信息吗&#xff1f;我们这边还有多语言字段…” 你发现&#xff1a;SQL 写得越来越长&#xff0c;关联越来越绕&#xff0c;字段越来越…...

【JDBC】JDBC概述、历史版本及特征

1_JDBC概述 什么是JDBC JDBC&#xff08;Java DataBase Connectivity, Java数据库连接&#xff09; ,是一种用于执行SQL语句的Java API&#xff0c;为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成 有了JDBC&#xff0c;程序员只需用JDBC API写一个程序…...

redis的pipline使用结合线程池优化实战

文章目录 代码讲解与事务 (MULTI/EXEC) 的区别在你这段代码里的价值可能的坑实战建议 代码 /*** 批量根据用户 ID 查询用户信息** param findUsersByIdsReqDTO* return*/Overridepublic Response<List<FindUserByIdRspDTO>> findByIds(FindUsersByIdsReqDTO findUs…...

【RabbitMQ】整合 SpringBoot,实现工作队列、发布/订阅、路由和通配符模式

文章目录 工作队列模式引入依赖配置声明生产者代码消费者代码 发布/订阅模式引入依赖声明生产者代码发送消息 消费者代码运行程序 路由模式声明生产者代码消费者代码运行程序 通配符模式声明生产者代码消费者代码运行程序 工作队列模式 引入依赖 我们在创建 SpringBoot 项目的…...

MySQL初阶:sql事务和索引

索引&#xff08;index&#xff09; 可以类似理解为一本书的目录&#xff0c;一个表可以有多个索引。 索引的意义和代价 在MySQL中使用select进行查询时会经过&#xff1a; 1.先遍历表 2.将条件带入每行记录中进行判断&#xff0c;看是否符合 3.不符合就跳过 但当表中的…...

使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线

以下通过点亮LED进行基本使用流程演示&#xff0c;实际可以连接复杂外设&#xff08;SPI、CAN、ADC等&#xff09; 单模块使用 RX、TX、5V和GND接到串口模块&#xff1b;X5接5V&#xff1b;Y2接LED;LED-接GND 串口模块插上电脑后&#xff0c;LED没有亮&#xff1b;因为此时模…...

很啰嗦,再次总结 DOM

DOM (文档对象模型) 详解 一、DOM 基础概念 1. 定义与作用 DOM&#xff08;Document Object Model&#xff09;即文档对象模型&#xff0c;是一种用于 HTML 和 XML 文档的编程接口。它将文档解析为一个由节点和对象组成的树状结构&#xff0c;允许程序和脚本动态访问、修改文…...

文件读取漏洞路径与防御总结

文件读取漏洞路径与防御总结 文件读取漏洞允许攻击者通过路径遍历等手段访问未授权的文件。以下是Linux和Windows系统中常见敏感路径的归纳及防御建议&#xff1a; Linux 系统常见敏感路径 系统关键文件&#xff1a; /etc/passwd&#xff1a;用户账户信息&#xff08;可被用来…...

电池的充放电电流中C的含义

充电电池的充放电电流标注为 -0.2C、1C、2C 等参数时&#xff0c;其含义与电池的容量和充放电速率直接相关。以下是详细解释&#xff1a; 1. 什么是 “C” 值&#xff1f; • C 是电池的 额定容量&#xff08;Capacity&#xff09; 的缩写&#xff0c;单位为 Ah&#xff08;安时…...

文章记单词 | 第91篇(六级)

一&#xff0c;单词释义 stride /straɪd/- v. 大步走&#xff1b;跨越&#xff1b;迈进 /n. 大步&#xff1b;进展&#xff1b;步幅diplomatic /ˌdɪpləˈmtɪk/- adj. 外交的&#xff1b;有手腕的conquer /ˈkɒŋkə(r)/- v. 征服&#xff1b;战胜&#xff1b;克服geogra…...

Nginx应用场景详解与配置指南

1. 什么是Nginx&#xff1f; Nginx&#xff08;发音为"engine-x"&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理服务器。它以高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。 2. Nginx的主要应用场景 2.1 …...

【Ubuntu】Waydroid-Linux安卓模拟器安装

✅ 1. 安装 Waydroid sudo apt update sudo apt install curl ca-certificates gnupg git -y curl -s https://repo.waydro.id | sudo bash sudo apt install waydroid -y sudo apt install dbus-x11✅ 2. 初始化 Waydroid 使用普通system版本&#xff1a; sudo waydroid in…...

设计模式 - 单例模式 - Tips

为什么双重检查会带来空指针异常问题&#xff1f; if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } …...

设计模式7大原则与UML类图详解

设计模式7大原则与UML类图详解 引言 &#x1f31f; 在软件工程领域&#xff0c;设计模式和UML&#xff08;统一建模语言&#xff09;是提高代码质量、增强系统可维护性的重要工具。设计模式提供了解决软件设计中常见问题的通用方案&#xff0c;而UML则为我们提供了一种可视化的…...

如何分析动态采样引起的计划不稳定 | OceanBase SQL 调优实践

这篇博客涉及两个知识点&#xff0c;一个是动态采样&#xff0c;另一个是 DAS 执行。 用户的问题和相关结论 我们看看用户在OceanBase 社区论坛发帖中提出的疑问及其所得出的结论。 问题&#xff1a;收集统计信息之前&#xff0c;为什么会出现计划不稳定的情况&#xff1f; …...

NY321NY322美光闪存芯片NY323NY336

NY321NY322美光闪存芯片NY323NY336 在存储技术飞速发展的今天&#xff0c;美光科技的闪存芯片凭借其创新架构与高性能表现&#xff0c;已成为工业自动化、智能终端等领域的核心组件。本文将围绕技术解析、产品评测、行业趋势、应用案例及市场动态五大维度&#xff0c;深入探讨…...

HMDB51数据集划分

生成训练集、验证集和测试集 每个split文件应该包含&#xff1a; 训练集(id1): 70个视频测试集(id2): 30个视频未使用(id0): 剩余视频 这是一个70/30的训练/测试分割比例。标记为0的视频被排除在当前实验之外。实际上训练集&#xff08;id1&#xff09;&#xff0c;验证集&am…...

25、DeepSeek-R1论文笔记

DeepSeek-R1论文笔记 1、研究背景与核心目标2、核心模型与技术路线3、蒸馏技术与小模型优化4、训练过程简介5、COT思维链&#xff08;Chain of Thought&#xff09;6、强化学习算法&#xff08;GRPO&#xff09;7、冷启动**1. 冷启动的目的****2. 冷启动的实现步骤****3. 冷启动…...

CodeBuddy 打造响应式测试平台:ScreenLab 的诞生记

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 开发工具&#xff1a;CodeBuddy&#xff08;AI 代码伙伴&#xff09; 技术栈&#xff1a;Vue3 Vite 原生 CSS…...

STM32实战指南:SG90舵机控制原理与代码详解

知识点1【SG90的简述】 SG90是一款微型舵机&#xff08;Micro Servo&#xff09;&#xff0c;由TowerPro等厂商提供&#xff0c;广泛用于机器人&#xff0c;舵机云台&#xff0c;舵机控制教学等项目中。 1、基本参数 2、工作原理 SG90内部有电机&#xff0c;齿轮组&#xff…...

基于Spring Boot和Vue的在线考试系统架构设计与实现(源码+论文+部署讲解等)

源码项目获取联系 请文末卡片dd我获取更详细的演示视频 系统介绍 基于Spring Boot和Vue的在线考试系统。为学生和教师/管理员提供一个高效、便捷的在线学习、考试及管理平台。系统采用前后端分离的架构&#xff0c;后端基于成熟稳定的Spring Boot框架&#xff0c;负责数据处理…...

开源RTOS(实时操作系统):nuttx 编译

开源RTOS&#xff08;实时操作系统&#xff09;&#xff1a;nuttx 编译 手册&#xff1a;Installing — NuttX latest documentation 源码&#xff1a;GitHub - apache/nuttx: Apache NuttX is a mature, real-time embedded operating system (RTOS) Installing The fir…...

C++学习:六个月从基础到就业——C++11/14:decltype关键字

C学习&#xff1a;六个月从基础到就业——C11/14&#xff1a;decltype关键字 本文是我C学习之旅系列的第四十二篇技术文章&#xff0c;也是第三阶段"现代C特性"的第四篇&#xff0c;主要介绍C11/14中的decltype关键字。查看完整系列目录了解更多内容。 引言 在现代C…...

【51】快速获取数码管段选表(含小数点)及字母表的工具(分享)

1 介绍 1.1 画面 1.2 用法 输入IO口和段码字母的映射关系&#xff0c;比如这里e4d5dp2&#xff0c;指的是bit4是e段&#xff0c;bit5是d段&#xff0c;bit2是小数点dp段。 然后选择有效电平&#xff08;1表示亮 or 0表示亮&#xff09;。 点击生成段码配置&#xff0c;即可得到…...

高频面试题(含笔试高频算法整理)基本总结回顾120

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

5月17日

这几天不知道为啥没更新。可能是玩得太疯了。或者是考试有点集中&#xff1f;&#xff1f; 线性代数开课了&#xff0c;英语昨天完成了debate 昨天中午debate结束我们就出去玩了&#xff0c;去的那里时光民俗&#xff0c;别墅很好&#xff0c;770平米&#xff0c;但是缺点是可…...

摩方 12 代 N200 迷你主机(Ubuntu 系统)WiFi 抓包环境配置教程

摩方12代N200迷你主机标配 Intel AX201无线网卡&#xff0c;支持 WiFi 6 协议&#xff08;802.11ax&#xff09;及蓝牙5.2。此网卡兼容主流抓包工具&#xff0c;但需注意&#xff1a; 驱动兼容性&#xff1a;Ubuntu 20.04及以上内核版本&#xff08;5.4&#xff09;默认支持AX2…...

从零开始:使用 PyTorch 构建深度学习网络

从零开始&#xff1a;使用 PyTorch 构建深度学习网络 目录 PyTorch 简介环境配置PyTorch 基础构建神经网络训练模型评估与测试案例实战&#xff1a;手写数字识别进阶技巧常见问题解答 PyTorch 简介 PyTorch 是一个开源的深度学习框架&#xff0c;由 Facebook&#xff08;现…...

应用层自定义协议与序列化

应用层自定义协议与序列化 应用层协议网络版计算器序列化和反序列化序列化反序列化 重新理解read、write、recv、send和TCP为什么支持全双工代码结构Jsoncpp特性安装序列化使用Json::Value的toStyledString方法使用Json::StreamWriter使用Json::FastWriter 反序列化使用Json::R…...

2025春训第二十场

问题 B: 狗是啥呀 题目描述 在神秘的地狱深处&#xff0c;有着一种神秘的犬类生物&#xff0c;据传这种生物长了x个脑袋&#xff0c;并且具有强大的生命力。由于见过它的人全都下落不明&#xff0c;至今没有人知道它的真面目。 一位勇士为了斩杀这奇怪的生物&#xff0c;来到地…...

分糖果--思维+while判断

1.从左到右只考虑右边一遍&#xff0c;再从右到左考虑左边一遍&#xff0c;相当于左右考虑了 2.然后关键是1遍不一定行&#xff0c;while循环直到成功 https://www.luogu.com.cn/problem/B4091 #include<bits/stdc.h> using namespace std; #define N 100011 typedef …...

[system-design] ByteByteGo_Note Summary

目录 通信协议 REST API 与 GraphQL gRPC 如何工作&#xff1f; 什么是Webhook&#xff1f; 如何提高应用程序接口的性能&#xff1f; HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC) SOAP vs REST vs GraphQL vs RPC 代码优先与应用程序接口优先 HTT…...

Flask项目实践:构建功能完善的博客系统(含评论与标签功能)

引言 在Python Web开发领域&#xff0c;Flask以其轻量级、灵活性和易用性赢得了众多开发者的青睐。本文将带您从零开始构建一个功能完善的博客系统&#xff0c;包含文章发布、评论互动和标签分类等核心功能。通过这个实战项目&#xff0c;您不仅能掌握Flask的核心技术&#xf…...