BBS-个人博客项目完整搭建、BBS多人博客项目基本功能和需求、项目程序设计、BBS数据库表结构设计、创建BBS表模型

news2024/11/25 20:39:58

一、BBS-个人博客项目完整搭建

项目开发流程
一、项目分类
现在互联网公司需要开发的主流web项目一般分为两类:面向互联网用户,和公司内部管理。

面向互联网用户: C(consumer)端项目
公司内部管理:B(business)端项目

还有一类web应用,基本采用基于角色的权限控制,不同的员工在这套系统中拥有不同的权限,
适用于公司内部管理。

基于权限的后台关系系统:
	RBAC权限管理系统

二、项目开发模式分类
最常见的两类为瀑布开发模式和敏捷开发模式。
1、瀑布开发模式
	瀑布开发模式是一种更倾向于严格控制的管理模式,要求在提出需求之后,充分完成项目的规划,各阶段都要经过严格的评审,只有当一个阶段的需求完成得非常好时才能进入下一个阶段。
	但是瀑布开发模式开发的失败率较高,且周期较长,于是就产生了敏捷开发模式。
	
2、敏捷开发模式
	敏捷开发模式的核心是迭代开发,它将一个项目完整的开发流程分为了几个周期(也可以说是版本),由于每个版本的开发流程相似,看上去相当于一个重复迭代的过程。这么开发的好处是,使一个大的项目能在较短时间内上线,并在后续对它进行不断地迭代和优化。
	
3、项目开发流程
	-立项
	-需求分析
	-原型图(产品画的)
	-切图
	-技术选型,数据库架构设计
	-前后端协同开发
	-上线测试服务器联调
	-测试
	-修改bug
	-上线运行

二、BBS多人博客项目基本功能和需求

# 开发任意的项目第一个阶段就是弄清楚你要开发什么功能

# 一个项目最重要的是表结构的设计,大部分时间都是用来设计表.
# 你在企业中对于一个完成的项目写代码的时间大概有个30%,其余的时间都用来做铺垫
比如:产品需求的确定,技术选型,数据库设计...

# 注册登录功能
"""
	1. 用户表(你可以自己创建,也可以使用auth_user表)
		扩展auth_user表
		phone 
		avatar:用来存储头像的地址
		create_time:用户注册的时间
		...
		
		blog_id = OneToOneField(to='blog')	
		
	2. 站点表(blog)
		站点名称
		站点标题
		站点样式:存的是css的路径
		
	3. 分类表(cate)
		分类名称
		blog = ForeignKey(to='blog')	
	4. 标签表
		标签名称
		blog = ForeignKey(to='blog')	
		
	5. 文章表(*******************article)
		文章标题
		文章摘要
		文章内容
		文章发表时间
		
		# 1. 通过文章id去点赞表或者评论表中查询
		# 优化
		# 2. 在文章表中增加子弹
		up_num			1
		down_num		1
		comment_num	    4
		
		
		# 外键关系子弹
		cate = ForeignKey(to='cate')	
		tag  = ManyToManyField(to='tag')
        blog = ForeignKey(to='blog')	
       
        
        
	6. 点赞点踩表
		谁给哪篇文章什么时间点了赞还是踩
		user		ForeignKey(to='user')	
		article		ForeignKey(to='article')	
		is_up			0/1
		create_time
		
		id  	user_id  	article_id			is_up   create_time
		1			1			1					0		‘’
		2			2			1					1		‘’
	7. 	评论表(comment)
		
		谁给哪篇文章在什么时间评论了什么内容
		user		ForeignKey(to='user')	
		article		ForeignKey(to='article')	
		content
		create_time
		parent_id		ForeignKey(to='comment')	
		parent_id		ForeignKey(to='self')
		#自关联
		
		id  	user_id  	article_id			content   create_time parent_id
		1			1			1					0		‘’			0
		2			2			1					1		‘’			1
		3			2			1					1		‘’			2
		
		
		子评论!!!
		评论评论的评论!!!
		根评论
		
		1. Python是世界上最好的语言
			1.1 PHP是世界上最好的语言
				1.2 Java是世界上最好的语言
				
			
	 无限极分类	
		category表
		id				cate_name			pid
		1				手机/数码			  0
		2				电脑/办公			  0
		
		...
		20					手机通讯			1
		21					运营商				 1
		...
		
		
		
		50				5G手机				20
		51				手机					20
		
		...
		
		
		100				128G/5G				50
		
"""

