编程

当我们在谈论高并发的时候究竟在谈什么?

什么是高并发?

高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,
简单点说,就是QPS(Queries per second)。

那么我们在谈论高并发的时候,究竟在谈些什么东西呢?

                        

如何减少程序员的认知负荷进行高效编程

程序员的认知负荷

作为一名专业程序员,我每天都在阅读和编写代码。我正在研究新项目,进行代码审查,使用遗留代码,阅读文档等。根据我自己和同事的经验,作为一名程序员通常比实际编写代码需要更多阅读。

无论是你自己的代码还是其他人的代码,当你打开一个文件时,你必须全身心投入。在你能够编写代码,做你自己的事情之前,你需要了解正在发生的事情。

几乎每天都要处理代码,找到使这个过程变得简单的方法很重要。为了尽量减少认知负担,它会尽可能地增加你的大脑。…

HTTP API 认证授权方法

我们知道,HTTP是无状态的,所以,当我们需要获得用户是否在登录的状态时,我们需要检查用户的登录状态,一般来说,用户的登录成功后,服务器会发一个登录凭证(又被叫作Token),就像你去访问某个公司,在前台被认证过合法后,这个公司的前台会给你的一个访客卡一样,之后,你在这个公司内去到哪都用这个访客卡来开门,而不再校验你是哪一个人。在计算机的世界里,这个登录凭证的相关数据会放在两种地方,一个地方在用户端,以Cookie的方式(一般不会放在浏览器的Local Storage,因为这很容易出现登录凭证被XSS攻击),另一个地方是放在服务器端,又叫Session的方式(SessonID存于Cookie)。

但是,这个世界还是比较复杂的,除了用户访问,还有用户委托的第三方的应用,还有企业和企业间的调用,这里,我想把业内常用的一些 API认证技术相对系统地总结归纳一下,这样可以让大家更为全面的了解这些技术。注意,这是一篇长文!

本篇文章会覆盖如下技术:

  • HTTP Basic
  • Digest Access
  • App Secret Key + HMAC
  • JWT – JSON Web Tokens
  • OAuth 1.0 – 3 legged & 2 legged
  • OAuth 2.0 – Authentication Code & Client Credential
                        

我们的程序是如何编译成二进制的

几乎你们每个人都必须编写一个程序,编译它然后运行它以查看你辛苦劳动的成果。终于看到你的程序正常工作感觉很好,不是吗?但为了使所有这些工作,我们还有其他人也要感恩。这就是你的编译器(当然,假设你使用的是编译语言,而不是解释的语言),这也在幕后做了很多努力。

在本文中,我将尝试向您展示您编写的源代码如何转换为您的机器实际上能够运行的内容。我选择Linux作为主机,C作为编程语言,但这里的概念足以应用于许多编译语言。

注意:如果您想在本文中进行操作,那么您必须确保在本地计算机上安装了gcc,elfutils。…

        

每个程序员都应该知道的延迟数

L1 缓存 引用        ......................... 0.5 ns
分支预测错误        ............................ 5 ns
L2 缓存引用         ........................... 7 ns
互斥锁定/解锁       ........................... 25 ns
主内存引用              ...................... 100 ns
一次 CPU 上下文切换(系统调用)需要大约 ..........1500 ns
用 Zippy压缩1K字节   ............. 3,000 ns  =   3 µs
发送 2K 字节通过1Gbps内网  ....... 

我是一个CPU:这个世界慢!死!了!

让 CPU 告诉你硬盘和网络到底有多慢

简介

经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了。

最为我们熟知的关于计算机不同组件速度差异的图表,是下面这种金字塔形式:越往上速度越快,容量越小,而价格越高。这张图只是给了我们一个直观地感觉,并没有对各个速度和性能做出量化的说明和解释。而实际上,不同层级之间的差异要比这张图大的多。这篇文章就让你站在 CPU 的角度看这个世界,说说到底它们有多慢。…