beihai

beihai blog

序言

一个 Web 应用应该具有哪些特性,开发过程中注意哪些问题,这是我在初学 Web 时常常思考的问题。在此系列中作者不会用长长的列表指出开发者需要掌握的工具、框架,也不会刻画入微地去深究某一项程序设计的实现原理,旨在为初学者构建知识体系。如果你有想了解的问题、错误指正,可以在文章下面留言。

内存空洞

计算机在加载和保存数据时,如果内存地址合理地对齐的将会更有效率。例如 2 字节大小的 int16 类型的变量地址应该是偶数,一个 4 字节大小的 rune 类型变量的地址应该是 4 的倍数,一个 8 字节大小的 float64、uint64 或 64-bit 指针类型变量的地址应该是 8 字节对齐的。但是对于再大的地址对齐倍数则是不需要的,即使是 complex128 等较大的数据类型最多也只是 8 字节对齐。

Goroutine 与 Go 语言并发模型 · Analyze

Go 语言最吸引人的地方是它内建的并发支持。Go 语言并发体系的理论是 C.A.R Hoare 在 1978 年提出的 CSP 模型。在并发编程中,目前的绝大多数语言,都是通过加锁等线程同步方案来解决数据共享问题,而 Go 语言另辟蹊径,它将共享的值通过 Channel 传递。在任意给定的时刻,最好只有一个Goroutine 能够拥有该资源。数据竞争从设计层面上就被杜绝了。

Go 语言 GC 机制 · Analyze

内存管理是开发应用中的一大难题。传统的系统级编程语言(主要指 C/C++)中,程序开发者必须对内存小心的进行管理操作,控制内存的申请及释放。因为稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰程序开发者的噩梦。

Android 9 有关网络请求的行为变更

Android 9(API 级别 28)向 Android 系统引入了多项变更。 当应用在 Android 9 平台上运行时,以下行为变更将影响所有应用,无论这些应用以哪个 API 级别为目标。 所有开发者都应查看这些变更,并修改其应用以正确支持这些变更(如果适用)。