当前位置: 首页 > news >正文

【码神之路】【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、

相关文章:

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

介绍 一个用原生GO开发的博客网站,涉及Golang Web开发、Web服务器搭建和HTTP请求处理、模板与静态资源处理等 技术栈 后端:Go、Go并发机制前端:HTML模版链接直达 Golang搭建博客网站的学习视频 注:这里我只记录我实质✅学习到…...

Win10 电源选项那选择“关闭显示器“为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏

环境: Win10专业版 问题描述: Win10 电源选项那选择"关闭显示器"为1分钟,1分钟后就锁屏了?怎么才能关闭显示器后不锁屏 解决方案: 方法一 更改注册表可以实现关闭显示器而不锁屏的效果。请按照以下步骤…...

虚拟机centos设置网络模式(桥接|NAT)

前言 桥接模式是通过物理网卡直接与外部网络建立联系的,而NAT模式则是通过虚拟网卡VMnet1或VMnet8通过宿主机共享IP与外部建立网络关系当需要将虚拟机资源共享给局域网用户使用时,宜采用桥接模式;当需要保护虚拟机资源,确保只能由…...

MySQL 8.2 Command Line Client打开时一闪而过闪退问题

MySQL8.2安装成功后,发现打开MySQL 8.0 Command Line Client时出现一闪而过,打不开的情况。 解决方案: 1、打开MySQL 8.2 Command Line Client文件位置 2、右键选择属性 3、复制它的目标 4、我复制下来的目标路径是这样的,"…...

【NI-RIO入门】CompactRIO介绍及环境安装

CompactRIO是什么? CompactRIO系统提供了高处理性能、传感器专用I/O和紧密集成的软件工具,使其成为工业物联网、监测和控制应用的理想之选。实时处理器提供可靠,可预测的行为,而FPGA在需要高速逻辑和精确定时的较小任务上表现出色…...

生产问题 Recv-Q101

生产上服务端口 Recv-Q101 新请求到服务器的失败,幸好及时发现,通过重启服务之后得到解决,具体原因等待排查 目前觉得的原因是:某些请求暂用时间比较久...

从零开始:Rust环境搭建指南

大家好!我是lincyang。 今天,我们将一起探讨如何从零开始搭建Rust开发环境。 Rust环境搭建概览 Rust是一种系统编程语言,以其安全性、并发性和性能闻名。搭建Rust环境是学习和使用这一语言的第一步。 第一步:安装Rust Rust的…...

Tensorrt 实现 yolov5-cls 遇到的问题

yolov5-6.2增加了分类训练、验证、预测和导出(所有 11 种格式),还提供了 ImageNet 预训练的 YOLOv5m-cls、ResNet(18、34、50、101) 和 EfficientNet (b0-b3) 模型. 官方Git : https://github.com/ultralytics/yolov5 分类模型与…...

智能指针(Newbie Note)

