自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Struts2的相关介绍入门级

Struts2是一个基于MVC设计模式的流行且成熟的Web应用程序框架. Struts2不仅仅是Struts 1的新版本,它完全重写了Struts架构.Webwork框架最初以Struts框架为基础,其目标是提供一个基于Struts的增强和改进的框架,使开发人员更容易进行Web开发.过了一段时间,Webwork框架和Struts社区携手创建着名的Struts2框架.(也可以将struts2比作于一个大的servlet。

2023-06-16 15:09:51 151 1

原创 Ibatis与Mybatis的区别—侧重于Ibatis

实现了Java程序与关系型数据库的绑定。它可以用来简化数据库访问的开发工作,并且能够有效地避免SQL注入等问题,也提高了程序的可维护性和可扩展性。iBatis最初由Apache开发,后来被Google收购并改名为MyBatis。iBatis与MyBatis两者都是优秀的持久层框架(提了多遍,应该也记住啦!,它们各自都有一些优点和缺点。

2023-06-07 18:10:26 1878

原创 B/S架构与C/S架构的区别

这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。主要应用于局域网内。2、c/s架构一般面向相对固定的用户群,对信息安全的控制能力很强,而b/s架构对安全的控制能力相对弱;升级难, 可能是再做一个全新的系统。B/S 建立在广域网之上的,不必有专门的网络硬件环境,例与电话上网,租用设备,信息自己管理。C/S 程序不可避免的考虑整体性, 构件的重用性不如在B/S要求下的构件的重用性好。

2023-05-31 14:17:24 1152

原创 LInux相关操作命令

北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。/etc/shadow文件:是/etc/passwd的影子文件,与/etc/passwd是对应互补的,内容包括用户及被加密的密码以及其他/etc/passwd不能包括的信息,比如用户账户的有效期限等。比如,在下面的例子中,我们使用普通用户修改网卡的配置文件,在进行保存的时候,提示我们【无法打开并写入文件】,那么此时,我们可以通过sudo命令来提升自己的写入权限。

2023-05-22 15:48:16 608 2

原创 医疗项目中所用到的技术点——以MyBatis-Plus为技术案例

惠医疗即为网上预约挂号系统,网上预约挂号是近年来开展的一项便民就医服务,旨在缓解看病难、挂号难的就医难题,许多患者为看一次病要跑很多次医院,最终还不一定能保证看得上医生。网上预约挂号全面提供的预约挂号业务从根本上解决了这一就医难题。随时随地轻松挂号!不用排长队!MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2023-05-11 13:43:35 831 1

原创 SpringBoot整合Swagger2

随着需求的变更和项目的优化、推进,接口的细节在不断地演变,接口描述文档也需要同步修订,可是文档和代码处于两个不同的媒介,除非有严格的管理机制,否则很容易出现文档、接口不一致的情况;注解描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用 @ApiImplicitParam注解进行描述的时候;1)API 接口众多,细节复杂,需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等,想要高质量的完成这份文档需要耗费大量的精力;

2023-01-06 22:43:46 1657 4

原创 OAuth2.0协议流程与授权模式、协议流程

OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。简化模式不通过第三方应用程序的服务器,直接在浏览器中向授权服务器申请令牌,跳过了"授权码"这个步骤,所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。(D)客户端收到授权码,附上早先的"重定向URI",向授权服务器申请令牌。

2023-01-05 22:27:23 1591 2

原创 Mybatis与微服务注册

将资料目录中的《易买网网页素材.rar》解压后,将其中Index.html、Product.html和js/css/images等等添加到项目的templates和static目录下,最好请将Index.html、Product.html页面首字母改成小写。解决方案:(此处将在第三次课解决,使用nginx动静分离方式实现)配置静态资源访问服务器,将各个微服务模块中的静态访问资源迁移到静态资源访问服务器中,然后通过http方式访问即可。在主模块pom.xml中加入商品服务子模块zmall-product。

2023-01-05 22:07:11 206

原创 后台交互—springboot+mybatis整合小程序(源码演示)

session_key 功能说明微信客户端通过wx.getUserInfo()获取用户的信息后台有时候也需要获取微信客户端的用户信息,因此,就需要利用session_key这个秘钥来从微信平台中获取官方文档原文签名校验以及数据加解密涉及用户的会话密钥 session_key。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。WXS 的运行环境和其他 JavaScript 代码是隔离的,WXS 中不能调用其他 JavaScript 文件中定义的函数,也不能调用小程序提供的API。

2023-01-04 21:58:09 1071 10

原创 小程序之会议管理

注意事项一些需要注意的细节:因为 WXML 节点标签名只能是小写字母、中划线和下划线的组合,所以自定义组件的标签名也只能包含这些字符。自定义组件也是可以引用自定义组件的,引用方法类似于页面引用自定义组件的方式(使用 usingComponents 字段)。自定 tabs.wxml​ tabs.wxss会议管理 list.json list.wxml list.wxss同index.wxsslist.js投票管理 箭头样式:

2022-12-26 20:27:46 937 7

原创 小程序之首页搭建——Flex布局

布局的传统解决方案,基于盒状模型,依赖display属性 +position属性 +float属性1) Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。2) 任何一个容器都可以指定为Flex布局。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

