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

Android 查看按键信息的常用命令详解

Android 查看按键信息的常用命令详解

文章目录

  • Android 查看按键信息的常用命令详解
    • 一、主要命令:
    • 二、命令详解
      • 1、getevent
      • 2、getevent -l
      • 3、dumsys input
      • 4、cat XXX.kl
      • 4、cat /dev/input/eventX
      • 5、getevent 其他命令
      • 6、input keyevent XX
    • 三、简单示例修改
    • 四、总结
      • 1、查看按键的基本命令
      • 2、按键功能适配和修改

如果需要适配系统按键或者查看按键信息,那么按键基本命令和查看基本命令里面的信息是关键基础。

本文一起学习看出一下按键基本命令和里面的关键信息。

一、主要命令:

	getevent //查看所有键值事件的键值数值getevent -l //查看所有键值事件的键值字符串dumsys input //查看输入事件的相关信息,event对于的名称等信息cat /dev/input/eventX //只查看某个键值事件,Android9或者更新版本会乱码ls -l /system/usr/keylayout //查看系统有哪些kl文件

除了"dumpsys input"这个命令不需要su/root权限,其他命令都是需要获取权限才能获得信息。

简单示例:

C:\Users\As11040>adb shell
atom:/ $ getevent
could not open /dev/input/event2, Permission denied
could not open /dev/input/event0, Permission denied
add device 1: /dev/input/event3name:     "fts_ts"
could not open /dev/input/event1, Permission denied

这里可以看到提示无法读取里面的 dev/input/eventX 节点数据,权限禁止。
所以su权限或者root权限是需要的。
但是也可能跟平台,之前测试其他平台有的是可以 “getevent”,但是cat 里面的节点不行。

二、命令详解

这里用已root 的小米手机讲解。

1、getevent

按下音量减,再按音量加按键的打印:

C:\Users\As11040>adb shell
atom:/ $ su
atom:/ #
130|atom:/ # getevent
//(1)这里可以查看到按键的eventX节点,和节点在内核上的命名名称
add device 1: /dev/input/event2name:     "aw8624_haptic"
add device 2: /dev/input/event0name:     "ACCDET"
add device 3: /dev/input/event3name:     "fts_ts"
add device 4: /dev/input/event1name:     "mtk-kpd"//(2)按下音量减按键,这里第二列的0001 对应的数据才是有用的数据,可以看到音量减键对应的按键键值是0x72
/dev/input/event1: 0001 0072 00000001 //(3)1是按下
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 0072 00000000 //(4)0是抬起
/dev/input/event1: 0000 0000 00000000//(5)按下音量加按键,可以看到音量加键对应的按键键值是0x73
/dev/input/event1: 0001 0073 00000001
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0001 0073 00000000
/dev/input/event1: 0000 0000 00000000

getevent 作为查看键值最常用的命令,可以查看到kl文件对于的按键的键值。
getevent后获取到有用的信息:

(1)系统触摸,按键,键盘等输入设备所有的数据节点eventX以及节点对应的名称命名name
这个节点的名称有些情况还是非常重要的,具体选择kl文件的时候可能会判断到是否存在对应的kl文件。
(2)按键键值对应的16进制数值
记住这里显示是16进制的键值,但是按键配置文件kl中,显示的是10进制的数值
比如音量减 0x72 对应10进制值是16*7+2=114,音量加 0X73-->115
(3)按键的节点数据在 "/dev/input/event1" 里面
(4)底层对该节点的命名名称是 "mtk-kpd"

这个键值数值有啥用呢,其实是对应kl文件找到事件名称,给底层发送事件。

后面会有关联介绍。

2、getevent -l

