自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 【Linux】 centos7安装卸载SQL server(2017、2019)

SQL Server 默认的数据文件存储在 /var/opt/mssql 目录下。SQL Server 的配置文件位于 /etc/opt/mssql 目录下。SQL Server 的日志文件位于 /var/log/mssql 目录下。选择安装版本及相关配置,一般选择第二个版本。进入,需要进入一下目录才能进行操作。的系统(数据库小于2GB安装不了)我们需要把我们安装的的原始下载。根据提示进行后面的操作即可。加载插件的时候我们都选择。我们需要进行网络的连接。开放端口后即可进行连接。

2024-03-25 16:22:19 731 2

原创 【RabbitMQ】死信(延迟队列)的使用

持久化exchange要持久化queue要持久化message要持久化消息确认启动消费返回(@ReturnList注解,生产者就可以知道哪些消息没有发出去)生产者和Server(broker)之间的消息确认消费者和Server(broker)之间的消息确认。

2024-01-25 15:16:30 1677 1

原创 【RabbitMQ】交换机的概念及使用

RabbitMQ中,交换机是一个核心概念,主要用来将生产者生产出来的消息,传送到对应的队列中。实际上,生产者生产的消息从不会直接发送到队列,而是发送到交换机。交换机一方面接收来自生产者的消息,另一方面将这些消息推入队列。

2024-01-24 10:39:02 1575 1

原创 【RabbitMQ】快速入门及基本使用

RabbitMQ是一个开源的消息队列系统,使用Erlang语言开发,基于AMQP(高级消息队列协议)实现。它最初起源于金融系统,用于在分布式系统中存储和转发消息。RabbitMQ的主要特性包括易用性、扩展性、高可用性以及可靠性。消息队列(MQ)是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息来通信,而无需专用连接来链接它们。在事件驱动(发布-订阅)架构中,RabbitMQ扮演着Broker的角色。:接收客户端连接,实现AMQP协议的消息队列和路由功能的进程.

2024-01-19 20:33:12 1471 2

原创 【Docker】Nacos的单机部署及集群部署

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

2024-01-18 23:28:01 1601 3

原创 【Docker】使用Docker安装Nginx及部署前后端分离项目应用

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。它是由为俄罗斯访问量第二的Rambler.ru站点开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。Nginx的特点是,事实上nginx的并发能力在同类型的网页服务器中表现较好。它可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等,。

2024-01-18 12:05:15 1309 4

原创 【Docker】网络配置及自定义网络的使用

Docker的网络配置主要是指Docker容器与外部网络之间的连接设置,包括容器内部的IP地址、端口号等。Docker提供了多种网络模式,包括bridge、host、none等,以满足不同的需求。默认情况下,Docker使用bridge模式,即创建一个虚拟网桥,将容器连接到该网桥上,并自动分配IP地址。此外,Docker还支持自定义网络模式,允许用户自定义容器的网络配置。在进行Docker网络配置时,需要注意宿主机IP路由转发功能的开启,否则容器可能无法联网。

2024-01-17 10:36:29 1875 10

原创 【Docker】Docker镜像结构及自定义镜像,镜像上传仓库使用

首先进入虚拟机并且用MobaXterm这个工具连接,进入后先查看docker的服务/进程有没有开:输入命令:systemctl status docker (查看docker的服务/进程)以下是没有开启状态:以下是开启状态:创建一个文件夹,来存放创建后的镜像,并且创建并编写Dockerfile文件。创建文件夹:mkdir soft (名称soft,可以自己修改)进入文件夹:cd soft/创建并编辑Dockerfile文件:vim Dockerfile (文件名称不用改)

2024-01-15 15:00:33 1115 4

原创 【Docker】数据管理之数据卷的挂载

为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合 文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。使用数据卷时,最好通过创建和挂载数据卷来启动容器,而不是在创建或启动容器后再进行挂载,因为这样做比较麻烦,需要修改很多配置文件。

2024-01-12 20:00:07 1387 2

原创 【Docker】快速入门之Docker的安装及使用

Docker是一个开源的应用容器引擎,它让开发者可以将他们的应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker的优点包括简化流程、避免选择恐惧症和节省开支。使用Docker可以更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。Docker的架构包括Docker daemon(Docker守护进程),这是一个运行在宿主机(DOCKER-HOST)的后台进程。

2024-01-11 19:58:27 1284 3

原创 【SpringSecurity】之授权的使用案例