2022-12-26 19:30:34 1200 2

原创 小程序框架与生命周期

事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches。

2022-12-16 10:43:24 652 2

原创 微信小程序—相关配置

2017年度百度百科十大热词之一微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用( 张小龙对其的定义是无需安装,用完即走,实际上是需要安装的,只不过小程序的体积特别小, 下载速度很快,用户感觉不到下载的过程 )同一个分包中的页面享有共同的预下载大小限额 2M,限额会在工具中打包时校验。2017年1月9日0点,万众瞩目的微信第一批小程序正式低调上线。

2022-12-15 12:48:59 1269 4

原创 rabbitMQ延时队列——TTL和DLX

一台普通的rabbitmq服务器单队列容纳千万级别的消息还是没什么压力的,而且rabbitmq集群扩展支持的也是非常好的,即存入订单的时候就算出订单的过期时间插入数据库,设置定时任务查询数据库的时候就只需要查询过期了的订单,正常情况下,由消费者A去消费队列“normal-queue”中的消息,但实际上没有,而是等消息过期。消息过期后,变成死信,根据配置会被投递到DLX,然后根据死信路由键投到死信队列(即延时队列)中。设置队列的过期时间用 x-expires 参数,单位毫秒,注意,不能设置为0。

2022-12-10 15:13:02 1087

原创 Nacos的持久化和集群部署

目录准备工作下载相关镜像一.docker mysql:5.7的持久化存储及远程连接二. nacos-docker镜像安装nacos并配置数据库(nacos单机版)三. nacos-docker镜像安装nacos并配置数据库(集群版)四. nginx动态代理nacos集群五.附录(补充点) 附录一:linux中使用命令导入导出数据附录二:修改mysql允许远程连接附录三:docker中运行MySQL如何查找使用中的配置文件my.cnf附录四:docker版nacos各种启动命令 mysql/mysq

2022-12-10 11:22:36 227

原创 自定义网络相关命令与nginx相关内容

参数说明参数说明设置网络模式设置子网设置网关mynet自定义网络的名称Nginx也是一款服务器,我们常用它做如:反向代理、负载均衡、动态与静态资源的分离的工作,反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

2022-12-09 16:04:34 130

原创 Docker网络模式与配置

1. Docker网络模式🏃‍♂️🏃‍♂️,🏃‍♂️🏃‍♂️2. 外部访问docker容器🏃‍♂️🏃‍♂️,🎈🎈3. 创建自定义网络:(设置固定IP)🎈🎈,🏃‍♂️🏃‍♂️4.补充(附录)🏃‍♂️🏃‍♂️附录一:eth0 eth0:1 eth0.1 的区别,附录二:veth是什么?附录三:停止并删除所有容器附录四:docker run时参数-P和-p的区别附录五:docker参数--restart=always的作用,使容器自启动

