Arthas(阿尔萨斯)--(二)

目录

一、Arthas学习

1、JVM相关命令一

1、dashboard

2、thread

3、jvm

4、sysprop


一、Arthas学习

Arthas(阿尔萨斯)--(一)

Arthas代码开源地址

1、JVM相关命令一

1、dashboard

dashboard:显示当前系统的实时数据面板,按q或ctrl+c退出

ID: Java 级别的线程 ID,注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。
NAME: 线程名
GROUP: 线程组名
PRIORITY: 线程优先级, 1~10 之间的数字,越大表示优先级越高
STATE: 线程的状态
CPU%: 线程的 cpu 使用率。比如采样间隔 1000ms,某个线程的增量 cpu 时间为 100ms,则 cpu 使用率=100/1000=10%
DELTA_TIME: 上次采样之后线程运行增量 CPU 时间,数据格式为秒
TIME: 线程运行总 CPU 时间,数据格式为分:秒
INTERRUPTED: 线程当前的中断位状态
DAEMON: 是否是 daemon 线程

2、thread

thread:查看当前JVM的线程堆栈信息

参数:数字:线程id
     [n:]:指定最忙的前N个线程并打印堆栈

[arthas@14156]$ thread -n 3
"main" Id=1 cpuUsage=0.0% deltaTime=0ms time=218ms TIMED_WAITING
    at java.base@21.0.1/java.lang.Thread.sleep0(Native Method)
    at java.base@21.0.1/java.lang.Thread.sleep(Thread.java:558)
    at java.base@21.0.1/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446)
    at app//demo.MathGame.main(MathGame.java:17)

"Reference Handler" Id=9 cpuUsage=0.0% deltaTime=0ms time=0ms RUNNABLE
    at java.base@21.0.1/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
    at java.base@21.0.1/java.lang.ref.Reference.processPendingReferences(Reference.java:246)
    at java.base@21.0.1/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208)

"Finalizer" Id=10 cpuUsage=0.0% deltaTime=0ms time=0ms WAITING on java.lang.ref.NativeReferenceQueue$Lock@2b55402b
    at java.base@21.0.1/java.lang.Object.wait0(Native Method)
    -  waiting on java.lang.ref.NativeReferenceQueue$Lock@2b55402b
    at java.base@21.0.1/java.lang.Object.wait(Object.java:366)
    at java.base@21.0.1/java.lang.Object.wait(Object.java:339)
    at java.base@21.0.1/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48)
    at java.base@21.0.1/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158)
    at java.base@21.0.1/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89)
    at java.base@21.0.1/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173)

[arthas@14156]$

     [b]:找出当前阻塞其他线程的线程

有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题, arthas 提供了thread -b

运行一个死锁程序

public class DeadLock {

    static Object a = new Object();
    static Object b = new Object();

    public static void main(String[] args) {
        new Thread(() -> {
            synchronized (a) {
                System.out.println(Thread.currentThread().getName() + "持有锁a,试图获取锁b");
                synchronized (b) {
                    System.out.println(Thread.currentThread().getName() + "持有锁b");
                }
            }
        }, "t1").start();
        new Thread(() -> {
            synchronized (b) {
                System.out.println(Thread.currentThread().getName() + "持有锁b,试图获取锁a");
                synchronized (a) {
                    System.out.println(Thread.currentThread().getName() + "持有锁a");
                }
            }
        }, "t2").start();
    }

}

运行arthas,粘附到这个死锁程序中

[arthas@11400]$ thread -b
"t2" Id=34 BLOCKED on java.lang.Object@1e8eb080 owned by "t1" Id=33
    at app//com.lwz.xxx.DeadLock.lambda$main$1(DeadLock.java:21)
    -  blocked on java.lang.Object@1e8eb080
    -  locked java.lang.Object@6fe0e9fb <---- but blocks 1 other threads!
    at app//com.lwz.controller.DeadLock$$Lambda/0x0000020111003418.run(Unknown Source)
    at java.base@21.0.1/java.lang.Thread.runWith(Thread.java:1596)
    at java.base@21.0.1/java.lang.Thread.run(Thread.java:1583)

