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

关于网站建设的期刊文献建设直播平台网站软件

关于网站建设的期刊文献,建设直播平台网站软件,群晖企业解决方案,工业和信息化部网站备案软件开发整体介绍 软件开发流程 角色分工 软件环境 苍穹外卖 项目介绍 定位:专门为餐饮企业定制的一款软件产品 技术选型 前端环境搭建 阅读readme文档 nginx.exe放入无中文目录运行并启动 后端环境搭建 项目结构 Nginx反向代理 优点 配置 Nginx反向代理 负…

软件开发整体介绍

软件开发流程

角色分工

软件环境

苍穹外卖

项目介绍

定位:专门为餐饮企业定制的一款软件产品

技术选型

前端环境搭建

阅读readme文档

nginx.exe放入无中文目录运行并启动

后端环境搭建

项目结构

Nginx反向代理

优点

配置

Nginx反向代理

负载均衡

Nginx负载均衡策略

完善登录功能

导入接口文档

使用Apifox或者Yapi,导入管理层和用户层的json接口文档

Swagger

介绍

使用方式

Swagger和Yapi

常用注解

公共字段自动填充

项目完成技术整理:

做了三周。。。
开始的比较迟了。。

整理一下:

  1. 分页查询:
    Controller返回:PageResult
    Service:
    PageHelper.startPage(页码,每页记录数)
     封装PageResult并返回
  2. 公共字段自动填充
    对于insertupdate操作类型,可以使用切面进行统一拦截mapper并自动填充(注解)
    实现思路:(枚举、注解、AOP、反射)
  • 自定义注解AutoFill,用于标识需要进行公共字段自动填充的方法
  • 自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公共字段赋值
  • 在Mapper方法上加入AutoFill注解
  • 具体步骤:
    1. 创建annotation:AutoFill
    1. 加注解:
     @Target(ElementType.METHOD)//指定注解只能加在方法上@Retention(RetentionPolicy.RUNTIME)
    1. 通过枚举方式指定加注解的当前数据库操作类型
public @interface AutoFill {//数据库操作类型:UPDATE,INSERTOperationType value();
}
    1. 切面类aspect.AutoFillAspect--自定义切面,实现公共字段自动填充
    • 加入注解:
@Aspect //定义切面
@Component //Bean
    • 指定切入点:autoFillPointCut
@Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)")
public void autoFillPointCut(){}

    execution(所有返回类型 包.类.方法.(匹配参数类型)) && 加入AutoFill注解@annotation(自定义注解)

    1. 前置通知:通知中给公共字段赋值
       注解:@Before("autoFillPointCut()")
       例子:
@Before("autoFillPointCut()")public void autoFill(JoinPoint joinPoint){log.info("开始进行公共字段自动填充...");//获取当前被拦截的方法上的数据库操作类型MethodSignature signature =(MethodSignature) joinPoint.getSignature();//方法签名对象AutoFill annotation = signature.getMethod().getAnnotation(AutoFill.class);//获得方法上的注解对象OperationType operationType = annotation.value();//获得数据库操作类型//获取到当前被拦截的方法的参数--实体对象Object[] args = joinPoint.getArgs();if (args == null || args.length == 0){return;}Object entity = args[0];//准备赋值的数据LocalDateTime now = LocalDateTime.now();Long currentId = BaseContext.getCurrentId();//根据当前不同的操作类型,为对应的属性赋值if (operationType == OperationType.INSERT){//为四个公共字段赋值try {Method setCreateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME,LocalDateTime.class);Method setCreateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER, Long.class);Method setUpdateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);Method setUpdateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);//通过反射为对象属性赋值setCreateTime.invoke(entity,now);setCreateUser.invoke(entity,currentId);setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);} catch (Exception e) {e.printStackTrace();}}
  •    JoinPoint joinPoint 在AOP中,我们知道描述切面的术语有通知(advice),切点(pointcut),连接点(join point)。
       连接点(joinPoint)就是在应用执行过程中能够插入切面的一个点。这个点可以是调用方法时、抛出异常时、甚至修改一个字段时。切面代码可以利用这些点插入到应用的正常流程之中,并添加新的行为。
       这个类的主要作用就是可以让我们在Advice中获取被增强方法相关的所有信息。通过JoinPoint可以获取被代理方法的各种信息,如方法参数,方法所在类的class对象,然后执行反射操作
  •    getSignature():返回一个 Signature 对象,此接口通常用于跟踪或记录应用程序以获取有关连接点的反射信息
  1. redis 设置店铺状态
    Spring Data Redis
    1. 导入maven
    1. 配置数据源:application.yml
  redis:port: 8080  host: localhostdatabase: 0
    1. 编写配置类,创建RedisTemplate对象
@Configuration
@Slf4j
public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {log.info("开始创建redis模版对象...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置redis key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}
    1. 通过RedisTemplate对象操作Redis
ValueOperations valueOperations = redisTemplate.opsForValue();
Integer status = (Integer) valueOperations.get(KEY);
  1. cpolar实现内网穿透,获得临时网址
    cmd进入cpolar.exe所在文件夹,执行:cpolar.exe http 80
  2. Spring Cache 缓存
    启动类加入注解:@EnableCaching
    @Cacheable:在方法执行前查看是否有缓存对应的数据,如果有直接返回数据,如果没有调用方法获取数据返回,并缓存起来。
    @CacheEvict:将一条或多条数据从缓存中删除。
    @CachePut:将方法的返回值放到缓存中
    @EnableCaching:开启缓存注解功能
    • (cacheNames = " ", key = "#user.id")
    • cacheNames 指定要放到哪个名字的缓存
    • key :
      • #result.id:result 表示返回值
      • #p0.id#a0.id#root.args[0].id表示第一个参数的 id
    • allEntries = true:选定所有键
  1. Spring Task 定时任务处理
  • 启动类加入注解:@EnableScheduling -- 开启任务调度
  • task类编写定时任务处理方法,方法前编写cron表达式:表示多久触发一次方法
    /*** 处理超时订单的方法*/@Scheduled(cron = "0 * * * * ?")//每分钟触发一次public void processTimeoutOrder(){log.info("定时处理超时订单:{}", LocalDateTime.now());//查找超时订单LocalDateTime time = LocalDateTime.now().plusMinutes(-15);//select * from orders where status = ? and order_time < (当前时间 - 15分钟)List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time);}
  1. WebSocket 实现双向交互
    websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信
    在websocket出现之前,web交互一般是基于http协议的短连接或者长连接
    websocket是一种全新的协议,不属于http无状态协议,协议名为"ws"
  2. Apache POI 执行文件导出
    使用POI写入数据
    Apache POI
  3. stream好用呢!!

http://www.yayakq.cn/news/352896/

相关文章:

  • 做百度移动端网站排名软件免费制作
  • 搜索引擎怎么收录网站我有项目找资金找合作
  • 沈阳seo顾问网站排名优化在线培训
  • 惠州网站建设点关键词林俊杰mp3免费下载
  • 襄阳市建设局网站网站没有备案可以访问吗
  • 如何从网站获取图片做全景图上海企业网站建设费用
  • 建设官方网站怎么登录简述网站建设的一般流程
  • 自己做的动画买给网站网站微信认证费用多少
  • 中国建设银行官网站企业年金php网站建设实例视频教程
  • 做网站投注代理犯罪吗ui界面设计说明范文
  • 捕鱼游戏网站开发商网站系统平台建设
  • 网站方案讲解技巧网站开发与维护的岗位特点职责
  • 深圳做服装设计网站的公司免费asp网站模板带后台
  • 网站设计的公司运营接单wordpress meta_key
  • 网站备案是干嘛的长沙电商网站开发
  • dw asp access 网站开发优点网页开发者工具怎么用
  • 网站建设五合一是指什么网站建设实习目的
  • 网站本身对网站打开速度有何影响深圳市住房和建设局李秀钗
  • 互联网网站开发用哪个语言开发企业仓库管理系统
  • 在银行网站如何做理财风险评测保险公司招聘网站
  • 物流案例 网站网站备案怎么才能快速
  • 汕头网站建设方案书wordpress 导入图片
  • 最大网站建设公司排名wordpress维护插件
  • 有专做高端折扣女装的网站吗农副产品网站建设目标
  • 辽宁省住房和城乡建设厅网站首页做网站云服务器2m宽带够用吗
  • 湖南湘潭网站建设大连百度推广代理商
  • 徐州网站建设xlec网站制作租用空间
  • 制作企业网站得多长时间网站开发是前端吗
  • 企业信息化管理包括哪些内容优帮云排名优化
  • 辽宁海星建设集团有限公司网站珠海网站备案