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

基于SpringBoot的公益慈善平台

一、项目背景介绍:

基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展,公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上,主要有管理员、捐赠者和志愿者三种角色,他们各自拥有不同的权限和功能。

管理员作为平台的运营者,主要负责管理整个平台的运行情况,包括用户信息管理、项目管理等。而捐赠者则是为公益事业做出贡献的人,他们可以浏览平台上的各种公益项目,并选择自己感兴趣的项目进行捐赠。此外,他们还可以在平台上查看自己的捐赠记录和捐赠的项目进展情况。

志愿者是公益事业的重要推动力,他们在平台上可以找到自己感兴趣的志愿者活动,并进行报名参与。同时,他们也可以在平台上查看自己的志愿服务记录和参与的活动信息。

在技术实现上,该平台采用了SpringBoot整合Mybatis、Redis等主流开发技术,以提供高效、稳定的服务。此外,还整合了支付宝支付、websocket聊天室等功能,为用户提供更便捷的操作体验。

二、项目技术简介:
  1. JAVA:Java是一门 面向对象编程语言 ,不仅 吸收了C++语言的各种优点 ,还摒弃了C++里难以理解的 多继承、指针 等概念,因此Java语言具有 功能强大和简单易用 两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 简化 新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  3. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  4. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  5. Bootstrap:Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
  6. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。 超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

四、数据库设计:

1:article(article)

字段名

类型

默认值

列注释

id

int

NULL

文章ID

user_id

int

NULL

作者用户ID

title

varchar

NULL

文章标题

content

longtext

NULL

文章正文

status

int

NULL

文章状态:发布(1),回收站(2)

read_count

int

NULL

阅读量

img

varchar

NULL

封面图片

type

int

NULL

类型:文章由普通用户发布(1),活动由管理员发表(2)

is_checked

int

NULL

文章审核,0:未审核,1:审核通过,2:审核不通过

info

varchar

NULL

审核未通过返回的消息

gmt_create

datetime

NULL

数据插入时间,即发布时间

gmt_modified

datetime

NULL

更新时间

2:article_activity(article_activity)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

article_id

int

NULL

文章的ID

activity_article_id

int

NULL

活动文章的ID

gmt_create

datetime

NULL

插入数据的时间

gmt_modified

datetime

NULL

更新的时间

3:certification(certification)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

user_id

int

NULL

用户ID

name

varchar

NULL

机构名称

leader_name

varchar

NULL

领导者姓名

id_card

varchar

NULL

领导者身份证号码

type

varchar

NULL

机构类型

show_name

varchar

NULL

认证称号(XXX官方账户)

prove_img

varchar

NULL

单位证明/营业执照图片地址

id_card_img0

varchar

NULL

领导者身份证照片(反面)

id_card_img1

varchar

NULL

领导者身份证照片(正面)

is_checked

int

NULL

审核(0),成功(1),失败(2)

info

varchar

NULL

认证未通过返回的消息

gmt_create

datetime

NULL

插入数据的时间

gmt_modified

datetime

NULL

更新的时间

4:comment(comment)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

user_id

int

NULL

发表评论用户的ID

user_name

varchar

NULL

用户名

img

varchar

NULL

用户头像地址

target_id

int

NULL

目标ID:可以是项目ID 、文章ID

type

int

NULL

类型:项目(1),文章(2)

content

varchar

NULL

评论内容

reply_id

int

NULL

回复评论的ID

is_first

int

NULL

是否置顶:置顶(1),不置顶(0)

gmt_create

datetime

NULL

插入数据的时间,即发表评论的时间

gmt_modified

datetime

NULL

更新的时间

5:feedback(feedback)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

user_id

int

NULL

反馈的用户的ID

user_name

varchar

NULL

用户名

img

varchar

NULL

用户头像地址

content

varchar

NULL

评论内容

gmt_create

datetime

NULL

插入数据的时间,即发表评论的时间

gmt_modified

datetime

NULL

更新的时间

6:link(link)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

name

varchar

NULL

名称

target_url

varchar

NULL

链接地址

type

int

NULL

类型:顶部菜单(1),友情链接(2)

gmt_create

datetime

NULL

插入数据的时间

gmt_modified

datetime

NULL

更新的时间

7:message(message)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

receive_user_id

int

NULL

接收消息的用户ID

sent_user_id

int

NULL

发送消息的用户ID

type

int

NULL

类型:项目评论(1)/文章评论(2)/审核 (3)

target_id

int

NULL

目标ID:公益项目/文章ID

title

varchar

NULL

标题

content

varchar

NULL