//(1)这里可以查看到按键的eventX节点,和节点在内核上的命名名称
130|atom:/ # getevent -l
add device 1: /dev/input/event2name:     "aw8624_haptic"
add device 2: /dev/input/event0name:     "ACCDET"
add device 3: /dev/input/event3name:     "fts_ts"
add device 4: /dev/input/event1name:     "mtk-kpd"//(2)按下音量减按键,这里第三列的DOWN/UP对应的数据才是有用的数据,可以看到音量减键对应的按键字符串是 KEY_VOLUMEDOWN
/dev/input/event1: EV_KEY       KEY_VOLUMEDOWN       DOWN // (3)kl文件中定义的是 VOLUMEDOWN 
/dev/input/event1: EV_SYN       SYN_REPORT           00000000
/dev/input/event1: EV_KEY       KEY_VOLUMEDOWN       UP
/dev/input/event1: EV_SYN       SYN_REPORT           00000000/dev/input/event1: EV_KEY       KEY_VOLUMEUP         DOWN // (4)kl文件中定义的是 KEY_VOLUMEUP
/dev/input/event1: EV_SYN       SYN_REPORT           00000000
/dev/input/event1: EV_KEY       KEY_VOLUMEUP         UP
/dev/input/event1: EV_SYN       SYN_REPORT           00000000

“getevent -l” 这个命名一般人不怎么使用,但是用来查看按键事件的意义还是有价值的。
KEY_XXX 的 XXX 字符串是发送给底层的命令。
VOLUMEDOWN 就是音量减,VOLUMEUP就是音量加。

3、dumsys input

这个命令里面信息最多最具体,属于input系统的默认配置信息。

主要相关信息如下:

atom:/ # dumpsys input
INPUT MANAGER (dumpsys input)Input Manager State:Interactive: falseSystem UI Visibility: 0x8008Pointer Speed: 0Pointer Gestures Enabled: trueShow Touches: falsePointer Capture Enabled: falseEvent Hub State: //(1)事件状态信息是主要关注的BuiltInKeyboardId: -2Devices: //(2)Devices里面的每个信息都是对应不同的节点信息-1: VirtualClasses: 0x40000023Path: <virtual> (3)关注Path字符串,就是节点的位置,这里是虚拟,不清楚具体意义Enabled: trueDescriptor: a718a782d34bc767f4689c232d64d527998ea7fdLocation:ControllerNumber: 0UniqueId: <virtual>Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000KeyLayoutFile: /system/usr/keylayout/Generic.klKeyCharacterMapFile: /system/usr/keychars/Virtual.kcmConfigurationFile:HaveKeyboardLayoutOverlay: falseVideoDevice: <none>1: aw8624_hapticClasses: 0x00000200Path: /dev/input/event2Enabled: trueDescriptor: 65195a4ab35c59e79bbba55177be90fc42ed3ae6Location:ControllerNumber: 0UniqueId:Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000KeyLayoutFile:KeyCharacterMapFile:ConfigurationFile:HaveKeyboardLayoutOverlay: falseVideoDevice: <none>2: ACCDETClasses: 0x00000081Path: /dev/input/event0Enabled: trueDescriptor: 1c78f7e0d16d4dbc8d3ab93943523f379203f90bLocation:ControllerNumber: 0UniqueId:Identifier: bus=0x0019, vendor=0x0000, product=0x0000, version=0x0000KeyLayoutFile: /system/usr/keylayout/Generic.klKeyCharacterMapFile: /system/usr/keychars/Generic.kcmConfigurationFile:HaveKeyboardLayoutOverlay: falseVideoDevice: <none>3: fts_tsClasses: 0x00000015Path: /dev/input/event3Enabled: trueDescriptor: a1cc21cba608c55d28d6dd2b1939004df0e0c756Location:ControllerNumber: 0UniqueId:Identifier: bus=0x0018, vendor=0x0000, product=0x0000, version=0x0000KeyLayoutFile: /system/usr/keylayout/Generic.klKeyCharacterMapFile: /system/usr/keychars/Generic.kcmConfigurationFile:HaveKeyboardLayoutOverlay: falseVideoDevice: <none>4: mtk-kpd //(4)按键事件的节点命名名称Classes: 0x00000001Path: /dev/input/event1 //(5)按键事件的节点位置,这个才是主要的,名称可以不可,但是节点必须找对Enabled: trueDescriptor: f0d2e427e7a05eb6d316f5e14800c5ac7b6aee79Location:ControllerNumber: 0UniqueId:Identifier: bus=0x0019, vendor=0x2454, product=0x6500, version=0x0010 //(6)各版本号,寻找kl使用到KeyLayoutFile: /system/usr/keylayout/mtk-kpd.kl //(7)实际起作用的kl文件KeyCharacterMapFile: /system/usr/keychars/Generic.kcmConfigurationFile:HaveKeyboardLayoutOverlay: falseVideoDevice: <none>Unattached video devices:<none>

