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

计算机图形学知识点汇总

一、计算机图形学定义与内容

1.图形 

        图形分为“图”和“形”两部分。

        其中,“形”指形体或形状,存在于客观世界和虚拟世界,它的本质是“表示”;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面,用于表达“形”,是“形”的视觉表现,它的本质是“表现”

        “图”和“形”的关系是:“形”是“图”之源,是“图”之根本,是“图”的基础;“图”是“形”的载体,是“形”的表现

        综合理解,图形就是变现物体几何信息图画

        计算机图形学中的图形对象通常由点、变、面、环、体等基本几何元素构成。

        字符图形常见有两种表示方法,分别是矢量字符点阵字符

        描述图形数据要包括两部分,一部分是几何信息,另一部分是拓扑信息

        “图形”作为计算机图形学的基本研究内容,其表示形式通常有两种,其中更节约内存的表示形式是参数表示法

2.图像

        从广义上说,图像是对自然界的客观事物反映,也是一个不断发展的概念。

        从本质上来说,图像是记录在介质上客观对象的映像。对于计算机这种介质而言,它就是数字图像,如计算机显示器商所显示的就是数字图像,它室友像素组成的矩阵光栅来显示不同的图图像,其中每一个像素具有不同的颜色信息。

        屏幕上最小的显示单元叫做像素,它的多少叫做分辨率

3.图形、图像对比

        基本元素:图形:点、线、面等几何元素;

                          图像:像素。

        存储数据:图形:各个矢量的参数(属性);

                          图像:各个像素的灰度或颜色分量。

        处理方式:图形:旋转、扭曲、拉伸等;

                          图像:对比度增强、边缘检测等。

        缩放结果:图形:不会失真,可以适应不同的分辨率;

                          图像:放大时会失真,可以看到颗粒状像素。

        其他:图形:不是客观存在的,是根据客观事物而主观形成的;

                   图像:对客观事物的真实描述。

        图形和图像的实质是矢量图点位图的关系。

        

4.计算机图形学的定义

        国际标准化组织将其定义为:计算机图形学是研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理、方法和技术的学科。

        国内常见的定义如下:计算机图形学是利用计算机研究图形的表示、生成、处理和显示的学科;计算机图形学是研究在计算机中如何构建图形,并把图形的描述数据(数学模型)通过指定的算法转化成图形显示的一门学科。

        计算机图形学的主要内容包括两方面:(1)将场景对象转换为图形(2)将转换后的图形显示出来。

5.图形学相关学科

        数据可视化、数字图像处理、机器视觉、计算几何、计算机辅助几何设计等。

        与计算机图形学的研究内容形成互逆关系的学科是图像处理

        属于计算机图形学相关学科的是:计算几何、图像处理、计算机视觉,不属于的是:人工智能。

6.计算机图形学的应用领域

        (1)计算机辅助设计与制造

        (2)科学计算可视化

        (3)虚拟现实

        (4)动画

7.计算机图形学发展简史

        (1)计算机图形学的诞生(1950--1960年)

        (2)线框图形(1960--1970年)

        伊凡.萨瑟兰(lvan E.Sutherland)首次在论文中提出了“计算机图形学”感念,确定了计算机图形学作为一个独立科学分支的地位。

        (3)光栅图形学(1970--1980年)

        (4)真实感图形学(1980--1990年)

        (5)实时图形学(1990年至今)

二、图形系统

1.图形系统组成

图形软件:(1)图形应用软件:二维--AutoCAD、Illustrator;三维--Maya、3ds Max。

                  (2)图形支撑软件:功能子程序、基本子程序、图形设备驱动程序。(OpenGL、WebGL、DirectX、java2D、java3D)

                  (3)图形应用数据结构:图形数据文件、图形基元模型、几何描述数据。

        常用的图形库OpenGL,属于图形系统的图形支撑软件部分。

        OpenGL是一个跨平台的图形API,广泛用于2D和3D图形渲染,支持Windows、Linux、macOS等操作系统。

        在OpenGL中,glPushMatrix()和glPopMatrix()用于保存和恢复当前的距阵状态。

图形硬件:(1)图形输入设备。

                  (2)图形处理设备:中央处理器CPU、图形处理器GPU。

                  (3)图形输出设备:图形显示设备、图形绘制设备。

        在计算机图形系统中,负责捕捉用户输入的硬件设备是鼠标和键盘

        触摸屏是输入输出设备。

        图形程序 = 图形算法 + 图形应用数据结构

    

2.图形显示方式

        (1)随机扫描显示

        (2)光栅扫描显示

        计算机图形显示器一般使用RGB颜色模型。

        计算机绘制设备一般使用CMY颜色模型。

