linux at java,Linux-Tutorial/Java-bin.md at master · linsanityHuang/Linux-Tutorial · GitHub

Java bin 目录下的工具

JVM 内存结构

运行时数据区(JVM 规范)

a5c440003589a9f2c396d761356e168b.png

VM 栈(JVM 虚拟机栈)

是线程私有的,它的生命周期和线程相同。它描述的是 Java 方法执行的内存模式。

Java 堆区(Heap)

是 Java 虚拟机所管理的内存中最大的一块。是被所有线程共享的一块内存区域,在虚拟机启动时候创建。用于存放对象实例。

方法区(Method Area)

也是各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

虽然在 JVM 规范上是描述为堆的一个逻辑部分,但是它有一个别名:Non-Heap(非堆),独立于堆区之外的。JDK8 它是:Metaspace 区

Metaspace:主要存放:Class、Package、Method、Field、字节码、常量池、符号引用等等

方法区里面有一个:运行时常量池(Run-Time Constant Pool),用于存放编译期生成的各种字面量和符号应用,在类加载后进入该池存放。

本地方法栈(Native Method Stacks)

与虚拟机栈所发挥的作用类似,之间的区别:

虚拟机栈是为虚拟机执行 Java 方法(也就是字节码)服务

本地方法栈是为了虚拟机使用到 Native 方法服务。

JDK8 真实内存结构(HotSpot)

HotSpot--Java HotSpot Performance Engine,是 Java 虚拟机的一个实现,目前是 Oracle 在维护和发布。

ffcc914620c2ec559279e67faba524d4.png

JDK8 HotSpot 的堆内存区域结构

d887dfca01d4b3bea23228fe866deb89.png

组成:Eden + Surviver(S0 + S1) + Old

对象生命周期:Eden > Surviver(S0 + S1) > Old

Eden:该区域是最主要的刚创建的对象的内存分配区域,绝大多数对象都会被创建到这里(除了部分大对象通过内存担保机制创建到Old区域,默认大对象都是能够存活较长时间的),该区域的对象大部分都是短时间都会死亡的,故垃圾回收器针对该部分主要采用标记整理算法了回收该区域。

Surviver:该区域也是属于新生代的区域,该区域是将在Eden中未被清理的对象存放到该区域中,该区域分为两块区域,采用的是复制算法,每次只使用一块,Eden与Surviver区域的比例是8:1,是根据大量的业务运行总结出来的规律。

Old:该区域是属于老年代,一般能够在Surviver中没有被清除出去的对象才会进入到这块区域,该区域主要是采用标记清除算法。

总结:java堆的垃圾回收是垃圾回收器最主要的光顾对象,整体采用分代收集的策略,对不同区域结合其特点采用不同的垃圾收集算法。我们在编程中也应该关注这一块区域,尽量不适用大对象,尽可能的创建局部对象,使用过后确定废弃不用的对象及时断开引用,尽量避免使用循环的对象引用(可达性分析也是比较消耗资源的)等等。

JVM内存区域的详解图

963bb8928d532507c95c8127b1b05dbb.png

更多这类文章

频繁GC问题或内存溢出排查流程

使用 jps,查看线程ID,假设 PID 为 12011

使用 jstat -gc PID 250 20,查看gc情况,一般比较关注PERM区的情况,查看GC的增长情况。

使用 jstat -gccause PID:额外输出上次GC原因

使用 jmap -dump:format=b,file=/opt/myHeapDumpFileName 12011,生成堆转储文件

使用 jhat 或者可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)分析堆情况。

结合代码解决内存溢出或泄露问题。

死锁问题

使用 jps查看线程ID,假设 PID 为 12011

使用 jstack 12011 查看线程情况

jps

显示当前所有 java 进程 pid 的命令

16470 Jps

12011 Bootstrap

jps -v 跟:ps -ef|grep java 主要输出内容一样

12011 是我这边的一个 java 应用的 pid,下面的其他命令都是自己与此应用进行分析的

jstat(重要)

显示进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

查看类加载信息:jstat -class PID

垃圾回收统计

jstat -gc PID 250 10,每250毫秒查询一次,一共查询10次。