三、项目程序设计

在这里插入图片描述

四、BBS数据库表结构设计

1.用户表:UserInfo

(通过继承AbstractUser类来扩写Auth_user)
•phone:用户的联系方式
•bg_img: 用户的主页背景
•province: 用户的省份
•city: 用户的城市
•gender : 用户的性别
•avatar:用户的头像
•blog:用户的博客站点(外键一对一关联博客表Blog)

2.博客表:Blog

•title:博客标题
•subtitle: 博客子标题
•style:博客样式

3.文章表:Article

•title:文章标题
•head_img: 头像
•description:文章摘要
•content:文章内容
•create_time:文章的创建时间
•modify_time:  文章的修改时间
•up_num :点赞数
•down_num:点踩数
•comment_num:评论数
•blog:属于哪个博客站点(外键关联博客表Blog)
•category:属于哪个分类(外键关联分类表Category)

4.标签表:Tag

•name:标签名
•blog:属于哪个博客站点(外键关联博客表Blog)

5.分类表:Category

•name:分类名
•blog:属于哪个博客站点(外键关联博客表Blog)

6.评论表:Comment

•user:评论的用户(外键关联用户表UserInfo)
•article:该评论属于哪篇文章(外键关联文章表Article)
•content:评论内容
•comment_time: 评论的创建时间
•comment_id:评论的目标id(外键进行自关联)

7.点赞点踩表:UpAndDown

•user:来自哪个用户(外键关联用户表UserInfo)
•article:属于哪篇文章(外键关联文章表Article)
•is_up:点赞还是点踩(根据bool值来判断)
•create_time : 点赞或踩的时间

8.文章标签表: Tag2Article

根据文章与标签的多对多关系手动建立的第三张表
•	tag:标签名(外键关联标签表Tag)
•	article:属于哪篇文章(外键关联文章表Article)

9.轮播图表 Swiper (拓展)

•	image: 轮播图图片名
•	title:轮播图标题
•	img_url: 点击轮播图要跳转的url地址

10.日志表: Log(拓展)

id: 日志id
•	ip: 访问的ip地址
•	time: 访问的时间
•	url: 访问的url
•	device: 访问的浏览器
•	platform:访问的操作系统类型

11.日志表: Log(拓展)

id: 日志id
•	ip: 访问的ip地址
•	time: 访问的时间
•	url: 访问的url
•	device: 访问的浏览器
•	platform:访问的操作系统类型

五、创建BBS表模型

模型层models.py中写入以下orm语句模型来创建表模型

from django.contrib.auth.models import AbstractUser
from django.utils.html import mark_safe
from django.db import models
from markdown import markdown


# 日志表
class Log(models.Model):
    id = models.AutoField(primary_key=True)
    ip = models.CharField(max_length=64, verbose_name='访问IP', help_text='访问用户的IP地址')
    time = models.DateTimeField(auto_now_add=True, verbose_name='访问时间', help_text='该用户的访问时刻')
    url = models.CharField(max_length=64, verbose_name='访问的URL', help_text='该用户访问的URL地址')
    device = models.CharField(max_length=256, null=True, verbose_name='访问的浏览器', help_text='该用户是用什么浏览器访问的')
    platform = models.CharField(max_length=256, null=True, verbose_name='访问的系统', help_text='该用户用的是什么操作系统')
    # 定义这个表中默认显示的字段
    def __str__(self):
        return self.ip
    # 定义这个表在admin后台中显示的别名
    class Meta:
        ordering = ['id']
        verbose_name_plural = '日志'


