2021——梦想在这里启航

「时光不负,创作不停,本文正在参加2021年终总结征文大赛

序言

2021年对于我来说,是意义不凡的一年。在这一年里,我经历了人生中最大的一个转折点——高考。而后,我便离开了那个陪伴我三年时光的高中校园。有不舍,也有感慨,但更多的是对大学生活的期待。

Screenshot_20211230_151830(1).png

梦的开始

步入大学之后,我认识了形形色色的人。每天同他们一起学习一起玩乐,好不安逸。或许这样的生活没什么不好的,但是我总感觉心里空落落的,“这是我想要的大学生活吗?”我不禁在心中问自己。

后来,正值“琴理工作室”招新,我知道,我真正想要的生活来了!

55d1f9b24ae813d4(1).png

梦想在这里启航

在这里,通过学长们的悉心教导,我学到了很多书本之外的知识。并在通过了琴理工作室的考核之后,成为了一名后端组实习成员。我很荣幸能够加入琴理工作室,也很庆幸能在这里找到自己真正喜欢的东西。

下面的代码是我在学习后端课程后完成的第一个接口,在它运行起来的那一刻,我的心中升起一股说不出的喜悦。

package main

import (
	"database/sql"
	"fmt"
	"html/template"
	"log"
	"net/http"
	// "os/user"

	_ "github.com/mattn/go-sqlite3"
)

// 全局 SQL 变量
var db *sql.DB

// 返回当前请求路径
func getPath(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, r.URL.Path)
}

// 注册接口
func register(w http.ResponseWriter, r *http.Request) {
	// GET 请求,返回 register.gtpl 里的 html 代码
	if r.Method == "GET" {
		t, _ := template.ParseFiles("register.gtpl")
		_ = t.Execute(w, nil)
	} else {
		// 解析前端数据
		r.ParseForm()

		// Post 请求,处理输入信息
		username := r.Form["username"][0]
		password := r.Form["password"][0]
		age := r.Form["age"][0]

		// TODO: 用户名不能少于4位,密码不能少于6位
		if len(username) <= 4 {
			fmt.Fprintf(w, "用户名不能少于4位!")
			return
		} else if len(password) <= 6 {
			fmt.Fprintf(w, "密码不能少于6位!")
			return
		}

		// 创建 sql 插入模板
		stmt, _ := db.Prepare("INSERT INTO userinfo(username, password, age) values(?,?,?)")
		res, _ := stmt.Exec(username, password, age) // 执行模板
		id, _ := res.LastInsertId()             // 获取 用户ID
		log.Println("Add User:", id)            // 打印 用户ID
		// 向前端返回数据
		fmt.Fprintf(w, "注册成功!")
	}
}

// 登录接口
func login(w http.ResponseWriter, r *http.Request) {
	// GET请求,则返回 login.gtpl 里的 html 代码
	if r.Method == "GET" {
		t,_ := template.ParseFiles("login.gtpl")
		_ = t.Execute(w,nil)
	} else {
		// 解析前端数据
		r.ParseForm()

		// Post 请求,处理输入信息
		username := r.Form["username"][0]
		password := r.Form["password"][0]

		// 遍历数据表
		rows,_ := db.Query("SELECT * FROM userinfo")

		for rows.Next() {
			var uid int
			var un string
			var pw string
			var ag string

			// 读取数据
			rows.Scan(&uid, &un, &pw, &ag)

			// 遍历数据库,检查用户名和密码是否正确
			if username == un && password == pw {
				fmt.Fprintf(w, "登录成功:" + username)
				return
			}
		}

		fmt.Fprintf(w, "登录失败!")
	}
}

// TODO: 查询用户年龄
func search(w http.ResponseWriter, r *http.Request) {
	// GET请求,则返回 login.gtpl 里的 html 代码
	if r.Method == "GET" {
		t,_ := template.ParseFiles("search.gtpl")
		_ = t.Execute(w,nil)
	} else {
		// 解析前端数据
		r.ParseForm()

		// Post 请求,处理前端信息
		username := r.Form["username"][0]

		// 遍历数据表
		rows,_ := db.Query("SELECT * FROM userinfo")

		for rows.Next() {
			var uid int
			var un string
			var pw string
			var ag string

			// 读取数据
			rows.Scan(&uid, &un, &pw, &ag)

			// 遍历数据库,检索要查找的用户的年龄
			if username == un {
				if len(ag) > 0 {
					fmt.Fprintf(w, "该用户的年龄为:" + ag)
					return
				} else {
					fmt.Fprintf(w, "该用户尚未添加年龄!")
					return
				}
			}
		}

		fmt.Fprintf(w, "未找到该用户!")
	}
}

func main() {
	// 打开数据库
	db,_ = sql.Open("sqlite3", "./foo.db")
	// 延时关闭
	defer db.Close()

	http.HandleFunc("/", getPath)          // 默认处理函数
	http.HandleFunc("/login", login)       // 登录处理
	http.HandleFunc("/register", register) // 注册处理
	http.HandleFunc("/search", search)     // 查询处理

	// 开启服务
	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}
复制代码

路未尽,逐不止!

2021年已经接近尾声,但是追逐梦想的脚步永远不会停歇。
新的一年,也给自己定几个小目标:

  • 学好Java
  • 努力成为琴理工作室的正式成员
  • 熟练使用数据库
  • 学习JavaWeb
  • 学习算法

PS:一个小小的愿望:希望能找到女朋友ヾ(≧▽≦*)o

加油!2022!

人们都说时间是很无情的东西,它会慢慢带走你所拥有的一切。可我坚信,不灭的信仰、满腔的热血、追逐梦想的脚步是什么都无法带走的!2022,让我们再接再厉!

Guess you like

Origin juejin.im/post/7047404831056609287