JVM在线分析-解决问题的工具一(jinfo,jmap,jstack)

1. jinfo

(base) PS C:\Users\zishi\Desktop> jinfo
Usage:jinfo <option> <pid>(to connect to a running process)where <option> is one of:-flag <name>         to print the value of the named VM flag #输出对应名称的参数-flag [+|-]<name>    to enable or disable the named VM flag# 开启或者关闭对应名称的参数 只有被标记为 manageable 的参数才可以被动态修改-flag <name>=<value> to set the named VM flag to the given value  #设定对应名称的参数-flags               to print VM flags # 输出全部的参数-sysprops            to print Java system properties #输出系统属性<no option>          to print both VM flags and system properties -? | -h | --help | -help to print this help message
(base) PS C:\Users\zishi> jinfo 9368
Java System Properties:
#Thu Nov 09 09:05:06 CST 2023
sun.desktop=windows
awt.toolkit=sun.awt.windows.WToolkit
java.specification.version=11
sun.cpu.isalist=amd64
sun.jnu.encoding=GBK
java.class.path=.\\quality-server.jar
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
user.variant=
catalina.useNaming=false
java.vendor.url=https\://openjdk.java.net/
。。。。略去
(base) PS C:\Users\zishi> jinfo  -sysprops 9368
Java System Properties:
#Thu Nov 09 09:07:07 CST 2023
sun.desktop=windows
awt.toolkit=sun.awt.windows.WToolkit
。。。。略去
(base) PS C:\Users\zishi> jinfo  -flags 9368
VM Flags:
-XX:CICompilerCount=4 
-XX:ConcGCThreads=3 
-XX:G1ConcRefinementThreads=10 
-XX:G1HeapRegionSize=2097152 
-XX:GCDrainStackTargetSize=64 
-XX:InitialHeapSize=534773760 
-XX:MarkStackSize=4194304 
-XX:MaxHeapSize=8524922880 
-XX:MaxNewSize=5114953728 
-XX:MinHeapDeltaBytes=2097152 
-XX:NonNMethodCodeHeapSize=5836300 
-XX:NonProfiledCodeHeapSize=122910970 
-XX:ProfiledCodeHeapSize=122910970 
-XX:ReservedCodeCacheSize=251658240 
-XX:+SegmentedCodeCache 
-XX:+UseCompressedClassPointers 
-XX:+UseCompressedOops 
-XX:+UseG1GC 
-XX:-UseLargePagesIndividualAllocation
(base) PS C:\Users\zishi> jinfo  -flag MaxHeapSize 9368
-XX:MaxHeapSize=8524922880
(base) PS C:\Users\zishi> jinfo  -flag MaxHeapSize=8524922883 9368
Exception in thread "main" com.sun.tools.attach.AttachOperationFailedException: flag 'MaxHeapSize' cannot be changedat jdk.attach/sun.tools.attach.VirtualMachineImpl.execute(VirtualMachineImpl.java:130)at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:309)at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:282)at jdk.jcmd/sun.tools.jinfo.JInfo.flag(JInfo.java:146)at jdk.jcmd/sun.tools.jinfo.JInfo.main(JInfo.java:127)

查看被标记为 manageable 的参数

$ java -XX:+PrintFlagsFinal -version | grep  manageableintx CMSAbortablePrecleanWaitMillis           = 100                                    {manageable} {default}intx CMSTriggerInterval                       = -1                                     {manageable} {default}intx CMSWaitDuration                          = 2000                                   {manageable} {default}bool HeapDumpAfterFullGC                      = false                                  {manageable} {default}bool HeapDumpBeforeFullGC                     = false                                  {manageable} {default}bool HeapDumpOnOutOfMemoryError               = false                                  {manageable} {default}ccstr HeapDumpPath                             =                                        {manageable} {default}uintx MaxHeapFreeRatio                         = 70                                     {manageable} {default}uintx MinHeapFreeRatio                         = 40                                     {manageable} {default}bool PrintClassHistogram                      = false                                  {manageable} {default}bool PrintConcurrentLocks                     = false                                  {manageable} {default}
java version "11.0.13" 2021-10-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.13+10-LTS-370)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.13+10-LTS-370, mixed mode)

在这里插入图片描述
修改参数的值

