learner

learner 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

learner 发布了文章 · 2020-11-14

Redis的持久化操作

1.Redis持久化策略

1.1 什么是持久化

说明:Redis运行环境在内存中,如果redis服务器关闭,则内存数据将会丢失.
需求: 如何保存内存数据呢?
解决方案: 可以定期将内存数据持久化到磁盘中.
持久化策略规则:
当redis正常运行时,定期的将数据保存到磁盘中,当redis服务器重启时,则根据配置文件中指定的持久化的方式,实现数据的恢复.(读取数据,之后恢复数据.)

1.2 RDB模式

1.2.1RDB模式特点说明

1).RDB模式是Redis默认的策略.
2).RDB模式能够定期(时间间隔)持久化. 弊端:可能导致数据的丢失.
3).RDB模式记录的是内存数据的快照.持久化效率较高. 快照只保留最新的记录.

1.2.2 RDB模式命令

1.save命令: 将内存数据持久化到磁盘中 主动的操作 会造成线程阻塞
2.bgsave命令: 将内存数据采用后台运行的方式,持久化到文件中. 不会造成阻塞.
3.默认的持久化的机制
save 900 1 如果在900秒内,执行了1次更新操作,则持久化一次
save 300 10 如果在300秒内,执行了10次更新操作,则持久化一次
save 60 10000 如果在60秒内,执行了10000次更新操作,则持久化一次

1.2.3 持久化文件配置

1).指定持久化文件
image.png
2).指定持久化文件目录
image.png

1.3 AOF模式

1.3.1 AOF模式特点

1).AOF模式默认条件下是关闭的.需要手动开启
2).AOF模式记录的是用户的操作过程,所以可以实现实时持久化操作.
3).AOF模式由于记录的是实时的操作过程,所以持久化文件较大.需要定期维护.

1.3.2 启动AOF模式

说明:如果一旦开启AOF模式,则以AOF模式为准.
image.png

1.4 关于持久化操作总结

1.当内存数据允许少量丢失时,采用RDB模式 (快)
2.当内存数据不允许丢失时,采用AOF模式(定期维护持久化文件)
3.一般在工作中采用 RDB+AOF模式共同作用,保证数据的有效性.

1.5 面试题

问题: 如果小李(漂亮妹子)在公司服务器中执行了flushAll命令,问怎么办?
答: 需要找到aof文件之后,删除flushAll命令 之后重启redis,执行save命令即可.

2.内存优化策略

2.1 为什么需要内存优化

说明: 由于redis在内存中保存数据.如果一直存储,则内存数据必然溢出.所以需要定期维护内存数据的大小.
维护策略: 删除旧的不用的数据,保留新的常用的数据

2.2 LRU算法

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
计算维度: 时间T
注意事项: LRU算法是迄今为止内存中最好用的数据置换算法.

2.3 LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
维度: 使用次数

2.4 随机算法

随机算法.

2.5 TTL算法

根据剩余的存活时间,将马上要超时的数据提前删除.

2.6 配置内存优化策略

image.png
3.volatile-lfu 在设定了超时时间的数据中,采用lfu算法
4.allkeys-lfu 所有数据采用lfu算法
5.volatile-random 设置超时时间数据的随机算法
6.allkeys-random 所有数据的随机
7.volatile-ttl 将设定了超时时间的数据,提前删除.
8.noeviction 默认规则 如果设定noeviction 则不删除数据,直接报错返回.

手动修改redis内存优化策略:
image.png

3.关于缓存面试问题

问题出发点:
由于缓存失效,导致大量的用户的请求,直接访问数据库服务器.导致负载过高,从而引发整体宕机的风险!!!

3.1 缓存穿透

说明: 用户频繁访问数据库中不存在的数据,可能出现缓存穿透的现象.如果该操作是高并发操作,则可能直接威胁数据库服务器.
解决方案:
1.采用IP限流的方式 降低用户访问服务器次数. IP动态代理(1分钟变一次)
2.微服务的处理方式: 利用断路器返回执行的业务数据即可不执行数据库操作 从而保护了数据库.
3.微服务处理方式: API网关设计. 不允许做非法操作

3.2 缓存击穿

说明: 由于redis中某个热点数据由于超时/删除等操作造成数据失效.同时用户高并发访问该数据,则可能导致数据库宕机.该操作称之为 缓存击穿.
解决方案: 可以采用多级缓存的设计. 同时数据的超时时间采用随机数的方式.
image.png

3.3 缓存雪崩

说明: 由于redis内存数据大量失效.导致用户的访问命中率太低.大量的用户直接访问数据库,可能导致数据库服务器宕机. 这种现象称之为缓存雪崩.
解决:
1.采用多级缓存.
2.设定不同的超时时间
3.禁止执行 flushAll等敏感操作.

4.Redis分片机制

4.1 Redis分片说明

说明: 如果需要Redis存储海量的内存数据,使用单台redis不能满足用户的需求,所以可以采用Redis分片机制实现数据存储.
注意事项:
如果有多台redis,则其中的数据都是不一样的…
image.png

4.2 Redis部署

搭建端口:6379/6380/6381

4.2.1 准备配置文件:

6379.conf 6380.conf 6381.conf
image.png

4.2.2 修改端口号

只修改80/81的端口即可
image.png

4.3 Redis分片测试

image.png

4.4 一致性HASH算法

4.4.1 概念

一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题
[1] 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题 [2] 。

4.4.2 原理说明

知识复习:

  1. 常规hash由多少位16进制数组成??? 8位16进制数组成 2^32次方
  2. 如果对相同的数据进行hash计算问结果是否相同??? 结果必然相同.

image.png

4.4.3 特性一平衡性

①平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题.
实现平衡性的方案: 引入虚拟节点
image.png

4.4.3 特性二单调性

②单调性是指在新增或者删减节点时,不影响系统正常运行 [4] 。
特点:在进行数据迁移时,要求尽可能小的改变数据.
image.png

4.4.4 特性三分散性

