- 博客(300)
- 资源 (30)
- 问答 (2)
- 收藏
- 关注
原创 ThinkPHP6.0 Redis 延迟队列 + 定时任务 实现超时取消订单完整部署脚本
本文介绍了基于ThinkPHP框架实现的订单延迟队列服务,用于处理订单超时自动取消功能。系统采用Redis有序集合存储延迟队列,通过时间戳作为score实现定时触发。核心功能包括:订单加入延迟队列、守护进程消费队列、订单状态检查与自动取消处理。实现特点包含:分布式锁防止重复消费、幂等性校验避免重复处理、事务保证数据一致性。该方案适用于电商等需要延迟处理订单的场景,通过Supervisor管理守护进程确保服务可靠性。
2026-01-14 09:50:50
414
原创 生产环境git拉去代码,ssh免密,以及权限问题
摘要:本文介绍了为普通用户创建SSH免密登录Gitee的步骤。首先生成ED25519密钥对,然后将公钥添加到Gitee账户中。针对系统用户权限问题,提供了解决方案:1)修正.git目录所有权为www用户;2)赋予组写入权限;3)将ubuntu用户加入www组;4)重新登录使权限生效。最后验证git pull操作成功。这些步骤解决了因用户权限导致的代码拉取问题,同时保证了Web服务的安全性。
2026-01-13 17:05:19
241
原创 go-zero rpc 分布式 微服务
本文介绍了使用Go语言和go-zero框架创建第一个API项目的完整流程。主要内容包括:1)安装Go环境和配置GOROOT;2)安装goctl工具;3)创建名为"user"的API项目并初始化;4)项目结构解析,包括配置文件、协议定义、类型、上下文、逻辑处理和路由;5)运行项目并通过浏览器测试接口。整个过程展示了如何使用go-zero快速搭建一个简单的RESTful API服务,最终实现了返回"Hello World"消息的接口功能。
2026-01-01 14:23:00
900
原创 go new 和 make的区别以及 为什么new返回的是指针
在 Go 语言中,new 和 make 都是用于内存分配的内建函数,但它们有不同的用途和行为。
2025-12-01 12:49:19
275
原创 kubesphere安装
本文详细介绍了使用KubeKey工具部署Kubernetes集群并集成KubeSphere的完整流程。主要内容包括:1)安装前置依赖软件;2)下载并配置KubeKey;3)创建集群配置文件config-sample.yaml,需指定各节点IP、账号密码等信息;4)执行集群创建和卸载命令。此外还提供了NFS存储配置指南,包括安装NFS服务端/客户端、创建StorageClass存储类等步骤。文章适用于需要快速搭建K8s集群并配置持久化存储的开发运维人员,所有操作均通过命令行完成,并附有配置示例和截图说明。
2025-12-01 12:48:23
880
原创 ci/cd自动化部署
本文介绍了GitLab及GitLab Runner的安装配置流程。首先通过北大镜像下载CentOS系统,安装SSH等依赖服务。然后配置GitLab镜像源并安装,设置EXTERNAL_URL为本地IP地址,提供常用管理命令。接着在另一台服务器安装GitLab Runner,通过token注册到GitLab服务器,并演示了Runner的注册、查看和注销方法。最后展示了Runner的配置文件内容,包括并发设置、URL和token等信息。整个流程涵盖了GitLab服务端和CI/CD运行环境的完整搭建过程。
2025-12-01 12:45:40
434
原创 golang -gorm 操作
本文介绍了使用GORM进行数据库增删改查操作的基本方法。在插入数据部分,详细讲解了单条记录插入、批量插入、使用map创建、SQL表达式以及原生SQL语句执行等多种方式。更新数据部分展示了如何保存修改后的数据和更新单个列。文章提供了完整的代码示例,包括模型定义、数据验证、错误处理等关键环节,涵盖了GORM框架中常用的CRUD操作场景。通过具体的SQL语句输出和注释,帮助开发者理解各种操作的实际执行效果和注意事项。
2025-12-01 12:44:55
421
原创 go语言标准库学习, fmt标准输出,Time 时间,Flag,Log日志,Strconv
本文介绍了Go语言中fmt和time两个标准库的核心功能。fmt包提供了格式化I/O操作,包含Print、Fprint、Sprint系列函数用于输出内容到控制台、文件或字符串,以及Errorf生成错误信息。同时详细讲解了格式化占位符的使用方法。time包则用于处理时间和日期,支持获取当前时间、提取时间各部分值以及时间戳操作,时间戳支持秒、毫秒和纳秒三种单位。这两个包是Go语言基础但功能强大的标准库组件。
2025-12-01 12:44:18
697
原创 golang 鸭子类型 隐式接口
Go接口设计实践:支付网关系统示例 本文通过一个电商支付网关系统的实例,展示了Go语言中基于"鸭子类型"的接口设计实践。系统需要集成多种支付方式(支付宝、微信支付等),每种支付方式实现相同的行为。 关键点: 定义统一的PaymentGateway接口,包含创建支付、查询状态、退款等核心方法 各种支付方式(AlipayGateway、WechatPayGateway等)只需实现接口定义的方法,无需显式声明实现关系 业务层通过接口调用支付功能,无需关心具体实现 系统初始化时根据配置选择具体支
2025-12-01 12:42:54
807
原创 go go-zero的学习,持续中...
文章摘要 go-zero开发指南:从RPC/API服务创建到中间件集成。介绍了go-zero框架的基本使用,包括自动/手动创建RPC和API服务、etcd安装配置、服务运行测试等核心步骤。重点讲解了API调用RPC服务的实现方式,包括配置文件修改、服务上下文注入和逻辑层调用RPC方法。最后提及中间件集成,为构建微服务提供完整解决方案。官网地址:https://go-zero.dev/
2025-09-23 17:17:53
459
原创 go语言,彩色验证码生成,加减法验证,
/redis" ) func main() { // 创建 Redis 客户端 redisClient := redis.NewClient("localhost:6379", "", 0) // 验证码处理器 http.HandleFunc("/captcha", func(w http.ResponseWriter, r *http.Request) { ctx := context.Background() // 生成验证码 res
2025-09-12 15:36:16
240
原创 go 日志的分装和使用 Zap + lumberjack
本文介绍如何通过Zap日志库结合lumberjack实现生产级日志管理方案。该方案支持日志轮转(单文件最大100MB)、按天数清理(最多保留28天)、自动压缩(生成.gz备份)、限制备份数量(最多10个)等功能,有效防止磁盘写满问题。示例代码展示了JSON格式日志配置,包括时间格式化、日志级别控制和错误处理,输出清晰可读的日志信息,适合生产环境使用。
2025-09-11 16:24:33
253
原创 ssh域名过期,消息推送到企业微信
这篇文章介绍了一个用于检测SSL证书到期时间的Shell脚本。主要内容包括: 脚本功能:通过OpenSSL检查配置列表中域名的SSL证书有效期,并将结果通过企业微信机器人发送通知。 主要配置: 设置企业微信机器人Webhook Key 配置需要检测的域名和端口列表 设置提前提醒天数(默认30天) 实现逻辑: 使用openssl获取证书过期时间 计算剩余天数并与预警阈值比较 生成Markdown格式报告 通过企业微信API发送通知 使用方式: 赋予执行权限 配置定时任务(如每天10点执行) 测试运行并查看结果
2025-09-10 11:19:24
326
原创 go 使用rabbitMQ
本文介绍了使用Docker容器部署RabbitMQ服务的完整步骤,主要包括:1)在CentOS系统上安装Docker,包括卸载旧版本、添加镜像源和安装依赖;2)配置国内镜像加速和DNS解析;3)通过Docker命令运行RabbitMQ容器,设置管理账户和端口映射;4)提供Go语言实现简单队列模型的示例代码,包含生产者发送消息和消费者处理消息的逻辑。整个过程涵盖了从环境准备到应用开发的关键环节,适合快速搭建消息队列服务。
2025-08-29 15:05:09
392
原创 go语言在docker环境下运行-可用于生产环境
本文介绍了一个优化后的Go应用Dockerfile构建方案,具有多阶段构建、静态编译、非root用户运行等安全特性。关键优化包括:使用国内代理加速依赖下载、固定基础镜像版本、通过ldflags减小二进制体积、添加健康检查机制,并配套.dockerignore文件避免构建污染。该方案特别适合生产环境,实现了镜像体积最小化(从约1GB降至约15MB)、构建速度优化和安全性提升三大目标,同时考虑了国内开发者的网络环境需求。
2025-08-22 10:47:19
731
原创 golang 鸭子类型 隐式接口
Go语言采用"鸭子类型"设计哲学,通过支付网关系统实例展示了接口的灵活应用。系统定义统一支付接口PaymentGateway,包含创建支付、查询、退款等方法,而支付宝、微信支付等具体实现只需满足接口方法即可自动适配。这种设计实现了业务逻辑与具体支付方式的解耦,支持运行时动态切换支付渠道,展现了Go接口隐式实现的优势。代码示例中,业务层OrderService无需关心具体支付实现,只需通过统一接口调用支付功能,提高了系统的可扩展性和维护性。
2025-08-21 08:38:47
785
原创 os标准库
本文介绍了Go语言os标准库的主要功能,包括文件权限说明和常用文件操作函数。文件权限采用Unix风格的8进制表示法(如0777),详细解释了权限位含义。主要函数包括:Create创建文件、Mkdir/MkdirAll创建单/多级目录、Remove/RemoveAll删除文件/目录、Getwd/Chdir获取/修改工作目录、TempDir获取临时目录、Rename重命名文件等。这些函数提供了跨操作系统一致的文件操作接口,遵循Unix设计风格,是Go语言中进行文件系统操作的基础工具。
2025-08-08 10:37:25
673
原创 go语言标准库学习, fmt标准输出,Time 时间,Flag,Log日志,Strconv
Go语言提供了丰富的I/O处理功能,主要包括fmt包的格式化输出和time包的时间操作。fmt包支持Print、Fprint、Sprint系列函数,分别用于标准输出、文件/网络输出和字符串生成,还提供了Errorf创建格式化错误。格式化占位符包括%v、%d、%s等,支持多种数据类型输出。time包可获取当前时间、提取年月日时分秒,并处理时间戳(Unix时间戳以秒为单位)。这些功能使Go在数据处理和时间操作方面非常强大和灵活。
2025-08-08 09:46:26
902
原创 golang context.Context 接口和 context.Background()的关系
Go语言通过接口与实现分离的设计哲学,使得context.Context接口仅定义行为方法(如Deadline、Done等),而不包含创建逻辑。context.Background()作为包级工厂函数,负责返回实现了Context接口的具体emptyCtx实例。这种设计体现了Go的核心思想:接口专注能力契约(能做什么),实现类处理具体逻辑(怎么做),创建由独立工厂函数完成。类似io.Reader等标准库接口也采用该模式,实现了使用与创建的完全解耦,增强了代码的灵活性和扩展性。
2025-08-08 09:03:57
534
原创 go goroutine chan 用法
优先选 sync.WaitGroup:在大多数业务代码中,它更简洁、高效、易维护,是同步 goroutine 的 “标准答案”。选多通道同步:当你需要强调 “通信优先” 的设计,或同步逻辑较复杂(需要通过通道传递更多状态)时,它是更优雅的选择。
2025-07-31 18:03:30
891
原创 golang -gorm 增删改查操作,事务操作
在 GORM 中保存、删除操作会默认运行在事务上, 因此在事务完成之前该事务中所作的更改是不可见的,如果您的钩子返回了任何错误,则修改将被回滚。如果您已经为模型定义了指定的方法,它会在创建、更新、查询、删除时自动被调用。如果任何回调返回错误,GORM 将停止后续的操作并回滚事务。为了避免共用db导致的一些问题,gorm提供了会话模式,通过新建session的形式,将db的操作分离,互不影响。同样的道理,不带条件不能进行删除,必须加一些条件,或者使用原生 SQL,或者启用。map创建注意,主键不会被填充。
2025-07-11 10:46:11
900
原创 virtualbox 如何虚拟机ip固定,增强功能
本文详细介绍了在VirtualBox虚拟机中配置Linux网络和共享文件夹的步骤。主要内容包括:1)在VirtualBox网络管理中新建Host-Only和桥接网卡;2)修改Linux网卡配置文件设置静态IP或DHCP;3)配置路由规则确保网络连通性;4)安装增强功能并挂载共享文件夹。文章提供了两种配置方法、验证命令和故障排查方案,确保网络配置在重启后仍能正常工作。最后还介绍了共享文件夹的设置和挂载方法,方便主机与虚拟机间的文件共享。
2025-06-06 11:47:12
632
原创 hyperf 事件机制
php/***/// 建议这里定义成 public 属性,以便监听器对该属性的直接使用,或者你提供该属性的 Getterphp/***/// 返回一个该监听器要监听的事件数组,可以同时监听多个事件return [// 事件触发后该监听器要执行的代码写在这里,比如该示例下的发送用户注册成功短信等// 直接访问 $event 的 user 属性获得事件触发时传递的参数值。
2025-01-14 11:36:06
726
原创 Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。
如果 sshd 配置为使用低于 1024 的端口(如。检查 /etc/yum.repos.d/ 目录下的仓库配置文件,确保 extras 仓库的 URL 是有效的。如果默认仓库不可用,可以替换为国内镜像站(如阿里云、腾讯云)。如果默认仓库不可用,可以替换为国内镜像站(如阿里云、腾讯云)。firewalld 是基于 iptables 的,它会动态管理 iptables 规则。如果需要精细控制和直接操作 iptables,使用 iptables。基于 iptables,是对 iptables 的封装和扩展。
2025-01-14 11:33:13
1424
原创 thinnkphp5.1和 thinkphp6以及nginx,apache 解决跨域问题
中间件:推荐使用中间件统一处理跨域。控制器:如果仅需局部跨域,可以在控制器中设置响应头。OPTIONS 请求:确保正确处理预检请求。服务器配置:可以通过 Nginx 或 Apache 配置跨域。ThinkPHP 6:提供了更简单的跨域配置方式。根据项目需求选择合适的方式即可!
2025-01-07 09:40:38
1169
原创 hyperf json-rpc
通常来说,一个服务消费者会同时消费多个服务提供者,当我们通过服务中心来发现服务提供者时, config/autoload/services.php 配置文件内就可能会重复配置很多次 registry 配置,但通常来说,我们的服务中心可能是统一的,也就意味着多个服务消费者配置都是从同样的服务中心去拉取节点信息,此时我们可以通过 PHP 变量 或 循环 等 PHP 代码来实现配置文件的生成。如果没安装请先安装相关的插件。如果没安装请先安装相关的插件。不常用,可以看下面的配置复用。这个接口与服务端是一致的。
2024-08-28 17:16:10
1232
原创 nacos 安装
使用此快速开始方法进行Nacos安装及部署,需要安装Docker和Docker Compose。如何下载不下来,可换镜像加速地址可用镜像加速地址。
2024-08-27 14:22:17
684
原创 hyperf 中间件
内每个 server 的 name 属性对应的值,该配置仅应用在该 Server 中// 数组内配置您的全局中间件,顺序根据该数组的顺序],只需将您的全局中间件配置在该文件及对应的内,即该Server下的所有请求都会应用配置的全局中间件。当我们有些中间件仅仅面向某些请求或控制器时,即可将其定义为局部中间件,可通过配置文件的方式定义或注解的方式。
2024-08-27 09:05:22
1297
原创 hyperf 配置文件
Hyperf 为您提供了分布式系统的外部化配置支持,目前支持由携程开源的 Apollo、阿里云 ACM 应用配置管理、ETCD、Nacos 以及 Zookeeper 作为配置中心的支持。关于配置中心的使用细节我们由 配置中心 章节来阐述。单独的 Server 配置需要添加在对应 servers 的 settings 当中,如 jsonrpc 协议的 TCP Server 配置启用 EOF 自动分包和设置 EOF 字符串。文件夹内的配置文件在服务启动时都会被扫描并注入到。后,程序将转入后台作为守护进程运行。
2024-08-26 13:53:58
718
原创 Python3 迭代器与生成器
迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。iter()和next()。结果1 8 hello。
2024-08-21 13:53:00
341
js jquery 图片滑动 验证
2020-05-09
通路微信三级分销系
2018-03-29
php资源 curl请求类分装,get,post,等分装
2018-08-13
大气的微网站,
2014-08-12
商品栏目分类,京东栏目分类,拼多多栏目分类
2018-09-04
语言跟读小程序
2018-09-04
mysql笔记,mysql优化图解
2019-05-17
把php生成静态(html)页面程序类
2018-08-13
php多功能的图片处理类,php上传php裁剪php水印php多图
2018-09-12
android List 转json 问题
2018-09-28
JQUERY 树形菜单问题,就是每次刷新后菜单就缩回了
2014-03-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