Live Note

Remain optimistic

AJAX:实现原理与技术背景

在现代 Web 开发中,AJAX(Asynchronous JavaScript and XML,异步 JavaScript 和 XML)是一种不可或缺的技术。它通过异步通信实现了网页的无刷新更新,极大地提升了用户体验。那么,AJAX 是如何实现的?它的出现又有着怎样的背景?

从静态到动态的 Web 进化

Web 1.0 的局限性

在互联网早期,网页主要依赖同步请求模型。当用户点击链接或提交表单时,浏览器会向服务器发送请求,然后等待服务器返回全新的 HTML 页面。这一过程会导致整个页面刷新,用户不得不面对短暂的空白和等待。对于简单的静态网站,这种模式尚可接受,但随着 Web 应用复杂性的增加,例如实时聊天、动态表单验证等需求,这种方式的弊端愈发明显——用户体验差、交互效率低。

动态 Web 的需求

进入 21 世纪,互联网用户对 Web 应用的要求日益提高。人们希望网页能像桌面应用程序一样,提供流畅的交互和实时更新。例如,在输入搜索关键词时实时显示建议,或在聊天应用中即时刷新消息。这些需求推动了 Web 技术向动态化、异步化的方向发展。

技术基础的成熟

AJAX 并非凭空出现,它建立在一系列已有技术之上:

  • JavaScript:作为客户端脚本语言,负责处理用户交互和动态更新页面内容。
  • XMLHttpRequest(XHR):浏览器内置对象,允许在后台与服务器通信。
  • DOM(文档对象模型):提供操作页面结构的接口,使数据能够无缝嵌入。
  • XML:最初用于数据交换(后来 JSON 逐渐取而代之)。

这些技术的成熟为 AJAX 的诞生奠定了基础。尤其是 XMLHttpRequest,最早由微软在 Internet Explorer 5 中引入,随后被其他浏览器标准化,成为 AJAX 的核心组件。

Read more »

買了個阿里雲服務

有點太貴了。隨便跑點什麽 Memory 就 100%。

時常掉綫,不知道是不是網絡的問題。拿到公司 Network 環境一樣掉綫。

想搭個 Gatsby 玩玩,還是用自己的電腦吧。

Binary Search Tree

  • 若左子树不空,则左子树上所有结点的值均小于它的根结点的值。
  • 若右子树不空,则右子树上所有结点的值均大于它的根结点的值。
  • 左、右子树也分别为二叉排序树。
  • 没有键值相等的节点。

实现

Node:

1
2
3
4
5
6
7
8
let print = (key) => console.log(key)
class Node {
constructor(key) {
this.key = key
this.left = null
this.right = null
}
}
Read more »

什么是 Basic Authentication?

Basic Authentication 是一种 HTTP 协议的认证方式,它使用用户名和密码对客户端进行身份验证。
RFC 2617 定义了 Basic Authentication 协议,它规定了客户端如何向服务器发送请求,以及服务器如何验证用户名和密码。
当用户试图访问受保护的资源时,服务器会判断 HTTP Header 中的 Authorization 字段是否包含有效的 Basic Authentication 认证信息。如果没有,服务器会返回 401 Unauthorized 状态码,要求客户端提供认证信息,并在响应头中添加 WWW-Authenticate: Basic 字段。

Read more »

Battery