# 用户表
class UserInfo(AbstractUser):
    avatar = models.FileField(upload_to='avatar/', default='avatar/default.png', verbose_name='头像', help_text='该用户的头像')
    bg_img = models.FileField(upload_to='bg_img/', default='bg_img/default_bg.png', verbose_name='头像',
                              help_text='该用户的主页背景')
    province = models.CharField(max_length=32, default='', verbose_name='省', help_text='该用户的省')
    city = models.CharField(max_length=32, default='', verbose_name='城市', help_text='该用户的市')
    gender = models.IntegerField(choices=((0, '保密'), (1, '男'), (2, '女')), default=0, verbose_name='性别',
                                 help_text='该用户的性别')
    phone = models.CharField(max_length=11, null=True, default='', verbose_name='联系方式', help_text='该用户的联系方式')
    blog = models.OneToOneField(to='Blog', on_delete=models.CASCADE, null=True, verbose_name='博客', help_text='该用户的博客')

    def __str__(self):
        return self.username

    class Meta:
        verbose_name_plural = '用户'


# 博客表(个人站点)
class Blog(models.Model):
    title = models.CharField(max_length=32, verbose_name='博主昵称', help_text='博主昵称')
    subtitle = models.CharField(max_length=32, verbose_name='子标题/公告', help_text='博客的子标题/公告')
    style = models.CharField(max_length=32, verbose_name='样式', help_text='该博客独有的样式')  # 此处未启用

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = '博客站点'


# 文章表
class Article(models.Model):
    title = models.CharField(max_length=32, verbose_name='标题', help_text='文章的标题')
    head_img = models.FileField(upload_to='article_head_img/', default='article_head_img/default_head.png',
                                verbose_name='头图',
                                help_text='文章的头图')
    description = models.CharField(max_length=128, verbose_name='摘要', help_text='简要描述该文章')
    content = models.TextField(verbose_name='内容', help_text='文章的内容')
    markdown = models.TextField(verbose_name='Markdown内容', default='暂无', help_text='文章的Markdown内容')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', help_text='该文章的创建时间')
    modify_time = models.DateTimeField(auto_now=True, verbose_name='修改时间', help_text='该文章的最后修改时间')
    up_num = models.IntegerField(default=0, verbose_name='点赞数', help_text='该文章的点赞数')
    down_num = models.IntegerField(default=0, verbose_name='点踩数', help_text='该文章的点踩数')
    comment_num = models.IntegerField(default=0, verbose_name='评论数', help_text='该文章的评论数')
    blog = models.ForeignKey(to='Blog', on_delete=models.CASCADE, null=True, blank=True, verbose_name='博客',
                             help_text='该文章属于哪个博客页面')
    category = models.ForeignKey(to='Category', on_delete=models.CASCADE, null=True, blank=True, verbose_name='分类',
                                 help_text='该文章属于哪个分类')
    tag = models.ManyToManyField(to='Tag', through='Tag2Article',
                                 through_fields=('article', 'tag'), verbose_name='标签',
                                 help_text='该文章有哪些标签')

    def get_text_md(self):
        return mark_safe(markdown(self.content))

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = '文章'
        ordering = ['id', ]


# 标签表
class Tag(models.Model):
    name = models.CharField(max_length=32, verbose_name='标签', help_text='标签的名字')
    blog = models.ForeignKey(to='Blog', on_delete=models.DO_NOTHING, null=True, blank=True, verbose_name='博客',
                             help_text='该标签属于哪个博客页面')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = '标签'


# 分类表
class Category(models.Model):
    name = models.CharField(max_length=32, verbose_name='分类', help_text='分类的名称')
    blog = models.ForeignKey(to='Blog', on_delete=models.DO_NOTHING, null=True, blank=True, verbose_name='博客',
                             help_text='该分类属于哪个博客页面')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = '分类'