S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

34944.0 34944.0 1006.5 0.0 279616.0 235729.8 699072.0 12407.5 20736.0 20145.5 2560.0 2411.8 6 0.392 0 0.000 0.392

列含义说明:

**34944.0 表示 34M 大小,235729.8 表示 235M **

SO + S1 + Eden = young 区

-S0C 年轻代中第一个survivor(幸存区)的容量 (字节)

-S1C 年轻代中第二个survivor(幸存区)的容量 (字节)

-S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节) (字母 U 表示 used)

-S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节) (字母 U 表示 used)

-EC 年轻代中Eden(伊甸园)的容量 (字节)

-EU 年轻代中Eden(伊甸园)目前已使用空间 (字节)

OC + OU = old 区

-OC Old代的容量 (字节)

-OU Old代目前已使用空间 (字节)

MC + MU = Metaspace 区

MC 方法区大小

MU 方法区使用大小

其他

CCSC 压缩类空间大小

CCSU 压缩类空间使用大小

YGC 年轻代垃圾回收次数

YGCT 年轻代垃圾回收消耗时间

FGC 老年代垃圾回收次数

FGCT 老年代垃圾回收消耗时间

GCT 垃圾回收消耗总时间

堆内存统计

jstat -gccapacity 12011 250 10,查询进程 12011 VM内存中三代(young,old,perm)对象的使用和占用大小,每250毫秒查询一次,一共查询10次。

NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

349504.0 1398080.0 349504.0 34944.0 34944.0 279616.0 699072.0 2796224.0 699072.0 699072.0 0.0 1067008.0 20736.0 0.0 1048576.0 2560.0 6 0

列含义说明:

NGCMN 年轻代(young)中初始化(最小)的大小(字节)

NGCMX 年轻代(young)的最大容量 (字节)

NGC 年轻代(young)中当前的容量 (字节)

S0C 年轻代中第一个survivor(幸存区)的容量 (字节)

S1C 年轻代中第二个survivor(幸存区)的容量 (字节)

EC 年轻代中Eden(伊甸园)的容量 (字节)

OGCMN old代中初始化(最小)的大小 (字节)

OGCMX old代的最大容量(字节)

OGC old代当前新生成的容量 (字节)

OC Old代的容量 (字节)

MCMN 最小元数据容量

MCMX 最大元数据容量

MC 当前元数据空间大小

CCSMN 最小压缩类空间大小

CCSMX 最大压缩类空间大小

CCSC 当前压缩类空间大小

YGC 年轻代gc次数,从应用程序启动到采样时年轻代中gc次数

FGC 老年代GC次数,从应用程序启动到采样时old代(全gc = Full gc次数)gc次数

gcutil

使用:jstat -gcutil PID 3000 10:

正常情况结果应该是这样的:

S0 S1 E O M CCS YGC YGCT FGC FGCT GCT

0.00 0.00 67.63 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.68 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.71 38.09 78.03 68.82 124 0.966 5 0.778 1.744

0.00 0.00 67.71 38.09 78.03 68.82 124 0.966 5 0.778 1.744

S0:SO 当前使用比例

S1:S1 当前使用比例

E:Eden 区使用比例(百分比)(异常的时候,这里可能会接近 100%)

O:old 区使用比例(百分比)(异常的时候,这里可能会接近 100%)

M:Metaspace 区使用比例(百分比)(异常的时候,这里可能会接近 100%)

CCS:压缩使用比例

YGC:年轻代垃圾回收次数

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间(Full gc耗时)(单位秒)

GCT:垃圾回收消耗总时间(单位秒)

异常的时候每次 Full GC 时间也可能非常长,每次时间计算公式=FGCT值/FGC指)

在 YGC 之前 年轻代 = eden + S1;YGC 之后,年轻代 = eden + S0。

如果看到 YGC 之后 old 区空间没变,表示此次 YGC,没有对象晋升到 old 区

jmap

生成堆转储快照(heap dump)

heap dump 主要记录了在某一时刻JVM堆中对象使用的情况,即某个时刻JVM堆的快照,是一个二进制文件,主要用于分析哪些对象占用了太对的堆空间,从而发现导致内存泄漏的对象。