③分散性是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数据 [4] 。
俗语: 鸡蛋不要到放到一个篮子里

4.5 SpringBoot整合Redis分片

4.5.1 编辑properties配置文件

image.png

4.5.2 编辑配置类

image.png

4.5.3 修改AOP缓存注入

说明:将AOP中的注入对象切换为分片对象
image.png

5 Redis哨兵机制

5.1 分片机制存在的问题

说明: redis分片主要的作用是实现内存数据的扩容.但是如果redis分片中有一个节点宕机,则直接影响所有节点的运行. 能否优化?
实现策略: 采用Redis哨兵机制实现Redis节点高可用.

5.2 Redis节点主从配置

5.2.1 准备主从节点

1).关闭redis分片的节点,之后复制配置文件准备哨兵的配置.
image.png
2).复制分片的目录 改名为sentinel
image.png
3).删除多余的持久化文件,保存redis配置文件
image.png
4).启动3台Redis服务器
image.png

5.2.2 实现redis主从

命令: info replication 检查redis节点的状态信息
image.png
节点划分: 6379 当主机 6380/81 当从机

命令2: 实现主从挂载 slaveof host port
image.png
image.png
3).检查6379主机的状态
image.png
结论: redis所有节点都可以相同通信.并且路径当前的主从的状态.

数据主从同步的状态
image.png

5.3 哨兵机制工作原理

1).当哨兵启动时,会链接redis主节点,同时获取所有节点的状态信息
2).当哨兵连续3次通过心跳检测机制(PING-PONG),如果发现主机宕机,则开始选举.
3).哨兵内部通过随机算法筛选一台从机当选新的主机.其他的节点应该当新主机的从.
image.png

5.4 哨兵机制配置

image.png

5.4.1 关闭保护模式

image.png

5.4.2 开启后台运行

image.png

5.4.3 配置投票机制

image.png

5.5 哨兵高可用测试

1.启动哨兵 redis-sentinel sentinel.conf
image.png
2).检查哨兵配置
image.png
3)将主机宕机,之后检查从机是否当选主机
image.png
4).启动之前的主机,检查是否当选新主机的从
image.png
5).如果搭建异常 则删除重做
关闭所有redis服务器.
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-14

SpringBoot整合Redis

1.Redis命令

1.1 入门案例操作

image.png

2 SpringBoot整合Redis

2.1 编辑pro配置文件

由于redis的IP地址和端口都是动态变化的,所以通过配置文件标识数据. 由于redis是公共部分,所以写到common中
image.png

2.2 编辑配置类

image.png

3 对象与JSON串转化

3.1 对象转化JSON入门案例

image.png

3.2 编辑ObjectMapper工具API

image.png

4 实现商品分类缓存实现

4.1 编辑ItemCatController

说明: 切换业务调用方法,执行缓存调用
image.png

4.2 编辑ItemCatService

image.png

5. AOP实现Redis缓存

5.1 现有代码存在的问题

1.如果直接将缓存业务,写到业务层中,如果将来的缓存代码发生变化,则代码耦合高,必然重写编辑代码.
2.如果其他的业务也需要缓存,则代码的重复率高,开发效率低.
解决方案: 采用AOP方式实现缓存.

5.2 AOP

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

5.3 AOP实现步骤

公式: AOP(切面) = 通知方法(5种) + 切入点表达式(4种)

5.3.1 通知复习

1.before通知 在执行目标方法之前执行
2.afterReturning通知 在目标方法执行之后执行
3.afterThrowing通知 在目标方法执行之后报错时执行
4.after通知 无论什么时候程序执行完成都要执行的通知

上述的4大通知类型,不能控制目标方法是否执行.一般用来记录程序的执行的状态.
一般应用与监控的操作.

5.around通知(功能最为强大的) 在目标方法执行前后执行.
因为环绕通知可以控制目标方法是否执行.控制程序的执行的轨迹.

5.3.2 切入点表达式

1.bean(“bean的ID”) 粒度: 粗粒度 按bean匹配 当前bean中的方法都会执行通知.
2.within(“包名.类名”) 粒度: 粗粒度 可以匹配多个类
3.execution(“返回值类型 包名.类名.方法名(参数列表)”) 粒度: 细粒度 方法参数级别
4.@annotation(“包名.类名”) 粒度:细粒度 按照注解匹配

5.3.3 AOP入门案例

image.png

5.4 AOP实现Redis缓存

5.4.1 业务实现策略

1).需要自定义注解CacheFind
2).设定注解的参数 key的前缀,数据的超时时间.
3).在方法中标识注解.
4).利用AOP 拦截指定的注解.
5).应该使用Around通知实现缓存业务.

5.4.2 编辑自定义注解

image.png

5.4.3 方法中标识注解

image.png

5.4.4 编辑CacheAOP

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-14

数据库的高可用

1.实现数据库高可用

1.1 搭建策略

1.1.1 问题说明

说明:如果根据如下的配置实现数据库的代理,如果数据库主库宕机,则直接影响整个程序的执行.所以需要实现高可用机制.
高可用实现的问题:
如果实现了数据库高可用,可以自动的切换数据库,由于用户直接操作了从库,当主库启动时发现数据不一致时,主从同步的状态将会终止.
image.png

1.1.2 双机热备(双主模式)

说明:可以通过数据库双主模式实现数据库高可用.
双主模式实质都是主机,互相备份.
image.png

1.1.3 双机热备的实现

之前的配置:
主机: 192.168.126.129
从库: 192.168.126.130
现在的配置:
主机: 192.168.126.130
从库: 192.168.126.129
1).检查主库状态
image.png
2).实现数据库主从搭建
image.png

1.2 数据库高可用实现

1).编辑配置文件
image.png
2).上传配置文件:
image.png
3).重启mycat服务器

1.3 数据库高可用实测试

1.启动服务器,测试mysql数据库是否正常.
image.png
image.png
image.png
3).修改数据库中的内容,重启主数据库,检查数据是否同步
image.png
image.png
image.png

1.4 检查端口占用情况

image.png
image.png

