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

长汀党的建设网站/域名注册查询系统

长汀党的建设网站,域名注册查询系统,手袋 东莞网站建设,做移动网站优化排名Stats窗口Profiler窗口Memory Profiler其他性能分析工具(Physica Debugger 窗口,Import Activity 窗口,Code Coverage 窗口,Profile Analyzer 窗口,IMGUI Debugger 窗口) Stats 统级数据窗口 game窗口 可…
  • Stats窗口
  • Profiler窗口
  • Memory Profiler
  • 其他性能分析工具(Physica Debugger 窗口,Import Activity 窗口,Code Coverage 窗口,Profile Analyzer 窗口,IMGUI Debugger 窗口)

Stats 统级数据窗口

game窗口

可以初步查看游戏运行时,当前一帧的各项性能

  • Audio表示音频的数据
  • Level表示声音强度,单位是分贝,也就是dB。声音太大或太小都会影响玩家体验。
  • DSP load表示数字信号处理器的负载。播放的声音越多、声音的采样率越高、声音效果越复杂,本变量的数值都会越大。应尽量避免这项数据过大。
  • Clipping表示音频的裁剪情况。当音频信号超过设备支持的最大范围时,该音频信号会被裁剪。裁剪之后,该音频会出现一定程度失真的现象。应尽量避免这项数据过大。
  • Stream load表示音频流的负载情况。音频的流式加载是指以持续的方式从音频源获取音频数据,而不是一次性加载全部数据。流式加载的主要优势是可以实时地处理和播放音频,无需等待全部数据加载完成。应尽量避免这项数据过大。
  •  FPS表示帧率,209.5FPS(4.8ms)表示平均每秒播放209.5张画面,平均每4.8毫秒播放一张画面。
  • CPU的指标表示CPU处理一帧的时间。例如CPU:main 4.6ms render thread 0.5ms表示Unity的主线程处理这一帧所花费的时间是4.6毫秒,主线程主要负责游戏逻辑的更新,例如检测用户的输入、更新游戏对象的位置、碰撞检测等。在渲染线程处理这一帧所花费的时间是0.5毫秒,渲染线程负责显示游戏画面。
  •  Batches表示处理的绘制调用(Draw Call)批次的总数。 应尽量避免这项数据过大。
  • Saved by batching表示有多少个绘制调用(Draw Call)被合并到了批次。应尽量让这项数据大。
  • Tris表示当前摄像机视锥体的范围内三角面的个数。应尽量避免这项数据过大。
  • Verts表示当前摄像机视锥体的范围内网格顶点的个数。 应尽量避免这项数据过大。
  •  在3D建模软件中创建的模型导入到Unity后,该模型在Unity中显示的三角面和网格顶点的数量和在3D建模软件中的可能不同。因为3D建模软件和Unity对模型的三角面和网格顶点的计算方式可能是不一样的。
  •  Screen表示当前的屏幕分辨率,以及屏幕的内存占用量。例如Screen:1920×1080 - 23.7MB表示当前屏幕分辨率是1920×1080,屏幕占用了23.7MB的内存。 应尽量避免这项数据过大。
  •  SetPass calls表示在当前摄像机的渲染过程中,Unity切换着色器通道(Shader Pass)来渲染游戏对象的次数。一个着色器(Shader)可以包含多个着色器通道,每个着色器通道可以通过不同的方式来渲染游戏对象。但每次切换着色器通道都会消耗一定的性能。  应尽量避免这项数据过大。
  • Shadow casters表示摄像机画面中有多少个游戏对象产生了阴影。同一个游戏对象产生较多的阴影,可能会被算作多个Shadow casters 应尽量避免这项数据过大。
  • Visible skinned meshes表示当前摄像机中有多少个可见的蒙皮网格。应尽量避免这项数据过大。
  • Animation components playing表示当前场景中有多少个Animation组件正在播放动画。播放动画会消耗性能。应尽量避免这项数据过大。没用的Animator组件和Animation组件可以考虑删掉。因为即使只有空的动画,Animator组件和Animation组件也会根据自己的工作流程进行每帧的计算和更新,以检查当前动画状态和过渡条件,这样就会消耗不必要的性能。

