本书适合所有 “不会说话” 且渴望改变自我的读者。说话是一门艺术,同一件事,通过不同的表达方式,结果可能截然不同。

特别是在职场中,光会做事而不会表达,即使做得再好,领导也难以看到你的成绩,功劳可能被他人抢走,最终只能默默承受委屈。

尽管本书篇幅不大,但涵盖了各种演讲场景,并提供了具体的练习方法。以下是对我启发最深的几个知识点:

阅读全文 »


我的博客使用 Hexo 生成,博文里面的图片地址是相对地址本地引用,使用标签插件的语法引入,如下:

1
2
# 本地图片资源,限制图片尺寸
{% asset_img image.jpg 200 400 %}

每次输入有点麻烦,可以借助 VSCode Snippets 实现更加快捷的输入。

具体使用方法如下:

  1. 打开 VSCode,点击File菜单,选择Preferences,然后点击Configure User Snippets
  2. 输入Markdown,点击回车。
  3. 在弹出的窗口中,添加一个新的 snippets,如下:
    阅读全文 »


我的启蒙方法

绘本阅读 APP 阅读英语分级,目前在读牛津树 1,后面计划把同级别(RAZ、海尼曼、红火箭等)的都刷一遍跳第二级别,每天早晨起床看十分钟英文动画,有时间就听看过的绘本磨耳朵。
以下是一些英语启蒙资源,供大家参考。

小程序

微信小程序搜索对应的小程序名称即可获取。

分级阅读助手

可以查询牛津树、RAZ、红火箭和海尼曼,不同级别之间的对应关系,便于横向扩展。

阅读全文 »


1.打开 hexo 官方插件页面 Plugins
2.搜索 footnotes 并安装 hexo-reference

1
npm install hexo-reference --save

配置根目录 _config.yml 文件,新增一下内容:

1
2
plugins:
- hexo-reference
阅读全文 »


对于现代实时 Web 应用程序来说,将事件从服务器发送到客户端的能力是必不可少的。多年来,这种必要性导致了多种方法的发展,每种方法都有自己的优点和缺点。最初,长轮询是唯一可用的选择。随后 WebSockets 继承了它,为双向通信提供了更强大的解决方案。继 WebSocket 之后,服务器发送事件 (SSE) 提供了一种更简单的方法,用于从服务器到客户端的单向通信。展望未来,WebTransport 协议有望通过提供更高效、灵活和可扩展的方法来进一步彻底改变这一格局。对于利基用例[1],WebRTC 也可能被考虑用于服务器-客户端事件。

本文旨在深入研究这些技术,比较它们的性能,强调它们的优点和局限性,并为各种用例提供建议,以帮助开发人员在构建实时 Web 应用程序时做出明智的决策。这是我在实现 RxDB 复制协议以兼容各种后端技术时收集的经验的浓缩总结。

什么是长轮询?​

长轮询是第一个启用服务器-客户端消息传递方法的“妙招”,该方法可以通过 HTTP 在浏览器中使用。该技术通过正常的 XHR[2] 请求模拟服务器推送通信。与传统轮询(客户端定期从服务器重复请求数据)不同,长轮询会建立与服务器的连接,该连接在新数据可用之前保持打开状态。一旦服务器有新的信息,它就会向客户端发送响应,并关闭连接。客户端收到服务器的响应后立即发起新的请求,如此循环往复。此方法允许更即时的数据更新并减少不必要的网络流量和服务器负载。但是,它仍然会导致通信延迟,并且效率低于 WebSocket 等其他实时技术。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// JavaScript客户端中的长轮询
function longPoll() {
fetch("http://example.com/poll")
.then((response) => response.json())
.then((data) => {
console.log("Received data:", data);
longPoll(); // 立即建立一个新的长轮询请求
})
.catch((error) => {
/**
* 在正常情况下,当连接超时或客户端离线时可能会出现错误。出现错误时,我们只需在一段延迟之后重新启动轮询。
*/
setTimeout(longPoll, 10000);
});
}
longPoll(); // 发起长轮询

在客户端实现长轮询非常简单,如上面的代码所示。然而,在后端,要确保客户端接收所有事件并且在客户端当前重新连接时不会错过更新,可能存在多种困难。

阅读全文 »
0%