2 Redis缓存学习

2.1 优化现有架构

说明:通过缓存服务器可以有效的提升用户的访问的效率.
注意事项:
1.缓存的数据结构 应该选用 K-V结构 只要key唯一 那么结果必然相同…
2.缓存中的数据不可能一直存储,需要定期将内存数据进行优化 LRU算法…
3.缓存要求运行速度很快, C语言实现… 运行在内存中.
4.如果缓存运行的数据在内存中,如果断电/宕机,则内存数据直接丢失. 实现内存数据的持久化操作(磁盘).
image.png

2.2 Redis缓存服务器

网址: http://www.redis.cn/

2.2.1 Redis介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
nginx: 3-5万/秒
redis: 读: 11.2万/秒 写: 8.6万/秒 平均10万/秒
吞吐量: 50万/秒

2.2.2 Redis安装

1).解压redis文件
image.png
2).移动文件/修改文件
image.png
3).安装Redis
命令1: make
命令2: make install
image.png

2.2.3 修改redis.conf配置文件

1.修改IP绑定
image.png
2.关闭保护模式
image.png
3.开启后台启动
image.png

2.2.4 Redis命令

1.启动redis redis-server redis.conf
image.png
2.检查redis服务项
image.png

  1. 进入redis客户端

image.png
4.关闭redis
1).命令 redis-cli -p 6379 shutdown
2).kill命令 kill -9 pid号
image.png

2.3 SpringBoot整合Redis

2.3.1 导入jar包

image.png

2.3.2 入门案例

image.png

2.3.3 构建项目结构

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-14

Linux安装Nginx步骤

1. Nginx安装步骤

1.1 官网介绍

image.png
image.png

1.2 上传安装包

上传到指定目录中 /usr/local/src
image.png

1.3 解压Nginx 压缩文件

image.png
1.移动安装目录到指定文件
image.png
2.修改文件名称
image.png

1.4 关于nginx 目录说明

image.png

1.5 安装nginx服务器

说明:在源文件中执行如下命令

  1. ./configure

image.png
直接结果:
image.png
2.make
image.png
3.make install
image.png

1.6 nginx命令说明

说明: nginx工作目录说明
路径:
image.png
命令:
1.windows命令:
1.启动命令: start nginx
2.重启命令: nginx -s reload
3.关闭命令: nginx -s stop
image.png

1.7 修改nginx配置文件

image.png
需求说明:
1.实现图片反向代理
2.实现tomcat负载均衡实现

具体实现:
修改完成之后,重启nginx服务器.
image.png

1.8.修改hosts文件

说明:由于没有购买image/manage.jt.com的域名,所以需要通过hosts文件修改转向.
修改windows中的hosts文件:
image.png

1.9效果展现

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-14

Linux安装部署的常见问题及解决

1.代码还原

1.1 IP地址问题

问题描述:windows的IP链接不通Linux中的IP地址
image.png
image.png
问题说明:当虚拟机启动时,虚拟网卡没有正常的工作导致的,只需要重启网卡即可
image.png
重启网卡命令:
image.png

1.2 还原hosts文件

image.png

1.3 还原图片路径

image.png

1.4 还原nginx配置

让域名访问8091服务器。
image.png

2.数据库相关学习

2.1 数据库备份策略

2.1.1 数据库冷备份

说明:通过数据库工具,定期将数据库文件进行转储,保证数据的安全性(一般2~3天)
缺点:
1.备份由于突发的情况,可能导致备份失败,需要反复备份
2.由于冷备份是定期备份,所以可能导致数据的丢失

核心:
数据必须备份,备份的数据是恢复的最后有效的手段。
image.png
image.png

2.1.2 数据库热备份

说明:可以通过数据库机制,自动的实现数据的备份操作
优点:可以实现自动化的操作,并且是实时备份
image.png
备份实现原理:
1.当数据库主机的数据发现变化时,会将修改的数据写入二进制日志文件中。
2.从库通过IO线程,读取主库的二进制日志文件,获取之后,将数据保存到中继(临时存储)日志中
3.从库中开启Sql线程,之后读取中继日志中的数据,之后将数据同步到从库中。

2.2 准备多台服务器

2.2.1 修改虚拟机名称

说明:把之前的虚拟机的压缩包重新解压一份新的虚拟机,并且改名为JT_LINUX_S之后启动即可
image.png

2.2.2 修改Linux从机的mac地址

为了保证2台虚拟机正常稳定的运行,需要修改mac地址
image.png

2.2.3 安装数据库从库

具体参见此文档,网址如下(安全网站):
https://segmentfault.com/a/11...

2.3 数据库主从搭建

2.3.1 开启主库二进制文件

说明:主库的二进制日志文件,默认条件下是关闭的,需要手动的开启.
命令: vim /etc/my.cnf
编辑二进制日志文件:
image.png
重启数据库,检查二进制日志文件,是否可用.
image.png
重启之后,生成二进制文件
image.png

2.3.2 开启从库二进制配置文件

修改文件: vim /etc/my.cnf
添加的操作和主库一致,之后重启数据库服务器,效果如下:
image.png

2.3.3 数据库主从搭建

1).检查主库的状态
image.png
2). 实现数据库主从挂载
image.png
3).主从状态的校验
image.png

2.3.4 数据库主从测试

注意事项:
1.修改主库的数据,从库会跟着同步数据.
2.如果修改从库数据,则主从的关系将会终止.

2.4 数据库读写分离/负载均衡实现

2.4.1 数据库优化策略

说明:通过代理数据库可以实现数据库的读写分离/数据库负载均衡操作,进一步的提升了整体架构的能力.
image.png

2.4.2 Mycat

image.png

2.4.3 Mycat特性

支持SQL92标准
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
基于Nio实现,有效管理线程,解决高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
支持多租户方案。
支持分布式事务(弱xa)。
支持XA分布式事务(1.6.5)。
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的web,命令行监控。
支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支持密码加密
支持服务降级
支持IP白名单
支持SQL黑名单、sql注入攻击拦截
支持prepare预编译指令(1.6)
支持非堆内存(Direct Memory)聚合计算(1.6)
支持PostgreSQL的native协议(1.6)
支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
支持库内分表(1.6)
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

