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

Android/Linux 子系统Graphics图形栈入门普法介绍

    Android/Linux 子系统Graphics图形栈入门普法介绍



写在最前面

  由于工作原因,最近在公司做了一个关于Android/Linux 子系统Graphics图形栈入门相关知识的培训介绍,个人感觉对于想要了解入门这块的朋友还是有一定帮助的。由于博客不能直接放入ppt,这里我就将相关的ppt转换成可以博客展示的发表出来,希望能帮助到对这一块感兴趣的朋友!




前言

  由于Linux(外加Android)图形子系统过于复杂,且个人由于能力有限,这里我也仅能对Linux图形子系统做一些简单的概述,进而罗列出Linux显示子系统涉及的相关的软件技术,做到给大家一个了解的程度!
本文很多图片都是从网上搜集而来的(很多是从维基百科)。虽然编写文档最好用自己的语言表述,尽量自己画图,但是Linux(外加Android)图形子系统太复杂了,而我的个人理解能力有限,而网上的图画的实在太好,所以我觉得,再怎么努力,也画不出更好的了,因此本着为站在巨人肩膀的角度出发,就直接copy了。

在这里插入图片描述




一.什么是Linux图形子系统?

图形子系统是Linux操作系统中比较复杂的子系统之一:

  • 对下,它要管理形态各异的、性能各异的显示相关的器件
  • 对上,它要向应用程序提供易用的、友好的、功能强大的图形用户界面(GUI)。因此,它是Linux中少有的、和用户空间程序(甚至是用户)息息相关的一个子系统

在这里插入图片描述




二.常用Android/Linux图形子系统图形栈总览

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述




三.Linux图形子系统图形栈概念介绍

从前面的常用Linux图形子系统图形栈总览,相信各位也看到了!图形栈的确实比较复杂,所以接下来我们将先理清局部概念,再整体框架深入的来分别介绍Linux图形子系统图形栈的一些概念(所以一口气想吃成个胖子就不太可能了)!

在这里插入图片描述


3.1 什么是GUI

古老物种DOS系统早已经作古,现在发扬广大的就是我们这里要说的GUI!Linux(Linux,Android)图形子系统的本质,就是是提供图形化的人机交互(human-computer interaction)界面,也即常说的GUI(Graphical User Interface)。而人机交互的本质,是人脑通过人的输出设备(动作、声音等),控制终端的输入设备,终端经过一系列的处理后,经由终端的输出设备将结果输出,人脑再通过人的输入设备接收电脑的输出,最终实现“人脑<–>终端”之间的人机交互。如下的图片对上述过程做了很好的总结:

在这里插入图片描述

在这里插入图片描述

通过上图以一个非常前卫的应用场景----虚拟现实(VR,Virtual Reality)游戏,说明了以图形化为主的人机交互过程:

  • 人脑通过动作、声音(对人脑而言,是output),控制终端的输入设备,包括键盘、鼠标、操作杆、麦克风、游戏手柄(包含加速度计、陀螺仪等传感器)。

  • 终端通过输入设备,接收人脑的指令,这些指令经过kernel Input subsystem、Middleware Gesture/Speech recognition等软件的处理,转换成应用程序(Game)可以识别的、有意义的信息。

  • 应用程序(Game)根据输入信息,做出相应的反馈,主要包括图像和声音。对VR游戏而言,可能需要2D/3D rendering,这可以借助openGL及其相应的用户空间driver实现。

  • 应用程序的反馈,经由kernel的Video subsystem(如DRM/KMS)、audio subsystem(如ALSA),输出到终端的输出设备上,包括显示设备(2D/3D)、扬声器/耳机(3D Positional Audio)、游戏手柄(力的反馈)等。

  • 输出到显示设备上时,可能会经过图形加速模块(Graphics accelerator)。


3.2 什么是Windowing system(窗口系统)?

窗口系统,是GUI的一种(也是当前计算机设备、智能设备广泛使用的一种),以WIMP (windows、icons、menus、pointer)的形式,提供人机交互接口。Linux系统中有很多窗口系统的实现,如Linux上的X Window System、Wayland和Android SurfaceFlinger等,虽然形态各异,但思路大致相同,包含如下要点:

  • 一般都使用client-server架构,server(称作display server,或者windows server、compositor等等)管理所有输入设备,以及用于输出的显示设备。

  • 应用程序作为display server的一个client,在自己窗口(window)中运行,并根据窗口类型的不同决定绘制是由client端进行还是请求服务端进行

  • Client的送显示请求,都会提交给display server,display server响应并处理这些请求,以一定的规则混合、叠加,最终在有限的输出资源上(屏幕),显示多个应用程序的GUI()

  • Display server和自己的client之间,通过某种类型的通信协议交互,该通信协议通常称作display server protocol。

  • Display server protocol可以是基于网络的,甚至是网络透明的(network transparent),如X Window System所使用的。也可以是其它类型的,如Android SurfaceFlinger所使用的binder。

如下是Linux下两个常用的窗口系统

在这里插入图片描述


3.3 什么是窗口管理器 ?

前面讲过,多种窗口系统,但是只提供了实现GUI环境的基本框架,其它的UI设计所需的button、menu、window title-bar styles等基本元素,则是由第三方的应用程序提供。这些应用程序主要包括:窗口管理器(window manager)、GUI工具集(GUI widget toolkit)和桌面环境(desktop environment)。
窗口管理器(Window Manager)用一句话来概括的话那就是它是一个可以控制窗口环境中窗口属性的软件。通常它的作用如下:

  • 窗口管理器核心功能是移动窗口,改变窗口大小,图标化(最小化)窗口和改变窗口层叠顺序,通俗说就是对窗口进行管理。
  • 一般来说窗口管理器会对应用程序窗口加上标题栏,用以进行窗口的拖拽操作,其中还有最小化,最大化,关闭按钮,方便用户快捷的操作窗口。
  • 窗口管理器还会对窗口边框进行处理,设计边框颜色和阴影效果来区分激活与非激活窗口。
  • 同时大部分窗口管理器还提供了一些快捷键绑定,来实现窗口切换,工作区切换,显示桌面等功能

3.4 窗口管理器分类和常用的

根据窗口管理器绘制和更新窗口的方式,窗口管理器可以分为以下四类:

  • 平铺式(Tiling window manager)

    在这里插入图片描述

  • 堆叠式窗口管理器(Stacking window manager)

    在这里插入图片描述

  • 动态窗口管理器(Dynamic window manager)

    在这里插入图片描述

  • 复合窗口管理器(Compositing window manager)
    在这里插入图片描述


3.5 什么是GUI工具集 ?

GUI(GUI toolkits)工具集是Windowing system之上的进一步的封装。还是以X为例,它通过xlib提供给应用程序的API,仅仅可以绘制基本的图形单元(点、线、面等等),这些基本的图形单元,要组合成复杂的应用程序,还有很多很多细碎、繁杂的任务要做。因此,一些特定的操作系统,会在X的基础上,封装出一些更为便利的GUI接口,方便应用程序使用,如GTK+、QT等等。

GTK+和QT是GUI toolkits,属于软件库,类似c语言的stdio.h,win32,java里import的各种外部包,可以任开发者调用(应该是C/C++使用的库)去创建一些图形界面里面的控件,例如button,下拉菜单,窗口等。我记得JAVA里面也有类似AWT和Swing库。用这一套库开发出的图形空间将会有一套统一的风格和标准,这就是不同系统安装的不同软件有的时候会有相同的样式,因为他们可能使用了GTK或者QT的库。KDE默认使用Qt库开发,Gnome默认使用GTK+库开发,而这两套库又是基于X window server的,需要遵守x11协议,在xwindow server上运行,作为client应用实现的基础类库。接下来就要说说KDE和Gnome以及其他基于GTK和Qt开发的x软件。


3.6 什么是桌面环境,常用的有那些 ?

桌面环境(Desktop Environments)是最近发展起来的桌面图形环境,它的主要目标是为Linux/Unix操作系统提供一个更加完善的界面以及大量各类整合工具和应用程序。桌面环境是应用程序级别的封装,通过提供一系列界面一致、操作方式一致的应用程序,使系统以更为友好的方式向用户提供服务。Linux系统比较主流的桌面环境包括GNOME、KDE,Unity(各种),Xfce等等,下面我们简单介绍下:

  • KDE 桌面系统
    KDE 是 K Desktop Environment 的缩写,中文译为“K桌面环境”。KDE 是基于大名鼎鼎的 Qt 的,最初于 1996 年作为开源项目公布,并在 1998 年发布了第一个版本,现在 KDE 几乎是排名第一的桌面环境了。
    在这里插入图片描述

  • GNOME桌面环境
    GNOME 即GNU网络对象模型环境 (The GNU Network Object Model Environment),GNU计划的一部分,开放源码运动的一个重要组成部分。 是一种让使用者容易操作和设定电脑环境的工具。目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境,他是GNU计划的正式桌面。
    在这里插入图片描述

  • Unity桌面环境
    Unity 是由 Ubuntu 的母公司 Canonical 开发的一款外壳。之所以说它是外壳,是因为 Unity 运行在 GNOME 桌面环境之上,使用了所有 GNOME 的核心应用程序。
    在这里插入图片描述

  • Xfce桌面环境
    Xfce是一个轻量级的类Unix的桌面系统,Xfce这个词的发音为X-f-c-e(即四个字母一个一个的读),Xfce是使用率仅次于KDE与Gnome的Linux桌面系统。
    在这里插入图片描述


3.7 窗口/窗口管理器/桌面环境是什么关系 ?

套用一句比较流行的话来说,就是人生无常,大肠包小肠(开玩笑,可以认为它们是从属关系)!可以用下面的示意图来表示:
在这里插入图片描述


3.8 窗口/窗口管理器/桌面环境是什么关系 ?

  • OpenGL(Open Graphics Library)是为了方便应用程序的开发,而屏蔽各种硬件平台的一个稳定的、跨平台的API,它定义了渲染有关的行为和动作,它不提供具体的实现,这个由各个GPU芯片厂自己实现(注意OpenGL并不是唯一能实现相关功能的API接口,譬如vulkan也是可以的)。

  • OpenGL ES(OpenGL for Embedded Systems)是免授权费的,跨平台的,功能完善的2D和3D图形应用程序接口API,它针对多种嵌入式系统专门设计。它由精心定义的桌面OpenGL子集组成,创造了软件与图形加速间灵活强大的底层交互接口。说白了,它就是OpenGL的子集、可以应用于ES嵌入式设备上。

  • EGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,它主要由系统制造商实现。EGL提供如下机制:

  • 与设备的原生窗口系统通信

  • 查询绘图表面的可用类型和配置

  • 创建绘图表面

  • 在OpenGL ES 和其他图形渲染API之间同步渲染

  • 管理纹理贴图等渲染资源


3.9 OpenGL接口的分类和实现有那些?

通过前面的介绍,我们了解到OpenGL只是一个API规范,但由于3D绘图的复杂性,它也是相当的复杂的。不过,归根结底,它的目的有两个:

  • 对上,屏蔽硬件细节,为应用程序提供相对稳定的、平台无关的3D图像处理API(当然,也可以是2D)。
  • 对下,指引硬件相关的驱动软件,实现3D图像处理相关的功能。

通常我们见到的各种libGLXXX.so就是OpenGL的实现,从分类上可以是各种不同类型的OpenGL实现,如OpenGL(for PC场景)、OpenGLES(for嵌入式场景)、OpenVG(for Flash、SVG矢量图)。

libGL的实现,既可以是基于软件的(譬如谷歌的swiftshader,swrast),也可以是基于硬件的(譬如鼎鼎大名的Arm的mail和高通的Adreno系列,但是它们都是非开源的)。其中Mesa 3D是OpenGL的一个开源本的实现,支持3D硬件加速(关于它在后面会介绍)。

OpenGL的一个重要特性,是独立于操作系统和窗口系统而存在的(这个也正常,因为它就是一个API的规范,谁用谁遵守规范就好),但是它的实现通常不能独立于操作系统和窗口存在。


3.10 OpenGL OpenGLES EGL之间的关系 ?

在这里插入图片描述

我们举个栗子我们来思考一下画家绘画的过程:首先要有一名懂得各种绘画技艺的画家,然后他需要一张画布,一些笔,一些颜料,一些辅助工具(尺、模板、橡皮、调色板等等),然后他在画布上绘制第一幅画,完成之后展示给人们看;在人们观赏第一幅画的时候,他可以在第二张画布上绘制第二幅画,绘制完成后收回第一幅画,将第二幅画展现给人们看;接着使用工具擦除第一幅画,在同一张画布上绘制第三幅画;周而复始,人们便看到了一幅接一幅的画。

对比 OpenGL ES/EGL,各要素的对应关系大体如下:

  • 画家:编程人员
  • 笔、颜料、辅助工具:OpenGL ES API
  • 画布:EGL 创建的 Surface

3.11 什么是GLX,它和EGL的关系是什么 ?

