自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 golang多个切片合并后按照指定长度进行切割分组

【代码】golang多个切片合并后按照指定长度进行切割分组。

2024-05-14 11:37:34 190 1

原创 PHP laravel Redis Scan、Hscan游标查询法

【代码】PHP laravel Redis Scan、Hscan游标查询法。

2023-11-28 19:02:05 697

原创 laravel实现AMQP(rabbitmq)生产者以及消费者

基于php-amqplib/php-amqplib组件适配laravel框架的amqp封装库支持便捷可配置的队列工作模式在此基础上可支持延迟消息、死信队列等机制。

2023-08-24 17:01:34 1274

原创 Docker部署php运行环境(php-fpm+nginx)

如果使用docker去部署一套php的运行环境,我们需要构建出nginx、php-fpm两个容器,nginx通过fast_cgi协议去转发php-fpm中的端口,从而实现web server的搭建,接下来以php的laravel框架为演示例子。

2023-08-18 19:09:27 5420

原创 redis实现基于令牌桶算法(控制速率)以及固定时间的固定请求次数的请求限流器(golang版)

具体地,我们可以使用Redis中的有序集合(sorted set)来实现令牌桶算法。首先,我们需要在Redis中设置一个有序集合,将时间戳作为成员(member),将令牌数作为分值(score)。然后,每次收到一个请求时,就从有序集合中获取当前的令牌数,并将其减1。同时,我们也需要根据一定的规则,定期向有序集合中添加令牌,确保令牌桶中的令牌数不会永久耗尽。Redis可以通过实现一个基于令牌桶算法的限流器来限制HTTP请求的访问速率。令牌桶算法是一种常见的限流算法,它基于一个令牌桶来控制请求的速率。

2023-03-22 15:50:41 1489

原创 golang kafka Shopify/sarama 消费者重置新增分区偏移量并进行重新消费

在重平衡回调方法中使用redis的无序集合储存当前主题、当前消费者组下的全部分区信息,然后在根据当前消费者会话去和上一代的全部分区信息进行差集对比,对比的结果就是新增的分区。得到新增的分区后将这些分区的偏移量重置为0即重头开始消费,当前存在重复消费的情况,需要你的业务逻辑上做好幂等性。最后再将这些差集新增分区ID更新至redis存储的当前主题、当前消费者组下的全部分区信息内形成了一个闭环,即使一个消费者组下有多个消费者进程也不会出现数据覆盖更新等问题,因为如果存在差集新增分区只会将更新差集分区ID。

2023-03-14 11:37:39 1991

原创 分阶段构建golang运行环境Dockerfile镜像

分阶段构建镜像就会用到scratch这个空镜像,这样的好处是可以大大节约服务器资源,比如用普通的镜像(golang:1.18-alpine)来说,它在构建完之后大约占300MB左右,那么我们通过分阶段构建的话可能只需要20MB左右(与你的程序文件以及系统安装的文件内容有关,总之会比原镜像小很多),这里我在想scratch既然是个空镜像干净的环境那么它系统加载的内容也会非常少,在一定程度上是不是也存在提升了程序的性能,这里懂的原理的同学可以交流。为什么出现了这么多none的镜像呢?

2023-02-24 11:15:00 1682

原创 golang rabbitMQ 生产者复用channel以及生产者组分发策略

项目初始化构建时可以自定义选择生产者开启多个connection,每个connection可以启动多少个channel【都是全局复用的】,因为rabbitMQ所有的命令都是基本都是通过channel去操作完成的,所以这个channel很重要,也是我们想要复用的重点。在网络编程中我们知道tcp连接的创建、交互、销毁等相关操作的"代价"都是很高的,所以就要去实现如何复用这些连接,并要做到高效并可靠。引用的是rabbitMQ官方示例的库。

2023-02-10 18:44:14 2446 1

转载 golang优雅退出守护进程、信号处理

golang优雅退出守护进程、信号处理

2023-02-09 18:48:59 677

原创 laravel guzzhttp 记录请求参数、响应参数日志

在laravel中我们用guzzhttp去请求一些第三方的API时记录相关的日志信息必不可少,日志信息对于查询请求记录或是排查问题都是必需项,这里我就为大家演示一下如何记录日志。

2022-12-08 10:30:54 1301

原创 golang 切片结构体多条件排序