[arthas@11400]$

     [i <value>]:指定cpu占比统计的采样间隔,单位为毫秒

thread -i 1000 : 统计最近 1000ms 内的线程 CPU 时间。

thread -n 3 -i 1000 : 列出 1000ms 内最忙的 3 个线程栈
[arthas@14156]$ thread -i 1000
Threads Total: 16, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0
ID   NAME                          GROUP          PRIORITY  STATE    %CPU      DELTA_TIM TIME      INTERRUPT DAEMON
1    main                          main           5         TIMED_WA 0.0       0.000     0:0.234   false     false
9    Reference Handler             system         10        RUNNABLE 0.0       0.000     0:0.000   false     true
10   Finalizer                     system         8         WAITING  0.0       0.000     0:0.000   false     true
11   Signal Dispatcher             system         9         RUNNABLE 0.0       0.000     0:0.000   false     true
12   Attach Listener               system         5         RUNNABLE 0.0       0.000     0:0.046   false     true
30   Notification Thread           system         9         RUNNABLE 0.0       0.000     0:0.000   false     true
31   Common-Cleaner                InnocuousThrea 8         TIMED_WA 0.0       0.000     0:0.000   false     true
33   arthas-timer                  system         5         WAITING  0.0       0.000     0:0.000   false     true
59   arthas-NettyHttpTelnetBootstr system         5         RUNNABLE 0.0       0.000     0:0.046   false     true
60   arthas-NettyWebsocketTtyBoots system         5         RUNNABLE 0.0       0.000     0:0.000   false     true
61   arthas-NettyWebsocketTtyBoots system         5         RUNNABLE 0.0       0.000     0:0.000   false     true
62   arthas-shell-server           system         5         TIMED_WA 0.0       0.000     0:0.000   false     true
63   arthas-session-manager        system         5         TIMED_WA 0.0       0.000     0:0.000   false     true
64   arthas-UserStat               system         5         WAITING  0.0       0.000     0:0.000   false     true
66   arthas-NettyHttpTelnetBootstr system         5         RUNNABLE 0.0       0.000     0:0.140   false     true
67   arthas-command-execute        system         5         RUNNABLE 0.0       0.000     0:0.046   false     true

[arthas@14156]$ thread -n 3 -i 1000
"main" Id=1 cpuUsage=0.0% deltaTime=0ms time=234ms TIMED_WAITING
    at java.base@21.0.1/java.lang.Thread.sleep0(Native Method)
    at java.base@21.0.1/java.lang.Thread.sleep(Thread.java:558)
    at java.base@21.0.1/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446)
    at app//demo.MathGame.main(MathGame.java:17)


"Reference Handler" Id=9 cpuUsage=0.0% deltaTime=0ms time=0ms RUNNABLE
    at java.base@21.0.1/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
    at java.base@21.0.1/java.lang.ref.Reference.processPendingReferences(Reference.java:246)
    at java.base@21.0.1/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208)


"Finalizer" Id=10 cpuUsage=0.0% deltaTime=0ms time=0ms WAITING on java.lang.ref.NativeReferenceQueue$Lock@2b55402b
    at java.base@21.0.1/java.lang.Object.wait0(Native Method)
    -  waiting on java.lang.ref.NativeReferenceQueue$Lock@2b55402b
    at java.base@21.0.1/java.lang.Object.wait(Object.java:366)
    at java.base@21.0.1/java.lang.Object.wait(Object.java:339)
    at java.base@21.0.1/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48)
    at java.base@21.0.1/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158)
    at java.base@21.0.1/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89)
    at java.base@21.0.1/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173)

例:
thread --state WAITING :查看线程中处于等待状态的线程

3、jvm

与JVM相关的信息

[arthas@14156]$ jvm
 RUNTIME