3.图形流水线三阶段

        应用程序阶段-----几何处理阶段-----光栅阶段(像素处理)

        图像显示与图形复杂度相关不是光栅扫描显示器的特征,画点设备、存在锯齿现象、支持真实感图形显示是光栅扫描显示器的特征。

        图形流水线的光栅化阶段的主要任务为生成最终图像的像素

4.图形流水线关键步骤

顶点----->几何处理器----->光栅化器----->片元处理器----->帧缓存----->显示

GLSL的全称(英文表达)是:OpenGL shading Language

ODBC不属于图形标准,PHIGS、OpenGL、GKS属于图形标准。

GKS是计算机图形官方标准。

三、二维基本图形光栅化与裁剪

1.数值微分算法(DDA)

        算法思想:求出斜率k,每次在x和y上,分别加上成比例的小增量xn和yn得到下一个点。

        该方法在精度无限高的情况下,可以生成精确无误的直线,但由于光栅显示器栅格的问题,导致xn和yn每次只能取单位步长。

        当k小于1时,直线在x轴上增速快,直线的下一个点取值:x1=x+1;y1=y+k。y点坐标求出小数,四舍五入,注意计算下个点y2时应:y2=y1+k。

        平面中有一条直线段,起点P1(0,0),终点P2(5,2),利用DDA算法扫描转换该直线,如果当前点亮的像素点(2,1),则下一次点亮的像素点是( 3,1)。

2.Bresenham画线法

        算法思想:直线的斜截式y=kx+b,以直线划分,F(x,y)>0点在直线上方,F(x,y)=0点在直线上,F(x,y)<0点在直线下方。

        假定0<=k<=1,x是最大位移方向,如下图,M为Pu和Pd的中点,M为直线与Pu和Pd间网格的交点,Q>M,取Pu,Q<M,取Pd。

计算方法:

例题:

 

 Bresenham画圆算法

        Bresenham画圆算法适合于生成整圆,他利用对称性,只计算出90~45度内的点,移动方向为+x,-y。

3. 中点画线算法

        和Bresenham画线算法类似,但判别规则略有不同,绘制效率完全不同。

在0<k<1情况下:

(1)起点(x0,y0)终点(xn,yn)

(2)d0=(xn-x0)- 2(yn-y1);d<0时,d=d+2(xn-x1)-2(yn-y1);d>=0时,d=d-2(yn-y1)

中点画圆法与Bresenham画圆法类似。

在直线光栅化过程中,当直线的斜率大于1时,增量变化较大的方向是Y方向

3. 多边形扫描算法

(1)求交点:计算当前扫描线与多边形所有变得交点。

(2)排序与配对:把所有交点按x值递增顺序排序,排序后的交点两两配成区间。

(3)填色:将各区内的像素值设置为目标颜色值。

另一顶点的xy(max)1/knext

例题:

        多边形扫描线填充算法四个步骤中,保证填充无误的关键步骤是交点配对 。

        多边形扫描算法为了提高算法效率,引进了一套数据结构,如活性边表,新边表等。

        x扫描线算法中的几个主要步骤的正确顺序是求交--排序--配对--填色,那么其中比较耗费时间且能优化的运算是:求交--排序

4.种子填充算法

        种子填充算法从一个给定的 “种子点”(通常位于要填充区域的内部)开始,然后按照四联通(上、下、左、有)或八联通(上、上左、上右、下、下左、下右、左、右)规则将颜色扩展到整个区域。

实现步骤:

        (1)初始化,向堆栈压入种子点像素,当堆栈不为空时,重复执行以下步。

        (2)从包含种子像素的堆栈中推出区段内的种子像素。

        (3)沿着扫描线,对种子像素的左右像素进行填充,直至遇到边界像素为止。

        (4)区段内最左和最右像素记为xl和xr,在此区间内,检查与当前扫描线相邻的上下两条扫描线是否全为边界像素或已被填充过。

        (5)如果经测试,这些扫描线上的像素段需要填充,则在xl和xr区检范围内,把每一段的最右像素作为种子像素,并压入堆栈。

        四联通区域内的每一像素可以通过上下左右四个方向组合到达。

5.反走样技术

(1)提高分辨率

(2)简单区域采样

(3)加权区域采样

反走样技术的主要目的为减少图形中的锯齿现象

不能获得反走样效果的是:增强图像的显示亮度

6.Cohen-Sutherland编码裁剪算法

        将窗口分为九个区域,每个区域编号如下图,四个数字按照上、下、左、右顺序表示。

        取直线端点,按位与,判断直线“取之”或“弃之”。

        Cohen-Sutherland直线段裁剪算法中,按照(上下右左)给出四位编码,若线段起点编码为(1001),终点编码为(0101),则该线段属于弃之情况。

        三维Cohen-Surtherland裁剪算法中直线端点编码需要的位数是6

        

