Redis入门到实战_04_高级篇-多级缓存
多级缓存亿级流量的缓存方案。淘宝,京东等网站一天可能面临亿级流量的冲击。传统的缓存方案不满足需要,这时候就需要多级缓存。
1.什么是多级缓存传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:
存在下面的问题:
•我们知道Tomcat的并发能力不如redis,请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈。
•Redis缓存失效时,会对数据库产生冲击
多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性能:
浏览器访问静态资源时,优先读取浏览器本地缓存
访问非静态资源(ajax查询数据)时,访问服务端
请求到达Nginx后,优先读取Nginx本地缓存
如果Nginx本地缓存未命中,则去直接查询Redis(不经过Tomcat)
如果Redis查询未命中,则查询Tomcat
请求进入Tomcat后,优先查询JVM进程缓存
如果JVM进程缓存未命中,则查询数据库
在多级缓存架构中,Nginx内部需要编写本地缓存查询、Redis查询、Tomcat查询的业务逻辑,因此这样的nginx服务不再是一个 ...
Redis入门到实战_03_高级篇-分布式缓存
分布式缓存– 基于Redis集群解决单机Redis存在的问题
单机的Redis存在四大问题:
0.学习目标1.Redis持久化Redis有两种持久化方案:
RDB持久化
AOF持久化
1.1.RDB持久化RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
1.1.1.执行时机RDB持久化在四种情况下会执行:
执行save命令
执行bgsave命令
Redis停机时
触发RDB条件时
1)save命令
执行下面的命令,可以立即执行一次RDB:
save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。
2)bgsave命令
下面的命令可以异步执行RDB:
这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。
3)停机时
Redis停机时会执行一次save命令,实现RDB持久化。
4)触发RDB ...
JavaWeb_02_第二章_HTML与CSS
第二章 HTML&CSS一 HTML入门1.1 HTML&CSS&JavaScript的作用
HTML 主要用于网页主体结构的搭建
CSS 主要用于页面元素美化
JavaScript 主要用于页面元素的动态处理
1.2 什么是HTML
HTML是Hyper Text Markup Language的缩写。意思是超文本标记语言。它的作用是搭建网页结构,在网页上展示内容
HTML5 是 HyperText Markup Language 5 的缩写,HTML5 技术结合了 HTML4.01 的相关标准并革新,符合现代网络发展要求,在 2008 年正式发布。HTML5 由不同的技术构成,其在互联网中得到了非常广泛的应用,提供更多增强网络应用的标准机。与传统的技术相比,HTML5 的语法特征更加明显,并且结合了 SVG 的内容。这些内容在网页中使用可以更加便捷地处理多媒体内容,而且 HTML5中还结合了其他元素,对原有的功能进行调整和修改,进行标准化工作。HTML5 在 2012 年已形成了稳定的版本。2014年10月28日,W3C发布了HTML ...
微头条项目开发
第八章 微头条项目开发一 项目简介1.1 微头条业务简介
微头条新闻发布和浏览平台,主要包含业务如下
用户功能
注册功能
登录功能
头条新闻
新闻的分页浏览
通过标题关键字搜索新闻
查看新闻详情
新闻的修改和删除
权限控制
用户只能修改和自己发布的头条新闻
1.2 技术栈介绍
前端技术栈
ES6作为基础JS语法
nodejs用于运行环境
npm用于项目依赖管理工具
vite用于项目的构建架工具
Vue3用于项目数据的渲染框架
Axios用于前后端数据的交互
Router用于页面的跳转
Pinia用于存储用户的数据
LocalStorage作为用户校验token的存储手段
Element-Plus提供组件
后端技术栈
JAVA作为开发语言,版本为JDK17
Tomcat作为服务容器,版本为10.1.7
Mysql8用于项目存储数据
Servlet用于控制层实现前后端数据交互
JDBC用于实现数据的CURD
Druid用于提供数据源的连接池
MD5用于用户密码的加密
Jwt用于token的生成和校验
Jackson用于转换JSON
Filter用于用户登录校验 ...
JavaWeb_07_第七章_前端工程化
第七章 前端工程化一、前端工程化开篇1.1 什么是前端工程化
前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。
1.2 前端工程化实现技术栈
前端工程化实现的技术栈有很多,我们采用ES6+nodejs+npm+Vite+VUE3+router+pinia+axios+Element-plus组合来实现
ECMAScript6 VUE3中大量使用ES6语法
Nodejs 前端项目运行环境
npm 依赖下载工具
vite 前端项目构建工具
VUE3 优秀的渐进式前端框架
router 通过路由实现页面切换
pinia 通过状态管理实现组件数据传递
axios ajax异步请求封装技术实现前后端数据交互
Element-plus 可以提供丰 ...
JavaWeb_01_第一章_概述
第一章 WEB概述配套视频-尚硅谷【https://www.bilibili.com/video/BV1UN411x7xe/】
1.1 JAVAWEB简介
用Java技术来解决相关web互联网领域的技术栈.使用JAVAEE技术体系开发企业级互联网项目. 项目规模和架构模式与JAVASE阶段有着很大的差别. 在互联网项目下,首先需要明白客户端和服务器的概念
客户端 :与用户进行交互,用于接收用户的输入(操作)、展示服务器端的数据以及向服务器传递数据
手机APP
微信小程序
PC端程序
PC浏览器
其他设备
服务端:与客户端进行交互,接收客户端的数据、处理具体的业务逻辑、传递给客户端其需要的数据
“服务器”是一个非常宽泛的概念,从硬件而言: 服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。从软件而言: 服务器其实就是安装在计算机上的一个软件,根据其作用的不同又可以分为各种不同的服务器,例如应用服 ...
菜谱
烙饼蔬菜饼原料
蔬菜丝:比如南瓜、菠菜、韭菜等
葱花
鸡蛋+十三香+少许盐
少许面粉【可加可不加】
操作
加工食材
少量多次加面,搅拌成面糊,避免有面快。加面多了,可根据稠度加少量水
烹饪
热锅润油
重新加少许凉油
开小火,加入面糊,马上摊成饼。加盖焖三分钟
底面定型,烙至金黄后,翻面
两面金黄,出锅
拌黄瓜原料
两根黄瓜、花生、洋葱
葱碎、蒜末、辣椒面、白糖、盐、白芝麻、生抽、醋、花椒、食用油
操作
黄瓜重拍几下,切长条,然后切成滚刀块。
洋葱切丝,和黄瓜、花生一起盛盘
葱碎、蒜末、辣椒面、白糖、盐,白芝麻、加入调料碗备用
花椒热油,浇给上面调料碗
加入生抽、少许醋,搅拌好,浇给菜盘
搅拌成型
可乐鸡块原料
鸡块/鸡翅,葱、姜、白芝麻、生抽
操作
鸡块焯姜水去味
热锅冷油、煎至金黄
倒入可乐半瓶,开后,加入生抽,少许盐,小火焖15分钟
大火收汁,撒葱碎,白芝麻,出锅
铁锅保养能擦干净,尽量不用洗洁剂。有油膜,可以避免粘锅
JavaWeb_04_第四章_XML_Tomcat_HTTP
第四章 XML_Tomcat10_HTTP一 XML
XML是EXtensible Markup Language的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。
可扩展 三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写。
在XML基本语法规范的基础上,你使用的那些第三方应用程序、框架会通过XML约束的方式强制规定配置文件中可以写什么和怎么写
XML基本语法这个知识点的定位是:我们不需要从零开始,从头到尾的一行一行编写XML文档,而是在第三方应用程序、框架已提供的配置文件的基础上修改。要改成什么样取决于你的需求,而怎么改取决XML基本语法和具体的XML约束。
1.1 常见配置文件类型
properties文件,例如druid连接池就是使用properties文件作为配置文件
XML文件,例如Tomcat就是使用XML文件作为配置文件
YAML文件,例如SpringBoot就是使用YAML作为配置文件
json文件,通常用来做文件传输,也可以用来做前端或者移动端的配置文件
等等…
1. ...
SpringMVC请求流程设计
Spring基础 - SpringMVC请求流程和案例# Spring基础 - SpringMVC请求流程和案例
前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),那我们如何更好的构建上层的应用呢(比如web 应用),这便是SpringMVC;Spring MVC是Spring在Spring Container Core和AOP等技术基础上,遵循上述Web MVC的规范推出的web开发框架,目的是为了简化Java栈的web开发。 本文主要介绍SpringMVC主要的流程和基础案例的编写和运行。
# 引入
前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),同时我们也通过几个Demo应用了Core Container中包
那么问题是,我们如何在Core Container的基础上更好的构建上层的应用呢?比如web 应用。
针对上层的Web应用,SpringMVC诞生了,它也是Spring技术栈中最为重要的一个框架。
所以为了更好的帮助你串联整个知识体系,我列出了几个问题,通过如下几个问题帮你深入浅出的构建对 ...
JavaWeb_06_第六章_会话_过滤器_监听器
第六章 会话_过滤器_监听器一 会话1.1 会话管理概述1.1.1 为什么需要会话管理
HTTP是无状态协议
无状态就是不保存状态,即无状态协议(stateless),HTTP协议自身不对请求和响应之间的通信状态进行保存,也就是说,在HTTP协议这个级别,协议对于发送过的请求或者响应都不做持久化处理
简单理解:浏览器发送请求,服务器接收并响应,但是服务器不记录请求是否来自哪个浏览器,服务器没记录浏览器的特征,就是客户端的状态
举例: 张三去一家饭馆点了几道菜,觉得味道不错,第二天又去了,对老板说,还点上次的那几道菜
无状态: 老板没有记录张三是否来过,更没有记录上次他点了那些菜,张三只能重新再点一遍
有状态: 老板把每次来吃饭的用户都做好记录,查阅一下之前的记录,查到了张三之前的菜单,直接下单
1.1.2 会话管理实现的手段
Cookie和Session配合解决
cookie是在客户端保留少量数据的技术,主要通过响应头向客户端响应一些客户端要保留的信息
session是在服务端保留更多数据的技术,主要通过HttpSession对象保存一些和客户端相关的信息
cook ...