# 评论表
class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo', on_delete=models.DO_NOTHING, verbose_name='用户', help_text='该评论来自哪个用户')
    article = models.ForeignKey(to='Article', on_delete=models.CASCADE, null=True, verbose_name='文章',
                                help_text='评论的对象是哪篇文章')
    content = models.CharField(max_length=256, verbose_name='内容', help_text='评论的内容')
    comment_time = models.DateTimeField(auto_now_add=True, verbose_name='时间', help_text='评论的时间')
    comment_id = models.ForeignKey(to='self', on_delete=models.CASCADE, null=True, verbose_name='评论id',
                                   help_text='对哪个id的评论进行评论')

    def __str__(self):
        return self.content

    class Meta:
        verbose_name_plural = '评论'


# 点赞点踩
class UpAndDown(models.Model):
    user = models.ForeignKey(to='UserInfo', on_delete=models.CASCADE, verbose_name='用户', help_text='来自哪个用户')
    article = models.ForeignKey(to='Article', on_delete=models.CASCADE, null=True, verbose_name='文章',
                                help_text='针对哪篇文章')
    is_up = models.BooleanField(null=True, verbose_name='点赞点踩', help_text='True为点赞,False为点踩')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', help_text='点赞点踩的时间')

    def __str__(self):
        return self.user

    class Meta:
        verbose_name_plural = '点赞点踩'


# 标签、文章关联表
class Tag2Article(models.Model):
    tag = models.ForeignKey(to='Tag', on_delete=models.SET_DEFAULT, default='', verbose_name='标签', help_text='关联的标签')
    article = models.ForeignKey(to='Article', on_delete=models.CASCADE, default='', verbose_name='文章',
                                help_text='关联的文章')

    class Meta:
        verbose_name_plural = '标签关联文章'


# 轮播图表
class Swiper(models.Model):
    image = models.FileField(upload_to='swiper_img/', default='swiper_img/default.jpg', verbose_name='图片',
                             help_text='轮播图的图片')
    title = models.CharField(max_length=32, verbose_name='标题', help_text='图片的标题')
    img_url = models.CharField(max_length=64, verbose_name='URL', help_text='点击图片要跳转的URL地址')

    def __str__(self):
        return self.img_url

    class Meta:
        verbose_name_plural = '轮播图'

django2表设计

from django.db import models

"""
先写普通字段
之后再写外键字段
"""
from django.contrib.auth.models import AbstractUser


# auth_user的扩展表(用户表)
class UserInfo(AbstractUser):
    phone = models.BigIntegerField(verbose_name='手机号', null=True)
    # 头像
    avatar = models.FileField(upload_to='avatar/', default='avatar/default.png', verbose_name='用户头像')
    """
    给avatar字段传文件对象 该文件会自动存储到avatar文件下 然后avatar字段只保存文件路径avatar/default.png
    """
    create_time = models.DateField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog', null=True, on_delete=models.CASCADE)


# 博客表
class Blog(models.Model):
    site_name = models.CharField(verbose_name='站点名称', max_length=32)
    site_title = models.CharField(verbose_name='站点标题', max_length=32)
    # 简单模拟 带你认识样式内部原理的操作
    site_theme = models.CharField(verbose_name='站点样式', max_length=64)  # 存css/js的文件路径


# 分类表
class Category(models.Model):
    name = models.CharField(verbose_name='文章分类', max_length=32)
    blog = models.ForeignKey(to='Blog', null=True, on_delete=models.CASCADE)


# 标签表
class Tag(models.Model):
    name = models.CharField(verbose_name='文章标签', max_length=32)
    blog = models.ForeignKey(to='Blog', null=True, on_delete=models.CASCADE)


# 文章表
class Article(models.Model):
    title = models.CharField(verbose_name='文章标题', max_length=64)
    desc = models.CharField(verbose_name='文章简介', max_length=255)
    # 文章内容有很多 一般情况下都是使用TextField
    content = models.TextField(verbose_name='文章内容')
    create_time = models.DateField(auto_now_add=True)

    # 数据库字段设计优化
    up_num = models.IntegerField(verbose_name='点赞数', default=0)
    down_num = models.IntegerField(verbose_name='点踩数', default=0)
    comment_num = models.IntegerField(verbose_name='评论数', default=0)

    # 外键字段
    blog = models.ForeignKey(to='Blog', null=True, on_delete=models.CASCADE)
    category = models.ForeignKey(to='Category', null=True, on_delete=models.CASCADE)
    tags = models.ManyToManyField(to='Tag',
                                  through='Article2Tag',
                                  through_fields=('article', 'tag')
                                  )