2.5 部署步骤

2.5.1 上传myCat服务器

image.png

2.5.2 解压Mycat

image.png
移动安装文件:
image.png

2.5.3 server.xml配置文件说明

注意事项: 默认条件下的端口号8066端口
image.png

2.5.3 schema.xml配置

image.png

2.5.4 实现配置文件上传

image.png

2.5.5 Mycat命令

Usage: ./mycat { console | start | stop | restart | status | dump }
image.png

2.5.6 检查mycat日志

image.png

2.5.7 Mycat负载均衡测试

修改从库中的数据库.刷新列表页面.检查是否有负载均衡的效果.
注意事项: 如果测试完成,记得将数据修改 保证一致.

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-14

Linux安装MariaDB数据库

1.下载MariaDB数据库

测试:当前虚拟机是否可以正常的链接外网。
image.png
命令:
image.png
image.png

2 确认下载

image.png

3 安装完成提示

image.png

4 数据库启动

命令:
image.png

5. 数据库初始化操作

命令: mysql_secure_installation
image.png

6.测试数据库用户名和密码是否有效

image.png

7.导入数据表

说明:如果mysql数据库需要导入数据表命令如下:
命令: source /xxx/xxxx/xxxx/jtdb.sql
image.png

8.Mysql数据库远程访问配置

image.png

8.1 关于链接数据库的说明

说明:

  1. 如果需要远程链接数据库必须通过防火墙
  2. 如果远程链接数据库,数据库中必须开启远程访问权限才行,否则拒绝链接.

8.2 配置数据库权限配置说明

image.png

8.3 配置Linux数据库权限

8.3.1 切换数据库mysql

image.png
切换Mysql数据库
image.png

8.3.2 修改数据库表

1)。检查数据表
image.png
2).查询user表中的host/root/password
image.png
3).将host="localhost"改为"%"
image.png
4).刷新数据库权限
image.png

9. 配置Linux防火墙策略

9.1 检查防火墙状态

命令: firewall-cmd --state
image.png

9.2 防火墙配置

说明:防火墙中有一个配置文件,表示当Linux系统启动时防火墙应该如何操作!!!
需求: 告诉linux系统以后开机不需要启动防火墙
命令: systemctl disable firewalld.service
systemctl enable firewalld.service
image.png

9.3 手动关闭防火墙

说明:通过命令手动将防火墙关闭
命令:

  1. systemctl stop firewalld.service
  2. systemctl start firewalld.service

image.png

9.4 手动开放防火墙端口

1). 检查防火墙开放的端口
image.png
2).检查端口是否开放
image.png
image.png
3). 开启防火墙
image.png
image.png
4).移除端口
image.png
image.png
5).关于防火墙操作的解释
–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–remove-port=80/tcp #移除端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

6).重启防火墙
image.png

9.4 数据库远程测试

image.png

9.5 导入jtdb.sql

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-09

Linux部署及Mysql,tomcat安装配置

1. Linux项目部署说明

1.1 部署流程图

image.png

1.2 Linux安装Mysql数据库

具体参见博客文档 ,数据库安装.

1.3 修改jt-manage的配置

1.3.1 修改图片上传地址

说明:在Linux目录中指定一个图片存储的目录
image.png

1.3.2 项目打包及发布

image.png

1.3.3 上传war包文件

image.png

1.3.4 代码修改

遗留问题:
image.png

1.3.5 项目发布

image.png
通过IP地址访问即可.
image.png

1.4 tomcat集群部署

1.4.1 war包部署说明

image.png

1.4.2 如何执行多个命令

  1. 可以利用&符 连续执行命令

image.png

1.4.3 如何关闭服务器

命令: ps -ef | grep java
命令2: 只检索java服务 jps
image.png

命令说明:
1."|" 管道 管道之前查询的结果,当做管道之后的参数(条件)进行操作.

  1. kill 杀死进程

kill PID号 普通关闭进程 (弱关闭)
kill -15 PID号 必须关闭,但是可以执行后续操作.
kill -9 PID号 强制关闭, 不给任何时间执行后续任务.
image.png

1.4.4 关于Linux后台启动

说明: 通过java -jar 8081.war的方式启动,只能在前台进行执行,如果关闭链接的终端,则程序也会跟着一起关闭,所以需要开启Linux后台运行.
命令:
image.png
image.png

1.4.5 关于查看命令学习

cat 输出文件所有的内容
more 输出文档所有的内容,分页输出,空格浏览下一屏,q退出
less 用法和more相同,只是通过PgUp、PgOn键来控制
tail 用于显示文件后几号,使用频繁
tail -10 nginx.conf 查看nginx.conf的最后10行
tail –f nginx.conf 动态查看日志,方便查看日志新增的信息
ctrl+c 结束查看

1.5 脚本启动tomcat服务器

说明: Linux中的脚本一般采用shell脚本.
步骤:
1.编辑start.sh的脚本文件
vim start.sh
image.png
2.指定脚本的文件头
3.指定脚本的内容.
image.png
4.执行脚本
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-09

Nginx详解配置与Linux环境搭建

1. Nginx属性说明

image.png

1.1 down属性

说明:如果服务器宕机,或者该服务器不想为用户继续提供服务,则可以采用shutdown属性进行标识.
nginx访问规则: 如果nginx访问的服务器不能正常的响应,则等待超时之后,访问新的服务器.
image.png

1.2 backup属性

说明:backup表示备用机.正常情况下,该服务器不会为用户提供服务.但是当服务器宕机,或者服务器正忙时,才会访问该服务器.
image.png

1.3 tomcat服务器高可用机制

高可用: 当服务器发生故障时,通过某种机制可以自动的实现故障的迁移,从而使得用户不受任何的影响.
image.png

2. 关于虚拟机说明

2.1 修改虚拟机IP地址