Draw Call 是什么?

要将游戏中的物体显示到屏幕上,就需要绘制它们。绘制之前,会先由CPU计算出它们的位置、
颜色等信息,然后发送绘制指令给GPU。GPU接受到CPU发过来的绘制指令,就会按照要求绘制东西在屏幕上。

Draw Call是指CPU向GPU发送绘制指令的过程,一个Draw Call就是CPU向GPU发送的一组绘制指令,可以绘制出一个或多个物体。

Draw Call有时也被简称为DC

Draw Call太多会使游戏变卡,优化的时候可以想办法降低Draw Call。

要降低Draw Call,可以使用合批技术,例如动态合批和静态合批。将多个Draw Call合批成一个批次(Batch),再由CPU发送给GPU,这样可以提升游戏性能。

垂直同步

垂直同步用于将游戏的帧率限制为显示器的刷新率,可以防止游戏画面在高速移动时的画面撕裂现象,使游戏画面更加平滑和连贯。

如果不启用垂直同步,当游戏的帧率高于显示器的刷新率时,图像的一部分可能会在显示器刷新之前更新,导致画面上出现明显的断裂线。而启用垂直同步后,图形处理器会等待显示器完成一次完整的刷新,然后再发送下一帧图像,确保每个图像帧都在刷新之前完全绘制,从而消除了撕裂现象。

但是启用垂直同步会消耗一些性能,也可能会出现卡顿的现象,要根据自己的实际情况来决定是否启用。

网格 蒙皮

网格用来定义一个模型的形状、大小和表面细节等信息,模型的所有顶点、线、面共同构成了这个模型的网格。蒙皮网格是一个与骨骼绑定的网格,这个网格可以发生形变和做出各种动作。一个网格 在没有蒙皮之前是不能发生形变的,也不能做出各种动作的。但是在成功蒙皮之后,这个网格就可以发生形变和做出各种动作。

Profiler 窗口

打开方式: Window——Analysis——Profiler

使用性能分析器进行分析时,其自身也是会消耗性能的。如果想获得更加准确的数据,可以使用独立性能分析器,即Profiler(Standalone Process)

打开Profiler(Standalone Process)窗口的方法:
Window——Analysis——Profiler(Standalone Process)

独立性能分析器的运行不会影响收集的数据,因此可以获得更加准确的数据。它的用法和Profiler窗口相同,但是启动它的时间比打开Profiler窗口的时间长。

打开Profiler窗口后,运行Unity,再点击Profiler窗口上方的圆形按钮,就会开始收集当前开始的每一帧的性能,再点一下那个圆形按钮,则会停止收集,此时就可以双击右上部分的一个位置选中一帧,然后看这一帧的情况,一般我们可以选择波峰的一帧,这样容易看出性能开销大的原因。也可以推动时间轴,或者点击上方圆形按钮右侧的三个按钮,查看其它帧的情况。上方的Frame表示当前正在查看的帧数以及收集的总帧数,例如Frame:738/963表示一共收集了963帧,当前查看的是第738帧。

每一项左侧的颜色方块表示该项是显示的,如果点击颜色方块,则右侧会隐藏该项的数据。

如果不要显示某个模块的数据,可以点击左上角的“Profiler Modules”,取消勾选它,这样在性能分析器收集数据的时候,也不会收集这些数据,可以减少性能分析器的开销。如果要重新显示某个模块的数据,则勾选它即可。点击Restore Defaults会恢复默认的设置。点击小齿轮,再点击Add,可以自定义一个新的模块,并自定义这个模块要分析的性能,且可以在上方的输入框处改名,然后点击Save Changes可以保存。如果要删除它,则点击Delete Module即可删除它,同样,点击Save Changes可以保存。

如果要清除当前收集的所有帧的数据,则可以点击上方的“Clear”。再次点击Profiler窗口上方的圆形按钮,就会开始收集当前开始的每一帧的性能,再点一下那个圆形按钮,则会停止收集,此时就可以双击右上部分的一个位置选中一帧,然后看这一帧的情况。

选中一帧后,除了可以在右侧看到这一帧的情况,还可以在下方看到这一帧更加具体的情况。