消息的内容

is_read

int

NULL

是否已读:未读(0),已读(1)

gmt_create

datetime

NULL

插入数据的时间,即发表评论的时间

gmt_modified

datetime

NULL

更新的时间

sent_user_img

varchar

NULL

发送消息的用户头像

8:message_board(message_board)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

name

varchar

NULL

昵称

email

varchar

NULL

邮件地址

content

varchar

NULL

留言内容

gmt_create

datetime

NULL

插入数据的时间

gmt_modified

datetime

NULL

更新的时间

9:project(project)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

name

varchar

NULL

名称

background

varchar

NULL

背景

target

varchar

NULL

目的

theme

varchar

NULL

主题

sponsor

varchar

NULL

赞助

content

longtext

NULL

内容

img

varchar

NULL

公益项目的封面

gmt_create

datetime

NULL

插入数据的时间

gmt_modified

datetime

NULL

更新的时间

10:user(user)

字段名

类型

默认值

列注释

id

int

NULL

主键ID

name

varchar

NULL

姓名

password

varchar

NULL

密码

email

varchar

NULL

邮箱地址

phone

char

NULL

手机号码

address

varchar

NULL

地址

sex

int

NULL

性别:女(0)男(1)

birthday

date

NULL

出生年月

career

varchar

NULL

职业

certification_id

int

NULL

认证类型ID

img

varchar

NULL

头像地址

status

int

NULL

状态:正常(0),封禁(1)

gmt_create

datetime

NULL

注册时间

gmt_modified

datetime

NULL

最近更新

role

int

NULL

角色:普通用户(0)管理员(1)

五、功能模块:
  1. 系统主页:浏览系统主页、留言、浏览公益项目、浏览平台活动、浏览求助文章,每次浏览都会累积访问量

  1. 用户登录注册:填写用户信息进行账号注册(邮箱验证码)、使用邮箱密码进行登录、忘记密码(邮箱验证码并重置)、退出登录

  1. 公益项目:包括项目标题、内容(Markdown)、封面、背景、主题、目的、赞助

  1. 平台活动:

  1. 留言:

  1. 普通用户后台:| 仪表盘 | 数据统计、最新活动、最新求助文章 | | ---------- | ------------------------------------------------------------ | | 求助文章 | 标题、编写求助文章(Markdown编辑器)、上传封面、关联平台活动、文章搜索、重新编辑 | | 审核队列 | 等待审核、已审核 | | 文章回收站 | 删除文章后自动加入回收站,可再次删除、移出回收站 | | 评论管理 | 置顶评论、删除评论、查询详情 | | 通知消息 | 查看消息、全部已读 |

  1. 管理员用户管理:

  1. 管理员公益项目发布:

  1. 管理员认证审核:

管理员评论管理:

