“网络,并发”是Go语言的两大feature。Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码更少,也更简单。写一个Server除了网络,另外就是并发,相对python等其它语言Go对并发支持使得它有更好的性能。 Goroutine和channel是Go在“并发”方面两个核心feature。 Channel是goroutine之间进行通信的一种方式,它与U
转载 2024-05-17 09:19:58
40阅读
随着微服务的兴起,行业里出现了非常多优秀的微服务网关框架,今天教大家搭建一套国人,用Golang写的微服务网关框架。这里啰嗦一句,可能到今天还有人不理解什么是微服务,为什么要用微服务。目前网上相对比较模糊,没有精确的定义,但大家的意思都差不多,这里个人通俗描述,就是小项目发展到大项目过程中,出于已维护,与稳定性等考虑,将一个整体项目分为多个微小服务。微服务网关的作用是在用户第一个网关服务器,你按照
转载 2024-01-29 20:51:00
106阅读
在上节课内容中,我们学习实现了写文章的功能。本节课,我们要实现首页功能的开发。首页是用户登录后要展示的页面。最终想实现的功能是:点击首页,就会自动查询数据库,显示文章;如果文章较多,我们可以实现分页。一、查询文章功能1.1 Controller我们首先修改home_controller.go文件,在Get()方法中,先查询所有的文章,并显示到页面上。因为文章可能很多,为了更好的用户体验,我们需要分
转载 2023-07-12 00:26:34
304阅读
Go 实现文件分片上传 Go语言在写HTTP服务程序时,会经常用到文件上传和文件下载,文件上传和文件下载都可以用http包,默认的功能基本上够用了。http包支持文件下载的断点续传和进度显示,文件上传貌似不支持断点续传,不知道是不是要web端来实现。然后我自己配合web端实现了大文件分片上传,来完成断点续传和进度显示的功能。基本思想是,在web端将上传的文件进行分片处理,然后向服务端发送上传请求
转载 2023-10-01 09:50:35
269阅读
本周发表的一篇预印本论文和博客文章显示,谷歌研究人员开发了一款可以学习和模拟动物的动作的AI系统,以赋予机器人更大的灵活性。该论文的合著者认为,他们的方法可以促进机器人的发展,从而让机器人能够完成生活中一些对灵活性要求较高的任务,例如在多层仓库和履行中心之间运输材料。该团队的框架采用动物(在本例中是狗)的动作捕捉片段,并使用强化学习(reinforcement learning)来训练控制策略,强
接口在go语言中,也可以定义接口类型。我们都知道,在面向对象的程序语言中,接口是实现多肽的必要条件。我们可以通过接口来接收不同的实现go语言中通过interface关键字来定义接口。//定义一个Reader接口 type Reader interface{ //定义接口方法 read() } 复制代码上面定义了一个接口,那么如何来实现接口呢?在go语言中,可以在自定义的类型中通过方法来实现
在上一篇博客 理解Cookie和Session 中,我们了解了 Cookie 和 Session 的一些基础知识,也知道了 Session 的基本原理是由服务端保存一份状态信息(以及它的唯一标识符),客户端会通过这个唯一标识符来访问这份状态信息数据。整个客户端和服务端的交互过程可以概括为以下三个步骤:客户端第一次发送请求时,服务端创建 Session,并生成唯一标识符 SessionId服务端将
转载 2023-12-12 21:28:30
64阅读
在这篇文章中,我将复盘如何使用Go语言实现NTP(网络时间协议)服务的过程。通过系统化的分析和代码示例,我会介绍这个实现的背景、技术原理、架构解析、源码分析、案例分析以及扩展讨论。 NTP是一种用于同步计算机时钟的协议。它主要用于确保分布式系统中的各个节点具有一致的时间,这是网络通信、日志记录和数据一致性等操作的基础。在分布式系统不断扩大的今天,实现准确的时间同步显得尤为重要。 ```merm
原创 6月前
64阅读
# Go语言实现ERP系统 ERP(企业资源计划)是一种管理软件,用于帮助企业整合和管理各个业务流程。随着技术的发展,越来越多的企业开始采用新兴编程语言进行ERP系统的开发。Go语言,因其高效、简洁和并发处理能力,受到越来越多开发者的青睐。本文将介绍如何利用Go语言实现一个简单的ERP系统,并提供相应的代码示例。 ## 为什么选择Go语言? * **高效**:Go编译后的程序运行速度快,适合
原创 10月前
234阅读
# Go语言实现多态——一窥其奥秘 ## 什么是多态? 多态是面向对象程序设计中的一个重要概念。它指的是同一种操作在不同对象上可以呈现不同的行为。在Go语言中,虽然没有传统面向对象语言(如C++或Java)中那样的类和继承,但它通过接口和组合的方式实现了多态。 ## Go语言中的接口 在Go语言中,接口是一组方法签名的集成。任何类型只要实现了接口中所有的方法,就被视为实现了该接口。这样一来
原创 8月前
14阅读
需求如下: 使用函数实现一个简单的图书管理系统 每本书有书名,作者,价格,上架信息 用户可以在控制台添加书籍,修改书籍信息,打印所有的书籍列表 1打印菜单 2等待用户输入菜单选项 3添加书籍的函数 4修改书籍的函数 5展示书籍的函数 6退出 (该项目不涉及文件操作,在线操作等,仅是一个终端运行的小项目) 思路如下: 1首先先定义一个结构体,包含书籍各项信息。定义一个书籍切片,存放所有书籍。 2先写
你是否也存在过这样的需求,想要公开一个接口到网络上。但是还得加点权限,否则被人乱调用就不好了。这个权限验证的过程,最好越简单越好,可能只是对比两个字符串相等就够了。一般情况下我们遇到这种需要,就是在函数实现或者添加一个全局的拦截器就够了。但是还是需要自己来写那部分虽然简单但是很啰嗦的代码。那么存不存在一种方式,让我只管写我的代码就完了,鉴权的事情交给其他人来做呢?OpenAPI 一般情况下,就是允
转载 2023-07-12 00:28:23
151阅读
# Go语言实现ONVIF协议的科普文章 ## 引言 ONVIF(Open Network Video Interface Forum)是一项国际标准,旨在促进不同制造商和设备之间的互操作性,尤其是在IP监控摄像头和相关设备的领域。当我们使用Go语言实现ONVIF协议时,可以高效地处理网络请求,简化与各种网络监控设备的通信。 本文将带您了解如何在Go语言实现ONVIF协议,并提供实例代码
原创 9月前
225阅读
一. 归并排序算法简介归并排序算法是一种采用了分治策略的排序算法。它通过递归地先使每个子序列有序,再将两个有序的序列进行合并成一个有序的序列(也可以采用非递归的方式实现,效率更高一些)。归并算法是稳定和高效的排序算法(适用于复杂对象(结构体)数列的稳定排序)二. 算法复杂度 最理想情况:O(nlogn)最坏情况:   O(nlogn)三. 算法分治思路将数组切片为相同
评论有人提到没有例子,不知道讲的是什么。因此,为了大家能够更好地理解,特意加了一个示例。其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了。建议阅读 《Go语言标准库》一书的对应章节:flag – 命令行参数解析。在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯
# Go语言实现爬虫 随着互联网的发展,爬虫技术逐渐成为数据获取中的一项重要工具。利用程序自动抓取网页信息,可以帮助我们快速获取所需数据。在本文中,我们将介绍如何使用Go语言实现一个简单的爬虫。 ## 什么是爬虫? 网络爬虫,或称为网页爬虫,是一种自动访问互联网页面并提取信息的程序。网络爬虫广泛应用于搜索引擎、数据挖掘和信息整理等领域。在实现爬虫时,我们需要处理请求、解析网页和存储数据等任务
原创 2024-10-25 06:00:40
40阅读
go语言的反射机制,是程序在运行期间可以对程序本身的一些变量或者结构体等信息进行访问和修改,可以让函数接口的类型更加多元化。比如,通过给函数定义interface{}类型的参数,在函数内部利用反射针对不同类型参数进行不同处理。反射的调用是使用reflect包,reflect 包的两种类型 Type 和 Value,这两种类型使访问接口内的数据成为可能,它们对应两个简单的方法,分别是 reflect
转载 2024-10-01 14:29:42
27阅读
这两天学习微磁学模拟,需要安装mumax3,安装前提是显卡是英伟达的。安装过程参考了一篇文章“Installing-Mumax-and-Gnuplot-in-Windows-10-Step-by-Step”,过程非常详细,网上很容易查到,我的主页也有发,很推荐参考。根据文章内容的顺序安装即可,下面称为“文章”。安装之后需要仔细检查环境变量有没有加上。目录驱动CUDA安装Go语言、VScodeSet
需求:每隔一段时间自动备份一个文件,使用Go语言实现定时任务和文件操作。代码:package main import ( "fmt" "io" "os" "time" ) // BackupFile creates a backup of the specified file func BackupFile(src, dst string) error { // Open the s
原创 6月前
48阅读
Go语言实战》读书笔记Go语言的介绍1.1.2 并发在执行一段代码的同时,并行去做另外一些事情,goroutine 是很好的选择。package main import "fmt" func log(msg string) { fmt.Printf("%s\n", msg) } func main() { //log("检测到了错误") go log("检测到了错误") }屏幕上什么都没有,程序
转载 2023-09-15 14:34:22
73阅读
  • 1
  • 2
  • 3
  • 4
  • 5