要找出造成性能开销的因素,可以尝试禁用场景中的游戏对象。如果禁用后,看到性能提升了,则说明问题出在这个游戏对象身上,优化的时候就可以从它身上下手。

        点击圆形按钮左侧的下拉菜单,可以选择分析什么的性能。如果选择Play Mode,则会分析游戏在运行时的性能,如果选择Edit Mode,则会分析编辑器模式下游戏的性能。
        如果用手机的数据线成功连接到电脑,在手机上运行Unity的游戏,这里会多出该手机设备供我们选择,我们就可以分析该手机设备上运行的Unity项目的性能。
        也可以让手机和电脑都连接同一个wifi,这样一来,这里也会多出该手机设备供我们选择,我们就可以分析该手机设备上运行的Unity项目的性能。
        注意,无论是用wifi还是数据线,构建项目时必须在Build Settings窗口中勾选Development Build和Autoconnect Profiler。

选择上方的Clear on Play,则在每次重新运行游戏的时候,都会清空收集的数据,以便我们重新开始收集这一次的数据。

如果要保存收集到的数据到本地,方便之后查看,可以点击右上方的图标来保存。右上方也有一个图标可以读取之前保存的数据。

        选择上方的Deep Profile,然后重新启动性能分析器,则性能分析器收集数据的时候,会把所有C#代码中的方法的信息也收集过来。例如我们自己写的C#脚本,里面的方法只要被调用了,就会被收集过来,方便我们从性能分析器查看它们的性能。在Profiler窗口选择CPU Usage模块,选中一帧,然后在下面选择Hierarchy,右侧选择Main Thread,再在右侧的搜索栏处搜索该方法的名字,就可以找到它,并查看它的性能。
        注意,使用Deep Profile会耗费较大的性能,可能会导致性能分析器的运行变慢。小项目这样做是可以的,但是如果项目较大,这样做可能会导致性能分析器运行过慢。如果要分析某一段代码的性能,可以使用Profiler.BeginSample方法和Profiler.EndSample方法

        选中Deep Profile右侧的Call Stacks按钮,这样在收集性能数据的时候,每一帧都会记录该方法的的调用栈信息。GC.Alloc、UnsafeUtility.Malloc、JobHandle.Complete是Unity的方法,启用Call Stacks且勾选它们后,如果Unity有调用它们,则可以在Hierarchy或Raw Hierarchy右侧的搜索框中搜索到它们,这样就可以查看它们的性能了。
        GC.Alloc表示GC的内存分配情况。
        UnsafeUtility.Malloc(Persistent)用于在内存中分配指定大小的未初始化内存块。这个方法会直接在堆上分配内存,并可以绕过自动内存管理功能,需要手动管理内存的生命周期和释放。一般情况下,只有在处理非托管内存的特定场景下才会使用UnsafeUtility.Malloc方法。
        JobHandle.Complete表示Job的完成情况。这里的Job是指Unity的Job System的一组特定的任务。

点击右上角的三点,有一些选项可以选择。
        Color Blind Mode表示色盲模式,开启后会调整Profile窗口的颜色,照顾色盲用户。
        Show Stats for 'current frame'开启后,当点击Frame:XXX/XXX左侧的按钮,从而选中最后一帧,则会显示最后一帧的统计信息。
        Preferences,点击后会打开Project Settings窗口,用于设置性能分析器的一些属性。
                Frame Count,开始收集性能的数据时,每次最多可以查看多少帧。例如数值是300,则表示最多可以查看300帧。
                Show Stats for 'current frame',勾选后,则在右上角的三点会出现Show Stats for 'current frame'供我们选择。
                Default recording state,选择Enable,则重启Unity再打开Profiler窗口,如果此时的模式是Edit Mode,则会自动开始点击圆形按钮,开始收集数据。选择Disabled,则重启Unity再打开Profiler窗口,需要手动点击圆形按钮,才会开始收集数据。选择Remember,则会按照当前圆形按钮是启用还是禁用来决定下一次重启Unity再打开Profiler窗口时,该圆形按钮是否启用。
                Default editor target mode on start,选择Play Mode,则重启Unity再打开Profiler窗口,左上方会选择Play Mode,即在播放模式下才会收集数据。如果选择Edit Mode,则重启Unity再打开Profiler窗口,左上方会选择Edit Mode,即在编辑器模式下收集数据。
                Custom connection ID,当有多个Unity项目的实例同时运行,它们都要使用性能分析器来分析性能,则可以通过这个Custom connection ID来区分它们。