基于角色的授权:以用户所属角色为基础进行授权,如管理员、普通用户等,通过为用户分配角色来控制其对资源的访问权限。基于资源的授权:以资源为基础进行授权,如 URL、方法等,通过定义资源所需的权限,来控制对该资源的访问权限。Spring Security 提供了多种实现授权的机制,最常用的是使用基于注解的方式,建立起访问资源和权限之间的映射关系。其中最常用的两个注解是@Secured和。@Secured注解是更早的注解,基于角色的授权比较适用,基于SpEL。

2023-12-28 21:44:14 2192 16

原创 【Spring Security】认证之案例的使用、MD5加密、CSRF防御

创建自定义MD5加密类并实现@Override//对密码进行 md5 加密@Override// 通过md5校验修改@Bean// 自定义MD5加密方式:数据库中的用户密码也需要更换成对应自定义MD5//MD5自定义加密方式:最后,将生成的MD5加密密码保存到数据库表中。CSRF跨站请求伪造)是一种利用用户已登录的身份在用户不知情的情况下发送恶意请求的攻击方式。

2023-12-28 15:11:17 1615 10

原创 【Spring Security】快速入门之案例实操

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能。Spring Security为基于J2EE企业应用软件提供了全面安全服务,包括认证、授权、加密和会话管理等。它对Web安全性的支持大量地依赖于Servlet过滤器。Spring Security采用“安全层”的概念,使每一层都尽可能安全,连续的安全层可以达到全面的防护。

2023-12-28 10:28:56 1368 7

原创 【Swagger】常用注解的使用、SpringBoot的整合及生产环境下屏蔽Swagger

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。它使得部署管理和使用功能强大的API从未如此简单。Swagger让文件的方法、参数和模型紧密集成到服务器端的代码,允许API始终保持同步。2、常用注解有哪些?在软件开发中,常用注解(Annotation)主要用在Java中,并且用于对代码进行标记和说明。下面列举了一些常见的Java注解:与模型相关的注解@ApiModel:用于模型类上,对模型类做注释。

2023-12-27 18:37:24 1663 15

原创 【MyBatis-Plus】内置接口的使用之CRUD

相信很多人刚刚开始会有些内置的方法怎么使用的?现在这里就简单的说一下Service接口和Mapper接口的CRUD的方法使用。

2023-12-27 17:40:24 1308 9

原创 【MyBatis-Plus】进阶之乐观锁、悲观锁&逻辑删除&分页和查询构造器的使用

加锁时间不同:乐观锁在读取数据时不会对其加锁,而是在写入时进行比较和加锁操作;悲观锁在读取数据时就会对其加锁。冲突处理方式不同:乐观锁会在写入时进行比较和冲突检测,如果版本号不一致则操作失败,需要重新读取数据;悲观锁则会阻塞其他进程对该数据的访问,直到当前进程完成操作并解锁。适用场景不同:乐观锁适用于并发量比较小、数据量比较大、操作更多为读取的场景;悲观锁适用于并发量比较大、数据量比较小、操作更多为写入的场景。逻辑删除是指文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符。

2023-12-27 17:08:12 1740 9

原创 【Java、Python】获取电脑当前网络IP进行位置获取(附源码)

我相信看到这篇博客的时候心里肯定是想解决自己的一个问题的,而这篇博客我就以简单快速的方式解决这些烦恼!根据你当前的网络IP获取一个位置的信息

2023-12-25 16:40:57 3512 13

原创 【OAuth】快速入门

客户端向资源所有者请求授权。授权请求可以直接向资源所有者发起,或者通过作为中介的授权服务器间接发起。客户端收到授权许可,这是一个代表资源所有者的授权的凭据,使用本规范中定义的四种许可类型之一或者使用扩展许可类型表示。客户端与授权服务器进行身份认证并出示授权许可请求访问令牌。授权服务器验证客户端身份并验证授权许可,若有效则颁发访问令牌。客户端从资源服务器请求受保护资源并出示访问令牌进行身份验证。资源服务器验证访问令牌,若有效则满足该请求。

2023-12-24 20:43:27 1413 14

原创 【MyBatis-Puls】入门快速搭建及案例、主键自动生成、自动填充的使用

(简称 MP)是一个的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了一些常用功能的增强,使得开发者可以更加便捷地进行数据库访问操作。我们的愿景是成为MyBatis最好的搭档,就像中的1P2P,基友搭配,效率翻倍。

