架构图实际上包含了所有的底层设计细节,这些细节共同支撑着顶层的架构设计。底层设计信息与顶层架构设计相辅相成,共同构成了完整的系统架构文档。
软件架构的终极目标,是以最小的人力成本,满足系统的构建与维护需求。
混乱的架构带来的成本变化:
——「」
架构图实际上包含了所有的底层设计细节,这些细节共同支撑着顶层的架构设计。底层设计信息与顶层架构设计相辅相成,共同构成了完整的系统架构文档。
软件架构的终极目标,是以最小的人力成本,满足系统的构建与维护需求。
混乱的架构带来的成本变化:
行为价值:让机器按照指定方式运转,为系统使用者创造或提升利润。
架构价值:降低变更成本。
理论上,没有什么程序是不能修改的。但在现实中,某些系统的变更成本可能远远高于变更本身带来的价值,导致系统实际上无法更改。
提示
如果你问业务部门是否希望能够变更需求,他们通常会肯定地回答,并补充一句:完成当前功能比实现未来的灵活性更重要。但讽刺的是,当业务部门事后提出新需求,而你的工作量预估远超他们预期时,他们往往会因系统混乱、难以变更而愤怒。
加密是将明文信息通过算法和密钥转换为密文的过程,只有拥有正确密钥的人才能解密恢复原文。
Nginx 是什么?Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它以高并发、高可靠、低内存消耗著称,被广泛应用于网站架构中。
当你在浏览器输入网址并回车时,浏览器会向远端服务器发起 HTTP 请求,服务器返回 HTML 文件,浏览器解析并渲染页面。Nginx 作为中间层,能够高效地处理这些请求。
没有什么是加一层中间层解决不了的,如果有就再加一层。Nginx 就是这样一个强大的中间层。
CORS(Cross-Origin Resource Sharing,跨域资源共享)是一种浏览器的安全机制,用于允许服务器声明哪些源可以访问资源,从而实现跨域访问控制。
浏览器的同源策略(Same-Origin Policy)限制了不同源之间的资源访问,防止恶意网站窃取数据。但实际开发中,前后端分离、API 网关等场景常常需要跨域访问,这时就需要 CORS。
Access-Control-Allow-Origin
、Access-Control-Allow-Methods
、Access-Control-Allow-Headers
等响应头,告知浏览器允许的跨域策略。CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击方式,攻击者诱导已登录受信任网站的用户,在不知情的情况下发送恶意请求,从而在用户已认证的情况下执行非本意的操作。
攻击者通过构造与受害网站相同的请求,诱导用户点击链接或访问页面,利用用户已登录的身份在后台发起请求,达到攻击目的。
如下是易受 CSRF 攻击的 Kotlin 后端代码示例:
// 未做任何 CSRF 防护的 Spring Controller
@RestController
class TransferController {
@PostMapping("/transfer")
fun transfer(
@RequestParam to: String,
@RequestParam amount: Int
): String {
// 直接处理转账请求,未校验 CSRF Token
// 实际业务逻辑略
return "转账成功"
}
}
XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的 Web 安全漏洞,攻击者通过在网页中注入恶意脚本,使脚本在用户浏览器中执行,从而窃取用户信息、冒充用户操作等。
XSS 攻击主要分为三类:
攻击代码作为请求参数提交,服务器端将其原样返回并在页面中立即执行。
示例:
https://example.com/search?q=<script>alert('xss')</script>
笔者在使用vscode 编写md时,发现子标题 or 代码块过长,但无法折叠,又在agicy的教唆下,于是决定在假期后开发此插件。
TS yyds, 这里创建项目后选择第一个,
不知道怎么创建的看这里。
忽略警告
名字就叫markdown-folding
由于今天要备战第十六届,故把第十五届的题做了一下。 其中第六大题(最后一题)的题解比较抽象(“注意到”,是我注意力涣散了), 如下给出一种更容易理解的思路过程。