在Linux的图形栈中也许我们会听到一个名词GLX,这里也简单介绍下它,GLX是OpenGL Extension to the X Window System的缩写。它作为x的扩展,是x协议和X server的一部分,已经包含在X server的代码中了。GLX提供了X window system使用的OpenGL接口,允许通过x调用OpenGL库。OpenGL 在使用时,需要与一个实际的窗口系统关联起来。在不同平台上有不同的机制以关联窗口系统,在Windows上是WGL,在Linux上是GLX,在 Apple OS上是AGL等。

如果要问EGL和GLX有什么关系,那么EGL则是OpenGL ES在嵌入式平台上(WGL,GLX,AGL)的等价物。EGL假设OS会提供窗口系统,但EGL与平台无关,并不局限于任何特定的窗口系统,所有用到本地窗口系统的地方都用屏蔽指针来处理。我觉得这就是它易于移植的关键。

在这里插入图片描述




四.普法Meas

Mesa在Android/Linux graphics图形栈特别是Linux中是绕不开的一个技术,这里我们从它是什么,它的作用,以及它的架构出发来简单介绍介绍!


4.1 什么是Mesa ?

在前面介绍OpenGl的实现的时候,简单介绍了下Mesa是OpenGL的一个开源实现。这里再隆重介绍下它,Mesa,也称为Mesa3D和Mesa 3D图形库,是OpenGL,Vulkan和其他图形API规范的开源软件实现。它最重要的用户是两个图形驱动程序,这些图形驱动程序主要由Intel和AMD为各自的硬件开发和资助。注意这里没有提到Nvidia,因为它没有开放GPU的相关驱动,所以有了下面的“英伟达是我们遇到的硬件厂商中最麻烦的一个”

在这里插入图片描述

在这里插入图片描述

在经过Linus Torvalds的一顿怒骂之后,英伟达破天荒开源GPU内核驱动,然后被戏称为”这是近十年来开源操作系统硬件支持方面发生的最大事件之一”。我们就当做看戏的观众,吃吃瓜就OK了!


4.2 Mesa的作用 ?

我们知道了Mesa是OpenGL的实现,它提供了如下的两个基本作用:
- 对接各种GPU硬件,将应用层对GL API的调用转换到对硬件GPU的调用上;

  • 各种 GL API 的纯软实现,当没有可用的硬件时,它可以提供传软件的 GL API 的实现,Mesa还包含称为swrast的软件渲染实现,当不存在图形硬件加速器时,该渲染器允许着色器在CPU上运行,作为后备。 Gallium软件光栅化器称为软件管道(softpipe),或者在构建时支持LLVM llvmpipe,后者在运行时生成CPU代码(我们的E2000就是使用此方案)。

我它可以用于Linux,Windows,Mac等系统平台。在Windows上运行时它提供OpenGL API over DirectX的转换。它实现了 OpenGL,Vulkan以及其他的图形API。Mesa把这些API调用转换到相应驱动程序(其实并不是真正的驱动程序,是用户态的DRI驱动程序)调用上。并且支持如下的API:

  • OpenGL OpenGLES
  • EGL
  • OpenCL
  • Vulkan OpenVG

4.3 Mesa架构 ?

Gallium3D 是Mesa提出的用于简化GPU驱动开发的框架。下面是Mesa结构图,展示了mesa如何通过libGL库跟内核打交道,以及展示了新旧两种用户态设备驱动程序的实现方式。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

至于Mesa的源码框架,这里就不分析了,这也不是该PPT的重点,该PPT的作用主要是为了普及一些Linux下graphic一些技术栈(其实主要是本人能力有限)!




五.什么是渲染以及硬件渲染加速 ?

这里我们用通俗的语言来说就是:根据实际情况,将2D的点,线面和3D图形以一定手段绘制出来,以一定的格式,保存在buffer中。该过程就是常说的“Rendering”。UI 组件在绘制到屏幕之前,都需要经过 Rasterization(栅格化)操作,而栅格化又是一个非常耗时的操作。Rasterization 栅格化是绘制那些 Button、Shape、Path、String、Bitmap 等显示组件最基础的操作。栅格化将这些 UI 组件拆分到显示器的不同像素上进行显示。这是一个非常耗时的操作,GPU 的引入就是为了加快栅格化。
通常情况下,2D渲染一般是由CPU完成(也可以由专门的硬件模块完成)。3D渲染也可以由CPU完成,但面临性能问题,因此大多数平台都会使用单独硬件模块(GPU或者显卡)负责3D渲染。这种通过特定功能的硬件模块,来处理那些CPU不擅长的事务的方法,称作硬件加速(Hardware acceleration),相应的硬件模块,就是硬件加速模块。而这种硬件加速模块的功能就是我们所说的硬件渲染加速了!

在这里插入图片描述

在这里插入图片描述




六.为什么GPU能渲染加速而CPU不行 ?

在回答这个问题前,我们非常有必要再来简单描述下CPU和GPU:

  • CPU(Central Processing Unit,中央处理器)是计算机设备核心器件,用于执行程序代码,软件开发者对此都很熟悉
  • GPU(Graphics Processing Unit,图形处理器)主要用于处理图形运算,通常所说“显卡”的核心部件就是GPU。
    下面是CPU和GPU的结构对比图(从出生就决定了不同的命运):

在这里插入图片描述

  • 从结构图可以看出,CPU的控制器较为复杂,而ALU数量较少。因此CPU擅长各种复杂的逻辑运算,但不擅长数学尤其是浮点运算
  • CPU是串行结构。以计算100个数字为例,对于CPU的一个核,每次只能计算两个数的和,结果逐步累加
  • 和CPU不同的是,GPU就是为实现大量数学运算设计的。从结构图中可以看到,GPU的控制器比较简单,但包含了大量ALU。GPU中的ALU使用了并行设计,且具有较多浮点运算单元
  • 硬件加速的主要原理,就是通过底层软件代码,将CPU不擅长的图形计算转换成GPU专用指令,由GPU完成

假设我们有如下图像处理任务,给每个像素值加1。GPU并行计算的方式简单粗暴,在资源允许的情况下,可以为每个像素开一个GPU线程,由其进行加1操作。数学运算量越大,这种并行方式性能优势越明显(就是这么简单粗暴,多生孩子好干活)。

在这里插入图片描述




七.什么是图层合成 ?

图层合成指以一定形式组合各个图层的绘制内容,然后送往显示设备显示的过程(注意是送往显示的过程,而不是送显)。从原理上可分为在线合成(硬件合成)与离线合成(GPU或者CPU模拟合成)两种方式。

在这里插入图片描述

在这里插入图片描述

  • 离线合成(GPU合成或者CPU模拟)
    先将所有图层画到一个最终层(FrameBuffer)上,再将FrameBuffer送到显示设备显示。由于合成FrameBuffer与送显示设备显示一般是异步的(线下生成FrameBuffer,需要时线上的显示设备去取),因此叫离线合成(这种合成方式在Android中被叫做Client合成)。
    在这里插入图片描述
  • 在线合成(硬件合成)
    不使用FrameBuffer,在显示设备需要显示某一行的像素时,用显示控制器将所有图层与该行相关的数据取出,合成一行像素送过去。通常这种技术又叫Overlay技术。由于省去合成FrameBuffer时读图层,写FrameBuffer的步骤,大幅降低了内存传输量,减少了功耗,但这个需要硬件支持(通常这种硬件被称为DPU,显示处理单元)。
    在这里插入图片描述



八.普法DPU

DPU(Display Processor Unit)显示处理单元,而不是当今大火的并不是机器学习的Deep-LeaningPU或者是被吹爆天的”数据处理器”。也许看到这个“生僻词”,首先就一脸懵逼了:不是CPU、GPU么,什么时候还出来个DPU了?(其实它是一直存在的,只是它默默的躲在后面不被大众知道!,通常被称为显卡三板斧之一。)

在这里插入图片描述


8.1 DPU的作用

当我们通常大谈显示高帧率、高动态范围显示,这些其实都需要顶级的DPU来实现。相比于GPU,相比之下,DPU显示处理单元对于用户体验的影响可能还要更大一些,因为它就是直接控制图形处理器向屏幕输出显示信号的“最后一道关卡”。首先,DPU的硬件性能高低,直接决定了其所能支持的最大屏幕分辨率、最大频率刷新率、乃至最大色彩深度(色彩丰富程度)的多少;其次,DPU运算精度的高低,还会决定屏幕上线条、文字看起来的清晰度表现;最后,对于现代的DPU来说,它们除了负责将GPU、VPU生成的视频信号“传递”给显示面板之外,还可以对其进行效果强化方面的额外处理。比如说屏幕色彩校正、视频插帧、像素级的对比度增强和显示细节修复,这些看起来很“高大上”的功能,其实也都是由那些旗舰芯片里的DPU来进行处理。

所以通常的DPU必须有如下几部分功能:

  • 支持多个Source Layer overlays(通常包括鼠标,以及其它各种图层,我们的dc却只能支持两层overlays)
  • Display Interface:支持多路同时的输出设备(物理显示设备,虚拟显示设备不需要实际的输出设备)
  • Blender: 支持多个Blender,对应于多个Path(除了LCD外,对应于DP或HDMI投屏),这里我个人是可以处理多路输入

在这里插入图片描述


8.2 DPU的发展史 ?

VPU(视频处理单元,这个交由后面视频栈进行普及)和DPU,它们其实比“显卡”还要老资历,妥妥的老人一枚!

  • 如期说老资历,我们不如说VPU和DPU的历史,实际上比我们熟悉的“GPU”还要古老。这是因为个人电脑最初的显卡,本来就是只有2D色彩和线条绘制能力的,也就是说它们其实根本不是“GPU”,而是全部都是“DPU”。直到后来1999年NVIDIA研发出了对CPU依赖程度更低的、拥有更强的3D处理能力的GeForce 256显示核心,它才被认为是世界上的第一款“GPU”。至于VPU,经历过486、初代奔腾时代的电脑用户都知道,当时的计算机只靠CPU性能是无法流畅播放VCD视频的,要想在电脑上“看片”,首先你需要购买一块独立的“解码卡”,而它本质上就是早期的VPU。

  • 当然这块从最早的Framebuffer机制也能看出,DRM框架中最早版本中也是不存在GPU的代码。DPU最简单的功能便是将Frambuffer数据输出到显示设备上去,而Framebuffer的来源也都是来自于CPU的软件绘制,而非GPU绘制


8.3 DPU和GPU的关系 ?

在实际中DPU和GPU没有相关联,甚至完全可以是两个厂家的产品!并且DPU与GPU在Linux代码中的耦合是历史产物,完全可以独立出来。

在这里插入图片描述
通过上图我们可以得出,如下的结论:

  • 通过上图的Linux的DRI显示框架,也能看出KMS的相对独立性,对应于系统侧的composer,而DRM则在于内容相关的应用侧。对于Android系统也是一样的,GPU对应于DRM是用来绘制的,属于应用端的进程;而DPU对应于KMS,运行于服务端,可以认为在X/wayland Service(composer)中,开机就会初始化,然后保持不变,两者的分离更加彻底。

  • 所以DPU侧重于控制显示,而GPU侧重于内容




九.什么是送显?

送显:把合并后的显存送到显示驱动显示到屏幕上的过程。从技术的发展史上来看,它经过了FBDEV到DRM/KMS的转变过程!

在这里插入图片描述




十.Application的UI展现给用过户需要经过几步 ?

总结起来分为如下几步:

  • 根据实际情况,将Application的UI渲染绘制出来,并且以一定的格式保存
  • 将渲染好的UI图层数据,经过图层合成
  • 将合成好的UI图层数据,最终显示在display device上.该过程一般称作送显

在这里插入图片描述




十一.什么是FBDEV显示方案 ?

The frame buffer device provides an abstraction for the graphics hardware. It represents the frame buffer of some video hardware and allows application software to access the graphics hardware through a well-defined interface, so the software doesn’t need to know anything about the low-level (hardware register) stuff. fbdev用于为显示图形硬件提供一层软件抽象.它代理了显示图形硬件的帧内存,并且提供了一些良好定义的接口让应用软件去访问图形硬件,而不用去关心底层图形硬件的具体控制细节。用通俗的一句话来说就是它是这一种传统的显示框架,简单,但是它只能提供最基础的显示功能,无法满足当前上层应用和底层硬件的显示需求(特别是移动操作系统的需求)。

在这里插入图片描述




十二.什么是DRI ?

DRI(Direct Render Infrastructure):直接渲染基础架构。DRI在当前(或者说将来)的linux图形子系统中,有着举足轻重的地位,甚至可以说是新的linux图形框架核心思想的体现。而现在的主流DRM/KMS框架都是围绕着它进行的。所以鉴于它的重要性,我们非常有必要了解它!

在这里插入图片描述




十三.DRI的发展史