2022-12-09 14:36:10 657

原创 Exchange(交换机)的作用以及类型

创建消息 路由键 pull/push 生产者------------>交换机------------>队列------------>消费者 交换机原理图 1.直连交换机:Direct Exchange 直连交换机是一种带路由功能的交换机,一个队列会和一个交换机绑定,除此之外再绑定一个routing_key,当消息被发送的时候,需要指定一个binding_key,这个消息被送达交换机的时候,就会被这个交换机送到指定的队列里

2022-12-07 16:29:55 673 2

原创 RabbitMQ管理平台与主流MQ框架

目录1. 什么是MQ2. 应用场景3. 主流MQ框架4. Docker安装部署RabbitMQ 参数说明:5. RabbitMQ管理平台6. MQ的核心概念7. springboot整合rabbitmq 7.1.安装好rabbitmq,登陆RabbitMQ管理平台,新增管理用户并设置权限 7.2.pom.xml添加rabbitmq依赖 7.3.rabbitmq连接配置 7.4.创建Rabbit配置类RabbitConfig 7.5.创建消息产生者类 7.6.创建消息消费者 7.

2022-12-07 16:01:45 966

原创 基于alpine制作JDK8镜像以及将Docker镜像上传至阿里云

目录一. alpine Linux简介二 基于alpine制作JDK8镜像三 Docker容器之最小JRE基础镜像四、 将Docker镜像上传至阿里云(或从阿云下载镜像)五. Docker commit 命令 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗。 2.Alpine Linux提供了自己的包管理工具:apk(注意:ubuntu中是apt-get,cento

2022-12-06 13:26:11 1632 2

原创 Docker 数据管理与数据卷容器以及dockerfile基本结构

目录一. Docker 数据管理二. 数据卷(Data Volumes)三. 数据卷容器 四.还原数据卷容器五.dockerfile基本结构六. docker使用Dockerfile创建jdk容器 6.1.启动虚拟机,进入CentOS 6.2 编写 Dockerfile 文件 6.2.1 vi Dockerfile进入编辑模式 6.2.2 指定基础镜像,并且必须是第一条指令 FROM centos:latest 6.2.3 指明该镜像的作者和其

2022-12-05 12:22:08 302 1

原创 Docker三大核心概念(镜像、容器和仓库)与虚拟化

目录1. Docker是什么2. Docker与虚拟化3. Docker虚拟化的好处4. Docker核心概念 4.1.镜像 4.2.容器 4.3.仓库5. CentOS7 安装docker(在线方式) 5.1.内核版本信息检查 5.2 卸载可能存在的旧版本 5.3 安装必要的系统工具 5.4 添加docker-ce安装源 5.5 更新yum缓存 5.6 安装docker-CE 5.7 验证6. 镜像 6.1 配置加速器 6.2 搜索镜像 6

2022-12-04 13:33:54 1842 2

原创 spring cloud gateway网关使用JMeter进行限流测试与熔断

限流就是限制流量,因为服务器能处理的请求数有限,如果请求量特别大,我们需要做限流(要么就让请求等待,要么就把请求给扔了), 限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击。在高并发的应用中,限流是一个绕不开的话题。注1:为什么要限流?

2022-11-26 19:51:37 1095 2

原创 微服务集成Sentine--服务雪崩效应以及常见的容错方案

Sentinel(分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量 为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即 突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用 应用等。完备的实时监控:Sentinel 提供了实时的监控功能。

2022-11-26 17:09:00 532

原创 Gateway--服务网关与核心架构

大家都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用 这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调 用。客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性认证复杂,每个服务都需要独立认证。存在跨域请求,在一定场景下处理相对复杂。上面的这些问题可以借助API网关来解决。所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服 务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如。

2022-11-24 20:06:47 774

原创 Nacos Config--服务配置中心与Nacos多环境切换

首先我们来看一下,微服务架构下关于配置文件的一些问题:配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环 境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动 维护,这比较困难。配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一 个正在运行的项目来说是非常不友好的。

2022-11-23 08:56:45 2188 7

原创 Nacos Discovery--实现服务调用的负载均衡与基于Feign实现服务调用

先来思考一个问题 通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 (ip,端口)等硬编码到了代码中,这种做法存在许多问题:一旦服务提供者地址变化,就需要手工修改代码一旦是多个服务提供者,无法实现负载均衡功能一旦服务变得越来越多,人工维护调用关系困难那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理。什么是服务治理服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。🍋🍋。

2022-11-21 10:07:53 1061 2

原创 微服务环境搭建

在微服务架构中,最常见的场景就是微服务之间的相互调用。我们以电商系统中常见的用户下单为例来演示微服务的调用:客户向订单微服务发起一个下单的请求,在进行保存订单之前需要调用商品微服务查询商品的信息。我们一般把服务的主动调用方称为服务消费者,把服务的被调用方称为服务提供者。在这种场景下,订单微服务就是一个服务消费者, 商品微服务就是一个服务提供者。

2022-11-18 16:02:17 131 1

原创 SpringCloud微服务介绍+系统架构

微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。微服务可以在“自己的程 序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。

2022-11-17 20:56:45 2476 1

原创 freemarker+yml介绍 以及freemarker与JSP的区别

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。

2022-11-16 13:11:02 1383 4

原创 SpringBoot配置PageHelper分页插件以及配置MyBatis

Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。 也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具 同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等), Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring

2022-11-15 17:05:15 3713

原创 CentOS7中使用yum安装Nginx的方法

Nginx是一款高性能的Web服务器,最初由俄罗斯程序员Igor Sysoev开发,自2004年问世以来,凭借其高性能、高可靠、易扩展等优点,在反向代理、负载均衡、静态文件托管等主流场合得到了广泛的应用。

2022-11-14 15:45:00 7548

原创 Spring注解式缓存

Redis是key-value存储的非关系型数据库。Spring Data Redis包含了多个模板实现,用来完成Redis数据库的数据存取功能spring注解式缓存中的巨坑~~~~~~~没有指定key,默认情况下spirng会使用SimpleKeyGenerator生成key,而Spring默认的SimpleKeyGenerator是不会将函数名组合进key中的,举个例子:@Component}}}}//注意返回的是字符串“4”}我们期望的输出是:123。

