Go的锁机制

go是一门并发特性非常强大的语言,我们在实现并发编程时,往往会碰到多个线程同时访问同一个变量的情况,也就是所谓的竞态,这种情况可能会导致数据混乱出错,因此,这个时候就需要对变量上锁,来保证一次只有一个线程能修改该变量,下面将详细介绍go的锁机制。 sync go语言中的锁机制是通过自带的sync包来实现的,该包包含了以下几种锁类型。 sync.Mutex Mutex是互斥锁,其定义方式很...

详解Go的slice及其工作原理

前言 slice也叫切片,是一种建立在数组类型之上的抽象类型,和数组很像,要理解slice必须先理解数组,这里简单介绍下数组。 在go语言中,数组是一个由特定类型组成的序列,它的长度是固定的,即数组的长度一旦被定义,则不可再对数组中的元素进行添加或删除操作,因此使用起来不太方便。而切片的长度是可变的,这在使用过程中带来了很大的便利,我们也往往使用更加灵活的切片来代替数组。 Slice 下...

编写Dockerfile最佳实践

Docker可以通过从Dockerfile读取指令来自动构建镜像,Dockerfile是一个包含构建给定镜像所需指令的文本文件,它遵循特定的格式并使用一组特定的指令。 一般准则和建议 容器应该是短暂的 由Dockerfile定义的镜像生成的容器应尽可能短暂。对于“短暂”这个词,我们指的是容器可以被停止和销毁,并且使用最少的设置和配置来创建一个新的容器。如果你想了解在这样一个无状态方式下运行...

AngularJS之Providers

最近因为工作需要接触到了AngularJS,在看到Providers的时候很迷惑,对factory、service和 provider 不太理解,也不知道什么时候该用哪一个来创建服务,后面通过阅读文档和查阅大量资料才弄清楚,所以在这里记录一下他们的用法和区别。 用法 AngularJS内置了很多服务,如$scope、$http、$location、$q等,我们可以通过依赖注入的方式来使用各...

PHP使用imagecopy添加水印丢失透明度的问题

问题描述 最近在工作中遇到一个很奇怪的问题,在使用php GD库的imagecopy()给图片添加带有透明度的图片水印时,水印的透明度变得不透明了,而且在不同浏览器上查看加水印后的图片,显示效果也不一样。 我不知道是不是GD库和php版本的问题,php => 5.6.3,GD => bundled (2.1.0 compatible)。 问题重现 我要给目标图片加上一个水印,...

2017年度计划

本来不打算再写年度计划的,因为公司年终总结的时候一起写了,但仔细想想个人计划和工作计划还是得分开,所以在个人博客上再写一份个人年度计划。 技术 换工作大半年了,也学到了不少东西,但很多东西都不够深入,要学的东西实在太多,以至于之前一度不知道要重点学习什么,后来和我们老大谈过后,决定以后的学习重点还是根据工作需要来安排: 设计模式 因为最近写了一些偏底层的代码,感觉自己在设计模式方面的知...

Composer使用与原理分析

什么是composer Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,并根据所声明的依赖在项目中为你安装他们。composer不是包管理工具,因为真正的包位于packagist和github上面,composer相当于中间介质帮你安装你所声明的包,所以composer是一个依赖管理工具。 安装composer composer需要php>=5.3....