
java
文章平均质量分 75
java
Naaaaa.a
。。。。。
展开
-
MyBatis框架(三) 分页查询、代码生成器generator与mybatis
1.1 引入pageHeler依赖1.2. 在mybatis.xml 文件中设置拦截器注意:代码的上下顺序1.3 运行PageHeler原理:作用: 根据表生成实体类,和dao和xml映射文件。简单的CRUD。官方文档:MyBatis Generator Core – Introduction to MyBatis Generator2.1 引入generator 依赖2.2 创建并配置 generator.xml 文件须放在项目目录下2.3 运行 缓存是存在于内存中的临时数据原创 2022-06-06 20:27:43 · 675 阅读 · 0 评论 -
SpringMvc(二)把controller数据返回到网页回显、返回json数据、全局异常处理类、拦截器。
request: 作用范围: 同一个请求内有效。setAttribute(key,value)session:作用范围: 同一个会话有效,只要会话不关闭会一直有效。setAttribute(key,value)网页如何获取保存的数据: EL表达式。${scope.key}将controller 数据返回到网页上:保存到request范围。保存到model范围。保存到session范围。我们可以指定某些 model 的key在session范围 使用 @SessionAttributes原创 2022-06-09 11:29:28 · 1455 阅读 · 0 评论 -
SpringMvc(三)文件上传
引入文件上传依赖创建upload(上传)页面在springmvc中配置文件上传解析器创建upload01接口方法3.elementui+vue+axios完成文件上传设计页面布局后台接口4.上传到oss阿里云的服务器上传到本地服务器的缺点: 如果搭建集群,导致文件无法在集群中共享。 解决方法就是把文件专门上传到一个文件服务器上,这些tomcat服务器都操作同一个文件服务器。申请oss文件服务......原创 2022-06-09 21:49:08 · 121 阅读 · 0 评论 -
SpringMvc(五)流程
springmvc流程原创 2022-06-12 22:45:28 · 83 阅读 · 0 评论 -
SpringMvc(一)简述与基本使用
MVC就是一个分层架构模式: springMVC它是spring框架的一个分支,该springMVC框架主要完成的功能是:接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示 可以把它理解为和Servlet干的工作是一样的(1)创建一个maven-web工程。注意: 替换现在的web.xml文件,因为web.xml文件版本过低,后续会出严重的bug (2)引入springmvc的依赖带有RELEASE的是较稳定的springmvc.jar包(3) 注册DispatcherServlet到原创 2022-06-07 21:42:40 · 112 阅读 · 0 评论 -
SpringMvc(四)普通的文件、elementui 异步上传到OSS文件服务器
缺点:如何解决本地服务器上传的缺点:(1)引入阿里云的OSS依赖(2)java代码(带有注释的都需要自行修改)3. elementui 异步上传OSS服务器 (1)前端代码(2) controller接口4.综合实例 -----注册注册页面创建工具类controller控制层5.特殊注解...原创 2022-06-11 08:28:16 · 417 阅读 · 0 评论 -
Spring框架(一)为什么使用spring、spring的IOC控制反转
目的: 降低耦合:对象与对象之间的耦合。如何解决对象与对象之间的耦合,使用工厂模式。 上面这些代码是我们自己写的解耦的方法,自己写的解耦考虑很多欠缺的地方。可以使用现成的框架完成对象与对象之间的解耦----spring框架。耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可原创 2022-06-13 19:21:39 · 349 阅读 · 0 评论 -
spring--事务
从开启到提交为一个事务。由此可见,一个事务对应一组业务。一个事务中间可以有一条sql,多条sql。所以一个业务开始之前开启事务一个业务结束之后提交事务。我们这个转账案例需要几个事务?可以写成两个事务,但是不合适。因为我们的需求让张三减的同时让李四加钱。只能写成一个事务。把多条sql语句当作一件事情,要同时都能执行到。事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。...原创 2022-07-19 11:07:35 · 837 阅读 · 0 评论 -
动态代理与AOP切面
思考: 随着业务的不断扩展:(1)日志功能。如果日志代码修改: 以AAA开始 感觉:如果有1w方法都需要添加日志,修改1W方法的代码(2)校验功能:若1w方法需要校验,修改1w方法的源代码。解决方案:(1)抽取方法。缺点还需要再1w方法的地方调用。(2)动态代理: 实现方式有两种: [1]JDK原生动态代理----缺点:必须基于接口完成 [2]cglib动态代理(3)AOP面向切面编程:AOP的底层实现就是基于动态代理。准备:引入依赖:一、动态代理1.JDK原生动态代理创建业原创 2022-07-13 10:20:37 · 596 阅读 · 1 评论 -
spring框架(二) spring的DI依赖注入与使用注解完成IOC和DI功能
IOC:控制反转 创建对象!DI 依赖注入:目的就是给对象中的属性赋值。基本数据类型, 字符串类型,引用类型,集合类型。创建一个类并提供set方法创建配置文件:---在bean标签中测试4.使用spring注入其他数据类型实体类配置文件: 注入list、set和map集合以及数组5.使用工厂实现自动注入UserControllerIUserDao与UserDao1、UserDao2配置文件测试6.使用注解完成I......原创 2022-06-13 19:49:31 · 157 阅读 · 0 评论 -
SpringBoot整合Vue(二)完成登录(shiro)、退出、左侧菜单(基于springboot+shiro+swagger+redis+vue+elementui)
前置路由守卫:就是在路由跳转前加上自己得一些业务代码。(放在main.js中)先在 Permission实体类定义一个 children属性。登录成功后获取用户信息时出现如下得错误。在Home组件中使用LeftMenu组件。components创建左侧菜单组件。4.修改controller代码。被shiro得拦截器给拦截器了。2.增加一个realm类对象。1.添加shiro依赖。3.shiro的配置类。1.使用递归完成前端。......原创 2022-08-11 19:27:26 · 1437 阅读 · 0 评论 -
springboot整合vue(一)实现登录
要使用的技术:1.前端使用: vue + elementui + axios + css + html2.后端使用: springboot+mybatis-plus +mybatis+druid+swagger2+redis。原创 2022-08-08 21:48:20 · 714 阅读 · 0 评论 -
SpringCloud微服务--Nacos Discovery--服务治理
应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用。通过上一篇的操作,我们已经可以实现微服务之间的调用。的方式去监测清单中 的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息。语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现。是专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服。配置订阅:服务提供者和服务调用者订阅微服务相关的配置。原创 2022-08-22 20:33:45 · 533 阅读 · 0 评论 -
微服务保护sentinel(一)--初识sentinel、流量控制
其含义是限制 /product/getById/{pid}这个资源的单机QPS为X,即每秒只允许X次请求,超出的请求会被拦截并报错。例如,设置QPS的threshold为10,预热时间为5秒,那么初始阈值就是 10 / 3 ,也就是3,然后在5秒后逐渐增长到10.需求:给/product/getById/{pid}这个资源设置限流,最大QPS为5,利用排队的流控效果,超时时长设置为2s。配置流控规则,当/order/update资源被访问的QPS超过5时,对/order/query请求限流。原创 2022-08-24 21:28:37 · 626 阅读 · 0 评论 -
分布式事务
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。注意:MySQL的驱动名称如果为8.0一定要为com.mysql.cj.jdbc.Driver. 如果为5.7一下的可以用com.mysql.jdbc.Driver。A服务【订单微服务】的TM[事务发起者]向TC[seata服务端]申请开启一个全局事务,TC就会创建一个全局事务并返回一个唯一的XID。B服务的RM向TC注册分支事务,并将其纳入XID对应的全局事务的管辖。TC : 事务管理器【seata的服务端】...原创 2022-08-26 22:25:04 · 93 阅读 · 0 评论 -
springcloud微服务
1.1系统架构演变随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在,系统架构大体经历了下面几个过程:单体应用架构--->垂直应用架构--->分布式架构--->SOA架构--->微服务架构,当然还有悄然兴起的服务网格化)。单体应用架构互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、部署和维护的成本。...原创 2022-08-18 23:28:44 · 253 阅读 · 0 评论 -
springcloud--设置配置中心并使用追踪链路日志查看错误
在大型系统的微服务化构建中,一个系统被拆分成了许多微服务。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。在这种架构中,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心【】,也就意味着这种架构形式也会存在一些问题:如何快速发现问题?如何判断故障影响范围?如何梳理服务依赖以及依赖的合理性?原创 2022-08-22 19:47:00 · 866 阅读 · 0 评论 -
springcloud下的nacos集群与gateway网关
在gateway中内置很多断言器,SpringCloud Gateway包括许多内置的断言工厂,所有这些断言都与HTTP请求的不同属性匹配体如下:基于类型的断言工厂此类型的断言根据时间做判断,主要有三个:: 接收一个日期参数,判断请求日期是否晚于指定日期: 接收一个日期参数,判断请求日期是否早于指定日期BetweenRoutePredicateFactory: 接收两个日期参数,判断请求日期是否在指定时间段内基于远程地址的断言工厂*接收一个IP。原创 2022-08-22 21:23:31 · 1904 阅读 · 0 评论 -
skywalking链路追踪与持久化
SkyWalking 是什么?分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。原创 2022-08-23 19:39:21 · 905 阅读 · 1 评论 -
微服务保护Sentinel(二)-- 热点参数限流、隔离降级
解读:RT超过500ms的调用是慢调用,统计最近10000ms内的请求,如果请求量超过10次,并且慢调用比例不低于0.5,则触发熔断,熔断时长为5秒。在指定时间内,如果请求数量超过设定的最小数量,慢调用比例大于设定的阈值,则触发熔断。异常比例或异常数:统计指定时间内的调用,如果调用次数超过指定请求数,并且出现异常的比例达到设定的比例阈值(或超过指定异常数),则触发熔断。需求:设置降级规则,慢调用的RT阈值为100ms,统计时间为10秒,最小请求数量为5,失败阈值比例为0.5,熔断时长为30s。...原创 2022-08-25 21:30:44 · 1225 阅读 · 2 评论 -
ssm整合——ssm+elementui+vue+axios完成单表的crud.
1)web更换为4.0,之前版本过低会出严重bug2)引入所需依赖 引入依赖3)spring配置文件4)web配置文件5)使用generator快速生成代码测试代码:使用 generator生成了dao、entity、mapper文件service实体类层代码:controller操作层代码:前端界面代码:service层controller操作层: 5.修改service层controller操作层:6.删除service层原创 2022-06-18 15:59:55 · 538 阅读 · 0 评论 -
springboot与redis
springboot对redis的操作封装了两个StringRedisTemplate和RedisTemplate类,StringRedisTemplate是RedisTemplate的子类,StringRedisTemplate它只能存储字符串类型,无法存储对象类型。上面的RedisTemplate需要每次都指定key value以及field的序列化方式,可以创建一个配置类,为RedisTemplate指定好序列化。使用RedisTemplate 必须要指定序列化方式,默认使用jdk序列化方式。....原创 2022-08-03 21:35:40 · 1901 阅读 · 0 评论 -
shiro安全框架初识--shiro简介、认证与授权
Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和session会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架spring security,Shiro 要简单的多.Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。...原创 2022-08-03 19:55:04 · 943 阅读 · 0 评论 -
java连接redis
java连接redis的三种方式---1.使用jedis 2.使用连接池连接redis 3.java连接redis集群模式原创 2022-08-01 21:35:28 · 3617 阅读 · 0 评论 -
SpringBoot框架
springboot可以帮你简化spring的搭建,并且快速创建一个spring的应用程序。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置思考我们在实际开发中,环境有哪些?开发环境---->测试环境---->线上环境由于环境的不同,那么就会有不同的配置内容。难道我们不断的修改配置内容。----不会实际工作中,针对不同的环境配置不同的配置文件,然后再总的配置文件中激活相应的配置文件。......原创 2022-07-23 10:03:36 · 441 阅读 · 0 评论 -
JDK8的特性
jdk8的特性:1. lambda表达式。2. 函数式接口。3. 方法引用。4. Stream流。5. 日期时间类。原创 2022-07-20 09:37:24 · 161 阅读 · 0 评论 -
java---线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程,被称为轻量进程(lightweightprocesses),进程中的一条执行路径,也是CPU的基本调度单位。一个进程由一个或多个线程组成,彼此间完成不同的工作,同时执行,称为多线程。进程与线程的区别1.进程是操作系统资源分配的基本单位,而线程是CPU的基本调度单位。2.一个程序运行后至少有一个进程。...原创 2022-07-18 21:50:51 · 317 阅读 · 0 评论 -
java高级---反射
反射是框架设计的灵魂,框架它是一个半成品,可以拿来使用,添加上自己的业务代码。提高开发效率。反射就是把类中成员抽取成其他类的过程。这就是反射。Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;}...原创 2022-07-14 22:22:31 · 282 阅读 · 0 评论 -
java---注解
注释: java不会编译注释的内容,给程序员看的。注解: 给程序看,当程序看到这个注解时,就会解析它。譬如: @Controller @Override 注解的分类:注解的定义: 可以看作是对一个类/方法的一个扩展的模版,每个类/方法按照注解类中的规则,来为类/方法注解不同的参数,在用到的地方可以得到不同的 类/方法中注解的各种参数与值。 注解也就是Annotation,注解不是一段辅助性的文字。 从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是原创 2022-07-14 10:16:00 · 240 阅读 · 0 评论 -
java高级-----泛型
泛型:一个未知的数据类型,参数化类型 泛型就是在类定义时,不为类中属性和方法指定数据类型,而是在类对象创建时为其指定相应的数据类型。解决数据类型的安全问题注意: 泛型类型必须都是引用类型。不能是基本类型。 泛型可以定义在类上,接口上,方法上。 泛型类,泛型接口以及泛型方法。泛型可以解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的数据类型或者是某个方法的返回值及参数类型。这样在类声明或者实例化时只要指定好需要的类型即可。泛型的定义格式:public c原创 2022-07-13 21:26:58 · 357 阅读 · 0 评论 -
MyBatis框架(二)
我们之前使用SqlSession封装的一些方法可以完成crud操作,但是SqlSession封装的方法,传递的参数statement, 传递占位符的参数只能传递一个。而且它的方法名称都是固定。而真实在开发环境下不使用SqlSession封装的方法,而是习惯自己定义方法,自己调用自己的方法。(1)创建一个dao接口并定义自己需要的方法。(2)创建映射文件注意: namespace必须和dao接口一样,而且标签的id必须和你接口的方法名一样。(3)测试常见bug namespace和接口名不对原创 2022-06-01 21:49:19 · 478 阅读 · 0 评论 -
MyBstis框架(一)安装并实现增删改查
MyBatis 是一款优秀的持久层Dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Java实体类)映射成数据库中的记录.使用MyBatis可以简化jdbc的操作以及占位符赋值以及查询结果集的封装。(1)引入mybatis和mysql的jar包(2) 创建mybatis的配置文件(3)创建数据库和表(4)原创 2022-05-31 20:28:56 · 197 阅读 · 0 评论 -
Maven的安装与使用
1.Maven简介1.1.什么是maven?Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。总结: maven可以通过一段描述,帮你构建项目并且可以帮你引入相关的依赖jar。1.2. 为什么要用maven.之前创建项目时,需要引入相关的jar包,这些jar你可能从一些网址下载的。可能下载时非常难,也可能因为jar的版本之间会有冲突。 使用maven可以帮我完成jar的下载,我们只需要指定jar的坐标即可。1.3 maven的原理原创 2022-05-30 21:47:39 · 117 阅读 · 0 评论 -
elementui布局框架并使用elementui+vue+axios完成一个案例。
1.elementui布局框架Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 。换句话说:Element它是在vue2.0的基础上,提供了各种组件(比如表单 表格 菜单导航.....),使用这些组件可以更好得完成功能和布局。2.1 如何使用elementui组件(1)需要再相应得网页中引入vue和elementui得文件注意:必须先引入vue在引入element <!--引入element得css样式--> <原创 2022-05-27 09:26:00 · 2455 阅读 · 0 评论 -
Ajax与Json
1.ajax异步请求上面的请求都是服务响应的结果为网页或者路径。ajax只响应数据。1.1 什么是ajax例如: 百度搜索框----使用了ajax.当在百度搜索框触发键盘弹起事件时,会向服务器发送请求,服务器响应数据给事件。这里并没有响应整个页面给客户端。这就使用了ajax异步【局部】刷新总结:(1) ajax一定是通过事件触发的。借助js。 (2)ajax服务器响应的不在是网页,而是数据。1.2 简单使用ajax.jQuery API ...原创 2022-05-20 20:26:18 · 353 阅读 · 0 评论 -
servlet的生命周期、过滤器Filter
1.什么是生命周期?servlet从创建到初始化再到服务最后到销毁的过程。就是servlet的生命周期。servlet会在不同的阶段执行不同的方法。(1)构造方法---->servlet被创建时执行(2)初始化方法--->servlet创建完成后要初始化一些参数时该方法会被执行。(3)执行方法--->servlet被调用时。(4)销毁方法--->servlet被关闭。package com.aaa.servlet;import javax.servlet.原创 2022-05-19 21:10:51 · 514 阅读 · 0 评论 -
使用servlet实现增删改查(crud)
1.快速创建servlet.通过idea帮我们快速创建一个servlet并且会自动注册和配置请求路径与servlet映射。package com.aaa.servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletReq原创 2022-05-19 21:02:06 · 3037 阅读 · 0 评论 -
重定向和请求转发的区别与jstl标签库和EL表达式、servlet 控制层
1.重定向和请求转发的区别重定向请求转发区别:1. 重定向地址栏会发生改变,而且会产生新的请求对象。无法获取request保存的数据。2. 请求转发地址栏不会发生改变,而且用的是同一个请求对象。可以获取request保存的数据。保存周期越长,占用的资源时间也就越长。 一般我们在开发时大部分数据习惯保存到request对象中。 只要少量的数据保存到session会话中。比如登录时用户的信息保存到session会话中。2.jstl标签库和EL表达式。2.1.EL表达式.原创 2022-05-19 20:53:53 · 183 阅读 · 0 评论 -
jsp中的九大内置对象与四大域对象
什么是内置对象?在jsp中已经创建好的对象名,而这些对象无需自己在实例化。通过该对象名可以调用相应的类方法。九大内置对象1. out对象---作用:用来输出信息到浏览器。常见的方法: print();2. request对象--作用:请求对象。 常见的方法:getParameter(); setCharacterEncoding("") , getSession():获取session对象。3. session对象-->作用:表示一次会话 同一个用户共享存储在sessio.原创 2022-05-13 21:37:07 · 880 阅读 · 0 评论 -
jsp+dao完成相应的数据库操作、数据回显以及完善登录功能。
1.注册实现1.1.流程图register.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>注册页面</title> <script> function checkUsername(){ var username = docum原创 2022-05-13 09:51:03 · 1106 阅读 · 0 评论