文档章节

msm(CentOS 6)及jvm虚拟机性能监控(04)_recv

刀锋
 刀锋
发布于 2017/05/18 10:38
字数 3320
阅读 5
收藏 0
点赞 0
评论 0

JVM

JVM内存管理--运行时数据区

                     
JVM大体由五个部分组成,分别为JVM Stack、Native Stack、Program Counter Register、Java Heap、Method Area。其中JVM Stack、Native Stack、Program Counter Register为每个线程私有,然而Java Heap、Method Area为所有线程共享。每个对象都是由它对应的内部数据和外置的、可以由类提供共享给各个对象的各个方法组成。方法是外部代码,由每个实例化出来的对象可以调用的,而 Java Heap主要是用来存放这些对象的,对于JVM来说,Java Heap所占据的空间最大。

两类JVM管理的内存

JVM管理的内存段可以分为两大类:线程共享内存和线程私有内存。

线程共享内存

  • Method Area : 存储jvm加载的class、常量、静态变量、即时编译器编译后的代码等。
  • Java Heap :存储java的所有对象实例、数组等。

线程私有内存

  • Program Counter Register : 每个线程都有自己的计数寄存器,存储当前线程执行字节码的地址。
  • JVM Stack : jvm会为每个运行线程分配一个栈区,线程调用方法时和方法返回时会进行入栈和出栈操作。
  • Native Stack : 与 jvm stack 类似,只不过此区域是为调用本地方法服务。

Java Heap Size Options

http://docs.oracle.com/cd/E13222_01/wls/docs81/perform/JVMTuning.html

Task Option Recommended Value
Setting the New generation heap size -XX:NewSize

Set this value to a multiple of 1024 that is greater than 1MB. As a general rule, set -XX:NewSize to be one-fourth the size of the maximum heap size. Increase the value of this option for larger numbers of short-lived objects.

Be sure to increase the New generation as you increase the number of processors. Memory allocation can be parallel, but garbage collection is not parallel.

Setting the maximum New generation heap size -XX:MaxNewSize Set this value to a multiple of 1024 that is greater than 1MB
Setting New heap size ratios -XX:SurvivorRatio

The New generation area is divided into three sub-areas: Eden, and two survivor spaces that are equal in size.

Configure the ratio of the Eden/survivor space size. Try setting this value to 8, and then monitor your garbage collection.

Setting minimum heap size -Xms Set the minimum size of the memory allocation pool. Set this value to a multiple of 1024 that is greater than 1MB. As a general rule, set minimum heap size (-Xms) equal to the maximum heap size (-Xmx) to minimize garbage collections.
Setting maximum heap size -Xmx Set the maximum size of the memory allocation pool. Set this value to a multiple of 1024 that is greater than 1MB.

 

参数 说明
-Xmx young generation 和 old generation总共可用的最大空间
-Xms young generation 和 old genertaion二者初始空间。没分配的叫做reserved,再没有的话,向内核申请,如果内核没有内存的话,想办法使用LRU算法从其他程序里腾出内存给它。
-XX:NewSize young generation初始空间
-XX:MaxNewSize young generation最大空间
-XX:PermSize permanent generation初始空间
-XX:MaxPermSize permanent generation最大空间

参数 -Xmx 和 -Xms 经常使用,使用的方式是,在jvm启动时将该参数及其对应的值传递给jvm,具体合适传递哪?一般来讲,启动tomcat的话,在catalina.sh中有两个环境变量:CATALINA_OPTS、JAVA_OPTS。CATALINA_OPTS仅对启动运行tomcat实例的jvm虚拟机有效。JAVA_OPTS对本机上的所有JVM有效。如果机器上不仅仅有tomcat实例,建议使用CATALINA_OPTS。可以直接编辑catalina.sh,也可以使用命令设定,例如:

$ export CALALINA_OPTS="-Xmx256m"

The memory structure of a JVM process

                 