7.Liang-Barsky参数化裁剪算法

         Liang-Barsky算法的思想是把被裁剪的线段看成是有向线段。

8.多边形裁剪

        多边形裁剪不能简单地用直线裁剪算法对多边形各边进行裁剪来实现。

        主要解决两个问题:(1)一个封闭的多边形被裁剪后通常变得不再封闭,需要用窗口边界的适当部分来封闭。

(2)一个凹多边形被裁剪后可能形成几个小多边形,要正确封闭他们。

        将多边形外部一点A与某一点B用线段连接,若此线段与多边形边界相交的次数为偶数,则点B在多边形外部,若此线段与多边形边界相交的次数为奇数,则点B在多边形内部。

         任意的简单多面体,其面(F)、边(E)、顶点(V)的数目需满足的公式为:V+F-E=2

四、图形几何变换

1.其次坐标

        在图形变换中引入齐次坐标的目的是:统一表示几种变换,便于计算

二维几何的基本变换矩阵:

例题: 

        错切:是一种使对象形状发生变化的变换,经过错切的对象好像是由相互滑动的内部夹层组成。错切变换可通过旋转和缩放变换组合得到。 

        二维几何变换的基本类型包括平移、旋转、缩放、对称和错切

错切变换:可能引起图形角度改变,可能会发生图形畸变。

平移变换:不改变图形大小和形状,只改变图形位置。

旋转变换:各图形部分间的线性关系和角度关系不变,直线的长度不变。

比例变换:不改变图形的连接关系和平行关系。

2.逆变换

(1)逆平移变换

(2)逆旋转变换

(3)逆缩放变换

        齐次坐标的特点:用n+1维向量表示一个n维向量;将图形变换统一为图形的坐标矩阵与某一变换矩阵项城的形式;易于表示无穷远点。不是齐次坐标特点:一个n维向量的齐次坐标表示是唯一的。

        三维空间点p(x,y,z)的规范化齐次坐标表示为(x,y,z,1)。

二维坐标变换、二维坐标系变换、三维几何变换、三维符合变换、三维坐标系变换,不展开说了。

五、三维观察

流程:模型坐标--->世界坐标--->观察坐标--->投影坐标--->屏幕坐标

        一般情况下,片元着色器是进行模型变换、视图变换等工作的着色器。

(1)模型变换:模型坐标系(局部坐标系)中构建的物体放到统一的世界坐标系(全局坐标系)的过程中,跟据场景的需要所进行的组合变换。

(2)观察变换:在世界坐标系中设定了观察坐标系后,物体从世界坐标系下世界坐标到观察坐标系下观察坐标的变换,也称试点变换或视图变换。

(3)投影变换:在观察坐标系中设定投影平面(观察平面)和投影最欧标系后,将三维物体的观察坐标通过投影的方式变换为投影坐标系下投影坐标的过程。

(4)视口变换:从投影坐标系中的观察窗口到设备设备坐标系中某个指定视区的变换。

        窗口到视区的映射是一个“保持比例”的映射。

        会产生变换前后维度改变的是:投影变换;不会变换的是:建模变换、观察变换、视口变换。

        在三维观察流程中,视图变换的主要目的是将物体从世界坐标系转换到观察坐标系

        三维观察流程中,坐标变换的正确次序应为:观察变换--->投影变换--->视口变换

        物体经过透视投影后可产生缩小的效果。

        透视投影比平行投影更富有立体感和真实感。

        太阳光线产生的投影为平行投影。

        投影变换可分为平行投影透视投影两大类。

        透视投影中,主灭点的个数最多有3

        

六、三维造型

1.计算机表示方法

(1)多边形网格表示:将物体表面看成由多边形网格拼接而成。

(2)曲线/曲面表示:曲面和曲线方程能表示为非参数形式或参数形式。

        刻画曲线扭曲程度的参数是挠率。

        在曲线、曲面的方程表示上,参数方程比显式、隐式方程有更多的优越性。

        参数方程又分为代数和几何两种形式。 

(3)细分表示:通过一些基本的空间元素来表示对象,主要包括体素表示法、八叉树表示法等。

         在规则造型技术中,八叉树是一种经典的技术,它属于空间分割表示造型方法。

2.多边形网格表示

(1)基本集合元素:点、边、面、环和体。

(2)几何信息和拓扑信息:几何信息-->用来描述物体的位置和大小。拓扑信息-->用来描述点、棱边及面片之间的邻接关系。