日常工作中我们经常会有将数据排序的需求,在golang中无法直接将map数据类型进行排序,所以我们会通过切片+结构体数据类型的方式进行数据字段的排序,从而实现二维数组的排序效果。

2022-11-07 11:56:16 428

原创 golang 切片元素去重

golang 切片元素去重

2022-11-04 18:34:37 652

原创 golang 切片分割份数

本篇主要演示日常工作中可能会遇到一个较大切片,此时需要将该切片分割成若干份数,每份数中可以控制有多少个元素。

2022-11-03 17:47:09 833

原创 golang 多协程控制请求API频次/频率 X秒内请求X次

本篇文章简单演示了一个golang在多协程的情况下如何控制执行频次频率,经典场景就是在我们请求第三方API时,对方的API有接口请求频次限制,X秒内请求X次。

2022-11-03 14:22:57 641

转载 Golang获取过去或将来某周某月的开始时间戳和结束时间戳

开发过程中我们经常需要拿到相对于当前时间过去或将来的某周某月的开始和结束时间戳,下面为大家准备了对应的方法。

2022-10-19 11:30:09 1146

原创 golang 利用channel收集多协程返回值

golang 利用channel收集多协程返回值

2022-10-03 22:49:01 1597

原创 golang 模拟用户分数名次超过总数的百分比算法

golang 模拟用户分数名次超过总数的百分比算法

2022-10-01 23:35:41 550

原创 golang 自动填充字符串,补齐位数

【代码】golang 自动填充字符串,补齐位数,把字符串填充为新的长度

2022-09-30 16:01:52 3062

原创 golang两数相除保留两位小数不进行四舍五入

golang两数相除保留两位小数不进行四舍五入

2022-09-26 17:53:32 1940

原创 golang操作mongodb

本文简单介绍以及演示了golang如何操作mongodb以及如何设置连接池等相关方法

2022-09-21 16:02:59 761

原创 golang gorm show tables

golang使用gorm组件进行原生sql查询show tables

2022-09-20 15:28:38 1347 1

翻译 php比较数组大小的规则

<?php// 数组是用标准比较运算符这样比较的function standard_array_compare($op1, $op2){ if (count($op1) < count($op2)) { return -1; // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1; // $op1 > $op2 } foreach ($o.

2022-04-22 17:49:59 595

原创 phpredis使用lua脚本操作hmset命令

