基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 SMProxy 通过协程调度实现 MySQL 连接池

简介 我们之前都是基于 LaravelS 扩展在 Laravel 框架中使用 Swoole,但是 LaravelS 不支持数据库连接池,只能实现数据库长连接,而对于 PHP 应用来说,数据库连接池在提升性能方面确有显著功效,我们可以基于 Swoole 提供的异步任务或者协程来自己实现数据库连接池,不过还有一个现成的扩展可以使用,那就是SMProxy,SMProxy 是一个基于 Swool...

阿里云、腾讯云推出 Composer 全量镜像了

本镜像与 Packagist 官方实时同步,推荐使用最新的 Composer 版本,每隔 30s 会刷新全国 CDN 缓存。 全局配置(推荐) 所有项目都会使用该镜像地址: composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 取消配置: composer config -g --u...

Go 语言函数式编程系列教程(十九) —— 函数篇:函数的传参和返回值

上篇教程我们介绍了 Go 语言中函数的基本定义和调用,其中也涉及到了函数的传参和返回值,只不过那里演示的是最简单的场景,今天我们就更复杂的传参和返回值进行介绍。 按值传参和引用传参 Go 语言默认使用按值传参来传递参数,也就是传递参数的一个副本,函数接收该参数后,可能在处理过程中对参数值做调整,但这不会影响原来的变量值,我们还是以上篇教程的 add 函数为基础作为示例: func add...

基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 Swoole 实现协程篇(三):在 Laravel 框架中使用协程

前两篇教程我们陆续介绍了 Swoole 协程的实现原理,以及如何在 PHP 中基于 Swoole 协程实现并发编程,今天,学院君将介绍如何在 Laravel 框架中使用 Swoole 协程,还是基于 LaravelS 扩展包为例来进行演示。 通过上篇教程的示例代码,你应该已经知道,多个 Swoole 协程的执行顺序时是无序的,这通常取决于每个 Swoole 协程任务的时间复杂度,因此,对...

Go 语言函数式编程系列教程(十八) —— 函数篇:函数的基本定义和调用

几乎所有编程语言都支持函数,编写函数的目的在于将复杂的问题分解为一系列简单的任务来处理,此外同一个函数还可以被多次复用,这一结构在面向过程的函数式编程中至关重要。同为类 C 语言,Go 语言的函数和 PHP 函数的基本结构差不多,只是具体细节有所差异,在 Go 语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,作为强类型语言,无论是参数还是返回值,在...

Go 语言函数式编程系列教程(十七) —— 流程控制篇:跳转语句

break 与 continue 语句 和 PHP 一样,Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。 关于 break 的基本使用示例我们在上篇教程中已经演示过,break 的默认作用范围是该语句所在的最内部的循环体: arr := [][]int{{1,2,3},{4,5,6},{7,8,9}} for i := 0; i &...

Leetcode PHP题解--D95 108. Convert Sorted Array to Binary Search Tree

D95 108. Convert Sorted Array to Binary Search Tree 题目链接 108. Convert Sorted Array to Binary Search Tree 题目分析 给定一个顺序数组,将其装换成平衡二叉树。 思路 首先讲数组分成两半,左边的元素为左子树的内容,右边为右子树内容。 中间的元素作为当前节点的值。 若左边的元素个数大于0,则...

Go 语言函数式编程系列教程(十六) —— 流程控制篇:循环语句

基本使用 与其它编程语言不同的是,Go 语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。关键字 for 的基本使用方法与 PHP 类似,只是循环条件不含括号,比如我们要计算 1 到 100 之间所有数字之后,可以这么做: sum := 0 for i := 1; i <= 100; i++ { sum += i } fmt.P...