"dumpsys input"命令的信息是很多的,这里只显示和分析主要的。
查看和分析“dumpsys input”日志思路:

1、根据getevent 获取到事件的节点,比如这里按键节点是 event1
2、“dumpsys input”查看需要查找的节点的信息,比如这里的 event1 和 名称 mtk-kpd
3、查看里面的真正起作用的kl文件,比如这里是 /system/usr/keylayout/mtk-kpd.kl

其实到这里主要信息已经看完了,但是要怎么理解和运用是要一定基础的。

后面会有个别修改示例分析。

4、cat XXX.kl

查询都实际使用的kl文件后,可以cat 查看里面的文件

比如cat上面的 /system/usr/keylayout/mtk-kpd.kl 文件查看到部分信息如下:


key 56    ALT_LEFT
key 100   ALT_RIGHT
key 42    SHIFT_LEFT
key 54    SHIFT_RIGHT
key 57    SPACE
key 58    SOFT_RIGHT
key 465      LAST_CHANNEL
key 402      CHANNEL_UP
key 403      CHANNEL_DOWN
key 115      VOLUME_UP //音量加
key 114      VOLUME_DOWN //音量减
key 113      VOLUME_MUTE
key 28       DPAD_CENTER
key 103      DPAD_UP
key 108      DPAD_DOWN
key 105      DPAD_LEFT
key 106      DPAD_RIGHT
key 158      BACK //返回
key 139      MENU //菜单
key 102      HOME //主页
key 398      PROG_RED
key 399      PROG_GREEN
key 400      PROG_YELLOW
key 401      PROG_BLUE
key 165      MEDIA_PREVIOUS
key 163      MEDIA_NEXT
key 168      MEDIA_REWIND
key 208      MEDIA_FAST_FORWARD
key 164      MEDIA_PLAY_PAUSE
key 166      MEDIA_STOP
key 167      MEDIA_RECORDkey 155      ENVELOPE
key 12       MINUS
key 13       EQUALS
key 215      AT
key 130      ZOOM_IN
key 131      ZOOM_OUT
#key 15       BACK
key 466      TV_INPUT
key 111      PAGE_UP
key 112      PAGE_DOWN
key 358      INFO
key 213      CAPTIONS
key 214      MEDIA_AUDIO_TRACK
key 216      NUM_LOCK
key 217      GUIDE

4、cat /dev/input/eventX

这个是在手机的Android19-13的设备上查看会乱码,不清楚是Android 版本问题还是具体系统代码问题?
很久以前这样看过,打印的和getevent 的日志是一样的,但是只打印某个类型的数据。

其实要打印某个event的事件,是可以通过grep 过滤显示的。
比如需要只显示 按键事件的日志:

getevent | grep event1

5、getevent 其他命令

1|console:/ # getevent -help                                                   
Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device] //这里提示可以多个一起打印-t: show time stamps  //显示时间戳-n: don't print newlines  //不要打印换行符-s: print switch states for given bits //打印给定位的开关状态-S: print all switch states  //打印所有开关状态-v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64) //详细掩码(错误=1,dev=2,名称=4,信息=8,错误=16,位置事件=32,道具=64)-d: show HID descriptor, if available //显示HID描述符(如果可用)-p: show possible events (errs, dev, name, pos. events) //显示可能的事件(错误、开发、名称、位置事件)-i: show all device info and possible events //显示所有设备信息和可能的事件 , 包含dumpsys input 的主要信息-l: label event types and names in plain text //用纯文本标记事件类型和名称-q: quiet (clear verbosity mask) //安静(清晰冗长的掩码)-c: print given number of events then exit //打印给定数量的事件,然后退出-r: print rate events are received 接收到打印速率事件
1|console:/ # 