-----------------------------------------------------------------------------------------------------------------------
 MACHINE-NAME                      14156@lwzoozyc
 JVM-START-TIME                    2023-11-13 23:10:24
 MANAGEMENT-SPEC-VERSION           4.0
 SPEC-NAME                         Java Virtual Machine Specification
 SPEC-VENDOR                       Oracle Corporation
 SPEC-VERSION                      21
 VM-NAME                           Java HotSpot(TM) 64-Bit Server VM
 VM-VENDOR                         Oracle Corporation
 VM-VERSION                        21.0.1+12-LTS-29
 INPUT-ARGUMENTS                   []
 CLASS-PATH                        math-game.jar
 BOOT-CLASS-PATH
 LIBRARY-PATH                      C:\Program Files\Java\jdk-21\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Win
                                   dows;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Comm
                                   on Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wb
                                   em;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Prog
                                   ram Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation
                                   \NVIDIA NvDLISR;"C:\Program Files\Java\jdk-21\bin;C:\Program Files\Java\jdk-21\jre\
                                   bin;";C:\Program Files\Go\bin;C:\Program Files\Go\bin;C:\Program Files\PuTTY\;C:\Pr
                                   ogram Files\Git\cmd;C:\Program Files\TortoiseGit\bin;C:\Program Files\Microsoft VS
                                   Code\bin;C:\Program Files\Java\jdk-21\bin;C:\Users\Administrator\AppData\Local\Micr
                                   osoft\WindowsApps;C:\Users\Administrator\go\bin;C:\Program Files\JetBrains\GoLand 2
                                   023.2\bin;;C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.3\bin;;.

-----------------------------------------------------------------------------------------------------------------------
 CLASS-LOADING
-----------------------------------------------------------------------------------------------------------------------
 LOADED-CLASS-COUNT                4623
 TOTAL-LOADED-CLASS-COUNT          4623
 UNLOADED-CLASS-COUNT              0
 IS-VERBOSE                        false

-----------------------------------------------------------------------------------------------------------------------
 COMPILATION
-----------------------------------------------------------------------------------------------------------------------
 NAME                              HotSpot 64-Bit Tiered Compilers
 TOTAL-COMPILE-TIME                3011
 [time (ms)]

-----------------------------------------------------------------------------------------------------------------------
 GARBAGE-COLLECTORS
-----------------------------------------------------------------------------------------------------------------------
 G1 Young Generation               name : G1 Young Generation
 [count/time (ms)]                 collectionCount : 1
                                   collectionTime : 11
 G1 Concurrent GC                  name : G1 Concurrent GC
 [count/time (ms)]                 collectionCount : 0
                                   collectionTime : 0
 G1 Old Generation                 name : G1 Old Generation
 [count/time (ms)]                 collectionCount : 0
                                   collectionTime : 0

-----------------------------------------------------------------------------------------------------------------------
 MEMORY-MANAGERS
-----------------------------------------------------------------------------------------------------------------------
 CodeCacheManager                  CodeHeap 'non-nmethods'
                                   CodeHeap 'profiled nmethods'
                                   CodeHeap 'non-profiled nmethods'
 Metaspace Manager                 Metaspace
                                   Compressed Class Space
 G1 Young Generation               G1 Eden Space
                                   G1 Survivor Space
                                   G1 Old Gen
 G1 Concurrent GC                  G1 Old Gen
 G1 Old Generation                 G1 Eden Space
                                   G1 Survivor Space
                                   G1 Old Gen

-----------------------------------------------------------------------------------------------------------------------
 MEMORY
-----------------------------------------------------------------------------------------------------------------------
 HEAP-MEMORY-USAGE                 init : 1073741824(1.0 GiB)
 [memory in bytes]                 used : 27318272(26.1 MiB)
                                   committed : 1073741824(1.0 GiB)
                                   max : 17146314752(16.0 GiB)
 NO-HEAP-MEMORY-USAGE              init : 7667712(7.3 MiB)
 [memory in bytes]                 used : 31832208(30.4 MiB)
                                   committed : 36438016(34.8 MiB)
                                   max : -1(-1 B)
 PENDING-FINALIZE-COUNT            0

-----------------------------------------------------------------------------------------------------------------------
 OPERATING-SYSTEM
-----------------------------------------------------------------------------------------------------------------------
 OS                                Windows 10
 ARCH                              amd64
 PROCESSORS-COUNT                  36
 LOAD-AVERAGE                      -1.0
 VERSION                           10.0

