Unity 内置渲染管线各个Shader的用途和性能分析,以及如何修改Shader(build in shader 源码下载)

文章目录

  • 所有Shader分析
    • 路径:Standard
    • 路径:Nature/
    • 路径:UI/
    • 路径:Particles/
      • Particles/Standard Surface
      • Particles/Standard Unlit
    • 路径:Unlit/
      • Unlit/Texture
      • Unlit/Color
      • Unlit/Transparent
      • Unlit/Transparent Cutout
      • Unlit/Texture (Supports Lightmap)
      • Unlit/Detail
    • 路径:Mobile/
      • Mobile/Diffuse
      • Mobile/Bumped Diffuse
      • Mobile/Skybox
      • Mobile/Unlit (Supports Lightmap)
      • Mobile/VertexLit
      • Mobile/VertexLit (Only Directional Lights)
      • Mobile/Particles/Additive
      • Mobile/Particles/Alpha Blended
      • Mobile/Particles/VertexLit Blended
      • Mobile/Particles/VertexLit Blended
      • Mobile/Particle/Multiply
    • 路径:FX/
    • 路径:GUI/
    • 路径:Skybox/
    • 路径:Sprites/
    • 路径:Legacy Shaders/
  • 如何修改自带Shader

所有Shader分析

路径:Standard

优点:

真实感:支持 PBR 渲染,能够呈现高质量的光照和材质效果。
灵活性:高度灵活,提供了多种可调参数,适应不同的需求。
跨平台兼容:广泛支持不同的硬件平台,特别是桌面和主流移动设备。
简化的开发流程:内置的预设和参数配置使得开发者可以快速实现材质效果,减少自定义代码的需求。

缺点:
性能开销:在低性能设备上可能会带来性能问题,尤其是移动设备或 AR/VR 设备。
不适合极端优化:在对性能要求极高的项目中,可能需要考虑更简化的着色器。
不支持高级特性:对于需要实时光线追踪、体积光、次表面散射等高级渲染特性的场景,可能需要使用 HDRP 等高级渲染管线。

路径:Nature/

优点

自然环境优化:Nature 路径下的着色器专门针对自然环境(如树木、草地、岩石、水面)进行了优化,能够提供非常真实的材质表现,提升自然景观的视觉效果。

性能优化:许多 Nature 着色器(如 TreeBillboardSoft 和 Grass Soft)都进行了性能优化,使用了如广告牌渲染和简化的光照模型等技术,以便在大规模场景中渲染大量的自然物体(如树木和草地)时减少性能开销。

高质量的材质表现:通过对光照、透明度、反射、折射等特性的处理,Nature 路径下的着色器能够在自然景观中呈现高质量的材质细节,尤其是在户外环境中具有很高的视觉吸引力。

简化的工作流程:Unity 已经为常见的自然环境材质(如树木、草地、水面等)提供了预制的着色器,开发者可以直接使用这些着色器,而不需要编写复杂的自定义着色器,快速开发自然环境。

缺点

局限性:尽管 Nature 路径下的着色器提供了很多优化,但它们的应用范围主要局限于自然环境材质,不适合用于所有类型的游戏或场景。例如,对于需要高度自定义效果或非常复杂的材质,开发者可能需要编写自定义着色器。

性能限制:在非常复杂的自然环境中,尽管这些着色器进行了优化,但如果场景中有大量树木、草地或水面,可能仍然会对性能造成一定压力,特别是在较低性能的硬件上。

不支持高级渲染特性:Nature 路径下的着色器虽然能够提供高质量的自然效果,但它们通常不支持如光线追踪、次表面散射(SSS)等高级渲染特性。如果项目需要这些特性,可能需要迁移到更复杂的渲染管线(如 HDRP)或者编写自定义着色器。

路径:UI/

常用

优点

专为 UI 渲染优化:这些着色器专门优化了 2D UI 元素的渲染,确保 UI 元素在不同的设备和平台上都能够高效渲染,且不会造成过多的性能损失。

易于使用:Unity 提供了多个 UI 专用的内置着色器,开发者不需要编写复杂的自定义着色器即可实现常见的 UI 效果,如按钮、文本、渐变、遮罩等。

支持多种视觉效果:UI 路径下的着色器能够支持多种常见的 UI 特效,如透明度、渐变、外轮廓、遮罩等,能有效提升 UI 的视觉层次感和交互体验。

