1、项目目录设计

news2024/9/20 18:34:07

文章目录

  • 前言
  • 一、项目目录设计

前言

本项目我们将会完成一个Go项目开发框架,该项目不会包含具体的CRUD业务代码,而是从头搭建一个工作中实用的开发框架。让开发者能够熟悉整个项目的搭建流程,能够独立完成项目从0到1的搭建,而且后续业务项目都可以复用该框架快速进入需求开发。

一、项目目录设计

一个Web应用基本都会包含以下的基础模块:

  1. 项目配置,一般都是yaml文件,是全项目启动时就需要加载的相关信息
  2. Web模块(HTTP模块、RPC模块、Task定时任务模块)
  3. 数据库(MySQLRedis)
  4. 缓存模块(CacheRedis),Cache指本地缓存,通常用于定时加载一些元信息配置。
  5. 日志模块(请求日志,应用日志),请求日志为调用链路日志,一般是内嵌设置的,用户不用手动记录,而应用日志则指的是开发人员在业务开发中主动调用logs.CtxInfo,logs.CtxError等记录的日志。
  6. 应用指标(metrics、 PProf),用于打点和监控
  7. 其它(链路追踪,服务注册发现)

该项目会完成上述1-5部分,完成后,目录结构大体如下:
在这里插入图片描述

为了能够更清楚的看清层级,目录树如下

D:\GOCODE\WEB-TPL-MASTER
├─.idea
├─app   # 当前web应用
│  ├─core  # 项目基础核心,包含配置文件对应的结构体,MySQL,Redis,log等连接初始化与管理
│  │  ├─config
│  │  ├─db
│  │  ├─log
│  │  ├─redis
│  │  └─valid
│  ├─http   # http服务,包含路由,中间件,模型管理等
│  │  ├─controllers
│  │  │  ├─home
│  │  │  │  └─params
│  │  │  ├─qrcode
│  │  │  └─user
│  │  ├─middleware
│  │  │  └─logger
│  │  ├─models
│  │  └─routes
│  ├─svc  # service逻辑层,处理业务逻辑,下面一个前端页面对应一个文件夹
│  │  └─home
│  └─utils # 工具包 运行环境(IP,机房等)获取,请求与响应的封装
│      ├─env
│      ├─r
│      └─rsp
└─config # yaml配置文件管理
    └─env

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

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

相关文章

【爬虫】解析爬取的数据

目录 一、正则表达式1、常用元字符2、量词3、Re模块4、爬取豆瓣电影 二、Xpath1、Xpath解析Ⅰ、节点选择Ⅱ、路径表达式Ⅲ、常用函数 2、爬取豆瓣电影 解析数据,除了前面的BeautifulSoup库,还有正则表达式和Xpath两种方法。 一、正则表达式 正则表达式…

Pandas数学函数大揭秘:让数据处理变得如此简单高效,轻松玩转数据分析新纪元!

1.导包 # 导包 import numpy as np import pandas as pd2.聚合函数 df pd.DataFrame(datanp.random.randint(0,100,size(5,3))) df01203550281552376231419335895434679917 # 列非空元素的数量 df.count()0 5 1 5 2 5 dtype: int64# 行非空元素的数量 df.count(ax…

tableau范围-线图与倾斜图绘制 - 14

范围-线图与倾斜图 1.范围-线图1.1 含义1.2 范围-线图1.2.1 折线图绘制1.2.2 设置计算字段1.2.3 添加详细信息1.2.4 添加参考线1.2.5 结果 2. 倾斜图2.1 含义2.2 倾斜图绘制2.2.1 数据导入2.2.2 创建计算字段2.2.3 排名编辑表计算2.2.4 显示标签2.2.5 标签格式设置2.2.6 修改排…

系统服务综合作业01

题目: 现有主机 node01 和 node02,完成如下需求: 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 no…

RK3568平台开发系列讲解(内存篇)Linux进程内存的消耗统计

🚀返回专栏总目录 文章目录 一、VSS(Virtual Set Size)二、RSS(Resident Set Size)三、PSS(Proportional Set Size)四、USS(Unique Set Size)五、其他工具Linux 提供了多种进程内存占用的度量指标, 它们反映了不同的内存使用特征: VSS 反映进程虚拟内存总需求, 包括未…

启航IT之旅:为新生绘制的学习路线图

随着七月的热浪悄悄席卷而来,各地高考成绩陆续放榜,对于刚迈过高考这座独木桥的你们,这不仅仅是一个故事的终章,更是另一段冒险的序曲。特别是那些心中有一团IT火焰燃烧的少年们,暑假的钟声已经敲响,是时候…

多目标螳螂搜索算法MOMSA求解无人机三维路径规划,可以自行修改障碍物位置(MATLAB代码)

无人机路径规划多目标优化求解是一个复杂的过程,涉及到多个目标的考量和优化算法的应用。以下是一些关键点和相关算法的概述: 1. **多目标优化策略**:在无人机路径规划中,需要同时考虑多个目标,如路径长度、安全性、飞…