image.png
2.检查网关地址
image.png

3.设置IP租约
image.png

2.2 远程服务器链接

image.png

3. Linux环境搭建

3.1 安装JDK

3.1.1 上传JDK文件

image.png

3.1.2 解压JDK

image.png

3.1.3 移动安装包

移动安装包
image.png

3.1.4 修改文件名称

image.png
image.png

3.1.5 配置JDK环境变量

文件目录: /etc/profile
编辑文件: vim /etc/profile
image.png
让环境变量生效:
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-09

商品后台系统优化

1. 京淘后台优化

1.1 路径优化

1.1.1 编辑properties配置文件

image.png

1.1.2 编辑FileServiceImpl

动态为属性赋值.
image.png

2 实现商品图片回显

2.1 反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。 [1]

特点:

  1. 反向代理服务器位于用户与目标服务器之间
  2. 对于用户而言,以为代理服务器就是真实的服务器.
  3. 反向代理机制保护了真实的服务器信息.

4. 反向代理一般称之为服务端代理.
image.png

步骤:
1.当用户发起请求时,该请求被代理服务器拦截.
2.代理服务器查询自己的配置文件,根据url地址获取真实的服务器信息.
3.由代理服务器根据真实的服务器信息,获取数据.
4.真实的服务器接收请求之后,将数据返回给代理服务器.
5.代理服务器接收到服务器数据之后,将数据回传给用户,本次代理结束.

2.2 正向代理

2.2.1 正向代理说明

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

特点:
1.代理服务器位于用户与真实服务器之间的
2.客户非常清楚自己访问的服务到底是谁?
3.服务器不清楚访问自己的服务器到底是谁,以为只是代理服务器访问.
4.正向代理称之为客户端代理.保护了客户的信息
image.png

2.3 Nginx

2.3.1 Nginx服务器介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

特点:
1.占用内存少 不超过2M
2.并发能力强 5万/秒 tomcat 150-220个/秒
3.开发语言 C语言

2.3.2 Nginx下载

image.png

2.3.3 nginx安装

启动: 首先右键以管理员身份运行,之后程序闪退表示服务器启动正常.
image.png

2.3.4 检查Nginx服务启动项

nginx启动时,会启动2个进程项,其中一个
1.主进程 主要为用户提供反向代理服务 占用内存大
2.守护进程 防止主进程意外关闭的. 占用内存小的
image.png

2.3.4 启动正常测试

image.png

2.4 NGINX入门案例说明

2.4.1 配置文件说明

image.png

2.5 NGINX实现图片回显

2.5.1 编辑Nginx.conf文件

image.png

2.5.2 nginx命令

目录: 在nginx的根目录中执行
image.png

命令:
image.png

2.5.3 编辑hosts文件

介绍: HOSTS文件是操作系统为了方便开发,在本地形成的一个域名与IP的映射的文件. 但是该文件只对本机有效.
位置: C:WindowsSystem32driversetchosts
image.png
文件内容:
image.png

2.5.4 关于nginx回显图片报错问题说明

1.检查配置文件是否正确
image.png

2.检查上传路径
image.png

3.检查nginx配置是否正常
image.png
4.检查nginx是否启动正常
image.png

5.检查hosts文件是否有效 如果不生效重启计算机
image.png

2.6 实现域名的代理

2.6.1 业务需求

需求: 需要通过http://manage.jt.com域名访问l...:8091的服务器.
操作:
1.修改hosts文件
2.修改nginx的配置文件

2.6.2 修改nginx.conf配置文件

修改nginx之后,重启即可.
image.png

2 nginx高级用法

2.1 nginx负载均衡机制

说明: 为了提升后台服务器的处理能力,可以增加服务器.实现负载均衡的策略.
image.png

2.2 动态获取服务器端口号.

请求路径: http://manage.jt.com/getPort 获取到当前的服务器端口号信息.
image.png

2.3 项目打包

2.3.1 利用maven方式打包

说明:修改各自的端口号,之后将项目打包
image.png

2.3.2 利用压缩工具打包

将xxx.war改为xxx.zip 之后利用压缩工具修改配置文件,之后再次改为xxx.war即可
image.png

2.3.3 项目发布

命令: java -jar 8081.war 会占用一个终端窗口, 在运行时,终端不能关闭的.
image.png
image.png

2.3.4 释放资源的组合键

ctrl + c

2.4 nginx负载均衡测试

2.4.1 轮询策略

说明: 按照nginx.conf中配置文件的顺序依次访问
image.png

2.4.2 权重策略

说明: 由于公司的物理服务器可能性能有高有低,为了让高性能的服务器处理更多的数据.
image.png

2.4.3 IPHASH策略

说明:如果需要将服务器与IP地址进行绑定时,使用该策略
image.png
原理:
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-09

商品后台系统实现

1.京淘商品后台实现

1.1 京淘后台表设计

image.png

1.2 准备POJO对象

image.png

1.3 富文本编辑器介绍

KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。
image.png
image.png

1.4 重构商品新增操作

1.4.1 编辑ItemController

image.png

1.4.2 编辑ItemService

image.png

1.5 商品详情回显

1.5.1 页面分析

image.png

1.5.2 编辑ItemController

image.png

1.5.2 编辑ItemController

image.png

1.5.3 页面效果展现

image.png

1.6 重构商品修改

1.6.1 编辑ItemController

image.png

1.6.2 编辑ItemService

image.png

1.6 重构商品删除

1.6.1 编辑ItemService

image.png

2.实现文件上传操作

2.1 入门案例

2.1.1 编辑页面

image.png

2.1.2 编辑FileController

image.png

2.2 封装文件上传VO对象-imageVO

image.png

2.3 实现文件上传

2.3.1 页面url分析

image.png
2.获取参数名称
image.png

2.3.2 编辑FileController

image.png

2.3.3 编辑FileService

image.png

2.3.4 页面效果展现

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-09

商品后台管理实现分析步骤

1.商品后台管理

1.1 商品新增

1.1.1 页面的分析

