- 博客(55)
- 资源 (1)
- 收藏
- 关注
原创 分布式事务Seata<XA模式、AT模式>解决方案思路(针对多数据源、分库分表、微服务、微服务分库分表4种场景)
2.添加依赖,编写配置,自动代理默认开启 ,默认就是AT,注意事务失效场景,是否传递,是否数据源版本。rm操作数据库,提交事务的时候,tc端注册全局锁,如果发现已经存在,抛出异常。1.所有数据库添加支持AT的表结构,存储undo日志(线程等待,可以看到数据,弱一致性)2.所有数据库添加支持AT的表结构,存储undo日志(线程等待,可以看到数据,弱一致性)2.tm给rm全局事务id,携带全局事务id,向tc注册分支事务id,返回给rm。二阶段提交,TM通知TC做事务提交,tc通知rm提交,放到内存队列。
2024-04-26 11:21:27
1193
3
原创 2021-12-10SpringSecurity安全框架(一)基于内存中的用户信息,基于JDBC用户认证
基于内存中的用户信息:继承类,重写方法,来实现自定义认证信息@Configuration //相当于配置类,返回值是Java对象,对象放到spring容器之中@EnableWebSecurity//表示启用安全框架功能java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"5版本要求必须加密!基于角色的Role的身份认证,同一个用户可以有不同的角色。同时可以开启对
2021-12-10 18:04:24
876
1
原创 2021-11-30JSP使用,EL表达式,Scriptlet,指令标签,四大域对象
显示注释<!--><-->隐示注释//单行注释/*多行注释*/Scriptlet脚本小程序第一种:Java脚本段,可以写java代码,定义局部变量。编写语句等 <%%> 第二种:声明全局变量、方法、类等 <%!%> 第三种:输出表达式,可以输出变量或者字面量 <%=数值%>include静态包含标签<%@include file="要包含的文件相对地址"%>静态包含就是将内容进行了直接的替换,
2021-11-30 11:38:23
755
原创 2021-11-25最适合入门的Shiro框架教程(三)(springboot整合Shiro,自定义Realm,MyRealm)
一、Shiro认证流程回顾subject调用login方法,将包含用户和密码token传递给SecurityManagerSecurityManager就会调用认证器(Authenticator)进行认证Authenticator认证器将token传入绑定的Realm,在Realm中进行认证检查;如果认证通过正常执行,认证失败不通过抛出异常。自定义MyRealm1.1表设计用户表 tb_users 角色表 tb_roles 权限表 tb_permission
2021-11-25 18:07:11
711
原创 2021-11-23最适合入门的Shiro框架教程(二)(springboot整合Shiro,JdbcRealm表规范,IniRealm,Shiro常用标签,权限菜单实现)
一、SpringBoot应用整合Shiro1.1创建SpringBoot应用1.2整合Druid和Mybatis导入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version></depend
2021-11-23 15:23:06
897
原创 2021-11-22最适合入门的Shiro框架教程(一)(权限管理,核心组件,认证流程,基于JavaSE应用)
一、引入案例《汽车销售管理系统》基于主页的权限管理(不同用户)适用于权限管理比较单一,用户少,每类用户权限固定基于用户和权限的权限管理可以实现权限的动态分配,但是不够灵活,不适合多个重复角色,用户表--》用户权限表--》系统权限表(基础三张表 )二、RBAC权限设计(五张表) 基于角色的访问控制(Role-Based Access Control)角色表角色ID 角色名称 r001 销售人员 r002 ...
2021-11-22 16:26:01
665
原创 2021-10-29线程池多线程(面试)
1.什么是线程?线程和进程的区别?线程:是进程的一个实体,是cpu调度和分派的基本单位,是比进程更小的可以独立运行的基本单位。进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的一个独立单位。特点:线程的划分尺度小于进程,这使多线程程序拥有高并发性,进程在运行时各自内存单元是相互独立的,线程之间内存共享,这使得多线程编程可以拥有更好的性能和用户体验。2.创建线程的几种方式?1.继承Thread类并重写run方法创建线程,实现简单但不可以继承其他类
2021-10-29 11:44:39
141
原创 2021-10-19数据库事务transaction,基于手动AOP实现
事务:是指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。service层处理业务,原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。隔离性:事务的隔离性是指多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。持久性:指一个事务一旦被提交,它对数据库中的数据的改变就是永久性的,接下来即使数据库发生故障...
2021-10-20 21:53:35
454
1
原创 2021-10-19jdbcTemplate
不是自己开发的类,就可以使用ApplicationContext.xml进行装配bean;自己开发的类可以使用注解装配。dbcp连接池 c3p0连接池也可以加个配置 jdbc.properties。 设置基本四项!
2021-10-19 23:32:48
119
原创 2021-10-14 Redis缓存数据库
Redis是什么? key/value数据库 Redis版本如何进行查看?redis-server-v,redis-cli-v Redis默认有多少个数据库?16个数据库 Redis的核心配置文件是哪个?redis.conf Redis常用的配置参数有哪些? Redis支持的数据类型有哪些?String,Hash,List,Set,Stream Redis支持的字符串操作有哪些?自加:incr自减:decr加: incrby减: decrby ,append,strlen,mset/mget
2021-10-14 23:58:22
298
原创 2021-10-12数据库复习
MySQL引擎的选择MyISAM:不支持事务,不支持外键,支持全文检索和表级锁定,读写相互阻塞,读写速度快,节约资源,所以如果应用是以查询操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性,并发性要求不是很高,那么选择这个引擎是很合适的!!InnoDB:是MySQL的默认存储引擎,由于InnoDB支持事务,支持外键,行级锁定,支持所有辅助索引(5.5.5后不支持全文检索)高缓存,所以用于对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,读写频繁的操作,那么适合选择,比如BBS
2021-10-12 10:08:35
124
原创 2021-10-11线程复习
第一种继承Thread类package cn.tedu.day01;/*继承Thread类*/public class ThreadDemo1 extends Thread{ @Override public void run() { for (int i=1;i<=200;i++){ System.out.println(getName()+i); } }}package cn.tedu.day01;p
2021-10-11 20:11:08
154
原创 2021-10-11设计模式
装饰者模式对一个对象的功能进行扩展派生子类,不建议,耦合性太高,任何一个类修改,都会影响其他的类。继承 装饰者模式,动态的给一个对象添加额外的功能,装饰者模式比派生子类更加灵活,降低耦合装饰者模式中的要求装饰者中包含被装饰者 装饰者和被装饰者的功能名称需要保持一致 装饰者和被装饰者需要实现同一类型简单实现+++++++以下参考package cn.tedu.day01;/*约束*/public abstract class Person { public abstr.
2021-10-11 14:02:10
105
原创 JavaDemo点餐
Java简单小练习:实现下面功能package cn.tedu.demo;public class Dish { //菜品编号名称 价格 private int id; private String name; private double price; public Dish(int id, String name, double price) { this.id = id; this.name = name;..
2021-09-25 21:38:46
174
原创 数据库索引底层原理 B树 B+树 InnoDB存储引擎
索引数据结构红黑树,Hash,B+树详解。索引是帮助MySql高效获取数据的排好序的数据结构(树,表)。二叉树(二叉搜索树)Select * from t where col2=89如果Col2建立索引key-value字段,key存放Col2,value存放记录所在的磁盘地址红黑树 (jdk1.8HashMap底层数据结构优化)高度变成3-5 引出B+树B树()B+树(多叉平衡树)只存储索引元素,没有存储索引元素所对应的磁盘地址把所有的索引元素,在叶子节点存储了
2021-09-15 23:36:49
181
原创 2021-09-09商品新增(图片上传)代理机制 Nginx
关于商品新增文件模块说明用户点击添加商品按钮时,首先获取分类三级列表信息,跳转到商品新增页面 用户登入基本的商品信息 用户录入价格时,需要再后期将数据扩大100倍商品上传当用户点击上传图片时,根据属性名称file=“图片字节信息“,实现数据的传递。 后端通过特定的接口MultipartFile(mvc专门接收字节信息,内部封装io流) 上传文件时,首先正则表达式判断文件类型 .jpg.png.git 要判断图片是否为木马病毒,对于图片 ImageIO.read(file.getInput
2021-09-09 21:46:46
312
原创 2021-09-06 商品分类业务实现
商品分类业务实现优化的策略: 数据库只查询一次,就可以获取商品分类三级嵌套结构列表业务实现封装Map,key为父级ID,value为子集列表,判断!!! 如果没有存在key,将自己作为第一个元素存储; 如果已经存在key,将自己追加到value集合中封装Map集合,根据数据结构动态根据level查询子级.private Map<Integer, List<ItemCat>> getMap() { HashMap<Integer,Lis
2021-09-06 21:36:10
319
原创 2021-09-01 商城项目 用户登录 权限校验路由导航守卫 左侧菜单列表 用户模块实现
用户点击登陆,发起请求,业务处理,执行完销毁,每次请求,都是新的请求,服务器不识别用户,目的让服务器知道用户已登录服务器动态生成一个独一无二的token,返回给用户,用户保存token到本地,方便下次访问时携带使用UUID随机生成token,根据当前时间毫秒数+随机数 利用hash算法,几乎保证不重复。 String token = UUID.randomUUID().toString() .replace("-",""); return tok
2021-09-01 22:37:02
306
原创 2021-08-30 Vue-Axios案例 组件化 VUE路由介绍 async-await关键字
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分
2021-08-30 21:50:18
222
原创 2021-08-26 Vue 生命周期 Axios 请求案例
VUE 入门案例基本语法导入js类库 指定vue渲染区域 标签体 实例化vue对象 数据取值var/let/const说明关于js中变量定义说明:var 没有作用域的概念,容易出现安全性问题 成员变量 let 作用于var类似,有作用域的概念,局部变量 const定义常量1.{{msg}} 当页面没有渲染成功时.以原标签展现.2.v-text 当页面没有渲染完成,则不予展现.3.v-html 将html代码片段 渲染展现MVVM思想Model-view-vie
2021-08-26 21:32:30
298
3
原创 2021-08-SpringMVC参数传递 Vue增强
1.SpringMVC参数传递controller定义查询方法, 调用service层方法实现, service实现层调用Mapper层方法,持久层MabatisPlus调用基本方法查询。1.1需求说明根据id查询用户信息 http://localhost:8080/findUserById?id=1编写controller和ServiceImpl@GetMapping("findUserById") //get参数public User findUserById(In...
2021-08-25 21:30:03
209
原创 2021-08-24 MybatisPlus操作 前后端简单交互案例(无源码)
1. 脚手架安装node.js官网下载 14.15.4版本,一路安装 检查node.js版本 和NPM版本号 node -v npm -v 切换淘宝NPM库 npm config set registry https://registry.npm.taobao.org 安装vue和客户端 npm install -g @vue/cli --force 如果卡住,ctrl+c,卸载重装。 npm uninstall -g @vue/cli 2.mybatisPl..
2021-08-24 21:44:19
638
原创 2021-08-23 SpringBoot 整合Mybatis MybatisPlus学习
1.1跳过测试类打包需求说明:maven执行打包命令时,默认条件下会执行测试类中的方法,测试方法中一旦报错,则install的操作执行失败。解决方案: 要求install时 不要执行test方法。解决方案:跳过测试类打包 <properties> <!--指定JDK版本--> <java.version>1.8</java.version> <!--跳过测试类打包-->...
2021-08-23 21:51:26
233
原创 2021-08-21复习
1.什么是Spring呢 Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发...
2021-08-21 18:05:30
239
原创 2021-8-20SpringBoot使用注意事项 SpringBoot高级用法
GIT操作git 工作区 缓存区 本地仓库 远程仓库检查当前分支git branch创建分支 git checkout -b 新分支名称推送新分支 git push -u origin 新分支名称-将文件添加到暂存区 get add 点提交代码 git commit -m "提交信息"推动代码到云端 git push合并代码到主分支 git merge 分支名称 (主分支中操作)克隆代码 git clone "仓库地址"将远程库的数据更新到本地git pullBu
2021-08-21 11:18:59
117
原创 2021-08-19 SpringBoot pom.xml标签 8080端口
关于Maven环境说明组件:1. 远程仓库 官方维护了几乎所有的项目的jar包.(版权问题oracle数据)2. 私服镜像 在国内仓库. 阿里云镜像服务器.3. 本地仓库 用户在自己本地维护的jar包文件.settings1.配置本地仓库路径2.配置私服镜像创建项目之后,不能被maven项目标识.解决方案 右键添加项目+ Add as Maven ProjectSHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列...
2021-08-19 20:35:07
496
原创 2021-8-17 Mybatis
–1,概述底层封装了JDBC , 对数据库可以进行操作 , 是一个优秀的ORM对象关系映射持久层框架好处: 简化了JDBC的开发步骤, 自动完成ORM映射 表里字段的值封装给对象pom.xml,添加jar包<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1
2021-08-17 20:45:06
87
原创 2021-08-16 AOP与Ajax
AOP面向切面编程的思想,补充了面向对象的不足对方法的增强,本质上就是在执行方法的前后添加功能经典使用场景:统计性能分析、权限管理,事务管理,日志,缓存好处: 让程序员更专注业务代码本身切面: 本质上就是一个类通知: 本质上就是一个方法,定义一些功能前置通知@before后置通知@after环绕通知@around@PointCut表示切点@Aspect表示一个切面类1.添加jar包<!--添加aop依赖包--><dependency>
2021-08-17 08:37:29
118
原创 2021-08-15Spring整合SpringMVC的项目实战 Lombok SpringBoot热部署
简化了Model层的代码的编写以前pojo类、实体类,需要自己提供set get toString equals hashCodelombok通过各种注解,简化了以上操作。
2021-08-15 17:45:46
398
原创 2021-08-13 Spring 框架
Spring是一个开源框架,为了解决企业应用程序开发复杂性而创建的。“拿来主义”,把业界最好的技术粘合起来形成一个强大的企业级的应用框架。Spring框架是一个分成架构,由7个定义良好的模块组成。组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。Spring模块构建在核心容器之上,核心容器定义了创建,配置和管理bean的方式!核心容器Spring Core核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工
2021-08-13 20:31:56
101
原创 2021-08-11 学习SpringMVC
Sping MVC基于MVC设计模式来实现,保证代码之间的松耦合!!!Spring MVC属于SpringFrameWork的后续产品。主要功能:接受请求,解析请求参数;做出响应。现在主流基于SSM三大框架开发都是在MVC上继续演化,又分为持久层DAO,业务层Service,控制层Controller。持久层用来和数据库读写ORM,业务层用来处理复杂的业务逻辑,控制层用来处理MVC的控制。MVCModel数据处理模型,View展示数据的视图,Controller控制层,保证上面这三部分相互独
2021-08-13 09:19:30
116
原创 2021-08-10Maven Spring Boot
开发工具:前端采用HBulderx,而后端采用eclipse/idea项目管理:前端采用npm,webback,而后端采用Maven,SpringBootweb中间件:前端采用nodeJS,后端采用Tomcat1.解压apache-maven的压缩包2.找到conf文件夹里的settings.xml文件,修改3.修改两个地方: 本地仓库:指定一个jar包的存放路径 设置仓库镜像<!--阿里私服地址--><mirror>...
2021-08-10 20:33:41
135
原创 2021-08-09Vue脚手架 自定义组件 ElementUI使用
Vue脚手架安装执行以下命令安装并检验C:\Users\Administrator>node -v C:\Users\Administrator>npm config set registry https://registry.npm.taobao.org C:\Users\Administrator>npm config get registry C:\Users\Administrator>npm install vue-cli -g C:\Users\Admi
2021-08-09 19:42:37
262
原创 2021-08-07 编码转化流复习
编码转换流字节流:针对的是二进制文件字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8编码转换流InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码!!!OutputStreamWriter :OutputStreamWriter(OutputStream out)把传入的字节流转成字符流OutputStreamWriter(OutputStream out ,String charsetNa
2021-08-07 14:33:44
95
原创 2021-08-06 Vue(二)
MVVM框架我们可以在页面布局好后,只对数据进行操作,当数据改变,页面上的内容会自动随之改变,而无需开发者开发专门的代码去改变,简而言之,MVVM框架实现了页面和数据的分离,代码结构更加清晰,责任更加明确,同时实现自动化,无需写代码,非常棒的一个改进。这是javascript,jquery,bootstrap等无法做到的,也是前端Vue推崇的原因,也标示着jquery的终结。方法必须写在methods代码段中 方法体中访问数据代码段中声 明的变量,前面加this 方法和属性声明方式的差异在于 f
2021-08-06 21:19:19
376
原创 2021-8-5反射技术复习
Reflection(反射)非常强大,甚至能直接操作程序的私有属性。被private封装的资源只能类内部访问,外部是不行的,但这个规定被反射打破。反射像一面镜子,它可以在运行时获取一个类的所有信息,可以获取任何定义的信息(包括成员变量,成员方法,构造器),并且可以操纵类的字段,方法,构造器等部分。总结:类不是你创建的,是你同事或者直接是第三方公司,此刻你要或得这个类的功能调用,就得需要反射技术实现。在后面的学习中,会学习框架,有一个框架Spring就是一个非常专业且功能强大的产品,它可以帮我们创
2021-08-05 20:49:48
109
原创 2021-8-5 VUE
Angular React Vue 前端三大框架一个基于JavaScript的渐进式前端框架1.一个轻量级mvvm框架,双向绑定,数据动态更新,gzip后大小只有20k+2.渐进式框架,按需加载,数据驱动,组件化的前端开发3.原生html页面通过js操作dom,而vue。js操作的是数据4.和传统前端开发关注点完全不同,传统方式关注的是对象的document结构的API,而vue关注得是数据。5.优点显而易见,从而屏蔽了使用复杂晦涩难记的DOM结构APIVue是用于构建用户界面.
2021-08-05 19:06:28
268
原创 2021-8-3 CSS
css全程叫做层叠样式表stylesheet,修饰HTML网页的一门技术,增强网页的展示能力。主要是使用CSS属性来实现,最终可以将css代码和HTML网页代码进行分离,也可以提高css代码的复用性。选择器是指在HTML中帮助我们选中想要修饰的标签。 标签名选择器 class选择器 id选择器 分组选择器(将多个选择器选中的元素组合在一起,统一设置样式) 属性选择器<style type="text/css"> /* 选中指定的元素 */ input[typ...
2021-08-04 19:56:53
102
原创 2021-8-4JS
弱类型语言,var关键字定义,并且参数的类型可以随时转换。基于对象:它不仅可以创建对象,也能使用现有的对象。JS没有类的概念,也没有编译的过程。一边解释一边执行。事件驱动:在JS中,大部分情况下都是通过事件触发驱动函数执行的,从而实现特定的功能。脚本语言:在网络前端开发环境下,用于嵌入在客户端浏览器中的一段小程序JS语法单行注释://注释内容多行注释:/*注释内容*/基本数据类型number数值类型一种,浮点型,需要时会自动进行数据类型的转换,比如:在显示和处理的时候,浮点型
2021-08-04 19:43:06
103
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人