自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 收藏
  • 关注

原创 Spring Boot3新特性

GraalVM 是 Oracle 在 2018 年发布的一个全新的通用全栈虚拟机,并具有高性能、跨语言交互等逆天特性,不仅支持了 Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其他像 JavaScript、Ruby、Python 和 R 语言等。Spring Boot 3.0 支持 Micrometer 1.10 中引入的新的 Observation API,新的。支持新版本的 ES JAVA 客户端自动装配,可以通过属性。

2023-06-07 14:57:16 1104

原创 JDK17 新特性

该提案的目标包括允许类或接口的作者控制由哪些代码负责实现它,提供一种比访问修饰符更具声明性的方式来限制超类的使用,并通过为模式的详尽分析提供基础来支持模式匹配的未来方向。Records的目标是扩展Java语言语法,Records为声明类提供了一种紧凑的语法,用于创建一种类中是“字段,只是字段,除了字段什么都没有”的类。通过Java 17中的文本块语法,类似的字符串处理则会方便很多;不可信数据的反序列化是一项具有内在风险的操作,因为在许多情况下传入数据流的内容是通过未知或未经身份验证的客户端获取的。

2023-06-05 14:41:20 6152

原创 微服务14 Docker镜像仓库

镜像仓库()有公共的和私有的两种形式:公共仓库:例如Docker官方的,国内也有一些云服务商提供类似于的公开服务,比如、、等。除了使用公开仓库外,用户还可以在本地搭建私有。企业自己的镜像最好是采用私有来实现。

2022-10-16 20:21:59 475 1

原创 微服务13 DockerCompose

将之前学习的cloud-demo微服务集群利用DockerCompose部署。Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!如果下载速度一直为0可以重启docker服务。将各微服务打包为app.jar。

2022-10-16 17:26:11 200

原创 微服务12 Dockerfile自定义镜像

由于前面安装jdk等都是共同的操作,可以拿出来,可以基于已有的jdk镜像来操作。基于Ubuntu镜像构建一个新镜像,运行一个java项目。基于java:8-alpine镜像,将一个Java项目构建为镜像。镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。用指令来说明要执行什么操作来构建镜像。1.在tmp目录新建一个docker-demo文件夹。3.构建镜像名为javaweb,tag为1.0。4.运行javaweb镜像在web容器。镜像是分层结构,每一层称为一个。2.重新构建镜像为2.0。

2022-10-16 15:09:18 499

原创 微服务11 Docker基本操作

根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx。创建一个nginx容器,修改容器内的html目录内的index.html内容。参数来挂载一个数据卷到某个容器目录,如果数据卷不存在则自动创建。将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。创建并运行一个MySQL容器,将宿主机目录直接挂载到容器。通过命令:docker images 查看拉取到的镜像。创建一个数据卷,并查看数据卷在宿主机的目录位置。命令模式:docker 操作 容器名称。

2022-10-14 20:35:42 1085

原创 微服务10 docker安装

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异。

2022-10-13 16:46:33 660

原创 微服务9 Gateway网关

网关不能处理业务,请求经过 gateway,根据某种规则,把请求转发到对应微服务,这个过程叫做路由。上面介绍的过滤器工厂,网关提供了 31 种,但每一种过滤器的作用都是固定的。路由过滤器 GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理。当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。全局过滤器的作用也是处理一切进入网关的请求和微服务响应,如果同时满足则放行,否则拦截。,属于响应式编程的实现,具备更好的性能。

2022-10-12 16:18:47 408

原创 微服务8 Feign远程调用

在common的pom.xml文件中加入以下代码,排除nacos中的ribbon就可以解决了Feign运行自定义配置来覆盖默认配置,可以修改的配置如下:NONE:不记录任何日志信息,默认值。BASIC:仅记录请求的方法,URL以及响应状态码和执行时间HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。

2022-10-07 16:41:52 882

原创 微服务7 nacos集群搭建

1.官方集群结构2.搭建集群2.1搭建数据库2.2下载安装nacos2.3配置nacos2.4启动2.5nginx反向代理和负载均衡

2022-10-06 17:58:55 1102

原创 微服务6 nacos配置管理

在user-server中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml。从结果看出,两个实例都读取了共享配置user-server.yaml的envSharedValue属性和各自所属的环境配置。:项目的核心配置,需要热更新的配置才有放到 nacos 管理的必要。当微服务实例越来越多,配置就更繁杂,我们需要一个统一配置管理方案,可以集中管理所有实例的配置。extension-configs: # 多微服务间共享的配置列表。

2022-10-05 17:47:09 1769

原创 微服务5 Nacos注册中心

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

2022-10-04 16:19:56 965

原创 微服务4 Ribbon负载均衡

