Java 相关命令详解

文章目录

  • jps
    • 常用选项
  • javac
    • 标准选项
    • 联编选项
    • 非标准选项
  • jar
  • java
  • javadoc
    • 常用选项
  • javah
    • 常用选项
  • javap
    • 常用选项
  • jconsole
  • jstat
  • jstack
  • jmap
  • javaw
  • 其它

jps

jps(Java Virtual Machine Process Status Tool) 是 JDK 1.5 提供的一个显示当前所有 java 进程 pid 的命令,简单实用,非常适合在 linux/unix 平台上简单察看当前 java 进程的一些简单情况。

我想很多人都是用过 unix 系统里的 ps 命令,这个命令主要是用来显示当前系统的进程情况(有哪些进程,及其 id)。 jps 也是一样,它的作用是显示当前系统的 java 进程情况。我们可以通过它来查看我们到底启动了几个 java进程和他们的进程号(每一个java程序都会独占一个java虚拟机实例),并可通过 opt 来查看这些进程的详细启动参数。

jps 存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到环境变量Path中。

常用选项

选项说明
-q只显示pid,不显示class名称,jar文件名和传递给main 方法的参数
-m输出传递给main方法的参数,在嵌入式jvm上可能是null
-l输出主类的全名,如果进程执行的是jar包,输出jar路径
-v输出JVM参数
-V输出通过.hotsportrc或-XX:Flags=指定的jvm参数
-Joption传递参数到vm,例如:-J-Xms512m

示例1,查看java进程:

[root@linux ~]# jps
23991 Jps
23789 BossMain
23651 Resin

注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux的ps命令。

示例2,列出远程服务器192.168.0.77机器所有的jvm实例(采用rmi协议,默认连接端口为1099):

jps 192.168.0.77 

注:sudo jps看到的进程数量最全


参考文章:
Linux常用命令大全

javac

javac 命令用于编译 java 源码文件

语法格式:

javac [ options ] [ sourcefiles ] [ @files ]

参数可按任意次序排列。

  • options 命令行选项
  • sourcefiles 一个或多个要编译的源文件
  • @files 一个或多个对源文件进行列表的文件

有两种方法可将源代码文件名传递给 javac:

  • 如果源文件数量少,在命令行上列出文件名即可

  • 如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或换行符来进行分隔。然后在 javac 命令行中使用该列表文件名,文件名前冠以 @ 字符

查找类型

当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。

例如,当扩展 java.applet.Applet 时还要用到 Applet 的祖先类:java.awt.Paneljava.awt.Containerjava.awt.Componentjava.awt.Object

当编译器需要类型信息时,它将查找定义类型的源文件或类文件。编译器先在自举类及扩展类中查找,然后在用户类路径中查找。用户类路径通过两种途径来定义:通过设置 CLASSPATH 环境变量或使用 -classpath 命令行选项。(有关详细资料,请参阅设置类路径)。如果使用 -sourcepath 选项,则编译器在 sourcepath指定的路径中查找源文件;否则,编译器将在用户类路径中查找类文件和源文件。可用 -bootclasspath-extdirs 选项来指定不同的自举类或扩展类;参阅下面的联编选项。

javac 对各种搜索结果的处理:

搜索结果只类文件而没有源文件: javac 使用类文件。

搜索结果只有源文件而没有类文件: javac 编译源文件并使用由此生成的类文件。

搜索结果既有源文件又有类文件: 确定类文件是否过时。若类文件已过时,则 javac 重新编译源文件并使用更新后的类文件。否则, javac 直接使用类文件。

缺省情况下,只要类文件比源文件旧, javac 就认为它已过时。

注意: javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。

文件列表