1.URL分析
image.png
2.参数分析
image.png
3.页面JS页面
image.png

1.1.2 封装SysResult

说明:在jt-common中添加系统返回值VO对象
image.png

1.1.3 编辑ItemController

image.png

1.1.4 编辑ItemService

image.png

1.2 全局异常处理机制说明

说明:在jt-common中 添加全局异常处理机制.
image.png

1.3 自动填充功能

1.3.1 业务需求

例如更新时间/创建时间,每个业务操作时都需要更新相关数据,能否将数据进行优化,简化程序调用.
image.png

1.3.2 编辑BasePOJO 指定填充属性

image.png

1.3.2 编辑配置类

说明:在jt-common中 编辑配置类,实现自动填充功能.
image.png

1.4 商品修改操作

1.4.1 页面分析

image.png

1.4.2 实现修改页面分类信息回显

image.png
知识回顾:
说明:可以通过商品分类Id,动态获取商品分类的名称.请求路径按照图中标识.
image.png
3.编辑页面JS
image.png

1.4.3 商品修改的ajax

image.png

1.4.4 编辑ItemController

image.png

1.4.5 编辑ItemService

image.png

1.5 商品删除操作

1.5.1 页面url分析

image.png
2.参数提交
image.png
3.页面JS分析
image.png

1.5.2 编辑ItemController

image.png

1.5.3 编辑ItemService

image.png

1.5.4 编辑ItemMapper

image.png
image.png

1.6 实现商品上架/下架操作

1.6.1 业务需求

说明:如果修改商品的状态信息. 上架=1 下架=2. 只需要修改数据库记录即可.
image.png
url分析:
http://localhost:8091/item/instock 下架操作 status=2
http://localhost:8091/item/reshelf 上架操作 status=1

需求: 能否利用一个方法实现上架/下架操作???
http://localhost:8091/item/updateStatus/2 下架操作 status=2
http://localhost:8091/item/updateStatus/1 上架操作 status=1

1.6.2 修改页面JS

说明:将页面上架/下架操作,按照上述分析进行修改.
image.png

1.6.3 编辑ItemController

image.png

1.6.3 编辑ItemService

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-03

后台管理实现

京淘后台管理实现

1.1 商品列表展现

1.1.1 商品POJO对象

image.png

1.1.2 表格数据页面结构

image.png

1.1.3 请求URL地址

说明:如果采用UI框架并且添加了分页插件,则会自动的形成如下的URL请求地址
image.png

1.1.4 编辑ItemController

image.png

1.1.5 编辑ItemService

image.png

1.1.6 编辑ItemMapper

手动编辑分页操作
image.png

1.2 MybatisPlus实现分页查询

1.2.1 编辑业务调用

image.png

1.2.2 编辑MybatisPlus配置类

说明:在jt-common中添加MP的配置文件

2.商品分类目录实现

2.1 封装POJO对象

image.png

2.2 页面JS引入过程

2.2.1 引入JS/CSS样式

image.png

2.2.2 引入common.jsp

image.png

2.3 数据格式化

2.3.1 格式化价格

image.png

2.3.2 格式化状态

image.png

2.4 格式化商品分类目录

2.4.1 页面结构分析

image.png

2.4.2 编辑ItemCatController

image.png

2.4.2 编辑ItemCatService

image.png

2.4.3 页面效果展现

image.png

2.4.3 ajax嵌套问题

说明: 如果在ajax内部再次嵌套ajax请求,则需要将内部的ajax请求设置为同步状态.
俗语: 赶紧走吧 赶不上二路公交车了…
核心原因: 页面需要刷新2次都是只刷新一次.

2.5 关于页面工具栏说明(看懂即可)

image.png

2.5.1 jQuery基本用法

1.选择器 在整个html页面 根据某些特定的标识 准确的定位元素的位置.

  1. Id选择器 $("#元素的Id")
  2. 元素(标签)选择器 $(“tr”)
  3. 类选择器 $(".class的名称") [{},{},{}]

3 商品分类目录树形结构展现

3.1 ItemCat表结构设定

问题分析: 商品分类信息一般分为3级. 问题: 如何确定父子级关系的呢??
答: 通过定义父级的字段实现
image.png

3.2 3级表数据的分析

说明:通过parentId 根据父级的ID查询所有的子级信息. 当查询一级菜单时parentId=0;
image.png

3.3 EasyUI中树形结构说明

1.页面JS
image.png
2.返回值说明
image.png

3.4 封装树形结构VO对象

image.png

3.5 页面JS结构说明

image.png

3.6 异步树加载说明

树控件读取URL。子节点的加载依赖于父节点的状态。当展开一个封闭的节点,如果节点没有加载子节点,它将会把节点id的值作为http请求参数并命名为’id’,通过URL发送到服务器上面检索子节点。
image.png

3.7 编辑ItemCatController

image.png

3.8 编辑ItemCatService

image.png

3.9页面效果展现

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-11-02

后台管理系统

1.京淘后台管理系统

1.1 Ajax总结

image.png

1.2 分布式思想

1.2.1 分布式分类

1.分布式计算
说明:一项任务有多个服务器共同完成
例子:假设一项任务单独完成需要10天,如果有10个人同时执行则一天完成. 大数据处理技术。
2.分布式系统
说明:将项目按照特定的功能模块及层级进行拆分,从而降低整个系统架构的耦合性问题

1.2.2 传统项目存在的问题

总结: 传统项目将所有的模块都写到一起,如果其中一个模块出现了问题,则可能导致所有的服务不可用,.用户的体验较差,并且架构设计耦合性高.image.png

1.2.3 分布式项目拆分

核心:无论将来项目怎么拆分,都是同一个系统. 口诀: 对外统一,对内相互独立

1.2.3.1 按照模块拆分

由于单体架构中耦合性太高,所以采用了分布式思想,将项目按照模块进行拆分,使得各个模块之间互相不影响.提高了整体的扩展性.
image.png

1.2.3.2 按照层级拆分