CPU Usage模块:
        下方窗口可以选择Timeline、Hierarchy、Raw Hierarchy
         选择Timeline,可以通过时间轴的方式查看这一帧中CPU依次干了什么。
         选择Hierarchy,可以查看CPU在这一帧中做的事情所消耗的性能和所花费的时间。Total表示一共占用了CPU使用情况的百分之几。Self表示自身的代码占用了CPU使用情况的百分之几,调用其它方法的代码不算在内的。Calls表示被调用了几次。GC Alloc表示GC分配的内存,当一个对象被释放后,它GC分配的内存不会马上被回收,所有GC分配的内存的总量达到一定程度,会触发GC,此时垃圾回收器才会把这些内存回收,不过同时也会造成游戏卡一下。Time ms表示一共耗时多少毫秒。Self ms表示表示自身的代码耗时多少毫秒,调用其它方法的代码不算在内的。
        选择Raw Hierarchy比起Hierarchy会单独列出更多信息,Hierarchy实际上是把这些信息合并了。

调用栈(Call Stack)

是计算机程序在执行过程中记录函数调用的一种数据结构。

调用栈是一个栈结构,即先进后出。它用于记录程序执行过程中,每个函数被调用的情况。

当一个函数被调用时,它的相关信息,如函数名、参数、返回地址等,会被添加进调用栈中。当该函数执行完成后,相应的信息会从调用栈中移除。通过不断添加和移除函数调用的信息,调用栈就记录了程序执行的顺序

调用栈对于程序调试和分析非常有用。当程序出现错误或异常时,可以通过查看调用栈来确定错误发生的位置和函数调用的顺序。调试器通常会显示当前调用栈的信息,以帮助开发人员查看函数的执行过程并找出发生异常的原因。

托管内存与非托管内存

托管内存是由垃圾回收器自动管理的内存,当达到一定量时,会由垃圾回收器自动释放它们。

托管内存存放在托管堆中。托管堆是一种用于存储和管理托管对象的内存区域。每当创建一个新的托管对象时,托管堆就会分配内存空间给这个对象,并记录这个对象的信息。当托管对象不再被引用,垃圾回收器会自动将其标记为垃圾,并在适当的时候回收其占用的内存空间。

非托管内存不会自动被回收,它们需要我们程序员写代码去管理和释放它们。

非托管内存并不固定存储在一个地方,它们往往分散存储在不同的地方,例如操作系统的内存、临时缓冲区等。

DOTS(Data-Oriented Technology Stack)

是Unity引擎中的一个新的编程模型和工具集。它旨在提供更高性能、更可扩展和更并行化的游戏开发体验。

  • ECS框架:ECS是一种用于组织和管理游戏对象的方式。它将游戏对象分解为实体(Entity)、组件(Component)和系统(System)。这种模式更加适合于并行处理和优化,可以提高游戏性能。
  • Job System(作业系统):Job System允许开发者将任务并行化,利用多核处理器的能力。它通过将任务划分为小的作业(jobs)并在多个线程上并发执行来提高性能。Job System还可以与ECS结合使用,使得开发者可以更好地控制游戏的行为。
  • Burst Compiler(突发编译器):Burst Compiler是一种高性能的C#编译器,可以将C#代码转换为高效的本机代码,以进一步提高游戏的性能。

DOTS的目标是为游戏开发者提供更好的性能和可扩展性,并更好地利用现代硬件的并行能力。它适用于需要处理大量实体和需要高性能的游戏项目。

Frame Debugger窗口

也叫帧调试器窗口,用于查看每一帧的画面是如何渲染出来的,可以详细查看这一帧的绘制过程。

打开Frame Debugger面板的方式:
Window——Analysis——Frame Debugger

