|
|
|
|
|
|
|
|
<!DOCTYPE html>
|
|
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="zh-CN" > <![endif]-->
|
|
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="zh-CN" > <!--<![endif]-->
|
|
|
<head>
|
|
|
<meta charset="utf-8">
|
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
|
<title>FAQ — Arthas 3.6.2 文档</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="shortcut icon" href="_static/favicon.ico"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
|
|
|
|
|
|
|
|
|
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
|
<script type="text/javascript" src="_static/language_data.js"></script>
|
|
|
<script type="text/javascript" src="_static/translations.js"></script>
|
|
|
|
|
|
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
|
<link rel="stylesheet" href="_static/overrides.css" type="text/css" />
|
|
|
<link rel="index" title="索引" href="genindex.html" />
|
|
|
<link rel="search" title="搜索" href="search.html" />
|
|
|
<link rel="next" title="联系我们" href="contact-us.html" />
|
|
|
<link rel="prev" title="IDEA Plugin" href="idea-plugin.html" />
|
|
|
<script>
|
|
|
if (window.location.href.startsWith("https://alibaba.github.io/arthas/")) {
|
|
|
window.location.href = "https://arthas.aliyun.com/doc/" + window.location.href.substr("https://alibaba.github.io/arthas/".length);
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<script src="_static/center_page.js"></script>
|
|
|
<link rel="stylesheet" href="https://g.alicdn.com/code/lib/highlight.js/9.13.1/styles/github.min.css">
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body class="wy-body-for-nav">
|
|
|
|
|
|
|
|
|
<div class="wy-grid-for-nav">
|
|
|
|
|
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
|
<div class="wy-side-scroll">
|
|
|
<div class="wy-side-nav-search" >
|
|
|
|
|
|
|
|
|
|
|
|
<a href="index.html" class="icon icon-home"> Arthas
|
|
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="version">
|
|
|
3.6.2
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div role="search">
|
|
|
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|
|
<input type="text" name="q" placeholder="Search docs" />
|
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
|
<input type="hidden" name="area" value="default" />
|
|
|
</form>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="current">
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://arthas.aliyun.com/">首页</a></li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://arthas.aliyun.com/doc/en/">English Docs</a></li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn">在线教程(katacoda)</a></li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://start.aliyun.com/handson-lab?category=arthas">在线教程(阿里云)</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="install-detail.html">安装</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="download.html">下载</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="quick-start.html">快速入门</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="advanced-use.html">进阶使用</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="commands.html">命令列表</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="web-console.html">WebConsole</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="tunnel.html">Arthas Tunnel</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="http-api.html">Http API</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="docker.html">Docker</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="spring-boot-starter.html">Arthas Spring Boot Starter</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="idea-plugin.html">IDEA 插件</a></li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/issues?q=label%3Auser-case">用户案例</a></li>
|
|
|
<li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ/常见问题</a><ul>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#id1">日志文件在哪里?</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#arthas-attach">Arthas attach之后对原进程性能有多大的影响</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#target-process-not-responding-or-hotspot-vm-not-loaded">target process not responding or HotSpot VM not loaded</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#trace-watchjdk">trace/watch等命令能否增强jdk里的类?</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#json">怎么以<code class="docutils literal notranslate"><span class="pre">json</span></code>格式查看结果</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#arthas-native">Arthas能否跟踪 native 函数</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#id2">能不能查看内存里某个变量的值</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#id3">方法同名过滤</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#watchtrace">怎么watch、trace 构造函数 ?</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#id4">怎样watch、trace内部类?</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#unicode">输入中文/Unicode字符</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#java-lang-classformaterror-nullskywalking-arthas">java.lang.ClassFormatError: null、skywalking arthas 兼容使用</a></li>
|
|
|
<li class="toctree-l2"><a class="reference internal" href="#class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields">class redefinition failed: attempted to change the schema (add/remove fields)</a><ul>
|
|
|
<li class="toctree-l3"><a class="reference internal" href="#arthas">Arthas能不能离线使用</a></li>
|
|
|
<li class="toctree-l3"><a class="reference internal" href="#attach-docker-k8s-pid-1">Attach docker/k8s 里的 pid 为 1 的进程失败</a></li>
|
|
|
<li class="toctree-l3"><a class="reference internal" href="#id5">为什么下载了新版本的Arthas,连接的却是旧版本?</a></li>
|
|
|
</ul>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas">Star me at GitHub</a></li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md#">编译调试/参与贡献</a></li>
|
|
|
<li class="toctree-l1"><a class="reference external" href="https://github.com/alibaba/arthas/releases">Release Notes</a></li>
|
|
|
<li class="toctree-l1"><a class="reference internal" href="contact-us.html">QQ群/钉钉群</a></li>
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
</nav>
|
|
|
|
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
|
|
|
|
|
|
|
|
<nav class="wy-nav-top" aria-label="top navigation">
|
|
|
|
|
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
|
<a href="index.html">Arthas</a>
|
|
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
|
<div class="wy-nav-content">
|
|
|
|
|
|
<div class="rst-content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
|
|
|
|
<ul class="wy-breadcrumbs">
|
|
|
|
|
|
<li><a href="index.html">Docs</a> »</li>
|
|
|
|
|
|
<li>FAQ</li>
|
|
|
|
|
|
|
|
|
<li class="wy-breadcrumbs-aside">
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/alibaba/arthas/blob/master/site/src/site/sphinx/faq.md" class="fa fa-github"> Edit on GitHub</a>
|
|
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
<hr/>
|
|
|
</div>
|
|
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
|
<div itemprop="articleBody">
|
|
|
|
|
|
<div class="section" id="faq">
|
|
|
<h1>FAQ<a class="headerlink" href="#faq" title="永久链接至标题">¶</a></h1>
|
|
|
<blockquote>
|
|
|
<div><p>不在本列表里的问题,请到issue里搜索。 <a class="reference external" href="https://github.com/alibaba/arthas/issues">https://github.com/alibaba/arthas/issues</a></p>
|
|
|
</div></blockquote>
|
|
|
<div class="section" id="id1">
|
|
|
<h2>日志文件在哪里?<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
|
|
<p>日志文件路径: <code class="docutils literal notranslate"><span class="pre">~/logs/arthas/arthas.log</span></code></p>
|
|
|
</div>
|
|
|
<div class="section" id="arthas-attach">
|
|
|
<h2>Arthas attach之后对原进程性能有多大的影响<a class="headerlink" href="#arthas-attach" title="永久链接至标题">¶</a></h2>
|
|
|
<p><a class="reference external" href="https://github.com/alibaba/arthas/issues/44">https://github.com/alibaba/arthas/issues/44</a></p>
|
|
|
</div>
|
|
|
<div class="section" id="target-process-not-responding-or-hotspot-vm-not-loaded">
|
|
|
<h2>target process not responding or HotSpot VM not loaded<a class="headerlink" href="#target-process-not-responding-or-hotspot-vm-not-loaded" title="永久链接至标题">¶</a></h2>
|
|
|
<p>com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded</p>
|
|
|
<ol class="simple">
|
|
|
<li><p>检查当前用户和目标java进程是否一致。如果不一致,则切换到同一用户。JVM只能attach同样用户下的java 进程。</p></li>
|
|
|
<li><p>尝试使用 <code class="docutils literal notranslate"><span class="pre">jstack</span> <span class="pre">-l</span> <span class="pre">$pid</span></code>,如果进程没有反应,则说明进程可能假死,无法响应JVM attach信号。所以同样基于attach机制的Arthas无法工作。尝试使用<code class="docutils literal notranslate"><span class="pre">jmap</span></code> heapdump后分析。</p></li>
|
|
|
<li><p>尝试按<a class="reference internal" href="quick-start.html"><span class="doc">quick-start</span></a>里的方式attach math-game。</p></li>
|
|
|
<li><p>更多情况参考: <a class="reference external" href="https://github.com/alibaba/arthas/issues/347">https://github.com/alibaba/arthas/issues/347</a></p></li>
|
|
|
</ol>
|
|
|
</div>
|
|
|
<div class="section" id="trace-watchjdk">
|
|
|
<h2>trace/watch等命令能否增强jdk里的类?<a class="headerlink" href="#trace-watchjdk" title="永久链接至标题">¶</a></h2>
|
|
|
<p>默认情况下会过滤掉<code class="docutils literal notranslate"><span class="pre">java.</span></code>开头的类和被<code class="docutils literal notranslate"><span class="pre">BootStrap</span> <span class="pre">ClassLoader</span></code>加载的类。可以通过参数开启。</p>
|
|
|
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">options unsafe true</pre></div>
|
|
|
</div>
|
|
|
<p>更多参考 <a class="reference internal" href="options.html"><span class="doc">options</span></a></p>
|
|
|
<blockquote>
|
|
|
<div><p>通过 java.lang.instrument.Instrumentation#appendToBootstrapClassLoaderSearch append到<code class="docutils literal notranslate"><span class="pre">Bootstrap</span> <span class="pre">ClassLoader</span></code>的jar包需要开启unsafe。</p>
|
|
|
</div></blockquote>
|
|
|
</div>
|
|
|
<div class="section" id="json">
|
|
|
<h2>怎么以<code class="docutils literal notranslate"><span class="pre">json</span></code>格式查看结果<a class="headerlink" href="#json" title="永久链接至标题">¶</a></h2>
|
|
|
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">options json-format true</pre></div>
|
|
|
</div>
|
|
|
<p>更多参考 <a class="reference internal" href="options.html"><span class="doc">options</span></a></p>
|
|
|
</div>
|
|
|
<div class="section" id="arthas-native">
|
|
|
<h2>Arthas能否跟踪 native 函数<a class="headerlink" href="#arthas-native" title="永久链接至标题">¶</a></h2>
|
|
|
<p>不能。</p>
|
|
|
</div>
|
|
|
<div class="section" id="id2">
|
|
|
<h2>能不能查看内存里某个变量的值<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
|
|
<ol class="simple">
|
|
|
<li><p>可以使用<a class="reference internal" href="vmtool.html"><span class="doc">vmtool</span></a>命令。</p></li>
|
|
|
<li><p>可以用一些技巧,用<a class="reference internal" href="tt.html"><span class="doc">tt</span></a>命令拦截到对象,或者从静态函数里取到对象。</p></li>
|
|
|
</ol>
|
|
|
</div>
|
|
|
<div class="section" id="id3">
|
|
|
<h2>方法同名过滤<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
|
|
<p>同名方法过滤可以通过匹配表达式,可以使用<a class="reference internal" href="advice-class.html"><span class="doc">表达式核心变量</span></a>中所有变量作为已知条件,可以通过判断参数个数<code class="docutils literal notranslate"><span class="pre">params.length</span> <span class="pre">==1</span></code>, 参数类型<code class="docutils literal notranslate"><span class="pre">params[0]</span> <span class="pre">instanceof</span> <span class="pre">java.lang.Integer</span></code>、返回值类型 <code class="docutils literal notranslate"><span class="pre">returnObj</span> <span class="pre">instanceof</span> <span class="pre">java.util.List</span></code> 等等一种或者多种组合进行过滤。</p>
|
|
|
<p>可以使用 <code class="docutils literal notranslate"><span class="pre">-v</span></code> 查看观察匹配表达式的执行结果 <a class="reference external" href="https://github.com/alibaba/arthas/issues/1348">https://github.com/alibaba/arthas/issues/1348</a></p>
|
|
|
<p>例子<a class="reference internal" href="quick-start.html"><span class="doc">math-game</span></a></p>
|
|
|
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">watch demo.MathGame primeFactors '{params,returnObj,throwExp}' 'params.length >0 && returnObj instanceof java.util.List' -v</pre></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="section" id="watchtrace">
|
|
|
<h2>怎么watch、trace 构造函数 ?<a class="headerlink" href="#watchtrace" title="永久链接至标题">¶</a></h2>
|
|
|
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">watch demo.MathGame <init> '{params,returnObj,throwExp}' -v</pre></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="section" id="id4">
|
|
|
<h2>怎样watch、trace内部类?<a class="headerlink" href="#id4" title="永久链接至标题">¶</a></h2>
|
|
|
<p>在JVM规范里内部类的格式是<code class="docutils literal notranslate"><span class="pre">OuterClass$InnerClass</span></code>。</p>
|
|
|
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">watch OuterClass$InnerClass</pre></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="section" id="unicode">
|
|
|
<h2>输入中文/Unicode字符<a class="headerlink" href="#unicode" title="永久链接至标题">¶</a></h2>
|
|
|
<p>把中文/Unicode字符转为<code class="docutils literal notranslate"><span class="pre">\u</span></code>表示方法:</p>
|
|
|
<div class="highlight-bash notranslate"><div class="highlight hljs"><pre class="bash">ognl '@java.lang.System@out.println("Hello \u4e2d\u6587")'</pre></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="section" id="java-lang-classformaterror-nullskywalking-arthas">
|
|
|
<h2>java.lang.ClassFormatError: null、skywalking arthas 兼容使用<a class="headerlink" href="#java-lang-classformaterror-nullskywalking-arthas" title="永久链接至标题">¶</a></h2>
|
|
|
<p>当出现这个错误日志<code class="docutils literal notranslate"><span class="pre">java.lang.ClassFormatError:</span> <span class="pre">null</span></code>,通常情况下都是被其他字节码工具修改过与arthas修改字节码不兼容。</p>
|
|
|
<p>比如: 使用 skywalking V8.1.0 以下版本 <a class="reference external" href="https://github.com/alibaba/arthas/issues/1141">无法trace、watch 被skywalking agent 增强过的类</a>, V8.1.0 以上版本可以兼容使用,更多参考skywalking配置 <a class="reference external" href="https://github.com/apache/skywalking/blob/master/docs/en/FAQ/Compatible-with-other-javaagent-bytecode-processing.md#">skywalking compatible with other javaagent bytecode processing</a>。</p>
|
|
|
</div>
|
|
|
<div class="section" id="class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields">
|
|
|
<h2>class redefinition failed: attempted to change the schema (add/remove fields)<a class="headerlink" href="#class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields" title="永久链接至标题">¶</a></h2>
|
|
|
<p>参考: <a class="reference external" href="https://github.com/alibaba/arthas/issues/2165">https://github.com/alibaba/arthas/issues/2165</a></p>
|
|
|
<div class="section" id="arthas">
|
|
|
<h3>Arthas能不能离线使用<a class="headerlink" href="#arthas" title="永久链接至标题">¶</a></h3>
|
|
|
<p>可以。下载全量包解压即可,参考: <a class="reference internal" href="download.html"><span class="doc">下载</span></a>。</p>
|
|
|
</div>
|
|
|
<div class="section" id="attach-docker-k8s-pid-1">
|
|
|
<h3>Attach docker/k8s 里的 pid 为 1 的进程失败<a class="headerlink" href="#attach-docker-k8s-pid-1" title="永久链接至标题">¶</a></h3>
|
|
|
<p>参考: <a class="reference external" href="https://github.com/alibaba/arthas/issues/362#issuecomment-448185416">https://github.com/alibaba/arthas/issues/362#issuecomment-448185416</a></p>
|
|
|
</div>
|
|
|
<div class="section" id="id5">
|
|
|
<h3>为什么下载了新版本的Arthas,连接的却是旧版本?<a class="headerlink" href="#id5" title="永久链接至标题">¶</a></h3>
|
|
|
<p>比如启动的 <code class="docutils literal notranslate"><span class="pre">as.sh/arthas-boot.jar</span></code> 版本是3.5.* 的,但是连接上之后,打印的arthas版本是 3.4.* 的。</p>
|
|
|
<p>可能是之前使用旧版本的arthas诊断过目标进程。可以先执行<code class="docutils literal notranslate"><span class="pre">stop</span></code>停止掉旧版本的arthas,再重新使用新版本attach。</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
<footer>
|
|
|
|
|
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
|
|
|
|
|
<a href="contact-us.html" class="btn btn-neutral float-right" title="联系我们" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
|
|
|
|
|
|
|
|
|
<a href="idea-plugin.html" class="btn btn-neutral float-left" title="IDEA Plugin" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<hr/>
|
|
|
|
|
|
<div role="contentinfo">
|
|
|
<p>
|
|
|
© Copyright 2018-2020, Alibaba Middleware Group, and contributors
|
|
|
|
|
|
</p>
|
|
|
</div>
|
|
|
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
|
|
|
|
</footer>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</section>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
jQuery(function () {
|
|
|
SphinxRtdTheme.Navigation.enable(true);
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="github-fork-ribbon-wrapper right">
|
|
|
<div class="github-fork-ribbon">
|
|
|
<a href="https://github.com/alibaba/arthas" target="_blank">Fork me at GitHub</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<script type="text/javascript" src="_static/add_badges.js"></script>
|
|
|
|
|
|
<script src="https://g.alicdn.com/code/lib/highlight.js/9.13.1/highlight.min.js"></script>
|
|
|
<script src="https://g.alicdn.com/code/lib/highlightjs-line-numbers.js/2.5.0/highlightjs-line-numbers.min.js"></script>
|
|
|
<script>
|
|
|
document.querySelectorAll('div.hljs > pre').forEach(function(block) {
|
|
|
hljs.highlightBlock(block);
|
|
|
hljs.lineNumbersBlock(block);
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
|
|
|
<script type="text/javascript">document.write(unescape("%3Cspan style='display:none;' id='cnzz_stat_icon_1279151497'%3E%3C/span%3E%3Cscript src='https://s4.cnzz.com/z_stat.php%3Fid%3D1279151497' type='text/javascript'%3E%3C/script%3E"));</script>
|
|
|
|
|
|
<script>
|
|
|
var _hmt = _hmt || [];
|
|
|
(function() {
|
|
|
var hm = document.createElement("script");
|
|
|
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
|
|
|
var s = document.getElementsByTagName("script")[0];
|
|
|
s.parentNode.insertBefore(hm, s);
|
|
|
})();
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
</html> |