(3)常用的数据结构:翼边数据结构、对称数据结构、半边数据结构。

3.曲面/曲线造型 

(1)插值与逼近:给定一组有序的数据点,构造一条曲线顺序通过这些数据点,并用它近似已知曲线,成为对这些数据点进行插值,所构造的曲线称为插值曲线。推广到曲面,成为插值曲面。

(2)Bezier曲面/曲线

Bezier曲线的性质:端点性质、对称性、凸包性、仿射不变性

缺点:(1)曲线的阶数是由特征多边形顶点个数决定的,n个控制点产生n-1次的Bezier曲线。

          (2)由于Bernstein调和函数在[1,0]区间内均大于等于0,这使Beizer曲线不能做局部修改。

          (3)虽然可以通过在点集中插图一些点来满足多段Bezier曲线的光滑条件,但这种方法显示很不方便。

        Bezier基函数有n+1项,n+1个基函数的和等于1

(3)B样条曲线/曲面

        为了克服Bezier曲线缺点提出的。

        特点:局部调整性、凸包性、几何不变性、变差减少性、造型灵活等。

        N次B样条曲线具有N-1阶参数连续性。

(4)NURBS曲线/曲面

        改进的B样条方法,保留了它描述自由行曲线与曲面强大能力的同时,扩充其统一表示二次曲线与曲面的能力。这个方法就是有理样条方法。由于在形状描述实践中,有理样条经常以非均匀类型出现,二均匀、非均匀、准均匀、分段Bezier三种类型又可看成非均匀类型的特例,因此人们习惯称之为非均匀有理B样条方法。

        优点:

        即为自由型曲线/曲面也为初等曲线/曲面的精确表示与设计提供了一个公共的数学形式,一个统一的数据库就能够存储这两类形状信息。

        为了修改曲线/曲面的形状,即可以借助调整控制顶点,又可以利用全因子,因而具有较大的灵活性。

        计算稳定且速度快。

        有明确的几何解释,对于有良好的几何知识尤其是画法几何知识的设计人员特别有用。

        NURBS(非均匀有条理B样条)方法是一种主要用于描述任意维度的光滑曲线和曲面类型的几何形状的方法。

        曲线和曲面的表示形式有显式函数方程、隐式函数方程和参数方程三种形式。

        构造实体几何法将实体表示成立方体、长方体、圆柱体、圆锥体等基本体素的组合,可以采用并、交、差等运算构造新的形体。

        

七、真实感图形技术

1.消隐算法

(1)后相面消除

工作原理

  1. 确定面的朝向:在三维空间中,每个三角形面都有一个法向量(Normal Vector),它垂直于该面。法向量的方向可以用来确定面的朝向。通过计算三角形面的法向量与从观察者到该面中心的向量之间的夹角,可以判断该面是前向面还是后向面。
  2. 剔除后向面:如果夹角大于 90 度,说明该面的法向量背向观察者,这个面就是后向面,可以被剔除,不进行渲染;如果夹角小于等于 90 度,则该面是前向面,需要进行渲染。

(2)深度缓冲器算法(z缓存算法)

算法原理

  1. 深度缓冲器的概念:深度缓冲器是一个与屏幕像素点一一对应的二维数组,其大小与屏幕分辨率相同。每个元素存储了对应像素点处物体表面到视点(观察者位置)的距离,通常用  值表示。初始时,深度缓冲器中的所有值被设置为一个很大的数(表示无穷远)。
  2. 颜色缓冲器:同时存在一个颜色缓冲器,用于存储每个像素最终显示的颜色。
  3. 渲染过程:在渲染场景时,对于每个要绘制的多边形(或三角形),计算多边形上每个像素点的  值(即该点到视点的距离)。然后将这个  值与深度缓冲器中对应像素点的当前  值进行比较:

        如果计算得到的  值小于深度缓冲器中的值,说明该像素点对应的多边形表面更靠近视点,当前多边形的颜色应该显示在该像素上。此时,更新深度缓冲器中对应像素点的  值为计算得到的较小值,并将颜色缓冲器中对应像素点的颜色更新为当前多边形的颜色。

        如果计算得到的  值大于或等于深度缓冲器中的值,说明该像素点对应的多边形表面在后面,不需要更新深度缓冲器和颜色缓冲器。

        在多边形面片数量非常大的情况下,消隐算法速度最快的是深度缓存算法(Z-Buffer)

        在Z缓冲器消隐算法中,Z缓冲器每个段元存储的信息是每一个像素点的深度值

(3)画家算法