上面命令可以一次打印多个,大部分都没有过!

6、input keyevent XX

input命令估计也很多人用过,用得较多的是input text XX,input keyevent XX估计用得比较少。

input keyevent XX //这里的XX数值就是底层的数值,而不是上层kl里面定义的数值

比如:

input keyevent 24 //音量加,上层是 115
input keyevent 25 //音量减,上层是 114
input keyevent 3 //Home.上层是 102

用串口输入的事件,getevent 打印是不会再收到的。

上层和底层数值 上是没有任何关联的,都是在两个不同的文件定义各自的数值(从1开始一直完后加),是使用字符串关联起来的。

三、简单示例修改

在实际场景中,有可能需要替换掉某个按键的具体功能,
比如把键盘“回车”按键的功能换成“确定”功能;去除Home按键,或者Home按键换成其他功能。

这里简单修改一下,音量减按键修改成音量加按键的功能:

修改:/system/usr/keylayout/mtk-kpd.kl key 115      VOLUME_UP //音量加
key 114      VOLUME_UP //音量减,修改成音量加功能字符串

实现修改的方式可以pull文件后再push进去或者使用busybox vi XXX 功能,都是需要root权限的!

这里只是测试验证功能,实际没啥这样改的场景哈。

重启设备后,按下音量加或者音量减按键,音量都是加的。证明修改是ok的。

这个也说明kl 文件中,字符串指令 才是底层接收的指令。

上层这里定义的 key 115 只是上层对应的数值,
底层其实也是有自己的数值的比如音量加按键底层数值是 24。

如果要添加自定义键值可以参考:https://www.likecs.com/show-258237.html

四、总结

1、查看按键的基本命令

	getevent //查看所有键值事件的键值数值getevent -l //查看所有键值事件的键值字符串dumsys input //查看输入事件的相关信息,event对于的名称等信息

2、按键功能适配和修改

1、通过"getevent"查看事件节点和节点名称;
2、通过"dumpsys input"查看节点的具体使能的kl文件;
3、修改kl文件适配功能;

相关文章:

Android 查看按键信息的常用命令详解

Android 查看按键信息的常用命令详解 文章目录 Android 查看按键信息的常用命令详解一、主要命令&#xff1a;二、命令详解1、getevent2、getevent -l3、dumsys input4、cat XXX.kl4、cat /dev/input/eventX5、getevent 其他命令6、input keyevent XX 三、简单示例修改四、总结…...

【Java 基础篇】Properties 结合集合类的使用详解

Java 中的 Properties 类是一个常见的用于管理配置信息的工具&#xff0c;它可以被看作是一种键值对的集合。虽然 Properties 通常用于处理配置文件&#xff0c;但它实际上也可以作为通用的 Map 集合来使用。在本文中&#xff0c;我们将详细探讨如何使用 Properties 作为 Map 集…...

数字孪生体标准编程

数字孪生体标准 括ISO TC184/SC4正在制定数字孪生制造标准ISO 23247、ISO/IEC JTC1/AG11正在推动数字孪生体标准、IEEE P2806正在做有关“数字表达”的标准。赢家通吃的标准战 卡尔夏皮罗和哈尔范里安撰写了《信息规则&#xff1a;网络经济战略指南》&#xff08;Information R…...

力扣 -- 394. 字符串解码

解题方法&#xff1a; 参考代码&#xff1a; class Solution{ public:string decodeString(string s){stack<string> sst;stack<int> dst;//防止字符串栈为空的时候再追加字符串到栈顶元素sst.push("");int n s.size();int i 0;while(i<n)//最好不…...