目录1.负载均衡原理1.1总体流程:1.2LoadBalancerInterceptor1.3RibbonLoadBalancerClient.execute()1.4 getServer()方法1.5详细流程2.负载均衡策略​编辑 2.1常见策略2.2自定义策略2.2.1代码方式(作用于全局) 2.2.2配置文件方式(作用于指定服务)3.饥饿加载 在之前eureka中,我们给添加了 注解即可实现负载均衡功能,这是因为SpringCloud底层提供过一个名为 Ribbon 的组件,来

2022-10-02 18:56:02 578

原创 微服务3 Eureka注册中心

小技巧:通过 idea 的多实例启动,可以查看 Eureka 的集群效果。在 order-service 中完成服务拉取,然后通过负载均衡挑选一个服务,实现远程调用。是因为eureka 本身也是一个微服务,这里也要将自己注册进来,当后面 eureka。#eureka自己也是一个微服务,启动时需要将自己也注册到注册中心。#name: eureka-server # 服务名称。name: eureka-server # 服务名称。#name: order-server # 服务名称。

2022-10-01 16:38:26 501

原创 微服务 服务拆分及远程调用2

如果订单模块也能发送http请求,那么就可以通过订单模块既可以获得订单信息又能获得用户信息,如何在Java代码发起http请求?Spring 提供了一个 RestTemplate 工具,注册(注入bean)后可以发送http请求。微服务项目下,打开 idea 中的 Service,可以很方便的启动。根据订单id查询订单的同时,把订单所属的用户信息一起返回。cloud-demo:父工程,管理依赖。订单服务如果需要查询用户信息,,不能查询用户数据库。

2022-09-30 20:54:08 338

原创 微服务概述1

为应对系统出现异常的问题,引入分布式日志服务,可以统一对整个集群中的每个服务的运行日志进行存储、统计、分析,出现问题可以准确定位。还有系统监控链路追踪组件,实时监控整个集群中每个服务节点的运行状态、cpu负载、内存占用等,一旦出现问题,可以直接定位。一个业务由多个服务完成,当业务越多,服务之间的调用关系就越复杂,这样需要一个组件“注册中心”,负责记录每一个服务的功能、IP、端口等配置信息。现在就是可访问状态,用户通过身份验证,提交请求,由服务网关路由到相应服务。对系统进行自动化部署。来自黑马程序员ppt。

2022-09-29 19:07:31 487

原创 springboot run方法执行流程分析

应⽤上下⽂环境包括计算机的环境,Java环境,Spring的运⾏环 境,Spring项⽬的配置(在SpringBoot中就是那个熟悉的 application.properties/yml)等等。在这⾥,获取的是key为 org.springframework.context.ApplicationContextInitializer 的类。⽅法中主要完成的⼯作,⾸先是创建并按照相应的应⽤类型配 置相应的环境,然后根据⽤户的配置,配置系统环境,然后启动监听器,并加载系 统配置⽂件。

2022-09-25 18:49:51 1019 1

原创 Spring Boot⾃动配置

根据我们添加的jar包依赖,会⾃动将⼀些配置类的bean注册进ioc容器,我们可以 需要的地⽅使⽤@Autowired或者@Resource等注解来使⽤它。

2022-09-21 20:53:24 700

原创 springboot bean依赖属性配置

使用@EnableConfigurationProperties注解设定使用属性类时加载bean。业务类定义业务功能bean,在引导类通常使用@Import导入,解耦强制加载bean。将业务功能bean运行需要的资源抽取长独立的属性类,设置读取配置文件的信息。配置文件application.yml使用固定格式为属性注入数据。

2022-09-20 17:19:32 445

原创 spring bean管理2

bean的定义由前期xml配置逐步演化成注解配置,本质是一样的,都是通过反射机制加载类名后创建对象,对象就是spring管控的bean@Import注解可以指定加载某一个类作为spring管控的bean,如果被加载的类中还具有@Bean相关的定义,会被一同加载spring开放出了若干种可编程控制的bean的初始化方式,通过分支语句由固定的加载bean转成了可以选择bean是否加载或者选择加载哪一种bean。

2022-09-19 20:35:48 471

原创 11.springboot监控

定义一个监控端点,同时支持 HTTP 和 JMX 两种方式。定义一个监控端点,只支持 HTTP 方式。定义一个监控端点,只支持 JMX 方式。以上三个注解作用在类上,表示当前类是一个监控端点,另外还有一些注解会用在方法和参数上:作用在方法上,可用来返回端点展示的信息(通过 Get 方法请求)。作用在方法上,可用来修改端点展示的信息(通过 Post 方法请求)。作用在方法上,可用来删除对应端点信息(通过 Delete 方法请求)。作用在参数上,用来定位一个端点的具体指标路由。@Component。

2022-09-17 18:26:39 2339

