learn.lianglianglee.com/专栏/软件工程之美/index.html
2022-08-14 03:40:33 +08:00

224 lines
17 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>软件工程之美</h1>
<ul>
<li><a href = '\专栏\软件工程之美\00 开篇词 你为什么应该学好软件工程?.md.html'>00 开篇词 你为什么应该学好软件工程?</a></li>
<li><a href = '\专栏\软件工程之美\01 到底应该怎样理解软件工程?.md.html'>01 到底应该怎样理解软件工程?</a></li>
<li><a href = '\专栏\软件工程之美\02 工程思维:把每件事都当作一个项目来推进.md.html'>02 工程思维:把每件事都当作一个项目来推进</a></li>
<li><a href = '\专栏\软件工程之美\03 瀑布模型:像工厂流水线一样把软件开发分层化.md.html'>03 瀑布模型:像工厂流水线一样把软件开发分层化</a></li>
<li><a href = '\专栏\软件工程之美\04 瀑布模型之外,还有哪些开发模型?.md.html'>04 瀑布模型之外,还有哪些开发模型?</a></li>
<li><a href = '\专栏\软件工程之美\05 敏捷开发到底是想解决什么问题?.md.html'>05 敏捷开发到底是想解决什么问题?</a></li>
<li><a href = '\专栏\软件工程之美\06 大厂都在用哪些敏捷方法?(上).md.html'>06 大厂都在用哪些敏捷方法?(上)</a></li>
<li><a href = '\专栏\软件工程之美\07 大厂都在用哪些敏捷方法?(下).md.html'>07 大厂都在用哪些敏捷方法?(下)</a></li>
<li><a href = '\专栏\软件工程之美\08 怎样平衡软件质量与时间成本范围的关系?.md.html'>08 怎样平衡软件质量与时间成本范围的关系?</a></li>
<li><a href = '\专栏\软件工程之美\09 为什么软件工程项目普遍不重视可行性分析?.md.html'>09 为什么软件工程项目普遍不重视可行性分析?</a></li>
<li><a href = '\专栏\软件工程之美\10 如果你想技术转管理,先来试试管好一个项目.md.html'>10 如果你想技术转管理,先来试试管好一个项目</a></li>
<li><a href = '\专栏\软件工程之美\11 项目计划:代码未动,计划先行.md.html'>11 项目计划:代码未动,计划先行</a></li>
<li><a href = '\专栏\软件工程之美\12 流程和规范:红绿灯不是约束,而是用来提高效率.md.html'>12 流程和规范:红绿灯不是约束,而是用来提高效率</a></li>
<li><a href = '\专栏\软件工程之美\13 白天开会,加班写代码的节奏怎么破?.md.html'>13 白天开会,加班写代码的节奏怎么破?</a></li>
<li><a href = '\专栏\软件工程之美\14 项目管理工具:一切管理问题,都应思考能否通过工具解决.md.html'>14 项目管理工具:一切管理问题,都应思考能否通过工具解决</a></li>
<li><a href = '\专栏\软件工程之美\15 风险管理不能盲目乐观凡事都应该有B计划.md.html'>15 风险管理不能盲目乐观凡事都应该有B计划</a></li>
<li><a href = '\专栏\软件工程之美\16 怎样才能写好项目文档?.md.html'>16 怎样才能写好项目文档?</a></li>
<li><a href = '\专栏\软件工程之美\17 需求分析到底要分析什么?怎么分析?.md.html'>17 需求分析到底要分析什么?怎么分析?</a></li>
<li><a href = '\专栏\软件工程之美\18 原型设计:如何用最小的代价完成产品特性?.md.html'>18 原型设计:如何用最小的代价完成产品特性?</a></li>
<li><a href = '\专栏\软件工程之美\19 作为程序员,你应该有产品意识.md.html'>19 作为程序员,你应该有产品意识</a></li>
<li><a href = '\专栏\软件工程之美\20 如何应对让人头疼的需求变更问题?.md.html'>20 如何应对让人头疼的需求变更问题?</a></li>
<li><a href = '\专栏\软件工程之美\21 架构设计:普通程序员也能实现复杂系统?.md.html'>21 架构设计:普通程序员也能实现复杂系统?</a></li>
<li><a href = '\专栏\软件工程之美\22 如何为项目做好技术选型?.md.html'>22 如何为项目做好技术选型?</a></li>
<li><a href = '\专栏\软件工程之美\23 架构师:不想当架构师的程序员不是好程序员.md.html'>23 架构师:不想当架构师的程序员不是好程序员</a></li>
<li><a href = '\专栏\软件工程之美\24 技术债务:是继续修修补补凑合着用,还是推翻重来?.md.html'>24 技术债务:是继续修修补补凑合着用,还是推翻重来?</a></li>
<li><a href = '\专栏\软件工程之美\25 有哪些方法可以提高开发效率?.md.html'>25 有哪些方法可以提高开发效率?</a></li>
<li><a href = '\专栏\软件工程之美\26 持续交付:如何做到随时发布新版本到生产环境?.md.html'>26 持续交付:如何做到随时发布新版本到生产环境?</a></li>
<li><a href = '\专栏\软件工程之美\27 软件工程师的核心竞争力是什么?(上).md.html'>27 软件工程师的核心竞争力是什么?(上)</a></li>
<li><a href = '\专栏\软件工程之美\28 软件工程师的核心竞争力是什么?(下).md.html'>28 软件工程师的核心竞争力是什么?(下)</a></li>
<li><a href = '\专栏\软件工程之美\29 自动化测试如何把Bug杀死在摇篮里.md.html'>29 自动化测试如何把Bug杀死在摇篮里</a></li>
<li><a href = '\专栏\软件工程之美\30 用好源代码管理工具,让你的协作更高效.md.html'>30 用好源代码管理工具,让你的协作更高效</a></li>
<li><a href = '\专栏\软件工程之美\31 软件测试要为产品质量负责吗?.md.html'>31 软件测试要为产品质量负责吗?</a></li>
<li><a href = '\专栏\软件工程之美\32 软件测试:什么样的公司需要专职测试?.md.html'>32 软件测试:什么样的公司需要专职测试?</a></li>
<li><a href = '\专栏\软件工程之美\33 测试工具为什么不应该通过QQ微信邮件报Bug.md.html'>33 测试工具为什么不应该通过QQ微信邮件报Bug</a></li>
<li><a href = '\专栏\软件工程之美\34 账号密码泄露成灾,应该怎样预防?.md.html'>34 账号密码泄露成灾,应该怎样预防?</a></li>
<li><a href = '\专栏\软件工程之美\35 版本发布:软件上线只是新的开始.md.html'>35 版本发布:软件上线只是新的开始</a></li>
<li><a href = '\专栏\软件工程之美\36 DevOps工程师到底要做什么事情.md.html'>36 DevOps工程师到底要做什么事情</a></li>
<li><a href = '\专栏\软件工程之美\37 遇到线上故障,你和高手的差距在哪里?.md.html'>37 遇到线上故障,你和高手的差距在哪里?</a></li>
<li><a href = '\专栏\软件工程之美\38 日志管理:如何借助工具快速发现和定位产品问题 .md.html'>38 日志管理:如何借助工具快速发现和定位产品问题 </a></li>
<li><a href = '\专栏\软件工程之美\39 项目总结:做好项目复盘,把经验变成能力.md.html'>39 项目总结:做好项目复盘,把经验变成能力</a></li>
<li><a href = '\专栏\软件工程之美\40 最佳实践:小团队如何应用软件工程?.md.html'>40 最佳实践:小团队如何应用软件工程?</a></li>
<li><a href = '\专栏\软件工程之美\41 为什么程序员的业余项目大多都死了?.md.html'>41 为什么程序员的业余项目大多都死了?</a></li>
<li><a href = '\专栏\软件工程之美\42 反面案例:盘点那些失败的软件项目.md.html'>42 反面案例:盘点那些失败的软件项目</a></li>
<li><a href = '\专栏\软件工程之美\43 以VS Code为例看大型开源项目是如何应用软件工程的.md.html'>43 以VS Code为例看大型开源项目是如何应用软件工程的</a></li>
<li><a href = '\专栏\软件工程之美\44 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?.md.html'>44 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?</a></li>
<li><a href = '\专栏\软件工程之美\45 从软件工程的角度看微服务、云计算、人工智能这些新技术.md.html'>45 从软件工程的角度看微服务、云计算、人工智能这些新技术</a></li>
<li><a href = '\专栏\软件工程之美\一问一答第1期 30个软件开发常见问题解决策略.md.html'>一问一答第1期 30个软件开发常见问题解决策略</a></li>
<li><a href = '\专栏\软件工程之美\一问一答第2期 30个软件开发常见问题解决策略.md.html'>一问一答第2期 30个软件开发常见问题解决策略</a></li>
<li><a href = '\专栏\软件工程之美\一问一答第3期 18个软件开发常见问题解决策略.md.html'>一问一答第3期 18个软件开发常见问题解决策略</a></li>
<li><a href = '\专栏\软件工程之美\一问一答第4期 14个软件开发常见问题解决策略.md.html'>一问一答第4期 14个软件开发常见问题解决策略</a></li>
<li><a href = '\专栏\软件工程之美\一问一答第5期 22个软件开发常见问题解决策略.md.html'>一问一答第5期 22个软件开发常见问题解决策略</a></li>
<li><a href = '\专栏\软件工程之美\学习攻略 怎样学好软件工程?.md.html'>学习攻略 怎样学好软件工程?</a></li>
<li><a href = '\专栏\软件工程之美\特别放送 从软件工程的角度解读任正非的新年公开信.md.html'>特别放送 从软件工程的角度解读任正非的新年公开信</a></li>
<li><a href = '\专栏\软件工程之美\结束语 万事皆项目,软件工程无处不在.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>