-----------------------------------------------------------------------------------------------------------------------
 THREAD
-----------------------------------------------------------------------------------------------------------------------
 COUNT                             16
 DAEMON-COUNT                      15
 PEAK-COUNT                        16
 STARTED-COUNT                     19
 DEADLOCK-COUNT                    0

-----------------------------------------------------------------------------------------------------------------------
 FILE-DESCRIPTOR
-----------------------------------------------------------------------------------------------------------------------
 MAX-FILE-DESCRIPTOR-COUNT         -1
 OPEN-FILE-DESCRIPTOR-COUNT        -1

4、sysprop

sysprop:查看和修改JVM的系统属性

[arthas@14156]$ sysprop
 KEY                     VALUE
-----------------------------------------------------------------------------------------------------------------------
 java.specification.ver  21
 sion
 sun.cpu.isalist         amd64
 sun.jnu.encoding        GBK
 java.class.path         math-game.jar
 java.vm.vendor          Oracle Corporation
 sun.arch.data.model     64
 user.variant
 java.vendor.url         https://java.oracle.com/
 user.timezone           Asia/Shanghai
 java.vm.specification.  21
 version
 os.name                 Windows 10
 sun.java.launcher       SUN_STANDARD
 user.country            CN
 sun.boot.library.path   C:\Program Files\Java\jdk-21\bin
 sun.java.command        math-game.jar
 jdk.debug               release
 sun.cpu.endian          little
 user.home               C:\Users\Administrator
 user.language           zh
 java.specification.ven  Oracle Corporation
 dor
 java.version.date       2023-10-17
 java.home               C:\Program Files\Java\jdk-21
 file.separator          \
 java.vm.compressedOops  Zero based
 Mode

 java.vm.specification.  Oracle Corporation
 vendor
 java.specification.nam  Java Platform API Specification
 e
 user.script
 sun.management.compile  HotSpot 64-Bit Tiered Compilers
 r
 java.runtime.version    21.0.1+12-LTS-29
 user.name               Administrator
 stdout.encoding         ms936
 path.separator          ;
 os.version              10.0
 java.runtime.name       Java(TM) SE Runtime Environment
 file.encoding           UTF-8
 java.vm.name            Java HotSpot(TM) 64-Bit Server VM
 java.vendor.url.bug     https://bugreport.java.com/bugreport/
 java.io.tmpdir          C:\Users\ADMINI~1\AppData\Local\Temp\
 java.version            21.0.1
 user.dir                C:\Users\Administrator\.arthas\lib\3.7.1\arthas
 os.arch                 amd64
 java.vm.specification.  Java Virtual Machine Specification
 name
 sun.os.patch.level
 native.encoding         GBK
 java.library.path       C:\Program Files\Java\jdk-21\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Pr
                         ogram Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java
                         \javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\Windows
                         PowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX
                         \Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;"C:\Program Files\Java\jdk-21\bin;
                         C:\Program Files\Java\jdk-21\jre\bin;";C:\Program Files\Go\bin;C:\Program Files\Go\bin;C:\Pro
                         gram Files\PuTTY\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseGit\bin;C:\Program Files\
                         Microsoft VS Code\bin;C:\Program Files\Java\jdk-21\bin;C:\Users\Administrator\AppData\Local\M
                         icrosoft\WindowsApps;C:\Users\Administrator\go\bin;C:\Program Files\JetBrains\GoLand 2023.2\b
                         in;;C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.3\bin;;.
 java.vm.info            mixed mode, sharing
 stderr.encoding         ms936
 java.vendor             Oracle Corporation
 java.vm.version         21.0.1+12-LTS-29
 sun.io.unicode.encodin  UnicodeLittle
 g
 java.class.version      65.0
[arthas@14156]$
查看单个属性
[arthas@14156]$ sysprop java.version
 KEY                     VALUE
------------------------------------------------------------------------------------------
 java.version            21.0.1
[arthas@14156]$
修改单个属性
[arthas@14156]$ sysprop user.country
 KEY                     VALUE