对于Java Heap而言,分为 young generation、old generation、permanent generation三个区域。young generation又可分为 to、from、eden三个子区域,之所以分成这三个子区域主要原因是在young generation上面的垃圾收集算法或者叫垃圾收集器,会分别实现young generation、old generation、permanent generation三个区域移动对象之后,完成gc。创建的对象在young generation中过了一定存活时间以后,依然被采用的,那么该对象就会从young generation挪到old generation。如果有些对象创建以后不会被删除的,那么该对象就会被存放在permanent generation。

JVM Memory Handling

  • When the JVM starts, the host OS assigns a dedicated( 专注的,投入的; 献身的; 专用的;) memory space to that VM【vm会从操作系统那里取到一定内存空间】
  • The VM allocates memory to the application within that dedicated memory space【vm会按照特定的格式划分区段,之所以划分是为了让垃圾回收器完成垃圾回收】
  • The VM frees memory automatically via(经过; 通过,凭借; 取道;) garbage collectors
  • Garbage Collection is an expensive(昂贵的,花钱多的; 豪华的;) algorithm

Garbage Collectors

如果不考虑permanent generation的话,内存区域大体可以分为以下三个部分:

  • Eden Space: where objects ara born
  • Survivor Spaces : Where objects mature(成熟),contains to, from。
  • Tenured Space : Where objects grow old and die

其中 Eden Space 和 Survivor组成的是young generation。Tenured Space表示old generation。

JVM Memory Layout

               

New/Young - Recently created object

Old - Long lived object

Perm - JVM classes and methods

Garbage Collector

  • Collecting unsed java object
  • Cleaning memory
  • Minor GC : Collection memory in New/Young generation
  • Major GC( Full GC ) : Collection memory in old generation

young generation和old generation的gc的频率不同,算法也不同。不断地执行垃圾回收,腾出空间,主要是针对young generation实现的,对young generation实现垃圾回收的叫做Minor GC,对old generation实现垃圾回收的叫做Major GC。java当中垃圾回收器本身有多种实现方案,即便是Minor GC、Major GC。

Minor GC

                 

                 

                 

注意垃圾回收不是实时进行的,而是积攒到一定的量才会进行操作。执行垃圾回收的过程中其他的线程无法工作,因为其非常消耗资源,会占据整个cpu,这种垃圾回收算法也称之为stop the world,这也就是我们日常生活中使用andriod手机假死的原因。与此不同的苹果ios,是用object-c开发的,程序直接运行在硬件之上,其一:性能好,不用虚拟机解释、运行代码;其二:object-c自己可以实现内存管理,内存回收是及时的,不存在垃圾回收的过程。

Major GC

  • Old Generation
  • Mark and compact
  • Slow ( 1st - goes through the entire heap, marking unreachable objects. 2nd - unreachable objects are compacted )。

对于old generation的垃圾回收一般用Mark and compact( 标记清除算法)实现的,这种垃圾回收的工作恒比较慢,分为两个阶段,第一个步要遍历整个堆内存,标记不再使用的对象,第二步将不再使用的对象一起打包一次性回收。Major GC发生的过程才是真正的stop the world发生的过程,一般发声Major GC原因是old generation 中的对象过多,而大多数的java程序发生Major GC 很少,因为对象被送到old generation区域的少之又少,在到达old generation之前已经被回收了。一旦发声full gc,就需要等待该过程完成,可能也需要手动释放一些堆空间。

                    

 

根据业务运行模型和内存使用方式来指定不同区域的大小。

性能监控工具

常见问题:OutOfMemoryError:内存不足。引发该问题的原因有内存泄漏(代码问题)、线程死锁、锁竞争(Lock Contention)、Java消耗过多的CPU等等。

jps

jps( java machine process status tool )

监控jvm进程状态信息。jps本身也是使用java开发的,所以它本身也运行这一个java进程。

jps [options] [hostid]
  -m :输出传入main方法的参数
  -l :显示main类或者jar文件的完全限定名称(也就是完整类名)
  -v :显示jvm指定的参数(也就是启动jvm的时候传递了哪些参数给它) 