透明度和层级支持:大部分 UI 着色器支持透明度控制和渲染顺序,适用于需要透明元素(如模糊背景、透明按钮)的应用。

性能优化:Unity 的 UI 着色器在设计时考虑了性能,尤其在渲染大量动态 UI 元素时能够高效工作。

缺点

不支持复杂材质:这些着色器通常不适用于复杂的 3D 渲染和材质效果。对于需要光照、反射等高级效果的 UI 元素,可能需要自定义着色器。

渲染性能问题:在复杂 UI 布局中,尤其是有大量透明元素或动态更新的元素时,UI 渲染性能可能会出现瓶颈,需要特别优化渲染顺序和透明度处理。

灵活性有限:虽然 Unity 提供了多个内置的 UI 着色器,但如果需要高度自定义的 UI 渲染效果,可能需要编写自定义的着色器来满足特定需求。

路径:Particles/

Particles/Standard Surface

主要特性
PBR支持:支持金属度(Metallic)、光滑度(Smoothness)、法线贴图(Normal Map)等PBR属性。

透明度支持:支持透明度混合(Alpha Blending)和透明度裁剪(Alpha Clipping)。

粒子系统优化:针对粒子系统的渲染需求进行了优化,适合用于复杂的粒子效果。

光照支持:支持实时光照和阴影(取决于粒子系统的设置)。

使用场景
高质量粒子效果:当需要粒子效果具有真实的材质表现(如金属、玻璃、烟雾等)时,可以使用此Shader。

复杂光照环境:在需要粒子与场景光照交互(如反射、阴影)时,此Shader是一个不错的选择。

透明效果:适合需要透明度混合或裁剪的粒子效果(如火焰、烟雾、魔法特效等)。

Particles/Standard Unlit

主要特性
不受光照影响:粒子颜色完全由材质和纹理决定,不参与场景光照计算。

透明度支持:支持透明度混合(Alpha Blending)和透明度裁剪(Alpha Clipping)。

颜色叠加:支持粒子系统的颜色叠加(Color Over Lifetime、Color by Speed等)。

纹理动画:支持纹理动画(Texture Sheet Animation),用于实现帧动画效果。

高性能:由于不参与光照计算,性能开销较低,适合移动设备或大量粒子效果。

使用场景
2D粒子效果:如烟雾、火焰、魔法特效等。

UI特效:如按钮点击特效、过渡动画等。

背景特效:如星空、飘雪等不需要光照的场景。

移动设备:由于性能开销低,适合在移动设备上使用。

路径:Unlit/

Unlit/Texture

最简单的Unlit Shader,仅显示纹理,不受光照影响。

用途:显示2D纹理或颜色。

Unlit/Color

显示纯色,不受光照影响。

用途:显示单一颜色的物体。

Unlit/Transparent

支持透明度混合(Alpha Blending)的Unlit Shader。

用途:显示透明物体,如UI元素、烟雾等。

Unlit/Transparent Cutout

支持透明度裁剪(Alpha Clipping)的Unlit Shader。

用途:显示镂空效果,如树叶、栅栏等。

Unlit/Texture (Supports Lightmap)

支持光照贴图的Unlit Shader。

用途:在不受实时光照影响的情况下,使用光照贴图烘焙的光照信息。

Unlit/Detail

支持细节纹理的Unlit Shader。

用途:在基础纹理上叠加细节纹理,适合地面、墙壁等。

路径:Mobile/

Mobile 路径下的着色器是针对移动设备进行优化的。这些着色器通常计算简单,旨在提供快速的渲染性能,适应移动设备的性能和内存限制。下面是 Mobile 路径下常见着色器的详细分析,包括每个着色器的用途和特点。

Mobile/Diffuse

✅ 漫反射光照
✅ 使用Lambertian漫反射模型,计算简单,适合低性能设备。
✅ 支持主纹理和颜色
✅ 可以设置基础纹理(Main Texture)和颜色(Color)。
✅ 高性能
✅ 由于光照计算简单,性能开销非常低,适合移动设备或大量物体的渲染。
✅ 无高光反射
✅ 不支持高光反射(Specular),仅计算漫反射。

