- 博客(49)
- 收藏
- 关注
原创 Spring Cloud Alibaba入门教程-05【Alibaba微服务组件Nacos配置中心】
官方文档: https://github.com/alibaba/springcloudalibaba/wiki/NacosconfigNacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。1.维护性 2.时效性 3.安全性springcloud config 对比
2022-06-29 18:30:00 6075
原创 Spring Cloud Alibaba入门教程-4【微服务调用组件Feign】
JAVA 项目中如何实现接口调用?1)HttpclientHttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带的 URLConnection,提升了易用性和灵活性,使客户端发送 HTTP 请求变得容易,提高了开发的效率。2)Okhttp一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由 Square 公司贡
2022-06-26 19:55:45 5760
原创 Spring Cloud Alibaba入门教程-3.2【微服务负载均衡器LoadBalancer】
Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代Ribbon。Spring官方提供了两种负载均衡的客户端:RestTemplateRestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。WebClientWebClient是从Spring WebF
2022-06-23 19:00:00 6540
原创 Spring Cloud Alibaba入门教程-3.1【微服务负载均衡器Ribbon】
目前主流的负载方案分为以下两种:集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(Nginx)。客户端根据自己的请求情况做负载均衡,Ribbon 就属于客户端自己做负载均衡。Spring Cloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去
2022-06-20 19:30:00 5744
原创 Spring Cloud Alibaba入门教程-02【 Alibaba微服务组件Nacos注册中心】
官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。集 注册中心+配置中心+服务管理 平台Nacos 的关键特性包括:服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理管理所有微服务、解决微服务之间调用关系错综复杂、难以维护的问题;Nacos Discovery服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址
2022-06-16 19:25:22 6110
原创 Spring Cloud Alibaba入门教程合集-01【微服务和Spring Cloud Alibaba介绍】
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。接下来我们就来了解一下每种系统架构是什么样子的, 以及各有什么优缺点。1.1.1 单体应用架构互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、部署和维护的成本。比如说一个电商系统,里面会包含
2022-06-13 19:10:39 5611
原创 Spring Boot Actuator 指标监控
干嘛的:主要运用在微服务架构,所以我建议你先学微服务,否则可能get不到它的用处,只有大型的分布式系统才会用到指标监控… Why:?对于一个大型的几十个、几百个微服务构成的微服务架构系统,在线上时通常会遇到下面一些问题,比如:So: 在这种大型分布式应用的环境下,我们如何能够快速发现问题、快速解决问题, 必须要有监控平台、(链路追踪、日志)介绍:SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变 量、日志信息、线程信息等实现
2022-06-08 13:29:03 6074
原创 MongoDB 实战
MongoDB是一个文档数据库(以 JSON 为数据模型),由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。文档来自于“JSON Document”,并非我们一般理解的 PDF,WORD 文档。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是BSON,一种类似JSON的二进制形式的存储格式,简称Binary JSON ,和JSON一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数
2022-06-02 16:02:46 6952
原创 SpringBoot资料合集-07【Spring Boot自定义starters】
一、简介SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景 启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行 少量的配置就能使用相应的功能。即使是这样,springboot也不能囊括我们所 有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使 用。二、如何自定义starter1.实例如何编写自动配置 ?我们参照@WebMvcAutoConfiguration为例,我们看看们需要准备哪些东 西,下面
2022-05-29 19:28:56 2722
原创 SpringBoot资料合集-06【Spring Boot启动原理源码剖析】
概念&原理:源码:SpringBoot 事假监听器发布顺序:1 1.ApplicationStartingEvent在运行开始时发送,但在进行任何处理之前(侦听器和初始化程序的注册除外)发送。 2 2.在创建上下文之前,将发送ApplicationEnvironmentPreparedEvent。 3 3.准备ApplicationContext并调用ApplicationContextInitializers之后,将发送ApplicationContextInitializedEve
2022-05-27 19:31:55 295
原创 SpringBoot资料合集-05【Spring Boot集成MyBatis】
1.整合Durid数据源1、引入Jar包12 <dependencies> 3 <dependency> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring‐boot‐starter‐jdbc</artifactId> 6 </dependency> 7 <dependency> 8 <groupId>
2022-05-25 19:30:43 216
原创 SpringBoot资料合集-04【Spring Boot与Web开发】
1.SpringMVC快速使用1.基于restful http接口 的CURD2.调用rest http接口3.通过postman调用4.通过swagger调用2.SpringMVC自动配置原理分析3.定制SpringMvc的自动配置1.通过WebMvcConfigurer进行扩展2. Json 开发3.国际化4.统一异常处理4.SpringBoot的嵌入式Servlet容器1.嵌入式Servlet容器配置修改2.注册servlet三大组件3.切换其他嵌入式Servlet容器4
2022-05-23 19:17:29 293
原创 SpringBoot资料合集-03【Spring Boot 热部署与日志】
1.springboot中devtools热部署2.带你弄清混乱的JAVA日志体系!3. logback日志的集成1.springboot中devtools热部署1.1 引言为了进一步提高开发效率,springboot为我们提供了全局项目热部署,日后在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启使修 改生效,在项目中开启了springboot全局热部署之后只需要在修改之后等待几秒即可使修改生效。1.2 开启热部署1.2.1 项目中引入依赖1 <dependency>
2022-05-21 19:33:33 422
原创 Spring Boot资料合集-02【Spring Boot的配置文件和自动配置原理】
1.使用Spring Initializer快速创建Spring Boot项目2.自定义SpringApplication3.配置文件的使用3.1 配置文件介绍3.2 yml基本语法3.3 配置文件的加载顺序 :3.4 外部约定配置文件加载顺序:3.5 Profile文件的加载3.6 所有配置文件按以下顺序考虑: 优先级从低到高3.7 外部属性读取 优先级从高到低4、配置文件值注入4.1、配置文件占位符5. Spring Boot的配置和自动配置原理1.使用Spring Initi
2022-05-19 19:24:28 380
原创 Spring Boot资料合集-01【Spring Boot 简介及快速搭建】
1.简介2.Why SpringBoot?2.1微服务3.快速开始 SpringBoot Hello World4.代码说明1.简介SpringBoot它基于Spring4.0设计,是由 Pivotal 公司提供的框架。SpringBoot 基于 Spring 开发。不仅继承了Spring框架原有的优秀特性,它并不是用来替代 Spring 的解决方案,而和 Spring 框架紧密 结合进一步简化了Spring应用的整个搭建和开发过程。其设计目的是用来简化 Spring 应用的初始搭建以及开发过
2022-05-17 19:42:09 360
原创 【MyBatis笔记-09】MyBatis-Plus的使用
MyBatisPlus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
2022-05-15 14:51:27 685
原创 【mybatis笔记-08】SSM框架整合
三大框架整合在老期的项目中,一般都是使用ssm项目做开发的,虽然现在的主流 开发是springboot来做开发,但是ssm的基本整合还是需要掌握的。整合SSM框架要做哪些事情:SpringMVC: pom1. web.xmla. 前端调度器servletb. 编码过滤器filterc. 支持rest的过滤器2. springmvc.xmla. 扫描controller包b. 添加c. 视图解析器d. 静态资源解析3. 添加控制器类…Spring:1. web.xmla. 监听
2022-05-13 14:40:20 278
原创 【mybatis笔记-07】MyBatis逆向工程&分页插件
1、分页插件 自定义分页插件 分页插件使用 PageHelper 原理 2、mybatis逆向工程 1、分页插件 MyBatis 通过提供插件机制,让我们可以根据自己的需要去增强MyBatis 的功能。需要注意的是,如果没有完全理解MyBatis 的运行原理和插件的工作方式,最好不要使用插件,因为它会改变系底层的工作逻辑,给系统带来很大的影响。 MyBatis 的插件可以在不修改原来的代码的情况下,通过拦截的方式,改变四大核心 对象的行为,比如处理参数,处理SQL,处理结
2022-05-12 19:10:03 219
原创 【Mybatis笔记-06】MyBatis基于XML的详细使用——缓存
1、一级缓存的使用2、二级缓存1、缓存的使用2、缓存的属性3、二级缓存的作用范围4、整合第三方缓存1、介绍MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地 配置和定制。 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进。 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行: 1 <cache/> 当添加上该
2022-05-10 19:12:19 394
原创 【Mybatis笔记-05】MyBatis基于XML的详细使用-参数、返回结果 处理
1、动态sql1、ifwheretrim3、foreach3、choose、when、otherwise4、set1、动态sql动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的 强大的动..
2022-05-08 19:26:59 1109
原创 MyBatis基于XML的详细使用-参数、返回结果处理
1、参数的获取方式2、参数的传递方式3、处理集合返回结果4、自定义结果集---resultMap1、参数的取值方式 在xml文件中编写sql语句的时候有两种取值的方式,分别是#{}和${}, 下面来看一下他们之间的区别:2、select的参数传递3、处理集合返回结果EmpDao.xmlUserDao.java4、自定义结果集resultMapEmpMapper.xml需要该文章相关资料+代码,可关注...
2022-05-06 19:50:49 500
原创 Mybatis的介绍和基本使用
01、Mybatis的介绍和基本使用 1、数据库操作框架的历程 (1) JDBC (2) DBUtils (3)Hibernate (4) JDBCTemplate 2、什么是Mybatis? 3、快速搭建Mybatis项目 5、配置文件详解 1、数据库操作框架的历程 (1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Ja
2022-04-30 21:00:00 1489
原创 BATJ面试题汇总及详解(进大厂必看)(65页)
阿里云面试分享 一、开场白 简单的介绍一下自己的工作经历与职责,在校或者工作中主要的工作内容,主要负责的内容; (你的信息一清二白的写在简历上,这个主要为了缓解面试者的压力) 介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节;(主 要考察应聘者对自己做过的事情是否有清晰的描述,判断做的事情的复杂度) 二、Java多线程 线程池的原理,为什么要创建线程池?创建线程池的方式; 线程的生命周期,什么时候会出现僵死进程; 说说线程安全问题,什么实现线
2022-04-27 19:31:11 253
原创 Lombok快速入门
1.安装idea lombok插件2.加入 maven 依赖1. @Getter/@Setter 自动产生 getter/setter2. @ToString自动重写 toString() 方法,会印出所有变量3. @EqualsAndHashCode 自动生成 equals(Object other) 和 hashcode() 方法,包括所有非静态变量和非 transient 的变量如果某些变量不想要加进判断,可以透过 exclude 排除...
2022-04-25 19:19:34 173
原创 MyBatisPlus快速入门
MyBatis-Plus快速入门 介绍特性: 1、mybatis-plus 快速使用 2、基于mybatis-plus的入门helloworld---CRUD实验 3、不得不提的条件构造器---Wrapper 4.扩展全局ID生成策略 逻辑删除 执行 SQL 分析打印 数据安全保护 乐观锁插件使用 5、代码生成器 介绍 MyBatisPlus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开
2022-04-23 21:00:00 143
原创 ES6快速入门
ES6快速入门 1、ECMAScript 6.0 简介 2、 ES6新特性-let&const 3、 ES6新特性-结构&字符串 4、 ES6新特性-箭头函数 5、 ES6新特性-对象优化 6、 map,reduce 7、 promise异步编排 8、 模块化 1、ECMAScript 6.0 简介 ECMAScript 6.0 (以下简称ES6, ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是 Europea
2022-04-21 19:15:59 1193
原创 分布式面试题
集群、分布式、SOA、微服务的概念及区别集群:不同服务器部署同一套应用服务对外提供访问,实现服务的负载均衡或者互备(热备,主从等), 指同一种组件的多个实例,形成的逻辑上的整体。单个节点可以提供完整服务。集群是物理形态分布式:服务的不同模块部署在不同的服务器上,单个节点不能提供完整服务,需要多节点协调提供服 务(也可以是相同组件部署在不同节点、但节点间通过交换信息协作提供服务),分布式强调的是工作方 式SOA:面向服务的架构,一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的
2022-04-19 19:30:30 288
原创 Spring道面试题(含答案)
Spring的69道常问面试题和答案大汇总(2022版),分享给大家,希望对你们有帮助哈~本文77道Spring面试题和答案的PDF版已经为大家准备好了,关我 私信即可获取哈~1. 什么是 spring?Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java 企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。2. 使用 Spring
2022-04-17 19:15:41 410
原创 cglib底层源码分析(三)
前⾯介绍到MethodProxy对象,表示⼀个⽅法的代理,⽐如UserSerivce中的test()⽅法,在对应的代理 类中会有对应的两个⽅法: ⽽MethodProxy对象代理就是这两个⽅法,⽐如: 我们先来看⼀下MethodProxy对象的创建,创建的⼊⼝在代理类中:对应的⽅法为: 可以发现MethodProxy对象中主要有三个属性: 1. sig1,表示test⽅法 2. sig2,表示CGLIB$test$0⽅法 3. createInfo,表示Us...
2022-04-14 19:33:07 310
原创 cglib底层源码分析(⼆)
其实我们如果看到了cglib所⽣成的代理类之后,其实就不难猜测,cglib是如何去⽣成代理类了,我们看 ⼀个完整的代理类:我们发现,UserService代理类既继承了UserService类,也实现了Factory接⼝,从⽽代理中就需要去 实现Factory接⼝中的⼏个⽅法:我们可以发现newInstance()⽅法会重新⽣成⼀个代理对象,setCallbacks()和getCallbacks()可以⽤来 设置或获取增强逻辑。我们还发现,不仅只...
2022-04-12 19:16:43 453
原创 cglib底层源码分析(⼀)
cglib是⼀种动态代理技术,可以针对类来⽣成⼀个代理对象。 ⽐如,我们现有⼀个UserService类:现在利⽤cglib对UserService类中的test()⽅法进⾏增强:在分析底层源码实现之前,我们先来试试,cglib能否代理接⼝,定义⼀个UserInterface接⼝然后利⽤cglib来代理⼀个接⼝:也是可以正常运⾏的,那么⽤cglib代理⼀个类和代理⼀个接⼝的底层有什么区别呢?我们继续分析。 我们知道,既然要⽣成⼀个代理对象,那么就肯定需要⼀个代理...
2022-04-10 19:15:58 555 1
原创 Spring Cloud动画视频笔记
配置中⼼什么是配置中心微服务系统中,存在很多功能开关和各种参数的配置项,传统的配置⽂件、数据库等⽅式⽆法满⾜开发⼈ 员对配合管理的需求,此时,分布式配置中⼼应运⽽⽣。配置中⼼的特点1、统⼀管理:配置中⼼服务端负责配置的管理(新增、修改、删除、发布),集成了配置中⼼客户端的微 服务程序可以统⼀从配置中⼼服务端拉取配置,从⽽实现整个微服务系统的统⼀配置管理。2、区分环境:⼀个微服务应⽤中的某些配置项,在不同的环境(开发、测试、⽣产)通常是不同的,作为 分布式配置中⼼需要具有隔离不..
2022-04-08 20:00:00 662
原创 亿级IM系统
本文将在亿级消息量、分布式IM系统这个技术前提下,分析和总结实现这套系统所需要掌握的知识点,内容没有高深的技术概念,尽量做到新手老手皆能读懂。本文不会给出一套通用的IM方案,也不会评判某种架构的好坏,而是讨论设计IM系统的常见难题跟业界的解决方案。因为也没有所谓的通用IM架构方案,不同的解决方案都各有其优缺点,只有最满足业务的系统才是一个好的系统。在人力、物力、时间资源有限的前提下,通常需要做出很多权衡,此时,一个能够支持快速迭代、方便扩展的IM系统才是最优解。IM常见术语用户:.
2022-04-06 19:36:04 940
原创 阿⾥、京东、蚂蚁等⼤⼚⾯试真题解析
阿⾥⼀⾯说⼀下ArrayList和LinkedList区别1. ⾸先,他们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层是基于链表实现 的2. 由于底层数据结构不同,他们所适⽤的场景也不同,ArrayList更适合随机查找,LinkedList更适合删 除和添加,查询、添加、删除的时间复杂度不同3. 另外ArrayList和LinkedList都实现了List接⼝,但是LinkedList还额外实现了Deque接⼝,所以 LinkedList还可以当做队
2022-04-03 19:34:28 256
原创 Redis持久化
RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。比如说, 以下设置会让 Redis 在满足“ 60 秒内有至少有 1000 个键被改动”这一条件时, 自动保存一次 数据集: # save 60 1000 //关闭RDB只需要将所有的save保存策略注释掉即可 还可以手动执行命令生成RDB快照
2022-04-01 19:43:29 1166
原创 缓存设计典型问题
缓存穿透 缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储 层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。 造成缓存穿透的基本原因有两个: 第一, 自身业务代码或者数据出现问题。 第二, 一些恶意攻击、 爬虫等造成大量空命中。 缓存穿透问题解决方案: 1、缓存空对象2、布隆过滤器 对于恶意攻击,向服务器请求大量不存在的数据造成的缓存穿透,还可以
2022-03-31 19:26:05 723
原创 Vue快速入门
1、简介1.2、MVVM编程思想1.3、渐进式框架1.4、VUE核心功能2.Vue—Hello World3.指令4.计算属性和侦听器5.组件化基础6.生命周期和钩子函数7.使用Vue脚手架进行模块化开发1、简介 Vue (读音 /vju/,类似于 view) 是中国的大神尤雨溪开发的,为数不多的国人开发的世界顶级开源软件。 是一套用于构建用户界面的渐进式框架 。Vue 被设计为可以自底向上逐层应用。 MVVM响应式编程模型,避免直接操作DOM..
2022-03-30 19:51:29 895
原创 Spring中的循环依赖
什么是循环依赖? 很简单,就是A对象依赖了B对象,B对象依赖了A对象。 ⽐如:那么循环依赖是个问题吗? 如果不考虑Spring,循环依赖并不是问题,因为对象之间相互依赖是很正常的事情。 ⽐如:这样,A,B就依赖上了。 但是,在Spring中循环依赖就是⼀个问题了,为什么? 因为,在Spring中,⼀个对象并不是简单new出来了,⽽是会经过⼀系列的Bean的⽣命周期,就是因为 Bean的⽣命周期所以才会出现循环依赖问题。当然,在Spring中,出现循环依赖的场景很多
2022-03-29 19:24:43 871
原创 多线程相关面试题
1、什么是进程?什么是线程? 进程是操作系统分配资源的最小单元 线程是操作系统调度的最小单元。 一个程序至少有一个进程,一个进程至少有一个线程。 2、JVM、JRE、JDK的关系? JVM:(Java Virtual Machine),Java 虚拟机。它能识别 .class后缀的文件,并且能够解析它的指令,最终调用操 作系统上的函数,完成我们想要的操作。 3、JVM中可以运行多种语言吗? 图灵学院JVM只识别字节码,所以JVM其实跟语言是解耦的,也就是没有直接关联。
2022-03-28 19:18:29 695
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人