原创 10.springboot热部署

当springboot项目启动时,base类加载器执行,加载jar包中的信息后,restart类加载器执行,加载开发者制作的内容。当执行构建项目后,由于jar中的信息不会变化,因此base类加载器无需再次执行,所以仅仅运行restart类加载即可,也就是将开发者自己制作的内容重新加载就行了,这就完成了一次热部署的过程,也可以说热部署的过程实际上是重新加载restart类加载器中的信息。使用快捷键【Ctrl】+【Alt】+【Shit】+【/】打开维护面板,选择第1项【Registry…强制关闭所有的热部署。

2022-09-16 18:38:40 1207

原创 9.SpringBoot与调度器

按照Quartz的开发规范制作,继承QuartzJobBean@Override}}在对应要定时执⾏的操作上⽅,使⽤注解@Scheduled定义执⾏的时间,执⾏时间的描述⽅式还是cron表达式@Component")}}

2022-09-13 18:55:08 310

原创 8.SpringBoot 与消息

ActiveMQ是MQ产品中的元⽼级产品,早期标准MQ产品之⼀,在AMQP协议没有出现之前,占据了消息中间件市场的绝⼤部分份额,后期因为AMQP系列产品的出现,迅速⾛弱,⽬前仅在⼀些线上运⾏的产品中出现,新产品开发较少采⽤。peer-2-peer,⽣产者会将消息发送到⼀个保存消息的容器中,通常使⽤队列模型,使⽤队列保存消息。AMQP的出现解决的是消息传递时使⽤的消息种类的问题,化繁为简,但是其并没有完全推翻JMS的操作API,所以说AMQP仅仅是⼀种协议,规范了数据传输的格式⽽已。

2022-09-12 19:22:39 876

原创 7 SpringBoot与Elasticsearch

Elaticsearch简称为es,是⼀个开源的可扩展的分布式全⽂检索引擎服务器,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es使⽤Java开发并使⽤Lucene作为其核⼼来实现索引和搜索的功能,它通过简单的RestfulAPI和javaAPI来隐藏Lucene的复杂性,从⽽让全⽂搜索变得简单。Elasticsearch官⽹:https://www.elastic.co/cn/products/elasticsearch。

2022-09-09 20:17:32 745

原创 6.SpringBoot与缓存

为了⽅便开发者使⽤基于字符串为数据的操作,springboot整合redis时提供了专⽤的API接⼝StringRedisTemplate,你可以理解为这是RedisTemplate的⼀种指定数据泛型的操作API。下⾯开始使⽤Xmemcached。在业务⽅法上⾯使⽤注解@Cacheable声明当前⽅法的返回值放⼊缓存中,其中要指定缓存的存储位置,以及缓存中保存当前⽅法返回值对应的名称。springboot技术提供有内置的缓存解决⽅案,可以帮助开发者快速开启缓存技术,并使⽤缓存技术进⾏数据的快速操作。

2022-09-07 17:47:18 388

原创 5.SpringBoot⾼级配置

注解@ConfigurationProperties指定该对象加载哪⼀组yaml中配置的信息,为bean绑定属性。

2022-09-06 17:09:11 3635

原创 第4章SpringBoot ⽇志

1.记录应⽤系统⽈志主要有三个原因 记录操作轨迹、监控系统运⾏状况、回溯系统故障。记录操作⾏为及操作轨迹数据,可以数据化地分析⽤户偏好,有助于优化业务逻辑,为⽤户提供个性化的服务。例如,通过 access.log 记录⽤户的操作频度和跳转链接,有助于分析⽤户的后续⾏为。2.全⾯有效的⽇志系统有助于建⽴完善的应⽤监控体系,由此⼯程师可以实时监控系统运⾏状况,及时预警,避免故障发⽣。监控系统运⾏状况,是指对服务器使⽤状态,如内存、 CPU 等使⽤情况,应⽤运⾏情况如响应时间 QPS 等交互状态;

2022-09-05 19:46:36 583

原创 3.SpringBoot整合持久层技术

1. 整合操作需要勾选MyBatis技术,也就是导⼊MyBatis对应的starter2. 数据库连接相关信息转换成配置3. 数据库SQL映射需要添加@Mapper被容器识别到4. MySQL 8.X驱动强制要求设置时区修改url,添加serverTimezone设定修改MySQL数据库配置5. 驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver。

2022-09-02 22:12:12 384

原创 2 springboot全局配置

1. 使⽤Environment对象封装全部配置信息2. 使⽤@Autowired⾃动装配数据到Environment对象中。

2022-09-01 21:54:26 641

原创 1.springboot入门