六、代码示例:
 /*** 发布求助文章*/@PostMapping("/publishArticle")@ResponseBodypublic String publishArticle(String title, String content, String imgPath, Integer activityId) {// 生成文章对象Article article = Article.builder().title(title).content(content).userId(loginUser.getId()).type(TypeStatus.ARTICLE).readCount(0).status(TrashStatus.NOT_IN).isChecked(CheckStatus.WAIT).gmtCreate(new Date()).gmtModified(new Date()).build();// 为文章设置封面,如果为空就生成随机封面article.setImg(StringUtils.isEmpty(imgPath) ? OssUtils.getRandomFace() : imgPath);if (articleService.insert(article)) {if (activityId != -1) {articleService.insertArticleActivity(article.getId(), activityId);logger.info("【成功】:添加文章活动");}result.setCode(200);logger.info("【成功】:添加文章");} else {result.setCode(500);logger.info("【失败】:添加文章");}return JSONObject.toJSONString(result);}/*** 更新文章*/@PostMapping("/updateArticle")@ResponseBodypublic String updateArticle(Integer id, String title, String content, String imgPath, int activityId) {// 生成文章对象Article article = Article.builder().id(id).title(title).content(content).status(TrashStatus.NOT_IN).isChecked(CheckStatus.WAIT).gmtModified(new Date()).build();// 为文章设置封面,如果为空就生成随机封面article.setImg(StringUtils.isEmpty(imgPath) ? OssUtils.getRandomFace() : imgPath);if (articleService.update(article)) {if (activityId != -1) {// 获取原来参加的活动Article activity = articleService.getActivityByArticleId(id);if (activity == null || activity.getId() != activityId) {// 删除参与的活动articleService.deleteArticleActivity(id);// 添加新的活动articleService.insertArticleActivity(article.getId(), activityId);logger.info("【成功】:更新文章活动");}}result.setCode(200);logger.info("【成功】:更新文章");} else {result.setCode(500);logger.info("【失败】:更新文章");}return JSONObject.toJSONString(result);}/*** 将文章移到回收站*/@GetMapping("/putIntoTrash")public String putIntoTrash(@RequestParam("id") Integer id, @RequestParam("checked") Integer checked) {// 获取文章Article article = articleService.getById(id);if (article.getType() == TypeStatus.ACTIVITY) {logger.info("【失败】:将文章移到回收站,类型错误");return "error/400";}if (article.getUserId() != loginUser.getId()) {logger.info("【失败】:将文章移到回收站,无权限");return "error/401";}article.setStatus(TrashStatus.IS_IN);if (articleService.update(article)) {logger.info("【成功】:将文字移到回收站");} else {logger.info("【失败】:将文字移到回收站");}return "redirect:/my-articles?checked=" + checked;}

七、项目总结:

之前在教材内容读书过程中开发设计技术专业知识,对研究过程的认知,对开发设计设计课程学习,及其如何有效开展系统的市场分析和设计。老师还选了更具有标志性管理方案系统来解读教学过程,课下安排工作使们进行练习。在这段时间,老师还应当掌握系统地完成和测试。应对餐厅点餐管理系统的开发,的脑海里的确有一个清晰的认知。在系统制做及配套文本文件撰写中,按照软件开发流程一步步做好本职工作。

从系统的角度看,依据餐厅点餐管理系统生产,其艰难在于功能清楚、系统构造设计、设计使用性能数据库系统、挑选核心技术进行系统功能等,这种都是自己的难题。针对这一艰难,实行了一些防范措施。当也不知道系统的功能时,在网上找到很多相似的系统,做好记录了一些系统的一般功能,并用了这一系统的高效功能的一部分。除此之外,在在网络上得到了很多关于系统设计的前提知识,包含系统模块划分、设计规范、数据库表的设计和创建,及其程序流程编码的专业技能知识,包含撰写与使用数据和信息加上、删掉和变更编码控制器。在系统序号进行相关功能后,认真的试了系统中所有功能,最后发现自己研发的系统符合规定,能接受。系统功能与系统剖析设计高度一致,系统质量稳定。为应对客户的实际操作不正确,还设有不恰当反馈机制,系统性能稳定。唯一的最大的缺点是系统数据报表的设计不健全,字段名称相匹配的引用类型不正确,一部分系统编码很多地方并没有注解,编码不足简易。

从文本文件的角度看,依据基于SpringBoot的公益慈善平台生产后,应叙述生产过程的需求,包含怎样进行数据分析报告、怎样进行系统设计及其系统功能的具体运作实际效果。在这期间,用了接近一个月的时间来做。要实现院校标准化的文档排版标准,多次在老师的建议下学习办公软件使用和排版设计设计。坚持就是收益。经过长时间的的撰写和优化,的文档终于完成。

总而言之,尽管制做经历了太多阶段,但如果认真完成这件事情,们将在每一个环节得到许多知识,在每一个环节的操作过程中锻练们自己的实践技能。根据该项目的制做,开始明白,许多知识不但来源于书籍,来源于教师在课堂教学中讲的知识,还来源于各种网络学习平台和社会实践。到现在为止,将继续努力,维持新知识的深入学习习惯性

八、源码获取:

 此源码非开源,若需要此源码可扫码添加微信进行咨询!

相关文章:

基于SpringBoot的公益慈善平台

一、项目背景介绍: 基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展,公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上,主要有管理员、捐赠者和志愿者三种角色&…...

Python网络爬虫(一):HTML/CSS/JavaScript介绍

1 HTML语言 1.1 HTML简介 HTML指的是超文本标记语言:HyperText Markup Language,它不是一门编程语言,而是一种标记语言,即一套标记标签。HTML是纯文本类型的语言,使用HTML编写的网页文件也是标准的文本文件,可以使用任意的文本编辑器例如记事本打开HTML文件,查看并修改H…...

机器学习每周挑战——旅游景点数据分析

数据的截图,数据的说明: # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…...

开发语言漫谈-C语言

个人认为C语言是最伟大的开发语言(没有之一)。C语言开创了高级语言的新时代。比C更低级的是汇编语言,这个东西就是反人类的玩意。之后的语言或多或少都受C语言的影响。更神奇的是直到现在,C语言还有生命力。C语言的发明人丹尼斯里…...

vue3导入excel并解析excel数据渲染到表格中,纯前端实现。

需求 用户将已有的excel上传到系统,并将excel数据同步到页面的表格中进行二次编辑,由于excel数据不是最终数据,只是批量的一个初始模板,后端不需要存储,所以该功能由前端独立完成。 吐槽 系统中文件上传下载预览三部…...

Java常用API之Encoders类解读

写在开头:本文用于作者学习Java常用API 我将官方文档中Encoders类中所有API全测了一遍并打印了结果,日拱一卒,常看常新 在Spark中,Encoders类提供了一些静态方法用于创建不同数据类型的编码器。 首先,我遇到这样一个…...

java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码

java中大型医院HIS系统源码 AngularNginxSpringBoot云HIS运维平台源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工…...

windows部署Jenkins并远程部署tomcat

目录 1、Jenkins官网下载Jenkins 2、安装Jenkins 3、修改Home directory 4、插件安装及系统配置 5、Tomcat安装及配置 5.1、修改配置文件,屏蔽以下代码 5.2、新增登录用户 5.3、编码格式修改 5.4、启动tomcat 6、Jenkins远程部署war包 6.1、General配置 6.2、Sourc…...

设计模式|责任链模式(Chain of Responsibility Pattern)

文章目录 结构优点缺点使用责任链的步骤示例有哪些知名框架采用了责任链模式责任链模式和链表有什么关联常见面试题 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你创建一个对象链。请求将沿着这个链传递&#xff…...

文件服务器之二:SAMBA服务器

文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA 下图来自百度百科 SAMBA的发展历史与名称的由来 Samba是一款开源的文件共享软件,它基于SMB(Server Messa…...

20.安全性测试与评估

每年都会涉及;可能会考大题;多记!!! 典型考点:sql注入、xss; 从2个方面记: 1、测试对象的功能、性能; 2、相关设备的工作原理; 如防火墙,要了解防…...

阿里巴巴实习面经

本人bg:浙江大学,计算机研二,本科也是浙大计算机专业的。 在阿里巴巴达摩院实习,算法岗,我是去年拿到的阿里巴巴达摩院的实习offer,这个过程还是比较惊心动魄,所以我称之为惊心动魄版本&#xf…...

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范,就是接口 监听器的作用是,监听某种变化(一般就是对…...

教你快速认识Java中的抽象类和接口

目录 引言 抽象类(Abstract Class) 抽象类的概念 抽象类的图标 抽象类的语法 抽象类的特点 接口(Interface) 接口的概念 接口的图标 接口的语法 接口的特点 接口的使用 接口的意义 抽象类与接口的区别 Object类 结…...

Linux第5课 Linux目录介绍

文章目录 Linux第5课 Linux目录介绍一、打开系统目录二、查看系统目录 Linux第5课 Linux目录介绍 系统目录就是指操作系统的主要文件存放的目录,目录中的文件直接影响到系统是否正常工作,了解这些目录的功能,对使用系统会有很大的帮助。 一…...

GitHub要求2FA?不慌,有它(神锁离线版)帮你!

GitHub宣布,到 2023 年底,所有用户都必须要启用双因素身份验证 (2FA),不能只用密码啦。 说实话,听到这消息小编是非常高兴的。 正如GitHub的首席安全官Mike Hanley所说,软件供应链是从开发者开始的,保护开…...

C语言第四十弹---预处理(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 预处理 1、#和## 1.1 #运算符 1.2、##运算符 2、命名约定 3、#undef 4、命令行定义 5、条件编译 6、头文件的包含 6.1、头文件被包含的方式 6.1.1、本地…...

SYS-2722音频分析仪SYS2722

181/2461/8938产品概述: Audio Precision 2722 音频分析仪是 Audio Precision 屡获殊荣的 PC 控制音频分析仪的旗舰型号,长期以来一直是音频设备设计和测试的全球公认标准。功能齐全的 SYS-2722 提供了测试转换器技术最新进展所需的无与伦比的失真和噪声…...

下载页面上的视频

引言:有些页面上的视频可以直接右键另存为或者F12检索元素找到视频地址打开后保存,但有些视频页面是转码后的视频,不能直接另存为视频格式,可以参考下本方法 以该页面视频为例:加载中...点击查看详情https://wx.vzan.c…...

静态路由协议实验综合实验

需求: 1、除R5的换回地址已固定外,整个其他所有的网段基于192.168.1.0/24进行合理的IP地址划分。 2、R1-R4每台路由器存在两个环回接口,用于模拟连接PC的网段;地址也在192.168.1.0/24这个网络范围内。 3、R1-R4上不能直接编写到…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...