使用场景
移动设备:在性能受限的设备上运行,如移动设备或WebGL。
简单场景:适用于不需要复杂光照效果的场景,如背景物体、低多边形风格的游戏。
大量物体:当场景中有大量物体需要渲染时,使用Mobile/Diffuse可以提高性能。

Mobile/Bumped Diffuse

漫反射光照

✅ 使用Lambertian漫反射模型,计算简单,适合低性能设备。
✅ 支持法线贴图
✅ 通过法线贴图增强表面细节,使材质看起来更加真实。
✅ 高性能
✅ 虽然支持法线贴图,但光照计算仍然较为简单,适合移动设备。
✅ 无高光反射
✅ 不支持高光反射(Specular),仅计算漫反射。

使用场景
移动设备:在性能受限的设备上运行,如移动设备或WebGL。
需要表面细节的场景:适用于需要简单凹凸效果的材质,如砖墙、岩石等。
大量物体:当场景中有大量物体需要渲染时,使用Mobile/Bumped Diffuse可以在性能和效果之间取得平衡。

Mobile/Skybox

✅ 高性能
✅ 专为移动设备优化,性能开销低。
✅ 支持立方体贴图(Cubemap)
✅ 使用立方体贴图作为天空盒的纹理。
✅ 无光照计算
✅ 天空盒不受场景光照影响,仅显示纹理颜色。
✅ 简单易用
✅ 配置简单,适合快速实现天空盒效果。

使用场景
移动设备:在性能受限的设备上运行,如移动设备或WebGL。
背景环境:用于显示天空、山脉、城市等背景环境。
快速原型开发:在需要快速实现天空盒效果时使用。

Mobile/Unlit (Supports Lightmap)

✅ 不受实时光照影响
✅ 不参与实时光照计算,颜色和纹理直接显示。
✅ 支持光照贴图
✅ 使用烘焙的光照贴图来增强场景的光照效果。
✅ 高性能
✅ 由于不进行实时光照计算,性能开销较低,适合移动设备。
✅ 透明度支持
✅ 支持透明度混合(Alpha Blending)和透明度裁剪(Alpha Clipping)。

使用场景
移动设备:在性能受限的设备上运行,如移动设备或WebGL。
静态场景:适用于使用光照贴图烘焙的静态场景。
背景物体:如建筑物、地形等不需要实时光照的物体。
UI元素:如按钮、图标、文字等。

Mobile/VertexLit

✅ 仅按顶点光照进行渲染
✅ 非半透渲染效果。
✅ 没有其他额外光源时,可以使用更加快速的

Mobile/VertexLit (Only Directional Lights)

Mobile/Particles/Additive

  • 特点

✅ 高性能:相比标准 Particles/Additive,减少了计算量,适合移动端。
✅ 加法混合:粒子颜色会叠加到背景上,使亮度增强。
✅ 不受光照影响:粒子的颜色不会因光照变化,始终保持亮度。
✅ 支持颜色 Tint:可以通过 Color 属性调整粒子颜色。
✅ 支持纹理:可以使用 MainTex 来控制粒子的外观。

  • 渲染方式

Mobile/Particles/Additive 使用 加法混合(Additive Blending),适用于需要高亮度叠加的粒子效果:
混合公式:
源颜色 * 源Alpha + 目标颜色 * 1
解释:
粒子的颜色(源颜色) 直接 加到背景颜色上,形成亮度叠加效果。
不会变暗,而是会随着粒子重叠变得更亮。
透明度(Alpha)影响亮度,而不是影响可见度。
适用于火焰、爆炸、激光、光效,但 不适用于烟雾、阴影等需要透明过渡的效果。
深度写入(ZWrite)关闭:

ZWrite Off 避免了深度缓冲写入,防止粒子相互遮挡问题(但可能会导致重叠粒子排序错误)。

  • 适用场景

适用情况 说明
火焰 ✅ 适合,亮度叠加可以增强燃烧感
爆炸 ✅ 适合,碎片和火光可以不断增加亮度
魔法光效 ✅ 适合,高亮粒子适用于魔法技能特效
能量波 ✅ 适合,强光波动效果
烟雾 ❌ 不适合(应该使用 Alpha Blended,否则烟雾会发光)
阴影粒子 ❌ 不适合(应该使用 Multiply,否则阴影会变亮)