[root@app1 ~]# jps
3808 Jps
784 Bootstrap
[root@app1 ~]# jps -m -l # 查看真正启动jvm的程序或者类是什么
3730 sun.tools.jps.Jps -m -l
784 org.apache.catalina.startup.Bootstrap start
[root@app1 ~]# 
[root@app1 ~]# jps -m -l -v
784 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/usr/soft/apache-tomcat-7.0.76/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms2048m -Xmx32768m -Xss4096K -XX:PermSize=1024m -XX:MaxPermSize=2048m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/soft/apache-tomcat-7.0.76/endorsed -Dcatalina.base=/usr/soft/apache-tomcat-7.0.76 -Dcatalina.home=/usr/soft/apache-tomcat-7.0.76 -Djava.io.tmpdir=/usr/soft/apache-tomcat-7.0.76/temp
4056 sun.tools.jps.Jps -m -l -v -Denv.class.path=.:/usr/jdk64/jdk1.7.0_67/lib/dt.jar:/usr/jdk64/jdk1.7.0_67/lib/tools.jar -Dapplication.home=/usr/jdk64/jdk1.7.0_67 -Xms8m
[root@app1 ~]# 

jstack

用于查看某个java进程内的线程堆栈信息。

jstack [options] pid
  -l long listings 输出完整的锁信息。可以指定输出某一项。
  -m 混合模式,即会输出java堆栈及c/c++堆栈信息

哪一个java进程最耗cpu? top->jstack

jmap

jmap (jvm mamory map) :查看堆内存使用情况。

jmap [options] pid
 -heap :详细输出堆内存空间使用状态信息
 -histo[:live] :查看堆内存中的对象数目、大小统计结果。
[root@app1 ~]# jmap
Usage:
    jmap [option] <pid>
        (to connect to running process)
    jmap [option] <executable <core>
        (to connect to a core file)
    jmap [option] [server_id@]<remote server IP or hostname>
        (to connect to remote debug server)

where <option> is one of:
    <none>               to print same info as Solaris pmap
    -heap                to print java heap summary
    -histo[:live]        to print histogram of java object heap; if the "live"
                         suboption is specified, only count live objects
    -permstat            to print permanent generation statistics
    -finalizerinfo       to print information on objects awaiting finalization
    -dump:<dump-options> to dump java heap in hprof binary format
                         dump-options:
                           live         dump only live objects; if not specified,
                                        all objects in the heap are dumped.
                           format=b     binary format
                           file=<file>  dump heap to <file>
                         Example: jmap -dump:live,format=b,file=heap.bin <pid>
    -F                   force. Use with -dump:<dump-options> <pid> or -histo
                         to force a heap dump or histogram when <pid> does not
                         respond. The "live" suboption is not supported
                         in this mode.
    -h | -help           to print this help message
    -J<flag>             to pass <flag> directly to the runtime system
[root@app1 ~]# jmap 784
Attaching to process ID 784, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.65-b04
0x0000000000400000      7K      /usr/jdk64/jdk1.7.0_67/bin/java
0x00000031f8400000      153K    /lib64/ld-2.12.so
0x00000031f8800000      22K     /lib64/libdl-2.12.so
0x00000031f8c00000      1883K   /lib64/libc-2.12.so
0x00000031f9000000      142K    /lib64/libpthread-2.12.so
0x00000031f9400000      46K     /lib64/librt-2.12.so
0x00000031f9800000      585K    /lib64/libm-2.12.so
0x00000031fa800000      91K     /lib64/libgcc_s-4.4.7-20120601.so.1
0x00000031fd800000      111K    /lib64/libresolv-2.12.so
0x00007f28b41eb000      26K     /lib64/libnss_dns-2.12.so
0x00007f28bc172000      477K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libt2k.so
0x00007f2934178000      512K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libfontmanager.so
0x00007f293c1ea000      36K     /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/headless/libmawt.so
0x00007f297c11f000      755K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libawt.so
0x00007f29e0bf2000      250K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libsunec.so
0x00007f29e123a000      44K     /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libmanagement.so
0x00007f29e1442000      112K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libnet.so
0x00007f29e1659000      89K     /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libnio.so
0x00007f331872f000      120K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libzip.so
0x00007f331894a000      64K     /lib64/libnss_files-2.12.so
0x00007f3318b61000      214K    /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libjava.so
0x00007f3318d8c000      63K     /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/libverify.so
0x00007f331939b000      14853K  /usr/jdk64/jdk1.7.0_67/jre/lib/amd64/server/libjvm.so
0x00007f331a212000      103K    /usr/jdk64/jdk1.7.0_67/lib/amd64/jli/libjli.so
[root@app1 ~]# jmap -heap 784
Attaching to process ID 784, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.65-b04