算法原理

        画家算法的灵感来源于画家绘画的过程。画家在画布上作画时,会先画远处的物体,然后逐渐画近处的物体,这样近处的物体就会自然地覆盖远处的物体。在计算机图形学中,我们可以将场景中的物体按照它们到视点(观察者)的距离进行排序,距离远的物体先绘制,距离近的物体后绘制,这样在绘制过程中,近处的物体就会覆盖远处的物体,从而正确地解决可见性问题。

        适用于固定视点的消隐。

        消隐算法按照消隐空间的不同分为物体空间消隐算法和图像空间消隐算法。

        

2.光照明模型

(1)环境光:物体和环境间多次反射,最终达到平衡时的一种光。

(2)漫反射光:全局漫反射光照效果的一种近似。

(3)镜面反射光:反射光集中在一个反向,并遵守反射定律。

Phong光照明模型:第一个有影响的光照明模型。

Whitted光照明模型:第一次给出光线追踪算法的范例。

        当观察光照下的光滑物体表面时,在某个方向上看到高光或强光,这个现象称为镜面反射

        在真实感显示过程中,不属于简单光照明模型中光线类型的是:透射光线。属于的是:环境反射光线、漫反射光线、镜面反射光线。

        在光线跟踪(Ray Tracing)算法中,应继续跟踪光线的情况是:光线与到某一物体

3.着色

(1)均匀着色:恒定光强对多边形着色。

(2)平滑着色(Gouraud着色):双线性插值着色。

(3)Phong着色:保留双线性插值,对多边形边上的点和区域内的点,采用增量法。

        Gouraud明暗处理采用双线性光强插值算法.

4.纹理映射技术

(1)颜色纹理映射

(2)几何纹理映射 

(3)环境映射

        在纹理映射中,常用的纹理坐标范围是[0,1]

        在真实感纹理技术中,纹理类型主要有颜色纹理几何纹理两种。

课程推荐:mooc华中科技大学,计算机图形学计算机图形学_华中科技大学_中国大学MOOC(慕课)

 附加练习题:计算机图形学3套卷含答案_计算机图形学3套试卷含答案csdn-CSDN博客

相关文章:

计算机图形学知识点汇总

一、计算机图形学定义与内容 1.图形 图形分为“图”和“形”两部分。 其中&#xff0c;“形”指形体或形状&#xff0c;存在于客观世界和虚拟世界&#xff0c;它的本质是“表示”&#xff1b;而图则是包含几何信息与属性信息的点、线等基本图元构成的画面&#xff0c;用于表达…...

【EtherCATBasics】- KRTS C++示例精讲(2)

EtherCATBasics示例讲解 目录 EtherCATBasics示例讲解结构说明代码讲解 项目打开请查看【BaseFunction精讲】。 结构说明 EtherCATBasics&#xff1a;应用层程序&#xff0c;主要用于人机交互、数据显示、内核层数据交互等&#xff1b; EtherCATBasics.h &#xff1a; 数据定义…...

AI 简史:从神经元到现代大模型

AI 简史&#xff1a;从神经元到现代大模型 人工智能 (AI) 和深度学习 (DL) 在过去的几十年中飞速发展&#xff0c;推动了计算机视觉、自然语言处理和机器人等领域的进步。今年的诺贝尔物理学奖更是颁给了美国科学家约翰霍普菲尔德 (John Hopfield&#xff09;和英国科学家杰弗…...

Kotlin入门到深入加强(1):基本介绍和第一个程序

吧&#xff0c; 一.关于本章和Kotlin 本章内容如要简单介绍一下Kotlin和创建并执行第一个Kotlin程序 什么是Kotlin,优势是什么,它和JAVA的关系又是什么 Kotlin是一种静态类型的编程语言&#xff0c;它运行在Java虚拟机上&#xff0c;并且可以与现有的Java代码无缝集成。Kotl…...

走进 Web3:探索分布式网络的未来

随着互联网的不断演变&#xff0c;我们正站在一个全新阶段的门槛上——Web3。它是对传统互联网&#xff08;Web2&#xff09;的一次深刻反思与升级&#xff0c;标志着一个去中心化、更加自主的数字世界的到来。Web3不仅仅是技术的革新&#xff0c;更代表着对互联网价值体系的根…...

信管通低代码信息管理系统应用平台

目前&#xff0c;国家统一要求事业单位的电脑都要进行国产化替代&#xff0c;替代后使用的操作系统都是基于linux的&#xff0c;所有以前在WINDOWS下运行的系统都不能使用了&#xff0c;再者&#xff0c;各单位的软件都很零散&#xff0c;没有统一起来。需要把日常办公相关的软…...

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…...

硬件设计:RS232电平标准