智能指针专题 1.普通指针的问题2.智能指针是什么什么是所有权 3.智能指针三个好处:4.C11提供的智能指针4.1 shared_ptr(共享所有权指针)4.1.1 分配内存4.1.2 成员函数4.1.3 计数情况汇总:4.1.4 示例代码(计数)4.1.5 示例代码(rese…...

2023.11.22 homework

七年级数学 五年级数学 也不知道可以教到几年级,估计很快就教不动了。人生啊。...

存储日志数据并满足安全要求

日志数据是包含有关网络中发生的事件的记录的重要信息,日志数据对于监控网络和了解网络活动、用户操作及其动机至关重要。 由于网络中的每个设备都会生成日志,因此收集的数据量巨大,管理和存储所有这些数据成为一项挑战,日志归档…...

Linux系统管理与服务器安全:构建稳健云数据中心

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在当今数字化时代,云数据中心已经成…...

用css实现原生form中radio单选框和input输入框的hover样式以及聚焦focus的样式

一.问题描述:用css实现原生form中radio单选框和input的hover已经focus的样式 在实际的开发中,一般公司ui都会给效果图,比如单选按钮radio样式,input输入框hover的时候样式,以及focus的时候样式,等等&#…...

【中国平安社招校招】【内推】【当天内推】

中国平安社招校招内推 通过内推链接即时内推,反馈速度比正常要快(可私信问进度) 开放大量HC(不限岗位和地区,技术、设计、产品、运营、数据等都可内推) Step1:查看相关职位 浏览平安的招聘官网:复制以下地址至浏览器打开。注意以下链接包含…...

CentOS 8最小安装,VM使用这个内存占用小很多

文章目录 一、安装包下载作者使用的安装包 二、安装过程截图三、最小化安装拥有的外部命令四、查看ip(方便ssh连接)五、yum源有问题参考文档 一、安装包下载 CentOS 网站: https://www.centos.org/CentOS 维基: https://wiki.cen…...

【C++ Primer Plus学习记录】递增运算符(++)和递减运算符(--)

递增运算符()和递减运算符(--):前缀版本位于操作数前面,如x;后缀版本位于操作数后面,如x。两个版本对操作数的影响是一样的,但是影响的时间不同。这就像吃饭前买单和吃饭…...

Oracle 数据库中 查询时如何使用日期(时间)作为查询条件

在 Oracle 数据库中,可以使用日期(时间)作为查询条件来筛选数据。 格式化日期的三种方式 方式一: 关键字 DATE 使用关键字DATE, 仅表示日期类型,并不包含时间信息 方式二:关键字TIMESTAMP 使用关键字TI…...

Tomcat 基线安全加固操作

目录 账号管理、认证授权 日志配置 通信协议 设备其他安全要求 账号管理、认证授权 ELK-tomcat-01-01-01 编号 ELK-Tomcat-01-01-01 名称 为不同的管理员分配不同的账号 实施目的 应按照用户分配账号,避免不同用户间共享账号,提高安全性。 问题影响 …...

redis缓存穿透、击穿、雪崩

在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访…...

什么是数字孪生?

数字孪生是指通过数字化技术手段,将现实世界中的实体物理系统或过程与其数字化模型相连接,实现实体物理系统或过程的虚拟仿真、监测、预测和优化等功能的一种技术。数字孪生技术可以将物理系统的运行状态、性能参数、故障信息等实时反馈到数字模型中&…...

【优化求解】通过信号灯交叉路口的连接燃料电池混合动力车的生态驾驶双层凸优化附matlab代码

​✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书…...

ARM RealView Debugger项目管理与构建优化实战

1. ARM RealView Debugger项目管理核心架构解析在ARM嵌入式开发领域,高效的调试环境直接影响产品开发周期和质量。RealView Debugger作为ARM官方调试工具链的核心组件,其项目管理体系采用分层设计架构:项目类型矩阵:用户定义项目&…...

【Python 3D点云实战速成指南】:零基础7天掌握Open3D+PyTorch3D核心技能,工业级点云处理一步到位

更多请点击: https://intelliparadigm.com 第一章:Python 3D点云技术全景概览 3D点云作为三维空间中离散点的集合,已成为自动驾驶、机器人导航、逆向工程与数字孪生等领域的核心数据形态。Python凭借其丰富的科学计算生态(如NumP…...

保姆级教程:在QEMU虚拟机上编译并集成Intel FSP到Slim Bootloader

深入实践:在QEMU环境中构建Intel FSP与Slim Bootloader的完整集成方案 1. 环境准备与工具链配置 在开始FSP与Slim Bootloader的集成工作前,需要搭建完整的开发环境。不同于简单的应用开发,嵌入式固件开发对工具链的完整性和版本一致性有严格要…...

八大网盘直链下载助手:一键解锁高速下载的终极解决方案

八大网盘直链下载助手:一键解锁高速下载的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

BetterGI自动战斗功能生存位切换异常深度解析

BetterGI自动战斗功能生存位切换异常深度解析 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 - UI Automa…...

NNCF实战:深度学习模型量化与剪枝,实现边缘部署3倍加速

1. 项目概述:神经网络压缩框架的实战价值如果你正在为深度学习模型在边缘设备上的部署而头疼,觉得模型太大、推理太慢、功耗太高,那么NNCF这个工具很可能就是你一直在找的解决方案。NNCF,全称Neural Network Compression Framewor…...

保姆级教程:手把手教你为Amlogic盒子(Android 14)适配第三方红外遥控器,从抓码到生效

保姆级教程:Amlogic盒子红外遥控器适配全流程实战 手里拿着第三方红外遥控器却无法操控Amlogic电视盒子?这种体验就像拥有法拉利钥匙却打不开车门。本文将带你深入Android 14系统底层,从红外信号捕获到系统级按键映射,彻底解决遥控…...

Go语言轻量级RNN库zzet/gortex:原理、实战与优化

1. 项目概述:从“zzet/gortex”看开源项目命名与定位看到“zzet/gortex”这个标题,很多朋友可能会和我最初的反应一样,有点摸不着头脑。这看起来像是一个GitHub仓库的地址,格式是“用户名/仓库名”。在开源世界里,这种…...

终极指南:如何创建和管理Sourcebot搜索上下文提升代码搜索效率

终极指南:如何创建和管理Sourcebot搜索上下文提升代码搜索效率 【免费下载链接】sourcebot Sourcebot is a self-hosted tool that helps humans and agents understand your codebase. 项目地址: https://gitcode.com/gh_mirrors/sou/sourcebot Sourcebot是…...