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

unity学习62,尝试做第一个小游戏项目:flappy bird

目录

学习参考

1 创建1个unity 2D项目

1.1 2D项目模板选择

1.1.1 2D(built-in-Render pipeline)

1.1.2  universe 2D

1.1.3 这次选择  2D(built-in-Render pipeline)

1.2 创建项目

1.2.1 注意点

1.2.2 如果想修改项目名

2 导入美术资源包

2.1 下载一个flappy bird的资源包

2.2 导入资源包

2.3 记得把UNITY视图修改为经典的2*3模式

2.4 先把界面整理成熟悉的2*3,然后开始整

2.5 还要把项目 设置修改为安卓,因为是手机游戏

3 开始整:基础调整准备

3.1 先新建1个 288*512的屏幕分辨率

3.2 图片UI素材太大的问题

3.3 修改摄像机size,而不是素材尺寸

4 地图背景bg

4.1 创建第2个bg,复制即可

4.2 更科学的修改方法

4.3 尝试间接计算bg的像素大小

​编辑

4.4 关于3D和2D的最标准,新手要记住

4.5 创建1个空物体bg

5 创建地图背景bg脚本

5.1 脚本文件夹

5.2 给bg空物体挂一个脚本,实现bg自动滚动

5.3 脚本内容

5.4 把bg的 order in layer修改为很小的数,放在最底层,避免遮挡前面的内容

6 地面 ground

6.1 修改地面ground的配置

6.2  共用bg的脚本,只修改公共变量

6.3 记得营造视觉差效果

6.4 给地面增加碰撞

7 管子pipe

7.1 新建空物体和up down的pipe

7.2 调整layer的order, 让ground 显示在的pipe上层

7.3 给pipe增加碰撞

7.4 给空的父物体,增加一个 collider 2D, 并修改为触发器

8 小鸟bird

8.1 创建小鸟动画

8.2 给小鸟增加碰撞 和刚体,控制小鸟往下掉

8.3 脚本控制小鸟向上飞

9 控制小鸟的头的朝向

9.1 注意unity里的欧拉角

9.2 修改脚本

10 管道pipe

10.1 创建pipe

10.2 每个地面ground 挂一个管道,作为地面ground的子物体

10.3 增加pipe脚本

10.4 把pipeUp  pipeDown的collider都弄到空的父物体身上

10.4.1 一个小BUG插曲和解决

10.5 小鸟过 pipe的计分脚本

11 让管道pipe 高度,生成前高度随机

11.1 让管道pipe 高度,生成前高度随机

11.2 设置修改

11.2.1 增加一个 标志开关

11.2.2 bg移动更换脚本时,需要生成随机高度的新pipe

11.2.3  增加一个随机调整高度的函数

11.3 脚本

11.3.1 bgControl.cs

11.3.2 pipeControl.cs


学习参考

Unity小白超神系列教程:Flappy Bird_哔哩哔哩_bilibili素材加公众号免费下载, 视频播放量 16589、弹幕量 19、点赞数 221、投硬币枚数 129、收藏人数 549、转发人数 135, 视频作者 Gamer飞羽, 作者简介 玩游戏、做游戏的up一枚,《新印象 Unity 2020游戏开发基础与实战》与《新印象:Unity游戏开发实例教程》作者。,相关视频:Unity制作飞扬的小鸟小游戏视频教程,【Unity 游戏开发教程】一小时制作一款小游戏 - 03. 愤怒的小鸟,Unity小游戏【吃豆人】-自己做的游戏作业,简单易懂,一小时使用Unity制作一个2D小游戏|基于Unity2023.1.1|游戏开发|Unity|编程|游戏制作|入门教程,Unity小白超神系列教程:超级玛丽,【灯塔极简教程】20分钟用Unity做一个滚球跑酷游戏,Unity小游戏【贪吃金币】-自己做的游戏作业,简单易懂,【Unity基础教程】入门游戏制作,十分钟搞定涂鸦跳跃2D游戏,愤怒的小鸟开发-基于Unity2023-2D小白教程-游戏开发|编程|unity3d|u3d|unity基础|手游开发|C#编程|虚幻游戏开发,Unity小游戏《FlappyBird》从演示到发布 零基础最全教程(Unity/C#/零基础/游戏制作/游戏开发/编程)B0102https://www.bilibili.com/video/BV1Sb411N7DQ?spm_id_from=333.788.videopod.sections&vd_source=5fa6d2958ae880d9550a17f8050fd5ed

