【码神之路】【Golang】博客网站的搭建【学习笔记整理 持续更新...】

介绍

一个用原生GO开发的博客网站,涉及Golang Web开发Web服务器搭建HTTP请求处理、模板与静态资源处理等

技术栈

    后端:Go、Go并发机制前端:HTML模版

链接直达

Golang搭建博客网站的学习视频
网页首页
文章详细页
注:这里我只记录我实质✅学习到的知识点,对于一些抄抄写写的内容我就不过多赘述。

一、环境部署

1、设置下载Go模块的代理

为了提高获取Go模块的可靠性和速度,设置Go模块的中国代理服务器https://goproxy.cn ,如图:
设置go模块的代理

2、使用GO的template包解析HTML模版,生成动态页面

在这里插入图片描述

解析

在这里插入图片描述

3、index.html文件分析在这里插入图片描述

注:理解model数据结构、HTML模版渲染、go.mod Go模块文件
go.mod是Go模块文件,便于管理版本和外部依赖

二、静态资源加载

思路

  • 在main文件设置路由和对应的handlerFunc()处理函数
  • 操作view包和api包,用定义好的数据结构来渲染页面

1、总结各种的ERR处理

  1. panic(err)
  2. log.Println(“解析模版出错”,err)

2、

三、配置数据库

思路

  • 使用GO的database/sql包 驱动 数据库,配置数据库参数
  • 首页真实数据处理
    1. 分类查询:SQL数据库查询,再映射到Go结构中
    2. 文章查询:SQL实现分页查询逻辑
  • 分类文章:根据分类ID查询对应文章

1、GO的database/sql标准库连接数据库

2、定义go结构体,使用ORM框架 映射 数据库数据

3、实现分页查询和数据组装的业务逻辑

4、视图层 分页逻辑

四、实现登录功能

思路

  • GO 渲染HTML模版,定义处理HTTP请求的函数,实现登录功能
  • 创建数据模型(UserUserInfo:用户登录信息),通过生成JWT实现用户认证
  • 定义 显示文章详情的视图函数(从HTTP请求中获取文章ID,并进行查询)

1、特定URL

2、与数据库交互

3、加密和安全

使用MD5对密码进行加密处理,使用JWT进行用户会话管理

4、JSON处理

解析(生成)JSON格式响应体(请求体)

5、 服务层逻辑

实现用户登录和文章详情获取的业务逻辑

五、实现文章写作功能

思路:

  • 使用GO渲染HTML模版实现编辑文章的页面;
  • 定义文章结构体,实现文章发布和编辑的接口,包括身份验证、文章CRUD处理 以及数据库交互;(JWT身份验证、GO数据库包)
  • 使用七牛云存储服务以及其提供的**软件开发工具包(SDK)**来实现图片上传功能;(七牛云存储、SDK集成、Token生成)

1、写作页面

2、文章发布和编辑

3、图片上传

六、实现归档搜索功能

注:归档:按照特定的时间顺序展示文章

思路:

  • 定义归档路由,Go模版生成文章归档的页面,后端部分:获取所有的文章,按照日期顺序分类整理
  • 自定义功能:允许用户根据slug实现自定义url来访问特定页面
    注:比如https://www.baicao.com/posts/a1 中,a1就是一个slug
    *定义搜索路由,后端实现(据关键词搜索文章标题)查询文章的逻辑

1、定义HTTP路由(归档和搜索)

2、使用GO模版生成HTML页面

3、数据库交互

使用SQL查询来从数据库中检索文章数据,支持条件查询和全文搜索

4、数据处理

后端实现数据处理的逻辑,如文章的按月分类、搜索结果的生成。

七、优化工作

思路

  • 数据库优化查询:
  • 服务启动优化:
  • 获取参数优化

1、

2、

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDF Reader Pro 3.0.1.0(pdf阅读器)

PDF Reader Pro是一款功能强大的PDF阅读、注释、填写表单&签名、转换、OCR、合并拆分PDF页面、编辑PDF等软件。 它支持多种颜色的高亮、下划线,可以按需选择,没有空白处可以进行注释,这时候便签是你最佳的选择,不点开时自动隐…

Kubernetes容器状态探测的艺术

在Kubernetes集群中维护容器状态更像是一种艺术,而不是科学。原文: The Art and Science of Probing a Kubernetes Container[1] 在Kubernetes集群中维护容器状态更像是一种艺术,而不是科学。 本文将带你深入理解容器探测[2],并特别关注相对较…

【iOS】知乎日报

文章目录 前言一、首页1.网络的异步请求2.避免同一网络请求执行多次3.下拉刷新与上拉加载的实现下拉刷新上拉加载 二、网页1.webView的实现2.webView的滑动加载3.网页与首页内容的同步更新 三、评论区Masonory实现行高自适应 四、收藏中心通过FMDB实现数据持久化1.创建或打开数…

内存可见性与指令重排序

文章目录 内存可见性内存可见性问题代码演示JMM(Java Memory Model) 指令重排序指令重排序问题代码演示指令重排序分析 volatile关键字volatile 保证内存可见性 & 禁止指令重排序volatile 不保证原子性 在上一节介绍线程安全问题的过程中&#xff0c…