为缩短或简化 javac 命令,可以指定一个或多个每行含有一个文件名的文件。在命令行中,采用 ‘@’ 字符加上文件名的方法将它指定为文件列表。当 javac 遇到以 `@’ 字符开头的参数时,它对那个文件中所含文件名的操作跟对命令行中文件名的操作是一样的。

例如,可以在名为 sourcefiles 的文件中列出所有源文件的名称。该文件可能形如:

MyClass1.java
MyClass2.java
MyClass3.java

执行sourcefiles文件的命令语句如下:

[root@linux ~]# javac @sourcefiles

标准选项

选项说明
-classpath或者-cp类路径,设置用户类路径,它将覆盖CLASSPATH 环境变量中的用户类路径。若未指定 -sourcepath 选项,则在用户类路径中查找类文件和源文件。若既未设置CLASSPATH 又未指定 -classpath 选项,则用户类路径由当前目录构成
-d目录,设置类文件的目标目录。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的子目录中,必要时创建目录。例如,如果指定 -d c:\myclasses 并且该类名叫 com.mypackage.MyClass,那么类文件就叫作 c:\myclasses\com\mypackage\MyClass.class。若未指定 -d 选项,则 javac 将把类文件放到与源文件相同的目录中。注意: -d 选项指定的目录不会被自动添加到用户类路径中
-deprecation显示每种不鼓励使用的成员或类的使用或覆盖的说明。没有给出 -deprecation 选项的话, javac 将显示这类源文件的名称:这些源文件使用或覆盖不鼓励使用的成员或类
-encoding设置源文件编码名称,例如 EUCJIS/SJIS。若未指定 -encoding 选项,则使用平台缺省的转换器
-g生成所有的调试信息,包括局部变量。缺省情况下,只生成行号和源文件信息
-g:none不生成任何调试信息
-g:{关键字列表}只生成某些类型的调试信息,这些类型由逗号分隔的关键字列表所指定。有效的关键字有:
source源文件调试信息
lines行号调试信息
vars局部变量调试信息
-nowarn禁用警告信息
-O优化代码以缩短执行时间。使用 -O 选项可能使编译速度下降、生成更大的类文件并使程序难以调试。在 JDK 1.2 以前的版本中,javac 的 -g 选项和 -O 选项不能一起使用。在 JDK 1.2 中,可以将 -g 和 -O 选项结合起来,但可能会得到意想不到的结果,如丢失变量或重新定位代码或丢失代码。-O 选项不再自动打开 -depend 或关闭 -g 选项。同样, -O 选项也不再允许进行跨类内嵌
-sourcepath源路径,指定用以查找类或接口定义的源代码路径。与用户类路径一样,源路径项用分号 (😉 进行分隔,它们可以是目录、jar 归档文件或 zip 归档文件。如果使用包,那么目录或归档文件中的本地路径名必须反映包名。注意:通过类路径查找的类,如果找到了其源文件,则可能会自动被重新编译
-verbose冗长输出。它包括了每个所加载的类和每个所编译的源文件的有关信息

联编选项

缺省情况下,类是根据与 javac 一起发行的 JDK 自举类和扩展类来编译。但 javac 也支持联编,在联编中,类是根据其它 Java平台实现的自举类和扩展类来进行编译的。联编时, -bootclasspath 和 -extdirs 的使用很重要;请参阅下面的联编程序示例。

选项说明
-target版本,生成将在指定版本的虚拟机上运行的类文件。缺省情况下生成与 1.11.2 版本的虚拟机都兼容的类文件。JDK 1.2 中的 javac 所支持的版本有:
1.1 保证所产生的类文件与 1.11.2 版的虚拟机兼容。这是缺省状态。
1.2 生成的类文件可在 1.2 版的虚拟机上运行,但不能在 1.1 版的虚拟机上运行。
-bootclasspath自举类路径,根据指定的自举类集进行联编。和用户类路径一样,自举类路径项用分号 (😉 进行分隔,它们可以是目录、jar 归档文件或 zip 归档文件。
-extdirs目录,根据指定的扩展目录进行联编。目录是以分号分隔的目录列表。在指定目录的每个 jar 归档文件中查找类文件。

非标准选项

选项说明
-X显示非标准选项的有关信息并退出。
-Xdepend递归地搜索所有可获得的类,以寻找要重编译的最新源文件。该选项将更可靠地查找需要编译的类,但会使编译进程的速度大为减慢。
-Xstdout将编译器信息送到System.out 中。缺省情况下,编译器信息送到 System.err 中。
-Xverbosepath说明如何搜索路径和标准扩展以查找源文件和类文件。
-J选项将选项传给 javac 调用的 java 启动器。例如, -J-Xms48m 将启动内存设为 48 兆字节。虽然它不以 -X 开头,但它并不是 javac 的‘标准选项’。用 -J 将选项传给执行用 Java 编写的应用程序的虚拟机是一种公共约定。注意: CLASSPATH 、 -classpath 、 -bootclasspath 和 -extdirs 并不指定用于运行 javac 的类。如此滥用编译器的实现通常没有任何意义而且总是很危险的。如果确实需要这样做,可用 -J 选项将选项传给基本的 java 启动器。
[root@linux ~]# javac -cp Servlet-api.jar -d . HelloServlet.java

说明:
HelloServlet.java编译后的.class文件存放在当前目录下,且编译中需要的类文件,编译器可以在 Servlet-api.jar 中查找,该jar文件存放在HelloServlet.java 所在目录下。
-d 后跟路径,.class文件存放在-d后面缩写的路径下

jar

查看详情,猛戳《JDK 命令之 jar – 打包/解包工具》

java

查看详情,猛戳《JDK 命令之 java – 用来执行字节码文件》

javadoc

主要用于生成帮助文档

用法: javadoc [options] [packagenames] [sourcefiles] [@files]

常用选项

选项说明
-overview从 HTML 文件读取概览文档
-public仅显示 public 类和成员
-protected显示 protected/public 类和成员 (默认值)
-package显示 package/protected/public 类和成员
-private显示所有类和成员
-help显示命令行选项并退出
-doclet通过替代 doclet 生成输出
-docletpath指定查找 doclet 类文件的位置
-sourcepath指定查找源文件的位置
-classpath指定查找用户类文件的位置
-exclude指定要排除的程序包列表
-subpackages指定要递归加载的子程序包
-breakiterator计算带有 BreakIterator 的第一个语句
-bootclasspath覆盖由引导类加载器所加载的类文件的位置
-source提供与指定发行版的源兼容性
-extdirs覆盖所安装扩展的位置
-verbose输出有关 Javadoc 正在执行的操作的信息
-locale要使用的区域设置, 例如 en_US 或 en_US_WIN
-encoding源文件编码名称
-quiet不显示状态消息
-J直接将 传递到运行时系统
-X输出非标准选项的提要

通过标准 doclet 提供:

选项说明
-d输出文件的目标目录
-use创建类和程序包用法页面
-version包含 @version 段
-author包含 @author 段
-docfilessubdirs递归复制文档文件子目录
-splitindex将索引分为每个字母对应一个文件
-windowtitle文档的浏览器窗口标题
-doctitle包含概览页面的标题
-header包含每个页面的页眉文本
-footer包含每个页面的页脚文本
-top包含每个页面的顶部文本
-bottom包含每个页面的底部文本
-link创建指向位于 的 javadoc 输出的链接
-linkoffline利用位于 的程序包列表链接至位于 的文档
-excludedocfilessubdir :…排除具有给定名称的所有文档文件子目录。
-group :…在概览页面中, 将指定的程序包分组
-nocomment不生成说明和标记, 只生成声明。
-nodeprecated不包含 @deprecated 信息
-noqualifier ::…输出中不包括限定符的列表。
-nosince不包含 @since 信息
-notimestamp不包含隐藏时间戳
-nodeprecatedlist不生成已过时的列表
-notree不生成类分层结构
-noindex不生成索引
-nohelp不生成帮助链接
-nonavbar不生成导航栏
-serialwarn生成有关 @serial 标记的警告
-tag ::指定单个参数定制标记
-taglet要注册的 Taglet 的全限定名称
-tagletpathTaglet 的路径
-Xdocrootparent将文档注释中出现的所有后跟 /… 的 @docRoot 替换为
-charset用于跨平台查看生成的文档的字符集。
-helpfile包含帮助链接所链接到的文件
-linksource以 HTML 格式生成源文件
-sourcetab指定源中每个制表符占据的空格数
-keywords使程序包, 类和成员信息附带 HTML 元标记
-stylesheetfile用于更改生成文档的样式的文件
-docencoding输出编码名称

javah

主要是用于生成头文件。

用法:javah [options]

常用选项

选项说明
-o输出文件 (只能使用 -d 或 -o 之一)
-d输出目录
-v 或 -verbose启用详细输出
-h 或 --help 或 -?输出此消息
-version输出版本信息
-jni生成 JNI 样式的标头文件 (默认值)
-force始终写入输出文件
-classpath从中加载类的路径
-bootclasspath从中加载引导类的路径
是使用其全限定名称指定的

javap

反编译器,显示编译类中可以访问的方法和数据

语法格式: javap

常用选项

选项说明
-help 或 --help或 -?Print this usage message
-versionVersion information
-v或 -verbosePrint additional information
-lPrint line number and local variable tables
-publicShow only public classes and members
-protectedShow protected/public classes and members
-packageShow package/protected/public classes and members (default)
-p 或 -privateShow all classes and members
-cDisassemble the code
-sPrint internal type signatures
-sysinfoShow system info (path, size, date, MD5 hash) of class being processed
-constantsShow static final constants
-classpath Specify where to find user class files
-bootclasspath Override location of bootstrap class files

jconsole

图形化查看线程的内存信息

[root@linux ~]# jconsole # 执行命令打开图形化界面

jstat

监控进程的 GC 情况

GC:垃圾回收
YGC:young garbage collector 年轻代垃圾回收
FGC:full garbage collector 整个堆的垃圾回收
堆内存结构:分为年轻代(young)、老年代(old),年轻代分为 eden、survive1、survive2,不同区采用不同的 GC 算法

对某进程,每秒监控一次 GC 情况:

[root@linux ~]# jstat -gcutil 1164 1000; # 1164 是进程号,监控时间是1000 毫秒

查看某进程,young 区的 GC 情况:

[root@linux ~]# jstat -gcnew 1164; # 查看进程 1164 的 young 区的 GC 情况

jstack

用来分析线程

查看某进程的线程详细信息:

[root@linux ~]# jstack 1164; # 查看进程 1164 的线程详细信息

jmap

jmap 查看进程的内存信息或者 dump 进程的内存信息

注:dump 转储、倾倒等意思

示例 1,把 java 进程的内存状态信息 dump(转储) 到指定的文件中:

[root@linux ~]# jmap -dump:file=filename 1164; # 把进程 1164 的内存状态信息 dump 到文件 filename 中,filename 需要专门的工具查看,例如:VisualVM[root@linux ~]# jmap -dump:live,format=b,file=myjmapfile.txt 19570; # live 表示只输出活的对象,format=b 表示以字节格式输出[root@linux ~]# jmap -dump:format=b,file=outfile 3024;

示例 2,打印进程 19570 正等候回收的对象的信息:

[root@linux ~]# jmap -finalizerinfo  19570;

注:VisualVM 是一个可以查看 java 进程内存状态信息的MAT
MAT: 内存分析工具

示例 3,直接打印出某进程的堆信息:

[root@linux ~]# jmap -heap 1164; [root@linux ~]# jmap -J-d64 -heap pid # 64 位机上使用需要输入此选项 -J-d64[root@htlwk0001host ~]# jmap -heap 806764;Attaching to process ID 806764, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.181-b13using thread-local object allocation.
Parallel GC with 2 thread(s)Heap Configuration:MinHeapFreeRatio         = 0MaxHeapFreeRatio         = 100MaxHeapSize              = 954204160 (910.0MB)NewSize                  = 19922944 (19.0MB)MaxNewSize               = 317718528 (303.0MB)OldSize                  = 40894464 (39.0MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 250609664 (239.0MB)used     = 33503128 (31.951072692871094MB)free     = 217106536 (207.0489273071289MB)13.36864966228916% used
From Space:capacity = 31981568 (30.5MB)used     = 22862880 (21.803741455078125MB)free     = 9118688 (8.696258544921875MB)71.4876769018955% used
To Space:capacity = 33554432 (32.0MB)used     = 0 (0.0MB)free     = 33554432 (32.0MB)0.0% used
PS Old Generationcapacity = 92274688 (88.0MB)used     = 30681656 (29.26030731201172MB)free     = 61593032 (58.73969268798828MB)33.25034921819513% used24680 interned Strings occupying 2243592 bytes.
[root@htlwk0001host ~]# 

解析:

using parallel threads in the new generation.  ##新生代采用的是并行线程处理方式using thread-local object allocation.   Concurrent Mark-Sweep GC   ##同步并行垃圾回收Heap Configuration:  ##堆配置情况,也就是JVM参数配置的结果[平常说的tomcat配置JVM参数,就是在配置这些]MinHeapFreeRatio = 40 ##最小堆使用比例MaxHeapFreeRatio = 70 ##最大堆可用比例MaxHeapSize      = 2147483648 (2048.0MB) ##最大堆空间大小NewSize          = 268435456 (256.0MB) ##新生代分配大小MaxNewSize       = 268435456 (256.0MB) ##最大可新生代分配大小OldSize          = 5439488 (5.1875MB) ##老年代大小NewRatio         = 2  ##新生代比例SurvivorRatio    = 8 ##新生代与suvivor的比例PermSize         = 134217728 (128.0MB) ##perm区 永久代大小MaxPermSize      = 134217728 (128.0MB) ##最大可分配perm区 也就是永久代大小Heap Usage: ##堆使用情况【堆内存实际的使用情况】New Generation (Eden + 1 Survivor Space):  ##新生代(伊甸区Eden区 + 幸存区survior(1+2)空间)capacity = 241631232 (230.4375MB)  ##伊甸区容量used     = 77776272 (74.17323303222656MB) ##已经使用大小free     = 163854960 (156.26426696777344MB) ##剩余容量32.188004570534986% used ##使用比例Eden Space:  ##伊甸区capacity = 214827008 (204.875MB) ##伊甸区容量used     = 74442288 (70.99369812011719MB) ##伊甸区使用free     = 140384720 (133.8813018798828MB) ##伊甸区当前剩余容量34.65220164496263% used ##伊甸区使用情况From Space: ##survior1区capacity = 26804224 (25.5625MB) ##survior1区容量used     = 3333984 (3.179534912109375MB) ##surviror1区已使用情况free     = 23470240 (22.382965087890625MB) ##surviror1区剩余容量12.43827838477995% used ##survior1区使用比例To Space: ##survior2 区capacity = 26804224 (25.5625MB) ##survior2区容量used     = 0 (0.0MB) ##survior2区已使用情况free     = 26804224 (25.5625MB) ##survior2区剩余容量0.0% used ## survior2区使用比例PS Old  Generation: ##老年代使用情况capacity = 1879048192 (1792.0MB) ##老年代容量used     = 30847928 (29.41887664794922MB) ##老年代已使用容量free     = 1848200264 (1762.5811233520508MB) ##老年代剩余容量1.6416783843721663% used ##老年代使用比例Perm Generation: ##永久代使用情况capacity = 134217728 (128.0MB) ##perm区容量used     = 47303016 (45.111671447753906MB) ##perm区已使用容量free     = 86914712 (82.8883285522461MB) ##perm区剩余容量35.24349331855774% used ##perm区使用比例

示例 4,-histo[:live] 打印每个 class 的实例数目,内存占用,类全名信息,VM的内部类名字开头会加上前缀”*”,如果 live 子参数加上后,只统计活的对象数量。

[root@htlwk0001host ~]# jmap -histo:live 806764;num    #instances(实例数)  #bytes(字节数)    class name
--------------------------------------------------------------1:         80519        8144592             [C2:         80345        1928280             java.lang.String3:         17230        1516240             java.lang.reflect.Method4:         35301        1129632             java.util.concurrent.ConcurrentHashMap$Node5:          9176        1016440             java.lang.Class6:         20765         830600             java.util.LinkedHashMap$Entry[root@htlwk0001host ~]# jmap -histo pid>a.log # 输出到日志文件中,使用文本对比工具,可以对比出GC回收了哪些对象

示例 5,-permstat 打印 classload 和 jvm heap 永久层的信息,包含每个 classloader 的名字,活泼性,地址,父 classloader 和加载的 class 数量,另外内部 String 的数量和占用内存数也会打印出来

[root@htlwk0001host ~]# jmap -permstat 19570;

javaw

其它

监控java线程数:

[root@htlwk0001host ~]# ps -eLf | grep java | wc -l

监控网络客户连接数:

[root@htlwk0001host ~]# netstat -n | grep tcp | grep 侦听端口 | wc -l

上面两个命令,可改动grep的参数,来达到更细致的监控要求。

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

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

相关文章

pc端游戏修改器_原神:不要吐槽手机内存了,想要获得最佳游戏体验,PC端最合适...

想必大家这段时间都被一个米哈游公司的游戏给刷屏了吧,它就是号称用时三年,斥资一亿美元打造的《原神》,正是这种情况下,原神的关注远远要高于其他游戏,并且玩家的期望值也是和关注度成正比。但是,一经发布…

java调用命令行命令_Java命令行界面(第4部分):命令行

java调用命令行命令我的Java命令行解析系列的第四部分介绍了Commandline ,它被描述为 “用于解析命令行参数的Java库”,它“基于使用注释从命令行参数到对象的映射”。 像以前介绍的args4j和jbock一样, Commandline使用注释来提供潜在命令行…

java 字段为空设置默认值_java – 当字段为空时使用MyBatis添加默认值

当我的字段为空时,我想从数据库中插入默认值.我使用的是Oracle数据库.CREATE TABLE "EMPLOYEE"("COL1" VARCHAR2(800) NOT NULL ENABLE,"COL2" VARCHAR2(100) DEFAULT NOT NULL toto,CONSTRAINT "PK_EMPLOYEE" PRIMARY KEY ("COL…

JVM 内存示意图(内存结构图/内存解析图)

图 1: 图 2: 图 3: 图 4:

java登录界面命令_Java命令行界面(第8部分):Argparse4j

java登录界面命令Argparse4j是“ Java命令行参数解析器库”,其主页将其描述为“基于Python的argparse模块的Java命令行参数解析器库”。 在本文中,我将简要介绍如何使用Argparse4j 0.7.0处理命令行参数,该参数类似于本系列中的前七篇文章中有…

python36_第36 p,就这几个方法,Python中文件的操作

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第X篇文章,第二阶段的课程:Python基础知识:Python中文件的操作(下篇)。学习本课程,建议先看一遍:【计算机基础知识】课程。一、 绝对路径与…

java如何使用类数组_java – 如何使用泛型与数组的类?

我想创建一个Classes数组,每个都代表我正在构建的系统中可用的类型。所有涉及的类都是公共超类的子类。所以我想做:Class extends SuperClass>[] availableTypes { SubClass1.class, SubClass2.class };这给我错误:Cannot create a gener…

协议管理模块设计

文章目录协议和合同的区别协议表说明协议签署日志协议和合同的区别 如果协议的内容写得比较明确、具体、详细、齐全,并涉及到违约责任,即使其名称写的是协议,也是合同;如果协议的内容写得比较概括、原则、很不具体,也…

java登录界面命令_Java命令行界面(第7部分):JCommander

java登录界面命令这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库。 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高,最受欢迎的库之一: JCommander 。…

java体系技术框架_java框架之Spring 核心框架体系结构

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪…

tomee_微服务系列:MicroProfile和Apache TomEE

tomee介绍 MicroProfile是由知名供应商于2016年9月发起的一项计划,目的是基于JEE平台构建微服务架构。 任务是针对微服务架构优化企业Java 。 开发人员可以使用这种体系结构,通过Enterprise Java平台以标准化的方式构建和开发微服务应用程序。 API构建将…

IntelliJ IDEA中打开项目时用 Import Project(导入项目) 和 Open(打开项目) 的区别

文章目录创建测试目录使用 Open 方式打开用 Import Project 方式打开用 Open 方式打开文件夹下的多个项目用 Import Project 的方式打开多个项目总结对于 IDEA 中如下图所示的 Import Project 和 Open Project 的区别,一开始不明白怎么回事,网上看了很多…

python做数据库压力测试_Python 写的一个MongoDB压力测试

Python 写的一个MongoDB压力测试$ pip install pymongo#!/usr/bin/env python#codingutf-8#Author: Ca0Gu0from pymongo import MongoClientimport datetime,timeclass MongCli(object):def __init__(self, host"127.0.0.1", port27017, userpytest, passwd pytest12…

java命令模式返回值_JAVA 设计模式 命令模式

目录用途命令模式 (Command)将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或请求日志,以及支持可撤销的操作。命令模式是一种行为型模式。结构图-命令模式结构图Command: 用来声明执行操作的接口。abstract…

IntelliJ IDEA for Mac 如何创建普通的Java项目_创建项目_新建项目

文章目录创建 Java 新项目的流程普通 Java 项目结构Java 项目结构特例讲解创建 Java 新项目的流程 Create New Project Empty Project (1)选择【Empty Project】,则项目不会自动创建模块,项目创建成功之后,会自动弹出…

java 集成开发工具_最好的Java开发人员测试和集成工具

java 集成开发工具通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控。 参加AppDynamics APM导览! 无论您是刚刚起步还是已经从事了一段时间,使用正确的工具进行编程都可以对项目的成功产生巨大的影响。 适当的工具使…

vue实现上下滑动翻页_基于vue实现上下滑动翻页效果

18年年底的时候,一直在做年度报告的H5页面,因为项目需要,需要实现上下滑动翻页,并且上滑的页面比正常页面的比例要缩小一定比例。效果类似于http://www.17sucai.com/pins/demo-show?id7834,这个链接是基于jquery实现的…

java bytebuffer 大小_java – 为什么DirectByteBuffer.array()有额外的大小?

我的代码是:if (frameRGBABuffer null) {frameRGBABuffer ByteBuffer.allocateDirect(cameraHeight * cameraWidth * 4).order(ByteOrder.nativeOrder());}Log.d("tag",frameRGBABuffer.array().length)我的相机分辨率是1280720,因此frameRGBABuffer应该…

关于登录 token 的设计

设计要点: APP 和 小程序 的登录 token 不需要时效性,PC端的登录 token 需要时效性token 中不要加入到期时间,因为每次有效请求,都要更新 token 的到期时间, 如果把到期时间加入到 token 中,那么每次请求就…

aws高额账单_取消堆放以提高延迟并减少AWS账单

aws高额账单大多数性能问题可以通过几种不同的方式解决。 多数人都容易理解和应用许多适用的解决方案。 一些解决方案(例如从JVM管理的堆中删除某些数据结构)更加复杂。 因此,如果您不熟悉此概念,我建议您继续学习我们最近如何减少…