# 半自动创建第三章表(文章、标签关联表)
class Article2Tag(models.Model):
    article = models.ForeignKey(to='Article', on_delete=models.CASCADE)
    tag = models.ForeignKey(to='Tag', on_delete=models.CASCADE)


# 点赞点彩
class UpAndDown(models.Model):
    user = models.ForeignKey(to='UserInfo', on_delete=models.CASCADE)
    article = models.ForeignKey(to='Article', on_delete=models.CASCADE)
    is_up = models.BooleanField()  # 传布尔值 存0/1


# 评论表
class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo', null=True, on_delete=models.CASCADE)
    article = models.ForeignKey(to='Article', null=True, on_delete=models.CASCADE)
    content = models.CharField(verbose_name='评论内容', max_length=255)
    comment_time = models.DateTimeField(verbose_name='评论时间', auto_now_add=True)
    # 自关联
    parent = models.ForeignKey(to='self', null=True, on_delete=models.CASCADE)  # 有些评论就是根评论

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

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

相关文章

jeecg-boot批量导入问题注意事项

现象: 由于批量导入数据速度很快, 因为数据库中的create time字段的时间可能一样,并且jeecg框架自带的是根据生成时间排序, 因此在前端翻页查询的时候,数据每次排序可能会不一样, 会出现第一页已经出现过一…

Qt读写Excel--QXlsx编译为静态库2

1、概述🥔 在使用QXlsx时由于源码文件比较多,如果直接加载进项目里面,会增加每次编译的时间; 直接将源码加载进项目工程中,会导致项目文件非常多,结构变得更加臃肿; 所以在本文中将会将QXlsx编译…

三维可视化平台有哪些?Sovit3D可视化平台怎么样?

随着社会经济的发展和数字技术的进步,互联网行业发展迅速。为了适应新时代社会发展的需要,大数据在这个社会经济发展过程中随着技术的进步而显得尤为重要。同时,大数据技术的快速发展进程也推动了可视化技术的飞速发展,国内外各类…

vue中封装自动计算比例滑块

此插件为另一位漂亮的前端同事小姐姐封装,觉得非常好用于是决定记载下来,便于复用 如图需要动态传入需要分配权重的数组,平均分配可以自动将100%平均分给数组中的值 如果手动拖拽,则会自动计算可拖动最大区域,便于最终总权重必定为100% <el-alert class"merge-alert&…

【深度学习 | 梯度那些事】 梯度爆炸或消失导致的模型收敛困难?挑战与解决方案一览, 确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

minio 分布式文件系统主从复制

1. 在slave节点下载mc客户端工具 下载 2. 移动或复制mc文件到/usr/local/bin/文件夹 mv mc /usr/local/bin 3. 赋值权限给 mc 文件 chmod x mc 4. 查看mc客户端版本,看是否可用 #控制台显示返回信息用下面这条 mc --version #控制台显示无返回信息用下面这条 mc --versi…

LeetCode ACM模式——二叉树篇(一)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 定义二叉树 创建二叉树 利用前序遍历创建二叉树 利用数组创建二叉树 打印二叉树 144. 二叉树的前序遍历 递归遍历 迭代遍历&#xff08;利用栈&#xff09; 145. 二…

移动端预览指定链接的pdf文件流

场景 直接展示外部系统返回的获取文件流时出现了跨域问题&#xff1a; 解决办法 1. 外部系统返回的请求头中调整&#xff08;但是其他系统不会给你改的&#xff09; 2. 我们系统后台获取文件流并转为新的文件流提供给前端 /** 获取传入url文件流 */ GetMapping("/get…

43 | 抖音大V人民日报粉丝数分析

