Chromium 中chrome.system.display扩展接口定义c++
一、chrome.system.display
使用 system.display API 查询展示元数据。
权限
system.display
类型
ActiveState
Chrome 117 及更高版本
用于指示系统是否检测到和使用显示屏的枚举。如果系统未检测到显示屏(可能断开连接,或因睡眠模式等原因而被视为断开连接),则显示屏将被视为“非活动状态”。例如,此状态用于在所有显示屏断开连接时保留现有显示屏。
chrome.system.display | API | Chrome for Developers
二、chrome.system.display c++接口定义:
1、system_display.idl
extensions\common\api\system_display.idl
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.// Use the <code>system.display</code> API to query display metadata.
namespace system.display {dictionary Bounds {// The x-coordinate of the upper-left corner.long left;// The y-coordinate of the upper-left corner.long top;// The width of the display in pixels.long width;// The height of the display in pixels.long height;};dictionary Insets {// The x-axis distance from the left bound.long left;// The y-axis distance from the top bound.long top;// The x-axis distance from the right bound.long right;// The y-axis distance from the bottom bound.long bottom;};dictionary Point {// The x-coordinate of the point.long x;// The y-coordinate of the point.long y;};dictionary TouchCalibrationPair {// The coordinates of the display point.Point displayPoint;// The coordinates of the touch point corresponding to the display point.Point touchPoint;};dictionary TouchCalibrationPairQuad {// First pair of touch and display point required for touch calibration.TouchCalibrationPair pair1;// Second pair of touch and display point required for touch calibration.TouchCalibrationPair pair2;// Third pair of touch and display point required for touch calibration.TouchCalibrationPair pair3;// Fourth pair of touch and display point required for touch calibration.TouchCalibrationPair pair4;};dictionary DisplayMode {// The display mode width in device independent (user visible) pixels.long width;// The display mode height in device independent (user visible) pixels.long height;// The display mode width in native pixels.long widthInNativePixels;// The display mode height in native pixels.long heightInNativePixels;// The display mode UI scale factor.[deprecated="Use $(ref: displayZoomFactor)"] double? uiScale;// The display mode device scale factor.double deviceScaleFactor;// The display mode refresh rate in hertz.double refreshRate;// True if the mode is the display's native mode.boolean isNative;// True if the display mode is currently selected.boolean isSelected;// True if this mode is interlaced, false if not provided.boolean? isInterlaced;};// Layout position, i.e. edge of parent that the display is attached to.enum LayoutPosition { top, right, bottom, left };dictionary DisplayLayout {// The unique identifier of the display.DOMString id;// The unique identifier of the parent display. Empty if this is the root.DOMString parentId;// The layout position of this display relative to the parent. This will// be ignored for the root.LayoutPosition position;// The offset of the display along the connected edge. 0 indicates that// the topmost or leftmost corners are aligned.long offset;};// EDID extracted parameters. Field description refers to "VESA ENHANCED// EXTENDED DISPLAY IDENTIFICATION DATA STANDARD (Defines EDID Structure// Version 1, Revision 4)" Release A, Revision 2 September 25, 2006.// https://www.vesa.org/vesa-standardsdictionary Edid {// 3 character manufacturer code. See Sec. 3.4.1 page 21. Required in v1.4.DOMString manufacturerId;// 2 byte manufacturer-assigned code, Sec. 3.4.2 page 21. Required in v1.4.DOMString productId;// Year of manufacturer, Sec. 3.4.4 page 22. Required in v1.4.long yearOfManufacture;};// An enum to tell if the display is detected and used by the// system. The display is considered 'inactive', if it is not// detected by the system (maybe disconnected, or considered// disconnected due to sleep mode, etc). This state is used to keep// existing display when the all displays are disconnected, for// example.enum ActiveState { active, inactive };dictionary DisplayUnitInfo {// The unique identifier of the display.DOMString id;// The user-friendly name (e.g. "HP LCD monitor").DOMString name;// NOTE: This is only available to Chrome OS Kiosk apps and Web UI.Edid? edid;// Chrome OS only. Identifier of the display that is being mirrored if// mirroring is enabled, otherwise empty. This will be set for all displays// (including the display being mirrored).DOMString mirroringSourceId;// Chrome OS only. Identifiers of the displays to which the source display// is being mirrored. Empty if no displays are being mirrored. This will be// set to the same value for all displays. This must not include// |mirroringSourceId|.DOMString[] mirroringDestinationIds;// True if this is the primary display.boolean isPrimary;// True if this is an internal display.boolean isInternal;// True if this display is enabled.boolean isEnabled;// Active if the display is detected and used by the system.ActiveState activeState;// True for all displays when in unified desktop mode. See documentation// for $(ref:enableUnifiedDesktop).boolean isUnified;// True when the auto-rotation is allowed. It happens when the device is in// a tablet physical state or kSupportsClamshellAutoRotation is set.// Provided for ChromeOS Settings UI only. TODO(stevenjb): Remove when// Settings switches to a mojo API.[nodoc] boolean? isAutoRotationAllowed;// The number of pixels per inch along the x-axis.double dpiX;// The number of pixels per inch along the y-axis.double dpiY;// The display's clockwise rotation in degrees relative to the vertical// position.// Currently exposed only on ChromeOS. Will be set to 0 on other platforms.// A value of -1 will be interpreted as auto-rotate when the device is in// a physical tablet state.long rotation;// The display's logical bounds.Bounds bounds;// The display's insets within its screen's bounds.// Currently exposed only on ChromeOS. Will be set to empty insets on// other platforms.Insets overscan;// The usable work area of the display within the display bounds. The work// area excludes areas of the display reserved for OS, for example taskbar// and launcher.Bounds workArea;// The list of available display modes. The current mode will have// isSelected=true. Only available on Chrome OS. Will be set to an empty// array on other platforms.DisplayMode[] modes;// True if this display has a touch input device associated with it.boolean hasTouchSupport;// True if this display has an accelerometer associated with it.// Provided for ChromeOS Settings UI only. TODO(stevenjb): Remove when// Settings switches to a mojo API. NOTE: The name of this may change.[nodoc] boolean hasAccelerometerSupport;// A list of zoom factor values that can be set for the display.double[] availableDisplayZoomFactors;// The ratio between the display's current and default zoom.// For example, value 1 is equivalent to 100% zoom, and value 1.5 is// equivalent to 150% zoom.double displayZoomFactor;};dictionary DisplayProperties {// Chrome OS only. If set to true, changes the display mode to unified// desktop (see $(ref:enableUnifiedDesktop) for details). If set to false,// unified desktop mode will be disabled. This is only valid for the// primary display. If provided, mirroringSourceId must not be provided and// other properties will be ignored. This is has no effect if not provided.boolean? isUnified;// Chrome OS only. If set and not empty, enables mirroring for this display// only. Otherwise disables mirroring for all displays. This value should// indicate the id of the source display to mirror, which must not be the// same as the id passed to setDisplayProperties. If set, no other property// may be set.[deprecated="Use $(ref:setMirrorMode)."] DOMString? mirroringSourceId;// If set to true, makes the display primary. No-op if set to false.// Note: If set, the display is considered primary for all other properties// (i.e. $(ref:isUnified) may be set and bounds origin may not).boolean? isPrimary;// If set, sets the display's overscan insets to the provided values. Note// that overscan values may not be negative or larger than a half of the// screen's size. Overscan cannot be changed on the internal monitor.Insets? overscan;// If set, updates the display's rotation.// Legal values are [0, 90, 180, 270]. The rotation is set clockwise,// relative to the display's vertical position.long? rotation;// If set, updates the display's logical bounds origin along the x-axis.// Applied together with $(ref:boundsOriginY). Defaults to the current value// if not set and $(ref:boundsOriginY) is set. Note that when updating the// display origin, some constraints will be applied, so the final bounds// origin may be different than the one set. The final bounds can be// retrieved using $(ref:getInfo). The bounds origin cannot be changed on// the primary display.long? boundsOriginX;// If set, updates the display's logical bounds origin along the y-axis.// See documentation for $(ref:boundsOriginX) parameter.long? boundsOriginY;// If set, updates the display mode to the mode matching this value.// If other parameters are invalid, this will not be applied. If the// display mode is invalid, it will not be applied and an error will be// set, but other properties will still be applied.DisplayMode? displayMode;// If set, updates the zoom associated with the display. This zoom performs// re-layout and repaint thus resulting in a better quality zoom than just// performing a pixel by pixel stretch enlargement.double? displayZoomFactor;};dictionary GetInfoFlags {// If set to true, only a single $(ref:DisplayUnitInfo) will be returned// by $(ref:getInfo) when in unified desktop mode (see// $(ref:enableUnifiedDesktop)). Defaults to false.boolean? singleUnified;};// Mirror mode, i.e. different ways of how a display is mirrored to other// displays.enum MirrorMode {// Specifies the default mode (extended or unified desktop).off,// Specifies that the default source display will be mirrored to all other// displays.normal,// Specifies that the specified source display will be mirrored to the// provided destination displays. All other connected displays will be// extended.mixed};dictionary MirrorModeInfo {// The mirror mode that should be set.MirrorMode mode;// The id of the mirroring source display. This is only valid for 'mixed'.DOMString? mirroringSourceId;// The ids of the mirroring destination displays. This is only valid for// 'mixed'.DOMString[]? mirroringDestinationIds;};callback DisplayInfoCallback = void (DisplayUnitInfo[] displayInfo);callback DisplayLayoutCallback = void (DisplayLayout[] layouts);callback SetDisplayUnitInfoCallback = void();callback SetDisplayLayoutCallback = void();callback NativeTouchCalibrationCallback = void(boolean success);callback SetMirrorModeCallback = void();interface Functions {// Requests the information for all attached display devices.// |flags|: Options affecting how the information is returned.// |callback|: The callback to invoke with the results.[supportsPromises] static void getInfo(optional GetInfoFlags flags,DisplayInfoCallback callback);// Requests the layout info for all displays.// NOTE: This is only available to Chrome OS Kiosk apps and Web UI.// |callback|: The callback to invoke with the results.[supportsPromises] static void getDisplayLayout(DisplayLayoutCallback callback);// Updates the properties for the display specified by |id|, according to// the information provided in |info|. On failure, $(ref:runtime.lastError)// will be set.// NOTE: This is only available to Chrome OS Kiosk apps and Web UI.// |id|: The display's unique identifier.// |info|: The information about display properties that should be changed.// A property will be changed only if a new value for it is specified in// |info|.// |callback|: Empty function called when the function finishes. To find out// whether the function succeeded, $(ref:runtime.lastError) should be// queried.[supportsPromises] static void setDisplayProperties(DOMString id,DisplayProperties info,optional SetDisplayUnitInfoCallback callback);// Set the layout for all displays. Any display not included will use the// default layout. If a layout would overlap or be otherwise invalid it// will be adjusted to a valid layout. After layout is resolved, an// onDisplayChanged event will be triggered.// NOTE: This is only available to Chrome OS Kiosk apps and Web UI.// |layouts|: The layout information, required for all displays except// the primary display.// |callback|: Empty function called when the function finishes. To find out// whether the function succeeded, $(ref:runtime.lastError) should be// queried.[supportsPromises] static void setDisplayLayout(DisplayLayout[] layouts,optional SetDisplayLayoutCallback callback);// Enables/disables the unified desktop feature. If enabled while mirroring// is active, the desktop mode will not change until mirroring is turned// off. Otherwise, the desktop mode will switch to unified immediately.// NOTE: This is only available to Chrome OS Kiosk apps and Web UI.// |enabled|: True if unified desktop should be enabled.static void enableUnifiedDesktop(boolean enabled);// Starts overscan calibration for a display. This will show an overlay// on the screen indicating the current overscan insets. If overscan// calibration for display |id| is in progress this will reset calibration.// |id|: The display's unique identifier.static void overscanCalibrationStart(DOMString id);// Adjusts the current overscan insets for a display. Typically this should// either move the display along an axis (e.g. left+right have the same// value) or scale it along an axis (e.g. top+bottom have opposite values).// Each Adjust call is cumulative with previous calls since Start.// |id|: The display's unique identifier.// |delta|: The amount to change the overscan insets.static void overscanCalibrationAdjust(DOMString id, Insets delta);// Resets the overscan insets for a display to the last saved value (i.e// before Start was called).// |id|: The display's unique identifier.static void overscanCalibrationReset(DOMString id);// Complete overscan adjustments for a display by saving the current values// and hiding the overlay.// |id|: The display's unique identifier.static void overscanCalibrationComplete(DOMString id);// Displays the native touch calibration UX for the display with |id| as// display id. This will show an overlay on the screen with required// instructions on how to proceed. The callback will be invoked in case of// successful calibration only. If the calibration fails, this will throw an// error.// |id|: The display's unique identifier.// |callback|: Optional callback to inform the caller that the touch// calibration has ended. The argument of the callback informs if the// calibration was a success or not.[supportsPromises] static void showNativeTouchCalibration(DOMString id,optional NativeTouchCalibrationCallback callback);// Starts custom touch calibration for a display. This should be called when// using a custom UX for collecting calibration data. If another touch// calibration is already in progress this will throw an error.// |id|: The display's unique identifier.static void startCustomTouchCalibration(DOMString id);// Sets the touch calibration pairs for a display. These |pairs| would be// used to calibrate the touch screen for display with |id| called in// startCustomTouchCalibration(). Always call |startCustomTouchCalibration|// before calling this method. If another touch calibration is already in// progress this will throw an error.// |pairs|: The pairs of point used to calibrate the display.// |bounds|: Bounds of the display when the touch calibration was performed.// |bounds.left| and |bounds.top| values are ignored.static void completeCustomTouchCalibration(TouchCalibrationPairQuad pairs,Bounds bounds);// Resets the touch calibration for the display and brings it back to its// default state by clearing any touch calibration data associated with the// display.// |id|: The display's unique identifier.static void clearTouchCalibration(DOMString id);// Sets the display mode to the specified mirror mode. Each call resets the// state from previous calls. Calling setDisplayProperties() will fail for// the mirroring destination displays.// NOTE: This is only available to Chrome OS Kiosk apps and Web UI.// |info|: The information of the mirror mode that should be applied to the// display mode.// |callback|: Empty function called when the function finishes. To find out// whether the function succeeded, $(ref:runtime.lastError) should be// queried.[supportsPromises] static void setMirrorMode(MirrorModeInfo info,optional SetMirrorModeCallback callback);};interface Events {// Fired when anything changes to the display configuration.static void onDisplayChanged();};
};
2、system_display.idl生成c++文件:
out\Debug\gen\extensions\common\api\system_display.h
out\Debug\gen\extensions\common\api\system_display.cc
3、chrome.system.display api接口定义c++:
extensions\browser\api\system_display\system_display_api.h
extensions\browser\api\system_display\system_display_api.cc
namespace extensions {class SystemDisplayFunction : public ExtensionFunction {public:static const char kApiNotAvailableError[];protected:~SystemDisplayFunction() override = default;bool PreRunValidation(std::string* error) override;
};class SystemDisplayCrOSRestrictedFunction : public SystemDisplayFunction {public:static const char kCrosOnlyError[];static const char kKioskOnlyError[];protected:~SystemDisplayCrOSRestrictedFunction() override = default;bool PreRunValidation(std::string* error) override;// Returns true if this function should be restricted to kiosk-mode apps and// webui. The default is true.virtual bool ShouldRestrictToKioskAndWebUI();
};// This function inherits from SystemDisplayFunction because, unlike the
// rest of this API, it's available on all platforms.
class SystemDisplayGetInfoFunction : public SystemDisplayFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.getInfo", SYSTEM_DISPLAY_GETINFO)protected:~SystemDisplayGetInfoFunction() override = default;ResponseAction Run() override;void Response(std::vector<api::system_display::DisplayUnitInfo> all_displays_info);
};class SystemDisplayGetDisplayLayoutFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.getDisplayLayout",SYSTEM_DISPLAY_GETDISPLAYLAYOUT)protected:~SystemDisplayGetDisplayLayoutFunction() override = default;ResponseAction Run() override;bool ShouldRestrictToKioskAndWebUI() override;void Response(std::vector<api::system_display::DisplayLayout> display_layout);
};class SystemDisplaySetDisplayPropertiesFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.setDisplayProperties",SYSTEM_DISPLAY_SETDISPLAYPROPERTIES)protected:~SystemDisplaySetDisplayPropertiesFunction() override = default;ResponseAction Run() override;void Response(std::optional<std::string> error);
};class SystemDisplaySetDisplayLayoutFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.setDisplayLayout",SYSTEM_DISPLAY_SETDISPLAYLAYOUT)protected:~SystemDisplaySetDisplayLayoutFunction() override = default;ResponseAction Run() override;void Response(std::optional<std::string> error);
};class SystemDisplayEnableUnifiedDesktopFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.enableUnifiedDesktop",SYSTEM_DISPLAY_ENABLEUNIFIEDDESKTOP)protected:~SystemDisplayEnableUnifiedDesktopFunction() override = default;ResponseAction Run() override;
};class SystemDisplayOverscanCalibrationStartFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationStart",SYSTEM_DISPLAY_OVERSCANCALIBRATIONSTART)protected:~SystemDisplayOverscanCalibrationStartFunction() override = default;ResponseAction Run() override;
};class SystemDisplayOverscanCalibrationAdjustFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationAdjust",SYSTEM_DISPLAY_OVERSCANCALIBRATIONADJUST)protected:~SystemDisplayOverscanCalibrationAdjustFunction() override = default;ResponseAction Run() override;
};class SystemDisplayOverscanCalibrationResetFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationReset",SYSTEM_DISPLAY_OVERSCANCALIBRATIONRESET)protected:~SystemDisplayOverscanCalibrationResetFunction() override = default;ResponseAction Run() override;
};class SystemDisplayOverscanCalibrationCompleteFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationComplete",SYSTEM_DISPLAY_OVERSCANCALIBRATIONCOMPLETE)protected:~SystemDisplayOverscanCalibrationCompleteFunction() override = default;ResponseAction Run() override;
};class SystemDisplayShowNativeTouchCalibrationFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.showNativeTouchCalibration",SYSTEM_DISPLAY_SHOWNATIVETOUCHCALIBRATION)protected:~SystemDisplayShowNativeTouchCalibrationFunction() override = default;ResponseAction Run() override;void OnCalibrationComplete(std::optional<std::string> error);
};class SystemDisplayStartCustomTouchCalibrationFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.startCustomTouchCalibration",SYSTEM_DISPLAY_STARTCUSTOMTOUCHCALIBRATION)protected:~SystemDisplayStartCustomTouchCalibrationFunction() override = default;ResponseAction Run() override;
};class SystemDisplayCompleteCustomTouchCalibrationFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.completeCustomTouchCalibration",SYSTEM_DISPLAY_COMPLETECUSTOMTOUCHCALIBRATION)protected:~SystemDisplayCompleteCustomTouchCalibrationFunction() override = default;ResponseAction Run() override;
};class SystemDisplayClearTouchCalibrationFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.clearTouchCalibration",SYSTEM_DISPLAY_CLEARTOUCHCALIBRATION)protected:~SystemDisplayClearTouchCalibrationFunction() override = default;ResponseAction Run() override;
};class SystemDisplaySetMirrorModeFunction: public SystemDisplayCrOSRestrictedFunction {public:DECLARE_EXTENSION_FUNCTION("system.display.setMirrorMode",SYSTEM_DISPLAY_SETMIRRORMODE)protected:~SystemDisplaySetMirrorModeFunction() override = default;ResponseAction Run() override;void Response(std::optional<std::string> error);
};} // namespace extensions
相关文章:
Chromium 中chrome.system.display扩展接口定义c++
一、chrome.system.display 使用 system.display API 查询展示元数据。 权限 system.display 类型 ActiveState Chrome 117 及更高版本 用于指示系统是否检测到和使用显示屏的枚举。如果系统未检测到显示屏(可能断开连接,或因睡眠模式等原因而被视…...
容器docker的ulimit
Ulimit 在linux里ulimit命令可以对shell生成的进程的资源进行限制。 常用的ulimit限制 打开文件句柄数core文件大小设置进程能够消耗的虚拟内存设置用户能够打开的进程数目 不太常用的ulimit限制 设置数据段的最大值.单位:kbytes 设置创建文件的最大值.单位:blocks 设置在…...
一、HTML
一、基础概念 1、浏览器相关知识 这五个浏览器市场份额都非常大,且都有自己的内核。 什么是内核: 内核是浏览器的核心,用于处理浏览器所得到的各种资源。 例如,服务器发送图片、视频、音频的资源,浏览…...
使用Geekbench6软件对真实和虚拟的苹果桌面系统(macOS)进行打分比较
前言 感觉VMWare安装的MacOS使用起来非常的慢,所以特意用打分软件GeekBench进行了评测。 一、Geekbench的安装 可以从官网直接进行下载, 链接是: 二、Geekbench的直接使用 2.1、真机的信息 2.2、虚拟机的信息 三、打分的比较 3.1、真机…...
lua入门教程:随机数
在Lua中,生成随机数是通过math库中的math.random函数来实现的。这个函数可以生成一个[0, 1)区间内的随机浮点数。如果你需要生成其他范围内的随机数,或者需要整数类型的随机数,可以通过一些简单的数学运算来调整math.random的输出。 以下是如…...
华为大咖说 | 浅谈智能运维技术
本文分享自华为云社区:华为大咖说 | 浅谈智能运维技术-云社区-华为云 本文作者:李文轩 ( 华为智能运维专家 ) 全文约2695字,阅读约需8分钟 在大数据、人工智能等新兴技术的加持下,智能运维(AI…...
creo toolkit二次开发学习之获取任意选择模型作为元件,并进行获取约束等
获取任意选择模型作为元件进行操作前,先了解组件路径和程序集的构成:creo toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)-CSDN博客 代码如下 ProError test1() {ProError…...
sanitize-html 防止 XSS(跨站脚本攻击)
sanitize-html 是一个用于清理和验证 HTML 的 JavaScript 库,主要用于防止 XSS(跨站脚本攻击)。它允许你定义一套规则来决定哪些 HTML 标签和属性是可以被信任的,从而确保用户输入的内容不会包含潜在的恶意代码。 主要功能 HTML…...
【JavaEE】文件io
目录 文件类型 File概述 属性 构造方法 常用方法 Reader Writer InputStream OutputStream 字节流转字符流 通过Scanner读取InputStream 通过PrintWriter转换outputstream 示例 文件类型 从编程的角度看,文件类型主要就是两大类 文本(文…...
FlinkPipelineComposer 详解
FlinkPipelineComposer 详解 原文 背景 在flink-cdc 3.0中引入了pipeline机制,提供了除Datastream api/flink sql以外的一种方式定义flink 任务 通过提供一个yaml文件,描述source sink transform等主要信息 由FlinkPipelineComposer解析,…...
蓝桥杯-洛谷刷题-day2(C++)
目录 1.小写字母与大写字母的转换 2.使用string(额外开一章持续补充) i.访问字符串最后一位 3.保留N位小数输出 i.C侧 ii.C语言侧 iii.总结 4.高精度相加 i.各种数据类型转字符型 ii.三元运算符 iii.循环条件中的carry 1.小写字母与大写字母的…...
16008.行为树(五)-自定义数据指针在黑板中的传递
文章目录 1.1 背景1.2 xml文件定义1.3 代码实现1.3 执行结果1.1 背景 自定义数据结构指针,通过黑板的形式,在树的节点中进行指针的传递。 1.2 xml文件定义 xhome@ubuntu:~/opt/groot_pro$ cat unit_t1.xml<?xml version="1.0" encoding="UTF-8"?&…...
javascript Vue
DOM对象 什么是DOM DOM(Document Object Model):文档对象模型,就是Javascript将HTML文档的各个组成部分封装为对象,通过修改HTML元素的内容和样式动态改变页面。 如何获取DOM对象 获取DOM中的元素对象(Element对象/标签&…...
《揭秘观察者模式:作用与使用场景全解析》
在软件开发的世界中,设计模式就像是建筑师手中的蓝图,指导着软件系统的构建。其中,观察者模式是一种极为重要且广泛应用的设计模式。今天,我们就来深入探讨一下观察者模式的作用和使用场景。 一、观察者模式是什么? …...
【QT常用技术讲解】优化网络链接不上导致qt、qml界面卡顿的问题
前言 qt、qml项目经常会涉及访问MySQL数据库、网络服务器,并且界面打开时的初始化过程就会涉及到链接Mysql、网络服务器获取数据,如果网络不通,卡个几十秒,会让用户觉得非常的不爽,本文从技术调研的角度讲解解决此类问…...
下划线命名json数组转java对象
/*** 将驼峰式命名的字符串转换为下划线方式* @param camelCase* @return*/ private static String toUnderlineCase(String camelCase) {return StrUtil.toUnderlineCase(camelCase); }/*** 下划线-赋值给-驼峰* @param source 源数据* @param target 目标数据*/ public stati…...
实测运行容器化Nginx服务器
文章目录 前言一、拉取Nginx镜像二、创建挂载目录三、运行容器化Nginx服务器四、访问网页测试 总结 前言 运行容器化Nginx服务器,首先确保正确安装docker,并且已启动运行,具体安装docker方法见笔者前面的博文《OpenEuler 下 Docker 安装、配…...
显示器接口种类 | 附图片
显示器接口类型主要包括VGA、DVI、HDMI、DP和USB Type-C等。 VGA、DVI、HDMI、DP和USB Type-C 1. 观察 VGA接口:15针 DP接口:在DP接口旁,都有一个“D”型的标志。 电脑主机:DP(D) 显示器:VGA(15针) Ref https://cloud.tenc…...
C++初阶——list
一、什么是list list是一个可以在序列的任意位置进行插入和删除的容器,并且可以进行双向迭代。list的底层是一个双向链表,双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。通过将每个元素与前一个元素的链接和后一个元素的链接关联起来&…...
软件设计师-排序算法
冒泡排序 每一趟冒泡排序,从第0个元素开始,和后面的元素比较,如果大于就交换,否则不变,每次冒泡可以把最大的元素放到最后一个,第一次冒泡的终点是n-1,第二趟的是n-2,直到最后剩下一个元素。时间复杂度O(n…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
一、研究背景与创新点 (一)现有方法的局限性 当前智驾系统面临两大核心挑战:一是长尾问题,即系统在遇到新场景时可能失效,例如突发交通状况或非常规道路环境;二是可解释性问题,传统方法无法解释智驾系统的决策过程,用户难以理解车辆行为的依据。传统语言模型(如 BERT…...
Ubuntu 可执行程序自启动方法
使用 autostart(适用于桌面环境) 适用于 GNOME/KDE 桌面环境(如 Ubuntu 图形界面) 1. 创建 .desktop 文件 sudo vi ~/.config/autostart/my_laser.desktop[Desktop Entry] TypeApplication NameMy Laser Program Execbash -c &…...