面试官:什么是虚拟DOM?如何实现一个虚拟DOM?说说你的思路

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、什么是虚拟DOM 二、为什么需要虚拟DOM 三、如何实现虚拟DOM 小结 一、什么是虚拟DOM 虚拟 DOM &#xff08…...

Ubuntu安装中文拼音输入法

ubuntu安装中文拼音输入法 ubuntu版本为23.04 1、安装中文语言包 首先安装中文输入法必须要让系统支持中文语言&#xff0c;可以在 Language Support 中安装中文语言包。 添加或删除语音选项&#xff0c;添加中文简体&#xff0c;然后会有Applying changes的对话框&#x…...

高端知识竞赛中用到的软件和硬件有哪些

现在单位搞知识竞赛&#xff0c;已不满足于用PPT放题&#xff0c;找几个简单的抢答器、计分牌弄一下了&#xff0c;而是对现场效果和科技感要求更高了。大屏要分主屏侧屏&#xff0c;显示内容要求丰富炫酷&#xff1b;选手和评委也要用到平板等设备&#xff1b;计分要大气些&am…...

Vue 3.3 发布

本文为翻译 原文地址&#xff1a;宣布推出 Vue 3.3 |The Vue Point (vuejs.org) 今天我们很高兴地宣布 Vue 3.3 “Rurouni Kenshin” 的发布&#xff01; 此版本侧重于开发人员体验改进 - 特别是 TypeScript 的 SFC <script setup> 使用。结合 Vue Language Tools&…...

算法|图论 3

LeetCode 130- 被围绕的区域 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目描述&#xff1a;给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O &#xff0c;找到所有被 X 围绕的区域&#xff0c;并将这些区域…...

【数据结构】二叉树的层序遍历(四)

目录 一&#xff0c;层序遍历概念 二&#xff0c;层序遍历的实现 1&#xff0c;层序遍历的实现思路 2&#xff0c;创建队列 Queue.h Queue.c 3&#xff0c;创建二叉树 BTree.h BTree.c 4&#xff0c;层序遍历的实现 一&#xff0c;层序遍历概念 层序遍历&#xff1a;除了先序…...

macOS文件差异比较最佳工具:Beyond Compare 4

Beyond Compare for mac是一款Scooter Software研发的文件同步对比工具。你可以选择针对多字节的文本、文件夹、源代码&#xff0c;甚至是支持比对adobe文件、pdf文件或是整个驱动器&#xff0c;检查其文件大小、名称、日期等信息。你也可以选择使用Beyond Compare合并两个不同…...

Windows+Pycharm 如何创建虚拟环境

当我们开发一个别人的项目的时候,因为项目里有很多特有的包,比如 Pyqt5.我们不想破坏电脑上原来的包版本,这个时候,新建一个虚拟环境,专门针对这个项目就很有必要了. 简略步骤: 1.新建虚拟环境 1.打开 pycharm 终端(Terminal)安装虚拟环境工具: pip install virtualenv2.创…...

vant 按需导入 vue2

vant 按需导入 vue2 1、通过npm安装 # Vue 3 项目&#xff0c;安装最新版 Vant&#xff1a; npm i vant -S# Vue 2 项目&#xff0c;安装 Vant 2&#xff1a; npm i vantlatest-v2 -S2、自动按需引入组件 babel-plugin-import 是一款 babel 插件&#xff0c;它会在编译过程中…...

Java手写分治算法和分治算法应用拓展案例

Java手写分治算法和分治算法应用拓展案例 1. 算法思维导图 以下是用Mermanid代码表示的分治算法的实现原理&#xff1a; #mermaid-svg-nvJwIm97kPHEXQOR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-nvJwIm97kP…...

学习 CodeWhisperer 的一些总结

目前一些常见的的 AI 工具 GitHub Copilot&#xff1a;GitHub 与 OpenAI 合作开发的一个人工智能助手。 Codeium&#xff1a;是一个免费的人工智能驱动的代码生成工具 Tabnine&#xff1a;一个自动代码生成工具&#xff0c;免费版本非常有限&#xff0c;只提供简短的代码完成…...