的概念SpringBoot提供了⼀种快速使⽤Spring的⽅式,基于约定优于配置的思想,可以让开发⼈员不必在配置与逻辑业务之间进⾏思维的切换,全身⼼的投⼊到逻辑业务的代码编写中,从⽽⼤⼤提⾼了开发的效率,⼀定程度上缩短了项⽬周期。spring官网可以轻松创建独⽴的、⽣产级的基于Spring的应⽤程序,您可以“直接运⾏”。提供了⼀种观点,来对待Spring和第三⽅库,让上⾯的搭建过程最⼩化。绝⼤多数应⽤都只需要极简的配置就可以。,有态度有观点,固执的。其含义就是,在搭建应⽤的过程中,...

2022-08-31 20:09:57 391

原创 数据库分片

如今随着互联网的发展,数据的量级也是呈指数的增长,从 GB 到 TB 到 PB。对数据的 各种操作也是愈加的困难,如何解决这个问题呢?此时就需要做数据库集群,为了提高 查询性能将一个数据库的数据分散到不同的数据库中存储, 这就是我们通常所说的数据库分片。我们通常会使用 mycat 数据库中间件来解决。在每个数据库中的每个表,如果主键自增,id都是从1开始,mycat汇总所有数据时会冲突,所以不能设置自增,需要使用分布式 I D 生成方案。...

2022-08-29 20:06:58 594

原创 ElementUI和ES6简介

介绍什么是Element,“饿了么”出品的一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库。常用组件详见elementUI官网。

2022-07-19 17:41:33 437

原创 通用mapper(mapper-mybatis)

通用Mapper是一个可以实现任意MyBatis通用方法的框架,项目提供了常规的增删改查操作以及Example相关的单表操作,与mybatisplus相似,对mybatis制作增强不做修改。为什么要用通用mapper?我们这里列举一下原生Mybatis的痛点1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改2、需要自己实现sql分页,select*fromtablewhere...limit1,3。...

2022-07-19 15:51:08 9862

原创 SSM整合+跨域访问

目录SSM整合的步骤 0)建库,建表 1)新建Maven项目 2)修改目录​编辑 3)修改pom.xml文件 4)添加jdbc.properties属性文件 5)添加SqlMapConfig.xml文件 6)添加applicationContext_mapper.xml文件(数据访问层的核心配置文件) 7)添加applicationContext_service.xml文件(业务逻辑层的核心配置文件) 8)添加spirngmvc.xml文件 9)删除web.xml文件,新建,改名,设置中

2022-07-10 19:14:04 685

原创 十四、SpringMVC执行流程

DispatcherServlet:前端控制器,不需要工程师开发,由框架提供作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求HandlerMapping:处理器映射器,不需要工程师开发,由框架提供作用:根据请求的url、method等信息查找Handler,即控制器方法Handler:处理器,需要工程师开发作用:在DispatcherServlet的控制下Handler对具体的用户请求进行处理HandlerAdapter:处理器适配器,不需要工程师开发,由框架提供作用:通过Han

2022-07-05 16:11:12 87

原创 十三、注解配置SpringMVC

使用配置类和注解代替web.xml和SpringMVC配置文件的功能目录1、创建初始化类,代替web.xml2、创建SpringConfig配置类,代替spring的配置文件3、创建WebConfig配置类,代替SpringMVC的配置文件4、测试功能在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来配置Servlet容器。 Spring提供了这个接口的实现,名为SpringServletCo

2022-07-05 12:03:36 89

原创 springMVC 拦截器和异常处理器

目录十一、拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序十二、异常处理器1、基于配置的异常处理2、基于注解的异常处理SpringMVC中的拦截器用于拦截控制器方法的执行SpringMVC中的拦截器需要实现HandlerInterceptorSpringMVC的拦截器必须在SpringMVC的配置文件中进行配置:2、拦截器的三个抽象方法SpringMVC中的拦截器有三个抽象方法:preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回

2022-06-30 11:38:15 155

原创 springMVC 九、HttpMessageConverter文件上传和下载

目录九、HttpMessageConverter1、@RequestBody2、RequestEntity3、@ResponseBody4、SpringMVC将对象转化成json5、SpringMVC处理ajax 6、@RestController注解(非常重要)7、ResponseEntity(实现文件下载)十、文件上传和下载1、文件下载2、文件上传HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文HttpMessageConverter

2022-06-12 20:38:41 174

原创 SpringMVC RESTful

目录七、RESTful1、RESTful简介2、RESTful的实现 /user get 查询所有用户模拟/user/1 get 根据用户id查询用户信息模拟/user post 添加用户模拟 HiddenHttpMethodFilter/user put 修改用户信息模拟/user/1 delete 删除用户八、RESTful案例1、准备工作搭建环境(参考准备实体类准备dao模拟数据在SpringMVC.xml文件添加组件扫描2、功能清单3、具体功能

2022-06-11 20:57:04 208

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除