没有无缘无故的爱,也没有无缘无故的狠,而我们的DRI也不是无缘无故的凭空冒出来的,它是Linux的技术发展过程中诞生的产物。我们这里对其捋一捋!还记得我们在前面介绍窗口的的时候说过,它们是经典的c/s架构吗?在DRI诞生前应用不能直接访问硬件,通常的软件框架是(从上到下):C<---->S<---->Driver<---->Hardware。这样考虑的原因主要有二:安全性和共享硬件资源!对稍微有经验的软件开发人员(特别是系统工程师和驱动工程师)来说,这种理念就像杀人偿命、欠债还钱一样天经地义。但直到X server+3D出现之后,一切都不好了。因为X server大喊的着:“让我来!”,给出了这样的框架:

在这里插入图片描述

  • 基于OpenGL的3D program需要进行3D rendering的时候,需要通过X server的一个扩展(GLX,前面已经介绍过了),请求X server帮忙处理。X server再通过底层的driver(位于用户空间),通过kernel,访问硬件(如GPU)。

  • 其它普通的2D rendering,如2D绘图、字体等,则直接请求X server帮忙完成。

但是任何事情都不可能满足所有人,前面的渲染框架也是如此!看着不错哦,完全满足上面的理念。但计算机游戏、图形设备硬件等开发人员不乐意了:请让我们直接访问硬件!因为很多高性能的图形设备,要求相应的应用程序直接访问硬件,才能实现性能最优。好像每个人都是对的,怎么办?妥协的结果是,为3D Rendering另起炉灶,给出一个直接访问硬件的框架,DRI就应运而生了,如下:

在这里插入图片描述

这里可以看到DRI好像基本都是Rendering有关的内容,那送显呢?还是由display server统一处理比较好,因为显示设备是有限的,多个应用程序的多个界面都要争取这有限的资源,server会统一管理、叠加并显示到屏幕上。而这里叠加的过程,通常称作合成(Compositor),这个在前面已经有涉及到了!




十四.什么是DRM ?

DRM(Direct Rendering Manager):即直接渲染管理器。它是为了解决多个程序对GPU(或显卡,graphics card)及相应的graphics memory资源的协同使用问题而产生的。它是一个内核级的设备驱动,可以编译到内核中也可以作为标准模块进行加载,并且对用户层提供了libdrm进行先关的接口调用(注意这里需要和Linux下面的DRM显示框架区分开来,此处的DRM是DRM显示框架的子集,它在DRM显示框架中主要被用来渲染)。它的功能有如下几点:

  • Initialize GPU card, load its firmware, etc.

  • Share the GPU command queue between multiple applications

  • Manage the memory (allocation, access)

  • 统一管理、调度多个应用程序向显卡发送的命令请求,可以类比为管理CPU资源的进程管理(process management)模块。

  • 统一管理显示有关的memory(memory可以是GPU专用的,也可以是system ram划给GPU的,后一种方法在嵌入式系统比较常用),该功能由GEM(Graphics Execution Manager)模块实现,主要包括:

注意这里的DRM只是DRM显示框架的一部分

在这里插入图片描述




十五.什么是KMS ?

KMS(Kernel Mode Setting):也称作Atomic KMS,它是一个在linux 4.2版本的kernel上,才最终定性的技术。从字面意义上理解,它要实现的功能比较简单,即:显示模式(display mode)的设置,包括屏幕分辨率(resolution)、颜色深的(color depth)、屏幕刷新率(refresh rate)等等(它在Linux graphic的显示框架中主要被用来送显)。它的出现是为了解决最开始的DRM显示框架的缺点,那时候,Mode-Setting (包括更新画面、配置 display pipeline、screen resolution、color depth、refresh rate等) 是在 Userspace 中实现的,这样做的缺点是:

  • Rendering 和 Mode-Setting 会发生竞争;

  • 不统一,缺少抽象,不同的硬件平台各自为营;
    后来就引入了 Kernel Mode-Setting (KMS),其实就是将 Mode-Setting 的活移回到内核,DRM driver 即负责访问 GPU 也负责访问 Display Engine,且将 KMS 作为 DRM API 的一部分,如下图左边部分:

在这里插入图片描述


15.1 KMS的组成

在这里插入图片描述

  • Framebuffer:帧缓冲区对象(struct drm_framebuffer)是帧内存对象的抽象,它提供了像素源给到CRTC。帧缓冲区依赖于底层内存管理器分配内存。
  • Plane:一个平面对象(struct drm_plane)表示一个图像源,从drm_framebuffer对象获取输入数据,在输出过程中与CRTC的顶部混合或覆盖。
  • CRTC:一个CRTC(struct drm_crtc)表示一整个显示管线。它从drm_plane平面接收像素数据并将它们混合在一起。
  • Encoder:Encoder对象(struct drm_encoder)是CRTC和连接器(drm_connector)之间的连接元素。编码器从CRTC获取像素数据,并将其转换成适合任何连接的连接器的格式。
  • Connector:连接器(struct drm_connector)是显示接收器的抽象,包括als固定面板或任何其他可以以某种形式显示像素的东西。
  • 最终应用通过 KMS api将上述对象连接成一条display pipeline,最终将图像显示在屏幕上。
    在这里插入图片描述



十六.KMS和DRM的关系 ?

个人觉得抛开DRM/KMS显示系统不谈,DRM和KMS是完全独立没有任何依附或者依赖的关系的。只所以谈到DRM会牵涉到KMS或者反之。它们二者完全是历史原因,导致KMS的代码,放到DRM中实现了。目前的kernel版本(如4.2之后),KMS和DRM基本上没有什么逻辑耦合(除了代码位于相同目录,以及通过相同的设备节点提供ioctl之外),可以当做独立模块看待。并且是现有DRM后才有的KMS。并且DRM的核心点是渲染,而KMS的重点在于送显!

在这里插入图片描述




十七.DRM/KMS显示方案

在前面我们说道了FBDEV显示方案,知道了它是一种简单的,传统的,不能符合现在操作系统,特别是移动操作系统高刷新的显示方案。而DRM/KMS显示方案就是为了解决上述问题而来的一种新的Linux下的显示方案(当然Android最新的也引入了)。

DRM/KMS显示方案相较于FBDEV显示方案有如下的优点:

  • 适应当前日益更新的显示硬件发展
  • 软件上能支持更多高级的控制和特性,譬如天生支持fence等特性
  • 适应移动操作系统高刷新等特性要求

此时的DRM和KMS在显示方案中才有了关联,它们之间的相互协同作用最终构建了DRM/KMMS显示方案




十八.Linux下典型窗口类型+DRM/KMS显示方案总览

在这里插入图片描述

在这里插入图片描述




十九.Wayland + Mesa + DRM/KMS显示方案简介

在详细介绍前,我们看下整体总览,后面对每个模块简单概括:

在这里插入图片描述

前面的框图是基于Wayland的窗口系统为例,描述了linux graphic系统在DRI框架下,通过两条路径(DRM和KMS),分别实现Rendering和送显两个显示步骤。我们这里从上层到下层的角度出发,来简单分析该显示流程(这也是当前Linux主流的graphics图形子系统):

  • Application(如3D game)根据用户动作,需要重绘界面,此时它会通过OpenGL|ES、EGL等接口,将一系列的绘图请求,提交给GPU(非3D渲染,最后也是将一系列请求转换成GL命令提交给GPU)。

    • OpenGL|ES、EGL的实现,可以有多种形式,这里以Mesa 3D为例,所有的3D rendering请求,都会经过该软件库,它会根据实际情况,通过硬件或者软件的方式,响应Application的rendering请求。
    • 当系统存在基于DRI的硬件rendering机制时,Mesa 3D会通过libGL-meas-DRI,调用DRI提供的rendering功能。
    • libGL-meas-DRI会调用libdrm,libdrm会通过ioctl调用kernel态的DRI驱动,这里称作DRM(Direct Rendering Module)。
    • Kernel的DRM模块,最终通过GPU完成rendering动作。
  • GPU绘制完成后,将rendering的结果返回给Application。

    • rendering的结果是以image buffer的形式返回给应用程序(注意这里的返回并不是真的拷贝了一份,而是通过共享方式达到共享的,这种共享的方式通常是通过DMA-BUF来实现的)。
  • Application将这些绘制完成的图像buffer(可能不知一个)送给Wayland compositor,Wayland compositor会控制硬件,将buffer显示到屏幕上。

    • Wayland compositor会搜集系统Applications送来的所有image buffers,并处理buffer在屏幕上的坐标、叠加方式后,直接通过ioctl,交给kernel KMS(kernel mode setting)模块,该模块会控制显示控制器将图像显示到具体的显示设备上

在这里插入图片描述




写在最后

到这里,Linux子系统Graphics图形栈介绍就告一段落了!编写该PPT的过程我也是小心再小心,谨慎再谨慎!但是难免其中可能会有一些概念或者理论不对,这个希望各位能多多指针!
最后要感谢网络上的各路大神,给我们提供了如此多的学习资料才让我对Linux子系统Graphics图形栈有了些皮毛的认识!路漫漫吾将上下而求索,总之,青山不改绿水长流先到这里了!

在这里插入图片描述

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

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

钱大妈基于 Flink 的实时风控实践

摘要:本文介绍了钱大妈与阿里云 Flink 实时计算团队共建实时风控规则引擎,精确识别羊毛党以防营销预算流失。主要内容包括: 项目背景 业务架构 规则模型 难点攻坚 回顾展望 一、项目背景 目前钱大妈基于云原生大数据组件(DataWorks、MaxCompute、Flink、Hologres)构建了离…...

MMR: 控制推荐多样性算法

你有考虑过推荐系统的多样性层面是怎么设计的吗&#xff1f; 推荐系统中精排模块是对各个item进行精准预估&#xff0c;而在之后的重排阶段则会整体考虑推荐的N条内容间的关系&#xff0c;给出listwise粒度上最优的推荐序列。 多样性是重排阶段的一个排序策略&#xff0c;已经…...

XGBoost原理及目标函数推导详解

前言 XGBoost&#xff08;eXtreme Gradient Boosting&#xff09;全名叫极端梯度提升&#xff0c;XGBoost是集成学习方法的王牌&#xff0c;在Kaggle及工业界都有广泛的应用并取得了较好的成绩&#xff0c;本文较详细的介绍了XGBoost的算法原理及目标函数公式推导。 一、XGBoo…...

2021年全球求生食物行业调研及趋势分析报告

【页数】&#xff1a;109 【图表数】&#xff1a;150 【出版时间】&#xff1a;2021年6月 内容摘要 本文研究全球市场、主要地区和主要国家求生食物的销量、销售收入等&#xff0c;同时也重点分析全球范围内主要厂商&#xff08;品牌&#xff09;竞争态势&#xff0c;求生食物…...

漫画 | 大数据风控从业者的一天

看过码农的一天...看过算法工程师的一天...终于轮到了&#xff0c;大数据风控从业者的一天...警告&#xff0c;内容过于真实&#xff0c;可能引起极度舒适。风风火火抵达公司。果然&#xff0c;美好的一天从迟到开始&#xff0c;可陆家嘴周围的房子...开机&#xff0c;全是行业…...

arduino串口发送数据显示到OLED上

代码如下&#xff0c;调试风格。。 #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>#define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup() {// put your setup code here, to run once:Serial.begin(1152…...

Linux 安装并配置 OpenLDAP 新编(3)YUM安装

Linux 安装并配置 OpenLDAP 新编&#xff08;3&#xff09;YUM安装 我实操OpenLDAP的过程&#xff0c;是先根据官网资料编译安装&#xff0c;大约花费了近2周时间&#xff0c;也有点陷入牛角尖了&#xff0c;一时不得出。后来加了一个群&#xff0c;经过提醒发现了配置文件中的…...

对比下小程序语法和Vue语法异同

对比之前了解过的Vue&#xff0c;方便加深 了解微信小程序语法。 下面从几个方面介绍Vue和小程序 一&#xff0c;钩子函数 Vue只要跳转新页面就会触发钩子函数&#xff0c;小程序对于不同的页面跳转方式&#xff0c;触发的钩子是不同的。 下面简单说几个小程序钩子函数 on…...

element上传增加粘贴上传图片功能

<el-upload class"upload-demo ml" ref"uploadMutiple"action"http://api110.herbplantist.com/sucai/public/index.php/post/post/uploadFile"list-type"picture-card" :data"myData" multiple drag:on-preview"...

HTML <input> 标签的 autocomplete 属性

定义和用法 autocomplete 属性规定输入字段是否应该启用自动完成功能。 自动完成允许浏览器预测对字段的输入。当用户在字段开始键入时&#xff0c;浏览器基于之前键入过的值&#xff0c;应该显示出在字段中填写的选项。 当input输入框聚焦的时候 在浏览器里面会出现之前输入…...

Latex 中插入 Matlab 代码

这篇文章将介绍如何在 Latex 排版过程中添加 Matlab 代码 功能效果 主要有如下排版功能&#xff1a; 语法高亮自动添加边框自动添加行号 先上图&#xff0c;大家感受一下效果&#xff1a; 而实现这些只需要一行代码加一个包&#xff01; 插入代码块 \usepackage{listings…...

Json处理

1.导入依赖 <!-- Jackson springMVC默认的Json解决方案选择是 Jackson&#xff0c;所以只需要导入jackson的jar&#xff0c;即可使用。--> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifa…...