按下“Enable”,则会启动帧调试,此时如果运行了游戏,则会自动暂停,然后当前这帧的渲染情况可以在这个窗口中查看。

上方的 X of X 表示绘制过程中有多少步,可以查看下一步或上一步。

如果要禁用帧调试,可以按下“Disable”。

用Frame Debugger窗口查看当前一帧的每一步时,可以配合Stats窗口使用,以此来确定哪一个物体造成的性能开销较大。

绘制的步骤越少,性能越好。

Frame Debugger窗口也能看到每一帧的Shader信息,但是需要有一定Shader基础才能看懂。

        大多数平台都支持帧调试器的使用,可以用手机的数据线成功连接到电脑,在手机上运行Unity的游戏,Frame Debugger窗口中会多出该手机设备供我们选择,我们就可以分析该手机设备上运行的Unity项目的性能。
        也可以让手机和电脑都连接同一个wifi,这样一来,Frame Debugger窗口中也会多出该手机设备供我们选择,我们就可以分析该手机设备上运行的Unity项目的性能。
        但是要注意,构建时必须在Project Settings窗口中勾选“Development Build”。而且有些平台可能不支持Frame Debugger的使用,例如WebGL平台。

Memory Profiler

可以查看游戏当前一帧具体的内存使用情况,我们可以详细地看到各种东西占用了多少内存。

如果发现某样东西占用了过高的内存,则可以考虑问题是不是出在它身上,从它身上入手来进行优化。也可以分析是不是存在内存泄漏问题,即可以分析是不是某些资源一直占着内存得不到释放,才导致内存占用过高。

安装方法:
Edit——Project Settings——Package Manager——勾选Enable Pre-release Packages——关闭窗口——Window——Package Manager——点击左上方的+号——Add package by name——输入com.unity.memoryprofiler——点击Add

安装完后打开方式:
Window——Analysis——Memory Profiler

点击Capture New Snapshot会创建当前这一时刻的内存快照,可以看到这一帧的内存情况。它默认会存储在与Assets文件夹同级的目录的一个叫做MemoryCaptures的文件夹中。如果要修改这个路径,也可以点击右上角的三点,点击Open Preferences,修改Memory Snapshot Storage Path的值。

Single Snapshot表示用来分析单张内存快照,Compare Snapshots可以通过对比来分析两张内存快照。

选中一张内存快照后,点击Tree Map可以看出各种资源和脚本所占用的内存,选中其中一块,可以具体地看出到底它们分别占用多少内存。如果某个名字的资源占用的内存高,那么可以考虑问题是不是出在它身上,这样我们就可以从它身上入手来进行优化。但是要注意,有一些名字的资源可能在项目中不找到,因为它们是Unity自带的资源。

在Unity编辑器中运行游戏,Memory Profiler记录的内存情况可能会不准确,它会把Unity编辑器的一些内存占用情况也记录进去。我们应该把游戏构建到电脑或者手机,然后在电脑或者手机上运行游戏,再用Memory Profiler拍内存快照来分析,此时这些内存快照记录的数据才是准确的。

参考:siki学院性能优化课程,挂不了链接,会被识别为广告

相关文章:

Unity性能优化 -- 性能分析工具

Stats窗口Profiler窗口Memory Profiler其他性能分析工具(Physica Debugger 窗口,Import Activity 窗口,Code Coverage 窗口,Profile Analyzer 窗口,IMGUI Debugger 窗口) Stats 统级数据窗口 game窗口 可…...

【微信小程序】基本语法

一、导入小程序 选择代码目录 项目配置文件 appid 当前小程序的 AppIDprojectname 当前小程序的项目名称 变更AppID(视情况而定,如果没有开发权限时需要变更成个人的 AppID) 二、模板语法 在页面中渲染数据时所用到的一系列语法叫做模板…...

go中的类型断言详解

在Go语言中,类型断言(Type Assertion)是一种将接口类型的变量转换为具体类型的机制。类型断言允许我们从接口类型的变量中提取出具体的值,以便访问具体类型的方法或属性。类型断言的语法如下: value, ok : interfaceV…...

vite构建的react程序放置图片

