,笔者从零开始接触Go语言,挑战了一下自我,实现了一个web service. 不过这里有一个问题,在上次的实现中,用了一些第三方的库,比如beego框架和go-simplejson. 从工程的角度来说,利用框架等第三方库的优点是,很多地方的编码变得简单,代码量较少;但是缺点是:一、对golang本身built-in的库如net/http和encoding/json都还了解得很不够;二、一旦第三方
转载 2023-07-25 16:20:41
83阅读
1. 前言看到这个服务端框架,是真的轻量,代码极简但包含了服务端的核心,能很容易帮助新手理解服务端框架做了什么。当然最主要还是作者写的渐进式开发文档,实在是极好。这篇文章不会详细的说这个项目的源码,这个直接看作者的文档和源码就行,这篇文章主要是借助这个框架总结一个tcp服务端的核心功能。2. 一个TCP服务的核心功能2.1 处理连接一个TCP服务端要给客户端提供功能,首先得与客户端建立连接。学过网
使用Golang 搭建http web服务器需求1 登陆页面2 首页路由处理页面404处理登陆页面处理ajax处理如何设置header:如何解析参数:如何连接数据库如何设置cookie主页处理后记 Golang在搭建web服务器方面的能力是毋庸置疑的。官方已经有提供net/http包为搭建http服务器做准备。使用这个包能很简单地对web的路由,静态文件,模版,cookie等数据进行设
转载 2024-03-18 06:58:41
41阅读
golang 视频服务器package mainimport ( "fmt" "io/ioutil" "log" "net/ht
原创 2022-12-21 10:26:22
162阅读
如何用golang搭建一个web服务呢?菜鸟官网的go web编程教程已经介绍了web服务器的工作原理,这里就不赘述了。我们先看个例子:http.gopackage main import ( "fmt" "io" "log" "net/http" ) func main() { http.HandleFunc("/test", doRequest)
golang中使用的http协议版本是RFC2616对于一个http服务来讲,需要兼容新旧版本的http协议,http1.0/2.0,以及https的支持,http的通信是建立在tcp连接基础上的通信。现在协议有了,连接通信也有了,还剩一个问题就是如何处理client request请求,这个问题可以分为路由和具体逻辑实现,下面看看在golang中是如何解决这些问题的。 路由部分&nbs
package mainimport ( "encoding/json" "fmt" "net/http"
原创 2022-06-20 19:47:28
47阅读
本文旨在讲述 RPC 框架设计中的几个核心问题及其解决方法,并基于 Golang 反射技术,构建了一个简易的 RPC 框架。RPCRPC(Remote Procedure Call),即远程过程调用,可以理解成,服务 A 想调用不在同一内存空间的服务 B 的函数,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。服务端RPC 服务端需要解决 2 个问题:由于客户端传
package mainimport ( "fmt" "io/ioutil" "log" "net/http" "os" "path/filepath" "time")func DownloadPdf(tsid int) ([
原创 2022-12-21 10:33:27
206阅读
作者近期在写一个项目时遇到了这样的需求:调用一个库API函数,函数内部又会拉起若干个后台goroutine。这时后台goroutine如果遇到错误想要及时通知库的使用者将不会是一件容易的事情,因为这是一个异步通知error的方法。作者最终的解决方案概括为:使用者另启一个goroutine监听Err channel,库后台goroutine出现的错误将直接发送至Err channel中。作者以自己项
介绍Nano 是什么?轻量级,方便,高性能 golang 的游戏服务器框架。nano 是一个轻量级的服务器框架,它最适合的应用领域是网页游戏、社交游戏、移动游戏的服务端。当然还不仅仅是游戏,用 nano 开发高实时 web 应用也非常合适。最重要的是可以通过这个入门 Golang 游戏服务器框架开发示例仓库[cloud-nati
## 从零开始,将Golang应用部署到服务器 ### 简介 在本文中,我们将教你如何将一个简单的Golang应用部署到服务器上。在本教程中,我们将使用Kubernetes(K8S)进行部署。Kubernetes是一种开源的容器编排引擎,用于自动化容器的部署、扩展和操作。在本文中,我们将展示如何使用Kubernetes将Golang应用部署到服务器上。 ### 步骤概述 下面是部署Golang
原创 2024-05-07 11:34:21
102阅读
多线程+同步阻塞模型在我们的游戏项目中使用的golang服务器开发方式如下1.多线程逻辑2.同步阻塞. 也就是说, 每个人一个线程(goroutine), io线程=逻辑线程这种方式的优点:1. 同步阻塞方式与人的思维方式类同2. 逻辑处理性能有一定提升在大规模使用这种模式编写逻辑后, 我们发现了这种模式只有1个缺点: 编写者需要处理多线程关系但这本身确实直接致命的, 回想C++时代, 多线程处理
# GolangJava在游戏服务器中的应用 游戏服务器是现代在线游戏的核心部分,负责玩家之间的交互、游戏状态的管理以及数据的存储。随着编程语言的多样化,GolangJava成为了开发游戏服务器中常用的两种语言。本文将探讨这两种语言在游戏服务器开发中的应用,提供代码示例,并展示相应的类图和状态图。 ## Golang vs Java ### Golang Golang,或者称作Go,是
原创 8月前
120阅读
1. 引言Go(也称为 Golang)是一种开源的编程语言,由 Google 在 2007 年启动的项目中开发而来。它是一种静态类型的编译型语言,旨在提供高效、可靠的性能。由于其简洁、高效和并发特性,Go 逐渐成为构建网络服务和分布式系统的首选语言。在这篇文章中,我们将介绍一些受欢迎的 Golang 框架,这些框架可以帮助开发人员更轻松地构建Web应用程序和API服务。我们将详细介绍每个框架的特点
简介http WEB服务器: 1. 注册回调函数:http.HandleFunc("/", myHandler) func myHandler(w http.ResponseWriter, r *http.Request) w:给客户端回发数据 r:从客户端读到的数据 type ResponseWriter interface { Header() Header Write([]byte) (int, error) Writ
原创 2021-06-01 12:26:17
385阅读
package mainimport ( "net" "fmt" "time")func main() { // 组织一个 udp 地址结构, 指定服务器的IP+port srvAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8006") if err != nil { fmt.Println("ResolveUDPAddr err:", err) return.
原创 2021-06-01 12:26:18
397阅读
首先强烈推荐按照 golang 官方教程来配置,介绍的非常详细和到位。下面是我参考网友的教程和官方教程做的一个教程。 1、创建远程连接 & 设置同步策略 1.1、创建 ssh 连接配置 依次点击功能栏「Golang -> Preferences」,随后选择 「Tools -> SSH Configu
原创 2022-06-10 21:53:01
2155阅读
首先强烈推荐按照 golang 官方教程来配置,介绍的非常详细和到位。下面是我参考网友的教程和官方教程做的一个教程。 1、创建远程连接 & 设置同步策略 1.1、创建 ssh 连接配置 依次点击功能栏「Golang -> Preferences」,随后选择 「Tools -> SSH Configu
原创 2022-06-10 22:01:27
328阅读
垃圾回收概念对不再使用的内存资源进行自动回收的行为。出现的原因内存管理是程序员开发应用的难题,传统的编程语言(c/c++),程序员须小心进行管理操作,控制内存的申请及释放。稍有不慎会造成内存泄漏。以往常用办法1.内存泄漏检测工具。原理是静态代码扫描,通过扫描程序检测可能出现内存泄漏的代码段,然而检测工具难免有疏漏和不足,只能嗯起到辅助作用。2.职能指针。c++中引入的自动内存管理方法。通过拥有自动
  • 1
  • 2
  • 3
  • 4
  • 5