初学SpringMVC之接收请求参数及数据回显

pom.xml 文件导入 lombok 的依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency> Controller 表示这是一个控制器 RequestParam 表示从前端接收…

SD卡讲解

SD 卡 (Secure Digital Memory Card) 在我们生活中已经非常普遍了&#xff0c;控制器对 SD 卡进行读写通信 操作一般有两种通信接口可选&#xff0c;一种是 SPI 接口&#xff0c;另外一种就是 SDIO 接口。SDIO 全称是安全数 字输入/输出接口&#xff0c;多媒体卡 (MMC)、SD 卡、…

Elon Musk开源Grok

转载自&#xff1a;AILab基地 早在6天前&#xff0c;马斯克就发文称xAI将开源Grok 图片 13小时前&#xff0c;马斯克开源了旗下公司X的Grok训练模型&#xff0c;并喊话OpenAI&#xff0c;你名字里的Open到底在哪里 图片 下面是xai-org的GitHub开源地址[https://github.com/x…

HTTP-概述

概念 :Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 原始数据格式 特点 1. 基于TCP协议:面向连接&#xff0c;安全&#xff08;三次握手&#xff09; 2. 基于请求-响应模型的:一次请求对应一次响应&#xf…

无障碍全免费上手智能体:Autogen Studio结合Deepseek Coder打造一款AI旅游规划师

本文的唯一目的是通过打造一款AI旅游规划师&#xff0c;通俗易懂、深入浅出的讲清楚AI应用的大方向-智能体-的原理。 无需科学上网&#xff0c;无需付费API&#xff0c;无需编程能力&#xff0c;一小时即可部署、搭建一款复杂的、多代理交互的AI智能体-旅游规划师&#xff0c;…

LeetCode之最长回文子串

1.题目链接 5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-palindromic-substring/description/ 2.题目解析 对于这道题目我们可以使用动态规划的思路来求解&#xff0c;具体思路是&#xff0c;对于一个长度大于2的子串&…

EXSI 实用指南 2024 -编译环境 Ubuntu 安装篇(二)

1. 引言 在当今的虚拟化领域&#xff0c;VMware ESXi 是备受推崇的虚拟化平台&#xff0c;广泛应用于企业和个人用户中。它以卓越的性能、稳定的运行环境和丰富的功能&#xff0c;为用户提供了高效的硬件资源管理和简化的 IT 基础设施维护。然而&#xff0c;如何在不同操作系统…

Socks5代理为何比HTTP代理快?

在网络世界中&#xff0c;代理服务器扮演着重要的角色&#xff0c;它们能够帮助我们访问被限制的网站、提高网络安全性以及优化网络性能。其中&#xff0c;Socks5代理和HTTP代理是两种常见的代理类型。然而&#xff0c;很多用户发现&#xff0c;相较于HTTP代理&#xff0c;Sock…

JavaScript(9)——作用域的一些问题

如果在函数内部&#xff0c;变量没有声明直接赋值&#xff0c;也会当做全局变量看。强烈不推荐&#xff01;&#xff01; function op() {num 80}op()console.log(num) 在不同作用域下&#xff0c;可能存在变量命名冲突的情况&#xff1a; let num 10 function fn(){let num…

使用 Google 的 Generative AI 服务时,请求没有包含足够的认证范围(scopes)

题意&#xff1a; Google generativeai 403 Request had insufficient authentication scopes. [reason: "ACCESS_TOKEN_SCOPE_INSUFFICIENT" 问题背景&#xff1a; I have tried the simple POC for generativeai on its own to do generate_content and it works…

srs直播内网拉流带宽飙升问题记录

问题背景 srs部署在云服务器上&#xff0c;32核cpu&#xff0c;64G内存&#xff0c;带宽300M. 客户端从srs拉流&#xff0c;发现外网客户端拉流&#xff0c;cpu和带宽都正常。然而内网客户端拉流&#xff0c;拉流人数超过5人以上&#xff0c;带宽就会迅速飙升。 排查 用srs…

休息时间c++

题目描述 小杨计划在某个时刻开始学习&#xff0c;并决定在学习k秒后开始休息。 小杨想知道自己开始休息的时刻是多少。 输入 前三行每行包含一个整数&#xff0c;分别表示小杨开始学习时刻的时h、分m、秒s(h&#xff0c;m&#xff0c;s的值符合1≤h≤12,0≤m≤59,0≤s≤59)…

代码能力弱,编程思维几乎没有,有些勉强能看懂,让自己敲,一脸懵逼?

最近有几个人问我&#xff0c;说自己代码能力弱&#xff0c;编程思维几乎也没有&#xff0c;简单的代码&#xff0c;勉强能看懂&#xff0c;让自己敲&#xff0c;就一脸懵逼&#xff0c;下一步该怎么学习&#xff1f; 10几年前&#xff0c;这些问题&#xff0c;就像是一道道难以…