说明:由于某些项目功能实现起来比较复杂,需要多人协同合作,则需要将项目按照层级再次拆分
image.png

1.2.4 分布式系统引发的问题

1.分布式系统中jar包文件如何统一管理?
2.分布式系统中工具API如何统一管理?
image.png

2 京淘项目后端搭建

2.1 创建父级工程jt

2.1.1 新建项目

打包方式: pom 表示:该项目是一个聚合工程,里边包含了很多的小项目,并且该项目可以统一管理公共的jar包文件.
image.png

2.1.2 编辑POM.xml文件

image.png

2.2 编辑工具API jt-common

打包类型: jar

2.2.1 创建项目

image.png

2.2.2 检查是否有父子级关系

image.png

2. 3 创建jt-manage项目

打包方式:war包 注意IDEA的工作目录的配置

2.3.1 创建项目

image.png

2.3.2 编辑pom.xml文件

image.png

2.3.3 导入静态资源文件

说明:将准备好的文件导入。
image.png

2.3.4 修改启动项

image.png
image.png

2.4 关于SpringBoot默认页面访问说明

说明:SpringBoot项目中如果用户采用缺省值访问时,则SpringBoot会采用模板工具API进行页面跳转. 如果使用模板工具API则会动态的拼接视图解析器的前缀和后缀
eg:
前缀:/WEB-INF/views/
后缀:.jsp
默认系统欢迎页面的全路径:/WEB-INF/views/index.jsp
image.png

3.京淘后台页面结构说明

3.1 京淘后端页面布局说明

image.png
image.png

3.2 树形结构

image.png
image.png

4.京淘后台实现(1)

4.1 通用页面跳转实现

image.png

4.2 UI框架--表格数据展现说明

核心:JS中需要什么数据,后端程序员九丰装什么数据!!!

4.2.1 常见缩写介绍

1.POJO(plain ordinary java object 简单java对象):与数据库映射的实体类对象
2.VO(value object值对象,ViewObject表现层对象):数据展现层的对象 主要与页面JS进行数据交互的媒介
3:PO(persistant object持久对象):最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象.
4.BO(business object业务对象):
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。

4.2.2 EasyUI表格定义

image.png

4.2.3 表格数据返回格式说明

image.png

4.2.4 根据返回值 定义VO对象

image.png

4.3 JSON结构说明

4.3.1 什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

4.3.2 JSON格式--对象格式

对象(object) 是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
image.png
eg: {"id":"100","name":"王路飞"}

4.3.3 JSON格式--数组格式

image.png
eg:["1","玩","学习"]

4.3.4 JSON格式--嵌套格式

image.png
eg: ["敲代码","打游戏",[1,2,3,4,5],{"id":100,"name":"索隆","hobby":["吃东西","打豆豆","玩联盟"]}]

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-10-30

Mybatis-Plus的详解

1.MybatisPlus

1.1 MP 介绍

MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基上只做增强不做改变,为简化开发、提高效率而生。

1.2 特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

1.3 ORM思想

1.3.1 业务场景

eg:一个开发了30年的程序员,业务相当熟练,但是为了完成的业务也需要写特别简单的SQL语句。
需求:能否有效的提高开发的效率

1.3.2 ORM介绍

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。

  • 知识铺垫:
    Sql语句面向过程的语言,
    sql:select * from user ResultSet结果集~~~User对象 需要自己手动的封装,开发的效率低。
    ORM方式:以对象的方法操作数据库,可以实现结果集与对象的自动映射,不需要自己手写

1.4 MybatisPlus工作原理说明

1.对象与那张表要完成映射

  • 可以自定义注解进行表示

    2.对象的属性与表中的字段如何一 一对应

  • 起名时应该写成一样的,如果不一样利用特定的主角指定

    3.工具方法如何简化

  • MP动态的生成CRUD操作的接口,只要其他的Mapper接口继承

    4.对象如何转化SQL语句

  • 利用对象中的属性及属性的值动态拼接即可

1.5 MP集体实现

1.5.1 导入jar包

说明:MybatisPlus包已经包含Mybatis的信息,所以需要将原来的包删除。

<!--spring整合mybatis-plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>

1.5.2 编辑POJO对象

image.png

1.5.3 实现接口的继承

image.png

1.5.4 修改YML映射文件

image.png

1.5.5 编辑YML文件实现sql打印操作

image.png

1.5.6 测试

image.png

1.5.7 MP实现原理

1.对象与表如何映射

可以利用自定义的注解的方式实现映射. @TableName 不能省略 @TableField(“name”)如果名称一致可以省略
1.对象的名称与表的名称 一一映射。
2.对象中的属性与表中的字段一一映射。

2 利用接口封装公共的CURD方法

MP主要的目的是实现单表的CRUD操作.所以将公共的方法写到同一个接口中 BaseMapper以后用户使用时,只需要继承即可。
image.png

3 需要将对象动态转化为SQL

要求:以对象的方式操作数据库. 需要方法动态转化为SQL
userMapper.insert(user对象)
Sql: insert into 表名(字段名称1,字段名称2....) values (属性值1,属性值2......)
personMapper.insert(person对象)
Sql: insert into 表名(字段名称1,字段名称2....) values (属性值1,属性值2......)

底层实现时需要动态的拼接Sql即可.
表名: @TableName注解动态获取
字段名称: @TableField(“name”) 获取
属性值: 动态利用get方法取值即可.

MP将上述的sql结构进行拼接最终形成可执行的Sql.之后利用Mybatis执行sql操作.之后再次封装.

1.6 MP API介绍

image.png

2.web项目创建

2.1 创建web项目

2.1.1 创建maven项目

image.png

2.1.2 编辑pom.xml文件

image.png

2.1.3 编辑JSP页面

image.png

2.1.4 编辑POJO

image.png

2.1.5 编辑YML配置文件

image.png

2.1.6 解决页面访问404问题

image.png
image.png

2.1.7 编辑UserController

image.png

2.1.8 编辑UserService

image.png

2.1.8 页面效果展现

image.png