RS232是一种常用的串行通信接口标准&#xff0c;主要用于计算机和外部设备之间的数据传输。以下是RS232电平标准的详细介绍&#xff1a; 1. 电气特性&#xff1a; 信号电平&#xff1a; 逻辑1 (MARK)&#xff1a;-3V到-15V之间。通常&#xff0c;-5V到-15V之间为有效的逻辑1。…...

前端初学基础

一.Web开发 前端三件 HTML &#xff0c;页面展现 CSS&#xff0c;样式 JS(JavaScript),动起来 二&#xff0c;HTML 1.HTML概念 网页&#xff0c;网站中的一个页面&#xff0c;网页是构成网站的基本元素&#xff0c;是承载各种网站应用的平台。通俗的说&#xff0c;网站就…...

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc

在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc &#x1f4d6; 前言 在 CentOS 7 上使用 NVM 安装 Node.js 后&#xff0c;可能会遇到如下问题&#xff1a; node: /lib64/libm.so.6: version GLIBC_2.27’ not found (required by node) node: /lib64/libc.so.6:…...

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS&#xff0c;点击添加 3.搜索你要的工具&#xff0c;选中点击确定就添加了 4.回到上面一个界面&#xff0c;选中你要放到工具栏的工具&#xff0c;点击应用就好了 5.修改图标&#xff0c;快捷键或者右击选中编辑图标 6.选择你要的图标就好了...

C++简明教程(10)(初识类)

类的教程 C 类的完整教程 C 中&#xff0c;类&#xff08;class&#xff09;是面向对象编程的核心概念&#xff0c;用于定义对象的属性&#xff08;数据成员&#xff09;和行为&#xff08;成员函数&#xff09;。本教程将带你从零开始&#xff0c;循序渐进地学习如何定义和使…...

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...

ctfshow-jwt

将信息进行安全的封装&#xff0c;以json的方式传递 三部分分别是: Header { typ: JWT token类型 alg: HS256 算法名称 } 将这个信息进行base64加密&#xff0c;构成了第一部分 payload载荷&#xff0c;存放主要信息的地方 { "sub": 1234567890, 标准中注册的…...

植物大战僵尸融合版,真无双版,喵版,抽卡版,杂交版v3

我用夸克网盘分享了「植物大战僵尸」链接&#xff1a; https://pan.quark.cn/s/11a45054a4da 融合版‌的作者为B站up主蓝飘飘fly。该版本在原版植物基础上创新地将两种不同的植物种植在一起进行融合&#xff0c;创造出独特的游戏体验‌。‌抽卡版、喵版、无双版是由B站UP主【时…...

将Minio设置为Django的默认Storage(django-storages)

这里写自定义目录标题 前置说明静态文件收集静态文件 使用django-storages来使Django集成Minio安装依赖settings.py测试收集静态文件测试媒体文件 前置说明 静态文件 Django默认的Storage是本地&#xff0c;项目中的CSS、图片、JS都是静态文件。一般会将静态文件放到一个单独…...

MaaS(Model as a Service)

1.MasS是什么&#xff1f; Model as a Service&#xff08;MaaS&#xff09;是一种云计算服务模式&#xff0c;它允许用户通过互联网访问和使用机器学习模型&#xff0c;而不需要自行构建和维护这些模型。MaaS提供了模型的托管、管理和监控&#xff0c;使用户能够专注于应用程…...

Docker怎么关闭容器开机自启,批量好几个容器一起操作?

环境&#xff1a; WSL2 docker v25 问题描述&#xff1a; Docker怎么关闭容器开机自启&#xff0c;批量好几个容器一起操作&#xff1f; 解决方案&#xff1a; 在 Docker 中&#xff0c;您可以使用多种方法来关闭容器并配置它们是否在系统启动时自动启动。以下是具体步骤和…...

训练时开Dropout,推理时不开Dropout的原因以及推理过程是怎样的?(中英双语)

Dropout的概念与应用&#xff1a;基于Transformer模型的深入解析 在深度学习中&#xff0c;Dropout 是一种常用的正则化技术&#xff0c;主要用于防止神经网络的过拟合。在训练过程中&#xff0c;Dropout通过随机丢弃神经网络中的一部分神经元&#xff0c;降低了网络的复杂度&…...

STL heap原理和用法

在C STL&#xff08;标准模板库&#xff09;中&#xff0c;heap&#xff08;堆&#xff09;并不是一个独立的容器&#xff0c;而是一组基于容器&#xff08;通常是 vector&#xff09;实现的算法函数&#xff0c;用于将一段数据组织成堆的数据结构形式&#xff0c;并提供了一些…...