2_按钮单击效果与场景切换_哔哩哔哩_bilibili2_按钮单击效果与场景切换是Unity制作飞扬的小鸟小游戏视频教程的第2集视频,该合集共计9集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1GV411a7Mc?spm_id_from=333.788.player.switch&vd_source=5fa6d2958ae880d9550a17f8050fd5ed&p=2

1 创建1个unity 2D项目

1.1 2D项目模板选择

1.1.1 2D(built-in-Render pipeline)

This is an empty project configured for 2D apps. It uses Unity's built-in renderer.
这是一个为2D应用程序配置的空项目。它使用Unity的内置渲染器。

1.1.2  universe 2D

This is an empty project configured for 2D apps. It uses Unity’s Universal Render Pipeline pre-configured with 2D Renderer.

这是一个为2D应用程序配置的空项目。它使用预先配置了2D渲染器的Unity通用渲染管道。

1.1.3 这次选择  2D(built-in-Render pipeline)

因为之前3D项目也是选择 universe 3D ,结果在asset store里下载的资源是紫色贴图报错

怀疑是不是轻量级的和大多数人的项目不匹配,这次用传统的这个2D(built-in-Render pipeline)

1.2 创建项目

1.2.1 注意点

  • 注意,创建前,记得修改项目名
  • 否则比较麻烦

1.2.2 如果想修改项目名

  • 如果想修改项目名
  • 右键,show in exolporer /浏览器中打开
  • 修改项目文件夹的名字
  • 然后unityhub里就找不到了
  • 需要重新再打开就可以了

2 导入美术资源包

2.1 下载一个flappy bird的资源包

  • 其实没有也可以,就是自己做,对于没美术基础的比较麻烦,比如我
  • 可以先丑一点
  • 我之后打算替代掉这些资源

2.2 导入资源包

  • 双击unity资源包,即可import
  • 点击import

2.3 记得把UNITY视图修改为经典的2*3模式

主要跟着各种视频,文章都是这么学的,习惯了

换个格式看的难受

2.4 先把界面整理成熟悉的2*3,然后开始整

舒服了开始整

2.5 还要把项目 设置修改为安卓,因为是手机游戏

一般不修改默认是windows

切换完毕

3 开始整:基础调整准备

3.1 先新建1个 288*512的屏幕分辨率

  • 好像原游戏的地图分辨率,屏幕图就这么大
  • 需要再下面的game窗口,新建这么一个

3.2 图片UI素材太大的问题

  • 没搞明白,为啥这个bg这么大
  • 可能是因为导入的素材包里是别人已经设置过的UI,而不是原图吧?
  • 而且我看不到图片的原始尺寸??比如288*512
  • 管他呢,先改

3.3 修改摄像机size,而不是素材尺寸

  • 修改摄像机size,而不是素材尺寸
  • 这样可以避免,后面每个资源都要修改,
  • 只需要修改摄像机1次,去适配资源即可
  • 拖到摄像机的白色控制点,但是好像只能 按照摄像机的宽高比一起调整,不能自由调整。

4 地图背景bg

4.1 创建第2个bg,复制即可

  • 且保证2个bg的y是一致的,就是 transform里的y要一致

4.2 更科学的修改方法

  • 是知道图片的尺寸
  • 按照1米=100pixel来换算
  • 图片是按像素,比如288*512,而unity里是填写米
  • 然后把bg2,也和bg叠在一起,也就是,重置 transform为000,然后把X修改为288/100=2.88即可刚好两张平铺错开

4.3 尝试间接计算bg的像素大小

  • 上下叠一张,左右叠一张
  • 虽然都是看 pviot之间的距离,实际也就是图片的大小

  • 而这个资源上写的16比
  • 换算下来 23.2*16=371.2像素
  • 换算下来 23.2*16=533.6像素
  • 和我现在用的288*512 还是有些区别的

后来发现,双击UI里图片可以看到实际大小 378*537

4.4 关于3D和2D的最标准,新手要记住

unity里默认的

3D的是 水平平面(X right ,Z  front),Y up 纵 ---立体

2D的是 竖直平面  (X  horizontal,Y vectical 纵 )

4.5 创建1个空物体bg

把之前的bg图,分别改名bg1 bg2放入其作为子物体

5 创建地图背景bg脚本

5.1 脚本文件夹

这里出现了很诡异的问题

不让我在unity里创建c#脚本,每次创建都一闪而过

气得我差点准备删了重建

我后来想,可能是导入资源包做了点手脚限制了

我干脆绕了过去。直接在 windows对于的assets里创建脚本是OK的

5.2 给bg空物体挂一个脚本,实现bg自动滚动