2.2 异步方式调用

2.2.1 为什么ajax可以实现异步???

特点:局部刷新:异步调用(加载)
调用原理说明:
1.用户将请求发给ajax引擎进行处理,之后等待引擎返回数据
2.ajax引擎接受到用户的请求之后,代替用户访问后端服务器
3.后端服务器接受请求之后,执行业务处理,并且将返回值返回
4.ajax引擎收到返回结果之后,要在第一时间通知给用户. 利用回调函数将数据传给客户端.ajax调用成功.
image.png

2.3 ajax获取用户信息

2.3.1 准备ajax页面

创建一个jsp文件 名为:ajax.jsp
image.png

2.3.2 编辑页面JS内容

image.png

2.3.3 编辑UserController

image.png

2.3.4 页面效果呈现

image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-10-29

SpringBoot的用法回顾

1.1 关于SpringBoot配置文件的说明

1.1.1 properties说明

1.语法:K-V结构 key=value
2.数据类型:默认是String数据类型,不要添加多余的""号
3.字符数据类型:properties的默认的加载的编码格式为ISO-8859-1,所以添加中文是需要字符转意。
4.缺点:所有额key都不许手动的编辑,没有办法复用,所以就引入yml配置

1.1.2 YML的配置文件的说明

1.语法:K-V结构 在写法上:key:value 实质上key=value
key:value 中间使用(:+空格)分隔
key与key之间是有父子级关系,所有写的时候需要缩进项。
YML配置文件默认的格式都是UTF-8编码,所以可以直接编译中文

1.2 关于SpringMVC调用流程(了解)

1.2.1 知识的扫盲

1.协议的支持:http协议/https协议(OSI7层网络模型,物数网传会表应)
2.Java针对于服务器端开发了一种传输机制 Servlet机制(TCP-IP协议规范) 用户使用servlet进行数据的传输的速度是比较快的。
image.png

1.2.2 SpringMVC调用流程

1.组件:

1.1  DispatcherServlet 前端控制器(所有请求的中转站)
1.2  HandlerMapping 处理器映射器(将用户的请求与执行的业务方法进行映射(绑定))
1.3  HandlerAdaptor 处理器适配器
1.4  ViewReslover 视图解析器

image.png

1.2 关于配置文件赋值操作

1.2.1 属性赋值操作

需求:又是对象中的属性的值可能会发生变化,如果直接写死在代码中可能会导致耦合性高,能否利用配置文件方式动态的为属性赋值。

image.png
image.png

1.2.2 利用properties文件为属性赋值

说明:由于YML配置文件一般都是配置第三方的整合的信息,如果将业务的数据添加到YML中则不规范,最好将业务的操作添加到properties文件中
image.png
编辑RedisPro配置文件:
image.png

1.3 SpringBoot环境切换问题

业务场景:
员工是外包人员,经常性的需要往返公司和甲方,进行代码调试时由于位置不同所以服务器IP地址必然不同,如果每次换环境都不许重新编辑IP地址和端口等数据,必定是繁琐的步骤,那是否可以优化??

1.3.1 业务实现-指定多个环境

注意事项:无论什么样的环境,配置的个数都是相同的,只有值不同...
image.png

1.4 IDEA添加热部署配置

1.添加jar包文件
image.png
2.配置IDEA工具

组合键:ctrl + shift + alt + /

image.png
2.1 开启自动编译即可
image.png

1.5 SpringBoot整合Mybatis

1.5.1 编辑pom.xml文件

image.png

1.5.2 编辑POJO

image.png

1.5.3 关于LomBok

问题:java项目开发完成之后需要在Linux系统中部署项目。那么在Linux环境中是否需要单独安装关于LomBok插件??

考点:LomBok插件工作原理是否清楚...
A:需要  B:不需要
答案:B
解析:LomBok插件编译器有效 xxx.java文件---编译---xxx.class动态的生成set/get/toString等方法添加到.class文件中即可。Linux中运行的jar包是.class文件的集合,已经有了get/set方法,所以不需要引入插件

1.5.4 关于Sql连接说明

image.png
1.serverTimezone=GMT%2B8 %2B 代表 "+"号 表示时区
2.useUnicode=true&characterEncoding=utf8 指定编码为utf-8
3.autoReconnect=true& 如果程序连接数据库中途断掉时是否重连.
4.allowMultiQueries=true 是否允许批量操作
eg: 要求一次入库3张表数据… 要求用一行sql实现该操作

1.5.5 编辑YML配置文件

image.png

1.5.6 关于知识点讲解-mapper.xml

image.png

1.5.7 代码结构

image.png

1.5.8 关于IDEA中AutoWired 报错问题

image.png
这个报错问题可以在设置里面解决:
image.png

查看原文

赞 0 收藏 0 评论 0

learner 发布了文章 · 2020-10-17

在Spring Boot项目中常遇见那些问题?

Spring Boot 常遇见问题

image.png

image.png
image.png

image.png
image.png
image.png

image.png

HikariCp常见问题

image.png
image.png
image.png

image.png
image.png

image.png
image.png

image.png
image.png

image.png

MyBatis常见问题分析

image.png
image.png
image.png

image.png
image.png
image.png
image.png
image.png
image.png

Spring 常见问题

image.pngimage.png

image.png
image.png
image.png

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

image.png
image.png

image.png
image.png
image.png
image.png
image.png
image.png

thymeleaf常见问题

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

Ajax常见问题

image.png
image.png

Temporayy End
Please add if you have any new questions
查看原文

赞 0 收藏 0 评论 0

learner 关注了用户 · 2020-08-31

Jason @jason_5f0dbb9eaae42

以终为始,闭环迭代,持续提高。

关注 3351

learner 关注了专栏 · 2020-08-25

技术分享-持续学习

记录技术学习和进阶的过程

关注 281

learner 关注了用户 · 2020-08-25

Duang @duang_58e87246ca82f

关注 264

learner 关注了专栏 · 2020-08-25

争做认真学习冠军

?争做认真学习冠军

关注 3652