堆Dump是反应Java堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。 一般,在内存不足、GC异常等情况下,我们就会怀疑有内存泄露。这个时候我们就可以制作堆Dump来查看具体情况,分析原因。

常见内存错误:

outOfMemoryError 年老代内存不足。

outOfMemoryError:PermGen Space 永久代内存不足。

outOfMemoryError:GC overhead limit exceed 垃圾回收时间占用系统运行时间的98%或以上。

jmap -heap 12011,查看指定进程堆(heap)使用情况

Attaching to process ID 12011, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 25.151-b12

using thread-local object allocation.

Mark Sweep Compact GC

Heap Configuration:

MinHeapFreeRatio = 40

MaxHeapFreeRatio = 70

MaxHeapSize = 4294967296 (4096.0MB)

NewSize = 357892096 (341.3125MB)

MaxNewSize = 1431633920 (1365.3125MB)

OldSize = 715849728 (682.6875MB)

NewRatio = 2

SurvivorRatio = 8

MetaspaceSize = 21807104 (20.796875MB)

CompressedClassSpaceSize = 1073741824 (1024.0MB)

MaxMetaspaceSize = 17592186044415 MB

G1HeapRegionSize = 0 (0.0MB)

Heap Usage:

New Generation (Eden + 1 Survivor Space):

capacity = 322109440 (307.1875MB)

used = 242418024 (231.1878433227539MB)

free = 79691416 (75.9996566772461MB)

75.2595217327378% used

Eden Space:

capacity = 286326784 (273.0625MB)

used = 241387328 (230.20489501953125MB)

free = 44939456 (42.85760498046875MB)

84.30483681191348% used

From Space:

capacity = 35782656 (34.125MB)

used = 1030696 (0.9829483032226562MB)

free = 34751960 (33.142051696777344MB)

2.88043458819826% used

To Space:

capacity = 35782656 (34.125MB)

used = 0 (0.0MB)

free = 35782656 (34.125MB)

0.0% used

tenured generation:

capacity = 715849728 (682.6875MB)

used = 12705280 (12.11669921875MB)

free = 703144448 (670.57080078125MB)

1.774852947908084% used

7067 interned Strings occupying 596016 bytes.

jmap -histo 12011,查看堆内存(histogram)中的对象数量及大小(下面 demo 内容太多,所以选取其中一部分)

jmap -histo:live 12011,查看堆内存(histogram)中的对象数量及大小,但是JVM会先触发gc,然后再统计信息

jmap -dump:format=b,file=/opt/myHeapDumpFileName 12011,将内存使用的详细情况输出到文件,之后一般使用其他工具进行分析。

生成的文件可以用一些可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)来查看

编号 个数 字节 类名

508: 6 192 java.lang.invoke.LambdaForm$BasicType

509: 8 192 java.lang.invoke.MethodHandleImpl$Intrinsic

510: 8 192 java.math.RoundingMode

511: 6 192 java.net.NetworkInterface$1checkedAddresses

512: 6 192 java.rmi.server.UID

513: 3 192 java.text.DateFormatSymbols

514: 8 192 java.util.Formatter$FixedString

515: 6 192 java.util.TreeMap$KeyIterator

516: 8 192 java.util.regex.Pattern$Slice

517: 8 192 jdk.net.SocketFlow$Status

518: 6 192 net.sf.ehcache.DefaultElementEvictionData

519: 3 192 net.sf.ehcache.store.chm.SelectableConcurrentHashMap

520: 8 192 org.apache.logging.log4j.Level

521: 8 192 org.apache.logging.log4j.core.appender.rolling.RolloverFrequency

522: 4 192 org.apache.logging.log4j.core.impl.ThrowableProxy

523: 3 192 org.apache.logging.log4j.core.layout.PatternLayout

524: 12 192 org.apache.logging.log4j.core.util.datetime.FastDateParser$NumberStrategy

525: 3 192 org.apache.logging.log4j.core.util.datetime.FixedDateFormat

526: 8 192 org.apache.logging.log4j.spi.StandardLevel

