golang直接操作共享内存

前一段时间使用公司内部某个依赖共享内存的组件,其go版本api通过cgo提供。抛开我是个pure go狂热分子以外,采用cgo的方式实现会存在很多问题。所以分析其源码后通过go进行重写,故在此分享一下直接通过golang去操作共享内存。

通过golang操作共享内存主要依赖了以下几个系统调用:

  • SYS_SHMGET
  • SYS_SHMCTL
  • SYS_SHMAT
  • SYS_SHMDT

操作步骤:

- 阅读剩余部分 -

代理环境配置docker

用来用去还是台式机爽,而且懒得天天带电脑,所以想在公司电脑上配置docker环境。但是公司网络是没办法直连外部网络的,只能通过http proxy来访问外网。

首先是宿主机使用ubuntu on virtualbox,注意下网络连接方式,公司的网络策略是禁止桥接网卡,所以需要选择nat方式。

然后按照官方指南安装docker:

更新软件源:

apt-get update

但是apt是不会引用你已经配置好的环境变量HTTP_PROXY和HTTPS_PROXY的,需要单独配置apt代理:

编辑: /etc/apt/apt.conf or /etc/apt/apt.conf.d/xxx.conf

Acquire::proxy "//proxy:port/";

- 阅读剩余部分 -

git忽略已经提交的文件

开发的时候有时候需要对已经提交的文件做忽略处理,这时候直接添加到.gitignore中是不行的。
需要忽略已跟踪文件的变动:

git update-index --assume-unchanged <file>

撤销忽略跟踪

git update-index --no-assume-unchanged <file>

lumen for sae

lumen是laravel的精简版,通过优化路由等功能提高了执行效率

The stunningly fast micro-framework by Laravel.

最近用lumen做点小东西准备部署到sae上,发现环境存在不兼容,所以按照laravel服务提供者的方式实现了sae上的一些服务实现:

  • 日志
  • 缓存
  • 会话
  • 存储

使用方式:

- 阅读剩余部分 -

数据库事务隔离级别

在并发的场景中,为了保证数据的一致性我们会在数据库中使用事务。然而在强一致性与性能上则需要根据具体业务来取舍,所以一般数据库提供了四种事务隔离级别:

  1. 读未提交(Read Uncommitted)
  2. 读提交(Read Committed)
  3. 可重复读(Repeatable Read)
  4. 序列化(Serializable)

由于日常工作中使用事务比较频繁,遂在此作一下总结

- 阅读剩余部分 -