「时光不负,创作不停,本文正在参加2021年终总结征文大赛」
序言
2021年对于我来说,是意义不凡的一年。在这一年里,我经历了人生中最大的一个转折点——高考。而后,我便离开了那个陪伴我三年时光的高中校园。有不舍,也有感慨,但更多的是对大学生活的期待。
梦的开始
步入大学之后,我认识了形形色色的人。每天同他们一起学习一起玩乐,好不安逸。或许这样的生活没什么不好的,但是我总感觉心里空落落的,“这是我想要的大学生活吗?”我不禁在心中问自己。
后来,正值“琴理工作室”招新,我知道,我真正想要的生活来了!
梦想在这里启航
在这里,通过学长们的悉心教导,我学到了很多书本之外的知识。并在通过了琴理工作室的考核之后,成为了一名后端组实习成员。我很荣幸能够加入琴理工作室,也很庆幸能在这里找到自己真正喜欢的东西。
下面的代码是我在学习后端课程后完成的第一个接口,在它运行起来的那一刻,我的心中升起一股说不出的喜悦。
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,让我们再接再厉!