527: 2 192 sun.nio.ch.ServerSocketChannelImpl

528: 4 192 sun.nio.cs.StreamEncoder

529: 6 192 sun.reflect.generics.reflectiveObjects.TypeVariableImpl

530: 11 176 java.text.NumberFormat$Field

531: 11 176 java.util.concurrent.ConcurrentSkipListSet

532: 2 176 javax.management.remote.rmi.NoCallStackClassLoader

533: 11 176 org.apache.logging.log4j.core.lookup.MapLookup

534: 8 168 [Ljava.lang.reflect.TypeVariable;

535: 1 168 [[Ljava.math.BigInteger;

jstack(线程快照 -- CPU 负载高)

jstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁)

jstack用于生成java虚拟机当前时刻的 线程快照(thread dump)。主要记录JVM在某一时刻各个线程执行的情况,以栈的形式显示,是一个文本文件。

线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。

线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

jstack 12011,查看线程情况

jstack -l 12011,除堆栈外,显示关于锁的附件信息

导出文件:jstack -l PID >> /opt/jstack-tomcat1-20180917.log

把占用 CPU 资源高的线程十进制的 PID 转换成 16 进制:printf "%x\n" PID,比如:printf "%x\n" 12401 得到结果是:3071

在刚刚输出的那个 log 文件中搜索:3071,可以找到:nid=0x3071

在线看某个线程 PID 的情况:jstack 进程ID | grep 十六进制线程ID -A 10

-A 10 参数用来指定显示行数,否则只会显示一行信息

下面 demo 内容太多,所以选取其中一部分结构:

常见线程状态

Runnable:正在运行的线程

Sleeping:休眠的线程

Waiting:等待的线程

2018-03-08 14:28:13

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):

"Attach Listener" #53 daemon prio=9 os_prio=0 tid=0x00007f8a34009000 nid=0x865 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"Log4j2-AsyncLoggerConfig-1" #16 daemon prio=5 os_prio=0 tid=0x00007f8a5c48d800 nid=0x2f0c waiting on condition [0x00007f8a4cbfe000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00000007155e4850> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)

at com.lmax.disruptor.BlockingWaitStrategy.waitFor(BlockingWaitStrategy.java:45)

at com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)

at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:124)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

"Wrapper-Control-Event-Monitor" #13 daemon prio=5 os_prio=0 tid=0x00007f8a5c34e000 nid=0x2efc waiting on condition [0x00007f8a60314000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.tanukisoftware.wrapper.WrapperManager$3.run(WrapperManager.java:731)

"RMI TCP Accept-0" #11 daemon prio=5 os_prio=0 tid=0x00007f8a5c32f800 nid=0x2efa runnable [0x00007f8a60619000]

java.lang.Thread.State: RUNNABLE

at java.net.PlainSocketImpl.socketAccept(Native Method)

at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)

at java.net.ServerSocket.implAccept(ServerSocket.java:545)

at java.net.ServerSocket.accept(ServerSocket.java:513)

at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)

at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:400)

at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:372)

at java.lang.Thread.run(Thread.java:748)

