learn.lianglianglee.com/专栏/Java 性能优化实战-完/22 结束语 实践出真知.md.html
2022-05-11 18:57:05 +08:00

625 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>22 结束语 实践出真知.md.html</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/专栏/Java 性能优化实战-完/00 Java 性能优化,是进阶高级架构师的炼金石.md.html">00 Java 性能优化,是进阶高级架构师的炼金石.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/01 理论分析:性能优化,有哪些衡量指标?需要注意什么?.md.html">01 理论分析:性能优化,有哪些衡量指标?需要注意什么?.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/02 理论分析:性能优化有章可循,谈谈常用的切入点.md.html">02 理论分析:性能优化有章可循,谈谈常用的切入点.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/03 深入剖析:哪些资源,容易成为瓶颈?.md.html">03 深入剖析:哪些资源,容易成为瓶颈?.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/04 工具实践:如何获取代码性能数据?.md.html">04 工具实践:如何获取代码性能数据?.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/05 工具实践:基准测试 JMH精确测量方法性能.md.html">05 工具实践:基准测试 JMH精确测量方法性能.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/06 案例分析:缓冲区如何让代码加速.md.html">06 案例分析:缓冲区如何让代码加速.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/07 案例分析:无处不在的缓存,高并发系统的法宝.md.html">07 案例分析:无处不在的缓存,高并发系统的法宝.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/08 案例分析Redis 如何助力秒杀业务.md.html">08 案例分析Redis 如何助力秒杀业务.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/09 案例分析:池化对象的应用场景.md.html">09 案例分析:池化对象的应用场景.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/10 案例分析:大对象复用的目标和注意点.md.html">10 案例分析:大对象复用的目标和注意点.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/11 案例分析:如何用设计模式优化性能.md.html">11 案例分析:如何用设计模式优化性能.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/12 案例分析:并行计算让代码“飞”起来.md.html">12 案例分析:并行计算让代码“飞”起来.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/13 案例分析:多线程锁的优化.md.html">13 案例分析:多线程锁的优化.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/14 案例分析:乐观锁和无锁.md.html">14 案例分析:乐观锁和无锁.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/15 案例分析:从 BIO 到 NIO再到 AIO.md.html">15 案例分析:从 BIO 到 NIO再到 AIO.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/16 案例分析:常见 Java 代码优化法则.md.html">16 案例分析:常见 Java 代码优化法则.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/17 高级进阶JVM 如何完成垃圾回收?.md.html">17 高级进阶JVM 如何完成垃圾回收?.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/18 高级进阶JIT 如何影响 JVM 的性能?.md.html">18 高级进阶JIT 如何影响 JVM 的性能?.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/19 高级进阶JVM 常见优化参数.md.html">19 高级进阶JVM 常见优化参数.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/20 SpringBoot 服务性能优化.md.html">20 SpringBoot 服务性能优化.md.html</a>
</li>
<li>
<a href="/专栏/Java 性能优化实战-完/21 性能优化的过程方法与求职面经总结.md.html">21 性能优化的过程方法与求职面经总结.md.html</a>
</li>
<li>
<a class="current-tab" href="/专栏/Java 性能优化实战-完/22 结束语 实践出真知.md.html">22 结束语 实践出真知.md.html</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content" style="max-width: 960px; margin: 0 auto;
overflow-x: auto;
overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><h1>22 结束语 实践出真知</h1>
<p>你好,欢迎来到该专栏的最后一部分,到现在为止,咱们的这一专栏就算讲完了,在学习过程中,你会发现这个专栏的思路是非常清晰的,性能优化的诸多方法论和面试高频考点都包含在其中,非常值得你反复学习揣摩。</p>
<p>但实际上,写作过程并没有那么顺利,正如我在开篇词中所说,“性能优化是个系统性工程,对工程师的技术广度和深度都有要求”,所以要将“性能优化”这个既需要扎实知识基础,又需要充分实践的知识点讲明白则是非常大的考验。</p>
<p>在写作的过程中,我也参考了数十本性能优化专题的书籍,但都没有发现我想要的讲解方式。因为很多书籍,面向的是小白用户,它仅仅是在对知识点进行单纯的介绍,和性能优化这一实践主题是不搭边的,而这种情况在绝大多数普通的 Java 基础书籍中都存在。甚至连权威的《Java 性能优化权威指南》,也是有非常大的篇幅在讲解 JVM其讲解的很多原理性的知识并不能在工作中真正实践起来。</p>
<p>我之前在拉勾教育也开过《深入浅出 Java 虚拟机》这一专栏,我一共花了 25 课时讲解 JVM但在其中的性能优化部分中我将其压缩到了 3 个课时,所以很多细节都是无法展开的。</p>
<p>综上两种情况,上述写法都不能完善全面地讲解“性能优化”,所以我决定开一门《性能优化实战 21 讲》的专栏,挑选在工作中最常用到的组件,来配合原理性的性能优化点进行讲解。</p>
<p>在课程中我一直在强调思维的系统性、完整性在性能优化中你不应该只关注性能优化本身而更要关注它所引入的问题性能优化并不是“碰巧”知道某个优化点该如何做而是需要很多准备工作和数据支撑。你可以参考“21 | 性能优化的过程方法”的脑图,它将帮助你系统性地分析性能瓶颈,选用正确的优化方法,并处理好优化所带来的副作用。</p>
<p>你会发现,很多遗留系统是不满足应用某些性能优化法则的,你需要在优化前重构你的代码。所以,你不妨对你的代码要求苛刻一点,超过 1 秒的请求,都分析一下有没有优化的空间,把握好每一次的实践机会。相信经过多次实践,你一定会对性能优化有更深的理解。</p>
<p>虽然本专栏到此就结束了,但不代表你对性能优化的学习就停止了,本专栏仅仅是打开了“性能优化”的大门,之后还需要你亲自实践,才能欣赏里面的风景。尤其是对于“性能优化”这一本身就非常具有“实践性”的主题,在平常的工作中,希望你一定多积累开拓自己的广度认知,并深耕自己的技术实力,相信你一定能取得质的飞跃。</p>
</div>
</div>
<div>
<div style="float: left">
<a href="/专栏/Java 性能优化实战-完/21 性能优化的过程方法与求职面经总结.md.html">上一页</a>
</div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"709971532cac3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>