AOP in Android

AOP wiki Aspect-oriented programming, 意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

稀疏文件 Sparse File

稀疏文件介绍

稀疏文件,这是UNIX类和NTFS等文件系统的一个特性

例如:/var/lib/docker 目录,实际占用非常小,但是在系统里面看到的占用是 11G 的文件目录

go vendor 机制讲解

vendor 是 go 1.5 以后支持的,1.6 默认开启,可以关闭则直接 在GOPATH下面查找依赖包

vendor 原则:

  • 当前包下有vendor目录,则从其下查找第三方的包,如果没有找到,则继续执行下一步操作
  • 当前包目录下没有vendor目录,则沿当前包目录向上逐级目录查找vendor目录, ,直到找到 $GOPATH/src下的vendor目录
  • go 1.12 以后,也默认开启 go mod, 那么如果 vendor目录没找到是不会去 GOPATH 寻找,则尝试 go get 如果失败则编译失败
  • go 1.12 以前,在GOPATH下面查找依赖包
  • 在GOROOT目录下面查找依赖包

故兼容的情况下,请使用 GOPATH 保证不出错,兼容 GOPATH 和 go mod 请设置环境变量 GO111MODULE=“on”

golang 编程规范 编程风格 整理

介绍

本文更多的介绍代码管理和检查工具而不是大篇幅风格文档,毕竟文档只能那里看,不如工具有时效性和可行性,毕竟说到不如做到

目录结构 推荐目录结构 https://github.com/golang-standards/project-layout

建议保留 GOPATH 规则,便于维护代码

  • 建议只使用一个 GOPATH
  • 不建议使用多个 GOPATH,如果使用多个GOPATH,编译生效的 bin 目录是在第一个 GOPATH 下

golang 在 1.11 以后,弱化了 GOPATH 规则,已有代码(很多库肯定是在1.11之前建立的)肯定符合这个规则

Rakefile 使用教程

  • Rakefile就是使用Ruby语法的 Makefile, 对应make的工具就是 rake,对应仓库在 https://github.com/ruby/rake
  • Rakefile 在 ruby 构建时充当 task 制定,依赖,执行的媒介
  • 很多框架,比如 Ruby on Rails 数据库的初始化, 内容初始化, 删除构建 ,测试业务 等等都是 Rakefile 在操作