Calvin's Blog

理解 HTTPS:加密解密的全过程

在互联网中,确保通信的安全至关重要,特别是当我们浏览网站时,HTTPS(安全的超文本传输协议)成为保护用户数据隐私的关键技术。 本文将通过简单的解释和流程图,深入理解 HTTPS 如何在客户端和服务器之间保证通信安全。 什么是 HTTPS? HTTPS 是 HTTP 协议的安全版本,它通过 SSL/TLS 协议 为 HTTP 数据传输提供加密、认证和完整性保护。其核心优势在于: ...

Web实时通信的几种方式

在 Web 应用中,实时通信非常关键,无论是消息传递、通知还是数据更新。为了实现实时通信,通常使用 HTTP 轮询、服务器推送事件(SSE)、WebSocket 和 WebHooks 四种方法。本文将深入探讨它们的工作原理、适用场景及示例。 1. HTTP 轮询 工作原理:HTTP 轮询是一种最基础的通信方法,客户端定期向服务器发送请求,查询是否有新数据。即使没有更新,服务器也会响应,这...

圣诞特辑-交换礼物

圣诞节到了,Team里面的小伙伴组织了一个交换礼物的活动,我也奉命接下了写个小工具的任务。 需求 需求很简单,就是将 人员名单 和 礼物清单 排成两列,然后随机摇出新的匹对,这样每个人就得到了新的礼物。 算法 核心算法其实很简单,就是将数组进行随机乱序排列,代码如下 从后往前遍历,随机一个前面的数的坐标和当前数交换,所有位置的数字都交换完成 function shuffle(...

C# Async Await 探究

这篇文章源于同事问我的一个问题, async await 会不会创建新的线程? 当时直观的感觉是会创建,觉得 async await 只是语法糖,当前线程没有被 block,而后台肯定需要做事,所以必然会创建新的线程去执行任务才对。 然而查了文档,发现官方文档明确说明: async 和 await 关键字不会创建其他线程。 因为异步方法不会在其自身线程上运行,因此它不需要多线程。 参考...

汇编语言基础

最近查一些文章,涉及到了汇编语言,所以翻出一些资料复习一下。 我们平常学习的编程语言,如 C, C++, Java, C#,Python等等都是高级语言。我们也都知道,机器只能理解执行0101的代码,那高级语言如何转换为机器语言的? 其实高级语言是通过编译器转换为机器语言的,在编译过程中间会生成一个过渡性的语言,叫汇编语言,高级语言屏蔽了实现的细节,如对内存的操作,而汇编语言是低级语言,...