2022-11-14 00:15:00 1739 6

原创 前后端分离的书本管理系统

Spring框架是一个开源应用程序框架,通过提供基础设施支持来支持Java应用程序的开发。它是著名的Java企业版框架之一。Spring通过使用普通旧Java对象 (POJO) 帮助开发人员创建高效的应用程序。Spring框架正在成为这些问题的解决方案。它采用多种新技术来构建企业应用程序,包括普通旧Java 对象(POJO)、面向方面编程 (AOP) 和依赖注入(DI)。它消除了使用EJB创建企业应用程序所涉及的困难。

2022-11-12 15:57:47 1379 2

原创 本章目标: 将SSM项目及数据库完整的部署CentOS7

查看全部服务命令:systemctl list-unit-files --type service ctrl+c可以回到命令输入。注1:重启虚拟机后,发现有时候linux中的tomcat启动失败,应该将tomcat服务在mysql服务启动后启动。🎃🎃 注2:tomcat启动后,外部浏览器无法访问,原因:防火墙中8080端口未开放,查看服务:systemctl status 服务名.service。启动服务:systemctl start 服务名.service。防火墙的开启详情见:附录二。

2022-11-10 20:35:35 655

原创 vue组件间通讯以及vuex的使用

Vuex是专门为vue应用程序开发的状态管理模式,将组件的共享状态抽取出来,以一个全局单例模式进行管理,组件树构成一个巨大的视图,不管组件在树的何种位置,任何组件都能获取到状态和触发行为。可以将其想象为一个“前端数据库”(数据仓库),让其在各个页面上实现数据的共享包括状态,并且可操作。(核心就是 解决组件间的通讯问题)Vuex分成五个部分:1.State:单一状态树2.Getters:状态获取3.Mutations:触发同步事件4.Actions:提交mutation,可以包含异步操作。

