Java
未读SpringBootSpringBoot简介SpringBoot入门
创建新模块,选择spring初始化,并配置模块相关基础信息
选择当前模块需要使用的技术集
运行控制器类
运行自动生成的Application类
SpringBoot项目快速启动
对SpringBoot项目打包(执行Maven构建指令package)
执行启动指令
java -jar springboot项目名.jar
SpringBoot概述
起步依赖
SpringBoot程序启动
启动方式
SpringBoot在创建项目时,采用jar的打包方式
SpringBoot的引导类是项目的入口,运行main方法就可以启动项目。
基础配置配置文件格式
修改服务器端口
配置格式
SpringBoot配置文件加载顺序:properties > yml > yaml
yaml语法规则
yaml读取
使用@Value读取单个数据,属性名引用方式: ${一级属性名.二级属性名}
封装全部数据到Environment对象 ...
Java
未读
认识微服务单体架构
单体架构:将业务的所有功能集中在一个项目开发,打一个包部署
优势: 架构简单,部署成本低
缺点
团队协作成本高
系统发布效率低
系统可用性差
总结:单体架构适合开发功能相对简单,规模较小的项目
微服务
微服务架构,首先是服务化,就是将单体架构中的功能模块从单体应用中拆分出来,独立部署为多个服务。同时要满足下面的一些特点:
单一职责:一个微服务负责一部分业务功能,并且其核心数据不依赖于其它模块。
团队自治:每个微服务都有自己独立的开发、测试、发布、运维人员,团队人员规模不超过10人(2张披萨能喂饱)
服务自治:每个微服务都独立打包部署,访问自己独立的数据库。并且要做好服务隔离,避免对其它服务产生影响
例如,黑马商城项目,我们就可以把商品、用户、购物车、交易等模块拆分,交给不同的团队去开发,并独立部署:
那么,单体架构存在的问题有没有解决呢?
团队协作成本高?
由于服务拆分,每个服务代码量大大减少,参与开发的后台人员在1~3名,协作成本大大降低
系统发布效率低?
每个服务都是独立部署,当有某个服务有代码变更时,只需要打包部署该服务即可 ...
Java
未读快速入门
介绍
springsecurity是安全框架,准确来说是安全管理框架。相比与另外一个安全框架Shiro,springsecurity提供了更丰富的功能,社区资源也比Shiro丰富
springsecurity框架用于Web应用的需要进行认证和授权
认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户
授权:经过认证后判断当前用户是否有权限进行某个操作。认证和授权也是SpringSecurity作为安全框架的核心功能
认证和授权也是SpringSecurity作为安全框架的核心功能
认证
springsecurity的权限管理,是先认证后授权,所以我们先学习认证这一部分流程图如下,注意下图的jwt指的是 json web token,jwt是登录校验的时候用的技术,可以根据指定的算法进行信息的加密和解密
springsecurity原理
SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。例如快速入门案例里面使用到的三种过滤器,如下图 (监听器 -> 过滤器链 -> dispatcherserv ...
Java
未读
大家在日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。
因此,目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是MybatisPlus.
当然,MybatisPlus不仅仅可以简化单表操作,而且还对Mybatis的功能有很多的增强。可以让我们的开发更加的简单,高效。
通过今天的学习,我们要达成下面的目标:
能利用MybatisPlus实现基本的CRUD
会使用条件构建造器构建查询和更新语句
会使用MybatisPlus中的常用注解
会使用MybatisPlus处理枚举、JSON类型字段
会使用MybatisPlus实现分页
1.快速入门为了方便测试,我们先创建一个新的项目,并准备一些基础数据。
1.1环境准备
最后,在application.yaml中修改jdbc参数为你自己的数据库参数:
1234567891011spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&cha ...
Java
未读
MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。
mybatis入门lombok
是一个实用的java类库,能通过注解的形式自动生成构造器,getter、setter、equals、toString等方法,并可以自动化生成日志变量,简化java开发,提高效率。
mybatis对数据库的增删改查
根据主键删除
预编译SQL:性能更高,更安全(防止SQL注入)
新增
主键返回:在事件添加成功后,需要获取插入数据库事件的主键。
更新
查询(根据ID查询)
数据封装
实体类属性名和数据库表查询返回的字段名一致,mybatis会自动封装。
如果实体类属性名和数据库表查询返回的字段名不一致,不能自动封装。
XML映射文件
动态SQL
随着用户的输入或者外部条件的变化而变化的SQL语句,称为动态SQL。
:用于判断条件是否成立。使用test属性进行条件判断,如果条件为True,则拼接SQL。
:where元素只会在子元素有 内容的情况下插入where子句。而且会自动去除子句的开头的and或or。
:动态地在行首插入s ...
Vue2安装Axios:npm install axios --save --legacy-peer-deps
vue的概念
Vue是一个用于构建用户界面的==渐进式框架==
vue的两种使用方式
Vue核心包开发:场景–局部模块构造
Vue核心包&Vue插件工程化开发:场景–整站开发
创建Vue实例初始化渲染
核心步骤4步
准备容器
引包
创建Vue实例 new Vue()
指定配置项 -》 渲染数据
el 指定挂载点
data 提供数据
插值表达式
插值表达式{{}}
作用:利用表达式进行插值,渲染到页面中
表达式:是可以被求值的代码,JS引擎将其JS出一个结果
语法:{{表达式}}
注意点
使用的事件必须存在
支持表达式,而非语句,比如:if for …
不能在标签属性中使用插值表达式
vue核心特性:响应式
响应式:数据变化,视图自动更新
如何访问或修改数据?
data中的数据,最终会被添加到实例上
访问数据: “实 ...
Java
未读
微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为同步调用,也可以叫同步通讯。但在很多场景下,我们可能需要采用异步通讯的方式,为什么呢?
我们先来看看什么是同步通讯和异步通讯。如图:
解读:
同步通讯:就如同打视频电话,双方的交互都是实时的。因此同一时刻你只能跟一个人打视频电话。
异步通讯:就如同发微信聊天,双方的交互不是实时的,你不需要立刻给对方回应。因此你可以多线操作,同时跟多人聊天。
两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发微信,但是往往响应会有延迟。
所以,如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。而如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)。
同步调用的方式我们已经学过了,之前的OpenFeign调用就是。但是:
异步调用又该如何实现 ...
基础用命令行窗口连接MySQL数据库1234mysql -h 主机名 -p 端 -u 用户名 -p 密码# 登陆前保证服务启动net stop mysqlnet start mysql
使用指令创建数据库1234create database 数据库名 #使用指令创建数据库drop database 数据库名 #使用指令删除数据库#创建一个使用utf-8字符集的数据库create database 数据库名 character set utf-8
数据库备份恢复操作
12345678910#显示数据库语句show database#显示接口创建语句show create database 数据库名#备份数据库(在DOS执行)mysql -u用户名 -p 密码 -b 数据库1,数据库2>文件名.sql#恢复数据库source 文件名.sql#备份库的表mysqldump -u 用户名 -p 密码 数据库 表1,表2 > d://文件名.sql
表操作
12345678#创建表create table 表名(id int,)character set 字符集# 添 ...
Redis入门
启动Redis服务-服务端:双击Redis目录下redis-server.exe文件。
客户端:双击Redis目录下redis-cli.exe文件
Redis简介
Redis是一个基于==内存==的key-value结构数据库。
基于内存存储,读写性能高
单线程,每个命令具备原子性
支持数据持久化(一段时间后会将数据存储到磁盘中)
支持多语言客户端(java,python…)
社会存储热点数据(热点商品,资讯,新闻)
企业应用广泛
Redis数据类型
5中常用数据类型介绍
Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型
字符串String:普通字符串,Redis中最简单的数据类型。
哈希hash:也叫散列,类似于java中的HashMap结构。
列表list:按照差顺序排序,可以有触发元素,类似于java中linkedList。
集合set:无序集合,没有重复元素,类似于java中的HashSet。
有序集合sorted set/zset:集 ...
4630436162ade97ba2718b7d0c4b3b63795962e3a2085ffe28a3d83a3bb820a7f88183bf41b6486621b0e272f06fdcef5612b2285ae3acb9010af2b8d24d20ca614a7e38252181acae7cde6776b6760ef6031d0bcaf502498ab398f4f1a584bfe497d228f34206a98877378b627cac7817ffb14bedb9e903ede853e08affe4a101bce54aa87f5863f747705190417e57d406ae1d83a11c1e023e46d97b1fb164f10bd8e91b8f03fbf4fdb4704f89de8f724e092a8377627c6ec724ca5a33abb7a8e7dca1f888f482e47e47ff45621e7cd883909bf32012b7baa3e29065a97f37947b0649c313edad94fbc816a5acec1a447bca125f94d721e ...