JDK8新特性-方法引用
概述
方法引用是特定Lamda表达式的一种简写,其思路就是能替换Lamda表达式就直接调用函数使用方法名。
其语法格式:类名 :: 方法名。
什么是方法引用 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。
当Lambda表达式中只是执行一个方法调用时,不用Lambda表达式,直接通过方法引用的形式可读性更高一些。方法引用是一种更简洁易懂的Lambda表达式。
注意方法引用是一个Lambda表达式,其中方法引用的操作符是双冒号”::”。
简单地说,就是一个Lambda表达式。在Java 8中,我们会使用Lambda表达式创建匿名方法,但是有时候,我们的Lambda表达式可能仅仅调用一个已存在的方法,而不做任何其它事,对于这种情况,通过一个方法名字来引用这个已存在的方法会更加清晰,Java 8的方法引用允许我们这样做。方法引用是一个更加紧凑,易读的Lambda表达式,注意方法引用是一个Lambda表达式,其中方法引用的操作符是双冒号”: ...
Maven
Maven基础学习目标目标1:能够说出maven的作用,POM的概念
目标2:完成maven的下载,安装和环境配置
目标3:能够说出仓库,坐标的概念,完成仓库的配置
目标4:完成手动搭建maven项目的案例
目标5:完成IDEA工具搭建maven项目的案例
目标6:能够说出依赖的传递方式和如何解决依赖传递冲突
目标7:能够说出maven的生命周期
1.Maven简介1.1 Maven是什么在学习Maven之前,我们先来看一下我们现在做的项目都有哪些问题。假设你现在做了一个crm的系统,项目中肯定要用到一些jar包,比如说mybatis,log4j,JUnit等,除了这些之外,你有可能用到你的同事开发的其他的东西,比如说别人做了一个财务模块或做了一个结算的模块,你在这里边有可能要用到这些东西。
假如有一天你们的项目中mybatis进行了一个升级,但是它内部使用的JUnit没有升级,你升级以后的mybatis假如要用5.0的JUnit,而你项目中目前用的是4.0的,会不会冲突?必然会出问题!这个时候管理起来会比较麻烦,你需要各种调整。更有甚者,假如同事做的这些东西升级了但又没有通知你,这 ...
Mybatis
一.Mybatis快速入门1.1 框架介绍
框架是一款半成品软件,我们可以基于这个半成品软件继续开发,来完成我们个性化的需求!
如图:
1.2 ORM介绍
ORM(Object Relational Mapping): 对象关系映射
指的是持久化数据和实体对象的映射模式,为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。
如图:
具体映射关系如下图:
1.3 原始jdbc操作(查询数据)
1.4原始jdbc操作(插入数据)
1.5 原始jdbc操作的分析
原始 JDBC 的操作问题分析
1.频繁创建和销毁数据库的连接会造成系统资源浪费从而影响系统性能。
sql 语句在代码中硬编码,如果要修改 sql 语句,就需要修改 java 代码,造成代码不易维护。
查询操作时,需要手动将结果集中的数据封装到实体对象中。
增删改查操作需要参数时,需要手动将实体对象的数据设置到 sql 语句的占位符。
原始 JDBC 的操作问题解决方案
1.使用数据库连接池初始化连接资源。
将 sql 语句抽取到配置文件中。
使用反射、内省等底层技 ...
MySQL
第一章 数据库概述1.1 数据库概述DBMS:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。
DB:数据库(Database)
SQL:结构化查询语言,(Structure Query Language),专门用来操作/访问数据库的通用语言。
如果把数据库比作盘子,那数据就是盘子里的菜,SQL则是你的筷子。
数据库类型:数据库经过几十年的发展,出现了多种类型。目前最常见的数据库模型主要是:关系型数据库和(noSQL)非关系型数据库。
MySQL:其中的一款关系型数据库管理系统
以下是2020年DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:(查看数据库最新排名:https://db-engines.com/en/ranking)
关系型数据库模型是将复杂的数据结构用较为简单的二元关系(二维表)来表示,如图所示。在该类型数据库中,对数据的操作基本上都建立在一个或多个表格上,我们可以采用结构化查询语言(SQL)对数据库进行操作。关系型数据库是目前主流的数据库技术,其中 ...
RabbitMQ-day02
Rabbitmq高级特性学习目标
掌握常见的高级特性
高级特性生产者可靠性消息投递
高级特性消费者ACK确认机制
理解相关应用性的解决方案
了解相关集群的搭建
1 RabbitMq高级特性在消息的使用过程当中存在一些问题。比如发送消息我们如何确保消息的投递的可靠性呢?如何保证消费消息可靠性呢?如果不能保证在某些情况下可能会出现损失。比如当我们发送消息的时候和接收消息的时候能否根据消息的特性来实现某一些业务场景的模拟呢?订单30分钟过期等等,系统通信的确认等等。
1.1 生产者可靠性消息投递可靠性消息
在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式,mq提供了如下两种模式:
+ confirm模式
生产者发送消息到交换机的时机
+ return模式
交换机转发消息给queue的时机
MQ投递消息的流程如下:
1.生产者发送消息到交换机
2.交换机根据routingkey 转发消息给队列
3.消费者监控队列,获取队列中信息
4.消费成功删除队列中的消息
消息从 pro ...
RabbitMQ-day01
RabbitMQ入门进阶学习学习目标
消息队列介绍
安装RabbitMQ
RabbitMQ的使用操作
编写RabbitMQ的入门程序[简单模式
消息模式6种
RabbitMQ的5种模式讲解
应用场景
实现方式
SpringBoot整合RabbitMQ
1. 消息队列概述1.1. 消息队列MQMQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。
为什么使用MQ
在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
开发中消息队列通常有如下应用场景:
1、任务异步处理
将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。
2、应用程序解耦合
MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。
1.2. AMQP 和 JMSMQ是消息通信的模型;实现MQ的大致有两种主流方式:AMQP、JMS。
1.2.1. AMQPAMQP高级消息队列协议,是一个进程间传递异步消息的网络协议,更准确 ...
Redis
Redis基础1. Redis 简介在这个部分,我们将学习以下3个部分的内容,分别是:
◆ Redis 简介(NoSQL概念、Redis概念)
◆ Redis 的下载与安装
◆ Redis 的基本操作
1.1 NoSQL概念1.1.1 问题现象在讲解NoSQL的概念之前呢,我们先来看一个现象:
(1)问题现象
每年到了过年期间,大家都会自觉自发的组织一场活动,叫做春运!以前我们买票都是到火车站排队,后来呢有了12306,有了他以后就更方便了,我们可以在网上买票,但是带来的问题,大家也很清楚,春节期间买票进不去,进去了刷不着票。什么原因呢,人太多了!
除了这种做铁路的,它系统做的不专业以外,还有马爸爸做的淘宝,它面临一样的问题。淘宝也崩,也是用户量太大!作为我们整个电商界的东哥来说,他第一次做图书促销的时候,也遇到了服务器崩掉的这样一个现象,原因同样是因为用户量太大!
(2)现象特征
再来看这几个现象,有两个非常相似的特征:
第一,用户比较多,海量用户
第二,高并发
这两个现象出现以后,对应的就会造成我们的服务器瘫痪。核心本质是什么呢?其实并不是我们的应用服务器,而是我们的关系型数据库 ...
Spring
Spring IoC1)Spring简介1.1)什么是框架
源自于建筑学,隶属土木工程,后发展到软件工程领域
软件工程框架:经过验证的,具有一定功能的,半成品软件
经过验证
具有一定功能
半成品
1.2)框架的作用
1.3)Spring是什么Spring是分层的JavaSE/EE应用full-stack轻量级开源框架
1.4)Spring的体系结构
1.5)Spring的发展历史
1.6)Spring优势
Spring的优势
方便解耦,简化开发
第一天
方便集成各种优秀框架
第一天
方便程序的测试
第二天
AOP编程的支持
第三天
声明式事务的支持
第四天
降低JavaEE API的使用难度
第四天
Java源码是经典学习范例
长期学习
2)IoC简介2.1)优质程序代码的制作原则
2.2)耦合与内聚
耦合(Coupling):代码书写过程中所使用技术的结合紧密度,用于衡量软件中各个模块之间的互联程度
内聚(Cohesion):代码书写过程中单个模块内部各组成部分间的联系,用于衡量软件中各个功能模块内部的功能联系
...
Springboot-day02
Springboot第二天学习目标
理解springboot自动配置原理
理解自动配置注解的原理解析
掌握自定义springboot的starter
了解springboot监听机制
了解springboot的启动流程
了解springboot监控
掌握springboot的部署
1 springboot的自动配置原理在我们使用springboot的时候,能带来的方便性和便利性,不需要配置便可以实现相关的使用,开发效率极大的提升,那么实际上,springboot本身的基础依赖中封装了许许多多的配置帮我们自动完成了配置了。那么它是如何实现的呢?
1.1 Condition接口及相关注解 讲Springboot自动配置,逃不开ConditionalOnxxx等等注解,也逃不开condition接口所定义的功能。
1.1.1 condition接口 condition接口是spring4之后提供给了的接口,增加条件判断功能,用于选择性的创建Bean对象到spring容器中。
思考一个问题 ?
我们之前用过springboot整合redis 实现的步骤:就是添加re ...
SpringCloud-day02
第2天 SpringCloud学习目标
==能够使用Feign进行远程调用==
1.feign的使用->解决远程请求中硬编码问题
2.负载均衡配置
3.支持熔断配置
4.请求压缩
5.日志配置
能够搭建==Spring Cloud Gateway==
1.微服务网关
2.路由
3.过滤配置
能够配置Spring Cloud Gateway过滤器
能够使用Spring Cloud Gateway默认过滤器:全局过滤、局部过滤
能够搭建Spring Cloud Config配置中心服务
1.集中管理配置文件
能够使用Spring Cloud Bus 消息总线实时更新配置文件
1.每个微服务的通知消息管理服务
1 Spring Cloud Feign1.1 目标
了解Feign的作用
掌握Feign的使用过程
掌握Feign的负载均衡配置
掌握Feign的熔断配置
掌握Feign的压缩配置
掌握Feign的日志配置
1.2 讲解1.2.1 Feign简介Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebS ...
SpringCloud-day01
第1天 SpringCloud学习目标
能够理解SpringCloud作用
用来做微服务架构的技术解决方案
SpringCloud基于SpringBoot开发的,SpringCloud整合了很多优秀的第三方微服务开源框架
能够使用RestTemplate发送请求
封装了基于Rest的Http请求
可以实现Java对象序列化与反序列化
能够搭建Eureka注册中心
用于管理服务、监控服务、服务路由
能够使用Ribbon负载均衡
用来实现负载均衡(实现消费方负载均衡)
能够使用Hystrix熔断器
做服务降级,防止程序发生雪崩
1 初识Spring Cloud大家谈起的微服务,大多来讲说的只不过是种架构方式。其实现方式很多种:Spring Cloud,Dubbo,华为的Service Combo,Istio 。
那么这么多的微服务架构产品中,我们为什么要用Spring Cloud?因为它后台硬、技术强、群众基础好,使用方便;
1.1 目标
了解微服务架构
了解SpringCloud技术
1.2 讲解1.2.1 技术架构演变(1)单一应用架构
当网站流量很小 ...
Tomcat&Http协议
Tomcat&Http协议1 企业开发简介1.1 JavaEE规范JavaEE规范是J2EE规范的新名称,早期被称为J2EE规范,其全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP组织成员)。之所以改名为JavaEE,目的还是让大家清楚J2EE只是Java企业应用。在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件,以延续它的生命力,而不是依赖J2SE/J2EE版本.此次J2EE改名为Java EE,实际也反映出业界这种共同心声。
JavaEE规范是很多Java开发技术的总称。这些技术规范都是沿用自J2EE的。一共包括了13个技术规范。例如:jsp/servlet,jndi,jaxp,jdbc,jni,jaxb,jmf,jta,jpa,EJB等。
其中,JCP组织的全称是Java Community Process。它是一个开放的国际组织,主要由Java开发者以及被授权者组成,职 ...