MIT6.5830 Lab1-Go tutorial实验记录(一

news2024/12/22 18:34:56

MIT6.5830 Lab1-Go tutorial实验记录(一) – WhiteNight's Site

标签:Golang, 数据库

编写一个简单的http server。

前言

MIT数据库系统实验

在网上看到了这么个实验,刚好对golang和数据库比较感兴趣,于是开始跟着做实验。下面放两个链接,前者是课程官网;后者是我fork的代码仓库,可以参考我的代码或者直接去看源仓库。

课程地址 实验代码参考

我自己是go和数据库的初学者,所以都是靠自己摸索。反正最后能实现实验要求的功能就OK了。

实验要求

波士顿MBTA(MIT所在地的一个交通运输管理局)的数据可视化

简单来说,给了一个800mb的sqlite数据库文件。现在需要你把“乘客量”这个数据进行可视化。总的来说就是需要让你编写http server以让后端的数据呈现在前端的页面上,其中还包括了处理数据等等。

你已经学会了GO的数据类型,接下来就开始实验吧!请创建一个简单的http server。在做实验前还是得了解GO的基础知识的,不过不了解也没问题,本文会讲的非常非常详细。

实验步骤

创建http server

clone完仓库后,别忘了下载mbta.sqlite。具体的文件结构已经在md里面写了,这里就不再说了。

打开main.go,我们可以看到第一个TODO

package main

func main() {
	// TODO: some code goes here
	// Fill out the HomeHandler function in handlers/handlers.go which handles the user's GET request.
	// Start an http server using http.ListenAndServe that handles requests using HomeHandler.
	
}

要求我们先补全HomeHandler,HomeHandler是什么,不知道。先不管。但我们知道它是一个handler。

  • Handler:又叫处理器,在这里用于处理HTTP请求。

根据GO的官方文档,我们可以还可以得到一个创建http server的代码例

http.Handle("/foo", fooHandler)

http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})

log.Fatal(http.ListenAndServe(":8080", nil))

这里列出了两种注册Handler的方法:

  • http.Handle(A,B):A为HTTP路由。B为已有的Handle对象。
  • http.HandleFunc(A,B):A为HTTP路由。B为处理函数。

