You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/assets/ognl.html.9838e9e6.js

47 lines
12 KiB
JavaScript

import{_ as o,o as l,c as i,a as n,b as e,e as s,d as t,r as p}from"./app.391b0e4e.js";const r={},c=n("h1",{id:"ognl",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#ognl","aria-hidden":"true"},"#"),s(" ognl")],-1),u={href:"https://arthas.aliyun.com/doc/arthas-tutorials?language=cn&id=command-ognl",target:"_blank",rel:"noopener noreferrer"},d=n("code",null,"ognl",-1),g=s("\u5728\u7EBF\u6559\u7A0B"),v=t('<div class="custom-container tip"><p class="custom-container-title">\u63D0\u793A</p><p>\u6267\u884C ognl \u8868\u8FBE\u5F0F</p></div><p>\u4ECE 3.0.5 \u7248\u672C\u589E\u52A0</p><h3 id="\u53C2\u6570\u8BF4\u660E" tabindex="-1"><a class="header-anchor" href="#\u53C2\u6570\u8BF4\u660E" aria-hidden="true">#</a> \u53C2\u6570\u8BF4\u660E</h3><table><thead><tr><th style="text-align:right;">\u53C2\u6570\u540D\u79F0</th><th style="text-align:left;">\u53C2\u6570\u8BF4\u660E</th></tr></thead><tbody><tr><td style="text-align:right;"><em>express</em></td><td style="text-align:left;">\u6267\u884C\u7684\u8868\u8FBE\u5F0F</td></tr><tr><td style="text-align:right;"><code>[c:]</code></td><td style="text-align:left;">\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 hashcode\uFF0C\u9ED8\u8BA4\u503C\u662F SystemClassLoader</td></tr><tr><td style="text-align:right;"><code>[classLoaderClass:]</code></td><td style="text-align:left;">\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name</td></tr><tr><td style="text-align:right;">[x]</td><td style="text-align:left;">\u7ED3\u679C\u5BF9\u8C61\u7684\u5C55\u5F00\u5C42\u6B21\uFF0C\u9ED8\u8BA4\u503C 1</td></tr></tbody></table><h3 id="\u4F7F\u7528\u53C2\u8003" tabindex="-1"><a class="header-anchor" href="#\u4F7F\u7528\u53C2\u8003" aria-hidden="true">#</a> \u4F7F\u7528\u53C2\u8003</h3>',5),k=s("OGNL \u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),m={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},b=s("https://github.com/alibaba/arthas/issues/71"),h=s("OGNL \u8868\u8FBE\u5F0F\u5B98\u65B9\u6307\u5357\uFF1A"),f={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},L=s("https://commons.apache.org/proper/commons-ognl/language-guide.html"),_=t(`<p>\u8C03\u7528\u9759\u6001\u51FD\u6570\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl <span class="token string">&#39;@java.lang.System@out.println(&quot;hello&quot;)&#39;</span>
null
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>\u83B7\u53D6\u9759\u6001\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl <span class="token string">&#39;@demo.MathGame@random&#39;</span>
@Random<span class="token punctuation">[</span>
<span class="token assign-left variable">serialVersionUID</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">3905348978240129619</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">seed</span><span class="token operator">=</span>@AtomicLong<span class="token punctuation">[</span><span class="token number">125451474443703</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">multiplier</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">25214903917</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">addend</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">11</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">mask</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">281474976710655</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">DOUBLE_UNIT</span><span class="token operator">=</span>@Double<span class="token punctuation">[</span><span class="token number">1</span>.1102230246251565E-16<span class="token punctuation">]</span>,
<span class="token assign-left variable">BadBound</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>bound must be positive<span class="token punctuation">]</span>,
<span class="token assign-left variable">BadRange</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>bound must be greater than origin<span class="token punctuation">]</span>,
<span class="token assign-left variable">BadSize</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>size must be non-negative<span class="token punctuation">]</span>,
<span class="token assign-left variable">seedUniquifier</span><span class="token operator">=</span>@AtomicLong<span class="token punctuation">[</span>-3282039941672302964<span class="token punctuation">]</span>,
<span class="token assign-left variable">nextNextGaussian</span><span class="token operator">=</span>@Double<span class="token punctuation">[</span><span class="token number">0.0</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">haveNextNextGaussian</span><span class="token operator">=</span>@Boolean<span class="token punctuation">[</span>false<span class="token punctuation">]</span>,
<span class="token assign-left variable">serialPersistentFields</span><span class="token operator">=</span>@ObjectStreamField<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">[</span>isEmpty<span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">size</span><span class="token operator">=</span><span class="token number">3</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">unsafe</span><span class="token operator">=</span>@Unsafe<span class="token punctuation">[</span>sun.misc.Unsafe@28ea5898<span class="token punctuation">]</span>,
<span class="token assign-left variable">seedOffset</span><span class="token operator">=</span>@Long<span class="token punctuation">[</span><span class="token number">24</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u901A\u8FC7 hashcode \u6307\u5B9A ClassLoader\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ classloader -t
+-BootstrapClassLoader
+-jdk.internal.loader.ClassLoaders<span class="token variable">$PlatformClassLoader</span>@301ec38b
+-com.taobao.arthas.agent.ArthasClassloader@472067c7
+-jdk.internal.loader.ClassLoaders<span class="token variable">$AppClassLoader</span>@4b85612c
+-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8
$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
@Slf4jLocationAwareLog<span class="token punctuation">[</span>
<span class="token assign-left variable">FQCN</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.apache.commons.logging.LogAdapter<span class="token variable">$Slf4jLocationAwareLog</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">name</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span>,
<span class="token assign-left variable">logger</span><span class="token operator">=</span>@Logger<span class="token punctuation">[</span>Logger<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
$
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6CE8\u610F hashcode \u662F\u53D8\u5316\u7684\uFF0C\u9700\u8981\u5148\u67E5\u770B\u5F53\u524D\u7684 ClassLoader \u4FE1\u606F\uFF0C\u63D0\u53D6\u5BF9\u5E94 ClassLoader \u7684 hashcode\u3002</p><p>\u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u53EF\u4EE5\u901A\u8FC7 class name \u6307\u5B9A\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader @org.springframework.boot.SpringApplication@logger
@Slf4jLocationAwareLog<span class="token punctuation">[</span>
<span class="token assign-left variable">FQCN</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.apache.commons.logging.LogAdapter<span class="token variable">$Slf4jLocationAwareLog</span><span class="token punctuation">]</span>,
<span class="token assign-left variable">name</span><span class="token operator">=</span>@String<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span>,
<span class="token assign-left variable">logger</span><span class="token operator">=</span>@Logger<span class="token punctuation">[</span>Logger<span class="token punctuation">[</span>org.springframework.boot.SpringApplication<span class="token punctuation">]</span><span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u6267\u884C\u591A\u884C\u8868\u8FBE\u5F0F\uFF0C\u8D4B\u503C\u7ED9\u4E34\u65F6\u53D8\u91CF\uFF0C\u8FD4\u56DE\u4E00\u4E2A List\uFF1A</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ognl <span class="token string">&#39;#value1=@System@getProperty(&quot;java.home&quot;), #value2=@System@getProperty(&quot;java.runtime.name&quot;), {#value1, #value2}&#39;</span>
@ArrayList<span class="token punctuation">[</span>
@String<span class="token punctuation">[</span>/opt/java/8.0.181-zulu/jre<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>OpenJDK Runtime Environment<span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,11);function x(S,y){const a=p("ExternalLinkIcon");return l(),i("div",null,[c,n("p",null,[n("a",u,[d,g,e(a)])]),v,n("ul",null,[n("li",null,[k,n("a",m,[b,e(a)])]),n("li",null,[h,n("a",f,[L,e(a)])])]),_])}var A=o(r,[["render",x],["__file","ognl.html.vue"]]);export{A as default};