------------------------------------------------------------------------------------------
 user.country            CN
[arthas@14156]$ sysprop user.country US
Successfully changed the system property.
 KEY                     VALUE
------------------------------------------------------------------------------------------
 user.country            US
[arthas@14156]$ sysprop user.country CN
Successfully changed the system property.
 KEY                     VALUE
------------------------------------------------------------------------------------------
 user.country            CN
[arthas@14156]$

2、JVM相关命令二

1、sysenv

2、vmoption

3、getstatic

4、ognl

一个程序员最重要的能力是:写出高质量的代码!!
有道无术,术尚可求也,有术无道,止于术。
无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃!

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

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

相关文章

vue3 ref 与shallowRef reactive与shallowReactive

ref 给数据添加响应式&#xff0c;基本类型采用object.defineProperty进行数据劫持&#xff0c;对象类型是借助reactive 实现响应式&#xff0c;采用proxy 实现数据劫持&#xff0c;利用reflect进行源数据的操作 let country ref({count:20,names:[河南,山东,陕西],objs:{key…

postman调用接口报{“detail“:“Method \“DELETE\“ not allowed.“}错误, 解决记录

项目是python代码开发, urls.py 路由中访问路径代码如下: urlpatterns [path(reportmanagement/<int:pk>/, views.ReportManagementDetail.as_view(), namereport-management-detail),] 对应view视图中代码如下: class ReportManagementDetail(GenericAPIView):"…

华为笔记本电脑原装win10/win11系统恢复安装教程方法

华为电脑matebook 14原装Win11系统带F10智能还原 安装恢复教程&#xff1a; 1.安装方法有两种&#xff0c;一种是用PE安装&#xff0c;一种是华为工厂包安装&#xff08;安装完成自带F10智能还原&#xff09; 若没有原装系统文件&#xff0c;请在这里获取&#xff1a;https:…

适配器模式 rust和java的实现

文章目录 适配器模式介绍何时使用应用实例优点缺点使用场景 实现java实现rust 实现 rust代码仓库 适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能…

Javaweb之javascript事件的详细解析

1.6 JavaScript事件 1.6.1 事件介绍 如下图所示的百度注册页面&#xff0c;当我们用户输入完内容&#xff0c;百度可以自动的提示我们用户名已经存在还是可以使用。那么百度是怎么知道我们用户名输入完了呢&#xff1f;这就需要用到JavaScript中的事件了。 什么是事件呢&…

【电路笔记】-戴维南定理(Thevenin‘s Theorem)

戴维南定理&#xff08;Thevenin’s Theorem&#xff09; 文章目录 戴维南定理&#xff08;Thevenins Theorem&#xff09;1、概述与定义2、戴维南模型确定3、一些线性电路的戴维南模型3.1 单电压源3.2 单电流源3.3 多电流/电压源 4、结论 在本文中&#xff0c;我们将介绍一种强…

2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)

2023.11.12使用flask对图片进行黑白处理&#xff08;base64编码方式传输&#xff09; 由前端输入图片并预览&#xff0c;在后端处理图片后返回前端显示&#xff0c;可以作为图片处理的模板。 关键点在于对图片进行base64编码的转化。 使用Base64编码可以更方便地将图片数据嵌入…

file2Udp增量日志转出Udp简介

https://gitee.com/tianjingle/file2udp 很多时候服务产生的日志需要进行汇总&#xff0c;这种统一日志处理的方式有elb&#xff0c;而且很多日志组件也支持日志转出的能力。但是从广义上来说是定制化的&#xff0c;我们需要一个小工具实现tail -f的能力&#xff0c;将增量日志…

