- 博客(55)
- 收藏
- 关注
原创 Go channel底层实现原理以及为什么要懂原理
Go的channel通过hchan结构体、环形缓冲区、互斥锁和等待队列实现高效的goroutine间通信。其设计在保证并发安全的同时,通过直接数据传递和智能调度优化性能。理解其底层机制有助于编写高效、可靠的并发程序。
2025-03-14 08:28:52
735
原创 儿时玩伴今何在文案--短视频流行文案
家乡的变化很大, 唯独我的记忆还停留在最初的时候。小时候总是被问是谁家的孩子, 如今当我说出这句话时,就已经完成了闭环。当听到小孩口中说着他们的秘密基地时,我多想说一句那是我的秘密基地。对此 思念故乡的麦克阿瑟想说难怪有故人之姿,原来是故人之子。这一刻才理解了朝花夕拾的含义。而我更像是那个年兽,新年到时我才来,鞭炮响完我便走。当我再次回到家乡时,却不见牛羊成群,漫山耕耘,村里多了许多陌生脸庞,不知何时嫁来的姑娘。路上的小孩也不知是谁家的,看到我时以为我是外地的,可他们不知道,我才是这个村里长大的孩子。
2025-02-03 14:59:08
288
原创 laravel10.x 框架中间件实现原理
管道模式是一种软件设计模式,它允许将一系列操作按顺序连接在一起,形成一个处理管道。每个操作可以处理输入数据并将结果传递给下一个操作,类似于一个物理管道中的流体流动。在 Laravel 中,这个“流体”就是 HTTP 请求,而操作就是中间件。
2025-01-16 00:21:34
1367
原创 Gin框架中间件原理
总的来说,Gin借助切片收集中间件函数,然后在请求处理阶段通过巧妙的函数嵌套、闭包以及对函数执行顺序的控制,实现了将中间件函数组成链式结构来处理请求的机制。当有请求进来时,Gin会从已添加的中间件链头开始逐个执行中间件函数,这个过程是在处理请求的主逻辑中实现的。在Gin框架中,中间件(Middleware)是在处理请求的过程中,在请求被真正的处理函数处理之前或之后执行的一些逻辑。当定义一个中间件时,实际上是定义了一个函数,这个函数接收。方法添加进来的中间件函数的,每个中间件函数都是。切片就是用来存放通过。
2025-01-06 23:12:57
765
原创 Rabbitmq实现延迟队列
在RabbitMQ中实现延迟队列(延时队列)可以有几种方案,其中常用的是通过死信队列(Dead Letter Queue,DLX)和rabbitmq_delayed_message_exchange插件来实现。以下是这两种方案的介绍以及注意事项。
2024-12-20 17:32:29
667
原创 bcmath和round() 什么场景下结果不同
讨论一个问题:bcmath和round() 什么场景下结果不同大多数场景下, bcmath和round()是一样的。
2024-12-12 19:01:09
408
原创 go build --gcflags是什么意思, go build后面还可以接哪些选项
go build 是 Go 语言的命令行工具中用于编译 Go 程序的命令。它可以根据指定的包名或文件列表来编译代码,并生成可执行文件或者库文件。
2024-11-06 09:21:36
570
原创 linux日志分割工具logorate快速验证配置是否有效
这个配置告诉 logrotate 每天对 /var/log/test.log 文件进行一次轮换,并保留最新的五个版本的日志文件。创建一些文件, 并修改文件的mtime(修改时间)logrorate配置文件参考。test为配置文件名称。
2024-10-17 07:45:33
399
原创 git 查看已经commit但是还没有push的所有文件变动内容
你当前在dev分支, 查看dev本地分支和远程分支的差异显示最后一次推送以来所有文件的详细改动git diff origin/main HEAD
2024-09-25 18:24:45
596
原创 PHP的guzzlehttp/guzzle库在碰到各种异常时的场景
经过测试得知在http状态码为1xx, 2xx, 3xx时, 会在111处输出返回在http状态码为4xx, 5xx时, 会在222处被捕获在目标服务不可达或其他异常时会在333处被捕获。
2024-09-25 16:51:44
858
1
原创 php 中 new self() 和 new static()区别
并且这个方法在子类中被调用,那么它将创建子类的实例,而不是父类的实例。关键字引用的是当前类本身。无论在哪个类中调用它,它总是引用定义关键字的那个类。这意味着,如果你在父类的一个方法中使用。关键字则不同,它引用的是调用该方法的类。这意味着如果你在父类的方法中使用。都用于创建当前类的实例,但它们在运行时绑定和继承上下文中的行为有所不同。,那么即使在子类中调用这个方法,它仍然会创建父类的实例,而不是子类的实例。而在需要确保总是创建某个特定类的实例时,因此,在需要根据调用上下文动态确定实例类型的情况下,
2024-07-08 18:11:27
557
原创 laravel中 firstOrNew(), firstOrCreate(), updateOrInsert(), updateOrCreate() 方法的区别和实现原理
在 Laravel 中,firstOrNew, 和是用于处理数据库记录的常用方法,每个方法有其特定的用途和行为。
2024-06-17 12:04:32
1622
原创 laravel创建项目
具体到命令 composer create-project --prefer-dist laravel/laravel water_cup “10.x”,这意味着Composer会创建一个新的Laravel项目,项目名称为 water_cup,并指定Laravel的版本为 10.x 系列。–prefer-dist 是一个选项,它告诉 Composer 在安装项目时优先使用打包好的发行版(例如 .zip 或 .tar.gz 文件)来加速安装过程。
2024-06-13 19:03:49
312
原创 golang windows打包为linux可执行文件
使用go的交叉编译功能然后再执行go build可能会报异常, 所以贴出我的go env配置仅供参考。
2024-06-12 09:21:54
1112
原创 mysql在存储json字段时默认会美化
mysql在存储json字段时, 默认会美化, 从而导致golang json序列化的数据和数据库查询出来的数据, 本来是相等的. 结果因为美化的效果, 增加了缩进和换行而导致不相等。
2024-05-31 09:21:08
252
原创 查询mysql中字段重复记录
GROUP BY shop_id, order_id:首先按照shop_id和order_id两个字段对表中的记录进行分组。) as duplicate_count:计算每个组内的记录数,并将这个数量命名为duplicate_count。) > 1:筛选出那些组内记录数大于1的组,即至少有两行数据具有相同的shop_id和order_id值。这样,你就能得到所有shop_id和shopify_order_id重复的记录及其重复次数。
2024-05-29 10:11:53
244
原创 golang并发访问map安全问题
Go语言规范并未保证在并发写情况下map的行为。因此,如果发生并发写,程序可能会出现未定义的行为,如panic(数据竞争检测器检测到问题时)、数据不一致、程序崩溃等。这些行为是不可预测的,且难以调试。
2024-04-18 18:26:00
1087
2
原创 git restore, git revert, git checkout, git switch, git stash使用和区别
git revert, 和(现在推荐使用git switch)是 Git 中用于处理不同场景下的版本恢复或切换的命令。是 Git 2.23 版本引入的一个新命令,它主要负责将文件恢复到某个指定的状态。:使用可以撤销对工作区文件的修改,将其恢复到最近一次提交的状态,丢弃本地未提交的更改。:使用可以取消对暂存区文件的更改,即撤销已经git add但还未git commit的改动。:结合选项,可以将文件恢复到特定提交的状态,例如将文件恢复到上一个提交时的状态。git revert。
2024-04-16 09:14:16
667
转载 将redis发布订阅模式用做消息队列和rabbitmq的区别?Redis禁用持久化功能的设置?想想为什么要使用MQ?使用了消息队列会有什么缺点?
rabbitmq:具有消息消费确认机制,如果发布一条消息,还没有消费者消费该队列,那么这条消息将一直存放在队列中,直到有消费者消费了该条消息,以此可以保证消息的可靠消费,那么rabbitmq的消息是如何存储的呢?rabbitmq是一个专门的AMQP协议队列,他的优势就在于提供可靠的队列服务,并且可做到异步,而redis主要是用于缓存的,redis的发布订阅模块,可用于实现及时性,且可靠性低的功能。redis:实时性高,redis作为高效的缓存服务器,所有数据都存在内存中,所以它具有更高的实时性。
2024-03-28 08:05:36
190
转载 php Carbon类操作方法
原文链接:https://blog.youkuaiyun.com/qq_35560768/article/details/131248816。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。php Carbon类操作方法。
2024-03-21 11:59:13
396
原创 运行go mod tidy报错
使用国内精修, go sum db依然设置为空, 完全兼容的。找到对应包进行升级, 有的改版本号。临时不校验go.sum方法。
2024-03-06 00:13:40
2237
原创 windows安装golang多版本管理工具gvm/g
不然,会出现【Symlink…配置GOROOT,这个指向g/gvm工作目录下的go,gvm安装go版本后,会在这个路径下建立一个软链到versions目录下的指定版本,靠这个方法来控制当前的go版本,这里比较重要的一步,【以管理员身份运行命令行工具】,不管是CMD、还是powershell,都要以管理员身份运行!4.编辑系统变量中的【PATH】变量,增加一行【D:\g\】和一行【%GOROOT%\bin】,如下图。执行命令【go version】验证安装,显示具体go版本表示go安装成功。
2023-08-01 09:06:26
2399
1
原创 Golang 结构体遇到slice和map
因为slice和map这两种数据类型都包含了指向底层数据的指针,因此我们在需要复制它们时要特别注意。我改变了data的值, 但是我本没有想改变p1结构体的值.
2023-07-20 09:43:11
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人