- 博客(115)
- 收藏
- 关注
原创 Java转Go日记(六十三):gRPC
gRPC 是一个高性能、开源的远程过程调用(RPC)框架,由 Google 开发并基于 HTTP/2 和 Protocol Buffers(protobuf)构建。它支持多种编程语言,使不同服务之间的通信更加高效和可靠。在微服务架构中,gRPC 凭借其低延迟、强类型接口和双向流式通信等优势,成为构建分布式系统的理想选择。本文通过一个用户信息查询的示例,展示了如何使用 gRPC 实现客户端与服务端的交互。首先,通过 .proto 文件定义服务接口和数据结构,然后利用 protoc 工具生成对应语言的代码。
2025-06-10 20:50:59
467
原创 Java转Go日记(六十二):Raft
Raft是一种分布式共识算法,用于确保集群节点间状态机的一致性转换。核心机制包括:1)领导选举:节点初始为跟随者,超时未收到心跳则变为候选人发起投票,获多数票者成为领导者;2)日志复制:领导者接收客户端指令并广播日志条目,待多数节点确认后提交到状态机;3)安全性保障:确保所有节点最终执行相同日志序列。算法通过心跳触发选举,并采用持久重试机制处理节点故障,典型5节点集群可容忍2节点失效。网络分区时,Raft能自动恢复一致性。该算法已在Go、Java等多语言中实现,是Consul和etcd等系统的核心组件。
2025-06-10 11:18:04
374
原创 Java转Go日记(六十一):微服务之RPC
本文详细介绍了Golang中RPC的实现方法。首先讲解了RPC的基本概念及其优势,然后对比了流行的RPC框架。重点展示了Golang通过标准库net/rpc实现RPC的具体步骤,包括服务端注册方法、客户端调用方法等核心流程。文章还提供了两个完整示例:矩形计算服务和数学运算服务,并分别演示了基于HTTP和JSON-RPC的两种实现方式。最后深入解析了RPC的底层通信机制,包括网络传输数据格式、编码解码过程以及服务端和客户端的实现原理。通过测试案例验证了RPC通信的正确性,为开发者提供了完整的RPC实现方案。
2025-06-06 12:00:00
762
原创 Java转Go日记(六十):gin其他常用知识
本文介绍了Gin框架开发中的三个实用技巧:1) 日志文件配置方法,演示如何将Gin日志输出到文件;2) 使用Air工具实现实时加载功能,提升开发效率,包括安装配置方法;3) 验证码功能的实现方案,通过dchest/captcha库集成验证码生成与验证,并提供了完整的后端代码示例和前端调用方式。这些技巧涵盖了Gin开发中的日志管理、开发工具和安全性等关键环节。
2025-06-05 15:04:36
954
原创 Java转Go日记(五十九):参数验证
本文介绍了Gin框架中数据验证的三种方法:1)使用gin内置binding标签进行基础验证,如必填项、数值范围等;2)自定义验证方法,通过validator.v8注册校验函数实现特殊规则;3)多语言验证翻译,利用universal-translator根据不同locale返回定制化错误信息。这些方法可以减少if-else判断,提高代码简洁性,同时满足不同场景的验证需求,如中文/英文错误提示、自定义业务规则等。文中提供了完整的代码示例,展示了从简单字段验证到复杂国际化验证的实现过程。
2025-06-05 11:44:14
387
原创 Java转Go日记(五十八):会话控制
本文介绍了HTTP Cookie的基本概念及其在Gin框架中的实际应用。Cookie是解决HTTP协议无状态问题的方案之一,服务器通过Cookie可以识别客户端身份。文章详细演示了Gin框架中Cookie的设置和读取方法,包括一个完整的权限验证中间件实现示例。同时指出Cookie存在安全性低、增加带宽等缺点,并推荐使用更安全的Session机制,最后展示了gorilla/sessions库的使用方法,包括Session的存储、读取和删除。全文从基础概念到实际应用,再到替代方案,系统讲解了HTTP状态管理技术
2025-06-04 15:32:03
311
原创 Java转Go日记(五十七):gin 中间件
本文介绍了Gin框架中间件的几种使用方式。全局中间件通过r.Use()注册,适用于所有路由;局部中间件直接在路由中指定;Next()方法允许在中间件中执行后续处理并统计时间。并且本文还提供了计时中间件的实现示例,通过在请求前后记录时间来计算处理耗时。这些技术可用于日志记录、性能监控等场景。演示代码展示了如何在不同路由上使用中间件并输出执行时间。
2025-06-04 11:29:34
760
原创 Java转Go日记(五十六):gin 渲染
本文介绍了使用Gin框架处理多种数据格式响应、HTML模板渲染、重定向以及同步异步处理的方法。首先,Gin支持JSON、结构体、XML、YAML和ProtoBuf等多种数据格式的响应,开发者可以根据需求选择合适的格式返回数据。其次,Gin通过LoadHTMLGlob方法加载HTML模板,并支持模板参数配置,实现动态内容渲染。此外,Gin提供了简单的重定向功能,可以通过Redirect方法实现URL跳转。最后,Gin利用Go语言的goroutine机制,支持异步处理请求,开发者可以通过Copy方法创建上下文的
2025-05-23 11:55:33
931
原创 Java转Go日记(五十五):gin 数据解析和绑定
本文介绍了如何使用Gin框架处理JSON、表单和URI数据的解析与绑定。首先,定义了一个Login结构体,用于接收客户端传递的用户名和密码。通过gin.Default()创建路由,并分别使用ShouldBindJSON、Bind和ShouldBindUri方法解析JSON、表单和URI数据。如果解析失败或用户名密码不匹配,返回相应的错误信息;否则,返回成功状态码。代码示例展示了如何实现这些功能,并提供了简单的HTML表单用于测试。
2025-05-23 11:07:18
317
原创 Java转Go日记(五十四):gin路由
本文介绍了Gin框架的基本路由、Restful风格API、API参数、URL参数、表单参数、文件上传、路由组等功能。Gin框架基于httprouter库,支持GET、POST、PUT等HTTP方法,能够通过Context获取API参数和URL参数,处理表单数据和文件上传。文件上传支持单个和多个文件,并能限制文件类型和大小。路由组功能用于管理相同URL前缀的路由。Gin框架通过前缀树结构高效处理路由匹配,适合构建高性能的Web应用。
2025-05-22 17:41:11
968
原创 Java转Go日记(五十三):gin框架简介
Gin是一个基于Go语言的轻量级Web框架,以其优雅的封装、友好的API和清晰的源码注释著称。它具备快速、灵活和容错方便等特点,适合开发高性能的Web应用。与Python、Java等语言相比,Go语言的Web框架依赖较少,其自带的net/http库已经足够简单且性能优异。使用Gin框架可以节省常用功能的封装时间,并有助于统一团队的编码风格。安装Gin需要先安装Go(1.10+版本),然后通过go get -u github.com/gin-gonic/gin命令安装。在代码中导入Gin后,可以快速创建一个简
2025-05-22 16:19:45
232
原创 Java转Go日记(五十二):静态文件处理
在Beego框架中,静态文件的处理是通过设置静态目录来实现的。默认情况下,Beego将static目录注册为静态文件处理目录,包含css、img和js子目录。开发者可以在main.go文件中的beego.Run()之前,通过StaticDir或SetStaticPath方法设置多个静态文件处理目录。例如,设置/down1和/down2分别映射到download1和download2目录,用户访问相应URL时,Beego会自动从映射的目录中获取文件。这种机制使得静态资源的管理和访问更加灵活和高效。
2025-05-22 10:50:15
196
原创 Java转Go日记(五十一):View编写
在Beego框架中,Controller通过this.TplName设置模板文件,默认支持tpl和html后缀,其他后缀可通过beego.AddTemplateExt接口添加。Beego使用Go语言默认的模板引擎,模板语法与Go一致,数据通过map类型传递,模板中通过{{.Key}}访问。例如,{{.Website}}和{{.Email}}分别输出网站和邮箱信息。此外,Beego还支持静态文件的输出,具体方法将在后续讲解。
2025-05-21 20:23:42
221
原创 Java转Go日记(五十):Model逻辑
在Web应用中,Model层通常用于处理数据库操作,是数据读取和逻辑复用的核心。在简单的应用中,Controller可以处理所有逻辑,但随着应用复杂度增加,Model层的作用变得不可或缺。通过将可复用的逻辑抽象成模块,Model层有助于代码的组织和维护。例如,在日志分析应用中,Model层可以包含处理特定数据读取的函数,如判断URL是否为页面访问(PV)的函数。因此,Model层的引入是应用逐步抽象和模块化的过程,对于需要逻辑分离和复用的复杂应用,Model层是必不可少的。接下来,我们将探讨如何编写View
2025-05-21 20:11:27
220
原创 Java转Go日记(四十九):路由设置
本文介绍了Beego项目路由设置的基本流程。首先从main函数入口分析,通过引入路由包执行init函数注册URL到Controller的映射。接着详细解析了beego.Run()的内部机制,包括配置文件解析、hook函数执行、session初始化、模板预编译、文档功能和管理模块启动等。最后指出服务会监听8080对外端口和8088监控端口,为后续Controller逻辑处理奠定基础。
2025-05-21 17:53:34
386
原创 Java转Go日记(四十八):新建项目
本文介绍了使用beego框架创建和运行项目的步骤。首先通过bee命令创建项目,自动生成MVC架构的目录结构,包含conf、controllers、models等标准文件夹。然后使用beerun命令运行项目,实现热编译效果,项目默认在8080端口启动。整个过程无需依赖nginx或apache,因为Go语言已内置网络层功能,beego在此基础上进行了封装。创建完成后,开发者可以立即在浏览器中查看运行效果
2025-05-21 15:00:26
142
原创 Java转Go日记(三十六):简单的分布式
本文通过zookeeper去实现一个简单的分布式server例子,以此来理解zookeeper作为服务注册和配置中心的角色
2025-05-15 16:36:16
461
原创 Java转Go日记(三十三):ETCD介绍
本文通过简单的例子介绍什么是etcd,以及说明对于java转go语言的同学来说,etcd是一个go语言开发的比ZooKeeper更高效的分布式key-value存储系统
2025-05-13 17:51:10
1550
第六届字节跳动青训营前端基础班大项目-仿掘金网站JueJin
2023-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人