Java阶段五Day17

Java阶段五Day17

文章目录

  • Java阶段五Day17
    • 师傅后台功能
      • 师傅审核列表
        • 相关功能
        • 启动进程和启动方式
      • 后台审核详情查询
        • 查询审核详情流程
        • 远程调用图片服务
      • 缓存逻辑
        • 缓存逻辑流程
        • 查询引入缓存流程
        • 完成缓存逻辑
        • 面试题整理
    • 附录
      • redis分布式——架构演变

师傅后台功能

师傅审核列表

相关功能

业务流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6UD1cXX-1691149001565)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day17/assets/image-20230731091104066.png)]

分页查询参数

  • pageNo:页数
  • pageSize:每页条数
  • total:总条数 (select count(*)
  • totalPage(lastPageIndex):总页数(total % pageSize== 0 ? total / pageSize:(total / pageSize + 1)
  • select * from table_a where 条件 limit 0,5
  • select * from table_a where 条件 limit start,rows
  • start=(pageNo-1)*rows
  • rows=pageSize

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQwvc7ao-1691149001566)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day17/assets/image-20230731104149529.png)]

在持久层查询数据(列表),将pageNopageSize做了limit分页条件的封装 ,limit 0,5 这样的结果 会拼接到 sql 语句中

select * from table_a where 条件 #{limit}

select * from table_a where 条件 "limit 0,5"

select * from table_a where 条件 ${limit}

select * from table_a where 条件 limit 0,5

${} 其他案例

  • 需求: 查询用户信息 username phone email,将三种不同查询条件,使用一个sqlxml映射完成

    • **Dao

    • user getUserByCondition(String condition,String value);

    • select * from user where ${condition} = #{value};

    • select * from user where username="张三"
      
  • 需求:使用不同的条件,做不同的排序, 时间字段 desc asc 不同查询

    • **Dao

    • List<User> getUsersDescByColunme(String colunme)

    • select * from user where 条件 order by ${colunme} desc

    • select * from user where 条件 order by gmt_create descd
      

启动进程和启动方式

  • 软件工具

    • nacos
    • mysql(不用主动启动,必须有表格)
  • java进程

    • passport
      • bat / shell脚本启动(知道里面java命令)
    • attach(附件服务)
      • businessType
      • businessId
    • gateway
  • 前端

    • luban-front
    • luban-admin-front
  • 测试的服务

    • worker-admin

后台审核详情查询

查询审核详情流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PzYzZsDP-1691149001566)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day17/assets/image-20230731114035849.png)]

查询审核详情 涉及到查询worker详情

使用的参数 userId

远程调用图片服务

  • 怎么调用: dubbo
  • 配置调用dubbo: 业务无侵入
    • 依赖
    • xml
  • 在业务层注入attachApi

缓存逻辑

缓存逻辑流程

Cache-Aside 缓存方案

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlOpzoWo-1691149001567)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day17/assets/image-20230731152001725.png)]

查询引入缓存流程

业务:师傅area和 师傅分类

  • key值如何设计:userId / workerId
    • “业务前缀”: worker:area worker:cat
    • “业务数据”: userId
  • 数据如何绑定到redis
    • String
    • hash
    • list

类图

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QkACprmP-1691149001568)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day17/assets/image-20230731153654241.png)]

/*** @author liner* @version 1.0*/
public abstract class AbastractCacheRepository<T> {//setCacheList areaBO categoryBOpublic boolean setCacheList(String key, List<T> t){//TODO redis list结构的数据,存储缓存return true;}public List<T> getCacheList(String key){//TODOreturn null;}//将单个对象T 序列化成Json字符串abstract String searialize(T t);//单个对象反序列化abstract T deSearilaize(String json);
}

完成缓存逻辑

  • 依赖
  • 完成代码

面试题整理

目标:

  • 整理相关问题的话术,碰到问题

思路: 概念 是什么 原因 为什么 解决方案 如何解决

  • 缓存雪崩
    • 概念: 缓存在长期应用的系统中,存储了大量的高并发访问数据,一旦这些数据突然批量消失,访问吞吐的并发,到达数据库,导致数据库崩溃
    • 原因:
      • 大量数据超时时间固定,相同的
      • redis分片宕机(数据分布式)短时间造成雪崩,但是不会持续,也不会总是交给代码处理,(翻阅附录-redis分布式)因为高并发高吞吐的redis架构是cluster,保证集群高可用,数据的高可靠性
    • 解决方案:
      • 超时时间不要固定
      • 第二种代码不提供解决方案,最多降级处理(不重要的数据降级)
  • 穿透
  • 击穿
  • 一致性