2022-11-10 18:50:51 632

原创 ElementUi中的Dialog对话框——弹出窗口与新增更新功能为例

目录1. 准备工作2. 弹出窗口3. 新增更新功能4. 删除功能5. 表单验证5. 接口文档后台服务接口,对书本的增删改查操作进入ElementUi官网, 找到Dialog对话框,可以参考“嵌套表单的dialog”实现。该步骤先实现弹出窗口的前端逻辑,并不会调用后台接口服务进行实际的业务操作。BookList.vue在数据表格中添加“编辑”“删除”功能连接。(在element-ui官方demo -> table组件中,有如何加入删除,编辑等按钮的示例)

2022-11-07 10:07:58 12410 1

原创 使用Vue来完成项目中的首页导航+左侧菜单

页面上使用的面包屑,查询条件,表格,分页等空间,可以查看element-ui官网。该步骤主要关注页面布局,并没有绑定数据,编写完成后,观察页面效果。BookList.vue:

2022-11-01 14:09:13 6440 6

原创 Vue项目中的mock.js的使用以及基本用法和ES6的新增方法

Mock.js是一个模拟数据的生成器,用来帮助前端调试开发、进行前后端的原型分离以及用来提高自动化测试效率。数据类型丰富支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。拦截Ajax请求不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数据。官网注:easy-mock,一个在线模拟后台的数据平台。

2022-10-29 10:32:09 5104

原创 使用vue-cli创建项目登陆页面

通过观察控制台可以发现,post发送请求时,请求参数是以json格式通过request payload进行传送的,的struts的并没有处理这种方式传递的参数。因为我们采用的是前后端分离的方式进行开发,前端和后端分别泡在不同的服务器上,基于安全性考虑,浏览器有同源策略,所以出现了跨域问题。输入的测试账号和密码均正确,使用get发送请求获取的响应为“密码正确”,但post方式发送的请求获取的响应为“密码不正确”!(起码是我们使用的struts版本),所以传递到服务器的参数并没有得到有效的解析。

2022-10-27 00:30:00 1463 4

有关于24小时订单的一个小项目

web开发所需环境和工具      1)在后台功能实现方面,我们使用的开发工具是Eclipse和MySQL数据库      2)为方便,我们使用使用了一个layUI的日历插件;当然HTML5自带date类型日期的效果,可以的话没必要使用插件,但要想更加美观建议使用插件.      3)在前端我们使用BootStrap+jQuery达到一定的美化效果      4)在优化方面我们采用了Ajax技术和JSON(这里使用的json版本是net.sf.json),最后实现无刷新查询数据

2022-09-02

会议OA项目——layui

layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。layui 首个版本发布于 2016 年金秋,她区别于那些基于 MVVM 底层的 UI 框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,她更多是为服务端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。 此项目是有关于layui的OA项目:里面有用户管理、发布会议、我的会议、我的审批、会议通知以及待开会议与历史会议的简单功能实现(小伙伴可以自己去提升这个OA项目的功能——优化内部代码) 里面涉及了一些(我个人觉得蛮不错的功能):登陆界面用户的密码为密文(利用MD5)、图片上传及下载、会议签字(将签字界面下载进行审批)、以及用户信息的改变状态(是否参加会议以及会议的状态)

2022-08-25

空空如也

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

TA关注的人

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