[100天算法】-球会落何处(day 76)

题目描述 用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板&#xff0c;跨过单元格的两个角&#xff0c;可以将球导向左侧或者右侧。将球导向右侧的挡板跨过左上角和右下角&#xff0c;在网…

【java:牛客每日三十题总结-7】

java:牛客每日三十题总结 总结如下 总结如下 执行流程如下&#xff1a;创建HttpServlet时需要覆盖doGet()和doPost请求 2. request相关知识 request.getParameter()方法传递的数据&#xff0c;会从Web客户端传到Web服务器端&#xff0c;代表HTTP请求数据&#xff1b;request.…

C#中.NET 6.0控制台应用通过EF访问已建数据库

目录 一、新建.NET 6.0控制台应用并建立数据库连接 二、下载并安装EF程序包 三、自动生成EF模型和上下文 1.Blog类模型 2.Post类模型 3.数据库上下文 四、设计自己的应用 VS2022的.NET6.0、.NET7.0框架下默认支持EF7&#xff08;版本号7.0.13&#xff09;&#xff0c;除…

在 SQL 中,当复合主键成为外键时应该如何被其它表引用

文章目录 当研究一个问题慢慢深入时&#xff0c;一个看起来简单的问题也暗藏玄机。在 SQL 中&#xff0c;主键成为外键这是一个很平常的问题&#xff0c;乍一看没啥值得注意的。但如果这个主键是一种复合主键&#xff0c;而另一个表又引用这个键作为它的复合主键&#xff0c;问…

HTTP——

HTTP 请求报文的构成 如下图: 第一行:HTTP请求的方法,具体是POST方法还是GET方法,或是其它方法;URI就是你的HTTP请求的路径;后面是HTTP协议的版本; 第二行往下连续多行:这些是请求头部分,也就是请求的首部设置的一些信息,相当于对HTTP请求的一些设置; 空格行:在…

U-Mail邮件中继有效解决海外邮件发送不畅难题

相信不少企业都经历过类似的问题&#xff0c;在跟国外客户发送电子邮件的过程中&#xff0c;经常会遇到邮件发不过去、邮件隔了很久对方才收到&#xff0c;或者是邮件退信等情况出现。对此&#xff0c;U-Mail技术专家李工解释到&#xff0c;导致海外通邮不畅主要有以下三个原因…

数据结构哈希表(散列)Hash,手写实现(图文推导)

目录 一、介绍 二、哈希数据结构 三、✍️实现哈希散列 1. 哈希碰撞&#x1f4a5; 2. 拉链寻址⛓️ 3. 开放寻址⏩ 4. 合并散列 一、介绍 哈希表&#xff0c;也被称为散列表&#xff0c;是一种重要的数据结构。它通过将关键字映射到一个表中的位置来直接访问记录&#…

字符设备驱动基础框架

一、总体框架 1.Linux字符设备驱动工作原理图 2.驱动使用端 3.驱动实现端 二、各部分详解 1.VFS层 1) inode结构体 在Unix/Linux操作系统中&#xff0c;每个文件都由一个inode&#xff08;索引节点&#xff09;来索引。inode是特殊的磁盘块&#xff0c;它们在文件系统创建时…

【Spring Boot】034-Spring Boot 整合 JUnit

【Spring Boot】034-Spring Boot 整合 JUnit 文章目录 【Spring Boot】034-Spring Boot 整合 JUnit一、单元测试1、什么是单元2、什么是单元测试3、为什么要单元测试 二、JUnit1、概述简介特点 2、JUnit4概述基本用法 3、JUnit5概述组成 4、JUnit5 与 JUnit4 的常用注解对比 三…

SQL学习(CTFhub)整数型注入,字符型注入,报错注入 -----手工注入+ sqlmap注入

目录 整数型注入 手工注入 为什么要将1设置为-1呢&#xff1f; sqlmap注入 sqlmap注入步骤&#xff1a; 字符型注入 手工注入 sqlmap注入 报错注入 手工注入 sqlmap注入 整数型注入 手工注入 先输入1 接着尝试2&#xff0c;3&#xff0c;2有回显&#xff0c;而3没有回显…

No199.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

11. 深度学习——强化学习

机器学习面试题汇总与解析——强化学习 本章讲解知识点 什么是强化学习 围棋举例 强化学习的两个特点和一个核心 最简单的强化学习算法 一个完整的强化学习问题 进一步深入强化学习的核心 本专栏适合于Python已经入门的学生或人士&#xff0c;有一定的编程基础。本专栏适…