动态规划:《完全背包问题》-python实现

接上一篇博客 在01背包问题中&#xff0c;每个物体都不允许重复使用。而完全背包问题:有n种重量和价值分别为Wi和Vi的物品。从这些物品中挑选出总重量不超过w的物品&#xff0c;每种物品都可以挑选多件&#xff0c;求所有挑选方案中价值总和的最大值。 #coding:utf-8 #完全背包…...

性能测试二八原则,响应时间2/5/8原则

性能测试二八原则&#xff0c;响应时间2/5/8原则 所谓响应时间的“2-5-8原则”&#xff0c;简单说&#xff0c;就是 当用户能够在2秒以内得到响应时&#xff0c;会感觉系统的响应很快&#xff1b;当用户在2-5秒之间得到响应时&#xff0c;会感觉系统的响应速度还可以&#xf…...

PTA:素因子分解

素因子分解 给定某个正整数 N&#xff0c;求其素因子分解结果&#xff0c;即给出其因式分解表达式 Np1k1⋅p2k2 ⋯ pmkm。 输入格式&#xff1a; 输入long int范围内的正整数 N。 输出格式&#xff1a; 按给定格式输出N的素因式分解表达式&#xff0c;即 Np1k1⋅p2k2 ⋯ pmk…...

Ubuntu安装Jenkins

环境搭建 1、java环境搭建 ubuntu 18.04默认不安装java环境&#xff0c;而jenkins依赖java环境。 &#xff08;1&#xff09;安装步骤 sudo apt-get install openjdk-8-jdk java -version如图&#xff0c;安装成功。 2、Jenkins部署 sudo apt-get install jenkins如图提示…...

无胁科技-TVD每日漏洞情报-2022-12-12

漏洞名称:ThinkPHP 远程命令执行漏洞 漏洞级别:高危 漏洞编号:NULL 相关涉及:v6.0.1<ThinkPHP<v6.0.13 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-20170 漏洞名称:Microweber 注入漏洞 漏洞级别:高危 漏洞编号:CVE-2022-33012;CNVD…...

ArcMap报错总结

1、ArcMap字段计算器报错 Excel转表后得到的表字段如下&#xff1a; 现在想要将“省”和“市”两个字段内容拼接在一起&#xff0c;形成一个新的字段&#xff0c;字段计算器如下输入&#xff1a; 地理处理结果中的报错信息如下&#xff1a; 解决方案为字段计算器修改如下&am…...

基于蓝墨云班课的翻转课堂实践

基于蓝墨云班课的翻转课堂实践 就“最近有什么软件工程的新理论和最佳实践?”的疑问&#xff0c;邹欣老师(博客,微博,豆瓣)说&#xff1a; 最佳实践和理论都出现了好多年, 只不过我们不用 教学技术和理论也一样&#xff0c;比如“翻转课堂”。贺利坚老师(博客园博客,CSDN博客,…...

Redis学习(三) - Redis客户端对比及配置(SpringBoot)

1.常用的redis客户端介绍以及对比 Jedis api 在线网址&#xff1a;http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html redisson 官网地址&#xff1a;https://redisson.org/redisson git项目地址&#xff1a;https://github.com/redisson/redisson lett…...

服务器ssd硬盘格式化,格式化没你想象的简单 格式选错了对SSD有损

清空盘里边的文件最快的方法就是格式化&#xff0c;我们经常会对电脑硬盘、闪存盘、移动硬盘进行格式化&#xff0c;而在格式化硬盘的时候会弹出文件系统的选项&#xff0c;分别有FAT32、NTFS、exFAT三种格式&#xff0c;那么FAT32、NTFS、exFAT有什么区别&#xff1f;硬盘格式…...

linux 如何查看端口被哪个进程占用,如何查看linux端口被哪个进程占用

查看linux端口被哪个进程占用的方法&#xff1a;首先查看被占用的端口的进程&#xff0c;并查询进程id&#xff1b;然后根据集成id查询进程&#xff0c;并查看进程详情信息&#xff1b;最后查看进行所在目录&#xff0c;操作进程即可。本教程操作环境&#xff1a;red hat enter…...

基于Multisim的简易电梯仿真设计

链接&#xff1a;https://pan.baidu.com/s/1XiXhhvUVMY20-QTahQPbQQ 提取码&#xff1a;zsjk...

JPanel(panel和jpanel)

java中的面板Jpanel是什么 JPanel是轻量级容器&#xff01; 你可以把他想成是一个小罐子&#xff01; 想按钮、文本框这种你可以把他们想成东西。 罐子用来装这些东西&#xff01; JPanel面板本身不能作为窗口显示&#xff0c;必须依赖如JFrame容器进行显示 JAVA中的JPanel怎么…...

python 输入一个整数,将该整数逆向输出

代码如下&#xff1a; aint(input("输入一个四位数&#xff1a;")) print(a%10) aa//10 print(a%10) aa//10 print(a%10) aa//10 print(a%10)...

pytorch读取coco数据集

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/a362682954/article/details/87915680 YOLOV3是工业上可以用的兼顾速度和准确率的一个深度学习目标检…...

倒计时器c语言,在线倒计时器

手机评站网今天精心准备的是《在线倒计时器》&#xff0c;下面是详解&#xff01;如何在PPT中插入3分钟倒计时器,最后有声音。280992...如何在PPT中插入3分钟倒计时器,最后有声音。280992656秋秋在线等&#xff0c;万分感谢&#xff01;...如何在PPT中插入3分钟倒计时器,最后有…...

python:Cannot determine archive format of C:\Users\lala\AppData\Local\Temp\pip-req-build-_17zylg8

lz今天用pycharm下的Terminal敲入 pip install cssselect i https://pypi.tuna.tsinghua.edu.cn/simple 出现&#xff1a; ERROR: Cannot unpack file C:\Users\lala\AppData\Local\Temp\pip-unpack-muu6zi__\simple.htm (downloaded from C:\Users\lala\AppData\Local\Temp…...

6.python输入整数年份,判断对应整数年份是否为闰年并输出结果

# -*- coding: UTF-8 -*- year int(input("输入一个年份&#xff1a;")) if year % 100 0:if year % 400 0:print(%d年是闰年 % year)else:print(%d年不是闰年 % year) else:if year % 4 0:print(%d年是闰年 % year)else:print(%d年不是闰年 % year)转载&#xf…...

关于BI商业智能的“8大问”|一文读懂大数据BI

这里不再阐述商业智能的概念了&#xff0c;关于BI&#xff0c;就从过往的了解&#xff0c;搜索以及知乎的一些问答&#xff0c;大家困惑的点主要集中于大数据与BI的关系&#xff0c;BI的一些技术问题&#xff0c;以及BI行业和个人职业前景的发展。这里归纳成8个问题点&#xff…...

python实现胶囊网络_胶囊网络 -- Capsule Networks

胶囊网络是 vector in vector out的结构&#xff0c;最后对每个不同的类别&#xff0c;输出不一个向量&#xff0c;向量的模长表示属于该类别的概率。例如&#xff0c;在数字识别中&#xff0c;两个数字虽然重叠在一起&#xff0c;Capsule中的两个向量能完整表达两个数字的特征…...

APP测试—PUSH消息推送测试

PUSH消息推送测试 1. 消息推送场景&#xff1a; 产品角度&#xff1a;功能需要&#xff0c;工具类产品的公告推送、咨询类产品的新闻推送等运营角度&#xff1a;活动运营需要&#xff0c;召回用户、电商类产品促销等 2. 消息推送原理&#xff1a; &#xff08;1&#xff09;…...

并查集(模板)

团伙 Description 在某城市里住着nn个人&#xff0c;任何两个认识的人不是朋友就是敌人&#xff0c;而且满足&#xff1a; 1、我朋友的朋友是我的朋友&#xff1b; 2、我敌人的敌人是我的朋友&#xff1b; 所有是朋友的人组成一个团伙。告诉你关于这nn个人的mm条信息&#xf…...

5.Linux实用操作

文章目录零、学习目标一、软件安装1、Linux系统的应用商店2、yum命令3、apt命令 - 扩展二、systemctl命令三、软连接四、下载和网络请求1、ping命令2、wget命令3、curl命令五、端口1、概念2、查看端口占用六、进程管理1、概念2、查看进程3、查看指定进程4、关闭进程七、主机状态…...

我就不信你还吃不透Java的泛型!移动架构师成长路线

一面&#xff1a; 阿里巴巴面试答案文末可以领取&#xff01; 1. 触发新生代GC&#xff0c;如果存活对象总量大于survivor区容量&#xff0c;咋办 2. 如果任务很多&#xff0c;线程池的阻塞队列会撑爆内存的哪个区域 3. 栈在堆上吗 4. GC root有哪些 5. 实例变量可以是GC…...

数字孪生平台为vr数字展厅提供一个数字化展示的体验空间

传统展厅展示以单向的观看和解说为基础&#xff0c;展馆展厅展陈单一。而不断发展的新媒体技术能够搭建数字场景来和观众产生互动&#xff0c;给观众身临其境的沉浸式体验。打造沉浸式体验&#xff0c;需要融合博物馆的文化特点&#xff0c;结合概念设计、内容制作和各种数字科…...

2021年阿里首次分享:内部(珠峰版)Java笔记,金九银十怎么从中小企业挤进一线大厂

