QT6 源(105)篇二:阅读与注释 QAction,给出源代码
(5)本源代码来自于头文件 qaction . h :
#ifndef QACTION_H
#define QACTION_H#include <QtGui/qtguiglobal.h>
#if QT_CONFIG(shortcut)
# include <QtGui/qkeysequence.h>
#endif
#include <QtGui/qicon.h>
#include <QtCore/qstring.h>
#include <QtCore/qvariant.h>QT_REQUIRE_CONFIG(action);QT_BEGIN_NAMESPACE //说明本类定义于 Qt 的全局命名空间class QActionEvent;
class QActionGroup;
class QActionPrivate;#ifndef QT_NO_DEBUG_STREAM //说明本类的指针可以用于打印
Q_GUI_EXPORT QDebug operator<<(QDebug, const QAction *);
#endifclass Q_GUI_EXPORT QAction : public QObject
{Q_OBJECTQ_DECLARE_PRIVATE(QAction)//此属性表示 Action是否可见(例如在菜单和工具栏中),//如果visible为true,则该 QAction可以被用户看到(例如在菜单和工具栏中)并选择;//如果visible为false,则该 QAction不能被用户看到或选择。 ////不可见的 QAction不会变灰;它们根本不会显示。 默认情况下,此属性为真(QAction可见)。Q_PROPERTY(bool visible //表本菜单项是否可见READ isVisible WRITE setVisibleNOTIFY visibleChanged FINAL)//此属性包含动作的描述性文本。机器翻译总把 action控件翻译为操作,不再修改了,下同。//如果该操作被添加到菜单中,菜单选项将包括图标(如果有的话)、文本和快捷键(如果有的话)。//如果在构造函数中没有显式设置文本,或者使用setText()设置了文本,//则该操作的描述图标文本 iconText将被用作文本。没有默认文本。Q_PROPERTY(QString text //这是菜单栏里的按钮文本READ text WRITE setTextNOTIFY changed) //若本属性为空,则用 iconText替代为本属性值Q_PROPERTY(QString iconText //这是工具栏里的按钮文本READ iconText WRITE setIconTextNOTIFY changed) //同一个信号函数//此属性持有操作图标。//在工具栏中,该图标用作工具按钮图标;在菜单中,它显示在菜单文本的左侧。没有默认图标。//如果将空图标(Olcon::isNull())传递给此函数,则清除动作的图标。Q_PROPERTY(QIcon icon //本按钮的图片READ icon WRITE setIconNOTIFY changed)//此属性表示操作是否应在菜单中显示图标。//在某些应用程序中,在工具栏中添加带有图标的操作可能是有意义的,但在菜单中则不然。//如果为真则图标(如果有效)将在菜单中显示,如果为假,则不会显示。//默认情况下,会遵循是否为该应用程序设置了 Qt::AA DontShowlconsInMenus属性。//显式设置此属性会覆盖该属性的存在(或不存在)。Q_PROPERTY(bool iconVisibleInMenu //菜单栏里的按钮图标是否可见READ isIconVisibleInMenu WRITE setIconVisibleInMenuNOTIFY changed)//此属性包含操作的提示信息。此文本用于工具提示。如果没有指定工具提示,则使用动作的文本。//默认情况下,此属性包含操作的文字。 By default, this property contains the action's text.Q_PROPERTY(QString toolTip //工具栏里的按钮提示词READ toolTip WRITE setToolTipNOTIFY changed)Q_PROPERTY(QString statusTip //状态栏里的按钮提示词,可以写更长READ statusTip WRITE setStatusTipNOTIFY changed) //若状态栏包含有常备控件,则本提示词具备顶级显示的权力//此属性持有操作的状态提示。状态提示显示在由动作的顶级父控件提供的所有状态栏上。//默认情况下,此属性包含一个空字符串。Q_PROPERTY(QString whatsThis //用于存储对本菜单项的帮助文本 help,内容READ whatsThis WRITE setWhatsThisNOTIFY changed)//This property holds the action's "What's This?" help text。//The "What's This?" text is used to provide a brief description of the action.//The text may contain rich text. There is no default "What's This?" text.//此属性持有动作的字体。字体属性用于渲染设置在QAction上的文本。//字体可以被视为一个提示,因为根据应用程序和样式它不会在所有情况下被咨询。//默认情况下,此属性包含应用程序的默认字体。Q_PROPERTY(QFont font //按菜单项上的字体READ font WRITE setFontNOTIFY changed)//class Q_GUI_EXPORT QKeySequence。//Returns the primary shortcut. Note: Getter function for property shortcut.Q_PROPERTY(QKeySequence shortcut //快捷键READ shortcut WRITE setShortcutNOTIFY changed)//enum Qt::ShortcutContext { WidgetShortcut, WindowShortcut,// ApplicationShortcut, WidgetWithChildrenShortcut };Q_PROPERTY(Qt::ShortcutContext shortcutContext //识别快捷键的范围READ shortcutContext WRITE setShortcutContextNOTIFY changed)//This property holds the context for the action's shortcut.//Valid values for this property can be found in Qt::ShortcutContext.//The default value is Qt::WindowShortcut.//此属性表示操作是否应在上下文菜单中显示快捷方式。//在某些应用程序中,在上下文菜单中设置具有快捷方式的操作是有意义的。//如果为真,则在通过上下文菜单显示操作时显示快捷方式(如果有效),如果为假,则不显示。//默认情况下,会遵循是否为该应用程序启用了 Qt::AA_DontShowShortcutsInContextMenus 属性。//显式设置此属性将覆盖该属性。Explicitly setting this property overrides the attribute.Q_PROPERTY(bool shortcutVisibleInContextMenuREAD isShortcutVisibleInContextMenuWRITE setShortcutVisibleInContextMenuNOTIFY changed) //表在右键快捷菜单中是否显示快捷键//此属性表示操作是否可以自动重复。//如果为真,则在系统上启用键盘自动重复的情况下,当按下键盘快捷键组合时,该操作将自动重复。默认值为真。//This property holds whether the action can auto repeat.//If true, the action will auto repeat when the// keyboard shortcut combination is held down,//provided that keyboard auto repeat is enabled on the system.//The default value is true.Q_PROPERTY(bool autoRepeat //表快捷键被频繁按下时,Action是否会连续触发READ autoRepeat WRITE setAutoRepeatNOTIFY changed)//此属性持有动作的菜单角色。这表明该操作在macOS应用程序菜单中起什么作用。//默认情况下,所有操作都具有TextHeuristicRole,这意味着操作是根据其文本添加的//(请参阅OMenuBar以获取更多信息)。//在 macOs 中,只能在将操作放入菜单栏之前(通常是在第一个应用程序窗口显示之前)更改菜单角色。Q_PROPERTY(MenuRole menuRole //本属性仅仅用于 macOS,表本菜单项的作用READ menuRole WRITE setMenuRoleNOTIFY changed)//此属性表示操作是否启用。禁用操作不能被用户选择。它们不会从菜单或工具栏中消失,//但会以显示它们不可用的方式显示。例如,它们可能仅以灰色显示。//What's This? help on disabled actions is still available,//只要设置了 QAction::whatsThis 属性。//An action will be disabled when all widgets to which it is added// (with QWidget::addAction()) are disabled or not visible.//当动作被禁用时,无法通过其快捷键触发它。默认情况下,此属性为真(动作已启用)。Q_PROPERTY(bool enabled //本按钮是否可用READ isEnabled WRITE setEnabledNOTIFY enabledChangedRESET resetEnabled FINAL)//This property holds whether the action is a checkable action.//A checkable action is one which has an on/off state.//For example, in a word processor, a Bold toolbar button may be either on or off.//An action which is not a toggle action is a command action;//a command action is simply executed, e.g. file save.//By default, this property is false. In some situations,//the state of one toggle action should depend on the state of others.//For example, "Left Align", "Center" and "Right Align" toggle actions are//mutually exclusive. To achieve exclusive toggling,//add the relevant toggle actions to a QActionGroup with the// QActionGroup::exclusive property set to true.Q_PROPERTY(bool checkable //本按钮是否可复选READ isCheckable WRITE setCheckableNOTIFY checkableChanged FINAL)Q_PROPERTY(bool checked //本复选按钮是否被按下READ isChecked WRITE setCheckedNOTIFY toggled) //复选按钮的按下与弹起有了变化//This property holds whether the action is checked.//Only checkable actions can be checked.//By default, this is false (the action is unchecked).//Note: The notifier signal for this property is toggled().//As toggling a QAction changes its state, it will also emit a changed() signal.//经测试:信号函数 toggled ( ) 确实还会触发一次 changed ( ) 信号函数Q_PROPERTY(Priority priority //表本菜单项在 UI上的优先级,默认 Normal而非 Low。READ priority WRITE setPriority) //枚举 Priority就定义在本类//此属性在用户界面中保存操作的优先级。//可以设置此属性以指示在用户界面中应如何对操作进行优先级排序。//例如,当工具栏具有 Qt::ToolButtonTextBesidelcon 模式设置时,//具有低优先级的 QAction将不会显示文本标签,而只显示图片。//经测试:当工具栏具有 ToolButtonTextUnderlcon属性时,低优先级的工具栏按钮依然会显示文字。private:Q_DISABLE_COPY(QAction)friend class QActionGroup; //这些全是友元类friend class QWidget;friend class QMenu;friend class QMenuPrivate;friend class QToolButton;friend class QGraphicsWidget;QObject * menuObject() const;void setMenuObject(QObject * object);protected:bool event(QEvent *) override;QAction(QActionPrivate & dd, QObject * parent);public://Constructs an action with parent.//If parent is an action group ,//the action will be automatically inserted into the group.explicit QAction(QObject * parent = nullptr);//Constructs an action with some text and parent.//If parent is an action group ,//the action will be automatically inserted into the group.explicit QAction(const QString & text, QObject * parent = nullptr);//该操作使用文本的精简版本(例如,“&Menu Option...”变为“MenuOption”)作为工具按钮的描述性文本。//您可以通过使用setText()设置特定的描述来覆盖此设置。//除非您使用setToolTip()指定不同的文本,否则相同的文本将用于工具提示。explicit QAction(const QIcon & icon, //参数 parent也可以不是窗体组件,而是 QActionGroupconst QString & text, QObject * parent = nullptr);//Constructs an action with an icon and some text and parent.~QAction();//Q_PROPERTY(bool visible //表本菜单项是否可见
// READ isVisible WRITE setVisible
// NOTIFY visibleChanged FINAL)bool isVisible() const;
public Q_SLOTS:void setVisible(bool);
Q_SIGNALS:void visibleChanged();public:
//Q_PROPERTY(QString text //这是菜单栏里的按钮文本
// READ text WRITE setText
// NOTIFY changed) //若本属性为空,则用 iconText替代为本属性值QString text() const;void setText(const QString & text);
Q_SIGNALS:void changed();public:
//Q_PROPERTY(QString iconText //这是工具栏里的按钮文本
// READ iconText WRITE setIconText
// NOTIFY changed) //同一个信号函数QString iconText() const;void setIconText(const QString & text); //同样的信号函数,略了//Q_PROPERTY(QIcon icon //本按钮的图片
// READ icon WRITE setIcon
// NOTIFY changed)QIcon icon() const;void setIcon(const QIcon & icon);//Q_PROPERTY(bool iconVisibleInMenu //菜单栏里的按钮图标是否可见
// READ isIconVisibleInMenu WRITE setIconVisibleInMenu
// NOTIFY changed)bool isIconVisibleInMenu() const;void setIconVisibleInMenu(bool visible);//Q_PROPERTY(QString toolTip //工具栏里的按钮提示词
// READ toolTip WRITE setToolTip
// NOTIFY changed)QString toolTip() const;void setToolTip(const QString & tip);//Q_PROPERTY(QString statusTip //状态栏里的按钮提示词,可以写更长
// READ statusTip WRITE setStatusTip
// NOTIFY changed) //若状态栏包含有常备控件,则本提示词具备顶级显示的权力QString statusTip() const;void setStatusTip(const QString & statusTip);//Q_PROPERTY(QString whatsThis //用于存储对本菜单项的帮助文本 help,内容
// READ whatsThis WRITE setWhatsThis
// NOTIFY changed)QString whatsThis() const;void setWhatsThis(const QString & what);//Q_PROPERTY(QFont font //按菜单项上的字体
// READ font WRITE setFont
// NOTIFY changed)QFont font() const;void setFont(const QFont & font);//Q_PROPERTY(QKeySequence shortcut //快捷键
// READ shortcut WRITE setShortcut
// NOTIFY changed)QKeySequence shortcut() const;void setShortcut(const QKeySequence & shortcut);//Returns the list of shortcuts, //说明允许为一个按钮绑定多个快捷键。// with the primary shortcut as the first element of the list.QList<QKeySequence> shortcuts() const; //class QKeySequence {...};void setShortcuts(const QList<QKeySequence> & shortcuts);//Sets shortcuts as the list of shortcuts that trigger the action.//The first element of the list is the primary shortcut.void setShortcuts(QKeySequence::StandardKey key);//Sets a platform dependent list of shortcuts based on the key.//调用此函数的结果取决于当前运行的平台。//请注意此操作可以分配多个快捷方式。如果只需要主快捷方式,请使用setShortcut。//Q_PROPERTY(Qt::ShortcutContext shortcutContext //识别快捷键的范围
// READ shortcutContext WRITE setShortcutContext
// NOTIFY changed)Qt::ShortcutContext shortcutContext() const;void setShortcutContext(Qt::ShortcutContext context);//Q_PROPERTY(bool shortcutVisibleInContextMenu
// READ isShortcutVisibleInContextMenu
// WRITE setShortcutVisibleInContextMenu
// NOTIFY changed) //表在右键快捷菜单中是否显示快捷键bool isShortcutVisibleInContextMenu() const;void setShortcutVisibleInContextMenu(bool show);//Q_PROPERTY(bool autoRepeat //表快捷键被频繁按下时,Action是否会连续触发
// READ autoRepeat WRITE setAutoRepeat
// NOTIFY changed)bool autoRepeat() const;void setAutoRepeat(bool);// note this is copied into qplatformmenu.h, which must stay in syncenum MenuRole {NoRole = 0,TextHeuristicRole,ApplicationSpecificRole,AboutQtRole,AboutRole,PreferencesRole,QuitRole};Q_ENUM( MenuRole )
//Q_PROPERTY(MenuRole menuRole //本属性仅仅用于 macOS,表本菜单项的作用
// READ menuRole WRITE setMenuRole
// NOTIFY changed)MenuRole menuRole() const;void setMenuRole(MenuRole menuRole);//Q_PROPERTY(bool enabled //本按钮是否可用
// READ isEnabled WRITE setEnabled
// NOTIFY enabledChanged
// RESET resetEnabled FINAL)bool isEnabled() const;
public Q_SLOTS:void setEnabled(bool);
Q_SIGNALS:void enabledChanged(bool enabled);
public Q_SLOTS:void resetEnabled();public:
//Q_PROPERTY(bool checkable //本按钮是否可复选
// READ isCheckable WRITE setCheckable
// NOTIFY checkableChanged FINAL)bool isCheckable() const;void setCheckable(bool);
Q_SIGNALS:void checkableChanged(bool checkable);public:
//Q_PROPERTY(bool checked //本复选按钮是否被按下
// READ isChecked WRITE setChecked
// NOTIFY toggled) //复选按钮的按下与弹起有了变化bool isChecked() const;
public Q_SLOTS:void setChecked(bool);
Q_SIGNALS:void toggled(bool);public:enum Priority {LowPriority = 0,NormalPriority = 128,HighPriority = 256};Q_ENUM( Priority )
//Q_PROPERTY(Priority priority //表本菜单项在 UI上的优先级,默认 Normal而非 Low。
// READ priority WRITE setPriority) //枚举 Priority就定义在本类Priority priority() const;void setPriority(Priority priority);//Returns true if this action is a separator action; otherwise it returns false.bool isSeparator() const;void setSeparator(bool b); //原来菜单栏里的分隔符也是 QAciton类型//If b is true then this action will be considered a separator.//分隔符的表示方式取决于它插入的组件。在大多数情况下,对于分隔符操作,文本、子菜单和图标将被忽略。QVariant data() const; //Returns the user data as set in QAction::setData.void setData(const QVariant & var); //看来可以为按钮关联一个任意类型的值//Sets the action's internal data to the given var.//Returns the action group for this action.//If no action group manages this action, then nullptr will be returned.QActionGroup * actionGroup() const;void setActionGroup(QActionGroup * group);//Sets this action group to group.//The action will be automatically added to the group's list of actions.//Actions within the group will be mutually exclusive.//官方注释指出:属于同一组的 QAction将自动互斥bool showStatusText(QObject * object = nullptr); //顾名思义,展示状态栏的文本//Updates the relevant status bar for the// UI represented by object by sending a QStatusTipEvent.//Returns true if an event was sent, otherwise returns false.//If a null widget is specified, the event is sent to the action's parent.QList<QObject *> associatedObjects() const; //比如本按钮既在菜单栏,又在工具栏里。//Returns a list of objects this action has been added to.enum ActionEvent {Trigger, //this will cause the QAction::triggered() signal to be emittedHover //this will cause the QAction::hovered() signal to be emitted.};void activate(ActionEvent event); //用于让QAction发射信号函数。本函数又被下面的函数调用//Sends the relevant signals for ActionEvent event.//Action-based widgets use this API to cause the QAction to emit// signals as well as emitting their own.public Q_SLOTS:// void setEnabled(bool);// void resetEnabled( );// void setVisible(bool);// void setChecked(bool);inline void setDisabled(bool b) { setEnabled(!b); } //借助 setEnabled()实现本函数//用程序的方法使复选框的选中状态发生改变。void toggle (); //Connect to it to change the checked state to its opposite state.void hover () { activate(Hover ); }//This is a convenience slot that calls activate(Hover).void trigger () { activate(Trigger); } //对按钮的实际触发操作,就叫 trigger//This is a convenience slot that calls activate(Trigger).
Q_SIGNALS://这个信号在用户激活某个操作时发出:例如,当用户单击菜单选项、工具栏按钮或按下某个操作的快捷键组合时,// 或者当调用trigger()时。值得注意的是,当调用setChecked()或toggle()时,它不会被释放。void triggered(bool checked = false); //本信号适用于所有的按钮,单选、复选或普通按钮。void hovered(); //用户对按钮的悬停操作。//此信号在用户高亮显示某个操作时发出;//例如,当用户将光标停留在菜单选项、工具栏按钮上或按下某个操作的快捷键组合时。//void enabledChanged(bool enabled );//void changed(); //当很多无关紧要的属性的值发生变化时,会触发本信号。//void checkableChanged(bool checkable);//void visibleChanged();//void toggled(bool); //本属性只适用于复选按钮,具有复选状态的按钮。//This signal is emitted whenever// a checkable action changes its isChecked()status.//This can be the result of a user interaction,// or because setChecked() was called.//As setChecked() changes the QAction,// it emits changed() in addition to toggled().//checked is true if the action is checked, or false if the action is unchecked.}; //完结 class QAction : public QObjectQT_END_NAMESPACE#endif // QACTION_H
(6)
谢谢
相关文章:
QT6 源(105)篇二:阅读与注释 QAction,给出源代码
(5)本源代码来自于头文件 qaction . h : #ifndef QACTION_H #define QACTION_H#include <QtGui/qtguiglobal.h> #if QT_CONFIG(shortcut) # include <QtGui/qkeysequence.h> #endif #include <QtGui/qicon.h> #include &…...
复旦微FMQL调试笔记:PS网口
引言 FPGA,全程现场可编程门阵列,是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。换个简单通俗的介绍方式,就好比一个全能的运动员,FPGA就是这么神奇的可以通过设定而实…...
SpringBoot启动流程深入分析
文章目录 背景启动流程listeners.starting先获取运行监听器获取SpringApplicationRunListener的实例监听器接口从spring.factories中加载数据,这里有本地缓存监听启动发布starting事件 prepareEnvironment准备环境获取或创建环境配置环境 createApplicationContext创…...
Linux - 2.系统命令
1.帮助命令 1.help [root@localhost /]# cp --help1.查看命令的信息和参数2.只能显示shell内部的命令信息3.help命令第一部分是概述,第二部分是参数详解,第三部分是说明和注意 # 使用语法 Usage: cp [OPTION]... [-T] SOURCE DESTor: cp [OPTION]... SOURCE... DIRECTORYor:…...
CSP 2024 提高级第一轮(CSP-S 2024)单选题解析
单选题解析 第 1 题 在 Linux 系统中,如果你想显示当前工作目录的路径,应该使用哪个命令?(A) A. pwd B. cd C. ls D. echo 解析:Linux 系统中,pwd命令可以显示当前工作目录的路径。pwd&#x…...
JavaScript运算符
在JavaScript开发中,运算符是编程的基础工具。它们用于执行各种操作,从简单的数学计算到复杂的逻辑判断。本文将深入探讨JavaScript中的各种运算符,包括算术运算符、比较运算符、布尔运算符、位运算符以及其他一些特殊运算符。 一、算术运算…...
无线信道的噪声与干扰
目录 1. 无线信道(wireless channel)与电磁波 2.1 电磁波的传输(无线信道传输) 2.2 视线(line of sight)传播与天线高度 2. 信道的数学模型 2.1 调制信道模型 2.1.1 加性噪声/加性干扰 2.1.2 乘性噪声/乘性干扰 2.1.3 随参信道/恒参信道 2.2 编码信道模型 2.3 小结 …...
计算机视觉与深度学习 | Python实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)
EMD-CNN-LSTM 1. 环境准备2. 数据生成(示例数据)3. EMD分解4. 数据预处理5. CNN-LSTM模型定义6. 模型训练7. 预测与重构8. 性能评估核心公式说明1. 经验模态分解(EMD)2. CNN-LSTM混合模型参数调优建议扩展方向典型输出示例以下是使用Python实现EMD-CNN-LSTM时间序列预测的完…...
基于Yolov8+PyQT的老人摔倒识别系统源码
概述 随着人工智能技术的普及,计算机视觉在安防领域的应用日益广泛。幽络源本次分享的基于Yolov8PyQT的老人摔倒识别系统,正是针对独居老人安全监护的实用解决方案。该系统通过深度学习算法实时检测人体姿态,精准识别站立、摔倒中等…...
【网络入侵检测】基于Suricata源码分析运行模式(Runmode)
【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全,欢迎关注与评论。 1. 概要 👋 在 Suricata 中抽象出线程、线程模块和队列三个概念:线程类似进程,可多线程并行执行操作;监听、解码、检…...
深入解析:java.sql.SQLException: No operations allowed after statement closed 报错
在 Java 应用程序开发过程中,尤其是涉及数据库交互时,开发者常常会遇到各种各样的异常。其中,java.sql.SQLException: No operations allowed after statement closed是一个较为常见且容易令人困惑的错误。本文将深入剖析这一报错,…...
ARM-Linux 完全入门
1.准备部分 1.1 虚拟机安装 准备VMware软件、ubuntu系统镜像安装过程 VMware安装 破解(自己百度破解码,多试几个网址,会有能用的)Ubuntu安装 配置联网 桥接 虚拟机Ubuntu系统必须能连接到外网,不然不能更新软件安装…...
前端二进制数据指南:从 ArrayBuffer 到高级流处理
前端开发中,二进制数据是处理文件、图像、音视频、网络通信等场景的基础。以下是核心概念和用途的通俗解释: 前端二进制数据介绍 1. 什么是前端二进制数据? 指计算机原始的 0 和 1 格式的数据(比如一张图片的底层代码ÿ…...
深入理解构造函数,析构函数
目录 1.引言 2.构造函数 1.概念 2.特性 3.析构函数 1.概念 2.特性 1.引言 如果一个类中什么都没有,叫作空类. class A {}; 那么我们这个类中真的是什么都没有吗?其实不是,如果我们类当中上面都不写.编译器会生成6个默认的成员函数。 默认成员函数:用户没有显…...
数值分析知识重构
数值分析知识重构 一 Question 请构造一下数值分析中的误差概念以及每一个具体数值方法的误差是如何估计的? 二 Question 已知 n 1 n1 n1个数据点 ( x i , y i ) , i 0 , 1 , ⋯ , n (x_i,y_i),i0,1,\cdots,n (xi,yi),i0,1,⋯,n,请使用多种方法建立数据之间…...
全端同步!ZKmall开源商城如何用B2B2C模板让消费者跨设备购物体验无缝衔接?
在数字化浪潮席卷下,消费者的购物行为不再局限于单一设备。早晨用手机小程序浏览商品,中午在 PC 端对比参数,晚上通过平板下单,跨设备购物已成常态。然而,设备间数据不同步、操作体验割裂等问题,严重影响购…...
Redis Sentinel如何实现高可用?
Redis Sentinel 通过以下核心机制实现高可用: 1. 监控(Monitoring) Sentinel 集群会持续监控主节点(Master)和从节点(Slave)的状态: 定期发送 PING 命令检测节点是否存活…...
环形缓冲区 ring buffer 概述
环形缓冲区 ring buffer 概述 1. 简介 环形缓冲区(ring buffer),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。也称作环形缓冲区(circular buffer),环形队列&…...
Spring源码之解决循环依赖 三级缓存
目录 三级缓存核心原理 循环依赖的解决过程 1. Bean A创建过程中提前曝光工厂 2. Bean B创建时发现依赖A,从缓存获取 3. Bean A继续完成初始化 三级缓存的作用总结 二级缓存为何不够解决缓存依赖? 三级缓存如何解决? 为什么不直接在…...
山东大学计算机图形学期末复习9——CG12上
CG12上 几何管线末端:顶点已组装成基本图元(Primitives,如点、线、三角形)。 主要任务: 裁剪:视锥体是一个三维空间区域(由近裁剪面、远裁剪面和侧面组成),超出该区域的图…...
关于软件测试开发的一些有趣的知识
文章目录 一、什么是测试?二、为什么要软件测试软件测试三、测试的岗位有哪些四 、软件测试和开发的区别五、走测试岗位为什么还要学开发。4、优秀的测试人员具备的素质我为什么走测试岗位 一、什么是测试? 其实这个问题说简单也不简单,说难…...
在Solana上使用 Scaled UI Amount 扩展
本指南提供 Solana Web3.js (Legacy v 1.x) 和 Solana Kit (v 2.x) 版本。选择适当的选项卡以查看你首选库的代码片段和说明: Solana Web3.js (Legacy)Solana Kit 概述 Solana Token-2022 程序 引入了强大的扩展,增强了代币功能,使其超越了…...
线性表之数组与栈详解
线性表之数组与栈详解 前言一、数组(Array)1.1 数组的基本概念1.2 数组的实现与操作1.3 数组的应用场景1.4 数组的优缺点 二、栈(Stack)2.1 栈的基本概念2.2 栈的实现方式2.3 栈的应用场景 2.4 栈的优缺点 三、数组与栈的对比总结…...
车载以太网驱动智能化:域控架构设计与开发实践
title: 车载以太网驱动专用车智能化:域控架构设计与开发实践 date: 2023-12-01 categories: 新能源汽车 tags: [车载以太网, 电子电气架构, 域控架构, 专用车智能化, SOME/IP, AUTOSAR] 引言:专用车智能化转型的挑战与机遇 专用车作为城市建设与工业运输…...
【Redis】redis用作缓存和分布式锁
文章目录 1. 缓存1.1 Redis作为缓存1.2 缓存更新、淘汰策略1.3 缓存预热、缓存穿透、缓存雪崩和缓存击穿1.3.1 缓存预热(preheating)1.3.2 缓存穿透(penetration)1.3.3 缓存雪崩(avalanche)1.3.4 缓存击穿&…...
深度学习中独热编码(One-Hot Encoding)
文章目录 独热编码独热编码的作用独热编码的优点独热编码的缺点场景选择独热编码(PyTorch实现)替代方案 实际使用分析:对对象类型使用独热编码为什么使用独热编码是合适的?📌 场景说明:📌 为什么…...
如何根据竞价数据判断竞价强度,是否抢筹等
竞价强度判断方法 价格变化幅度 观察开盘价与前一交易日收盘价的差距 :如果一只股票在开盘集合竞价阶段价格大幅高于前一交易日收盘价,说明市场对该股票的预期较为积极,可能有资金在主动抬高价格,这是一种较强的竞价强度表现。例如…...
Codex与LangChain结合的智能代理架构:重塑软件开发的未来
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言:当代码生成遇见智能决策 想象以下场景: 凌晨三点:你需要紧急修复一个遗留系统的内存泄漏漏洞,但代码注释缺失且逻辑复杂; 产品经理需求变更:要求在24小时内将现有…...
2025年PMP 学习十八 第11章 项目风险管理 (11.5~11.7)
2025年PMP 学习十八 第11章 项目风险管理 (11.5~11.7) 第11章 项目风险管理 序号过程过程组1规划风险管理规划2识别风险规划3实施定性风险分析规划4实施定量风险分析规划5规划风险应对执行6实施风险应对执行7监控风险监控 文章目录 2025年PMP 学习十八…...
2025年PMP 学习十七 第11章 项目风险管理 (11.1~11.4)
2025年PMP 学习十七 第11章 项目风险管理 (11.1~11.4) 第11章 项目风险管理 序号过程过程组1规划风险管理规划2识别风险规划3实施定性风险分析规划4实施定量风险分析规划5规划风险应对执行6实施风险应对执行7监控风险监控 文章目录 2025年PMP 学习十七…...
impala
Impala,它是 Cloudera 开发的开源 实时 SQL 查询引擎,专为 Hadoop 设计。与 Presto 类似,Impala 用于交互式分析,但架构和设计理念有所不同。以下是 Impala 的核心特点和工作原理: 一、Impala 核心架构 1. 组件组成 …...
湖北理元理律师事务所:债务优化中的双维支持实践解析
在债务压力与生活质量失衡的社会议题下,法律服务机构的功能边界正在从单一的法律咨询向复合型支持延伸。湖北理元理律师事务所通过“法律心理”双维服务模式,探索债务优化与生活保障的平衡路径,其方法论或为行业提供实践参考。 法律框架&…...
Redis设计与实现——Redis命令参考与高级特性
Redis命令参考 数据类型相关命令 SET:设置键值,支持过期时间、不存在/存在条件。GET:获取键值,若键不存在返回 nil。INCR/DECR:将键的整数值增1/减1,键不存在时初始化为0。MSET/MGET:批量设置…...
TCP/UDP协议原理和区别 笔记
从简单到难吧 区别就是TCP一般用于安全稳定的需求,UDP一般用于不那么需要完全数据的需求,比如说直播,视频等。 再然后就是TPC性能慢于UDP。 再然后我们看TCP的原理(三次握手,数据传输,四次挥手࿰…...
JavaScript基础-对象的相关概念
在JavaScript中,对象是核心的数据结构之一,几乎所有的高级功能都围绕着对象展开。理解对象的基本概念、创建方法以及操作方式对于掌握JavaScript至关重要。本文将详细介绍JavaScript中对象的相关概念,包括对象的定义、属性的操作、原型链和面…...
如何通过交流沟通实现闭环思考模式不断实现自身强效赋能-250517
感谢一直以来和我交流沟通的朋友们。 闭环思考 文字部分(25-05-04)这一天是青年节,在这一天与青年朋友交流这个是事先规划好的: “可以猜一猜,博士会被撤销吗?导师会被处理吗?千万不要回复&…...
震荡指标工具
一、引言 - 可视化数字烛台工具是对传统蜡烛图的补充,旨在帮助交易者更有效地进入和退出交易,提高交易利润。 - 通过分析蜡烛图,结合烛台震荡指标,提出了一个辅助视觉工具来辅助交易决策。 二、烛台指标与交易策略 -图表通过平均开…...
【自然语言处理与大模型】大模型(LLM)基础知识④
(1)微调主要用来干什么? 微调目前最主要用在定制模型的自我认知和改变模型对话风格。模型能力的适配与强化只是辅助。 定制模型的自我认知:通过微调可以调整模型对自我身份、角色功能的重新认知,使其回答更加符合自定义…...
返回码的方案对比和思考
前言 一般我们定义 Restful 接口返回码,常见的就是 const 定义 code , StatusToText() 来实现定义 msg, 在封装1 ~ 2个返回方法(success、error)就可以实现,只是突然想到这样设计是违反开闭原则的…...
Flink 的任务槽和槽共享
在 Apache Flink 中,任务槽(Task Slot) 和 槽共享组(Slot Sharing Group) 是资源管理和任务调度的关键机制。它们决定了 Flink 如何在集群中分配资源并执行任务。 一、任务槽(Task Slot) 1. 定…...
实验七 基于Python的数字图像水印算法
一、实验目的 掌握图像水印的应用; 掌握我国版权保护的发展现状; 掌握常见的数字图像水印算法。 二、实验内容 学习内容补充: 数字水印的鲁棒性评价主要采用含水印图像提取出的水印与原始水印的相似程度,使用归一化相关(NC,Nor…...
C语言:在 Win 10 上,gcc 如何编译 gtk 应用程序
在 Windows 10 上使用 g(或 gcc)编译基于 GTK 的 C 语言程序是完全可行的,且相比 Tcc 更为推荐,因为 g(GNU 编译器套件)对 GTK 的支持更加完善,配置也更简单。以下是详细步骤和注意事项…...
Vue.js---watch 的实现原理
4.7 watch 的实现原理 watch本质上就是使用了effect以及options.scheduler 定义watch函数: // watch函数:传入参数source以及回调函数function watch(source , cb) {effect(() > source.foo,{scheduler(){// 回调函数cb()}})}watch接收两个参数分别是source和c…...
Linux_ELF文件
目录 前言: 一、ELF文件的类型 二、ELF文件的组成格式 1. ELF头部(ELF Header) 2. 节头表(Section Header Table) 3. 程序头表(Program Header Table) 4. 节(Sections)与段(Segments) 三、ELF文件从形成到加载轮廓 1、ELF可执行文件形成过程 2、 可执行文…...
磁盘I/O子系统
一、数据写入磁盘流程 当执行向磁盘写入数据操作的时候,会发生如下的一系列基本操作。假设文件数据存在于磁盘扇区上,并且已经被读入到页缓存中。 进程使用write()系统调用写入文件。内核更新映射到文件的page cache。内核线程pdflush负责把页缓存刷入…...
【2025 技术指南】如何创建和配置国际版 Apple ID
想要体验更丰富的应用生态、使用国际版专属服务,或访问更多开发者工具?一个国际版 Apple ID 能帮你实现这些需求。本教程将详细介绍如何注册国际版 Apple ID 并正确配置支付信息,全程操作简单,适合开发者和技术爱好者参考。 一、准…...
C++(20): 文件输入输出库 —— <fstream>
目录 一、 的核心功能 二、核心类及功能 三、核心操作示例 1. 文本文件写入(ofstream) 2. 文本文件读取(ifstream) 3. 二进制文件操作(fstream) 四、文件打开模式 五、文件指针操作 六、错误处理技巧…...
05、基础入门-SpringBoot-HelloWorld
05、基础入门-SpringBoot-HelloWorld ## 一、Spring Boot 简介 **Spring Boot** 是一个用于简化 **Spring** 应用初始搭建和开发的框架,旨在让开发者快速启动项目并减少配置文件。 ### 主要特点 - **简化配置**:采用“约定优于配置”的原则,减…...
深入理解指针(6)
目录 1 sizeof和strlen的对⽐ 1.1 sizeof 编辑1.2strlen 1.3 sizeof 和 strlen的对⽐ 2 数组和指针笔试题解析 2.1 ⼀维数组 编辑 2.2 字符数组 3 指针运算笔试题解析 3.1 题⽬1: 编辑3.2 题目2 3.3 题目3 3.4 题目4 3.5 题目5 3.6 题目6 3.7…...
力扣HOT100之二叉树:108. 将有序数组转换为二叉搜索树
这道题之前做过,思路又给忘了,这道题用递归做是最简单的。 由于得到的数组是有序的,我们只需要取出中间位置的元素medium作为根节点,然后medium左边的剩余元素组成根节点的左子树,medium右边的剩余元素组成根节点的右子…...