
后端
文章平均质量分 74
记录有关Java的学习历程
Today不上发条
我们似乎总会在某一年,爆发性地长大,爆发性地觉悟,爆发性地知道某个真相,让原本没有什么意义的时间的刻度,成了一道分界线。-—《老灵魂》
展开
-
SpringBoot—自定义Starter篇
一、自定义Starter 的思路:创建一个Maven工程,创建三个模块一个模块为demo-app,一个模块为demo-module,一个模块为demo-module-springboot-starterdemo-module中定义一个MyModule类,其中有一个save方法,两个属性:version,agedemo-module-springboot-starter中定义一个自动配置类ModuleAutoConfiguration,关联一个配置类ModuleConfig,这个配置类通过读取pro原创 2022-02-13 17:22:12 · 2756 阅读 · 5 评论 -
Spring三级缓存以及面试题
Spring的三级缓存三级缓存的作用:解决循环依赖的问题循环依赖问题:说白是一个或多个对象实例之间存在直接或间接的依赖关系,这种依赖关系构成了构成一个环形调用代码描述:@Servicepublic class AServiceImpl implements AService { @Autowired private BService bService; ...}@Servicepublic class BServiceImpl implements BServi原创 2022-01-22 16:33:08 · 5535 阅读 · 15 评论 -
Spring总结(IOC、AOP原理以及Spring事务)
一、概述1、Spring是一个开源免费且轻量级的框架 , 非侵入式的 .2、控制反转 IoC , 面向切面 Aop3 、对事物的支持 , 对框架的支持一句话概括:Spring 是一个轻量级的控制反转(IOC),面向切面(AOP)的框架二、Spring下载Sprig官网:Spring.io 去到官网即可下载GA:稳定通用版本、SNAPSHOT : 快照版本Spring历史版本下载地址:https://repo.spring.io/ui/native/release/org/spri原创 2022-01-19 16:56:51 · 3232 阅读 · 28 评论 -
Mybatis执行流程、缓存原理以及相关面试题
一、Mybatis执行流程具体分析Mybatis是如何操作数据库的!、1、定义我们的核心配置文件的路径,这个路径是从target/classes下开始找的! String config = "mybatis-config.xml" ;2、读取这个config表示的文件 InputStream inputStream= Resources.getResourceAsStream(config);3、创建SqlSessionFactoryBuilder对象SqlSessionFact原创 2022-01-15 20:59:33 · 2089 阅读 · 10 评论 -
Docker-Compose + Nginx 部署前后端分离项目
Docker-Compose + Nginx 部署前后端分离项目项目是采用Vue +Springboot 的前后端分离项目一、预处理1、项目打包前,先去File–>Setting–> File Encoding 中 改为UTF-8,防止乱码错误!注意:此时如果修改为UTF8后我们的properties配置文件中文乱码:不要慌没问题,直接把中文删除再写即可!2、由于后端项目是使用SpringBoot编写的,我们打包需要一个打包插件,记得导入包!不然可能出现打出的包中没东西 &原创 2021-12-04 20:37:28 · 4387 阅读 · 36 评论 -
Vue+Springboot 博客项目总结
Vue+Springboot 博客项目总结技术栈 : Vue + Springboot + Mybatis-Plus + Redis + MySQL1、项目环境的搭建1.1、子模块和父模块的依赖问题当父模块使用版本管理进行依赖管理的话,必须声明版本号,如果不这样子模块是无法引入到父模块的依赖的,当然还有一种方法是,直接copy一份父模块的依赖全部到子模块这样的话父模块可以不声明版本号 ;1.2、声明父工程必须再父模块的pom文件中声明如下:<packaging>pom</原创 2021-12-04 19:22:09 · 2223 阅读 · 24 评论 -
Nginx总结(反向代理、负载均衡、动静分离)篇
一、Nginx简介什么是NginxNginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同类型的网页服务器中表现较好Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率﹐能经受高负载的考验,有报告表明能支持高达50, 000个并发连接数。Nginx作用:反向代理、负载均衡、动静分离等什么是反向代理先了解一下正向代理 :通过在客户端配置代理服务器,通过代理服务器进行互联网访问!反原创 2021-11-30 23:16:28 · 18372 阅读 · 8 评论 -
Springboot集成七牛云,实现图片上传功能
七牛云的使用1、进入官网,注册一个账号2、找到对象存储3、新建存储空间4、管理存储空间5、到此基本操作就完成了,接下来我们要在项目中使用方式一:官方的帮助文档,很详细:步骤一:找到开发者中心步骤二:选择对象存储步骤三:找到Java的SDK可以看到我们的官网非常详细!方式二:这里给大家封装好了一个工具类,maven项目可以直接用官网是静态工具类,这里是注入到IOC容器当中!1、导入pom依赖 <dependency>原创 2021-11-23 15:58:26 · 1664 阅读 · 15 评论 -
JSON详解
一、概述JSON(JavaScript Object Notation, JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。看看他的要求和语法格式:对象表示原创 2021-11-09 21:34:06 · 6759 阅读 · 1 评论 -
Hexo搭建个人博客
Hexo搭建博客具体流程一、环境准备1、准备环境 nodejs、npm(下载node自带的包管理器)、cnpm使用ndoe -v 和 npm -v 检查自己的环境是否准备好2、执行 cnpm install - g hexo-cli 下载Hexo的脚手架!3、创建安装目录E:\blog (自己随便选择,就是想让博客放在哪),windows直接创建、Linux通过mkdir4、在命令行中进入当前目录 cd E:\blog5、使用window系统使用chdir,Linux使用pwd检查原创 2021-10-19 12:24:14 · 292 阅读 · 0 评论 -
Docker部署个人博客(Springboot)
学完Docker后,实战测试部署个人博客个人博客:Springboot + SementicUI + Mybatis +MySQL首先我们需要将服务器中MySQL的环境准备好一、去DockerHub下载对应版本的MySQL镜像,然后启动容器#下载镜像[root@songqixiang home]# docker pull mysql:5.7#启动容器[root@songqixiang conf]# docker run -d -p 3310:3306 -v /home/mysql/con.原创 2021-08-20 11:51:22 · 385 阅读 · 0 评论 -
Maven管理的SSM项目以及Springboot项目部署在服务器上的步骤
部署前提:需要在服务器上通过rpm/yum/宝塔面板安装与自己本地相同的环境(JDK、mysql、Tomcat)这种教程还挺全面,可以去百度一下,这里提醒一下:通过下载对应Linux的压缩包安装需要配置JDK的环境变量,然而rpm安装和宝塔面板的一键安装都是不需要配置环境变量的!一.部署Maven管理的SSM项目思路:SSM项目和javaweb项目都是需要配置自己的Tomcat的所以部署的时候需要把项目打成war包直接放在服务器中下载好的Tomcat的webapps目录下然后调用tomcat中bin目原创 2021-06-01 19:38:35 · 340 阅读 · 1 评论 -
SpringCloud-06-Config远程配置
——其实到上篇05文章我们就已经把SpringCloudNetflix的五大神兽(Eureka、Ribbon、Feign、Hystrix、Zuul)给总结完了,这篇只是讲述一种实际工作当中常用的一种配置文件的方式!1.什么是SpringCloud-Config概述:Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。——人话:我们的客户端将ConfigServer作为一个中转站,间接的去.原创 2021-06-19 17:41:16 · 202 阅读 · 0 评论 -
SpringCloud-05-Zuul网关
关于zuul网关原创 2021-06-17 21:50:56 · 212 阅读 · 1 评论 -
SpringCloud-04-Hystrix熔断机制
关于Hystrix熔断机制的学习!分布式当前面临的问题:复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免失败!1.服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几十.转载 2021-06-16 22:05:06 · 425 阅读 · 0 评论 -
SpringCloud-03-Feign负载均衡
上篇文章学完了Ribbon,接下来让我们学习一下Feign前提:Feign内部集成了Ribbon,只不过是Java社区的人觉得java开发不应该是Ribbon这样的Rest风格,而应该是想java一样面向接口编程,所以Feign就被创造出来!1.什么是FeignFeign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端2.F.原创 2021-06-16 19:22:32 · 126 阅读 · 0 评论 -
SpringCloud-02-Ribbon负载均衡
关于Ribbon负载均衡1.什么是RibbonSpring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix的中间层服务连接在一起。Ribbon 的客户端组件提供一系列完整的配置项,如:连接超时、重试等。简单的说,就是在配置文件中列出LoadBalancer (简称LB:负载均衡) 后面所有的及其,Ribbon 会自动的帮助你基于某种.原创 2021-06-16 18:57:38 · 111 阅读 · 0 评论 -
SpringCloud-01-Eureka注册中心
Eureka服务注册中心1.什么是Eureka?Netflix在涉及Eureka时,遵循的就是API原则.Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper.2.原理理解Springcloud 封装了Ne.原创 2021-06-16 17:39:40 · 265 阅读 · 0 评论 -
Springboot整合PageHelper分页插件
使用传统的分页方式属实有些冗余,接下来介绍PageHelper在Springboot中的简单使用!详情参考:PageHelper官网一、使用maven导包 <!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-s.原创 2021-09-19 16:29:59 · 328 阅读 · 0 评论 -
@SpringbootApllication主启动类注解分析
我们学过Springboot都知道我们的@SpringbootApllication注解是一个Springboot项目主启动类标识我们点入源码分析这个注解:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class}), @Fil.原创 2021-07-14 11:52:01 · 290 阅读 · 0 评论 -
Springboot-06-Dubbo+Zookeeper
Dubbo+Zookeeper的初体验Dubbo:是一个RPC的轻量级通讯框架,是服务提供者(provider)、注册中心(register)、服务消费者(consumer) 它们三者联系起来的桥梁;Zookeeper:是一个注册中心,服务提供者去提供服务到注册中心,而服务消费者去注册中心当中去获取服务;关于使用zookeeper是属于第三方的的注册中心,需要单独下载,开启注册中心的话只需要去启动bin目录下的zkServer.cmd即可。注册中心开启后就是服务提供者注册服务到注册中心,.原创 2021-06-10 21:26:05 · 125 阅读 · 0 评论 -
Springboot-05-SpringSecurity
关于安全框架这一块,SpringSecurity可谓是被普遍使用!让我们来学习一下!开始之前让我们先牢记两个英语单词:Authentication认证什么是认证呢?就是通过判断用户输入的账户密码,是否与要登录的用户一致。Authorization授权那么授权就是,首先给一个请求赋予一个能访问的权限,然后给予用户一些权限,只有权限具有能够访问的权限那么就完成了访问成功的操作!那么接下来我们结合实际案例来学习一下SpringSecurity!1.引入Security的启动器<depen原创 2021-05-02 16:53:56 · 133 阅读 · 0 评论 -
Springboot-04-yaml配置注入
关于yaml配置注入,即是我们以配置文件的形式将bean的属性值进行注入,我们在学习Spring的时候我们学习了xml的方式注入,注解的方式注入,然而在Springboot项目当中我们却用来yaml/properties去替换传统的配置文件方式yaml注入的语法格式:语法结构 :key:空格 value空格不可以忽略,这是语法规定;具体的使用如下:按照规则使用即可...原创 2021-05-01 16:24:38 · 113 阅读 · 0 评论 -
Springboot-03-MVC自动配置原理(附加扩展使用SpringMVC)
前提:在我们编写项目前,我们处要知道Springboot帮我们自动配置,但是,所有的事情都交给springboot来干是不是自己都不相信,这是当然,当我们进行实际开发的时候,根据不同的业务环境肯定会存在springboot的自动配置,不能妥善的解决问题,因此我们要部分接管springboot中springmvc中相关的部分,使得项目更加的妥善!接下来让我们了解如何往下,扩展springmvc,定制属于自己的一些东西,这里以增加一个Intercepter拦截器为例;扩展一个Intercepter有两种方法:原创 2021-05-01 16:05:05 · 166 阅读 · 0 评论 -
Springboot-02-自动装配原理(附加如何修自动配置属性)
当我们初次接触到Springboot项目时,自动装配是我们接触到的第一个难点,然而我们用的时候感觉很方便极大的节省了xml的一些文件配置,但是这些底层是怎么做到的呢?让我们来攻克这个问题:首先是,当我们启动一个springboot项目的时候,系统默认加载一个spring.factories的配置文件,如下我们可以看到这个配置文件当中是一个个我们常用或者没见过的自动配置类,他们以javaconfig的方式配置注入再ioc容器当中,通过这个配置文件联系起来,我们可以称为自动配置管理中心(我自己起的名,哈哈原创 2021-05-01 15:12:51 · 221 阅读 · 0 评论 -
Springboot-01-版本控制器
当我们每次使用Springboot项目时,你会发现很多依赖根本不需要版本号即可正常的使用,这是为什么呢,然我们进行源码分析!点进pom.xml文件当中发现每一个Springboot项目都有这么一个核心依赖让我们继续探索,点进依赖发现当前依赖还有一个父依赖如下然后我们再点进去发现,这个依赖就是我们的版本控制器,因为它里面管理了所有依赖的版本号,如图:还有很多,因此我们可以得出一个结论:凡是引入的依赖在版本控制中心有记录了我们就不必再引入版本号直接使用即可!但是版本控制中心如果不存在的话,或者我原创 2021-05-01 15:00:08 · 216 阅读 · 0 评论 -
Spring中@AspectJ注解找不到的原因
1.查看pom.xml中是否导入织入包 <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version>2.注意织入包后面带的作用域要去掉,具体是为什么我也不清楚,试出来的; <scope>runtime</scope>3.原创 2021-01-12 11:13:25 · 1793 阅读 · 0 评论 -
自动装配中@Resource和@Autowired的区别
@Resource(java原生注解)和@Autowired(Spring注解)是通过byName还是通过byType完成自动装配想要上述理解问题就必须先要知道byName和byType的原理;个人对byType和byName的理解:byName需要保证所有bean的id是唯一的,并且这个bean需要和自动注入的属性的set方法的名字一致(需要自动注入的属性的set方法名字和且在beans.xml(applcationcontext.xml)存在一个id与其对应)byType需要保证所有bean的原创 2020-12-10 10:57:21 · 606 阅读 · 0 评论 -
Google验证码Kaptcha的详细过程
使用Google验证码:Kaptcha1.首先是导入jar包2.第二步配置jar包中的KaptchaServlet的路径 <!--配置google的验证码返回一个图片--> <servlet> <servlet-name>KaptchaServlet</servlet-name> <servlet-class>com.google.code.kaptcha.servlet.KaptchaServl原创 2020-11-14 11:53:28 · 1976 阅读 · 0 评论