分享一篇很就以前的文档-VMware Vsphere菜鸟篇

PS:由于内容是很久以前做的记录,在整理过程中发现了一些问题,简单修改后分享给大家。首先ESXI节点和win7均运行在VMware Workstation上面,属于是最底层,而新创建的CentOS则是嵌套后创建的操作系统,这点希望…

Dubbo从入门到上天系列第十八篇:Dubbo引入注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

一:Dubbo注册中心引言 1:什么是Dubbo的注册中心? Dubbo注册中心是Dubbo服务治理中极其重要的一个概念。它主要是用于对Rpc集群应用实例进行管理。 对于我们的Dubbo服务来讲,至少有两部分构成,一部分是Provider一部分是…

看不惯AI版权作品被白嫖!Stability AI副总裁选择了辞职,曾领导开发Stable Audio

近日,OpenAI的各种大瓜真是让人吃麻了。 而就在Sam Altmam被开除前两天,可能没太多人注意到Stability AI副总裁Newton—Rex因看不惯StabilityAI在版权保护上的行为选择辞职一事。 大模型研究测试传送门 GPT-4传送门(免墙,可直接…

基于VM虚拟机下Ubuntu18.04系统,Hadoop的安装与详细配置

参考博客: https://blog.csdn.net/duchenlong/article/details/114597944 与上面这个博客几乎差不多,就是java环境配置以及后面的hadoop的hdfs-site.xml文件有一些不同的地方。 准备工作 1.更新 # 更新 sudo apt update sudo apt upgrade2.关闭防火…

【C++ 设计模式】面向对象设计原则 Template Method 模式 Strategy 策略模式

一、面向对象设计原则 重新认识面向对象 理解隔离变化 • 从宏观层面来看,面向对象的构建方式更能适应软件的变化, 能将变化所带来的影响减为最小 各司其职 • 从微观层面来看,面向对象的方式更强调各个类的“责任” • 由于需求变化导…

NFC:应用场景广泛的短距离通信技术

NFC:应用场景广泛的短距离通信技术 一、NFC 技术介绍1.1 NFC 技术应用场景1.2 NFC 技术优点1.3 NFC 工作原理 二、NFC 开发2.1 NFC 应用开发流程2.2 NFC 读取和写入2.3 NFC 读写功能示例 三、总结 一、NFC 技术介绍 NFC (Near-field communication&…

基于向量加权平均算法优化概率神经网络PNN的分类预测 - 附代码

基于向量加权平均算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于向量加权平均算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于向量加权平均优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xf…

SpringBoot——》配置logback日志文件

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref() v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…

有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

1. 目的 有依次对应关系的数组X、Y、Z,排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应,并打印出排序完成后的X、Y、Z数组。 2. 具体实现 以下面的这个对应关系为例,进行相应编程实现。 X [3.7,7.7,-6.6,1.5,-4.5…

深度学习环境配置(Anaconda+pytorch+pycharm+cuda)

NVIDIA驱动安装 首先查看电脑的显卡版本,步骤为:此电脑右击-->管理-->设备管理器-->显示适配器。就可以看到电脑显卡的版本了。 然后按照电脑信息,到地址 去安装相应的驱动,Notebooks是笔记本的意思,然后下…

[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code 本文提出一种新的3D数据表达形式3D Gaussians。每个Gaussian由以下参数组成:中心点位置、协方差矩阵、可见性、颜色。通过世界坐标系到相机坐标系,再到图像坐标系的仿射关系,可将3D Gaussian映射到相机坐标系,通…

【MySQL】多表查询、子查询、自连接、合并查询详解,包含大量示例,包你会。

复合查询 前言正式开始一些开胃菜多表查询自连接子查询单行子查询多行子查询in关键字all关键字any关键字多列子查询在from中使用子查询 合并查询union 和 union all 前言 我前面博客讲的所有的查询都是在单表中进行的,从这里开始就要专门针对查询这个话题进行进一步…

连接k8s和凌鲨

通过连接k8s和凌鲨,可以让研发过程中的重用操作更加方便。 更新容器镜像调整部署规模查看日志运行命令 架构 所有操作通过k8s proxy连接,通过设置namespace label赋予访问权限。只有赋予特定label的namespace才能被访问。 使用步骤 部署k8s proxy 你…

【机器学习】On the Identifiability of Nonlinear ICA: Sparsity and Beyond

前言 本文是对On the Identifiability of Nonlinear ICA: Sparsity and Beyond (NIPS 2022)中两个结构稀疏假设的总结。原文链接在Reference中。 什么是ICA(Independent component analysis)? 独立成分分析简单来说,就是给定很多的样本X,通…

电子学会C/C++编程等级考试2022年12月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:加一 输入一个整数x,输出这个整数加1后的值,即x+1的值。 时间限制:1000 内存限制:65536输入 一个整数x(0 ≤ x ≤ 1000)。输出 按题目要求输出一个整数。样例输入 9样例输出 10 答案: //参考答案: #include<bits/st…