编程

那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程

那些年,空气中仿佛还能闻到汉唐盛世的余韵,因此你决不允许自己的脸上有油光,时刻保持活力。然而,你一定曾为这些“高深术语”感到过困扰——依赖倒置•控制反转•依赖注入•面向接口编程。也许时至今日,你仍对它们一知半解。不过就在今天,这一切都将彻底改变!我将带领你以一种全新的高清视角进入奇妙的编程世界,领略涵泳在这些“高深术语”中的活泼泼的地气,以及翩跹于青萍之末的云水禅心。…

谁说明天上线,这货压根不知道开发流程!

一、前言

互联网公司常见工种有哪些?

互联网中一个项目的上线会需要各个工种间的配合,以研发为视角上会承接产品需求,下会交给测试验证,最终完成项目交付上线。其实除此之外,还会有业务、运营、UI设计、运维,来配合项目的发起、使用和运维维护。

图 18-1,互联网工种协同合作。…

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

什么是高并发?

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

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

                        

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

程序员的认知负荷

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

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

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

HTTP API 认证授权方法

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

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

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

  • HTTP Basic
  • Digest Access
  • App Secret Key + HMAC
  • JWTJSON 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内网  .......