JavaScript 中的 `this` 指向问题与其在加密中的应用

JS中的 this 关键字是一个非常重要的概念&#xff0c;它在不同情况下会指向不同的对象或值。在本文中&#xff0c;我们将深入探讨 JavaScript 中 this 的各种情况&#xff0c;并思考如何将其应用于 JS加密中的一些有趣用途。 1. 全局上下文中的 this 在全局上下文中&#xff…...

深入理解算法的时间复杂度

文章目录 时间复杂度的定义时间复杂度的分类时间复杂度分析常见数据结构和算法的时间复杂度常见数据结构常见算法 常见排序算法说明冒泡排序(Bubble Sort)快速排序(Quick Sort)归并排序(Merge Sort)堆排序(Heap Sort) 时间复杂度的定义 时间复杂度就是一种用来描述算法在输入规…...

2023年度教育部人文社会科学研究一般项目评审结果,已公布!

【SciencePub学术】 9月15日&#xff0c;教育部社科司公示了2023年度教育部人文社会科学研究一般项目评审结果&#xff0c;共3482项。 其中&#xff0c;规划基金、青年基金、自筹经费项目共3029项通过专家评审&#xff1b;西部和边疆地区项目200项&#xff0c;新疆项目20项&a…...

十一、MySql的事务(上)

文章目录 一、引入&#xff08;一&#xff09;CURD不加控制&#xff0c;会有什么问题&#xff1f;&#xff08;二&#xff09;CURD满足什么属性&#xff0c;能解决上述问题&#xff1f; 二、什么是事务&#xff1f;三、事务的特性&#xff08;一&#xff09;原子性&#xff1a;…...

时间序列分析1--生成和导出时间序列数据

时间序列数据的生成 直接录入 1.行录入 ts.(price,startc(2015,1),frequency 12) # price为时间序列变量&#xff0c;start为起始读入时间 frequncy指定每年读入的数据的频率&#xff0c;frequncy4为季度数据、frequncy52为星期数据 2.列录入 scan() 1:101 ....6:7 7:…...

HarmonyOS应用开发—资源分类与访问

应用开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&#xff0c;在不同的设备或配置中&#xff0c;这些资源的值可能不同。 应用资源&#xff1a;借助资源文件能力&#xff0c;开发者在应用中自定义资源&#xff0c;自行管理这些资源在不同的设备或配置中的表…...

C++中的转换构造函数

在 C/C++ 中,不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换。 自动类型转换示例: int a = 6;a = 7.5 + a; 编译器对 7.5 是作为 double 类型处理的,在求解表达式时,先将 a 转换…...

JSP ssm 特殊人群防走失系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP ssm 特殊人群防走失系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源 代码和数据库&#xff0c;系统主要…...

怎么实现一个登录时需要输入验证码的功能

今天给项目换了一个登录页面&#xff0c;而这个登录页面设计了验证码&#xff0c;于是想着把这个验证码功能实现一下吧。 这篇文章就如何实现登录时的验证码的验证功能结合代码进行详细地介绍&#xff0c;以及介绍功能实现的思路。 目录 页面效果 实现思路 生成验证码的控制…...

在android工程中新建Android模块报错

复制了复制正常的build.gradle文件&#xff0c;然后把theme里面的东西改成了下面这个样就好了 <resources xmlns:tools"http://schemas.android.com/tools"><!-- Base application theme. --><style name"Theme.JiQuan" parent"Theme…...

电脑桌面的复选框如何取消

电脑桌面图标的复选框如何取消 1. 概述2. 去掉图标的复选框方法结束语 1. 概述 当你拿到新的电脑开机后&#xff0c;发现桌面上软件应用的图标左上角有个小框&#xff0c;每次点击图标都会显示&#xff0c;并且点击图标时&#xff0c;小框还会打上√&#xff1b; 这个小框的…...

