learn.lianglianglee.com/专栏/Java并发编程实战/index.html
2022-08-14 03:40:33 +08:00

218 lines
16 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>note-submit</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="/PDF">PDF</a>
</li>
<li>
<a href="/专栏">专栏</a>
</li>
<li>
<a href="/恋爱必修课">恋爱必修课</a>
</li>
<li>
<a href="/文章">文章</a>
</li>
<li>
<a href="/极客时间">极客时间</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><!--add content-->
<h1>Java并发编程实战</h1>
<ul>
<li><a href = '\专栏\Java并发编程实战\00 开篇词你为什么需要学习并发编程?.md.html'>00 开篇词你为什么需要学习并发编程?</a></li>
<li><a href = '\专栏\Java并发编程实战\01 如何制定性能调优标准?.md.html'>01 如何制定性能调优标准?</a></li>
<li><a href = '\专栏\Java并发编程实战\02 如何制定性能调优策略?.md.html'>02 如何制定性能调优策略?</a></li>
<li><a href = '\专栏\Java并发编程实战\03 字符串性能优化不容小觑百M内存轻松存储几十G数据.md.html'>03 字符串性能优化不容小觑百M内存轻松存储几十G数据</a></li>
<li><a href = '\专栏\Java并发编程实战\04 慎重使用正则表达式.md.html'>04 慎重使用正则表达式</a></li>
<li><a href = '\专栏\Java并发编程实战\05 ArrayList还是LinkedList使用不当性能差千倍.md.html'>05 ArrayList还是LinkedList使用不当性能差千倍</a></li>
<li><a href = '\专栏\Java并发编程实战\06 Stream如何提高遍历集合效率.md.html'>06 Stream如何提高遍历集合效率</a></li>
<li><a href = '\专栏\Java并发编程实战\07 深入浅出HashMap的设计与优化.md.html'>07 深入浅出HashMap的设计与优化</a></li>
<li><a href = '\专栏\Java并发编程实战\08 网络通信优化之IO模型如何解决高并发下IO瓶颈.md.html'>08 网络通信优化之IO模型如何解决高并发下IO瓶颈</a></li>
<li><a href = '\专栏\Java并发编程实战\09 网络通信优化之序列化避免使用Java序列化.md.html'>09 网络通信优化之序列化避免使用Java序列化</a></li>
<li><a href = '\专栏\Java并发编程实战\10 网络通信优化之通信协议如何优化RPC网络通信.md.html'>10 网络通信优化之通信协议如何优化RPC网络通信</a></li>
<li><a href = '\专栏\Java并发编程实战\11 答疑课堂深入了解NIO的优化实现原理.md.html'>11 答疑课堂深入了解NIO的优化实现原理</a></li>
<li><a href = '\专栏\Java并发编程实战\12 多线程之锁优化深入了解Synchronized同步锁的优化方法.md.html'>12 多线程之锁优化深入了解Synchronized同步锁的优化方法</a></li>
<li><a href = '\专栏\Java并发编程实战\13 多线程之锁优化深入了解Lock同步锁的优化方法.md.html'>13 多线程之锁优化深入了解Lock同步锁的优化方法</a></li>
<li><a href = '\专栏\Java并发编程实战\14 多线程之锁优化(下):使用乐观锁优化并行操作.md.html'>14 多线程之锁优化(下):使用乐观锁优化并行操作</a></li>
<li><a href = '\专栏\Java并发编程实战\15 多线程调优(上):哪些操作导致了上下文切换?.md.html'>15 多线程调优(上):哪些操作导致了上下文切换?</a></li>
<li><a href = '\专栏\Java并发编程实战\16 多线程调优(下):如何优化多线程上下文切换?.md.html'>16 多线程调优(下):如何优化多线程上下文切换?</a></li>
<li><a href = '\专栏\Java并发编程实战\17 并发容器的使用:识别不同场景下最优容器.md.html'>17 并发容器的使用:识别不同场景下最优容器</a></li>
<li><a href = '\专栏\Java并发编程实战\18 如何设置线程池大小?.md.html'>18 如何设置线程池大小?</a></li>
<li><a href = '\专栏\Java并发编程实战\19 如何用协程来优化多线程业务?.md.html'>19 如何用协程来优化多线程业务?</a></li>
<li><a href = '\专栏\Java并发编程实战\20 磨刀不误砍柴工欲知JVM调优先了解JVM内存模型.md.html'>20 磨刀不误砍柴工欲知JVM调优先了解JVM内存模型</a></li>
<li><a href = '\专栏\Java并发编程实战\21 深入JVM即时编译器JIT优化Java编译.md.html'>21 深入JVM即时编译器JIT优化Java编译</a></li>
<li><a href = '\专栏\Java并发编程实战\22 如何优化垃圾回收机制?.md.html'>22 如何优化垃圾回收机制?</a></li>
<li><a href = '\专栏\Java并发编程实战\23 如何优化JVM内存分配.md.html'>23 如何优化JVM内存分配</a></li>
<li><a href = '\专栏\Java并发编程实战\24 内存持续上升,我该如何排查问题?.md.html'>24 内存持续上升,我该如何排查问题?</a></li>
<li><a href = '\专栏\Java并发编程实战\25 答疑课堂:模块四热点问题解答.md.html'>25 答疑课堂:模块四热点问题解答</a></li>
<li><a href = '\专栏\Java并发编程实战\26 单例模式:如何创建单一对象优化系统性能?.md.html'>26 单例模式:如何创建单一对象优化系统性能?</a></li>
<li><a href = '\专栏\Java并发编程实战\27 原型模式与享元模式:提升系统性能的利器.md.html'>27 原型模式与享元模式:提升系统性能的利器</a></li>
<li><a href = '\专栏\Java并发编程实战\28 如何使用设计模式优化并发编程?.md.html'>28 如何使用设计模式优化并发编程?</a></li>
<li><a href = '\专栏\Java并发编程实战\29 生产者消费者模式:电商库存设计优化.md.html'>29 生产者消费者模式:电商库存设计优化</a></li>
<li><a href = '\专栏\Java并发编程实战\30 装饰器模式:如何优化电商系统中复杂的商品价格策略?.md.html'>30 装饰器模式:如何优化电商系统中复杂的商品价格策略?</a></li>
<li><a href = '\专栏\Java并发编程实战\31 答疑课堂:模块五思考题集锦.md.html'>31 答疑课堂:模块五思考题集锦</a></li>
<li><a href = '\专栏\Java并发编程实战\32 MySQL调优之SQL语句如何写出高性能SQL语句.md.html'>32 MySQL调优之SQL语句如何写出高性能SQL语句</a></li>
<li><a href = '\专栏\Java并发编程实战\33 MySQL调优之事务高并发场景下的数据库事务调优.md.html'>33 MySQL调优之事务高并发场景下的数据库事务调优</a></li>
<li><a href = '\专栏\Java并发编程实战\34 MySQL调优之索引索引的失效与优化.md.html'>34 MySQL调优之索引索引的失效与优化</a></li>
<li><a href = '\专栏\Java并发编程实战\35 记一次线上SQL死锁事故如何避免死锁.md.html'>35 记一次线上SQL死锁事故如何避免死锁</a></li>
<li><a href = '\专栏\Java并发编程实战\36 什么时候需要分表分库?.md.html'>36 什么时候需要分表分库?</a></li>
<li><a href = '\专栏\Java并发编程实战\37 电商系统表设计优化案例分析.md.html'>37 电商系统表设计优化案例分析</a></li>
<li><a href = '\专栏\Java并发编程实战\38 数据库参数设置优化,失之毫厘差之千里.md.html'>38 数据库参数设置优化,失之毫厘差之千里</a></li>
<li><a href = '\专栏\Java并发编程实战\39 答疑课堂MySQL中InnoDB的知识点串讲.md.html'>39 答疑课堂MySQL中InnoDB的知识点串讲</a></li>
<li><a href = '\专栏\Java并发编程实战\41 如何设计更优的分布式锁?.md.html'>41 如何设计更优的分布式锁?</a></li>
<li><a href = '\专栏\Java并发编程实战\42 电商系统的分布式事务调优.md.html'>42 电商系统的分布式事务调优</a></li>
<li><a href = '\专栏\Java并发编程实战\43 如何使用缓存优化系统性能?.md.html'>43 如何使用缓存优化系统性能?</a></li>
<li><a href = '\专栏\Java并发编程实战\44 记一次双十一抢购性能瓶颈调优.md.html'>44 记一次双十一抢购性能瓶颈调优</a></li>
<li><a href = '\专栏\Java并发编程实战\加餐 什么是数据的强、弱一致性?.md.html'>加餐 什么是数据的强、弱一致性?</a></li>
<li><a href = '\专栏\Java并发编程实战\加餐 推荐几款常用的性能测试工具.md.html'>加餐 推荐几款常用的性能测试工具</a></li>
<li><a href = '\专栏\Java并发编程实战\答疑课堂:模块三热点问题解答.md.html'>答疑课堂:模块三热点问题解答</a></li>
<li><a href = '\专栏\Java并发编程实战\结束语 栉风沐雨,砥砺前行!.md.html'>结束语 栉风沐雨,砥砺前行!</a></li>
</ul>
</div>
</div>
<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":"70996b2f083d3d60","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>