在 Vite 中,将图片放置在 public 文件夹中可以直接使用相对路径(如 /logo.png)的原因主要与 Vite 的构建和资源处理方式有关。以下是详细的解释: 1. 公共访问性 public 文件夹中的文件在构建过程中不会被 Vite 处理或哈希化。这…...

学习事件循环

本文内容由智谱清言产生。 什么是事件循环? 事件循环(Event Loop)是一个编程概念,特别是在异步编程和GUI(图形用户界面)应用程序中非常常见。它是用来处理和管理事件(如用户输入、计时器事件、…...

终端NuShell git权限异常处理

使用nushell git,关联老的秘钥文件 D:\phpstudy_pro\WWW\xmh\backend|10-312> mkdir d:\Users\Administrator\.ssh PC-20240719ZOSM||2411063145840 D:\phpstudy_pro\WWW\xmh\backend|10-312> cp -r c:\U…...

Mybatis Plus 集成 PgSQL 指南

“哲学家们只是用不同的方式解释世界,而问题在于改变世界。” ——卡尔马克思 (Karl Marx) 解读:马克思强调了实践的重要性,主张哲学不仅要理解世界,更要致力于改造世界。 本文我们引入 Mybatis Plus 作为 ORM ,并且使…...

Rust常用数据结构教程 Map

文章目录 一、Map类型1.HashMaphashMap的简单插入entry().or_insert()更新hashMap 2.什么时候用HashMap3.HashMap中的键 二、BTreeMap1.什么时候用BTreeMap2.BTreeMap中的键 参考 一、Map类型 键值对数据又称字典数据类型 主要有两种 HashMap - BTreeMap 1.HashMap HashM…...

<el-popover>可以展示select change改变值的时候popover 框会自动隐藏

一、问题定位 点击查看详细链接 element-plus 的 popover 组件,依赖 tooltip 组件;当 tooltip 的 trigger 的值不是 hover 时,会触发 close 事件;下拉框的 click 事件,触发了 tooltip 组件的 close 事件 总结一下&am…...

SQLI LABS | Less-37 POST-Bypass mysql_real_escape_string

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-37/ 是一个登…...

数字后端零基础入门系列 | Innovus零基础LAB学习Day9

Module 16 Wire Editing 这个章节的学习目标是学习如何在innovus中手工画线,切断一根线,换孔,更改一条net shape的layer和width等等。这个技能是每个数字IC后端工程师必须具备的。因为项目后期都需要这些技能来修复DRC和做一些手工custom走线…...

深度学习:GLUE(General Language Understanding Evaluation)详解

GLUE(General Language Understanding Evaluation)详解 GLUE(General Language Understanding Evaluation)是一个用于评估和比较自然语言理解(NLU)系统的综合基准测试。它包括了一系列的任务,旨…...

基于Multisim直流稳压电源电路±9V、±5V(含仿真和报告)

【全套资料.zip】直流稳压电源电路9V、5VMultisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 一般直流稳压电源都使用220伏市电作为电源,经过变压、整流、滤波后给稳压电路进行稳压…...

Vue Cli的配置中configureWebpack和chainWebpack的主要作用及区别是什么?

直接区别: configureWebpack项直接覆盖同名配置;chainWebpack项直接修改默认配置。 configureWebpack配置: // vue.config.js module.exports {configureWebpack: {plugins: [new MyAwesomeWebpackPlugin()]} }该代码段中的对象将会被web…...

ubuntu主机搭建sysroot交叉编译环境

ubuntu主机搭建sysroot交叉编译环境 主机是 ubuntu22.04 x86-64 hostubuntu22.04host-archx86-64host-cpui9-13900k 目标板是香橙派5b ,ubuntu22.04,aarch64 ,cpu rk3588s targetubuntu22.04target-archaarch64target-cpurk3588s 安装 qemu-user-static 进入 …...

Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...

全文链接:https://tecdat.cn/?p38195 股票市场在经济发展中占据重要地位。由于股票的高回报特性,股票市场吸引了越来越多机构和投资者的关注。然而,由于股票市场的复杂波动性,有时会给机构或投资者带来巨大损失。考虑到股票市场的…...

实验三 JDBC数据库操作编程(设计性)

实验三 JDBC数据库操作编程(设计性) 实验目的 掌握JDBC的数据库编程方法。掌握采用JDBC完成数据库链接、增删改查,以及操作封装的综合应用。实验要求 本实验要求每个同学单独完成;调试程序要记录调试过程中出现的问题及解决办法…...

各种环境换源教程

目录 pip 换源相关命令永久换源1. 命令行换源2. 配置文件换源 临时换源使用官方源使用镜像源 报错参考 npm换源相关命令永久换源1. 命令行换源2. 配置文件换源 pip 换源 相关命令 更新 pip 本身 首先,为了确保你使用的是最新版本的 pip,可以通过以下命…...

Rust项目中的Labels

姊妹篇: Go项目中的Labels 按照issue数量从多到少排序: https://github.com/rust-lang/rust/labels?page2&sortcount-desc https://github.com/rust-lang/rust/labels/A-contributor-roadblock 第1页: 标签/中文说明数字T-compiler/编译器Relevant to the compiler tea…...

Jmeter的安装和使用

使用场景: 我们需要对某个接口进行压力测试,在多线程环境下,服务的抗压能力;还有就是关于分布式开发需要测试多线程环境下数据的唯一性。 解决方案: jmeter官网连接:Apache JMeter - Apache JMeter™ 下载安装包 配…...

初识Electron 进程通信

概述 Electron chromium nodejs native API,也就是将node环境和浏览器环境整合到了一起,这样就构成了桌面端(chromium负责渲染、node负责操作系统API等) 流程模型 预加载脚本:运行在浏览器环境下,但是…...

go语言中的通道(channel)详解

在 Go 语言中,通道(channel) 是一种用于在 goroutine(协程)之间传递数据的管道。通道具有类型安全性,即它只能传递一种指定类型的数据。通道是 Go 并发编程的重要特性,能够让多个 goroutine 之间…...

【JS】内置类型的相关问题

我是目录 引言内置类型undefined与nullnull和undefined的区别字符串转换为字符串数字0.1+0.2不等于0.3NaNBigInt大数相加问题原生函数(封箱与解封)判断类型的方法typeofinstanceofObject.prototype.toString.callconstructor类型转换toStringtoNumbertoBoolean显式强制类型转…...

Mac上无法访问usr/local的文件

sudo chmod 755 /usr/loca 最后用百度提供的方法解决了...

http 常见状态码

1xx 信息,表示临时响应并需要请求者继续执行操作 2xx 成功,操作被成功接收并处理 3xx 表示要完成请求,需要进一步操作。通常,这些状态码用来重定向 4xx 客户端错误,请求包含语法错误或无法完成请求 5xx 服务…...

代码训练营 day59|并查集

前言 这里记录一下陈菜菜的刷题记录,主要应对25秋招、春招 个人背景 211CS本CUHK计算机相关硕,一年车企软件开发经验 代码能力:有待提高 常用语言:C 系列文章目录 第59天 :第十一章:图论part05 文章目录…...

Node.js——fs模块-路径补充说明

1、相对路径: ./座右铭.txt 当前目录下的座右铭.txt座右铭.txt 等效于上面的写法../座右铭.txt 当前目录的上一级目录中的座右铭.txt 2、绝对路径 D:/Program File Windows系统下的绝对路径/usr/bin Linux系统…...

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本,公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议,现打算迁移到IS-IS路由协议,张同学正在该公司实习,为了提高实际工作的准确性和…...

论软件可靠性设计及其应用

摘要 2023 年 3 月,我所在的公司承接了某智慧加油站平台的建设工作。该项目旨在帮助加油站提升运营效率、降低运营成本和提高销售额。我在该项目中担任系统架构设计师,负责整个项目的架构设计工作。 本文结合我在该项目中的实践,详细论述了…...

Android中桌面小部件framework层使用到的设计模式

在Android中,桌面小部件(App Widget)的Framework层采用了多种设计模式,以实现模块化、可维护性和高效的交互。 以下是Android桌面小部件Framework层中常用的设计模式及其具体应用: 1. 观察者模式(Observe…...