附录

redis分布式——架构演变

单机

  • 优点: 搭建简单
  • 缺点: 读写瓶颈,单机故障,存储数据总量上限
  • 使用场景: 不会在线上(testprod)系统使用(除非没什么并发),会搭建在开发场景

哨兵集群

  • 优点: 管理主从的集群,可以解决单点故障问题
  • 缺点: 不能实现分布式,不能实现高吞吐、高并发、大量数据存储
  • 使用场景: 考虑高可靠性的,但是没有高并发的场景

cluster: 多个主从组成的集群,引入分布式计算

  • 优点: 高吞吐、高并发、高数据存储容量
  • 缺点: 数据设计key值如果不合理,批量读写会导致性能极大浪费(没有批量需求的业务,碰不见)
  • 使用场景: 高并发、高吞吐场景

6个redis 总吞吐量保守估计 4C4G(6台) 服务器中10万/s

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aws中opensearch 日志通(Centralized Logging with OpenSearch)2.0(一)

aws日志通2.0 实现全面的日志管理和分析功能 一体化日志摄取 &#xff1a;把aws服务器日志和应用日志传输到opensearch域中无代码日志处理 &#xff1a;在网页控制台中就可以实现数据处理开箱即用 &#xff1a;提供可视化模版&#xff08;nginx、HTTP server &#xff09; 架构…

【Docker】Docker容器化技术基础

Docker容器化技术 Docker&#xff08;软件跨环境迁移&#xff09;Docker概念&#xff1a;安装Dockerdocker架构配置Docker镜像加速器 一、Docker命令服务daemon相关的命令镜像相关命令Docker容器相关命令 二、Docker容器的数据卷数据卷概念配置数据卷配置数据卷容器 三、Docker…

苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)

预期效果 对于超时没处理的需要定时程序处理。基于SpringTask实现。 来单提醒和客户催单。基于WebSocket实现。 Spring Task 介绍 Cron表达式 周几通常不能和日一起指定。 cron表达式在线生成器 在线Cron表达式生成器 入门案例 创建定时任务类 /*** 定义定时任务类*/ Slf4j…

你知道HTTP与HTTPS有什么区别吗?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、什么是HTTP&#xff1f; 二、什么是HTTPS&#xff1f; 三、HTTPS 的工作原理 1、客户端发起 HTTPS 请求 2、服务端的配置 3、…

为什么Java不支持多继承?

面试回答 因为如何要实现多继承&#xff0c;就会像C中一样&#xff0c;存在菱形继承的问题,C为了解决菱形继承问题&#xff0c;又引入了虚继承。因为支持多继承&#xff0c;引入了菱形继承问题&#xff0c;又因为要解决菱形继承问题&#xff0c;引入了虚继承。而经过分析&#…

docker【安装、存储、镜像、仓库、网络、监控】

docker-0110.0.0.51docker-0210.0.0.52docker-0310.0.0.53 【1】docker安装 docker-01 [rootdocker-01 ~]# vim /etc/yum.conf [main] cachedir/var/cache/yum/$basearch/$releasever keepcache1 debuglevel2 logfile/var/log/yum.log exactarch1 obsoletes1 gpgcheck1 plugin…

常见历史漏洞之Thinkphp

常见历史漏洞之Thinkphp 一、介绍二、Thinkphp历史漏洞三、Thinkphp特征发现四、批量漏洞检测五、漏洞总结六、5.0.23版本案例演示 一、介绍 Thinkphp是一种开源框架。是一个由国人开发的支持windows/Unix/Linux等服务器环境的轻量级PHP开发框架。很多cms就是基于thinkphp二次开…

论文阅读- Uncovering Coordinated Networks on Social Media:Methods and Case Studies

链接&#xff1a;https://arxiv.org/pdf/2001.05658.pdf 目录 摘要&#xff1a; 引言 Methods Case Study 1: Account Handle Sharing Coordination Detection 分析 Case Study 2: Image Coordination Coordination Detection Analysis Case Study 3: Hashtag Sequen…

