0%

随着互联网的快速发展,安全问题日益凸现出来成为焦点,传统 Web 领域 HTTP 协议的透明文本传输容易造成信息泄漏,引发各种不安全问题,HTTPS 的到来,将会极大改善这一现状,全站 HTTPS 也是势在必行。部署 HTTPS 网站必不可少的部分就是 CA 证书,但是大多数证书颁发机构是收费的,自签名证书浏览器又不认,好在有 Let’s Encrypt 这样的机构,为安全的互联网世界贡献了极大的力量。

阅读全文 »

之所以说是坑,是因为不了解其背后的本质,当你站在历史的源头,主动寻求真相的时候,你就会发现一切皆是必然。

阅读全文 »

MySQL 的架构组成以及各层职责?

MySQL 是一个分层设计架构,总提上可以分为 Server 层和存储层两层。如下图所示:

阅读全文 »

请查看详情,一张很大的思维导图,放大看!!!

阅读全文 »

NGINX 通过 ngx_http_rewrite_module 模块支持URL重写,支持 if 条件判断,但不支持 else。

NGINX rewrite 指令执行顺序:

  1. 执行 server 快的 rewrite 指令;
  2. 执行 location 匹配;
  3. 执行选定的 location 中的 rewrite 指令;

如果其中某一步 URI 被重写,则重新执行循环 1-3,直到找到真实存在的文件,如果循环超过10次,则返回 500 错误。

阅读全文 »

看别人怎么说,然后自己试着做,最后再表达出来,这样才会理解。根据字面意思,unsafe 包提供的 unsafe.Pointer 不是类型安全的指针,我们可以通过它直接操作内存,绕过 Go 语言的很多限制,获取较高的执行效率,但是换来的是更高的风险。

阅读全文 »

之前使用过 sync.WaitGroup 来实现一对多的 goroutine 协作流程同步,sync.WaitGroup 只要保证计数周期的完整性就是可以复用的,sync.WaitGroup 使用的黄金规则可以总计为:统一 Add,并发 Done,然后 Wait。但是今天我们使用另一个工具来实现同步:context.Context

阅读全文 »

相比于Go宣扬的以独特的 “用通讯的方式共享数据”,通过共享数据的方式来传递信息和协调线程运行的做法其实更加主流,毕竟现代的大多数现代编程语言,都是用后一种并发编程的解决方案。一旦数据被多个线程共享,那么就很可能会产生争用和冲突的情况了,这种情况也被成为竟态条件,这往往会破坏数据的一致性。共享数据的一致性代表着:多个线程对共享数据的操作总能达到他们各自预期的效果

阅读全文 »