【Unity每日一记】资源加载相关和检测相关

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…...

【数据结构】长篇详解堆,堆的向上/向下调整算法,堆排序及TopK问题

文章目录 堆的概念性质图解 向上调整算法算法分析代码整体实现 向下调整算法算法分析整体代码实现 堆的接口实现初始化堆销毁堆插入元素删除元素打印元素判断是否为空取首元素实现堆 堆排序创建堆调整堆整合步骤 TopK问题 堆的概念 堆就是将一组数据所有元素按完全二叉树的顺序…...

DAQ高频量化平台:引领Ai高频量化交易模式变革

近年来&#xff0c;数字货币投资市场掀起了一股热潮&#xff0c;以&#xff08;BTC&#xff09;为代表的区块链技术带来了巨大的商业变革。数字资产的特点&#xff0c;如无国界、无阶级、无门槛、高流动性和高透明度&#xff0c;吸引了越来越多的人们的关注和认可&#xff0c;创…...

vue3 element plus获取el-cascader级联选择器选中的当前结点的label值 附vue2获取当前label

各位大佬&#xff0c;有时我们在处理级联选择组件数据时&#xff0c;不仅需要拿到id,还需要拿到label名称&#xff0c;但是通常组件直接绑定的是id,所以就需要我们用别的方法去拿到label,此处官方是有这个方法的&#xff0c;具体根据不同的element 版本进行分别处理。 VUE3 e…...

wordpress页面过期/东莞百度推广排名优化

文章目录 零、写在前面一、概念定义1、分解各位数字2、X进制 转 十进制3、十进制 转 X进制二、题目描述三、算法详解四、源码剖析五、推荐专栏六、习题练习零、写在前面 这是《算法零基础100讲》 专栏打卡学习的第 19 天了。如果觉得本专栏太贵无法承受,在博主主页添加博主好友…...

做落地页的网站/怎么制作一个简单的网页

♣题目部分在Oracle中&#xff0c;基表COL_USAGE$的作用是什么&#xff1f;♣答案部分从Oracle 9i开始引入了SYS.COL_USAGE$表用来跟踪列的使用情况&#xff0c;该功能通过隐含参数“_COLUMN_TRACKING_LEVEL”来控制。若隐含参数“_COLUMN_TRACKING_LEVEL”的值为0则取消该功能…...

wordpress 默认端口/网页设计网站

static作用&#xff08;修饰函数、局部变量、全局变量&#xff09;在C语言中&#xff0c;static的字面意思很容易把我们导入歧途&#xff0c;其实它的作用有三条。 &#xff08;1&#xff09;先来介绍它的第一条也是最重要的一条&#xff1a;隐藏。 当我们同时编译多个文件时&a…...

erp网站建设方案/百度广告一天多少钱

在这篇文章中&#xff0c;我们将谈谈如何在Angular JS中将XML文件转换为JSON。大家都知道Angular JS是开发应用程序的JavaScript框架。所以基本上Angular JS期望得 到的响应式JSON格式的。因此&#xff0c;在你开始对数据进行操作之前&#xff0c;建议返回JSON格式的数据。在这…...

wordpress安全漏洞/什么是seo推广

“应用软件创造客户价值”是我们的经营理念。我们强调客户的价值&#xff0c;因为软件企业生存的基础是客户的价值&#xff0c;如果不能为客户带来价值的软件&#xff0c;软件也就没有价值。所以我们把这样的理念作为公司经营的发展方向&#xff0c;我们始终把公司的价值体系建…...

企业推广软件/seo软件工具

分段式多级离心泵的工作原理&#xff1a;分段式多级离心泵中部的每个叶轮都配有一个导向轮&#xff0c;该导向轮是一个固定盘。 其功能是通过减速将从叶轮喷出的液体的部分动能转换为静能&#xff0c;并收集沿径向返回的液体&#xff0c;将其引导至下一个叶轮组。 叶轮搜索的前…...