202004-01 php+laravel依赖注入浅析 HOT laravel容器包含控制反转和依赖注入,使用起来就是,先把对象bind好,需要时可以直接使用make来取就好。通常我们的调用如下$config=$container->make('config');$connection=newConnection($this->config);比较好理解,这样的好处就是不用直接new一个实例了,方法传值没啥改变,还可以多处共享此实例。但这跟依赖注入有什么关系,真正的依赖注入是不需给方法传递任何参数值,只需要指明方法参数类型,代码自动查找... 继续阅读 >
202004-01 redis哨兵模式主从切换后,php实现自动切换 HOT redis的哨兵模式,在主服务器挂掉后,会通过选举将对应的从服务器切换为主服务器,以此来达到服务的高可用性。 在业务层面如果主从做了切换可能相对应的服务器IP地址会发生改变,这样会带来程序的的正常运行。 继续阅读 >
202003-31 Kafka为什么吞吐量大、速度快? HOT Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。 Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万。 但是很多使用过Kafka的人,经常会被问到这样一个问题,Kafka为什么速度快,吞吐量大;大部分被问的人都是一下子就懵了,或者是只知道一些简单的点,本文就简单的介绍一下Kafka为什么吞吐量大,速度快。 继续阅读 >
202003-31 PHP实现智能语音播报 HOT 大家估计都知道现在很多AI音响能够给你播报天气,叫你起床...甚至能够接受语音指令!所谓的人工智能音响,听起来很高大上,都说PHP是最好的编程语言,今天我就带大家来实现一个语音播报功能,写个美女叫你早上起床! 继续阅读 >
202003-31 Redis主从复制 HOT 主从复制的原理以及过程必须要掌握,这样我们才知道为什么会出现这些问题 主从复制过程大体可以分为3个阶段:连接建立阶段(即准备阶段)、数据同步阶段、命令传播阶段 继续阅读 >
202003-30 PHP FFI详解——一种全新的PHP扩展方法 HOT 随着PHP7.4而来的有一个我认为非常有用的一个扩展:PHP FFI(Foreign Function interface),引用一段PHP FFI RFC中的一段描述: 对于PHP,FFI提供了一种在纯PHP中编写PHP扩展和对C库的绑定的方法。 继续阅读 >
202003-30 RabbitMQ的持久化 HOT RabbitMQ的持久化主要体现在三个方面,即交换机持久化,队列持久化及消息持久化 注意,因公司使用php-amqplib来实现RabbitMQ,故之后举例说明的代码均使用的php-amqplib,而非php的amqp扩展 继续阅读 >
202003-30 Linux中强大的top命令 HOT top命令算是最直观、好用的查看服务器负载的命令了。它实时动态刷新显示服务器状态信息,且可以通过交互式命令自定义显示内容,非常强大。 继续阅读 >
202003-28 如何用golang实现一个定时器任务队列 HOT golang中提供了2种定时器timer和ticker(如果JS很熟悉的话应该会很了解),分别是一次性定时器和重复任务定时器。 继续阅读 >
202003-28 PHP用Swoole实现爬虫 HOT PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。 继续阅读 >
202003-28 当SWOOLE遇上SERVER HOT Swoole Server应该是Swoole工具中最重要也是最核心的一个了,但没有网络服务程序开发基础的童鞋刚接触的时候往往会一头雾水,这里我们返本归元,先聊聊Server在干什么,然后我们再看看Swoole Server是怎样跑起来的~ 继续阅读 >
202003-27 优雅地关闭或重启 go web 项目 HOT 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 继续阅读 >
202003-27 Go官方的限流器 time/rate 如何使用(一) HOT 本主题为系列文章,分上下两篇。本文主要介绍time/rate的具体使用方法,下一篇文章将会着重介绍其内部实现原理。 继续阅读 >
202003-27 Go 1.14中值得关注的几个变化 HOT Go 1.14的详细变更说明在这里可以查看。整个版本的milestone对应的issue集合在这里。 不过目前Go 1.14在特定版本linux内核上会出现crash的问题,当然这个问题源于这些内核的一个已知bug。在这个issue中有关于这个问题的详细说明,涉及到的Linux内核版本包括:5.2.x, 5.3.0-5.3.14, 5.4.0-5.4.1。本篇博客涉及的代码在这里可以下载。 继续阅读 >
202003-27 Go 常量学习-可视化指南 HOT 一个常量只能在它的声明的作用域内使用。如果你在更内部的作用域内以同样的名字再声明一个常量,那么这个常量仅仅在内部作用域内可以使用,并且在此作用域内将覆盖外部声明的常量。 继续阅读 >
202003-26 学习 Go 协程:详解信道/通道 HOT goroutine 是 Go语言程序的并发执行的基本单元,多个 goroutine 的通信是需要依赖本文的主人公 —— channel 。channel,中文翻译有叫通道,也有叫信道的。以下为了方便,我统一称之为 信道 。 信道,就是一个管道,连接多个goroutine程序 ,它是一种队列式的数据结构,遵循先入先出的规则。 继续阅读 >
202003-26 方便结构体和 map 赋值 HOT 今天我们介绍一个合并结构体字段的库mergo。mergo可以在相同的结构体或map之间赋值,可以将结构体的字段赋值到map中,可以将map的值赋值给结构体的字段。 继续阅读 >