5.3 脚本内容

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class bgControl : MonoBehaviour
{//bg移动速度,方便外面修改public float speed1=0.2f;//use this for initialization;void Start(){}//Update is called once per frame;void Update(){//遍历bgforeach(Transform trans1 in transform){//移动bgVector2 v1=trans1.position;v1.x=v1.x+speed1*Time.deltaTime;trans1.position=v1;}}    }

实测OK,但是动的特别慢,因为是远景的原因 

  • 速度的原因,怀疑是因为这里是按16:1的像素/米,得搞快点
  • 往右移动,是+
  • 可以修改为往左边移动,更符合一般视角感觉,修改为-

修改

  • 如100:1是速度0.2,16:1 速度为1.25,
  • 同时改成向左移动试试
  • 而且,因为 speed1是public 变量,unity脚本外面修改得优先级高,只改脚本不生效,外面还是0.2f,记得修改unity里的speed1得值。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class bgControl : MonoBehaviour
{//bg移动速度,方便外面修改public float speed1=1.25f;//use this for initialization;void Start(){}//Update is called once per frame;void Update(){//遍历bgforeach(Transform trans1 in transform){//移动bgVector2 v1=trans1.position;v1.x=v1.x-speed1*Time.deltaTime;trans1.position=v1;}}    }

bg移动速度

那如果把宽度严格得定义为23.625,还有2个匹配修改

  • bg1本身图片是左边和右边是刚好可以相接的
  • bg2 距离bg1,也就是bg2的x 也要刚好是23.625,否则会有缝隙或叠加
  • 现在bg可以无缝的向左边后退滚动了

5.4 把bg的 order in layer修改为很小的数,放在最底层,避免遮挡前面的内容

6 地面 ground

同样新建空物体,建2个ground

6.1 修改地面ground的配置

  • 地面应该是336*112
  • 但是这里的是 800*392

把ground的scale 调整为 0.6x 0.4y差不多

让2个ground相距离X为30

其中一个x=-3。 另外一个x=27

6.2  共用bg的脚本,只修改公共变量

  • bg的脚本继续挂载ground空物体上
  • 修改参数
  • 实测🆗

6.3 记得营造视觉差效果

  • 也就是地面移动速度快,近景
  • 城市移动速度慢,远景

6.4 给地面增加碰撞

7 管子pipe

7.1 新建空物体和up down的pipe

  • 并且设置到00后调整空缺位置

7.2 调整layer的order, 让ground 显示在的pipe上层

  • 让ground 显示在的pipe上层
  • ground的order更高即可

7.3 给pipe增加碰撞

  • 新增 collider 2D

7.4 给空的父物体,增加一个 collider 2D, 并修改为触发器

这样没有碰撞,但是会有触发判断

且弄到后半段

8 小鸟bird

8.1 创建小鸟动画

多个图片一起拖过去

8.2 给小鸟增加碰撞 和刚体,控制小鸟往下掉

限制小鸟自己Z轴移动,就是X,Y 之外的翻滚,滚动

8.3 脚本控制小鸟向上飞

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class birdControl : MonoBehaviour
{//以下都是按1/16算的//外界给小鸟向上飞得外力public float force1=10f;//定义一个新刚体public Rigidbody2D rbody1;//use this for initialization;void Start(){//  获取小鸟得刚体rbody1=GetComponent<Rigidbody2D>();}//Update is called once per frame;void Update(){//判断点击则给小鸟向上  0左,1右键,2鼠标中键if(Input.GetMouseButtonDown(0)){rbody1.velocity=new Vector2(0,force1);}}    }

9 控制小鸟的头的朝向

9.1 注意unity里的欧拉角

unity里是用的0-360度,都是正数的角度

但是unity外面面板上填的不是,是正数和负数

9.2 修改脚本

增加头部转向

限制角度

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class birdControl : MonoBehaviour
{//以下都是按1/16算的//外界给小鸟向上飞得外力public float force1=10f;//定义一个新刚体public Rigidbody2D rbody1;//定义一个最大角度public float maxAngle=40;    //use this for initialization;void Start(){//  获取小鸟得刚体rbody1=GetComponent<Rigidbody2D>();}//Update is called once per frame;void Update(){//判断点击则给小鸟向上  0左,1右键,2鼠标中键if(Input.GetMouseButtonDown(0)){rbody1.velocity=new Vector2(0,force1);}//获取当前的角度.Z表示旋转Vector3 angle1 =transform.eulerAngles;//旋转//只给Y轴的,不给X轴的?angle1.z=angle1.z+rbody1.velocity.y;//将旋转Z同步面板上的值,如果不做这个可以直接用360角度去做也可以angle1.z=angle1.z-180;if(angle1.z>0){angle1.z=angle1.z-180;}else{angle1.z=angle1.z+180;}Debug.Log(angle1.z);//限制翻转angle1.z=Mathf.Clamp(angle1.z,-maxAngle,+maxAngle);transform.eulerAngles=angle1;}    }

10 管道pipe

10.1 创建pipe

  • 同样是空物体下挂实际的图片,这里创建一个pipe空物体
  • 下面分别挂2个,一个pipe up  一个pipe down

10.2 每个地面ground 挂一个管道,作为地面ground的子物体

10.3 增加pipe脚本

  • 增加pipe脚本
  • 并且挂在pipe上

10.4 把pipeUp  pipeDown的collider都弄到空的父物体身上

  • 把pipeUp  pipeDown的collider都弄到空的父物体身上,相当于它有3个碰撞盒
  • 使用 copy component
  • 然后 paste component as new
  • 然后因为父物体身上有3个碰撞盒,需要再调整3个盒子的高度,和图片相匹配
  • 这里是+19.5 和 -19.25
  • 然后还要把子物体上自身的collider给勾选掉

10.4.1 一个小BUG插曲和解决

  • 如果在管道上挂了2个相同的脚本,这个管道会运行2次脚本,比如计分就会加2次。
  • 要小心
  • 出现了去查查可以从这个角度看看

10.5 小鸟过 pipe的计分脚本

实测可以加分

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class pipeControl : MonoBehaviour
{//最好搞UI上显示static int score1;//use this for initialization;void Start(){}//Update is called once per frame;void Update(){}    //把pipe up down的碰撞都挪到空的父物体身上?脚本更好写?private void OnCollisionEnter2D(Collision2D Collision) //中间不要加逗号{//小鸟失败}private void OnTriggerEnter2D(Collider2D Collision)  //中间不要加逗号{//增加分数score1++;Debug.Log(score1);} }

11 让管道pipe 高度,生成前高度随机

11.1 让管道pipe 高度,生成前高度随机

  • 也有的游戏做成管道一直在动
  • 这里还是做出简单的,管道生成后就不变化了,生成前变化

11.2 设置修改

11.2.1 增加一个 标志开关

  • 增加一个 标志开关,是否需要 reset pipe height。这样可以在外面勾选
  • 因为bgcontrol 是bg 和 ground 共用,不能2边都影响pipe

11.2.2 bg移动更换脚本时,需要生成随机高度的新pipe

//bgControl.cs里需要添加如下内容

//在这个时机

      if(v1.x<-width1)

            {

                v1.x=v1.x+width1*2;

                //重置高度

                if(resetPipeHeight)

                {

                    pipeControl pipe=trans1.GetComponentInChildren<pipeControl>();

                    pipe.ResetHeight();

                }

            }

11.2.3  增加一个随机调整高度的函数

  • 而且是在父物体上,整体调整高度
  • 这样,即使缺口永远一样大
  • 但是2个管子,组成的整体会高低不同

    public void ResetHeight()

    {

        Vector2 v1=transform.localPosition;

        v1.y=Random.Range(25f,45f);

        transform.localPosition=v1;

    }

11.3 脚本

实测OK

11.3.1 bgControl.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class bgControl : MonoBehaviour
{//以下都是按1/16算的//bg移动速度,方便外面修改public float speed1=1.25f;//bg宽度public float width1=23f;public bool resetPipeHeight=false;//use this for initialization;void Start(){}//Update is called once per frame;void Update(){//遍历bgforeach(Transform trans1 in transform){//移动bgVector2 v1=trans1.position;v1.x=v1.x-speed1*Time.deltaTime;//如果需要切换到新位置if(v1.x<-width1){v1.x=v1.x+width1*2;//重置高度if(resetPipeHeight){pipeControl pipe=trans1.GetComponentInChildren<pipeControl>();pipe.ResetHeight();}}trans1.position=v1;}}    }

11.3.2 pipeControl.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class pipeControl : MonoBehaviour
{//最好搞UI上显示static int score1;//use this for initialization;void Start(){}//Update is called once per frame;void Update(){}    //把pipe up down的碰撞都挪到空的父物体身上?脚本更好写?private void OnCollisionEnter2D(Collision2D Collision) //中间不要加逗号{//小鸟失败}private void OnTriggerEnter2D(Collider2D Collision)  //中间不要加逗号{//增加分数score1++;Debug.Log(score1);} public void ResetHeight(){Vector2 v1=transform.localPosition;v1.y=Random.Range(25f,45f);transform.localPosition=v1;}}

相关文章:

unity学习62,尝试做第一个小游戏项目:flappy bird

目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…...

Windows10下本地搭建Manim环境

文章目录 1. 简介2. Python环境3. uv工具4. Latex软件5. 安装Manim数学库6. 中文支持参考 1. 简介 manim是个一科普动画的库&#xff0c; 本文用到的是社区版本。 2. Python环境 这个不用多说&#xff0c;可以参考其他的文章。记得把pip也安上。 3. uv工具 上面的pip是老…...

zabbix“专家坐诊”第277期问答

在线答疑:乐维社区 问题一 Q&#xff1a;这个怎么解决呢&#xff1f; A&#xff1a;缺少这个依赖。 Q&#xff1a;就一直装不上。 A&#xff1a;装 zabbix-agent2-7.0.0-releasel.el7.x86 64 需要前面提示的那个依赖才可以装。 问题二 Q&#xff1a;大佬&#xff0c;如果agen…...

解决git clone下载慢或者超时问题

在网上找了很多办法&#xff0c;直接最简单的使用镜像网站下载。 国内可用的镜像网站有&#xff1a; https://github.com.cnpmjs.org # 服务器位于香港https://gitclone.com # 服务器位于杭州https://doc.fastgit.org # 服务器位于香港 例如&#xff1a;将 git clone https:…...

机器学习:强化学习的epsilon贪心算法

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习方法&#xff0c;旨在通过与环境交互&#xff0c;使智能体&#xff08;Agent&#xff09;学习如何采取最优行动&#xff0c;以最大化某种累积奖励。它与监督学习和无监督学习不同&#xff0c;强调试错…...

MySQL-高级查询

查询处理 排序&#xff08;默认不是按主键排序的&#xff09; order by 字段1[&#xff0c;字段2] [asc|desc] 默认是升序排序也可以指定 select 列表中列的序号进行排序如果是多个字段&#xff0c;那么在上一个字段排序完的基础上排序下一个 限制数量 limit 行数&#xff0…...

NModbus 连接到Modbus服务器(Modbus TCP)

1、在项目中通过NuGet添加NModbus&#xff0c;在界面中添加一个Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…...

value_counts()和unique()

我今天发现一个很有意思的问题哈 import scanpy as sc import numpy as npX np.random.randn(10,3) adata1 sc.AnnData(X) adata1.obs["sample"] "H1" print(adata1)X np.random.randn(20,3) adata2 sc.AnnData(X) adata2.obs["sample"] &…...

FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台

文章目录 前言一、生态系统1. 金融AI代理&#xff08;Financial AI Agents&#xff09;2. 金融大型语言模型&#xff08;Financial LLMs&#xff09;3. LLMOps4. 数据操作&#xff08;DataOps&#xff09;5. 多源LLM基础模型&#xff08;Multi-Source LLM Foundation Models&am…...

示例:在WPF中如何使用Segoe MDL2 Assets图标和使用该图标的好处

一、目的&#xff1a;分享在WPF中如何使用Segoe MDL2 Assets图标和使用该图标的好处 在WPF中使用Segoe MDL2 Assets字体&#xff0c;可以通过设置控件的FontFamily属性来实现。Segoe MDL2 Assets是一个包含许多图标的字体&#xff0c;通常用于Windows应用程序的图标显示。 二、…...

使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法

使用UA-SPEECH和TORGO数据库验证自动构音障碍语音分类方法 引言 原文:On using the UA-Speech and TORGO databases to validate automatic dysarthric speech classification approaches 构音障碍简介 构音障碍是一种由于脑损伤或神经疾病(如脑瘫、肌萎缩侧索硬化症、帕金森…...

容器与虚拟机:云时代的底层架构博弈

容器与虚拟机&#xff1a;云时代的底层架构博弈 在数字化浪潮席卷的当下&#xff0c;云技术已成为企业和开发者不可或缺的基础设施。在云环境中&#xff0c;容器和虚拟机作为两种关键的底层技术&#xff0c;犹如双子星般备受瞩目。它们究竟谁能在这场技术较量中脱颖而出&#x…...

解决android studio(ladybug版本) gradle的一些task突然消失了

今天不知道干了啥&#xff0c;AS&#xff08;ladybug版本&#xff09;右边gradle的task有些不见了&#xff0c;研究了半天解决了&#xff0c;这里记录下&#xff1a; 操作&#xff1a; File -->Settings-->Experimental--> 取消选项“Enable support for multi-vari…...

Wpf-ReactiveUI-Usercontrol交互

文章目录 1、使用属性绑定UserControl 部分(MyUserControl.xaml.cs)UserControl 视图模型部分(MyUserControlViewModel.cs)主界面部分(MainWindow.xaml)主界面视图模型部分(MainWindowViewModel.cs)2、使用消息传递UserControl 视图模型部分(MyUserControlViewModel.c…...

Unity插件-Mirror使用方法(四)组件介绍(​Network Manager HUD)

目录 一、插件介绍 二、主要组件 Network Manager 三、Network Manager HUD 1、组件介绍 2、NetworkManagerHUD 的核心功能 快速操作按钮 状态信息显示 场景切换支持 调试辅助 3、关键属性与配置 4、HUD 界面详解 【主机模式&#xff08;服务器客户端&#xff09;…...

UDP协议(20250303)

1. UDP UDP:用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;传输层协议之一&#xff08;UDP&#xff0c;TCP&#xff09; 2. 特性 发送数据时不需要建立链接&#xff0c;节省资源开销不安全不可靠的协议 //一般用在实时性比较高…...

【量化金融自学笔记】--开篇.基本术语及学习路径建议

在当今这个信息爆炸的时代&#xff0c;金融领域正经历着一场前所未有的变革。传统的金融分析方法逐渐被更加科学、精准的量化技术所取代。量化金融&#xff0c;这个曾经高不可攀的领域&#xff0c;如今正逐渐走进大众的视野。它将数学、统计学、计算机科学与金融学深度融合&…...

振弦采集仪多通道振弦采集终端 物联网振弦监测 智能振弦监测系统

振弦采集仪多通道振弦采集终端 物联网振弦监测 智能振弦监测系统 VD416_DIN 多通道振弦温度综合采集仪采用模块化设计&#xff0c;配备 32 通道传感器接口&#xff0c;支持两种高效工作模式&#xff1a;16 通道振弦频率与 16 通道温度同步采集&#xff0c;或 32 通道振弦频率专…...

Synchronized解析

一、底层原理&#xff1a;Monitor机制 对象锁与Monitor关联 synchronized通过对象锁实现互斥&#xff0c;每个Java对象都可以关联一个Monitor&#xff08;监视器&#xff09;&#xff0c;其底层由JVM用C实现。当线程进入synchronized代码块时&#xff0c;会尝试获取与锁对象关联…...

别再瞎学!C 语言入门看这篇就够了

目录 1. 如何学好C语言 2. C语言是什么&#xff1f; 3. C语⾔的历史和辉煌 4. 编译器的选择 4.1 编译和链接 4.2 编译器大比拼&#xff0c;VS2022 脱颖而出 4.3 VS2022 优缺点大揭秘 5. VS项⽬ 和 源⽂件、头⽂件介绍 6. 第一个C语言程序 7. main 函数&#xff1a;程序…...

Linux操作系统5-进程信号2(信号的4种产生方式,signal系统调用)

上篇文章&#xff1a;Linux操作系统5-进程信号1&#xff08;信号基础&#xff09;-CSDN博客 本篇Gitee仓库&#xff1a;myLerningCode/l25 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点&#xff1a;信号的4种产生 目录 一. signal系统调用 …...

【Groovy】Array、List、Set、Map简介

1 Array 1.1 创建数组 1.1.1 创建一维数组 int[] arr1 new int[2] arr1[0] 1 arr1[1] 2float[] arr2 new float[] { 1f, 2f, 3f } String[] arr3 ["abc", "xyz"] as String[] 1.1.2 创建二维数组 int[][] arr1 new int[2][2] arr1[0][0] 1 arr…...

DeepSeek与数据分析:现状、挑战与未来展望

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;的浪潮正以前所未有的速度席卷各个领域&#xff0c;数据分析作为众多行业决策的关键支撑&#xff0c;也不可避免地受到AI技术发展的深刻影响。近期&#xff0c;AI话题持续火热&#xff0c;不少企业老板要求员工…...

【通俗讲解电子电路】——从零开始理解生活中的电路(三)

实际应用案例&#xff1a;生活中的电子电路 ——拆解你身边的“隐形工程师” 1. 手电筒电路&#xff1a;最简单的直流系统 电路组成 电源&#xff1a;2节1.5V电池&#xff08;串联3V&#xff09;。 开关&#xff1a;按钮控制回路通断。 LED&#xff1a;发光二极管&#xff…...

JVM基本概念及内存管理模型

一、JVM基本概念 JVM&#xff08;Java Virtual Machine&#xff0c;Java 虚拟机&#xff09;是 Java 程序运行的核心组件。它负责将 Java 字节码转换为特定平台的机器指令&#xff0c;并提供内存管理、垃圾回收、安全性等功能。JVM 的主要功能包括以下&#xff1a; 加载和执行…...

【CPP面经】科大讯飞 腾讯后端开发面经分享

文章目录 C 面试问题整理基础问题简答1. 内存对齐2. this 指针3. 在成员函数中删除 this4. 引用占用内存吗&#xff1f;5. C 越界访问场景6. 进程通信方式7. 无锁队列实现8. ping 在哪一层&#xff1f;实现原理&#xff1f;9. HTTPS 流程10. GDB 使用及 CPU 高使用定位11. 智能…...

2.反向传播机制简述——大模型开发深度学习理论基础

在深度学习开发中&#xff0c;反向传播机制是训练神经网络不可或缺的一部分。它让模型能够通过不断调整权重&#xff0c;从而将预测误差最小化。本文将从实际开发角度出发&#xff0c;简要介绍反向传播机制的核心概念、基本流程、在现代网络中的扩展&#xff0c;以及如何利用自…...

使用Word时无法粘贴,弹出错误提示:运行时错误‘53‘:文件未找到:MathPage.WLL

报错说明 使用Word时无法粘贴&#xff0c;粘贴时弹出提示如下&#xff1a; 一般出现这种情况时&#xff0c;我想你是刚装完MathType不久&#xff0c;博主装的是MathType7版本&#xff0c;出现了这个问题。 出现这个问题的原因是"mathpage.wll"这个文件在Office的插…...

详解matplotlib隐式pyplot法和显式axes法

Python的matplotlib提供了pyplot隐式方法和显式Axes方法&#xff0c;这让很多人在选择时感到困惑。本文用9000字彻底解析两种方法的区别与适用场景&#xff0c;节选自&#x1f449;Python matplotlib保姆级教程 matplotlib隐式绘图方法&#xff08;pyplot&#xff09; matplot…...

100天精通Python(爬虫篇)——第113天:爬虫基础模块之urllib详细教程大全

文章目录 1. urllib概述2. urllib.request模块 1. urllib.request.urlopen()2. urllib.request.urlretrieve()3. urllib.request.Request()4. urllib.request.install_opener()5. urllib.request.build_opener()6. urllib.request.AbstractBasicAuthHandler7. urllib.request.…...

FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…...

Leetcode LRU缓存

LRU 缓存算法思想及代码解析 算法思想 LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;缓存 需要满足以下要求&#xff1a; 在 O(1) 时间复杂度内完成 get 和 put 操作。当缓存满时&#xff0c;删除最近最少使用的元素&#xff08;即最久没有被访问…...

结合PyMuPDF+pdfplumber,删除PDF指定文本后面的内容

🚀 一、需求场景解析 在日常办公中,我们经常会遇到这样的痛点: 合同处理:收到上百份PDF合同,需要找到"签署页"之后的内容并删除报表加工:批量移除财务报表中的敏感数据区域文档归档:快速提取技术文档的关键章节传统的手动操作方式存在三大致命缺陷: ❗ 耗时…...

【NLP 30、文本匹配任务 —— 传统机器学习算法】

目录 一、文本匹配任务的定义 1.狭义解释 2.广义解释 二、文本匹配的应用 1.问答对话 2.信息检索 3.文本匹配任务应用 三、智能问答 1.智能问答的基本思路 依照基础资源划分&#xff1a; 依照答案产出方式划分 依照NLP相关技术划分 四、智能问答的价值 1.智能客服 2.Faq知识库问…...

修改hosts文件,修改安全属性,建立自己的DNS

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

springboot + mybatis-plus + druid

目录架构 config MyMetaObjectHandler.java package com.example.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;import java.util.Date;Com…...

【零基础到精通Java合集】第十一集:List集合框架与泛型

课程标题:List集合框架与泛型(15分钟) 目标:掌握泛型在List中的应用,理解类型安全的重要性,熟练操作泛型集合 0-1分钟:泛型List的意义引入 以“分类储物箱”类比泛型List:明确容器内元素类型(如只能放书籍)。说明泛型的核心作用——编译时类型检查,避免运行时类型…...

计算机网络——子网掩码

一、子网掩码是什么&#xff1f;它长什么样&#xff1f; 子网掩码的定义 子网掩码是一个32位的二进制数字&#xff0c;与IP地址“配对使用”&#xff0c;用于标识IP地址中哪部分属于网络地址&#xff0c;哪部分属于主机地址。 示例&#xff1a;IP地址 192.168.1.10&#xff0c;…...

[自然语言处理]pytorch概述--什么是张量(Tensor)和基本操作

pytorch概述 PyTorch 是⼀个开源的深度学习框架&#xff0c;由 Facebook 的⼈⼯智能研究团队开发和维护&#xff0c;于2017年在GitHub上开源&#xff0c;在学术界和⼯业界都得到了⼴泛应⽤ pytorch能做什么 GPU加速自动求导常用网络层 pytorch基础 量的概念 标量&#xf…...

18.5 ChatGLM2-6B 开源协议深度解读:自由与约束的平衡之道

ChatGLM2-6B 开源协议深度解读:自由与约束的平衡之道 关键词:ChatGLM2 开源协议, 模型授权合规, 商业使用限制, 技术伦理条款, 国产大模型治理 1. 协议核心条款全景解析 ChatGLM2-6B 采用 分层授权模式,其核心条款可归纳为三大维度: #mermaid-svg-xgEnsN0y2TMOR0Hf {font…...

javaweb自用笔记:Vue

Vue 什么是vue vue案例 1、引入vue.js文件 2、定义vue对象 3、定义vue接管的区域el 4、定义数据模型data 5、定义视图div 6、通过标签v-model来绑定数据模型 7、{{message}}直接将数据模型message展示出来 8、由于vue的双向数据绑定&#xff0c;当视图层标签input里的…...

FreeRTOS 源码结构解析与 STM32 HAL 库移植实践(任务创建、删除篇)

1. FreeRTOS源码结构介绍 1.1 下载源码 ​ 点击官网地址&#xff0c;选择 FreeRTOS 202212.01非 LTS 版本&#xff08;非长期支持版&#xff09;&#xff0c;因为这个版本有着最全的历程和更多型号处理器支持。 1.2 文件夹结构介绍 ​ 下载后主文件 FreeRTOSv202212.01 下包…...

第五节:基于Winform框架的串口助手小项目---串口收发《C#编程》

“路漫漫其修远兮&#xff0c;吾将上下而求索” &#xff0c; -----------------------WHAPPY 目标任务&#xff1a; 1 从本地设备列表获取串口。 RegistryKey keyCom Registry.LocalMachine.OpenSubKey("Hardware\DeviceMap\SerialComm"); RegistryKey 是.NET 框…...

CSS2.1基础学习

1.定位盒模型相关 2.浮动 3.使用定位实现三列布局(不可取&#xff0c;定位父级为初始包含块) 4.使用浮动实现三列布局(不可取的原因是中间主列无法优先加载) 5.圣杯布局 6.等高布局 7.双飞翼布局 8.解决IE6下fixed失效问题 9.短暂总结 10.粘连布局 11.BFC是什么 12.BFC实现两列…...

alpine linux 系统最新版安装及使用教程

1.下载镜像包 官网地址 官网下载阿里云镜像站下载华为云镜像站下载清华大学镜像站下载中科大镜像站下载 官方安装文档 2.新建虚拟机 3.编辑虚拟机并开机 4.虚拟机安装 开启虚拟机 首次启动使用root登录&#xff0c;没有密码 登录成功&#xff0c;执行 setup-alpine 命令进…...

【Hudi-SQL DDL创建表语法】

CREATE TABLE 命令功能 CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。 命令格式 CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name[ (columnTypeList)]USING hudi[ COMMENT table_comment ][ LOCATION location_path ][ OPTIONS (options_lis…...

[Web 安全] PHP 反序列化漏洞 —— POP 链构造思路

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 0x01&#xff1a;什么是 POP 链&#xff1f; POP 链&#xff08;Payload On Purpose Chain&#xff09;是一种利用 PHP 中的魔法方法进行多次跳转以获取敏感数据的技术。它通常出现在 CTF…...

GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代

目录 文章目录 目录1960s~1999&#xff1a;GPU 的诞生&#xff1a;光栅化&#xff08;Rasterization&#xff09;3D 渲染算法的硬件化实现之路学术界算法研究历程工业界产品研发历程光栅化技术原理光栅化技术的软件实现&#xff1a;OpenGL 3D 渲染管线设计1. 顶点处理&#xff…...

除了DeepSpeed,在训练和推理的时候,显存不足还有什么优化方法吗?FlashAttention 具体是怎么做的

除了DeepSpeed&#xff0c;训练和推理时显存不足的优化方法及FlashAttention原理详解 DeepSpeed的基础内容&#xff1a;ZeRO分布式训练策略 一、显存不足的优化方法 1. 混合精度训练&#xff08;Mixed Precision Training&#xff09; 原理 使用FP16和FP32混合精度&#xff…...

GCC RISCV 后端 -- GCC 后端框架的一些理解

GCC 已经提供了一整套的编译框架&#xff0c;从前端&#xff08;Frontend / GENERIC-Tree&#xff09;对编程语言的语法语义处理&#xff0c;到中端&#xff08;Middle-End / GIMPLE-Tree&#xff09;的目标机器无关&#xff08;Target Indepndent&#xff09;的优化处理&#…...