![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 82
Hokwok18
这个作者很懒,什么都没留下…
展开
-
JVM基础
面试常见: 1.请你谈谈你对JVM的理解? 2.java8虚拟机和之前的变化更新? 3.什么是OOM,什么是栈溢出StackOverFlowError? 怎么分析? 4.JVM的常用调优参数有哪些? 5.内存快照如何抓取?怎么分析Dump文件? 6.谈谈JVM中,类加载器你的认识?1.JVM的位置三种JVM:Sun公司:HotSpot 用的最多BEA:JRockitIBM:J9VM我们学习都是:HotSpot2.JVM的体系结构java存储机制(栈、原创 2022-05-29 17:50:35 · 168 阅读 · 0 评论 -
SpringCloud-Zull路由网关
什么是zuul? Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。注意:Zuul 服务最终还是会注册进 Eureka提供:代理 + 路由 + 过滤原创 2022-04-06 10:17:38 · 125 阅读 · 0 评论 -
SpringCloud-Hystrix:服务熔断
分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免失败!1 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。 对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几十秒内饱和。比失败更糟糕的是,这些应原创 2022-04-06 10:09:29 · 527 阅读 · 0 评论 -
SpringCloud-Feign:负载均衡(基于服务端)
1 Feign简介 Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端只需要创建一个接口,然后添加注解即可~ Feign,主要是社区版,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法微服务名字 【ribbon】接口和注解 【feign】Feign能干什么?Feign旨在使编写Java原创 2022-04-06 10:02:11 · 289 阅读 · 0 评论 -
SpringCloud-Ribbon:负载均衡(基于客户端)
1 负载均衡以及RibbonRibbon是什么?Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 的客户端组件提供一系列完整的配置项,如:连接超时、重试等。简单的说,就是在配置文件中列出 LoadBalancer (简称LB:负载均衡) 后面所有的及其,Ribbon 会自动的帮助你原创 2022-04-06 09:55:10 · 144 阅读 · 0 评论 -
SpringCloud-Eureka服务注册中心
1 什么是EurekaNetflix在涉及Eureka时,遵循的就是API原则.Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper.2 原理理解Eureka基本的架构Springcloud 封装了Net原创 2022-04-06 09:48:44 · 182 阅读 · 0 评论 -
SpringCloud-Rest学习环境搭建:服务提供者
1 介绍我们会使用一个Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务。回顾Spring,SpringMVC,Mybatis等以往学习的知识。Maven的分包分模块架构复习。一个简单的Maven模块结构是这样的:-- app-parent: 一个父项目(app-parent)聚合了很多子项目(app-util\app-dao\app-web...) |-- pom.xml | |-原创 2022-04-06 09:38:17 · 116 阅读 · 0 评论 -
SpringBoot-Dubbo和Zookeeper集成
什么是分布式系统? 在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”; 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。 分布式系统(distributed system)是建立在网络之上的软件系统。 首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的原创 2022-04-06 09:19:49 · 258 阅读 · 0 评论 -
SpringBoot-集成Redis
1. 概述1.1 SpringDataSpringBoot 操作数据都是使用 ——SpringData以下是 Spring 官网中描述的 SpringData 可以整合的数据源可以发现 Spring Data Redis1.2 lettuce说明:在 SpringBoot 2.X 之后,原来的 Jedis 被替换为了 lettuceJedis 和 lettuce 区别Jedis :采用的是直连的服务,如果有多个线程操作的话是不安全的,就需要使用 Jedis Pool 连接池取解决。问题就原创 2022-04-05 16:58:10 · 179 阅读 · 0 评论 -
SpringBoot-异步、定时、邮件任务
前言 在我们的工作中,常常会用到异步处理任务,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线程的方式去处理这些任务。还有一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息。还有就是邮件的发送,微信的前身也是邮件服务呢?这些东西都是怎么实现的呢?其实SpringBoot都给我们提供了对应的支持,我们上手使用十分的简单,只需要开启一些注解支持,配置一些配置文件即可!那我们来看看吧~异步任务1、创建一个service原创 2022-04-05 12:42:27 · 138 阅读 · 0 评论 -
SpringBoot-集成Swagger
项目集成Swagger学习目标:了解Swagger的概念及作用掌握在项目中集成Swagger自动生成API文档Swagger简介前后端分离前端 -> 前端控制层、视图层后端 -> 后端控制层、服务层、数据访问层前后端通过API进行交互前后端相对独立且松耦合产生的问题前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发解决方案首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险Swagge原创 2022-04-05 11:32:40 · 362 阅读 · 0 评论 -
SpringBoot-集成Shiro
参考笔记1 什么是Shiro?●Apache Shiro是一个Java 的安全(权限)框架。●Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。●Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等.●下载地址: http://shiro.apache.org/2. 有哪些功能●Authentication: 身份认证、登录,验证用户是不是拥有相应的身份;●Authorization:授权,即权限验证,验证某个已认证的用原创 2022-04-05 11:26:52 · 480 阅读 · 0 评论 -
SpringBoot-集成SpringSecurity
安全简介 在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中。 市面原创 2022-04-05 11:19:09 · 1370 阅读 · 1 评论 -
SpringBoot-整合Druid
Druid简介 Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。 Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。 Spring Boot 2.0 以上默认使用 Hikari 数据原创 2022-04-05 11:07:00 · 299 阅读 · 0 评论 -
SpringBoot-整合JDBC
1 SpringData简介 对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。 Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目。Sping Data 官网:https://spring.io/projects/spring原创 2022-04-05 11:01:21 · 116 阅读 · 0 评论 -
SpringBoot-国际化
有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化了!1 准备工作先在IDEA中统一设置properties的编码问题! 编写国际化配置文件,抽取页面需要显示的国际化页面消息。我们可以去登录页面查看一下,哪些内容我们需要编写国际化的配置!2 配置文件编写2.1 我们在resources资源文件下新建一个i18n目录,存放国际化配置文件2.2 建立一个login.properties文件,还有一个login_zh_CN.properties;发现IDEA自动识别原创 2022-04-05 10:56:44 · 174 阅读 · 0 评论 -
SpringBoot-MVC自动配置原理
1 官网阅读 在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制。 只有把这些都搞清楚了,我们在之后使用才会更加得心应手。途径一:源码分析,途径二:官方文档!地址 :https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-auto-configurationSpring M原创 2022-04-05 10:49:51 · 152 阅读 · 0 评论 -
SpringBoot-Web开发
1 简介 其实SpringBoot的东西用起来非常简单,因为SpringBoot最大的特点就是自动装配。使用SpringBoot的步骤:1、创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好2、手动在配置文件中配置部分配置项目就可以运行起来了3、专注编写业务代码,不需要考虑以前那样一大堆的配置了。要熟悉掌握开发,之前学习的自动配置的原理一定要搞明白! 比如SpringBoot到底帮我们配置了什么?我们能不能修改?我们能修改哪些配置原创 2022-04-05 10:42:50 · 1665 阅读 · 0 评论 -
SpringBoot-yaml配置文件
1 yaml语法学习配置文件SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application.properties语法结构 :key=valueapplication.yml语法结构 :key:空格 value配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;比如我们可以在配置文件中修改Tomcat 默认启动的端口号!server.port=8081yaml概述 YAML是 “原创 2022-04-04 20:39:53 · 2074 阅读 · 0 评论 -
SpringBoot-运行原理
1 SpringBoot自动装配原理1.1 pom.xml父依赖其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件! <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.0</vers原创 2022-04-04 20:32:01 · 1107 阅读 · 0 评论 -
SpringBoot-第一个SpringBoot程序
1 准备工作 我们将学习如何快速的创建一个Spring Boot应用,并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。环境准备:java version “11.0.6”Maven-4.0.0SpringBoot 2.x 最新版开发工具:IDEA2 创建基础项目说明Spring官方提供了非常方便的工具让我们快速构建应用Spring Initializr:https://start.sprin原创 2022-04-04 20:23:16 · 170 阅读 · 0 评论 -
SpringMVC-JSON详解
1 什么是JSON?JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组原创 2022-04-04 17:30:30 · 1728 阅读 · 0 评论 -
SpringMVC-第一个springMVC
1 什么是SpringMVC1.1 概述 Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web我们为什么要学习SpringMVC?Spring MVC的特点:1.轻量级,简单易学2.高效 , 基于请求响应的MVC框架3.与Spring兼容原创 2022-04-04 11:56:29 · 124 阅读 · 0 评论 -
Spring5-声明式事务
1 回顾事务把一组业务当成一个业务来做:要么都成功,要么都失败事务在项目开发中十分重要,涉及到数据的一致性问题,不能马虎。确保完整性和一致性事务ACID原则原子性一致性持久性:一旦提交,无法更改隔离性:多个业务可能操作同一个资源,防止数据损坏2 spring中的事务管理声明式事务:AOP编程时事务:需要在代码中,进行事务的管理pom.xml<?xml version="1.0" encoding="UTF-8"?><proj原创 2022-04-04 11:44:10 · 90 阅读 · 0 评论 -
Spring5-整合MyBatis
步骤:1.导入相关jar包junitmybatismysqlspring-webmvspring-jdbaspetjweavermybatis-spring[新包] <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId&原创 2022-04-04 11:39:15 · 834 阅读 · 0 评论 -
Spring5-AOP
1 什么是AOPAOP意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生泛型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可重用性,同时提高了开发效率。2 AOP在Spring中的作用提供声明式事务;允许用户自定义切面横切关注点:跨越应用程序多个模块的方法或功能。即:与我们业务逻辑无关的,但是我们需要关注的原创 2022-04-04 11:35:12 · 148 阅读 · 0 评论 -
Spring5-代理模式
为什么要学习代理模式?这是SpringAOP的底层实现![SpringAOP和SpringMVC]静态代理动态代理1 静态代理角色分析:抽象角色:一般会使用接口或者抽象类来解决真实角色:被代理的角色代理角色:代理真实角色,代理真实角色后,一般会做一些附属操作客户:访问代理对象的人代码步骤:1.1 接口package com.kwok.demo01;// 租房的接口public interface Rent { public void rent原创 2022-04-04 11:29:41 · 84 阅读 · 0 评论 -
Spring5-Bean的自动装配
自动装配是Spring满足bean依赖的一种方式Spring会在上下文中自动寻找,并自动给bean装配属性在Spring中有三种装配方式1.在xml中显式配置2.在java中现实配置3.隐式的自动装配bean(重要)1 测试环境搭建:一个人有两个宠物package com.kwok.pojo;public class Cat { public void shout(){ System.out.println("miao~"); }}package .原创 2022-04-04 11:09:16 · 373 阅读 · 0 评论 -
Spring5-DI(Dependency Injection)依赖注入
1 构造器注入constructor-arg,前面已经论述2 Set方式注入[重点]依赖注入:Set注入依赖:bean对象的创建依赖于容器注入:bean对象中的所有属性,由容器来注入[环境搭建]2.1 复杂类型package com.kwok.pojo;public class Address { private String address; public String getAddress() { return address;原创 2022-04-03 14:11:36 · 97 阅读 · 0 评论 -
Spring5-配置说明
1 别名<!--使用Spring来创建对象,在Spring中这些都成为Bean--> <bean id="user" class="com.kwok.pojo.User"> <constructor-arg index="0" value="Spring学习"/> </bean> <alias name="user" alias="test"/> @Test public void MyTest(原创 2022-04-03 14:06:09 · 376 阅读 · 0 评论 -
Spring5-IOC创建对象方式
1.默认使用无参构造创建对象!2.假设我们要使用有参构造构建对象(1)下标赋值<!--使用Spring来创建对象,在Spring中这些都成为Bean--> <bean id="user" class="com.kwok.pojo.User"> <constructor-arg index="0" value="Spring学习"/> </bean>(2)类型创建<!--不建议使用--> <原创 2022-04-03 14:02:10 · 343 阅读 · 0 评论 -
Spring5-HelloSpring
实体类:package com.kwok.pojo;public class Hello { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } @Override public String toString() { return原创 2022-04-03 13:58:37 · 144 阅读 · 0 评论 -
Spring5-IOC理论推导
1.UserDao接口package com.kwok.dao;public interface UserDao { void getUser();}2.UserDap的l实现类package com.kwok.dao;public class UserDaoImpl implements UserDao { @Override public void getUser() { System.out.println("默认获取用户的数据!");原创 2022-04-03 13:53:20 · 167 阅读 · 0 评论 -
Mybatis-详细执行流程
1.SqlSessionFactoryBuilder通过构造器build调用build构造方法2.build构造方法调用XMLConfigBuilder这个类解析了**(inputStream, environment, properties)**3.解析完后传给Configuration这个对象(Configuration中包含了所有的配置内容)4.之后SqlSessionFactory实例化,获取sqlSession(事务在这一层去做,相当于原来的Connection)5.sqlSes.原创 2022-04-03 13:35:38 · 836 阅读 · 0 评论 -
Mybatis-缓存
1、 简介1.什么是缓存【Cache】?在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高效率,解决了高并发系统的性能问题。2.为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。3.什么样的数据能使用缓存?经常查询并且不经常改变的数据。【可以使用缓存】2、 Mybatis缓存ByBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提原创 2022-04-03 13:28:26 · 128 阅读 · 0 评论 -
Mybatis-动态SQL
什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句利用动态SQL这一特性可以彻底摆脱代码拼接SQL的痛苦动态SQL 元素和JSTL 或基于类似XML 的文本处理器相似。在Mybatis 之前的版本中,有很多元素需要花时间了解。Mybatis3 大大精简了元素种类,现在只需学习原来一半的元素便可。Mybtis 采用功能强大的基于OGNL的表达式来淘汰其它大部分元素。ifchoose(when, otherwise)trim(where, set)foreach环境搭建CRE原创 2022-04-03 13:18:23 · 749 阅读 · 0 评论 -
Mybatis-一对多处理
比如:一个老师有多个学生!环境搭建(mybatis-06)1.导入lombok依赖,写配置文件2.新建实体类Teacher,Studentpackage com.kwok.pojo;import lombok.Data;@Datapublic class Student { private int id; private String name; private int tid;}package com.kwok.pojo;import lombok.Dat原创 2022-04-03 13:12:26 · 447 阅读 · 0 评论 -
Mybatis-多对一处理
多对一对于学生而言,多个学生,关联对应一个老师【多对一】对于老师而言,一个老师,关联对应多个学生【一对多】SQLcreate table teacher(id int auto_increment primary key,name char(20) not null,unique(id))engine=innodb default charset=utf8;INSERT INTO teacher (id,name) VALUES(1,'王老师');CREATE TABLE stu原创 2022-04-03 13:04:26 · 77 阅读 · 0 评论 -
Mybatis-使用注解开发
1、 面向接口编程大家之前都学过面向对象编程,也学习过接口,但在真正的项目开发中,很多时候我们会选择面向接口编程根本原因:解耦,可拓展,提高复用,分层开发中,上层不用管具体的实现,大家都遵守共同点标准,使得开发变得容易,规范性更好在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的,在这种情况下,各个对象的内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键,小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都原创 2022-04-02 17:40:21 · 158 阅读 · 0 评论 -
Mybatis-日志
1、 日志工厂如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的助手曾经:sout,debug现在:日志工厂!SLF4JApache Commons LoggingLog4j 2Log4j 【掌握】JDK loggingSTDOUT_LOGGING 【掌握】NO_LOGGING在MyBatis中具体使用哪一个日志实现,在设置中设定。STDOUT_LOGGING标准日志输出在mybatis核心配置文件中配置我们的日志<setting原创 2022-04-02 17:25:20 · 301 阅读 · 0 评论