Spring5_01_入门案例
Spring5 入门案例 IOC 是Spring框架的核心内容.使用多种方式完美的实现了IOC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置IOC. Spring容器在初始化时候先读取配置文件,根据配置文件或者元数据创建与组织对象存入容器中,程序使用的时候再从IOC容器取出需要的对象。 了解了 Spring是一个包含众多方法的IOC容器,也知道spring的核心功能就是将对象存放到Spring中,再将对象从Spring中取出来. 接下来我们创建一个Spring项目来实战一下,究竟Spring的IOC思想是怎么回事,怎么创建一个Spring项目,怎么将对象存放到Spring中,又怎么将对象从Spring中取出来..接下来我们逐一讲解. Spring的创建和使用 如何创建Spring项目呢? 首先我们要先创建一个Maven项目 引入框架支持-->spring的依赖 spring-context 和 spring-beans 然后创建一个启动类 创建一个Spring项目 1.创建一个Maven项目 我们第一步是创建一个Maven项目 ...
SpringMVC_00_SpringMVC简介
SpringMVC 简介 学习视频地址 什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。 V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据 C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。 MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完 ...
Redis_03_高级篇_分布式缓存(持久化、主从、哨兵、分片集群)
分布式缓存 单机的Redis存在四大问题 image-20210725144240631 0.学习目标 基于Redis集群解决单机Redis存在的问题 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: image-20210725144536958 save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。 2)bgsave命令 下面的命令可以异步执行RDB: image-20210725144725943 这个命令执行 ...
Java基础_16_反射
参考:https://frxcat.fun/ Java 反射 一个需求引出反射 问题定义 代码演示: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package com.reflection.question;import com.Cat;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Properties;/** * 反射问题的引入 * re.properties: * classfullpath = "com.Cat" * method = "hi&quo ...
Redis_02_实战篇(缓存、分布式锁、消息队列、BitMap、UV统计)
黑马点评网:https://www.bilibili.com/video/BV1cr4y1671t/ Redis实战篇-开篇导读 亲爱的小伙伴们大家好,马上咱们就开始实战篇的内容了,相信通过本章的学习,小伙伴们就能理解各种redis的使用啦,接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容 优惠卷秒杀 通过本章节,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列 附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注,共同关注等等功能,这一块知识咱们之前就讲过,这次我们在项目中来使用一下 打人探店 ...
Redis_01_入门篇(安装、基本命令、客户端)
黑马点评网:https://www.bilibili.com/video/BV1cr4y1671t/ Redis快速入门 Redis的常见命令和客户端使用 1.初识Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json: image-20220502190959608 而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。 1.1.认识NoSQL NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。 1.1.1.结构化与非结构化 传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束: 而NoSql则对数据库格式没有严格约束,往往形式松散,自由。 可以是键值型: 也可以是文档型 ...
MySQL_19运维_读写分离
MySQL 读写分离介绍 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。 通过MyCat即可轻易实现上述功能,不仅可以支持MySQL,也可以支持Oracle和SQL Server。 一主一从 原理 MySQL的主从复制,是基于二进制日志(binlog)实现的。 在 主从复制 章节有详细说明。 准备 主机 角色 用户名 密码 192.168.91.166 master root 123456 192.168.91.167 slave root 123456 备注:主从复制的搭建,可以参考前面文章中 主从复制 章节讲解的步骤操作。 结果验证 {13-14}1234567891011121314mysql> show replica status\G*************************** 1. row *************************** Replica_IO_State: ...
MySQL_18运维_分库分表
MySQL 分库分表介绍 问题分析 随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。 请求数据太多,带宽不够,网络IO瓶颈。 CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。 为了解决上述问题,我们需要对数据库进行分库分表处理。 分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。 拆分策略 分库分表的形式,主要是两种:垂直拆分和水平拆分。而拆分的粒度,一般又分为分库和分表,所以组成的拆分策略最终如下: 垂直拆分 垂直分库 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。 特点: 每个库的表结构都不一样。 每个库的数据也不一样。 所有库的并集是全量数据。 垂直分表 垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。 特点: 每个表的结构都不一样。 每个表的数据也不一样,一般通过一列(主 ...
MySQL_17运维_主从复制
MySQL 主从复制 概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。 MySQL 复制的优点主要包含以下三个方面: 主库出现问题,可以快速切换到从库提供服务。 实现读写分离,降低主库的访问压力。 可以在从库中执行备份,以避免备份期间影响主库服务。 原理 MySQL主从复制的核心就是 二进制日志,具体的过程如下: 从上图来看,复制分成三步: Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。 IOthread:从库读取主库的二进制日志文件 Binlog ,写入到从库的中继日志 Relay Log 。 SQLthread:slave重做中继日志中的事件,将改变反映它自己的数据。 搭建 准备 准备好两台服务器之后,在上述的两台服务器中分别安装好MySQL,并完成基础的初始化准备(安装、密码配置等操作)工作。 其中: 192. ...
设计模式_05_自定义Spring框架
7,自定义Spring框架 7.1 spring使用回顾 自定义spring框架前,先回顾一下spring框架的使用,从而分析spring的核心,并对核心功能进行模拟。 数据访问层。定义UserDao接口及其子实现类 12345678910public interface UserDao { public void add();}public class UserDaoImpl implements UserDao { public void add() { System.out.println("userDaoImpl ...."); }} 业务逻辑层。定义UserService接口及其子实现类 1234567891011121314151617public interface UserService { public void add();}public class UserServiceImpl implements UserService ...