【DRAM存储器四十三】LPDDR5介绍--寻址

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《某LPDDR5数据手册》 、《JESD209-5C》 前面我们介绍的LPDDR5一个die的数据位宽...

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…...

Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解

文章目录 概述结构案例实现优缺点及使用场景 概述 享元模式也叫蝇量模式&#xff1a;运用共享技术有效地支持大量细粒度的对象&#xff1b; 常用于系统底层开发&#xff0c;解决系统的性能问题。像数据库连接池&#xff0c;里面都是创建好的连接对象&#xff0c;在这些连接对象…...

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…...

肿瘤电场治疗费用

肿瘤电场治疗作为一种前沿的肿瘤治疗方法&#xff0c;近年来备受关注。该方法通过利用特定频率的交流电场&#xff0c;作用于恶性肿瘤细胞&#xff0c;以达到抑制肿瘤生长的目的。然而&#xff0c;随着这种治疗方法的普及&#xff0c;其费用问题也逐渐成为患者和家属关注的焦点…...

datatables快速入门

官网 进入官网https://datatables.net/ 点击下载 支持多种方式下载 快速入门 这里以cdn的方式演示 https://cdn.datatables.net/ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport&…...

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统&#xff0c; Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 体验地址&#xff1a;http://blog.gaoredu.com/ 今天&#xff0c;我们自豪地宣布ReactPress 1.6.0版本的正式发布&#xff0c;…...

我的创作纪念日(五年)

慕然回首 平平无奇的周一早晨&#xff0c;收到来自csdn的提醒&#xff0c;创作纪念日五周年了&#xff0c;这也意味着我从事开发行业差不多有整整五年了&#xff0c;五年啊&#xff01;你知道这五年我是怎么过的吗&#xff1f;一句Just do IT&#xff0c;我做it整整做了五年&am…...

企业AI助理背后的技术架构:从数据到智能决策

在当今数字化时代&#xff0c;企业AI助理已经成为推动企业数字化转型和智能化升级的重要工具。它们通过整合企业内外部数据资源&#xff0c;运用先进的算法和模型&#xff0c;为企业提供高效、精准的智能决策支持。本文将深入探讨企业AI助理背后的技术架构&#xff0c;从数据收…...

主流AI视频生成工具|Sora零基础入门指南

Sora是什么&#xff1f; Sora 是 OpenAI 推出的新一代 AI 视频生成工具。它能让用户通过简单的文本描述或图片提示&#xff0c;快速生成高质量的视频内容。无论是广告短片、创意视频&#xff0c;还是实验性艺术作品&#xff0c;Sora 都能帮助创作者以极低的门槛实现自己的想法。…...

单元测试/系统测试/集成测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、单元测试的概念 单元测试是对软件基本组成单元进行的测试&#xff0c;如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…...

前端文件下载多方式集合

基于vueelement UI框架 // ts-ignore import axios from "axios"; import { ElMessage } from "element-plus"; import webConfig from "/config";class FileDownload {/*** 文件流下载* param url string 下载地址* param params object 请求…...

PG备份恢复--pg_dump

pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时&#xff0c;给数据库打了一个快照&#xff0c;且在 pg_dump 运行过程 中发生的更新将不会被备份。 …...

Java进阶学习笔记|面向对象

第一章.类和对象 1.面向对象的介绍 1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为 -> 找个盆,放点水,找个搓衣板,搓搓搓 2.面向对象:自己的事情别人帮忙去干,代表语言Java语言 洗衣服:自己的事情别人干 -> 全自动洗衣机3.为啥要使用面向对…...

ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)

一、简介&#xff08;节选手册&#xff09; 资料参考https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32h2/api-reference/peripherals/adc_calibration.html 1 概述 ESP32-H2 搭载了以下模拟外设&#xff1a; • 一个 12 位逐次逼近型模拟数字转换器 (SAR ADC)&…...

二叉树的右视图

199. 二叉树的右视图 已解答 中等 相关标签 相关企业 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 # Definition for a binary tree node. # class TreeNode(object): #…...

Pinpoint 是一个开源的分布式追踪系统

pinpointagent2.2.2.tar 是 Pinpoint 的一个版本&#xff0c;Pinpoint 是一个开源的分布式追踪系统&#xff0c;专门用于对 Java 应用程序进行性能监控、日志记录和故障诊断。它可以帮助开发人员和运维人员追踪和分析微服务架构中服务之间的调用链&#xff0c;并进行性能分析。…...

React 脚手架使用指南

React 脚手架使用指南 目录 概述创建项目项目结构常用命令配置说明最佳实践 概述 什么是 React 脚手架&#xff1f; React 脚手架(Create React App)是 Facebook 官方提供的创建 React 单页应用的工具。它提供了一个零配置的现代构建设置。 为什么使用脚手架&#xff1f;…...

