Go 语言并发编程系列教程(十五)—— sync 包(五):临时对象池 sync.Pool

前面我们已经陆续介绍了 sync 包提供的各种同步工具,比如互斥锁、条件变量、原子操作、多协程协作等,今天我们来看另外一种工具。 在高并发场景下,我们会遇到很多问题,垃圾回收(GC)就是其中之一。Go 语言中的垃圾回收是自动执行的,这有利有弊,好处是避免了程序员手动对垃圾进行回收,简化了代码编写和维护,坏处是垃圾回收的时机无处不在,这在无形之中增加了系统运行时开销。在对系统性能要求较高的...

基于 Laravel 扩展包 laravel-db-snapshots 快速导入导出数据库快照

功能简介 顾名思义,laravel-db-snapshots 是一个 Laravel 扩展包,可用于在 Laravel 项目中快速创建或加载数据库快照,即我们通常所说的导入导出数据库,这个扩展包在迁移网站时非常有用,亦可作为数据库备份工具。这个扩展包相对于直接使用特定数据库的导入导出命令而言,优点是对不同数据库提供了统一的操作命令,让你不需要关心不同数据库的实现细节,同时让操作流程更加标...

通过 Laravue 快速构建基于 Laravel + Vue + Element 的管理后台

项目简介 Laravue 是一个基于 Laravel + Vue.js + Element UI 开发的原型项目,我们可以通过它快速构建管理后台页面。该项目参考了 vue-element-admin,并且以功能强大的 Laravel 框架作为后端,高性能的 Vue.js 作为前端,完全可以作为企业应用级的全栈解决方案。 你可以通过演示站点预览该基于项目搭建的后台界面,也可以按照下面学院...

基于 Laravel 开源项目 Goodwork 快速构建项目管理和团队协作应用

项目简介 Goodwork 是一个基于 Laravel + Vue.js 开发的开源项目管理和团队协作项目,该项目已经适配最新发布的 Laravel 6.0,你可以访问 https://goodworkfor.life 这个演示网站快速预览应用功能,测试账号是 guest@example.com/guestpass。下面学院君将基于 MacOS + Homestead 开发环境演示如何在...

基于 Laravel 开源项目 WebStack 快速构建网址导航应用

项目简介 WebStack 是一个基于 Laravel 开发的开源网址导航项目,具备完备的前后台功能,你可以通过它快速构建网址导航应用。下面学院君将基于 MacOS + Homestead 开发环境来演示如何基于它来构建网址导航应用。 安装配置 首先,克隆 Github 项目代码到本地: git clone https://github.com/hui-ho/WebStack-Larav...

基于 Laravel 扩展包 Health Monitor 在应用中实现资源及服务的健康检查和实时监控

功能简介 Health Monitor 是一个 Laravel 扩展包,可用于检查应用资源或服务是否按照预期在运行,并且可以通过可视化页面监控所有资源和服务的实时健康状态。 预置的检查器会监控以下资源或服务: AppKey Broadcasting Cache ConfigurationCached Database DebugMode DirectoryPermissions Dis...

Go 语言并发编程系列教程(十四)—— 通过 context 包提供的函数实现多协程之间的协作

上篇教程学院君介绍了如何通过 sync.WaitGroup 类型优化通道对多协程协调的处理,但是现在有一个问题,就是我们在启动子协程之前都已经明确知道子协程的总量,如果不知道的话,该怎么实现呢? 一种解决方案是通过 sync.WaitGroup 分批启动子协程,具体实现代码如下: package main import ( "fmt" "sync" ) func ad...

基于 Laravel 扩展包 LaraStan 实现对项目代码的静态编译检查

入门安装 Larastan 是一个封装了 PHPStan(PHP Static Analysis Tool) 的 Laravel 扩展包,这是一个静态代码分析工具,可以帮助我们在运行代码之前排查可能存在的 bug,实现类似 Go、Java 这种静态语言的编译期检查。 目前 Larastan 需要 PHP 7.1.3+ 环境才能正常运行,对 Laravel 版本的要求是 5.6+,支持最新...

基于 Laravel 扩展包 Wink 构建类 Medium 风格的内容发布系统

Wink 是一个 Laravel 扩展包,通过它可以轻松在 Laravel 项目中集成类 Medium 风格的内容发布系统,并且支持最新发布的 Laravel 6.0 版本。下面我们基于 Homestead 文档中配置的 laravel6 项目来安装这个扩展包: composer require writingink/wink 安装完成后登录到 Homestead 虚拟机,发布前端资源和...

Go 语言并发编程系列教程(十三)—— sync 包(四):sync.WaitGroup 和 sync.Once

在介绍通道的时候,如果启用了多个子协程,我们是这样实现主协程等待子协程执行完毕并退出的:声明一个和子协程数量一致的通道数组,然后为每个子协程分配一个通道元素,在子协程执行完毕时向对应的通道发送数据;然后在主协程中,我们依次读取这些通道接收子协程发送的数据,只有所有通道都接收到数据才会退出主协程。 代码看起来是这样的: chs := make([]chan int, 10) for i :...