2023-12-16 11:04:52 1500 25

原创 【Spring Boot】Starter机制的使用及案例

一、引言一、引言1、什么是SpringBoot StarterSpringBoot中的starter是一种非常重要的机制(自动化配置),能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。

2023-12-15 17:26:58 1529 14

原创 【Spring Boot】视图渲染技术之Freemarker

FreeMarker是一款,基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML设计师)。模板编写为FTL。它是简单的,专用的语言,

2023-12-15 16:08:02 1083 9

原创 【Spring Boot】快速入门

Spring Boot是一个基于Java的开源框架,在这里编写怎么快速的搭建号spring boot和一些集成插件,打包运行等操作。

2023-12-12 17:12:10 1734 25

原创 【Java】若依后台管理系统带你走进解决繁琐的代码(代码生成及字典的使用)

ruoyi-admin:全局配置ruoyi-common:通用工具包ruoyi-framework:框架ruoyi-generator:代码生成模块ruoyi-quartz:任务调度模块ruoyi-system:业务开发模块ruoyi-ui:前端sql:数据库脚本。

2023-11-15 22:05:47 2076 32

原创 【python】面向对象(类型定义&魔法方法)

在编程中,类型是用于描述变量或数据结构的特征和行为的抽象概念。类型定义了变量或数据结构可以存储的数据的类型以及可以执行的操作。通过使用类型,程序员可以确保变量和数据结构中存储的数据是有效的,并且可以在编译时检测到潜在的错误。在许多编程语言中,类型可以分为静态类型和动态类型。静态类型在编译时进行类型检查,而动态类型则在运行时进行类型检查。静态类型定义了变量或数据结构在编译时必须具有的类型。这种类型通常在声明变量或数据结构时指定,并且不允许在运行时更改。

2023-11-14 19:29:03 749 20

原创 【Git】说说Git中开发测试的使用&Git分支&Git标签的使用场景

dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。pro(master)环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。

2023-11-11 17:12:40 2548 56

原创 【Git】Git的GUI图形化工具&ssh协议&IDEA集成Git

Git自带的GUI工具,主界面中各个按钮的意思基本与界面文字一致,与git的命令差别不大。在了解自己所做的操作情况下,各个功能点开看下就知道是怎么操作的。即使不了解,只要不做push操作,所有的操作都在本地,基本也没什么影响。

2023-11-10 20:31:57 1308 10

原创 【Git】快速入门安装及使用&git与svn的区别&常用命令

Git是一个分布式版本控制系统,用于管理和跟踪软件开发项目的源代码。它能够记录整个项目的历史更改,包括每个文件的修改、添加和删除,以及每次提交的作者和时间等信息。通过使用Git,团队成员可以协同工作并共享代码,并且能够轻松地撤销或回滚更改,解决合并冲突以及自动识别和处理代码更新。Git也提供了分支功能,使得开发者能够在独立的分支上开展工作,最后再将分支合并到主线上。这使得多人同时开发同一项目变得更加容易和安全。

2023-11-08 22:51:58 1104 22

原创 【Python】函数进阶(推导式、全局作用域、多参数解析、装饰器)

列表生成式是python内置的一种创建列表的方法,通过在内部执行一行for循环语句,将for循环所遍 历到的元素添加到列表中。由于编译后的字节码更少, 因此比普通的采用append方法生成列表要快很 多,不仅如此,使用列表生成式编写的代码更加简洁,通过添加if else 语句,列表生成式也能对列表里 的元素进行限制。在Python编程语言中,是一种简洁的语法结构,用于快速创建序列对象(列表、集合、字典等)。推导式可以将循环和条件判断融合到一行代码中,使代码更加简洁和易读。

2023-11-07 11:57:29 671 17

原创 【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案

注解表示方法的返回值可以被缓存,下次访问相同的方法时,会直接从缓存中获取结果,而不会再执行方法内部的逻辑。该注解标记在方法上,指定了缓存的名称(也可以使用默认的缓存名称),也可以通过参数指定缓存的Key。同时,可以设置特定的缓存时间,当资源或接口不可用时,返回缓存中的数据,实现熔断降级。配置在方法或类上,作用:本方法执行后,先去缓存看有没有数据,如果没有,从数据库中查找出来,给缓存中存一份,返回结果,注解常用于需要更新缓存中数据的场景,可以保证每次调用方法时都会执行方法内部的逻辑,并更新缓存的结果。

2023-11-06 22:10:32 1032 28