redis使用lua脚本的形式进行操作这样的好处可以保证多条命令的原子性,而且也会提升程序的执行效率。接下来我们先模拟一组数据来进行创建数据以及保存过期时间的原子性操作:$configs = [ "key1" => [ "value1" => "this is key1->value1", "value2" => "this is key1->value2", "value3" => "this is ke

2022-04-14 17:21:55 1503

原创 laravel 模型局部不更新updated_at字段

直接上代码://第一种方法: $user = UserModel::query()->where('id', '=', 1)->first(); $user->status = 4; $user->timestamps = false; $user->save(); //第二种方法: UserModel::query()->where('id', '='

2022-03-30 18:55:03 2011

原创 hyperf自定义模块注解不生效问题

问题复现:我们如果创建了一个与默认项目目录app同级的模块,可能会导致框架的注解无效。目录结构如下:解决方案:第一步,需要调整一下composer.json,以便解决后续命名空间的问题"autoload": { "psr-4": { "App\\": "app/", "MyApp\\": "MyApp/" //加入你自定义模块的配置 }, "files": [] }编辑完

2022-03-25 16:46:28 1973

原创 error pulling image configuration: read tcp xxx.xxx.x.xxx:xx->xxx.xx.xxx.xx:xxx: read: connection

docker pull 报错:error pulling image configuration: read tcp xxx.xxx.x.xxx:xx->xxx.xx.xxx.xx:xxx: read: connection

2022-03-15 16:36:35 2493

原创 php+rabbitMQ操作之延迟队列(延迟插件)

composer依赖包是官方的php-amqplib/php-amqplib(需打开php的sockets扩展,否则会报错)

2022-03-01 16:51:32 1660

原创 hyperf执行代码无法释放内存

我当时遇到的一个问题就是使用了hyperf的Command形式来执行大批量数据的处理,代码里面已经关闭了相关的连接(redis,mysql等)以及unset掉了大数组之类的操作。虽然使用php内置函数memory_get_usage()观察到确实减少了内存的占用,但是linux服务器使用top来查看MEM参数还是被占用很大的内存,没有减少的迹象。通过网上一系列查找资料,找到了一篇可以解决这个问题的方式。原文地址:PHP常驻进程,内存泄漏排查指南 - Swoole现在加上gc_mem_caches()

2022-02-21 11:55:02 1184 3

原创 Carbon时间组件获取时间日期范围遍历数组

use Carbon\CarbonPeriod;/**第一个参数设置起始时间第二个参数是累加间隔,可以是day hour ……第三个参数设置结束时间**/$period = new CarbonPeriod('2020-03-01 00:00:00', '1 hour', '2020-03-01 23:59:59');$data = [];foreach ($period as $value) { $data[] = $value->format('Y-m-d H:i:.

2022-02-16 16:45:57 1274

原创 cannot find autoconf. please check your autoconf installation Xampp in CentOS

#以apline为例apk add autoconf

2022-01-13 16:49:51 275

原创 channel “pecl.php.net“ has updated its protocols, use “pecl channel-update pecl.php.net“ to updated

pecl channel-update pecl.php.net

2022-01-13 16:42:32 332

原创 /usr/include/php7/ext/pcre/php_pcre.h:25:10: fatal error: pcre2.h: no such file or directory

当我们在使用pecl install xxx时有可能遇到这个错误/usr/include/php7/ext/pcre/php_pcre.h:25:10: fatal error: pcre2.h: no such file or directory那么这个时候需要检查一下是否安装好了pcre2-dev#以apline为例apk add pcre2-dev...

2022-01-13 16:38:40 940

原创 hyperf官方docker镜像通过docker-compose安装php的mongodb扩展

首先,官方的Dockerfile我们稍微改动一下# Default Dockerfile## @link https://www.hyperf.io# @document https://doc.hyperf.io# @contact group@hyperf.io# @license https://github.com/hyperf-cloud/hyperf/blob/master/LICENSEFROM hyperf/hyperf:7.4-alpine-v3.11-sw

2022-01-13 16:34:41 3683

转载 PhpSpreadsheet导出、读取文件

composer require phpoffice/phpspreadsheet<?phprequire_once __DIR__ . '/vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\IOFactory;class PhpSpreadsheet{ public function export() { $dat.

2021-12-20 13:43:39 429

原创 hyperf使用jwt的redis储存驱动实现用户token认证

第一步:引入jwt-auth组件包composer require phper666/jwt-authps:确保hyperf/cache组件已安装,因为在后面需要用到第二步:发布配置文件php bin/hyperf.php jwt:publish --config执行完毕后,config/autoload文件下会自动生成一个jwt.php的配置文件,这里可以配置关于jwt参数第三步:编写生成token的业务代码<?phpnamespace App\Control..

2021-08-27 16:30:47 1688 7

转载 mac终端使用git命令行显示分支信息

mac系统终端默认是不支持git命令行显示分支信息的,如果需要显示需要自行配置:1.首先进入根目录cd ~2.编辑.bashrc文件(如果不存在则创建)vim .bashrc3.在文件最后加入代码function git_branch { branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`...

2019-12-10 16:17:34 1561

转载 thinkphp5 command模式下无法获取配置信息的解决办法

Config::load(APP_PATH . ‘index/config.php’);

2019-11-20 18:19:26 482

原创 redis报错 : protocol error, got 'J' as reply type byte

我报这个错误的是Windows下phpStudy集成环境下,php版本为7.2(nts),redis版本为3.1.6(×86)。这个报错出现的时候请核实下所使用的端口是否正确,保证6379端口的正常运作。当时我因为使用错误的端口号,报了这个错误,在此记录。...

2019-11-08 16:35:50 4420 5

转载 laravel高级的Join语法以及使用Join多个条件

在laravel中我们常常会使用join,leftjion和rightjoin进行连表查询,非常的方便,但是我今天遇到一个问题,就是链表查询需要on多个条件,即我要订单的id和发货人都一样,默认的join只支持单个查询,所以我下面总结两种方法:一、使用原是表达式(不推荐)原生SQL中我们可以通过如下方法进行:select * from `orders` left join `users` o...

2019-11-01 10:40:34 1838

原创 composer install 报错

在我们实际开发过程中使用composer install,有时候会报:Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.这个报错的意思是你的com...

2019-10-31 17:50:22 2065

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除