(base) PS C:\Users\zishi> jinfo  -flag MaxHeapFreeRatio 9368
-XX:MaxHeapFreeRatio=70
(base) PS C:\Users\zishi> jinfo  -flag MaxHeapFreeRatio=80 9368
(base) PS C:\Users\zishi> jinfo  -flag MaxHeapFreeRatio 9368
-XX:MaxHeapFreeRatio=80

开启参数:

(base) PS C:\Users\zishi> jinfo -flag HeapDumpBeforeFullGC 9368
-XX:-HeapDumpBeforeFullGC
(base) PS C:\Users\zishi> jinfo -flag +HeapDumpBeforeFullGC 9368
(base) PS C:\Users\zishi> jinfo -flag HeapDumpBeforeFullGC 9368
-XX:+HeapDumpBeforeFullGC

扩展
java -XX:+PrintFlagsInitial 查看所有 JVM 参数启动的初始值
java -XX:+PrintFlagsFinal 查看所有 JVM 参数的最终值
java -XX:+PrintCommandLineFlags 查看哪些已经被用户或者 JVM 设置过的详细的 XX 参数的名称和值

2. jmap

(base) PS C:\Users\zishi> jmap
Usage:jmap -clstats <pid>to connect to running process and print class loader statisticsjmap -finalizerinfo <pid>to connect to running process and print information on objects awaiting finalizationjmap -histo[:live] <pid>to connect to running process and print histogram of java object heapif the "live" suboption is specified, only count live objectsjmap -dump:<dump-options> <pid>to connect to running process and dump java heapjmap -? -h --helpto print this help messagedump-options:live         dump only live objects; if not specified,all objects in the heap are dumped.format=b     binary formatfile=<file>  dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>
$ jmap -clstats 9368 > a.txt
$ cat a.txt | head -n 10
Index Super InstBytes KlassBytes annotations    CpAll MethodCount Bytecodes MethodAll    ROAll    RWAll    Total ClassName1    -1  10510264        504           0        0           0         0         0       24      616      640 [B2  8286   5545320       1112           0     6816          47      1117     27912     6480    30104    36584 java.lang.reflect.Method3    18   4025232        616         128    14264         109      4576     71992    18640    69664    88304 java.lang.String4    18   2461504        592           0     1360           9       213      2720     1488     3520     5008 java.util.concurrent.ConcurrentHashMap$Node5    -1   2286832        504           0        0           0         0         0       24      616      640 [Ljava.lang.Object;6    -1   2075104        504           0        0           0         0         0       32      616      648 [Ljava.util.HashMap$Node;7    18   2013216        584           0     1384           7       149      1816     1152     2952     4104 java.util.HashMap$Node8     7   1977960        584           0      504           1        10       624      304     1640     1944 java.util.LinkedHashMap$Entry9    18   1720280        672           0    22112         139      5679     85040    24632    85104   109736 java.lang.Class$ jmap -clstats 9368 | grep com.zishi.docuvate.exception4077    18        16        552          56     2568           6       282      1576     1448     3504     4952 com.zishi.docuvate.exception.GlobalExceptionHandler7429  7856         0        624           0      440           3        54       568      464     1368     1832 com.zishi.docuvate.exception.BadRequestException7430  7856         0        640           0      624           8       105      1472     1072     1952     3024 com.zishi.docuvate.exception.GlobalException

说明:

Index
Super
InstBytes
KlassBytes
annotations
CpAll
MethodCount
Bytecodes
MethodAll
ROAll
RWAll
Total
ClassName: 类的完全限定名

(base) PS C:\Users\zishi> jmap -histo 23152num     #instances         #bytes  class name (module)
-------------------------------------------------------1:       1164144      152211432  [B (java.base@11.0.13)2:        147373       44824568  [I (java.base@11.0.13)3:        694738       16673712  java.lang.String (java.base@11.0.13)4:        601819       12621496  [Ljava.lang.Class; (java.base@11.0.13)5:        107422        9453136  java.lang.reflect.Method (java.base@11.0.13)6:        113936        7291904  java.net.URL (java.base@11.0.13)7:        141772        4536704  org.springframework.boot.loader.jar.StringSequence8:         75593        4434728  [Ljava.lang.Object; (java.base@11.0.13)9:        178622        4286928  java.lang.StringBuilder (java.base@11.0.13)10:        102026        4081040  org.springframework.core.annotation.TypeMappedAnnotations11:         36093        2871384  [Ljava.util.HashMap$Node; (java.base@11.0.13)12:         88017        2816544  java.util.concurrent.ConcurrentHashMap$Node (java.base@11.0.13)13:         84459        2702688  org.springframework.core.annotation.TypeMappedAnnotations$MergedAnnotationFinder14:         82805        2649760  java.util.HashMap$Node (java.base@11.0.13)15:         64740        2589600  java.util.LinkedHashMap$Entry (java.base@11.0.13)16:         49166        2359968  java.util.HashMap (java.base@11.0.13)17:         92807        2227368  org.springframework.boot.loader.jar.JarURLConnection$JarEntryName18:         12370        2153808  [C (java.base@11.0.13)

说明:

#instances:对象数量
#bytes: 占用内存大小(单位:字节)
class name (module): 类的完全限定名

3. jstack

(base) PS C:\Users\zishi> jstack
Usage:jstack [-l][-e] <pid>(to connect to running process)Options:-l  long listing. Prints additional information about locks-e  extended listing. Prints additional information about threads-? -h --help -help to print this help message

代码示例:

/*** 当DeadLock类的对象flag==1时(td1),先锁定o1,睡眠500毫秒* 而td1在睡眠的时候另一个flag==0的对象(td2)线程启动,先锁定o2,睡眠500毫秒* td1睡眠结束后需要锁定o2才能继续执行,而此时o2已被td2锁定;* td2睡眠结束后需要锁定o1才能继续执行,而此时o1已被td1锁定;* td1、td2相互等待,都需要得到对方锁定的资源才能继续执行,从而死锁。*/
public class DeadLockTest implements Runnable{public int flag = 1;//静态对象是类的所有对象共享的private static Object o1 = new Object(), o2 = new Object();@Overridepublic void run() {System.out.println("flag=" + flag);if (flag == 1) {synchronized (o1) {try {Thread.sleep(500);} catch (Exception e) {e.printStackTrace();}synchronized (o2) {System.out.println("1");}}}if (flag == 0) {synchronized (o2) {try {Thread.sleep(500);} catch (Exception e) {e.printStackTrace();}synchronized (o1) {System.out.println("0");}}}}public static void main(String[] args) {DeadLockTest td1 = new DeadLockTest();DeadLockTest td2 = new DeadLockTest();td1.flag = 1;td2.flag = 0;//td1,td2都处于可执行状态,但JVM线程调度先执行哪个线程是不确定的。//td2的run()可能在td1的run()之前运行new Thread(td1).start();new Thread(td2).start();}
}

编译运行,执行jstack

(base) PS C:\Users\zishi> jstack 21744
2023-11-09 18:47:14
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.13+10-LTS-370 mixed mode):Threads class SMR info:
_java_thread_list=0x000001d91fca51a0, length=12, elements={
0x000001d91fa90800, 0x000001d91fab5800, 0x000001d91fb2b800, 0x000001d91fb2c800,
0x000001d91fb2e000, 0x000001d91fb31000, 0x000001d91fb32800, 0x000001d91fb35800,
0x000001d91fcb6800, 0x000001d91fcbc000, 0x000001d91fcbc800, 0x000001d972982000
}"Reference Handler" #2 daemon prio=10 os_prio=2 cpu=0.00ms elapsed=18.72s tid=0x000001d91fa90800 nid=0x2aac waiting on condition  [0x000000aacf8ff000]java.lang.Thread.State: RUNNABLEat java.lang.ref.Reference.waitForReferencePendingList(java.base@11.0.13/Native Method)at java.lang.ref.Reference.processPendingReferences(java.base@11.0.13/Reference.java:241)at java.lang.ref.Reference$ReferenceHandler.run(java.base@11.0.13/Reference.java:213)"Finalizer" #3 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=18.72s tid=0x000001d91fab5800 nid=0x2224 in Object.wait()  [0x000000aacf9fe000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(java.base@11.0.13/Native Method)- waiting on <0x0000000623a08fa8> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(java.base@11.0.13/ReferenceQueue.java:155)- waiting to re-lock in wait() <0x0000000623a08fa8> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(java.base@11.0.13/ReferenceQueue.java:176)at java.lang.ref.Finalizer$FinalizerThread.run(java.base@11.0.13/Finalizer.java:170)"Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=18.70s tid=0x000001d91fb2b800 nid=0x3bcc runnable  [0x0000000000000000]java.lang.Thread.State: RUNNABLE"Attach Listener" #5 daemon prio=5 os_prio=2 cpu=0.00ms elapsed=18.70s tid=0x000001d91fb2c800 nid=0x3740 waiting on condition  [0x0000000000000000]java.lang.Thread.State: RUNNABLE"Service Thread" #6 daemon prio=9 os_prio=0 cpu=0.00ms elapsed=18.70s tid=0x000001d91fb2e000 nid=0xd0c runnable  [0x0000000000000000]java.lang.Thread.State: RUNNABLE"C2 CompilerThread0" #7 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=18.70s tid=0x000001d91fb31000 nid=0x1620 waiting on condition  [0x0000000000000000]java.lang.Thread.State: RUNNABLENo compile task"C1 CompilerThread0" #10 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=18.70s tid=0x000001d91fb32800 nid=0x133c waiting on condition  [0x0000000000000000]java.lang.Thread.State: RUNNABLENo compile task"Sweeper thread" #11 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=18.70s tid=0x000001d91fb35800 nid=0x1368 runnable  [0x0000000000000000]java.lang.Thread.State: RUNNABLE"Common-Cleaner" #12 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=18.67s tid=0x000001d91fcb6800 nid=0x1df8 in Object.wait()  [0x000000aad01fe000]java.lang.Thread.State: TIMED_WAITING (on object monitor)at java.lang.Object.wait(java.base@11.0.13/Native Method)- waiting on <0x0000000623bf37f8> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(java.base@11.0.13/ReferenceQueue.java:155)- waiting to re-lock in wait() <0x0000000623bf37f8> (a java.lang.ref.ReferenceQueue$Lock)at jdk.internal.ref.CleanerImpl.run(java.base@11.0.13/CleanerImpl.java:148)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)at jdk.internal.misc.InnocuousThread.run(java.base@11.0.13/InnocuousThread.java:134)"Thread-0" #13 prio=5 os_prio=0 cpu=0.00ms elapsed=18.67s tid=0x000001d91fcbc000 nid=0x39d4 waiting for monitor entry  [0x000000aad02ff000]java.lang.Thread.State: BLOCKED (on object monitor)at DeadLockTest.run(DeadLockTest.java:25)- waiting to lock <0x0000000623bf7078> (a java.lang.Object)- locked <0x0000000623bf7068> (a java.lang.Object)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)"Thread-1" #14 prio=5 os_prio=0 cpu=0.00ms elapsed=18.67s tid=0x000001d91fcbc800 nid=0x7f8 waiting for monitor entry  [0x000000aad03ff000]java.lang.Thread.State: BLOCKED (on object monitor)at DeadLockTest.run(DeadLockTest.java:37)- waiting to lock <0x0000000623bf7068> (a java.lang.Object)- locked <0x0000000623bf7078> (a java.lang.Object)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)"DestroyJavaVM" #15 prio=5 os_prio=0 cpu=15.63ms elapsed=18.67s tid=0x000001d972982000 nid=0x5744 waiting on condition  [0x0000000000000000]java.lang.Thread.State: RUNNABLE"VM Thread" os_prio=2 cpu=0.00ms elapsed=18.73s tid=0x000001d91fa8f800 nid=0x222c runnable"GC Thread#0" os_prio=2 cpu=0.00ms elapsed=18.77s tid=0x000001d972996800 nid=0x5144 runnable"G1 Main Marker" os_prio=2 cpu=0.00ms elapsed=18.77s tid=0x000001d972a17800 nid=0x4180 runnable"G1 Conc#0" os_prio=2 cpu=0.00ms elapsed=18.77s tid=0x000001d972a19000 nid=0x3380 runnable"G1 Refine#0" os_prio=2 cpu=0.00ms elapsed=18.75s tid=0x000001d97fde5800 nid=0x2ba4 runnable"G1 Young RemSet Sampling" os_prio=2 cpu=0.00ms elapsed=18.75s tid=0x000001d97fde6800 nid=0x2f8c runnable
"VM Periodic Task Thread" os_prio=2 cpu=0.00ms elapsed=18.67s tid=0x000001d91fcb6000 nid=0x2990 waiting on conditionJNI global refs: 6, weak refs: 0Found one Java-level deadlock:
=============================
"Thread-0":waiting to lock monitor 0x000001d91fabff80 (object 0x0000000623bf7078, a java.lang.Object),which is held by "Thread-1"
"Thread-1":waiting to lock monitor 0x000001d91fabcc80 (object 0x0000000623bf7068, a java.lang.Object),which is held by "Thread-0"Java stack information for the threads listed above:
===================================================
"Thread-0":at DeadLockTest.run(DeadLockTest.java:25)- waiting to lock <0x0000000623bf7078> (a java.lang.Object)- locked <0x0000000623bf7068> (a java.lang.Object)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)
"Thread-1":at DeadLockTest.run(DeadLockTest.java:37)- waiting to lock <0x0000000623bf7068> (a java.lang.Object)- locked <0x0000000623bf7078> (a java.lang.Object)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)Found 1 deadlock.

说明:

Thread-1:线程名
prio:优先级
os_prio:操作系统级别的线程优先级
tid:线程id
nid:线程对应本地线程id
java.lang.Thread.State:线程状态

可以看到有一个 dead lock
Found one Java-level deadlock:
jstack还帮我们打印了死锁产生的原因
打印了死锁产生的原因之外,还帮我们定位到了java的代码行数:

Found one Java-level deadlock:
=============================
"Thread-0":waiting to lock monitor 0x000001d91fabff80 (object 0x0000000623bf7078, a java.lang.Object),which is held by "Thread-1"
"Thread-1":waiting to lock monitor 0x000001d91fabcc80 (object 0x0000000623bf7068, a java.lang.Object),which is held by "Thread-0"Java stack information for the threads listed above:
===================================================
"Thread-0":at DeadLockTest.run(DeadLockTest.java:25)- waiting to lock <0x0000000623bf7078> (a java.lang.Object)- locked <0x0000000623bf7068> (a java.lang.Object)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)
"Thread-1":at DeadLockTest.run(DeadLockTest.java:37)- waiting to lock <0x0000000623bf7068> (a java.lang.Object)- locked <0x0000000623bf7078> (a java.lang.Object)at java.lang.Thread.run(java.base@11.0.13/Thread.java:834)Found 1 deadlock.

参考:
https://juejin.cn/post/6957903936657293319#heading-3

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言--1,5,10人民币若干,现在需要18元,一共有多少种?

今天小编给大家分享一下穷举法的一道典型例题 一.题目描述 1,5,10人民币若干,现在需要18元,一共有多少种? 二.思路分析 总共有18块钱&#xff0c;设1元有x张&#xff0c;5元有y张&#xff0c;10元有z张&#xff0c;则有表达式&#xff1a;x5y10z18&#xff0c;穷举法最重要的…

Java事务详解

一、事务的理解&#xff1a; 1、事务的特性&#xff1a; 1) 原子性&#xff08;atomicity&#xff09;&#xff1a;事务是数据库的逻辑工作单位&#xff0c;而且是必须是原子工作单位&#xff0c;对于其数据修改&#xff0c;要么全部执行&#xff0c;要么全部不执行。 2) 一致性…

大数据之LibrA数据库系统告警处理(ALM-12033 慢盘故障)

告警解释 系统每一秒执行一次iostat命令&#xff0c;监控磁盘I/O的系统指标&#xff0c;如果在60s内&#xff0c;svctm大于100ms的周期数大于30次则认为磁盘有问题&#xff0c;产生该告警。 更换磁盘后&#xff0c;告警自动恢复。 告警属性 告警ID 告警级别 可自动清除 1…

vue,react虚拟dom

Virtual DOM 前言 在传统的Web开发中&#xff0c;直接操作真实的DOM通常是一个昂贵且低效的操作。为了解决这个问题&#xff0c;Virtual DOM&#xff08;虚拟DOM&#xff09;被引入为一个中间层&#xff0c;允许开发者在内存中进行操作&#xff0c;从而避免频繁且不必要的真实D…

什么是代理IP池?真实测评IP代理商的IP池是否真实?

代理池充当多个代理服务器的存储库&#xff0c;提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务&#xff0c;而无需担心被检测或阻止的风险。代理池为各种在线活动&#xff08;例如网页抓取、安全浏览等&#xff09;提高后勤保障。 读完…

【C语言 | 预处理】C语言预处理详解(一) —— #define、#under、#if、#else、#elif、#endif、#include、#error

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

“第六十七天”

各位&#xff0c;昨天查找子串的方法想起来了&#xff0c;就是那个KMP算法......自己理解都有点困难&#xff0c;还看看能不能想一下&#xff0c;确实很困难啊。 不要忘了toupper函数和tolower函数不是直接改变字符的大小写&#xff0c;而是返回对应的大小写的值&#xff0c;需…

文件上传 [ACTF2020 新生赛]Upload1

打开题目&#xff0c;发现是一道文件上传题目 随便上传个一句话木马上去 发现网站前端有白名单限制&#xff0c;只能上传含有jpg&#xff0c;png&#xff0c;gif的后缀文件 那我们便传个2.jpg的一句话木马上去&#xff0c;bp抓包 我们改成php文件后缀试试&#xff0c;发现重发…

毕业设计项目:基于java+springboot的共享单车信息网站

运行环境 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Ma…

5. HTML常用标签

5.1 标签语义 学习标签是有技巧的&#xff0c;重点是记住每个标签的语义。简单理解就是指标签的含义。即这个标签是用来干嘛的。 根据标签的语义&#xff0c;在合适的地方给一个最为合理的标签。可以让页面结构给清晰。 5.2 标题标签 <h1>-<h6>(重要) HTML提供了…

【学习辅助】Axure手机时间管理APP原型,告别手机控番茄任务模板

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;时间管理、系统工具 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本品为「手机时间管理」APP原型&#xff0c;…

Redis集群,你真的学会了吗?

目录 1、为什么引入集群 1.1、先来了解集群是什么 1.2、哨兵模式的缺陷 引入集群解决了什么问题 1.3、使用集群&#xff0c;如何存储数据 2、三种主流的分片方式【经典面试题】 2.1、哈希求余算法 2.1.1、哈希求余算法的介绍 2.1.2、哈希求余算法如何扩容 2.2、一致性…

C# 并发编程

C# 并发编程 前言 对于现在很多编程语言来说&#xff0c;多线程已经得到了很好的支持&#xff0c; 以至于我们写多线程程序简单&#xff0c;但是一旦遇到并发产生的问题就会各种尝试。 因为不是明白为什么会产生并发问题&#xff0c;并发问题的根本原因是什么。 接下来就让…

vcomp120.dll丢失怎么办?vcomp120.dll丢失的解决方法分享

vcomp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来困扰。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何修复呢&#xff1f;下面我将为大家介绍四个修复vcomp120.dll丢失的方法。 一、使用dll修复程序修复 可以通过百度或许…

矢量绘图软件Sketch 99 for mac

Sketch是一款为用户提供设计和创建数字界面的矢量编辑工具。它主要用于UI/UX设计师、产品经理和开发人员&#xff0c;帮助他们快速设计和原型各种应用程序和网站。 Sketch具有简洁直观的界面&#xff0c;以及丰富的功能集&#xff0c;使得用户可以轻松地创建、编辑和共享精美的…

NSF服务器

目录 1.简介 1.1 NFS背景介绍 1.2 生产应用场景 2.NFS工作原理 2.1 实例图 2.2 流程 3.NFS的使用 3.1.安装 3.2.配置文件 3.3.主配置文件分析 3.4 实验 服务端&#xff1a; 客户端&#xff1a; 3.5.NFS账户映射 3.5.1.实验2 3.5.2.实验3 4.autofs自动挂载服务…

Mysql学习笔记--基础

一&#xff0c;SQL最重要的增删改命令格式 1&#xff0c;insert into 表名&#xff08;不写这个括号里面的内容就默认所有字段都要添加&#xff09; values&#xff08;&#xff09; 插入单条数据 2&#xff0c;insert into 表名 (里面是列名) values&#xff08;根据列名依次…

Java Web——前端HTML入门

目录 HTML&CSS3&JavaScript简述 1. HTML概念 2. 超文本 3. 标记语言 4. HTML基础结构 5. HTML基础词汇 6. HTML语法规则 7. VS Code 推荐使用的插件 8. 在线帮助文档 HTML&CSS3&JavaScript简述 HTML 主要用于网页主体结构的搭建&#xff0c;像一个毛坯…

【LeetCode:715. Range 模块 | 线段树】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Django(四、路由层)

文章目录 一、路由层1.路由匹配url方法第一个是参数 的正则表达式 二、正则无名分组与有名分组无名分组有名分组 三、反向解析1.概念无名分组动态路由解析有名分组动态路由解析 四、路由分发为什么要用路由分发&#xff1f; 1.总路由分发配置名称空间 五、伪静态的概念六、虚拟…