简单来说,当用户请求访问对应的路由时(比如https://baidu.com/hello中的/hello),就会调用Handler的方法来响应用户的请求。

接下来我们看下HomeHandler,这里已经说明了它是个function,那我们就用HandleFunc。而ListenAndServer同样接受两个参数,前者为要监听的端口,后者默认nil即可。

package main

import (
	"fmt"
	"main/handlers"
	"net/http"
)

func main() {
	// TODO: some code goes here
	// Fill out the HomeHandler function in handlers/handlers.go which handles the user's GET request.
	// Start an http server using http.ListenAndServe that handles requests using HomeHandler.

	http.HandleFunc("/", handlers.HomeHandler)
	port := 8080
	http.ListenAndServe(fmt.Sprintf(":%d", port), nil)
}

在调试前,由于GO语言不允许“变量定义但不使用”,你还需要“使用”handlers文件夹下的handlers.go中的db,tmpl,data。毕竟你现在还不知道这几个变量能干什么,所以用空白标识符“_”即可。

_=db;
_=tmpl;
_=data;

同时为了方便调试,可以加个打印看看效果。

// TODO: some code goes here
// Get the chart data from RidershipDB
_ = db
fmt.Fprintln(w, "Hello, this is the home page!")
// TODO: some code goes here
// Plot the bar chart using utils.GenerateBarChart. The function will return the bar chart
// as PNG byte slice. Convert the bytes to a base64 string, which is used to embed images in HTML.

按f5调试,浏览器访问localhost:8080。正常显示界面

下一篇文章我们将实现从RidershipDB中拿到图像数据等操作。本文就先到这里了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五大亮点探索互联网医院源码的创新应用方式

作为互联网医疗行业的专家,我将为您揭示互联网医院源码的五大创新亮点。随着数字化技术的迅猛发展,互联网医院源码成为了提升医疗服务质量和提供便捷就医体验的重要工具。现在,让我们一起深入探索这五大亮点,了解互联网医院源码在…

什么是人事RPA?人事RPA解决什么问题?人事RPA实施难点在哪里?

每家公司人力资源部门每天需要筛选适合自己公司岗位要求的人才并与之沟通邀约面试、每月全公司员工的考勤状态核对、业绩考核核对、入离职手续办理、新员工培训等等,每项业务流程都由人手操作,效率极低、流程繁琐、费时费力。HR部门每天面对的业务数据量…

基于Java的驾校教练预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

使用Linux远程连接OpenGauss数据库的步骤和方法

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合…

COMMUTING CONDITIONAL GANS FOR MULTI-MODAL FUSION

方法 C f ^f f是分类器,P f ^f f(o i _i i​)是第i个物体出现的融合概率 作者未公布代码

Sectigo数字证书

安装SSL证书可以提供数据保护、确保身份真实性,并增强用户信任,从而提高网站的安全性和可信度。所以越来越多注重网络安全的技术人员在保障数据安全的手段上,选择直接安装SSL证书。 其中Sectigo的SSL证书是全球SSL证书市场占有率最高的CA公司…

电脑打开图片比例太大怎么调?这个方法又快又好用

别人给我们发送的图片,有许多打开之后提示图片太大,这种情况改怎么处理呢?其实可以使用图片改大小(https://www.yasuotu.com/size)功能来对图片尺寸大小修改就可以了,接下来就分享一个批量修改图片尺寸的方…

牛奶配送经营商城小程序的作用是什么

牛奶是老少皆爱喝的饮品,市场呈现大品牌多区域拓展形式,中小企业在经营中较为受限制,传统线下超市铺货占领的方式已经变得很低效,线下直营店和经销商在实际经营中面临难题。 线下经营受困,线上经营成为众商家扩大生意…

01_CookieWebStorage

1 Cookie Cookie的使用必须基于web服务器,因为Cookie的操作会跟随http请求进行。 Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据&#x…

水生物数据集

FishNet: A Large-scale Dataset and Benchmark for Fish Recognition, Detection, and Functional Traits Prediction FishNet 是一个大规模多样化的数据集,包含了来自 17357 种水生物的 94532 张精心整理的图像。这些图像根据水生物的生物分类学(目、科…

数据挖掘之贝叶斯优化——前反馈特征的参数,估计特征的最佳数值

贝叶斯优化是一个全局优化方法,用于优化具有噪声的黑盒函数。这一方法在许多现实世界的问题中都有应用,特别是在那些评估目标函数的代价很高的场合,例如超参数调优。 背景: 为什么需要贝叶斯优化? 在数据挖掘、机器…

VBA窗体跟随活动单元格【简易版】

本篇博客与以往的风格不同,先上图再讲解。 这个效果是不是很酷,VBA窗体(即UserForm,下文中简称为窗体)可以实现很多功能,例如:用户输入数据,提供选项等等。如本博客标题标注&#…

分享一下微信小程序怎么实现积分商城功能

微信小程序是一种便捷、高效的应用程序,它可以帮助企业或商家快速搭建自己的线上平台,提供更好的服务和产品给用户。积分商城是小程序中一种常见的功能,它可以帮助企业或商家吸引和留住用户,提高用户的忠诚度和互动性。下面就以微…

苹果 Vision Pro 头显新专利:增加重量减轻颈部压力

上周,彭博社的古尔曼表示 Vision Pro 头显过重,导致开发者佩戴后出现明显的颈部疲劳。随后,便有人发现在美国商标和专利局(USPTO)公示的清单中,苹果公司又获得了一项Vision Pro的专利,该专利提…

【Linux学习笔记】下载工具yum

1. yum工具1.1. yum的安装1.2. yum的搜索1.3. yum的卸载 2. Linux和Windows互相传输文件2.1. rz命令2.2. sz命令 3. yum的下载源 1. yum工具 yum是Linux软件包的管理器,是一个软件。那么软件的本质是什么呢? 答案是指令! 下面举几个简单的例…

如何管理消极怠工的员工?

消极怠工是指员工在工作中表现出缺乏积极性和主动性,对工作任务不负责任或者敷衍了事的行为。这种行为不仅影响了员工个人的工作效率和职业发展,也会对整个团队的工作氛围和效率产生负面影响。因此,如何管理消极怠工的员工成为了管理者需要面…

OA系统和ERP系统有什么区别?

在当今的企业管理领域,协同办公管理系统和ERP系统是两个非常重要的工具。它们在企业的日常运营中扮演着不同的角色,有着各自独特的功能和优势。那么,OA系统和ERP系统到底有什么区别呢?协同办公管理系统又是如何在这两者之间发挥协…

【Python应用】S02 将元组、序列分解为单独的变量

分解已知元素数量的元组、序列 e . g . 1 e.g.1 e.g.1 分解包含 N N N 个元素的元组或序列为 N N N 个单独的变量。 p (4, 5) x, y pe . g . 2 e.g.2 e.g.2 data [ACME, 50, 91.1, (2012, 12, 21)] name, shares, price, date datae . g . 3 e.g.3 e.g.3 data [ACME,…

重生奇迹mu游戏有哪些职业?

作为一款经典的网络游戏,重生奇迹MU一直是佼佼者,各方面设计非常出色,在玩家们的评价中也是不错,让玩家非常喜欢这款游戏了。 在这款游戏中有许多职业,必须要注意每个职业都有存在的价值,每个职业都有自己…

linux安装切换图形化界面?

1.描述 一台测试的服务器,安装的时候用的最小化安装,没有安装 ”带GUI的服务器”的环境 使用的时候想安装上:因为使用vncserver的时候,连接不显示图形界面 2.安装图形化界面 yum groupinstall "Server with GUI" --或者…