原创 【服务器】Java连接redis及使用Java操作redis、使用场景

Redis(Remote Dictionary Server)是一种开源的基于内存的高性能键值存储系统,它常用于以下几个应用场景,除了这几个主要应用场景外;Redis还可用于分布式锁、任务调度、延时队列等一些高级用途。总之,Redis因为其高效的内存操作和丰富的数据结构,非常适用于那些需要快速、可靠、实时的数据访问场景。缓存:Redis的主要应用场景之一是作为缓存层,将热点数据存储在内存中,提供高速的读写访问,并且可以通过设置过期时间自动失效,减轻数据库负载。用户会话管理:在一些需要跟踪用户登录状态

2023-11-03 18:52:34 3487 38

原创 【服务器】Redis的安装及使用命令(Linux、Windows版)

(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作。Redis支持多种数据结构,包括等,这些数据结构可以通过丰富的命令集进行操作。与传统数据库系统相比,Redis具有较高的性能和可扩展性。它将数据存储在内存中,因此可以实现很低的读写延迟,并能够处理高并发的请求。此外,Redis还支持数据的持久化,可以将内存中的数据定期保存到磁盘上,以防止数据丢失。Redis还具有一些其他的特性,如发布订阅机制、事务支持、键过期等。

2023-11-02 20:30:54 921 17

原创 【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

SPA(Single Page Application)是一种运行在单个页面上的 Web 应用程序,主要采用 JavaScript、Ajax 等技术动态加载页面内容,提供像桌面应用程序一样的用户体验。将前端 SPA 进行打包主要是为了加快页面的加载速度,减少资源请求次数,保证前端应用的快速响应。

2023-11-01 20:31:56 2592 30

原创 【Linux】Linux项目部署及更改访问端口号和jdk、tomcat、MySQL环境搭建的配置安装

工具的组合为开发者和系统管理员提供了构建和运行Java应用程序以及存储和管理数据的完整环境。:JDK是Java开发工具包,它提供了开发和运行Java应用程序所需的工具和库。通过安装JDK,您可以在Linux上编译、调试和运行Java程序。Tomcat:Tomcat是一个开源的Java Web应用服务器,用于部署和托管Java Web应用程序。通过安装Tomcat,您可以在Linux服务器上轻松地部署和管理Java Web应用,使其能够响应HTTP请求,并提供动态内容。MySQL。

2023-10-31 20:33:04 833 4

原创 【Linux】虚拟机安装Linux、客户端工具及Linux常用命令(详细教程)

是一个开源的操作系统内核,它最初由芬兰计算机科学家于年开发。Linux不同于传统的商业操作系统,它常用于服务器、嵌入式系统和个人电脑等各种平台。Linux具有很多优点,包括等。它,并且拥有广泛的硬件设备和软件应用的兼容性。这些特性使得Linux在各种不同的场景下被广泛应用。

2023-10-28 15:34:32 933 22

原创 【服务器】部署单体项目以及前后端分离项目(项目部署)

1、Linux部署单机项目:优点:简化了系统管理:由于所有服务都在同一台机器上运行,因此可以简化系统管理和维护。提高了性能:由于没有网络延迟和其他因素的影响,所以可以提高系统的性能。缺点:容易出现故障:如果一台机器发生故障,那么整个系统都会受到影响。难以扩展:随着业务的发展,可能需要增加更多的服务器来处理请求,但是这在单机项目中是很难实现的。2、前后端分离项目:优点:易于扩展:由于前端和后端是分开的,所以可以根据需求添加或删除服务器,从而更容易地进行扩展。更高的灵活性

2023-10-27 21:33:28 993 7

原创 【服务器】安装VMWare虚拟机(安装配置)和配置Windows Server 2012 R2(安装配置连接vm虚拟机)以及环境配置(Windows版详细教程)

操作系统是一种软件,它管理计算机系统的硬件和软件资源,并提供给用户和应用程序接口,使它们能够与计算机系统交互和运行。操作系统负责调度和分配系统资源,例如处理器、内存、输入输出设备等,以及管理文件系统、网络通信和安全等功能。操作系统为用户和应用程序提供了一个抽象层,屏蔽了底层硬件的复杂性,简化了用户与计算机的交互。它使用户能够通过图形界面或命令行界面执行各种任务,如运行程序、访问文件、管理数据等。操作系统还负责维护系统的稳定性、安全性和可靠性,确保各个程序能够正确地协同工作。

2023-10-26 13:31:53 9233 23

原创 【微信小程序】实现投票功能(附源码)

Vant Weapp 是一个基于微信小程序的组件库,它提供了丰富的 UI 组件和交互功能,能够帮助开发者快速构建出现代化的小程序应用。Vant Weapp 的设计理念注重简洁、易用和高效,同时提供灵活的定制化选项,以满足开发者不同的需求。Vant Weapp 包含了多个常用的组件,如按钮、导航栏、标签、列表、卡片、表单等,这些组件都经过精心设计和优化,可以帮助开发者快速构建出具有良好交互效果和用户体验的小程序页面。

2023-10-25 00:26:34 2382 18

原创 【python】函数的使用

使用关键字 def 来进行函数定义,后面指定函数名,还可在括号内指出参数。在Python中,函数是一段可重复使用的代码块,用于执行特定的任务。函数通常接受输入参数,并根据参数执行相应的操作,并最终返回一个结果。函数的定义通常包括以下几个部分:函数头:函数头包括关键字def,后跟函数名和一对圆括号()。函数名是我们给函数起的名称,用于标识和调用函数。括号内可以包含参数,用于接收函数调用时传递的输入值。函数体:函数体是函数的主要部分,包括一组执行特定任务的语句。

2023-10-23 17:06:06 2603 14

原创 【微信小程序】6天精准入门(第6天:微信授权登录获取信息)附源码

方便快捷:微信授权登录可以让用户使用自己的微信账号轻松登录小程序,省去了繁琐的注册流程,提升了用户的登录体验。用户信任:微信是广泛使用的社交平台之一,在用户心中有一定的信任度,使用微信授权登录可以使用户更容易接受和信任小程序。用户信息获取:通过微信授权登录,小程序可以获得用户的基本信息,如昵称、头像、性别等,方便个性化化用户的体验和提供更加精准的服务。

2023-10-21 23:28:40 562 25

原创 【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码

在小程序中,与后台交互指的是小程序前端与后台服务器之间的数据通信和请求处理过程。通过与后台交互,小程序能够获取服务器端的数据、上传用户数据、发送请求等。小程序与后台交互可以实现数据的传输、用户认证、实时消息推送等功能,为用户提供更丰富的体验和功能。

2023-10-20 22:22:33 2952 16

MyBatis映射一对多和多对多关系配置(看完这篇不吃亏)

MyBatis映射一对多和多对多关系配置(看完这篇不吃亏)

2023-08-26

马上掌握的LayUI树形权限菜单,助力你的权限管理!

树形菜单和登陆注册功能实现

2023-07-12

深入解析MySQL视图、索引、数据导入导出:优化查询和提高效率

t_log.sql表里的数据

2023-07-08

MySQL的基本操作及实用示例(面试真题老实用了)

四个表和关于这四个表的数据

2023-07-08

J2EE自定义mvc【框架配置及功能】

J2EE自定义mvc【框架配置及功能】

2023-07-03

J2EE的自定义MVC,对应的是描述里面的文件

https://blog.csdn.net/weixin_74383330/article/details/131460055

2023-07-02

利用Java FX 的窗口技术实现的一个前台后台界面功能,制作的比较简单

该应用是基于JavaFX开发的桌面应用程序。主要提供了一种简单、直观的方式来管理待办事项和计划。用户可以创建、编辑和删除任务等一些功能。此应用可以帮助用户更好地管理自己的日程和时间,提高工作效率。 该应用适用于需要管理和安排自己时间的人群,如学生、职场人士、自由职业者、创业者等。该应用的使用场景包括但不限于:工作中需要安排和跟踪各类任务和计划的人员、需要高效安排日常生活的人员等。其目标是为用户提供一种简单且高效的任务管理工具,让用户更好地掌控自己的时间和事务,提高生产力。 该应用以JavaFX为框架开发,功能简单易用。用户可以通过直观的图形界面轻松创建、编辑和删除任务,并设置任务的属性。应用还提供了弹窗式提示功能,帮助用户记得任务的截止日期和提醒时间,以及任务优先级的管理。整个应用实现了可定制性,用户可以自定义任务标签的颜色来更好地区分任务。 这个是我利用Java FX技术实现的一个窗口技术,相比swing更简单一点。这个比较适合一些初学者更好的了解一些项目制作的流程的,也是可以用来练手的,在一些大学也是会用来练习和学习。仅供参考,多多见谅!!!

2023-06-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除