背景介绍 抖音是一个面向全年龄的音乐短视频社区平台,如今已成为最火的短视频软件,无数短视频创作者通过抖音分享生活,分享技能,分享美好。其中有点赞、评论、转发、关注等功能。 我们试图分析“大 V”即粉丝数量相对较多的博主的涨粉数量和点赞、评论、转发之间的关系,…

uniapp的逆地理编码 和地理编码

1.先打开高德地图api找到那个 地理编码 2.封装好我们的请求 3.逆地理编码 和地理编码 都是固定的 记住自己封装的请求 就可以了 这个 是固定的 方式 下面这个是固定的 可以复制过去 getlocation就是uniapp提供的 获取经纬度 然后 下面的 就是高德地图提供的 方法 要想使用我…

git Authentication failed

情况是这样的&#xff0c;之前看代码只是clone了一份&#xff0c;但随着分支越来越多&#xff0c;有时候切换分支时必须先把修改的代码 stash 一下&#xff0c;觉得很麻烦&#xff0c;于是又clone了一份代码。然后pull代码是正常的&#xff0c;当push 代码的时候&#xff0c;去…

Python深度学习“四大名著”之一全新PyTorch版 | 送书活动

目录 前言一、序二、内容简介三、作者简介四、福利(本次活动赠书2-5本&#xff0c;根据阅读量&#xff0c;评论区抽取小伙伴送书)总结 前言 近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互…

Java多线程编程:实现并发处理的高效利器

Java多线程编程&#xff1a;实现并发处理的高效利器 作者&#xff1a;Stevedash 发表于&#xff1a;2023年8月13日 20点45分 来源&#xff1a;Java 多线程编程 | 菜鸟教程 (runoob.com) ​ 在计算机领域&#xff0c;多线程编程是一项重要的技术&#xff0c;可以使程序同时执…

Linux 性能分析之iostat命令详解

Linux 性能分析之iostat命令详解 iostat命令是IO性能分析的常用工具&#xff0c;其是input/output statistics的缩写。本文将着重于下面几个方面介绍iostat命令&#xff1a; iostat的安装iostat命令行选项说明iostat输出内容分析如何确定磁盘IO的瓶颈iostat实际案例 命令的安…

【先进PID控制算法(ADRC,TD,ESO)加入永磁同步电机发电控制仿真模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux 介绍

Linux一切皆文件&#xff1a;文件就 读、写、权限 学习方式&#xff1a; 1、认识Linux 2、基本的命令&#xff08;重点&#xff1a;git讲了一些基本的命令【文件操作、目录管理、文件属性、Vim编辑器、账号管理、磁盘管理…】&#xff09; 3、软件的安装和部署&#xff01;&am…

MongoDB 简介

什么是MongoDB ? MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个…

kubernetes二进制部署2之 CNI 网络组件部署

CNI 网络组件部署 一&#xff1a;K8S提供三大接口1容器运行时接口CRI2云原生网络接口CNI3云原生存储接口CSI 部署 flannelK8S 中 Pod 网络通信&#xff1a;Overlay Network&#xff1a;VXLAN&#xff1a;Flannel:Flannel udp 模式的工作原理&#xff1a;ETCD 之 Flannel 提供说…

Springboot 实践(2)MyEclipse2019创建项目修改pom文件,加载springboot 及swagger-ui jar包

MyEclipse2019创建工程之后&#xff0c;需要添加Springboot启动函数、添加application.yml配置文件、修改pom文件添加项目使用的jar包。 添加Springboot启动函数 创建文件存储路径 &#xff08;1&#xff09;右键单击“src/main/java”文件夹&#xff0c;弹出对话框输入路径…

电压放大器和电荷放大器区别是什么意思

电压放大器和电荷放大器是两种常见的信号放大器。它们的区别主要在于其输入端口所呈现的电路特性不同。 电压放大器的介绍 电压放大器是一种将输入信号的电压增益放大的电路元件&#xff0c;其输入端口呈现高阻抗特性。即在输入端口上&#xff0c;电压放大器所对应的电路模型中…