"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x00007f8a5c0b4800 nid=0x2ef3 runnable [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"C1 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f8a5c0b1800 nid=0x2ef2 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f8a5c0af800 nid=0x2ef1 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f8a5c0aa800 nid=0x2ef0 runnable [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f8a5c07b000 nid=0x2eef in Object.wait() [0x00007f8a614f4000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000007155e5ba8> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

- locked <0x00000007155e5ba8> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)

at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"VM Thread" os_prio=0 tid=0x00007f8a5c06e800 nid=0x2eed runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007f8a5c332000 nid=0x2efb waiting on condition

JNI global references: 281

资料

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

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

相关文章

15℃!人类首次实现高压下室温超导,研究登上Nature封面

全世界只有3.14 % 的人关注了爆炸吧知识本文转自&#xff1a;机器之心今天一项新纪录&#xff0c;轰动整个物理界。「室温超导有可能实现吗&#xff1f;」这个问题困惑了人们许多年。而最新一期的 Nature 杂志封面研究给出了肯定的答案&#xff0c;该研究制造出了第一个无需冷却…

【ACR2015】依那西普按需维持治疗策略有效抑制RA骨破坏进展

标签: 类风湿关节炎; 依那西普; 药物减停; 复发重治 对RA疾病复发患者, 依那西普按需治疗与持续足剂量治疗是否存在疗效差异&#xff1f; Inui K, et al. ACR 2015. Presentation ID: 477. 背景/目的: 生物DMARDs&#xff08;bDMARDs&#xff09;对RA治疗而言非常重要, 尤其对…

堪称经典!这部由苏联最杰出数学家编写的数学教材,为何能大受推崇?

全世界只有3.14 % 的人关注了爆炸吧知识安德列柯尔莫哥洛夫&#xff0c;20世纪苏联最杰出的数学家&#xff0c;也是20世纪世界上为数极少的几个最有影响的数学家之一。1924年他念大学四年级时就和当时的苏联数学家辛钦一起建立了关于独立随机变量的三级数定理。1928年他得到了随…

浅议NetMQ常见模式和消息加密机制

题图来自https://www.pexels.com/概述在传统企业级开发中&#xff0c;消息队列机制已经成为一种非常常见的技术实现手段&#xff0c;而基于NetMQ则看起来有点像一朵“奇葩”&#xff0c;看起来从名字似乎是一个消息队列&#xff08;Message Quene&#xff09;&#xff0c;但事实…

CentOS 5.5下搭建部署独立SVN服务器全程详解

SVN服务器有2种运行方式&#xff1a; 1、独立服务器 (例如&#xff1a;svn://xxx.com/xxx)&#xff1b; 2、借助apache (例如&#xff1a;http://svn.xxx.com/xxx)&#xff1b; 为了不依赖apache&#xff0c;我选择第一种方式&#xff1a;独立的svn服务器。SVN存储版本数据也…

35岁成MIT终身教授!北大数学“黄金一代”再获大奖

全世界只有3.14 % 的人关注了爆炸吧知识18岁时满分斩获国际奥林匹克数学竞赛金牌&#xff0c;本科就读北大数院期间19门课程成绩100分、7门99分&#xff0c;35岁成为麻省理工&#xff08;MIT&#xff09;终身教授……近日&#xff0c;数学“大神”恽之玮再获国际大奖——西蒙斯…

二维数组foreach嵌套遍历,判断连续3天以上的算有效数据

2019独角兽企业重金招聘Python工程师标准>>> $studycourseinfo $studycourseinfoModel->where($where)->limit($page->firstRow.,.$page->listRows)->order(create_time asc)->select(); //$studycourseinfos $studycourseinfoModel->where(…

linux mint 用户管理,Linux Mint 新工具:将网站转变为独立的应用

Linux Mint 目前正在积极推进 20.1 版本&#xff0c;日前官方博客介绍了新版本将会带来的一项有意思的新特性&#xff1a;WebApp 管理器。简单来讲&#xff0c;这一特性可以把网站转变成独立的应用&#xff0c;这与基于 Debian 和 Ubuntu 的发行版 Peppermint OS 名为 ICE 的功…

如何评价一个开源项目——协作影响力

本文由X-lab开放实验室博士生赵生宇创作 该篇博客紧跟上一篇关于活跃度的介绍这篇文章系统介绍了一种基于全域开发者协作网络的项目影响力评估方法&#xff0c;该方法对于分析整个开源生态有极大的帮助。在一次性评估出所有项目的协作影响力的同时&#xff0c;也可以对项目的协…

UITableView 界面小实例

最近一是很忙&#xff0c;没时间写东西&#xff0c;今天抽时间来总结一下这几天学到的东西 首先看看&#xff0c;程序现在的样子&#xff1a; 基本完成这些&#xff0c;还有一个webview就不截图了 记录一下要点&#xff0c;首先自定义tableview&#xff0c;这个是按照iphone3开…

linux 文档属于apache,Apache 安装和使用文档

Apache 安装和使用文档更新时间&#xff1a;2009年11月26日 00:34:37 作者&#xff1a;Apache安装和使用文档一、准备工作&#xff1a;1台PC机&#xff0c;安装linux操作系统 参考文档linux安装.docx2 gcc的安装 参考文档gcc的安装.zip3 apache的安装包httpd-2.0.63.tar.gz二…

在数学世界,都有这些美妙的数学公式......

全世界只有3.14 % 的人关注了爆炸吧知识什么是数学&#xff1f;华罗庚说&#xff1a;宇宙之大&#xff0c;粒子之微&#xff0c;火箭之速&#xff0c;化工之巧&#xff0c;地球之变&#xff0c;生物之谜&#xff0c;日用之繁&#xff0c;无处不用数学......回首往昔&#xff0c…

.NET 生态系统的蜕变之 .NET 6云原生

云原生的英文名是cloud native&#xff0c;native 就是土著的意思&#xff0c;也就是土著对当地的环境是非常适应的&#xff0c;在云的环境和传统的数据中心是非常不同的&#xff0c;云原生就是要用的云的技术来构建应用&#xff0c; 利用云的技术来降低种端服务的风险和提高可…

世界十大无法科学解释灵异事件(进来发表自己看发)

1、法老咒语&#xff08;世界最大灵异事件&#xff09; 2、葡萄牙灵异事件&#xff08;在网上引起了极大的轰动&#xff09; 3、伦敦塔闹鬼&#xff08;超著名&#xff09; 4、20世纪上海滩灵异事件&#xff08;孟小冬照片灵异事件&#xff09; 5、鬼脸&#xff08;墙壁上出…

宝塔linux面板假设nextcloud,宝塔面板部署NextCloud(14.0.3)逐一解决后台安全及设置警告...

刚刚把NextCloud更新到14.0.3&#xff0c;后台又出现了一堆警告&#xff0c;也是够烦的。之前写过 宝塔面板部署NextCloud逐一解决后台安全及设置警告&#xff0c;那个是基于Nextcloud 13.x的&#xff0c;所以就再补充记录一下解决如下的警告。Use of the the built in php mai…

ASP.NET Core启动地址配置方法及优先级顺序

前言默认情况下&#xff0c;ASP.NET Core使用下列2个启动地址:http://localhost:5000 https://localhost:5001同时&#xff0c;我们也可以通过配置或代码方式修改启动地址。那么&#xff0c;这几种修改方式都是什么&#xff1f;谁最后起作用呢&#xff1f;设置方法1.applicatio…

那些喜欢少妇的男生......

1 听说你喜欢少妇&#xff1f;▼2 没错&#xff01;就是它&#xff01;▼3 你还缺男朋友吗&#xff1f;▼4 还能怎么样&#xff1f;&#xff08;via&#xff1a;臭人脸上的鼻涕&#xff09;▼5 特效还能这样玩&#xff1f;▼6 哈哈哈哈哈&#xff08;via&#xff1a;Guide&…

Openfire3.10beta版源码在eclipse上部署编译

一、源码下载 最近由于需求&#xff0c;需进行openfire的插件开发&#xff0c;于是需将openfire的源码进行部署&#xff0c;目前最新的openfire稳定版本是3.9.3&#xff0c;官方下载地址是http://www.igniterealtime.org/downloads/index.jsp&#xff0c;下载页面如图&#xff…

首次公开!人教版1-9年级绝密编写:被重点中小学永久收录的数学教案和试题...

全世界只有3.14 % 的人关注了爆炸吧知识在中国的教育历史上&#xff0c;不少人都会有感慨&#xff1a;“我是读着人教版教材长大的”。&#xff08;人教版即由人民教育出版社出版。&#xff09;的确&#xff0c;由毛泽东主席亲笔题写社名的人民教育出版社&#xff0c;自1950年1…

如何通过 C# 自动捕获一个文件的变更?

咨询区 PaulB&#xff1a;请问在 C# 中如何实现当一个磁盘文件的变更&#xff0c;让我的程序马上能感知到&#xff1f;回答区 Dirk Vollmar&#xff1a;在 C# 中有一个 FileSystemWatcher 类&#xff0c;它专门用来做文件的变更感知&#xff0c;大概有如下四类通知事件&#xf…