Mobile/Particles/Alpha Blended

  • 特点
    ✅ 高性能:相比标准 Particles/Alpha Blended,减少了计算量,适合移动端。
    ✅ Alpha 混合:支持透明度渐变,使粒子可以自然融入场景。
    ✅ 不受光照影响:粒子的颜色不会因光照变化,适用于固定亮度的效果。
    ✅ 支持颜色 Tint:可以通过 Color 属性调整粒子颜色。
    ✅ 支持纹理:可以使用 MainTex 来控制粒子的外观
  • 渲染方式

Mobile/Particles/Alpha Blended 采用 透明度混合(Alpha Blending),可以创建柔和的过渡效果:
混合公式:
源颜色 * 源Alpha + 目标颜色 * (1 - 源Alpha)
解释:
粒子的颜色(源颜色) 会与 背景颜色(目标颜色) 混合。
Alpha 控制透明度,值越低越透明,值越高越不透明。
适用于柔和过渡的透明粒子(如烟雾、魔法光效、能量波等)。
深度写入(ZWrite)关闭:

  • 适用场景
    烟雾 ✅ 适合,透明度混合可使烟雾渐变
    魔法光效 ✅ 适合,透明度可调整,适合能量光波
    半透明能量场 ✅ 适合,可以叠加多个粒子获得自然效果
    火焰 ❌ 不适合(通常用 Additive 以增加亮度)
    阴影粒子 ❌ 不适合(通常用 Multiply 以与背景融合)

ZWrite Off 避免了深度缓冲写入,防止粒子相互遮挡问题(但可能会导致重叠粒子排序错误)。

Mobile/Particles/VertexLit Blended

  • 特点
    ✅ 性能优化:比 Particles/VertexLit Blended 更高效,适合移动设备。
    ✅ 支持光照:逐顶点光照(Vertex Lit),比逐像素光照(Pixel Lit)计算更快。
    ✅ Alpha 混合:可以用于 半透明粒子(如烟雾、魔法光效等)。
    ✅ 支持纹理:可以使用 MainTex 来控制粒子的外观。
    ✅ 不支持法线贴图:因为是逐顶点光照,不计算法线贴图。
  • 混合模式(Alpha Blending)

Mobile/Particles/VertexLit Blended

使用 Alpha 混合 来渲染粒子,使其可以 半透明:
混合公式:
源颜色 * 源Alpha + 目标颜色 * (1 - 源Alpha)
公式解释:
颜色由 粒子颜色(源颜色) 和 背景颜色(目标颜色) 叠加得到。
Alpha 控制透明度,值越低越透明,值越高越不透明。
适用于透明粒子效果(如烟雾、魔法、能量光效)。

  • 适用场景

光照影响的烟雾 ✅ 适合,光照会影响粒子的亮度和阴影
光照影响的魔法特效 ✅ 适合,可以受光源影响变亮
半透明能量场 ✅ 适合,支持透明度渐变
火焰 ❌ 不适合(通常用 Additive 以增加亮度)
阴影粒子 ❌ 不适合(通常用 Multiply 以与背景融合)

Mobile/Particle/Multiply

  • 特点:

✅优化移动设备性能:比标准 Particles/Multiply 更高效,减少 GPU 计算量,适合低端设备。
✅乘法混合模式(Multiply Blending):
公式:输出颜色 = 源颜色 × 目标颜色
✅颜色被相乘后通常会变暗,因此适用于 阴影、污渍、光照效果等。
✅无光照影响:不会受场景光照影响,适用于需要始终保持相同颜色表现的粒子效果。
✅支持透明度(Alpha):可以控制粒子的透明度,使其能够渐隐消失。

  • Multiply 混合模式的工作原理:

在 Multiply Blending 中,粒子颜色与背景颜色相乘,得到更暗的颜色。

白色(1,1,1) × 背景颜色 = 背景颜色(无影响)
灰色(0.5,0.5,0.5) × 背景颜色 = 暗色背景
黑色(0,0,0) × 背景颜色 = 全黑(隐藏)
示例:

如果粒子颜色是 50% 灰色(0.5, 0.5, 0.5),而背景是 红色(1, 0, 0),
计算结果是 深红色(0.5, 0, 0)。
这样,粒子就会与背景自然融合,看起来像是阴影或光照效果。

  • 适用场景