using thread-local object allocation.
Parallel GC with 18 thread(s)  # 垃圾收集算法

Heap Configuration:
   MinHeapFreeRatio = 0
   MaxHeapFreeRatio = 100
   MaxHeapSize      = 34359738368 (32768.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 1073741824 (1024.0MB)
   MaxPermSize      = 2147483648 (2048.0MB)
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 4660920320 (4445.0MB)
   used     = 3455457416 (3295.380989074707MB)
   free     = 1205462904 (1149.619010925293MB)
   74.13680515353671% used
From Space:
   capacity = 6815744 (6.5MB)
   used     = 6811632 (6.4960784912109375MB)
   free     = 4112 (0.0039215087890625MB)
   99.93966909555289% used
To Space:
   capacity = 143130624 (136.5MB)
   used     = 0 (0.0MB)
   free     = 143130624 (136.5MB)
   0.0% used
PS Old Generation
   capacity = 1431830528 (1365.5MB)
   used     = 275154128 (262.4074249267578MB)
   free     = 1156676400 (1103.0925750732422MB)
   19.216947999030232% used
PS Perm Generation
   capacity = 1073741824 (1024.0MB)
   used     = 91206560 (86.98135375976562MB)
   free     = 982535264 (937.0186462402344MB)
   8.494272828102112% used

42967 interned Strings occupying 5456928 bytes.
[root@app1 ~]# jmap -histo:live 784 # 详细显示java堆空间中的每一个对象
 num     #instances         #bytes  class name
----------------------------------------------
   1:        238261       31749640  [C
   2:         48744       30171672  [B
   3:        152303       23372728  <constMethodKlass>
   4:        152303       19508224  <methodKlass>
   5:         13376       16932432  <constantPoolKlass>
   6:         13376       10056128  <instanceKlassKlass>
   7:         10801        9292768  <constantPoolCacheKlass>
   8:        233736        7479552  java.lang.String
   9:         43674        4785504  [Ljava.lang.Object;
  10:          6485        3820120  <methodDataKlass>
  11:         25037        3605328  java.lang.reflect.Method
  12:         14301        3046232  java.lang.Class
  13:         47576        3044864  java.util.LinkedHashMap$Entry
  14:         13333        2737448  [Ljava.util.HashMap$Entry;
  15:         54334        2608032  java.util.concurrent.ConcurrentHashMap$HashEntry
  16:          4380        2191472  [I
  17:         21963        2021432  [[I
  18:         38640        1854720  java.util.HashMap$Entry
  19:         17256        1794624  java.net.URL
  20:         18236        1309960  [S
  21:         14735        1296680  java.util.LinkedHashMap
  22:         30648        1225920  java.util.ArrayList
  23:          5079        1066472  [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
  24:         14417        1038024  org.apache.xerces.dom.DeferredTextImpl
  25:         12418         894096  org.apache.catalina.loader.ResourceEntry
  26:         14042         835776  [Ljava.lang.String;
  27:          6231         797568  org.apache.jasper.compiler.Node$TemplateText
  28:          7247         753688  org.apache.xerces.dom.DeferredElementImpl
  29:          7749         681912  org.apache.jasper.compiler.Mark
  30:         13745         659760  java.lang.ref.WeakReference
  31:         10086         645504  org.apache.xerces.dom.DeferredAttrImpl
  32:         11230         628880  java.lang.ref.SoftReference
  33:          8399         604728  java.util.HashMap
。。。省略

jhat

jhat (jvm heap analysis tool),更多用于代码中的运行状况。

[root@app1 ~]# jhat
ERROR: No arguments supplied
Usage:  jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>

        -J<flag>          Pass <flag> directly to the runtime system. For
                          example, -J-mx512m to use a maximum heap size of 512MB
        -stack false:     Turn off tracking object allocation call stack.
        -refs false:      Turn off tracking of references to objects
        -port <port>:     Set the port for the HTTP server.  Defaults to 7000
        -exclude <file>:  Specify a file that lists data members that should
                          be excluded from the reachableFrom query.
        -baseline <file>: Specify a baseline object dump.  Objects in
                          both heap dumps with the same ID and same class will
                          be marked as not being "new".
        -debug <int>:     Set debug level.
                            0:  No debug output
                            1:  Debug hprof file parsing
                            2:  Debug hprof file parsing, no server
        -version          Report version number
        -h|-help          Print this help and exit
        <file>            The file to read

For a dump file that contains multiple heap dumps,
you may specify which dump in the file
by appending "#<number>" to the file name, i.e. "foo.hprof#3".

All boolean options default to "true"
[root@app1 ~]# 

jstat

jstat (jvm统计监测工具)

[root@app1 ~]# jstat
invalid argument count
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]  # option为必选项

Definitions:
  <option>      An option reported by the -options option
  <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                     <lvmid>[@<hostname>[:<port>]]
                Where <lvmid> is the local vm identifier for the target
                Java virtual machine, typically a process id; <hostname> is
                the name of the host running the target Java virtual machine;
                and <port> is the port number for the rmiregistry on the
                target host. See the jvmstat documentation for a more complete
                description of the Virtual Machine Identifier.
  <lines>       Number of samples between header lines.
  <interval>    Sampling interval. The following forms are allowed:
                    <n>["ms"|"s"]
                Where <n> is an integer and the suffix specifies the units as 
                milliseconds("ms") or seconds("s"). The default units are "ms".
  <count>       Number of samples to take before terminating.
  -J<flag>      Pass <flag> directly to the runtime system.
[root@app1 ~]# jstat -gc 784  
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
129024.0 512.0   0.0    0.0   4153856.0 61658.6  1398272.0   120259.0  1048576.0 88442.2     23    1.005   2      0.641    1.646
[root@app1 ~]# 
S0C,S1C,S0U,S1U:C表示容量,U表示已用量。
EC,EU:eden区域的容量和已用量。
OC,OU
PC,PU
YGC,YGT:表示新生代的gc次数和耗时
FGC,FGCT:表示FULL GC的次数和耗时
GCT:GC总耗时

jconsole

jvisualvm

© 著作权归作者所有

共有 人打赏支持
刀锋
粉丝 2
博文 382
码字总数 296890
作品 0
济南
程序员
深入理解JVM学习笔记(一、总览)

1、JVM历史 2、JVM内存结构 3、JVM垃圾回收机制 4、JVM性能监控工具 5、JVM性能调优案例时间 6、JVM类文件结构 7、JVM类加载机制 8、JVM字节码执行引擎 9、JVM虚拟机编译及其运行时优化 10、...

jintaohahahaha
05/28
0
0
Jconsole jvm 监控

JDK1.5提供JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息 等,还可以执行MBean公开的方法或强制进行垃圾...

anfield
2010/11/13
0
0
未来趋势分析:Linux有可能成为java OS

发布时间:2009.03.17 04:48 来源:赛迪网 作者:fen 【赛迪网-IT技术报道】Sun公司已经开放了对java技术的最后限制,并且鼓励在linux发行版中集成java平台和netbeans框架,在未来的时间内j...

晨曦之光
2012/03/09
0
0
JVM学习总结五——性能监控及故障处理工具

之前扯了四篇理论,这一篇终于可以动动手了。本篇我们将介绍JVM常用的一些工具,这些工具将是我们监控JVM状态、处理故障和调优分析的利器。 不过在开始之前,我还是要先车扯两句:工具终归只...

oO脾气不坏Oo
2014/03/16
0
0
[Java学习探讨]为什么学Java虚拟机的Java程序员更值钱?

[Java学习探讨]为什么学Java虚拟机的Java程序员更值钱? 曾经的我经常害怕处理与JVM相关的异常,对JVM的配置参数也一无所知,那时候我天真地认为,JVM的出现本身就是想让程序员屏蔽实现细节,...

原创小博客
前天
0
0
Linux CentOS 6.x 开发配置文档 3 - Tomcat

一,下载:wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.40/bin/apache-tomcat-7.0.40.tar.gz (MD5校验方法:md5sum apache-tomcat-7.0.37.tar.gz,看看显示的d......

-蒋全忠-
2015/05/13
0
0
面试中关于Java虚拟机(jvm)的问题看这篇就够了

最近看书的过程中整理了一些面试题,面试题以及答案都在我的文章中有所提到,希望你能在以问题为导向的过程中掌握虚拟机的核心知识。面试毕竟是面试,核心知识我们还是要掌握的,加油~~~ 下面...

snailclimb
05/12
0
0
Java系列笔记 - JVM监控与调优

光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。下面就...

明舞
2015/08/18
0
0
不断优化配置,逐步提高性能——我的一次性能测试经历

近日,合作伙伴想要针对我们的应用服务器做一个性能测试,测试的基础是伙伴原有的一个功能庞大而结构复杂的业务系统,目的是看应用服务器是否能够满足业务系统的需要,并对应用服务器做一个总...

晨曦之光
2012/03/09
0
0
读《深入理解Java虚拟机》- 笔记02

《深入理解Java虚拟机:JVM高级特性与最佳实践》第2版 13. 内存分配(一般来说,不是绝对的) 大方向在堆上分配(也可能被JIT间接分配到栈),对象主要、优先分配在新生代Eden区,少数情况下...

阿历Ali
07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java IO类库之ObjectInputStream和ObjectOutPutStream

一、ObjectOutputStream 1 - ObjectOuputStream介绍 ObjectOutputStream(对象字节输出流),用于将一个序列化对象写入到创建ObjectOutputStream时传入的底层字节输入流中,通过源码可知该类继...

老韭菜
4分钟前
0
0
17.TCP:传输控制协议

介绍 TCP和UDP使用同一网络层(IP),但TCP提供了面向连接、可靠的传输层服务 TCP传输给IP层的信息单位称为报文段或段 TCP通过如下方式保证可靠性: 应用数据被分割成TCP认为最合适发送的数据...

loda0128
13分钟前
0
0
重装Oracle时出现environment variable "PATH"错误的解决办法

在win7 64位下重新安装oracle 11g,一直报environment variable "PATH"的错误,按说明将path里多余的路径删除,但没办法解决。选择忽略错误继续安装,装一半会报CRC错误,还是安装失败。最好...

良言
18分钟前
0
0
TensorFlow 全连接的mnist

全连接的mnist import tensorflow as tf# 导入 MINST 数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_ho......

阿豪boy
19分钟前
0
0
JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
37分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
38分钟前
1
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
56分钟前
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
今天
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0
bash审计系统搭建

step1:使用saltstack工具bash部署>>>>>> # salt -N clienta state.sls audit step2:安装elasticsearch>>>>>> 注意: 1.不能以root用户进行启动,需要创建用户,并对解压的elasticsearch目录赋......

硅谷课堂
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部