阿里巴巴中文站商品信息如何存放 MySQL的扩展性瓶颈 分布式 前后端完全分离与Rest规范 中间件 redis的过期策略以及内存淘汰机制 缓存穿透和缓存雪崩 数据库 MVCC(多版本并发控制) 间隙锁与幻读 设计模式与实践 OOP五大原则SOLID Zookeeper ![i 《一线大厂Java面试题解析后端开…...

嵌入式单片机基础篇(十二)之ADC

ADC原理与应用详解 第一部分&#xff1a;stm32 1、问题&#xff1a;什么是ADC&#xff1f; 回答&#xff1a;Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。 2、问题&#xff1a;ADC的作用是什么&#xff1f; 回答&#xff1a;将连续变量的模拟信号…...

pycharm的设置

...

编程题——年会抽奖

链接&#xff1a;https://www.nowcoder.com/questionTerminal/610e6c0387a0401fb96675f58cda8559 来源&#xff1a;牛客网 今年公司年会的奖品特别给力&#xff0c;但获奖的规矩却很奇葩&#xff1a; 首先&#xff0c;所有人员都将一张写有自己名字的字条放入抽奖箱中&#xff…...

金融风控实战——申请评分卡

import pandas as pd import numpy as np from scipy.stats import mode import matplotlib.pyplot as plt import seaborn as sns import warnings from sklearn.preprocessing import LabelEncoder from sklearn.ensemble import RandomForestClassifier from sklearn.model...

Silicon EFR32BG22(5)ADC读取电池电压功能

文章目录1 平台条件2 代码的添加2.1 ADC的初始化2.2 ADC的disable2.3 ADC读取函数2.4 ADC执行读取函数后&#xff0c;进行中断数据的处理2.5 注意点1 平台条件 1.软件: gecko_sdk_3.2.3 2:硬件&#xff1a;EFR32BG22C224F512GM32 3.IDE工具:SimpliStudio 5 2 代码的添加 官方…...

FeignClient接收参数字段缺失

背景 在调用其他业务方时&#xff0c;出现接口某些字段丢失问题。其他字段正常。但是通过http请求调用时参数返回正确。 class A { private Long cId; //丢失字段 private String name; //正常} 分析 定位问题出现在Feign反序列化过程中。 通过本地查看源码&#xff0c;发…...

我在阿里,从 BI 转产品经理

本文笔者将与大家分享&#xff1a;ta为什么一定要从BI&#xff08;分析师&#xff09;转型产品经理&#xff1f;之后又遇到什么样的重重困难&#xff1f;希望对数据分析和刚入产品经理这个岗位的同学有所帮助。10年前&#xff0c;我加入阿里B2B国际事业部&#xff0c;从事用户和…...

通过DSP采集AD7606的转换结果

前情提要DSP芯片中自带的AD转换芯片为12位&#xff0c;而在实际应用中&#xff0c;我们常会使用精度更高、转换速率更快的AD芯片&#xff0c;我们使用DSP读取片外AD芯片的转换结果。下面我们以AD7606为例&#xff0c;介绍其工作原理、引脚配置以及主程序。 工作原理AD7606为16…...

Crack:amCharts 5: Maps v5.2.42 JavaScript

amCharts 5: Maps v5.2.42 New setting lets you reverse the direction of polygon corners in GeoJSON data. December 20, 2022 - 16:05 New Version Features Added reverseGeodata setting to MapPolygonSeries. If set to true, will reverse the direction of poly...

kivy 025 sqlite3 数据库

# 导入python内置的SQLite驱动: import sqlite3 import os.path import loggingbase_dir os.path.dirname(os.path.abspath(__file__)) db_path os.path.join(base_dir, "word.db") print(base_dir)def create_table():"""创建表"""…...

信贷风控报表常用指标解读(一)

在阅读风控报表时&#xff0c;经常会看到逾期期数、逾期天数、贷款余额、滚动率、核销、净坏账率等指标&#xff0c;这些指标时有何含义&#xff0c;作用是什么&#xff0c;在报表中如何计算&#xff0c;下面进行简单说明以供参考。 1、确认进件 我们通过会统计贷款的通过率、签…...

Python小数整数输出

成绩统计 aint(input()) num10 num20 for i in range(a):bint(input())if 60<b and b<85:num11elif b>85:num21num11print("%.0f%%" %(num1/a*100)) print("%.0f%%" %(num2/a*100))f 1.6 #小数部分舍弃 print("1.6直接整型输出是 %d&…...

微软近日签名了一个流氓第三方驱动 Netfilter,该驱动包含在游戏社区中传播的 rootkit 恶意软件。

6 月 28 日消息 据外媒 BleepingComputer&#xff0c;微软近日签名了一个流氓第三方驱动 Netfilter&#xff0c;该驱动包含在游戏社区中传播的 rootkit 恶意软件。 目前尚不清楚 rootkit 是如何通过微软的证书签名过程的&#xff0c;微软表示正在调查&#xff0c;并将“完善”…...

coco的json文件

instance_val2017.json { "info": { "description": "COCO 2017 Dataset", "url": "http://cocodataset.org", "version": "1.0", "year": 2017, "contributor&q...

Qemu-Spice流程初始化

Qemu-Spice初始化 Qemu模块优先初始化相关全局设备对象PCI、ISA、IDE、I2C等&#xff1b;通过VDI接口将CoreInterface实例传入到libSpice中&#xff0c;通过libSpice中调用相关接口。设备对象初始化完毕&#xff0c;创建Server Socket&#xff0c;等待Socket连接&#xff0c;建…...

软件测试的二八法则

二八原则始于Pareto原则&#xff0c;Pareto原则中文翻译为帕累托原则&#xff0c;由意大利经济学家Villefredo Pareto提出&#xff0c;他研究发现&#xff1a;社会财富的80%是掌握在20%的人手中&#xff0c;而余下的80%的人只占有20%的财富。延伸一下&#xff0c;就是“至关重要…...

逻辑判断与正则表达式文本处理

上一篇文章分享了正则表达式的操作&#xff0c;这一篇文章就让我们一起看看正则表达式与逻辑判断结合起来会发生什么吧&#xff01;感兴趣的小伙伴欢迎评论区或者是私信留言&#xff01; 一、题目描述&#xff1a; 输入一个字符串,检查其是否为合法的python变量。输入$$$结束:…...

qq空间html倒计时,空间倒计时flash代码,有图

stop(); //停止_root.ss.xx1.onRollOverfunction(){ //在主场景中的“ss”元件里的“xx1”元件添加按钮触及函数_root.onEnterFramefunction(){ //主场景进入侦函数处理_root.aa._x(1179-_root.aa._x)*0.2; //主场景的“aa”元件的X坐标主场景“aa”元件(1179-主场景“aa”元件…...

2021-08-27-CR-002Python爬虫,用pyquery + urllib.request下载图片

爬虫下载精美图片 测试网站为&#xff1a;https://pic.netbian.com/4kdongwu/ from pyquery import PyQuery as pq import urllib.request as urq import urllib.response headers { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like…...

C++ 文件的读写(fin fout)

如何让键盘输入字符保存在.txt文件中 如何让我们自己在键盘上输入的字符不仅仅在屏幕上显示&#xff0c;而且还能保存在特定路径的文件中&#xff0c;这让简单枯燥的控制台命令程序变得略有趣。 首先&#xff0c;先看看cin和cout对象&#xff0c;cin和cout对象使得我们能够从键…...

ppt flash倒计时器_央视都在分享的9个PPT小技巧 帮你搞定职场烦心事

最近&#xff0c;后台的一位读者反馈&#xff0c;自己快要崩溃了&#xff01;她是一名94后的阿里巴巴女职员&#xff0c;在后台说&#xff1a;快下班了&#xff0c;领导丢了一份132页PPT&#xff0c;让我把所有字体替换成阿里的字体&#xff01;摆明了就是让我加班&#xff01;…...

GLAMD: Global and Local Attention Mask Distillation for Object Detectors

全局-局部 注意力的mask蒸馏 传统KD关注fore&#xff0c;而忽视的backg&#xff0c;关注全局&#xff0c;忽略local。本文GLAMD&#xff0c;提取了全局局部&#xff0c;将future map 分为 几个 patch&#xff0c;并对global和 patch使用attention。 introduction GLAMD通过对…...

c++中的虚特性(虚基类、虚函数、纯虚函数)

1. 虚基类 1.1 虚基类作用 为了解决多继承时的命名冲突和冗余数据问题&#xff0c;使得派生类中只保留一份间接基类的成员。 其本质是是让某个类做出声明&#xff0c;承诺愿意共享它的基类。其中&#xff0c;这个被共享的基类就称为虚基类&#xff08;Virtual Base Class&am…...

组织行为学笔记:第十三章 技术与人

一、技术的效用 技术的性质 技术的三个特征&#xff1a; 专门性&#xff1a;专业化&#xff0c;分工明细 整体性&#xff1a;将过细的分工回归成整体 变革性&#xff1a;技术的变革接着带来社会的变革&#xff0c;新的管理方法&#xff0c;奖酬指导等 技术与教育 现代社会…...

组织行为学对项目管理的意义(2):人格的大五模型 .

人格可以理解为情绪&#xff0c;思维方式&#xff0c;习惯的复合体&#xff0c;具体左右一个人对周围人事所作出的反应。 在组织行为学里有好多对人格特质进行描述的模型&#xff0c;其中比较有名的一个是大五模型&#xff08;五维度人格模型&#xff09;。 在大五模型里用五个…...

中国大学MOOC消费者行为学考试题库(含答案)

选择题&#xff08;搜题答案解析在优题宝&#xff09; 1、下列有关消费者行为研究的行为主义范式的说法&#xff0c;正确的有(C) A、强调消费行为的主观性和象征性 B、强调消费者行为的理性. C、其价值在于可以改变或维持消费者行为 D、其价值在于可以洞察、理解消费者行为…...

大工17秋《计算机文化基础》在线测试1,大工17秋《组织行为学》在线测试1答案...

大工17秋《组织行为学》在线测试1一、单选题&#xff1a;1.根据气质的分类&#xff0c;较适合做推销工作的人员的气质类型是( )。 (满分:3)A.胆汁质B.多血质C.抑郁质D.黏液质正确答案:[hide]——B——[/hide]2.组织行为学在中观层面所要研究的主要内容是( )。 (满分:3)A.个体心…...

组织行为学笔记:第六章 组织气氛与行为模式

一、组织气氛 组织气氛就是组织内部一般的人际环境&#xff0c;他萦绕在组织之中&#xff0c;影响着组织内发生的每一件事物&#xff0c;同时组织内出现的任何事物几乎对气氛发生影响。 有的组织热闹喧嚣&#xff0c;效率很高&#xff0c;有的自在休闲&#xff0c;有的富有人…...

组织行为学笔记:第十二章 组织结构和组织设计

一、古典组织理论 任何一个单位都要处理诸如权力&#xff0c;责任&#xff0c;分工&#xff0c;专业化以及各部分之间相互依存&#xff0c;相互联系等基本要素。 工作分工 部门领导把自己单位的工作分成不同层次与职能&#xff0c;然后把人员&#xff0c;资源分配到划分成不…...

组织行为学笔记:第十一章 组织培育和组织训练

组织培育是一种着眼于提高整个组织素质&#xff0c;运用团体活动的程序&#xff0c;以实现预期变革的干涉战略。 组织培育要求改善信仰&#xff0c;态度&#xff0c;观念&#xff0c;结构和实际行动&#xff0c;从而使组织能够更好地选择技术&#xff0c;跟上改革的步伐。 组…...

组织行为学笔记:第七章 领导与监督

一、领导的性质 领导是管理的组成部分&#xff0c;但不是管理的全部。管理者需要计划&#xff0c;组织&#xff0c;指挥&#xff0c;协调&#xff0c;控制&#xff0c;而领导者则是能够影响别人追随自己。 一个强有力的领导者&#xff0c;可能是一个软弱无能的管理者&#xff…...

中国人民大学李育辉_《组织行为学》_10. 模块导论:为什么团队一定需要领导力?

10. 模块导论&#xff1a;为什么团队一定需要领导力&#xff1f; 1.这个模块&#xff0c;叫做“领导团队”&#xff0c;为什么要用这个词呢&#xff1f; 《任天堂哲学》作者&#xff1a;商业记者井上理&#xff0c;采访的人&#xff1a;任天堂总裁宫本茂 许多老师讲领导力的时候…...

组织行为学笔记:第三章 激励机制

激励模式&#xff1a; 人的某些功能不需要激励就能完成&#xff0c;但是几乎所有自觉的行为无不来自激励或动机。管理的职责就在于识别&#xff0c;促发雇员的动机&#xff0c;使之导向任务的完成。 动机表现为人的需要&#xff0c;这种需要是个人的&#xff0c;内在的&#…...

算法记录Day49|leetcode121. 买卖股票的最佳时机 、122.买卖股票的最佳时机II

一、leetcode121. 买卖股票的最佳时机 1.题目描述&#xff1a; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算…...

组织行为学笔记:第十四章 工作生活质量

一、对生活质量的理解 高度专业化的传统工作设计确曾为社会带来效益&#xff0c;其弊端在于以付出极大的人的精神损耗为代价。 各类组织在关心技术成果的同时&#xff0c;日益注意到人性方面的效果。 工作生活质量的基本目的就是造就一种不仅对生产&#xff0c;而且对人来说…...

组织行为学(学习笔记)

大五人格模型 情绪稳定性外倾性经验开发放性随和性责任心...

从计算机应用基础中学到了什么,计算机应用基础教学心得体会.docx

计算机应用基础教学心得体会《计算机应用基础》教学心得体会《计算机应用基础》教学心得体会  近年来&#xff0c;我国职业中学发展很快&#xff0c;而学生生源质量一直没有明显提高&#xff0c;学生的学习态度不端正、自我控制能力不强是大部分职业中学学生存在的问题。学生…...

小学计算机科学教案,小学信息技术教案三篇

【导语】教学是一种创造性劳动。写一份优秀教案是设计者教育思想、智慧、动机、经验、个性和教学艺术性的综合体现。无忧考网准备了以下教案&#xff0c;希望对你有帮助!《玩“纸牌”游戏——初步认识软件》认知目标&#xff1a;1、具体认识计算机的硬件和软件2、掌握游戏软件的…...

ESP-IDF:企业链表例程,实现初始化,插入,打印等功能。

例程&#xff1a; 简单地写一下企业链表&#xff0c;实现初始化&#xff0c;插入&#xff0c;打印等功能。 /企业链表/ typedef struct LINKNODE09 { // 定义节点 LINKNODE09 *next; } linknode09; // 定义表头 typedef struct LINKLIST09 { // 定义表头 linknode09 head; in…...

甘教课标版小学生计算机课,测评:《第6课 制作简单的表格教案》小学信息技术甘教课标版五年级上册教案4696(2)...

5&#xff0e;如果应改变表格的长度跟高度&#xff0c;则把鼠标移到表格的竖线和横线上&#xff0c;当鼠标变成“‖”和“”时&#xff0c;按住滑鼠左键&#xff0c;拖动鼠标&#xff0c;即可拖动半径和高度。 6&#xff0e;在表格中输入火车时刻表。师&#xff1a;下面我们在表…...

初三计算机考试2021,2021年初三信息技术教学计划

作为初三信息技术教师&#xff0c;要引导学生正确地认识到信息技术对社会发展、科学进步、日常生活与学习的影响&#xff0c;养成利用信息技术促进学习和改善生活的意识和态度。下面是学习啦小编整理的2021年初三信息技术教学计划&#xff0c;希望对大家有所帮助!2021年初三信息…...

小学计算机教案怎么写,小学信息技术四年级教学计划范文

四年级学生对学习计算机有一定的基础&#xff0c;而信息技术教师的教学任务是努力让每个学生都能学到知识&#xff0c;提高计算机的应用能力&#xff0c;为下阶段的计算机学习打下较扎实的基础。下面是学习啦小编整理的小学信息技术四年级教学计划范文&#xff0c;希望对大家有…...

五年级计算机课程内容,五年级信息技术教学计划

五年级信息技术教学计划有条件的学生家中有电脑&#xff0c;对计算机的知识已经有了一些了解&#xff0c;操作较熟练&#xff0c;但是大部分学生刚开始接触计算机&#xff0c;纯粹是上课时间学习&#xff0c;课后就没有巩固的机会。下面是五年级信息技术教学计划&#xff0c;欢…...

你用过的每款APP都具有这一特点,但你却不知道……

全文共4225字&#xff0c;预计学习时长13分钟图源&#xff1a;Unsplash现代人离不开手机。每天清晨&#xff0c;当我睡眼惺忪的醒来&#xff0c;便开始点击手机&#xff0c;关闭嗡嗡作响的闹钟提示音。我的闹钟是我以前喜欢的一首歌&#xff0c;但现在却十分讨厌&#xff0c;因…...

高效方法 | Jupyter Notebook 比你想象中的还要强大

欢迎关注天善智能&#xff0c;我们是专注于商业智能BI&#xff0c;人工智能AI&#xff0c;大数据分析与挖掘领域的垂直社区&#xff0c;学习&#xff0c;问答、求职一站式搞定&#xff01; 对商业智能BI、大数据分析挖掘、机器学习&#xff0c;python&#xff0c;R等数据领域感…...

危机过后,「表格文档协同」需要具备什么能力?

2003 年被称为中国协同办公的元年。因为“非典”的影响&#xff0c;各企事业单位要求在家办公&#xff0c;这直接催生了视频会议和互联网的发展&#xff0c;造就了互联网的黄金十年。 但当年的危机结束之后&#xff0c;协同办公 Saas 类软件产品并未迎来长远的发展&#xff0c…...

【数据追梦人】毕业6年自学代码,2周面试30家企业,1年376张报表,选择决定人生!

起初看到“数据追梦人”活动时候&#xff0c;我就在不理解数据和追梦有什么关系&#xff0c;数据不就是简单的从抽取、清洗、分析、报表、可视化等处理过程吗&#xff1f;然后我就草草关闭了页面继续了我的工作。周末在家中休息时&#xff0c;刷抖音看到一个衡水中学学霸饱含激…...

用计算机处理表格说课稿,信息技术《表格的编辑与格式化》说课稿

信息技术《表格的编辑与格式化》说课稿我说课的内容是高教版《计算机应用基础》3.5.2表格的编辑与格式化。现就教材、教法、学法及教学过程进行分析说明。一、教材分析&#xff1a;表格的编辑与格式化这一内容是在学生学会了如何创建规范表格的前提下进行学习的。学好这部分内容…...

计算机上网题通讯录小组,计算机兴趣小组计划、教案 总结.doc

计算机兴趣小组计划、教案 总结计算机社团活动计划 教案 总结新的一学期开始了&#xff0c;在中小学信息技术学习中涌现出许多学生计算机爱好者&#xff0c;这些学生不满足课堂所学&#xff0c;对计算机的许多专业知识和应用技术(尤其是电子游戏)表现出浓厚的兴趣。为了对这些学…...

C# 实现 qq 微信 旺旺 qq群消息群发,同步聊天记录课程

转载于:https://www.cnblogs.com/code68/p/11015342.html...

淘宝群发思路

<a href"wangwang:SendIM?ilovebbq88&uid_tilovebbq88&Message123">淘宝旺旺</a> 1向系统发送该连接 2激或旺旺&#xff0c;打开消息输入窗口 3使用FindWindowEx函数来找到这个窗口 4找到输入消息的控件(复制剪贴板里的消息至该控件) 5模拟…...

C# WebQQ协议群发机器人(二)

本文出处http://blog.csdn.net/zhujunxxxxx/ 如需转载请注明出处&#xff01; 接着上一篇http://blog.csdn.net/zhujunxxxxx/article/details/38931287我讲的内容 假设有人须要源代码能够联系我 qq: 10588690。可是不是无偿提供&#xff0c;请大家理解。 上面实现的都是与群操作…...

张一鸣10年面试过2000人:混得好的年轻人都有这 5 种特质!

张一鸣算是 80 后中绝对的佼佼者。 1983年出生的张一鸣 &#xff0c;在2005年从南开大学毕业后&#xff0c;至今参与创办了 5 家公司&#xff0c;2013年&#xff0c;他先后入选《福布斯》“中国30位30岁以下的创业者”和《财富》“中国40位40岁以下的商业精英”&#xff0c;是目…...

Spring Boot(五十三):SpringBoot Actuator之实现

1 场景介绍 对于一个大型的几十个、几百个微服务构成的微服务架构系统&#xff0c;在线上时通常会遇到下面一些问题&#xff0c;比如&#xff1a; 1. 如何知道哪些服务除了问题&#xff0c;如何快速定位&#xff1f; (健康状况&#xff09; 2. 如何统一监控各个微服务的性能指标…...

杜拉拉升职记经典语录

杜拉拉升职记经典语录    1、真正的外企&#xff0c;富高科技含量的500强跨国企业&#xff0c;不需要背《陋室铭》&#xff0c;更不会有性骚扰&#xff0c;而且老板肯定很忙&#xff0c;没有兴趣让我伺候他吹牛两小时&#xff0c;就算老板吹牛吧&#xff0c;一定也吹得非常…...

敏捷开发:做一个合格的Scrum Master

转载&#xff1a;http://www.jianshu.com/p/72a5c42cec8b 在Scrum敏捷开发中有三种主要的角色&#xff1a;Product Owner&#xff08;产品负责人&#xff0c;简称"PO"&#xff09;; Scrum Master&#xff08;敏捷教练&#xff09;; Team&#xff08;团队&#xff09;…...

python与数据挖掘张良均实验答案3.5_Python与数据挖掘/大数据技术丛书:张良均//杨海宏//何子健//杨坦//杨征等 : 电子电脑 :计算机技术

导语内容提要随着云时代的来临&#xff0c;大数据技术将具有越来越重要的战略意义。作为数据存储和挖掘分析的前沿技术&#xff0c;大数据分析已广泛应用于各行业及业务职能领域&#xff0c;尤其是物联网、云计算、移动互联网等战略性新兴产业&#xff0c;帮助企业用户在合理时…...

python语言在实践中的应用有科学计算_Python程序设计与科学计算:尹永学//黄海涛 : 电子电脑 :计算机技术 :程序与语言

导语内容提要本书由高校教师与算法工程师合zuo编写&#xff0c;兼顾理论与实践&#xff0c;层次脉络清晰&#xff0c;循序渐进地展开各个知识点&#xff0c;适合教学与自学。本书除了介绍Python程序设计方法与Python科学计算的工具包以外&#xff0c;还给出了数学建模的实战案例…...

perform a synchronous read request on this thread.

// regain critsec to replace on done list { CAutoLock l(&m_csLists); PutDoneItem(preq); if(--m_cItemsOut 0) { if(m_bWaiting) m_evAllDone.Set(); } } } } // the...

cass等距离等分线段的命令键_教你用CAD将线段等分,弧线也可定距等分!

定距等分的命令是&#xff1a;MEASURE &#xff0c;快捷键是 me。定数等分的命令是&#xff1a;DIVIDE.&#xff0c;快捷键是 div。注意了&#xff0c;命令不分大小写。如下图&#xff0c;是一根长为300mm 的线段&#xff0c;弧线也可以哦~&#xff01;选择“格式”——“点样式…...

【迁移学习(Transfer L)全面指南】方差、协方差和Pearson相关系数的关系

方差用于反应数据的离散程度&#xff0c;期望用于反应数据的聚合情况。 协方差用于反映两个维度之间的数据偏离期望值的相关性&#xff0c;若同时偏离&#xff0c;即为正相关&#xff0c;数据上现象为&#xff1a;(某维度偏离点-均值)*(另一维度-均值)>0&#xff0c;同时也…...

Spss中定比、定距、定序、定类的区别

Spss中定比、定距、定序、定类的区别: 1、定比&#xff1a;主要是数值或数字类型&#xff0c;可以做加减运算,目的是得到更加精确的值&#xff0c;比如身高或者体重之类的 2、定距&#xff1a;主要是数值或数字类型&#xff0c;有单位&#xff0c;可以做加减运算&#xff0c;但…...

例解:过程性能模型的概念辨析

CMMI模型的4&#xff0c;5级是需要建立过程性能模型&#xff08;PPM&#xff09;的&#xff0c;在CMMI中对PPM的定义如下&#xff1a;A description of relationships among the measurableattributes of one or more processes or work products that is developed fromhistor…...

数据的类型和尺度

数据(data)是事实或观察的结果&#xff0c;是对客观事物的逻辑归纳&#xff0c;是用于表示客观事物的未经加工的的原始素材……在计算机系统中&#xff0c;数据以二进制信息单元0,1的形式表示(百度百科) 后半句看懂了&#xff0c;至于前半句&#xff0c;还是忘记比较好。 简单地…...

协同过滤推荐算法及应用

1. CF协同过滤推荐算法原理1.1 概述什么是协同过滤 (Collaborative Filtering, 简称 CF)&#xff1f;首先想一个简单的问题&#xff0c;如果你现在想看个电影&#xff0c;但你不知道具体看哪部&#xff0c;你会怎么做&#xff1f;大部分的人会问问周围的朋友&#xff0c;看看最…...

计算机组成原理2-系统总线

目录 一、总线的基本概念 二、总线的分类 三、总线的性能及性能指标 1、总线的物理实现 2、总线特性 3、总线的性能指标 四、总线的结构 1、单总线结构 2、双总线结构 &#xff08;1&#xff09;CPU为中心 &#xff08;2&#xff09;主存为中心 3、三总线结构 4、…...

定比、定距、定类、定序变量的区别是什么?

问&#xff1a;定比、定距、定类、定序变量各自的定义和区别是什么&#xff1f; 定比数据&#xff1a;表现为数值&#xff0c;可以进行加、减运算以精确计算数据。比如身高、体重等 定距数据&#xff1a;表现为数值&#xff0c;有单位&#xff0c;可以做加减运算&#xff0c;不…...

安卓(JAVA)已知两点经纬度,求出一条线上定距(比如隔20米或30一个点)的经纬度。

首先思考&#xff0c;已知两个经纬度&#xff0c;需要求出用户输入的定距来确定每一个点的经纬度&#xff0c;应该先确定从两个点的哪一个开始计算&#xff0c;这个自己定。然后需要根据两个点的经纬度来算出线的角度&#xff08;相对于正北方向&#xff09;&#xff0c;最后进…...

曲线定距等分lisp_急求多段线等分之后,快速输出各个等分点距离多段线(曲线)起始点的距离,lisp程序!...

;等分多段线(defun c:tes ( / d1 d2 ent n n1 p1)(vl-load-com)(setq n 1)(while ((initget 7)(setq n (getint "\n请输入大于1的等分数值")))(if (and (setq ent (entsel "\n请选择曲线"))(setq ent (car ent))(not (vl-catch-all-error-p (vl-catch-all-…...

第三弹!锐捷设备命令最全大合集(2022新版)

晚上好&#xff0c;我是老杨。 一月一更的系列又来了&#xff0c;此前已经更新过思科、华为两个头部厂商。 今天更新的是锐捷的设备命令汇总&#xff08;包含配置命令、巡检命令、命名规则、排错命令等内容&#xff09;&#xff0c;希望能提高你的工作效率。 如果觉得有用的…...

定类,定序,定距,定比

在统计学中&#xff0c;统计数据主要可分为四种类型&#xff0c;分别是定类数据&#xff0c;定序数据&#xff0c;定距数据&#xff0c;定比变量。1.定类数据&#xff08;Nominal&#xff09;&#xff1a;名义级数据&#xff0c;数据的最低级&#xff0c;表示个体在属性上的特征…...

lisp 定距等分_AutoLISP等分线段并绘图

(defun c:test()(setvar "cmdecho" 0)(setq en (car (entsel "\n选取线&#xff1a;")))(setq nn (getint "\n重复次数<5>&#xff1a;"))(if (null nn) (setq nn 5))(setq endata (entget en))(setq pt_10 (cdr (assoc 10 endata)))(setq…...

定距拍照曝光距离设置

计算方法 在给定地面分辨率情况下&#xff0c;能计算相对航高及影像对应的地面长宽。这样&#xff0c;在给定的航向重叠度条件下&#xff0c;能算出曝光距离&#xff08;曝光距离 影像对应地面宽 * &#xff08;&#xff11; &#xff0d; 重叠度&#xff09;&#xff09;。…...

定类,定序,定距,定比四种数据类型

在这个世界上有无限多的数据&#xff0c;而每种数据都有属于自己的属性。那么做数据挖掘数据分析的时候&#xff0c;要对杂乱无章数据由一定的敏感度&#xff0c;学会分析数据属于哪一种类型也是一种技能。多留意身边的一些数据&#xff0c;试试给他分个类型也是挺好玩的一件事…...

【统计学】区分定类、定序、定距、定比变量!!

从宏观角度分析&#xff0c;数据类型分为定性和定量两种。 定性&#xff1a;变量是品质特征&#xff0c;如车的品牌&#xff0c;宝马&#xff0c;奔驰&#xff0c;只是为了区分定量&#xff1a;变量是数值&#xff0c;可以量化&#xff0c;如身高体重等。定量可以分为离散型和…...

lisp 定距等分_CAD点命令快捷键(定数等分及定距等分)

点在CAD的绘图当中&#xff0c;一般主要是起点缀和标识的作用&#xff0c;点的快捷键是PO&#xff0c;一般我们在一张大图上绘制一个点&#xff0c;使用默认的点样式会十分的不明显&#xff0c;其次我们有时也需要其他的样式的点&#xff0c;那么我们就需要改变默认的点样式。设…...

How to Push Code Into the remote Github

Github Oveview 1. A Version Control System 2.A Publishing Tool 3.A Collaboration Platform Benefits Great way to keep track of our codebaseA way to share and collaborate with othersAbility to save our process and go back to earlier points in our proje...

在html5绘制直线的两个方法,html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点...

如果你还不知道Canvas是什么&#xff0c;可以看看上一篇.在学画画的时候&#xff0c;线条是最基本的了&#xff0c;而线条的连接可以组成任何图形。在Canvas中也是如此。在开始之前我们先拿出画布和画笔&#xff1a;复制代码代码如下:var cvs document.getElementById(cvs); /…...

【java创建能够画直线的窗口界面】

//一、创建一个界面&#xff1b; 先写一个DrawUI类.&#xff08;自己可随意命名&#xff0c;但下面要一致&#xff09; 设置窗体的&#xff1a;标题 尺寸 关闭功能 可视化 //创建一个类DrawUI public class DrawUI{ //绘制界面的方法&#xff08;即这个类里面的方法&…...

Bresenham 画线算法画直线----计算机图形学

Bresenham 画线算法: 与DDA算法相似&#xff0c;Bresenham画线算法也要在每列象素中找到与理想直线最逼近的象素点。 根据直线的斜率来确定变量在x或y方向递增一个单位。另一个方向y或x的增量为0或1&#xff0c;它取决于实际直线与最接近网格点位置的距离。这一距离称为误差。…...

php 画直线,html5 Canvas实现画直线与设置线条的样式

这篇文章主要介绍了关于html5 Canvas实现画直线与设置线条的样式&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下在学画画的时候&#xff0c;线条是最基本的了&#xff0c;而线条的连接可以组成任何图形。在Canvas中也是如此,接…...

Java对象引用级别

为了使程序能更灵活地控制对象生命周期&#xff0c;从 JDK1.2 版本开始&#xff0c;JDK把对象的引用级别由高到低分为强引用、软引用、弱引用、虚引用四种级别。 强引用 StrongReference 强引用是我们最常见的对象&#xff0c;它属于不可回收资源&#xff0c;垃圾回收器&…...

Spring 中最常用的 11 个扩展点

目录 1.自定义拦截器 2.获取Spring容器对象 2.1 BeanFactoryAware接口 2.2 ApplicationContextAware接口 3.全局异常处理 4.类型转换器 5.导入配置 5.1 普通类 5.2 配置类 5.3 ImportSelector 5.4 ImportBeanDefinitionRegistrar 6.项目启动时 7.修改BeanDefiniti…...

Unreal Engine 网络系统(一):网络模型及网络视角下的Gameplay框架

个人学习记录&#xff0c;如有错误请及时联系我&#xff01;欢迎交流&#xff01; 1.客户端-服务器模型 服务器&#xff1a;有一个客户端担当游戏状态的主控者 作用&#xff1a;做出所有重要决定&#xff0c;保证公平性&#xff0c;包含所有主控状态&#xff0c;处理客户端连接…...

如何修改百度百科上的介绍,高级别账号更容易成功吗?

个人或企业想要修改原有百科词条上的介绍&#xff0c;但却又不知道如何入手。怎样才能拥有更高级别的百科账号&#xff0c;高级别百科账号更容易成功修改通过吗&#xff0c;以下洛希爱做百科网为大家简单介绍。一、拥有百科高级账号的条件1、首先帐号必须达到4级2、通过率必须在…...

关于element-plus按需引入时,在vite中使用自定义主题失效的问题解决

1. 问题产生过程描述&#xff1a; 1&#xff09;使用vite创建vue3项目 2&#xff09;按部就班的安装element-plus vue-router axios npm i element-plus vue-router axios -S 3) 把element-plus按需引入按照官网的步骤操作好 主题 | Element Plus 4&#xff09;axios按…...

java中堆栈的实现总结

java中堆栈的实现总结1. Java中的Stack1.1 Stack类的使用1.2 Stack类的分析2. java中的queue2.1 queue的方法定义2.2 Deque2.3 Queue的常见实现类3. 总结1. Java中的Stack 1.1 Stack类的使用 Stack的声明如下&#xff0c;可以看到Stack继承了Vector&#xff0c;因此Stack可以…...

Java面试总结篇

引用介绍 1.线程安全不安全的概念 ​ 线程安全: 指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不存在执行程序时出现意外结果。 ​ 线程不安全: 是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是脏…...

离散选择模型中的分散系数theta到底该放在哪里呢?

前言 \quad~~一直都在想为啥子离散选择模型中分散系数以分母形式出现而在路径选择公式中以系数形式出现呢&#xff1f;看着公式想了想&#xff0c;现在想出了一个似乎感觉应该差不多很合理的答案&#xff0c;希望与大家一起探讨。 进入正题 根据随机效用理论&#xff0c;决策…...

网站经常被DDOS攻击的原因有哪些

过去这几年&#xff0c;互联网创业热潮非常火&#xff0c;几乎所有行业都向互联网转型。很多互联网公司都会经历被 DDoS 攻击&#xff0c;导致网站服务瘫痪&#xff0c;用户流失以及公司信用度的负面影响。什么是 DDOS 攻击呢&#xff1f;DDOS 攻击是通过控制大量僵尸网络向服务…...

实验二 数据库的查询

目录 一、实验学时 二、实验目的 三、实验要求 四、实验内容 五、实验思考 六、不问初心&#xff0c;方得始终&#xff0c;加油&#xff0c;诸君&#xff01;&#xff01;&#xff01; 一、实验学时 2学时 二、实验目的 &#xff08;1&#xff09;掌握查询的概念和方法。…...

Java中的JSON序列化和反序列化

文章目录Java 和 JSON 序列化JSON 简介JSON 是什么JSON 标准JSON 优缺点JSON 工具Java JSON 库JSON 编码指南Fastjson 应用添加 maven 依赖Fastjson API定义 Bean序列化反序列化Fastjson 注解JSONFieldJSONTypeJackson 应用添加 maven 依赖Jackson API序列化反序列化容器的序列…...

数据结构和算法(1):数组

目录概述动态数组二维数组局部性原理越界检查概述 定义 在计算机科学中&#xff0c;数组是由一组元素&#xff08;值或变量&#xff09;组成的数据结构&#xff0c;每个元素有至少一个索引或键来标识 In computer science, an array is a data structure consisting of a col…...

第一章 作业【编译原理】

课堂测试【编译原理】前言推荐第一章 作业课堂测试课前测03-01课后练习03-01课后复习03-08课前热身03-13最后前言 2023-3-13 20:56:25 以下内容源自《编译原理》 仅供学习交流使用 推荐 无 第一章 作业 无 课堂测试 课前测03-01 1(多选题) 编译原理各阶段的工作都涉及…...

接口测试用例怎么编写?给你一个最详细的模板要不要?

目录 接口测试用例 总部用户同步接口 添加组织 添加用户 删除组织 删除用户 更新组织 更新用户 应用系统同步用户接口 根据组织编码获取用户 根据系统编码获取用户 构型数据的集成 获取构型数据接口 接口测试用例 总部用户同步接口 添加组织 编制人 薛郝 审定…...

基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

摘要&#xff1a;动物识别系统用于识别和统计常见动物数量&#xff0c;通过深度学习技术检测日常几种动物图像识别&#xff0c;支持图片、视频和摄像头画面等形式。在介绍算法原理的同时&#xff0c;给出Python的实现代码、训练数据集以及PyQt的UI界面。动物识别系统主要用于常…...

大数据框架保姆级安装教程——Kafka(3.0.0)

大数据框架保姆级安装教程——Kafka&#xff08;3.0.0&#xff09; 1.1 安装部署 1.1.1 集群规划 hadoop102hadoop103hadoop104zkzkzkkafkakafkakafka 1.1.2 集群部署 **0&#xff09;**官方下载地址&#xff1a;http://kafka.apache.org/downloads.html **1&#xff09;*…...

医药行业的数据分析,我们需要了解什么?

近三年我们被疫情包围了&#xff0c;医院和药品备受关注&#xff0c;在进行数据分析&#xff0c;不仅需要通用的统计分析技能&#xff0c;更需要对行业、对业务的高度理解。像医药行业的数据分析&#xff0c;就需要数据分析人员深入行业内部&#xff0c;掌握关键的指标和术语。…...

小工具2:Windows curl.exe

以语雀 文档为准 GitHub 仓库&#xff1a;https://github.com/curl/curlGitHub 仓库 Windows 版&#xff1a;https://github.com/curl/curl-for-win下载页面&#xff1a;https://curl.se/download.htmlWindows 版下载页面&#xff1a;https://curl.se/windows/ 支持 64 位&…...

《C++ Primer Plus》(第6版)第13章编程练习

《C Primer Plus》&#xff08;第6版&#xff09;第13章编程练习《C Primer Plus》&#xff08;第6版&#xff09;第13章编程练习1. Cd类2. 使用动态内存分配重做练习13. baseDMA、lacksDMA、hasDMA类4. Port类和VintagePort类《C Primer Plus》&#xff08;第6版&#xff09;第…...

如何配置VoLTE, ViLTE and VoWifi(IMS config for VoLTE, ViLTE and VoWifi)

如何打开VoLTE&#xff0c;ViLTE&#xff0c;VoWifi Feature (How to enable VoLTE&#xff0c;ViLTE&#xff0c;VoWifi feature option) VoWifi有些module属于binary release&#xff0c;如果基线版本不支持VoWifi, 请使用[Patch Release]模板提交eservice给CPM申请open VoWi…...

leetcode 1458 两个子序列的最大点积

给你两个数组 nums1 和 nums2 。 请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。 数组的非空子序列是通过删除原数组中某些元素&#xff08;可能一个也不删除&#xff09;后剩余数字组成的序列&#xff0c;但不能改变数字间相对顺序。比方说&#xff0c;…...

【每日随笔】西游记相关随笔 ( 天庭的结构以及人事关系 | 天庭组织架构 | 佛门组织架构 | 天庭的盘根错节 | 西游记中的人情世故 )

文章目录一、天庭组织架构二、佛门组织架构三、天庭的盘根错节四、西游记中的人情世故西游记 和 红楼梦 每一个细节都 蕴含了 大智慧 , 值的每个人都去精读 , 是中国古代智慧的集大成者 ; 西游记 讲的不是 打打杀杀 , 讲的是 人情世故 ; 西游记 反应的是 明朝嘉靖年间 的 政治…...

用两个栈实现队列(LeetCode)算法题

直接进入主题 就是这样了&#xff0c;如果没有仔细看题的话&#xff0c;请回去再仔细看一下 下面开讲 先讲思路在来代码 首先我们想一下队列的性质&#xff0c;队列是先进先出&#xff0c;而栈是后进先出&#xff0c;所以如果想要用栈实现队列&#xff0c;那么一个栈肯定是不…...

机器人运动-力混合控制

#关节动力学 #运动控制 #力控制 详细可参考书本:《现代机器人学&#xff1a;机构规划与控制》第11.5章&#xff0c;其中的动力学方程见第8章相关内容。 其他参考资料&#xff1a; [【现代机器人学】学习笔记十&#xff1a;机器人控制_zkk9527的博客-CSDN博客] 力控制 关节空间…...

3分钟了解热成像仪

3分钟了解热成像仪随着社会老龄化程度的逐步加重&#xff0c;越来越多人喜欢养宠物&#xff0c;这样身边多了一种“陪伴”。但随之而来的宠物丢失以及误入狭小空间或者隐秘空间的情况也层出不穷&#xff0c;比如猫猫躲进汽车底盘&#xff0c;进入天花板/管道隔层等&#xff0c;…...

vulnhub之XXE靶机详解

vulnhub之XXE靶机详解前言一、靶机安装二、信息收集阶段1. 环境2. 探测局域网主机3. 信息收集三、解题相关网站前言 拒绝水文&#xff0c;从我做起&#xff0c;如果如下教程有看不懂的&#xff0c;直接call小编哦 一、靶机安装 靶机下载地址&#xff1a;https: //download.vul…...

多线程的理论基础

为什么需要多线程&#xff1f; 大家都知道&#xff0c;CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 CPU 的高性能&#xff0c;平衡这三者的速度差异&#xff0c;计算机体系结构、操作系统、编译程序都做出了贡献&#xff0c;主要体现为: CPU 增加了缓存&…...

SC8P1762E_汇编指令一览表

控制类 NOP&#xff0c; 空操作 STOP&#xff0c; 进入休眠模式 CLRWDT&#xff0c; 清零看门狗计数器 数据传送 LD&#xff0c;在汇编语言中通常指的是Load LDIA i&#xff0c; 立即数 i 送给 ACC LDIA的全称是Load Immediate to Accumulator&#xff0c;意思是“将立即数加载…...

ES-nested和join查询

1. 嵌套类型&#xff1a;Nested nested属于object类型的一种&#xff0c;是Elasticsearch中用于复杂类型对象数组的索引操作。Elasticsearch没有内部对象的概念&#xff0c;因此&#xff0c;ES在存储复杂类型的时候会把对象的复杂层次结果扁平化为一个键值对列表。 比如&#…...

04 - 进程参数编程

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录1. 问题1.1 再论execve(...)1.2 main函数&#xff08;默认进程入口&#xff09;1.3 进程空间概要图1.4 编程实验&#xff1a;进程参数剖析1…...

【Oracle 19c 及 21c】Windows 平台客户端包差异

很久不关注 Oracle Database12c 以后的变化了&#xff0c;最近试着安装、测试一下&#xff0c;在下载 Windows 端客户端时发现和以前的 11g 和 12c 大不相同&#xff0c;于是研究了一下&#xff0c;觉得有必要写一篇文章记录一下。 文章目录一、简介二、client 类型安装包2.1 选…...

Maven打包子模块

项目结构1. project_01: 一个多模块的maven工程2. module_01: 工程project_01的一个模块3. submodule_01: 模块module_01的一个子模块其中&#xff0c;project_01, module_01, submodule_01均为其pom中的artifactId&#xff0c;整个结构如图&#xff1a;project_01 <br/>…...

AI标注工具Labelme和LabelImage Labelme和LabelImage集成工具

在AI数据标注过程中&#xff0c;难免会使用到标注工具&#xff0c;常用的工具无非是Labelme和LabelImage。 Labelme是标注目标轮廓&#xff0c;而LabelImage则是标注目标的区域&#xff0c;然而使用原生态的工具&#xff0c;需要用到python命令行&#xff0c;十分麻烦…...

【springcloud 微服务】Spring Cloud Alibaba Sentinel使用详解

目录 一、前言 二、分布式系统遇到的问题 2.1 服务可用性问题 2.1.1 单点故障 2.1.2 流量飙升 2.1.3 容错机制 2.2 服务雪崩问题 三、 服务可用性解决方案 3.1 服务容错机制 3.1.1 超时机制 3.1.2 服务限流 3.1.3 隔离 3.2 服务熔断 3.2.1 什么是服务熔断 3…...

【分享】基于TPS65140的LCD驱动电路方案——飞凌嵌入式

在一次项目定制中&#xff0c;客户要求我们将CPU主控和LCD显示屏电压驱动电路做成一体板&#xff0c;LCD显示屏所需要的AVDD、VGH、VGL等电压需要主控板提供&#xff0c;因为这几路电压所输出的电流都很小&#xff08;一般都不会超过10mA&#xff0c;具体可以查阅屏体手册&…...

关于 flex 布局时,子元素宽度超出父元素问题及解决方案(问题)

文章目录1. 第一次遇到这个问题的场景2. 第二种情况3. 问题原因4. 解决方案4.1 方案一4.2 方案二1. 第一次遇到这个问题的场景 先看效果图&#xff0c;大家可以看一下下面的样式&#xff0c;很明显左边和右边的盒子我是给的定宽&#xff0c;但是被挤压了 这个是我在项目中遇到的…...

php 压缩zip打包类和用例

<?php namespace app\lib; /** * 压缩包驱动 * author Wmeng * version 0.0.1 */ class ZipHelper { protected $zip; protected $root; protected $ignored_names; /** * 构造函数 */ public function __construct() { $th…...

普乐蛙景区VR体验设备景区VR解决方案元宇宙vr体验馆项目

#普乐蛙元宇宙VR案例分享 新疆博尔塔拉州温泉县五馆 内置机甲战机星球火箭模型等产品 新增VR产品既丰富孩子们学习空间更是对孩子社会领域教育的一次真正意义上的实践.VR设备体验&#xff0c;是让整个人置身于虚拟现实中&#xff0c;让人沉浸感更足。VR设备给该景区带来了更…...

黑马程序员——前端HTML5+CSS3(女神版)——day01——文本格式化标签、图片标签的title属性、音频标签、视频标签、超链接标签的target属性

黑马程序员——前端HTML5CSS3&#xff08;女神版&#xff09;——day01——文本格式化标签、图片标签的title属性、音频标签、视频标签、超链接标签的target属性 目录黑马程序员——前端HTML5CSS3&#xff08;女神版&#xff09;——day01——文本格式化标签、图片标签的title属…...

什么是用户体验 ?

1、感观体验&#xff1a;呈现给用户视听上的体验&#xff0c;强调舒适性。一般在色彩、声音、图像、文字内容、网站布局等呈现。 2、交互用户体验&#xff1a;界面给用户使用、交流过程的体验&#xff0c;强调互动、交互特性。交互体验的过程贯穿浏览、点击、输入、输出等过程给…...

学校教的Python,找工作没企业要,太崩溃了【大四真实求职经历】

如果只靠学校学的东西去找工作&#xff0c;能找到工作吗&#xff1f; 今天给大家看一个粉丝的真实求职案例&#xff0c;想做Python方面的工作&#xff0c;投了二十几个简历却没人要&#xff0c;心态崩了。为什么没人要&#xff1f;我来告诉你答案。 然后我还会结合我的这些年的…...

安卓版kawaks街机模拟器,C8,V3手柄冲突解决方案,物理改键

kawaks_5.2.7.apk 做得很好 美中不足,相同类型的手柄,键值会冲突,导致4个人没法玩 本人通过更改手柄模式,成功试出了4种不冲突的组合模式 准备工作:C8手柄*2V3手柄*2,我们要调出以下组合 Xbox Wireless Controller V3: R1 Home Wireless Controller V3: B Home Gamepad…...

http和https的区别?

http和https的区别&#xff1f;HTTPHTTPSHTTP与HTTPS区别HTTPS相比于HTTP协议的优点和缺点HTTP http是超文本传输协议 HTTP协议是基于传输层的TCP协议进行通信&#xff0c;通用无状态的协议。80端口 HTTPS https—安全的超文本传输协议 是以安全为目标的HTTP通道&#xff0c;…...

重构·改善既有代码的设计.02之代码的“坏味道”

前言之前在《重构改善既有代码的设计.01》中初步了解了重构的基本前提&#xff0c;基础原则等入门知识。今天我们继续第二更......识别代码的坏味道Duplicated Code 重复代码。最单纯的Duplicated Code就是“同一个类中含有相同的表达式”或“两个互为兄弟的子类内含有相同表达…...

学习自动化测试有那么重要吗?是不是真的有必要学呢?

你好&#xff0c;我是凡哥。 最近收到不少小伙伴私信提问&#xff0c;其中问得比较多的就是“学习自动化测试有那么重要吗&#xff1f;”。 我的回答是肯定的——很重要。 相信不少同学都有诸如此类的疑问&#xff0c;例如&#xff1a;“日常工作中好像用不上自动化&#xff…...

Linux下的图标与文件关联机制:freedesktop

Linux下的图标与文件关联机制&#xff1a;freedesktop 目前主流的Linux发行版中&#xff0c;使用的桌面基本都是基于GNOME、KDE、Xfce等环境&#xff0c;这几种桌面环境中&#xff0c;关于桌面图标&#xff0c;文件关联&#xff0c;应用程序启动等方面的实现&#xff0c;全部都…...

如何构造 HTTP 请求?

❣️关注专栏&#xff1a; JavaEE 这里写目录标题&#x1f367;1 通过 form 表单构造 HTTP 请求&#x1f368; 1.1 form 发送 GET 请求&#x1f368; 1.2 form 发送 POST 请求&#x1f367; 2 通过 ajax 构造 HTTP 请求&#x1f368; 2.1 js 提供的原生的 ajax 的 API&#x1f…...

数据库:mycat实现读写分离

目录 一、mycat 1、mycat实现读写分离原理 2、mycat应用场景 3、mycat作用 4、mycat实现读写分离实战 一、mycat 1、mycat实现读写分离原理 ①用户进行读操作则由mycat转给配置的从数据库。 ②用户进行写操作则由mycat转给配置的主数据库。 ③转发规则由mycat配置文件中…...

系统测试设计的10种方法

一、等价类划分 等价类的概念 等价类 某个输入域的子集合&#xff0c;在这个集合中 每一个输入条件都是等效 的&#xff0c; 如果其中一个输入不能导致问题发生&#xff0c;那么集合中其它输入条件进行测试也不可能发现错误。有效等价类 合理的输入数据 指满足产品规格说明的…...

js常用方法和内存泄露的几种情况

1. JS数组的常用方法- 增&#xff1a; push() unshift() splice() concat()- 删&#xff1a; pop() shift() splice() slice(不改变原数组)- 改&#xff1a; splice()- 查&#xff1a; indexOf() includes() find()2. 排序- sort() - reverse()3. 转换- join()4. 迭代- forEach…...

DolphinScheduler

序言整理下DolphinScheduler的使用参考资料:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.4 --官网文档简介Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期…...

【Java (一:12-2) 反射】

Java反射机制一、反射1.反射的概念2.获取class对象3. 获取Constructor对象4. 利用Constructor创建对象5.反射获取构造方法流程6.反射获取成员方法流程7.反射获取成员对象8.利用Field赋值和获取值9.获取method对象10.利用method对象运行方法一、反射 1.反射的概念 灵活调用 …...

ESP8266-NodeMCU开发板-------网络知识(2)

目录 TCP/IP协议簇 链路层 网络层与IP协议 IPv4 / IPv6 子网掩码(Subnet Mask) MAC地址和ARP 传输层 应用层 HTTP协议 HTTP请求 HTTP响应 DNS&#xff08;Domain Name System/域名系统&#xff09; TCP/IP协议簇 在网络系统中&#xff0c;为了保证通信设备之间能正确地进行通信…...

设计模式(二十六)----行为型模式之备忘录模式

1 概述 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便地回到一个特定的历史步骤&#xff0c;当新的状态无效或者存在问题时&#xff0c;可以使用暂时存储起来的备忘录将状态复原&#xff0c;很多软件都提供了撤销&#xff08;Undo&#xff09;操作&…...

前端利用js里数组的filter方法进行多条件过滤查询

需求&#xff1a;用户在输入框输入多个条件时&#xff0c;可以对表格数据进行过滤查询&#xff0c;无需后端接口处理&#xff0c;利用了前端js里数组的filter方法进行过滤。 如下是效果图&#xff1a; 当用户在姓名的输入框里输入"张"后效果如下&#xff1a; 当用户…...

DCDC--开关频率的选择

开关稳压器IC使用的开关频率从数十kHz到数MHz&#xff0c;最近有些甚至似乎以高频率工作。 1、重视效率或重视尺寸 如果将开关频率调高&#xff0c;则外置的电感和电容器将使用较小的&#xff0c;尺寸必然会变小。因此&#xff0c;包含安装面积和高度在内的外形尺寸也会变小&…...

【华为OD机试 2023最新 】 开放日活动、取出尽量少的球(C++)

题目描述 某部门开展Family Day开放日活动,其中有个从桶里取球的游戏,游戏规则如下: 有N个容量一样的小桶等距排开, 且每个小桶都默认装了数量不等的小球, 每个小桶装的小球数量记录在数组 bucketBallNums 中, 游戏开始时,要求所有桶的小球总数不能超过SUM, 如果…...

JavaScript学习笔记(9.6)

JSON JSON是Javascript对象标记法 JSON是一种轻量级的数据交换格式 JSON具有自我描述且易于理解 为什么使用JSON&#xff1a;因为JSON格式仅仅是文本&#xff0c;它能够轻松地在服务器浏览器之间传输&#xff0c;并用作任何编程语言的数据格式。 JavaScript提供内建函数把…...

Profinet协议下,MCGS触摸屏能否无线连接PLC?

一、方案概述 本方案以MCGS触摸屏和2台西门子S7-1200为例&#xff0c;介绍触摸屏与多台 PLC的无线Profinet通信实现过程。在本方案中采用了西门子PLC无线通讯终端DTD418M&#xff0c;作为实现无线通讯的硬件设备。 本方案中&#xff0c;用户无需更改网络参数和原有程序&#…...

小白开发微信小程序20--web api文档制作

1、什么是SwaggerSwagger 项目已于 2015 年捐赠给 OpenAPI 计划&#xff0c;自此它被称为 OpenAPI。 这两个名称可互换使用。 不过&#xff0c;“OpenAPI”指的是规范。 “Swagger”指的是来自使用 OpenAPI 规范的 SmartBear 的开放源代码和商业产品系列。简而言之&#xff1a;…...

审核通过≠报名成功,每年都有朋友因这个细节,报名失败

2023上半年软考已经开放报名啦~ ​ 特别提醒&#xff1a;不是提交报考资料后就算报名成功&#xff01;软考报考流程&#xff1a;提交报考资料→审核通过&#xff08;一般需要1-3个工作日&#xff09;→缴费成功→报名成功&#xff01; ​ ​首次报名软考的同学可能很容易忽…...

进销存是什么?如何选择进销存系统?

什么是进销存&#xff1f;进销存软件概念起源于上世纪80年代&#xff0c;由于电算化的普及&#xff0c;计算机管理的推广&#xff0c;不少企业对于仓库货品的进货&#xff0c;存货&#xff0c;出货管理&#xff0c;有了强烈的需求&#xff0c;进销存软件的发展从此开始。 进入…...