烟雾(Smoke) ✅ 适合,使烟雾颜色与背景混合变暗
阴影(Shadows) ✅ 可用于投射阴影的效果
污渍(Dirt, Stains) ✅ 适合,模拟污渍与地面融合
火焰(Fire) ❌ 不适合(通常用 Additive 着色器)
光晕(Glow) ❌ 不适合(通常用 Alpha Blended)

对比
在这里插入图片描述

路径:FX/

用于特效的Shader,如屏幕扭曲、光晕等。

路径:GUI/

用于GUI元素的Shader。

路径:Skybox/

建议用Mobile/Skybox
优点

逼真的效果:Skybox 着色器能够为场景提供非常真实的背景效果,尤其是程序化生成的天空或立方体贴图。
高效渲染:Skybox 着色器非常高效,因为它们通常在场景渲染的最后一步渲染,且不会与场景中的其他物体交互。
支持动态效果:通过程序化的 Skybox/Procedural,可以实现日夜变化、云层变化等动态效果,提升视觉效果的沉浸感。

缺点

性能开销:如果使用程序生成的天空(如 Skybox/Procedural),计算复杂的云层、光照、太阳位置等可能会对性能产生影响。
纹理质量要求高:对于 Skybox/6 Sided 和 Skybox/Cubemap 来说,需要高分辨率的纹理来保证视觉效果,否则可能会出现分辨率低、失真等问题。
无法交互:天空盒是一个背景对象,通常不会与其他物体发生交互,因此无法直接模拟如反射、阴影等与物体的互动效果。

路径:Sprites/

优点

性能优化:精灵着色器通常非常轻量级,特别是 Sprites/Default 这样的着色器,它能够高效地处理大量 2D 精灵渲染。
灵活性:支持透明度、颜色修改和简单的光照效果,适合常见的 2D 游戏场景。
简单易用:大多数精灵渲染只需要 Sprites/Default 即可,减少了开发和优化的复杂度。

缺点

不支持复杂的光照和反射:对于 2D 游戏,精灵渲染大多不支持复杂的光照、反射和阴影效果,这对于某些需要更复杂渲染的场景可能不够用。
适用于 2D 精灵:这些着色器专为 2D 渲染设计,不适合用于 3D 渲染的场景或物体。

路径:Legacy Shaders/

Legacy就是遗留的意思,老木乃伊了,非必要不用,Particles路径下的shader的优化版都在Mobile/Particles,适用于桌面设备或较旧的 Unity 项目,支持较为复杂的光照和粒子效果,但性能可能不适合移动设备。

如何修改自带Shader

因为直接在unity里是看不到源码也无法修改的,当需要给默认shader增加需求,比如增加颜色或者修改ui的渲染顺序等等,我们需要先拿到shader源文件

下载Build in shader源文件方法
gitHub
https://github.com/liwanx/Unity-Built-in-Shaders
gitee
https://gitee.com/liwanx/Unity-Built-in-Shaders
你用什么版本的unity 就可以从那个大版本里拿你要的shader
比如修改
在这里插入图片描述
通常在DefaultResourcesExtra文件下找到Sprites-Default,复制到unity中

改下外部名字Custom_××
在这里插入图片描述

再改下内部路径Custom/××,
在这里插入图片描述
保存之后就可以在这里找到了
在这里插入图片描述

然后就可以开始实现需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

概率分布与概率密度

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 🔍 1. 概率分布基…

【C++】类与对象:深入理解默认成员函数

类与对象:深入理解默认成员函数 引言1、默认成员函数概述2、构造函数与析构函数2.1 默认构造函数2.2 析构函数 3、拷贝控制成员3.1 拷贝构造函数3.2 赋值运算符重载 4、移动语义(C11)4.1 移动构造函数4.2 移动赋值运算符 5、三五法则与最佳实…

LINUX网络基础 - 网络编程套接字,UDP与TCP

目录 前言 一. 端口号的认识 1.1 端口号的作用 二. 初识TCP协议和UDP协议 2.1 TCP协议 TCP的特点 使用场景 2.2 UDP协议 UDP的特点 使用场景 2.3 TCP与UDP的对比 2.4 思考 2.5 总结 三. 网络字节序 3.1 网络字节序的介绍 3.2 网络字节序思考 四. socket接口 …