【问题随记】

ubuntu 14.04源更新(sources.list) deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-update…

Mac 安装不在 Apple 商店授权的应用程序

文章目录 一、场景介绍二、实操说明 一、场景介绍 在日常的工作生活中&#xff0c;发现一些好用的应用程序&#xff0c;但是出于某些原因&#xff0c;应用程序的开发者并没有将安装包上架到苹果商店。 那么这些优秀的应用程序下载安装以后就会出现如下弹框被拒之门外 二、实操…

SpringBoot3---核心特性---1、快速入门II

星光下的赶路人star的个人主页 要活出自己之后再被人理解 文章目录 1、核心技能1.1 常用注解1.1.1 组件注册1.1.2 条件注解1.1.3 属性绑定 1.2 YAML配置文件1.2.1 基本语法1.2.2 示例1.2.3 细节1.2.4 小技巧&#xff1a;lombok 1.3 日志配置1.3.1 简介1.3.2 日志格式1.3.3 记录…

Go语言在人工智能时代的崭露头角:为何越来越多公司选择使用Go语言?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to Golang Language.✨✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1…

router-view路由出口

这边文章主要讲router-view搭建后台管理系统的一个基本模板 一.创建自己的路由规则 1.新建文件夹src/router/index.js npm i vue-router3.6.5 2.配置好文件 import Vue from "vue"; import VueRouter from "vue-router"; Vue.use(VueRouter);// 1.创建…

CentOS7安装JDK8(实操版 | 源码安装和yum安装)

前言 查看此文章前强烈建议先看这篇文章&#xff1a;Java江湖路 | 专栏目录 该文章纪录的是CentOS安装JDK操作&#xff0c;每一步都有记录&#xff0c;争取每一位看该文章的小伙伴都能操作成功~ 方式一&#xff1a;yum安装 1、yum方式比较简单&#xff0c;一个命令就能搞定 y…

RF手机天线仿真介绍(一):金属边框天线和LDS天线

目录 简介LDS天线LDS天线仿真 金属边框天线金属边框天线仿真 简介 最早的手机是外置式天线&#xff0c;从NOKIA开始采用内置式天线&#xff0c;开始采用内置金属片&#xff08;一般是0.1MM厚的不锈钢片冲压而成&#xff09;&#xff0c;随后为降低成本&#xff0c;后来改用FPC…

1-搭建一个最简单的验证平台UVM,已用Questasim实现波形!

UVM-搭建一个最简单的验证平台&#xff0c;已用Questasim实现波形 1&#xff0c;背景知识2&#xff0c;".sv"文件搭建的UVM验证平台&#xff0c;包括代码块分享3&#xff0c;Questasim仿真输出&#xff08;1&#xff09;compile all&#xff0c;成功&#xff01;&…

DirectX12 3D立方体游戏编程选修作业-龙书

DirectX12 3D立方体游戏编程作业-龙书 作业效果配置描述文件参考书签 作业效果 配置描述文件 参考:龙书dx12 chapter-6 电子版在CSDN下载里直接下载的 配置&#xff1a;将龙书中的visual stdio2015修改为visual stdio2019; visual stdio2019组件选择&#xff1a; desktop dev…

亚马逊云科技七项生成式AI新产品生成式AI,为用户解决数据滞后等难题

7月27日&#xff0c;亚马逊云科技在纽约峰会上一连发布了七项生成式AI创新&#xff0c;涵盖了从底层硬件到工具、软件、再到生态的全方位更新&#xff0c;成为它在该领域迄今最全面的一次升级展示&#xff0c;同时也进一步降低了生成式AI的使用门槛。 亚马逊云科技凭借自身端到…

Excel如何把两列互换

第一步&#xff1a;选择一列 打开excel&#xff0c;选中一列后将鼠标放在列后&#xff0c;让箭头变成十字方向。 第二步&#xff1a;选择Shift键 按住键盘上的Shift键&#xff0c;将列往后移动变成图示样。 第三步&#xff1a;选择互换 完成上述操作后&#xff0c;松开鼠标两…

pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

目录 1.迁移学习概念 2.数据预处理 3.训练模型&#xff08;基于迁移学习&#xff09; 3.1选择网络&#xff0c;这里用resnet 3.2如果用GPU训练&#xff0c;需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.…