-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
57 lines (57 loc) · 30.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html><html lang="zh-CN"><head><meta name="generator" content="Hexo 3.9.0"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="欢迎来到晋的博客,本博客用来收录平时学习笔记,欢迎访问"><title>2.Java运行时数据区 | ZJ_BLOG</title><link rel="stylesheet" type="text/css" href="/css/style.css?v=0.0.1"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/normalize/7.0.0/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/1.0.0/pure-min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/1.0.0/grids-responsive-min.css"><link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css"><script type="text/javascript" src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script><link rel="Shortcut Icon" type="image/x-icon" href="/favicon.ico"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="apple-touch-icon-precomposed" href="/apple-touch-icon.png"><script type="text/javascript" src="http://p18j2ow6f.bkt.clouddn.com/static/css/instantclick.min.js"></script><script>InstantClick.init();
InstantClick.on('change', function (isInitialLoad) {
if (isInitialLoad === false) {
if (typeof MathJax !== 'undefined') // support MathJax
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
if (typeof prettyPrint !== 'undefined') // support google code prettify
prettyPrint();
if (typeof _hmt !== 'undefined') // support 百度统计
_hmt.push(['_trackPageview', location.pathname + location.search]);
if (typeof ga !== 'undefined') // support google analytics
ga('send', 'pageview', location.pathname + location.search);
}
});
</script><link rel="alternate" type="application/atom+xml" href="/atom.xml"></head><body><div class="body_container"><div id="header"><div class="site-name"><h1 class="hidden">2.Java运行时数据区</h1><a id="logo" href="/.">ZJ_BLOG</a><p class="description">Silence的博客</p></div><div id="nav-menu"><a class="current" href="/."><i class="fa fa-home"> 首页</i></a><a href="/archives/"><i class="fa fa-archive"> 归档</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title">2.Java运行时数据区</h1><div class="post-meta">Feb 5, 2017<span> | </span><span class="category"><a href="/categories/java虚拟机/">java虚拟机</a></span></div><div class="post-content"><h2 id="概述"><a href="#概述" class="headerlink" title="概述 :"></a><em>概述</em> :</h2><h4 id="Java将new的对象的管理权交由Java虚拟机-so对于Java程序员-不需要写配套的delete-free代码-不容易出现内存溢出或泄露-但是一旦出现了-就需要了解虚拟机如何使用内存来排除bug"><a href="#Java将new的对象的管理权交由Java虚拟机-so对于Java程序员-不需要写配套的delete-free代码-不容易出现内存溢出或泄露-但是一旦出现了-就需要了解虚拟机如何使用内存来排除bug" class="headerlink" title="Java将new的对象的管理权交由Java虚拟机,so对于Java程序员,不需要写配套的delete/free代码,不容易出现内存溢出或泄露,但是一旦出现了,就需要了解虚拟机如何使用内存来排除bug"></a>Java将new的对象的管理权交由Java虚拟机,so对于Java程序员,不需要写配套的delete/free代码,不容易出现内存溢出或泄露,但是一旦出现了,就需要了解虚拟机如何使用内存来排除bug</h4><hr>
<h4 id="Java虚拟机在执行程序时会把管理的内存划分为多个不同的数据区域"><a href="#Java虚拟机在执行程序时会把管理的内存划分为多个不同的数据区域" class="headerlink" title="Java虚拟机在执行程序时会把管理的内存划分为多个不同的数据区域,"></a>Java虚拟机在执行程序时会把管理的内存划分为多个不同的数据区域,</h4><p><img src="http://img.blog.csdn.net/20161215182730152?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW55YW8xMTIyMzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述"></p>
<hr>
<h3 id="1-程序计数器—-gt-线程私有的区域"><a href="#1-程序计数器—-gt-线程私有的区域" class="headerlink" title="1.程序计数器—>线程私有的区域"></a><strong>1.程序计数器</strong>—><em>线程私有的区域</em></h3><h4 id="占用内存较小-作用是作为当前线程执行的字节码的行号指示器。"><a href="#占用内存较小-作用是作为当前线程执行的字节码的行号指示器。" class="headerlink" title="占用内存较小,作用是作为当前线程执行的字节码的行号指示器。"></a>占用内存较小,作用是<strong>作为当前线程执行的字节码的行号指示器</strong>。</h4><h4 id="在概念模型里-字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳转,异常处理,线程恢复等基础功能都需要此计数器完成。"><a href="#在概念模型里-字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳转,异常处理,线程恢复等基础功能都需要此计数器完成。" class="headerlink" title="在概念模型里,字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳转,异常处理,线程恢复等基础功能都需要此计数器完成。"></a>在概念模型里,字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳转,异常处理,线程恢复等基础功能都需要此计数器完成。</h4><h4 id="Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,so每次处理器只执行一个线程。-so-每个线程都拥有一个独立的程序计数器,各线程计数器互不影响,独立储存。"><a href="#Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,so每次处理器只执行一个线程。-so-每个线程都拥有一个独立的程序计数器,各线程计数器互不影响,独立储存。" class="headerlink" title="Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,so每次处理器只执行一个线程。 so 每个线程都拥有一个独立的程序计数器,各线程计数器互不影响,独立储存。"></a>Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,so每次处理器只执行一个线程。 so <strong>每个线程都拥有一个独立的程序计数器</strong>,各线程计数器互不影响,独立储存。</h4><h4 id="若执行的是Native方法,则程序计数器值为空(Undefined)-lt-——唯一"><a href="#若执行的是Native方法,则程序计数器值为空(Undefined)-lt-——唯一" class="headerlink" title="若执行的是Native方法,则程序计数器值为空(Undefined) <——唯一"></a>若执行的是Native方法,则程序计数器值为空(Undefined) <——唯一</h4><a id="more"></a>
<hr>
<h3 id="2-Java虚拟机栈—-gt-线程私有的区域"><a href="#2-Java虚拟机栈—-gt-线程私有的区域" class="headerlink" title="2.Java虚拟机栈—>线程私有的区域"></a><strong>2.Java虚拟机栈</strong>—><em>线程私有的区域</em></h3><h4 id="描述了Java方法执行的内存模式,每个方法在执行同时会创建一个栈帧,用来存储"><a href="#描述了Java方法执行的内存模式,每个方法在执行同时会创建一个栈帧,用来存储" class="headerlink" title="描述了Java方法执行的内存模式,每个方法在执行同时会创建一个栈帧,用来存储"></a>描述了Java方法执行的内存模式,每个方法在执行同时会创建一个栈帧,用来存储</h4><ol>
<li><strong>局部变量表</strong> (编译时即确定内存大小,方法执行时不会改变其大小)<br>1.1. 存放编译期各种可知的基本数据类型 (64位长度的long,double占两个局部变量空间,其他占一个)<br>1.2. 对象引用 (指向对象其实地址的指针或是指向代表对象的句柄或其他与此对象相关的位置)<br>1.3. returnAddress类型 (指向一个字节码指令的地址)</li>
<li><strong>操作数栈</strong></li>
<li><strong>动态链接</strong></li>
<li><strong>方法出口</strong></li>
</ol>
<h4 id="方法的执行就是栈帧在虚拟机栈中的入栈到出栈的过程。"><a href="#方法的执行就是栈帧在虚拟机栈中的入栈到出栈的过程。" class="headerlink" title="方法的执行就是栈帧在虚拟机栈中的入栈到出栈的过程。"></a><strong>方法的执行就是栈帧在虚拟机栈中的入栈到出栈的过程</strong>。</h4><h4 id="人们常说的Java内存分配的堆内存-Heap-,栈内存-Stack-中-后者就是这里的虚拟机栈。"><a href="#人们常说的Java内存分配的堆内存-Heap-,栈内存-Stack-中-后者就是这里的虚拟机栈。" class="headerlink" title="人们常说的Java内存分配的堆内存(Heap),栈内存(Stack) 中 后者就是这里的虚拟机栈。"></a>人们常说的Java内存分配的堆内存(Heap),栈内存(Stack) 中 后者就是这里的虚拟机栈。</h4><h4 id="当线程请求的栈深度大于虚拟机所允许的深度-———-StackOverflowError(当然,目前虚拟机栈都是可以动态扩展的)"><a href="#当线程请求的栈深度大于虚拟机所允许的深度-———-StackOverflowError(当然,目前虚拟机栈都是可以动态扩展的)" class="headerlink" title="当线程请求的栈深度大于虚拟机所允许的深度 ——— StackOverflowError(当然,目前虚拟机栈都是可以动态扩展的)"></a>当线程请求的栈深度大于虚拟机所允许的深度 ——— <em>StackOverflowError</em>(当然,目前虚拟机栈都是可以动态扩展的)</h4><h4 id="当无法申请到足够的内存-——————–OutOfMemoryError"><a href="#当无法申请到足够的内存-——————–OutOfMemoryError" class="headerlink" title="当无法申请到足够的内存 ——————–OutOfMemoryError"></a>当无法申请到足够的内存 ——————–<em>OutOfMemoryError</em></h4><hr>
<h3 id="3-本地方法栈(Native-Method-Stack)"><a href="#3-本地方法栈(Native-Method-Stack)" class="headerlink" title="3.本地方法栈(Native Method Stack)"></a><strong>3.本地方法栈</strong>(Native Method Stack)</h3><h4 id="功能与虚拟机栈相似"><a href="#功能与虚拟机栈相似" class="headerlink" title="功能与虚拟机栈相似"></a>功能与虚拟机栈相似</h4><ul>
<li>虚拟机栈:为虚拟机执行Java方法(字节码)服务</li>
<li>本地方法栈:为虚拟机使用的Native方法服务 </li>
</ul>
<hr>
<h3 id="4-Java堆—-gt-所有线程共享"><a href="#4-Java堆—-gt-所有线程共享" class="headerlink" title="4.Java堆—>所有线程共享"></a><strong>4.Java堆</strong>—><em>所有线程共享</em></h3><h4 id="内存最大,虚拟机启动时创建,-Java垃圾收集器主要管理区域(也叫GC堆)"><a href="#内存最大,虚拟机启动时创建,-Java垃圾收集器主要管理区域(也叫GC堆)" class="headerlink" title="内存最大,虚拟机启动时创建, Java垃圾收集器主要管理区域(也叫GC堆)"></a>内存最大,虚拟机启动时创建, Java垃圾收集器主要管理区域(也叫<strong>GC堆</strong>)</h4><h4 id="作用:存放对象实例(和数组)-即为对象实例分配内存"><a href="#作用:存放对象实例(和数组)-即为对象实例分配内存" class="headerlink" title="作用:存放对象实例(和数组) 即为对象实例分配内存"></a>作用:<strong>存放对象实例(和数组)</strong> 即为对象实例分配内存</h4><h4 id="可以进行进一步划分多个线程私有的分配缓冲区"><a href="#可以进行进一步划分多个线程私有的分配缓冲区" class="headerlink" title="可以进行进一步划分多个线程私有的分配缓冲区"></a>可以进行进一步划分多个线程私有的分配缓冲区</h4><h4 id="可以处于物理不连续的内存空间,但逻辑连续;可以实现成扩展,也可以固定(可通过-Xmx-Xms控制)"><a href="#可以处于物理不连续的内存空间,但逻辑连续;可以实现成扩展,也可以固定(可通过-Xmx-Xms控制)" class="headerlink" title="可以处于物理不连续的内存空间,但逻辑连续;可以实现成扩展,也可以固定(可通过-Xmx -Xms控制)"></a>可以处于物理不连续的内存空间,但逻辑连续;可以实现成扩展,也可以固定(可通过-Xmx -Xms控制)</h4><hr>
<h3 id="5-方法区—-gt-所有线程共享"><a href="#5-方法区—-gt-所有线程共享" class="headerlink" title="5.方法区—>所有线程共享"></a><strong>5.方法区</strong>—><em>所有线程共享</em></h3><h4 id="用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等"><a href="#用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等" class="headerlink" title="用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等"></a>用于<strong>存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等</strong></h4><h4 id="别名-Non-Heap"><a href="#别名-Non-Heap" class="headerlink" title="别名 Non-Heap"></a>别名 Non-Heap</h4><h4 id="可以物理内存不连续,-可以固定或可扩展,-可选择不实现垃圾收集(需要对常量池回收和对类型进行卸载,否则-易出现内存泄漏)"><a href="#可以物理内存不连续,-可以固定或可扩展,-可选择不实现垃圾收集(需要对常量池回收和对类型进行卸载,否则-易出现内存泄漏)" class="headerlink" title="可以物理内存不连续, 可以固定或可扩展, 可选择不实现垃圾收集(需要对常量池回收和对类型进行卸载,否则 易出现内存泄漏)"></a>可以物理内存不连续, 可以固定或可扩展, 可选择不实现垃圾收集(需要对常量池回收和对类型进行卸载,否则 易出现内存泄漏)</h4><hr>
<h3 id="6-运行时常量池(Runtime-Constant-Pool)"><a href="#6-运行时常量池(Runtime-Constant-Pool)" class="headerlink" title="6.运行时常量池(Runtime Constant Pool)"></a><strong>6.运行时常量池(Runtime Constant Pool)</strong></h3><h4 id="方法区的一部分,用于存储编译期生成的各种字面符号引用-一般也存储翻译出来的直接引用"><a href="#方法区的一部分,用于存储编译期生成的各种字面符号引用-一般也存储翻译出来的直接引用" class="headerlink" title="方法区的一部分,用于存储编译期生成的各种字面符号引用(一般也存储翻译出来的直接引用)"></a>方法区的一部分,用于<strong>存储编译期生成的各种字面符号引用(一般也存储翻译出来的直接引用)</strong></h4><h4 id="Java对Class文件每部分(类版本,字段,方法,接口,常量池等)格式有严格规定,符合规定才能被虚拟机认可,装载,执行。but对运行时常量池,无规定。"><a href="#Java对Class文件每部分(类版本,字段,方法,接口,常量池等)格式有严格规定,符合规定才能被虚拟机认可,装载,执行。but对运行时常量池,无规定。" class="headerlink" title="Java对Class文件每部分(类版本,字段,方法,接口,常量池等)格式有严格规定,符合规定才能被虚拟机认可,装载,执行。but对运行时常量池,无规定。"></a>Java对Class文件每部分(类版本,字段,方法,接口,常量池等)格式有严格规定,符合规定才能被虚拟机认可,装载,执行。but对运行时常量池,无规定。</h4><h4 id="具有动态性(Class文件常量池无动态性)"><a href="#具有动态性(Class文件常量池无动态性)" class="headerlink" title="具有动态性(Class文件常量池无动态性)"></a>具有<strong>动态性</strong>(Class文件常量池无动态性)</h4><hr>
<h3 id="7-直接内存(堆外内存)"><a href="#7-直接内存(堆外内存)" class="headerlink" title="7.直接内存(堆外内存)"></a><strong>7.直接内存(堆外内存)</strong></h3><h4 id="不是虚拟机运行时数据区的一部分,不归虚拟机管理"><a href="#不是虚拟机运行时数据区的一部分,不归虚拟机管理" class="headerlink" title="不是虚拟机运行时数据区的一部分,不归虚拟机管理"></a>不是虚拟机运行时数据区的一部分,不归虚拟机管理</h4><h4 id="减少了垃圾回收的工作(垃圾回收会暂停其他的工作)"><a href="#减少了垃圾回收的工作(垃圾回收会暂停其他的工作)" class="headerlink" title="减少了垃圾回收的工作(垃圾回收会暂停其他的工作)"></a>减少了垃圾回收的工作(垃圾回收会暂停其他的工作)</h4><h4 id="加快了复制的速度。因为堆内在flush到远程时,会先复制到直接内存(非堆内存),然后在发送;而堆外内存相当于省略掉了这个工作。"><a href="#加快了复制的速度。因为堆内在flush到远程时,会先复制到直接内存(非堆内存),然后在发送;而堆外内存相当于省略掉了这个工作。" class="headerlink" title="加快了复制的速度。因为堆内在flush到远程时,会先复制到直接内存(非堆内存),然后在发送;而堆外内存相当于省略掉了这个工作。"></a>加快了复制的速度。因为堆内在flush到远程时,会先复制到直接内存(非堆内存),然后在发送;而堆外内存相当于省略掉了这个工作。</h4><h4 id="堆外内存难以控制,如果内存泄漏,那么很难排查"><a href="#堆外内存难以控制,如果内存泄漏,那么很难排查" class="headerlink" title="堆外内存难以控制,如果内存泄漏,那么很难排查"></a>堆外内存难以控制,如果内存泄漏,那么很难排查</h4><h4 id="堆外内存相对来说,不适合存储很复杂的对象。一般简单的对象或者扁平化的比较适合。"><a href="#堆外内存相对来说,不适合存储很复杂的对象。一般简单的对象或者扁平化的比较适合。" class="headerlink" title="堆外内存相对来说,不适合存储很复杂的对象。一般简单的对象或者扁平化的比较适合。"></a>堆外内存相对来说,不适合存储很复杂的对象。一般简单的对象或者扁平化的比较适合。</h4><p>此处来源:<a href="http://blog.csdn.net/qq_17612199/article/details/52316719" target="_blank" rel="noopener">http://blog.csdn.net/qq_17612199/article/details/52316719</a></p>
</div><script type="text/javascript" src="/js/share.js?v=0.0.1" async></script><a class="article-share-link" data-url="http://zj2626.github.io/2017/02/05/2017_JAVA_runtime/" data-id="ckm3iqt40001xfcuj42x3l7bf" data-qrcode="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMYAAADGCAAAAACs8KCBAAACJUlEQVR42u3aOW4DMQwFUN//0g6QNoj8ScrFSE/VwJhFzwXBRa9XvN6/a/373+v/nlrfs35qtDAwMB7LeC/Xf6/O71+/Zw1L9oaBgXEPIwmmyZ3JtvKAW/giBgYGRpCu5cExCawYGBgYuwJunlbmpSkGBgbGpIjtfSBJK5P0cVstjoGB8UDGJAh++/qL8w0MDIyHMN7FNR895m8u7AoDA+NoxjqZSzaRp4B5edxLSTEwMM5mVMNib3jZGzlsKFkxMDAezugdBZsH0F2DUgwMjBsYSdpXHRVUW/zJFguNOQwMjOMYk8SuOtTsBffkeAcGBsZtjF6CmLf4e425D3gMDIwLGHkimFxXD29tuB8DA+MaRpKETdK7ZKN5cYuBgXEPY16g9o5T9N6zbTyAgYHxKEZeak7GnPNnN0xiMTAwHsvoDQOSgFg9TpEf4/iwWwwMjOMYeUlZHSEUBpDj8QMGBsbZjF5m1TvIlYN7SAwMjDsZ1eK22jjrjRyiL2JgYBzESF4xaeX3/oLyrjAwMC5g9D6ZN9EmG432g4GBcTSjVzTmR8HmA4PCUxgYGIcy3sVVbdDng891YP0wWsDAwDia0StN87SvF2qrIwQMDIwbGPPW/CRxTIrnKJXEwMC4gFHttyd/xGvrwsDAwMgfy5v4SQDtDQ8wMDAwqkPK5G3VBlx55ImBgXEBIx8GTErQ6lcK7TwMDIyjGb0C8hstub3jBwwMjCMYP/cI0T9pregcAAAAAElFTkSuQmCC">分享</a><div class="tags"><a href="/tags/深入了解java虚拟机/">深入了解java虚拟机</a><a href="/tags/java/">java</a></div><div class="post-nav"><a class="pre" href="/2017/02/05/2017_Procedure/">运用存储过程批量更新数据库中某个字段</a><a class="next" href="/2017/02/05/2017_jaxp/">jaxp解析xml文档实现增删改查</a></div><div id="container"></div><link rel="stylesheet" href="/css/default.css?v=0.0.1"><script src="/js/gitment.browser.js?v=0.0.1"></script><script>var gitment = new Gitment({
owner: 'zj2626',
repo: 'zj2626.github.io',
oauth: {
client_id: '22769c7edffa5f05d10d',
client_secret: '7bac8fc03397cb64c178fbdfe3a01d2abb459704',
},
})
gitment.render('container')
</script></div></div></div><div class="pure-u-1 pure-u-md-1-4"><div id="sidebar"><div class="widget"><div class="search-form"><input id="local-search-input" placeholder="Search" type="text" name="q" results="0"><div id="local-search-result"></div></div></div><div class="widget"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/BUG解决/">BUG解决</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/DOM操作/">DOM操作</a><span class="category-list-count">6</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/DOM操作/XML/">XML</a><span class="category-list-count">6</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/Git/">Git</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/JDBC/">JDBC</a><span class="category-list-count">8</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/Linux/">Linux</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/java虚拟机/">java虚拟机</a><span class="category-list-count">9</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/java语言基础/">java语言基础</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/python/">python</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/多线程/">多线程</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/数据库/">数据库</a><span class="category-list-count">4</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/数据库连接池/">数据库连接池</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/数据结构和算法/">数据结构和算法</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/机器学习/">机器学习</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/框架相关/">框架相关</a><span class="category-list-count">6</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/框架相关/前端技术/">前端技术</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/框架相关/权限管理/">权限管理</a><span class="category-list-count">1</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/正则/">正则</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/爬虫/">爬虫</a><span class="category-list-count">4</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/程序安装与配置/">程序安装与配置</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/计算机网络/">计算机网络</a><span class="category-list-count">1</span></li></ul></div><div class="widget"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/C3P0/" style="font-size: 15px;">C3P0</a> <a href="/tags/深入了解java虚拟机/" style="font-size: 15px;">深入了解java虚拟机</a> <a href="/tags/Hexo优化/" style="font-size: 15px;">Hexo优化</a> <a href="/tags/HTML/" style="font-size: 15px;">HTML</a> <a href="/tags/iframe/" style="font-size: 15px;">iframe</a> <a href="/tags/Maven/" style="font-size: 15px;">Maven</a> <a href="/tags/C语言/" style="font-size: 15px;">C语言</a> <a href="/tags/jenkins/" style="font-size: 15px;">jenkins</a> <a href="/tags/Git/" style="font-size: 15px;">Git</a> <a href="/tags/maven/" style="font-size: 15px;">maven</a> <a href="/tags/junit/" style="font-size: 15px;">junit</a> <a href="/tags/定义/" style="font-size: 15px;">定义</a> <a href="/tags/python/" style="font-size: 15px;">python</a> <a href="/tags/转码/" style="font-size: 15px;">转码</a> <a href="/tags/正则表达式/" style="font-size: 15px;">正则表达式</a> <a href="/tags/Dom4j/" style="font-size: 15px;">Dom4j</a> <a href="/tags/爬虫/" style="font-size: 15px;">爬虫</a> <a href="/tags/常用命令/" style="font-size: 15px;">常用命令</a> <a href="/tags/shell/" style="font-size: 15px;">shell</a> <a href="/tags/XPath/" style="font-size: 15px;">XPath</a> <a href="/tags/Mongodb/" style="font-size: 15px;">Mongodb</a> <a href="/tags/java/" style="font-size: 15px;">java</a> <a href="/tags/mysql/" style="font-size: 15px;">mysql</a> <a href="/tags/存储过程/" style="font-size: 15px;">存储过程</a> <a href="/tags/DBCP/" style="font-size: 15px;">DBCP</a> <a href="/tags/DRUID/" style="font-size: 15px;">DRUID</a> <a href="/tags/工具类/" style="font-size: 15px;">工具类</a> <a href="/tags/Vue/" style="font-size: 15px;">Vue</a> <a href="/tags/jaxp/" style="font-size: 15px;">jaxp</a> <a href="/tags/CRUD/" style="font-size: 15px;">CRUD</a> <a href="/tags/JDBC/" style="font-size: 15px;">JDBC</a> <a href="/tags/Blob/" style="font-size: 15px;">Blob</a> <a href="/tags/sax/" style="font-size: 15px;">sax</a> <a href="/tags/事务/" style="font-size: 15px;">事务</a> <a href="/tags/机器学习/" style="font-size: 15px;">机器学习</a> <a href="/tags/注解/" style="font-size: 15px;">注解</a> <a href="/tags/元数据/" style="font-size: 15px;">元数据</a> <a href="/tags/Hibernate/" style="font-size: 15px;">Hibernate</a> <a href="/tags/Mybatis/" style="font-size: 15px;">Mybatis</a> <a href="/tags/ThreadLocal/" style="font-size: 15px;">ThreadLocal</a> <a href="/tags/逻辑回归/" style="font-size: 15px;">逻辑回归</a> <a href="/tags/Shiro/" style="font-size: 15px;">Shiro</a></div></div><div class="widget"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018031301/">使用多种算法对泰坦尼克号乘客获救原因进行分析</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018031202/">关于使用sklearn进行数据预处理-归一化/标准化/正则化(转)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018031201/">scikit-learn数据预处理fit_transform()与transform()的区别(转)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018030701/">构建逻辑回归模型实例</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171225_regular/">正则表达式</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171222_crawler4/">Python 爬虫实战(4)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171219_python_error/">TypeError, a bytes-like object is required, not 'str'</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171219_crawler3/">Python 爬虫实战(3)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171219_crawler2/">Python 爬虫实战(2)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171214_crawler/">Python 爬虫实战(1)</a></li></ul></div><div class="widget"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/zj2626/" title="github" target="_blank">github</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer">Copyright © 2021 <a href="/." rel="nofollow">ZJ_BLOG.</a> Powered by<a rel="nofollow" target="_blank" href="https://hexo.io"> Hexo.</a><a rel="nofollow" target="_blank" href="https://github.com/tufu9441/maupassant-hexo"> Theme</a> by<a rel="nofollow" target="_blank" href="https://github.com/pagecho"> Cho.</a></div></div></div><a class="show" id="rocket" href="#top"></a><script type="text/javascript" src="/js/totop.js?v=0.0.1" async></script><script type="text/javascript" src="//cdn.bootcss.com/fancybox/3.2.5/jquery.fancybox.min.js" async></script><script type="text/javascript" src="/js/fancybox.js?v=0.0.1" async></script><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/fancybox/3.2.5/jquery.fancybox.min.css"><script type="text/javascript" src="/js/search.js?v=0.0.1"></script><script>var search_path = 'search.xml';
if (search_path.length == 0) {
search_path = 'search.xml';
}
var path = '/' + search_path;
searchFunc(path, 'local-search-input', 'local-search-result');
</script><script>var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = '//hm.baidu.com/hm.js?' + 'c9a692191e9aca9e30daa3f6326cc789';
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script type="text/javascript" src="/js/codeblock-resizer.js?v=0.0.1"></script><script type="text/javascript" src="/js/smartresize.js?v=0.0.1"></script></div></body></html>