夸父工具箱(安卓版) 手机超强工具箱

如今,人们的互联网活动日益频繁,导致手机内存即便频繁清理,也会莫名其妙地迅速填满,许多无用的垃圾信息悄然占据空间。那么,如何有效应对这一难题呢?答案就是今天新推出的这款工具软件,它能从根…

Apache nifi demo 实验

Apache nifi 是个数据流系统,可以通过配置 自定义的流程来实现数据的转换。 比如可以配置一个流程,读取数据库里的数据,再转换,最后保存到本地文件。 这样可以来实现一些数据转换的操作,而不用特地编写程序来导入导出。…

VSCode知名主题带毒 安装量900万次

目前微软已经从 Visual Studio Marketplace 中删除非常流行的主题扩展 Material Theme Free 和 Material Theme Icons,微软称这些主题扩展包含恶意代码。 统计显示这些扩展程序的安装总次数近 900 万次,在微软实施删除后现在已安装这些扩展的开发者也会…

Java自动拆箱装箱/实例化顺序/缓存使用/原理/实例

在 Java 编程体系中,基本数据类型与包装类紧密关联,它们各自有着独特的特性和应用场景。理解两者之间的关系,特别是涉及到拆箱与装箱、实例化顺序、区域问题、缓存问题以及效率问题。 一、为什么基本类型需要包装类 泛型与集合的需求 Java…

蓝桥杯复盘记录004(2023)

涉及知识点 1.深搜 2.单调队列滑动窗口 3.位运算 4.并查集 题目 1.lanqiao3505 思路: dfs(index, weight, cnt) index表示瓜的索引, weight等于买瓜的重量, cnt表示买了多少瓜。 递归终止条件:1.如果瓜买完了,归…

【银河麒麟高级服务器操作系统】服务器测试业务耗时问题分析及处理全流程分享

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…

【现代深度学习技术】卷积神经网络03:填充和步幅

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…

FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级

以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…

【含文档+PPT+源码】基于SpringBoot和Vue的编程学习系统

项目介绍 本课程演示的是一款 基于SpringBoot和Vue的编程学习系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该…

网页复制小妙招

当你遇到网页时不能复制时,不要慌,教你一招可让你为所欲为。 平时你们在网上查找资料想复制时,总是会出现付费限制提示(我也是qwq),这时不要慌,在空白处右击选择检查 按开检查,然后…

聆听PostgreSQL数据库的使用

参考:(1)零基础入门PostgreSQL教程 (2)菜鸟教程 文章目录 一、PostgreSQL是什么?二、基本使用1.下载2.操作(1)数据库(2)表 一、PostgreSQL是什么?…

内核进程调度队列(linux的真实调度算法) ─── linux第13课

目录 内核进程调度队列的过程 一个CPU拥有一个runqueue(运行队列在内存) 活动队列(active) 过期队列(expired) active指针和expired指针 重绘runqueue linux内核O(1)调度算法 总结 补充知识: 封装链式结构的目的是: 仅使用封装链式结构可以得到全部的task_struct的信…

【算法】手撕二分查找

目录 二分查找 【左闭右闭】/【相错终止】 【循环不变量】 【四要素】 二分查找的任意模板 【一般】情形 【左闭右闭】总结 mid的防溢出写法 【左闭右开】/【相等终止】 【一般】情形 再谈初始值 【左闭右开】总结 二分查找本质 【左开右闭】/【相等终止】 【一般…

C++入门基础知识1

今天,我们正式来学习C,由于C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助。 现在我们这篇主要是: 1. 补充C语言语法…

Leetcode 57-插入区间

给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示另一个区间的开始和…

【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】

去年团队庆功宴上,我司CTO端着酒杯过来:“老王啊,咱们现在文档解析做得挺溜了,但老师们总抱怨下载的作业格式乱码…” 我看了眼手机里凌晨三点收到的崩溃警报,把杯里的可乐一饮而尽——得,新的副本又开了。 一、为什么PDF转换比想象中难十倍? 某次用户调研中,数学教研…

Mac上安装Pycharm

说明:仅供参考,是自己的安装流程,以免以后自己想不起来来看看的笔记 官网地址:https://www.jetbrains.com/pycharm/ 1、点击Download,跳转到下一个页面 2、MAC,选择Mac OS,在Pycharm Professio…