Win10提示“缺少fbgemm.dll”怎么办?缺失fbgemm.dll文件的修复方法来啦!

fbgemm.dll文件的作用 fbgemm.dll&#xff08;Facebook GEMM library&#xff09;是一个动态链接库文件&#xff0c;它主要用于优化矩阵乘法运算&#xff0c;提高计算性能。虽然它不是Windows 10系统的核心组件&#xff0c;但在某些应用程序或游戏中&#xff0c;尤其是那些需要…...

vue2 elementui if导致的rules判断失效

优化目标 和 目标转化出价必填的 切换的时候还会隐藏掉 这时候的if语句会导致rules判断失效 我的办法是把判断拉到外面 别放在el-form-item里 <section v-if"unitForm.baseTarget OCPM && unitForm.cpaTargetOptions ! undefined && unitForm.cpaTa…...

基于科大讯飞大模型Spark 4.0 Ultar 的微信聊天机器人搭建教程---零基础搭建最详细图文版!!!

1、软件的下载及部署 搭建该微信聊天机器人&#xff0c;主要依赖的编程语言为python&#xff0c;故需要搭建python的开发环境&#xff0c;主要包含python解释器的下载与安装以及编译器pycharm的下载与安装 1.1 python解释器的下载与安装 python解释器官网&#xff1a;https:…...

SpringBoot整合Netty

前言 Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高并发协议服务器和客户端。 Netty主要基于Java NIO实现,提供了异步和事件驱动的网络编程工具,简化了TCP和UDP服务器的编程。 Netty广泛应用于分布式系统、实时通信、游戏开发等领域,例如,…...

机器学习之PCA降维

主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 主成分分析&#xff08;PCA&#xff09;是一种常见的无监督学习技术&#xff0c;广泛应用于数据降维、数据可视化以及特征提取等任务。PCA的目标是通过线性变换将数据从高维空间映射到低维空间…...

《 OpenCV 环境搭建》

《OpenCV 环境搭建》 一、OpenCV 简介二、准备工作三、安装 OpenCV&#xff08;一&#xff09;获取安装包&#xff08;二&#xff09;安装过程 四、配置环境变量&#xff08;一&#xff09;系统环境变量配置&#xff08;二&#xff09;项目环境变量配置&#xff08;以 Visual S…...

【阅读记录-章节7】Build a Large Language Model (From Scratch)

系列文章目录 【阅读记录-章节1】Build a Large Language Model (From Scratch) 【阅读记录-章节2】Build a Large Language Model (From Scratch) 【阅读记录-章节3】Build a Large Language Model (From Scratch) 【阅读记录-章节4】Build a Large Language Model (From Scr…...

在js中实现下载base64数据,兼容低版本

详细步骤如下 1、解析 Base64 数据&#xff1a; 如果数据流中包含前缀 data:…;base64,&#xff0c;先分离 MIME 类型和 Base64 数据部分。如果没有前缀&#xff0c;假设默认 MIME 类型&#xff08;如 application/octet-stream&#xff09;。 2、Base64 解码&#xff1a; 使…...

垃圾分割数据集labelme格式659张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;659 标注数量(json文件个数)&#xff1a;659 标注类别数&#xff1a;1 标注类别名称:["garbage"] 每个类别标注的框数&#…...

深入探索 npm cache clean --force:清理 npm 缓存的艺术

npm 是 JavaScript 编程语言的包管理器&#xff0c;它是 Node.js 运行环境的默认包管理器。npm 提供了一个丰富的生态系统&#xff0c;包括数以百万计的可重用代码包。然而&#xff0c;随着时间的推移&#xff0c;npm 的缓存可能会变得庞大&#xff0c;影响性能或导致一些奇怪的…...

Flink中并行度和slot的关系——任务和任务槽

一、任务槽&#xff08;task slots) Flink的每一个TaskManager是一个JVM进程&#xff0c;在其上可以运行多个线程&#xff08;任务task&#xff09;&#xff0c;那么每个线程可以拥有多少进程资源呢&#xff1f;任务槽就是这样一个概念&#xff0c;对taskManager上每个任务运行…...

22【AUTOSAR自适应平台设计的概述01】杂项概念介绍

1.AUTOSAR自适应平台设计的概述 本小课题主要是让读者对AUTOSAR自适应平台设计的思路有个宏观的概念,不拘泥于具体的技术细节。 总结如下: 概述AUTOSAR自适应平台(AP)的设计。为AP用户和实施者提供总体设计和关键概念2.具体的章节由以下几个部分组成: 技术范围和方法: 介…...