目录

一、JDK8常用的新特性

二、Spring的IOC

三、Spring的AOP

四、MVC

五、SpringBoot和SpringCloud的关系理解


一、JDK8常用的新特性

(1)Date/Time API :java8为date和time引入了新的API,解决了java.util.Date和java.util.Calendar的缺点

现有方法的缺陷:

  1. 现有的Date和Calendar不是线程安全的;
  2. 现有的API设计不是很合适,没有足够的方法来执行日常的操作;
  3. 现有的方法需要额外的编码来处理时区。

具体的内容:

  • 使用LocalDateLocalTime 和 LocalDateTime进行日期和时间的处理,操作更加简单,并且是线程安全的;
  1. LocalDate:只包含日期,比如:2016-10-20
  2. LocalTime:只包含时间,比如:23:12:10
  3. LocalDateTime:包含日期和时间,比如:2016-10-20 23:14:21
  • 使用ZonedDateTime处理带有时区的时间类型;
  • 使用PeriodDuration对给定日期进行计算或计算两个给定日期的差异

(2)Optional API:提供一个类型级的解决方案,用于表示可选值而不是空引用。常用:Optional.ofNullable(null).orElseGet(() -> "john");

(3)Stream API:对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。

具有如下优点:

  • Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性
  • 同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程

二、Spring的IOC

控制反转,避免手动创建过程,只需要提供类的实现,然后将使用的过程交给第三方,也就是IOC容器。

优点:

  • 把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合
  • 方便测试,利于功能复用
  • 使得程序的整个体系结构变得非常灵活

三、Spring的AOP

面向切面编程基于动态代理,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy(该类即为动态代理类),去创建代理对象,而对于没有实现接口的对象,就无法使用JDK Proxy去进行代理了,这时候Spring AOP会使用Cglib,生成一个被代理对象的子类,来作为代理。

四、MVC

即Model、View、Controller即模型、视图、控制器。

在使用MVC的时候不能将其当成一种三层架构来对待,比如View层是界面,Controller层是业务逻辑,Model层是数据库访问,正确的看法应该是View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。

所以Controller中的内容能少则少,这样才能提供最大的灵活性。如果要将业务代码写入Controller中,会带来问题,比如业务的重用,例如,ControllerA用到了某个业务,B也用到了,从增加重用率的角度,我们需要实现一个父类来使不同的Contolller能够复用该业务,这违背了接口隔离原则,假如C用到了B的某个业务逻辑,而A没有用到,父类也要添加新的方法,A用不上该方法也会继承,长此以往,随着业务的增加,我们的Controller会继承一堆没有用到的方法,影响理解

五、SpringBoot和SpringCloud的关系理解

  • SpringBoot是 Spring 的一套快速配置脚手架,可以基于springboot 快速开发单个服务。
  • SpringCloud是一个基于SpringBoot实现的云应用开发工具;Springboot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架;springboot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,SpringCloud很大的一部分是基于Springboot来实现。

SpringCloud的架构

  • API Gateway:一个API网关的基本功能包含了统一接入、协议适配、流量管理与容错、以及安全防护,这四大基本功能构成了网关的核心功能。
  • 服务发现:在云部署应用时,应用程序并不总是知道其他服务的确切位置,因为服务实例具有动态分配的网络位置,此外,由于自动缩放、故障和升级,服务实例集会动态变化。 服务注册(service registry)中心(例如 Netflix Eureka、Zookeeper)或 Sidecar 解决方案(例如 HashiCorp Consul)可以提供解决办法。 Spring Cloud 为 Eureka、Consul、Zookeeper 甚至 Kubernetes 的内置系统等流行的注册中心提供了发现服务的实现,还可以使用 Spring Cloud Load Balancer 调整不同服务的负载。
  • config serverSpring Cloud配置中心,就是将每个服务的配置都集合在一个地方。这个地方要么是github,要么是国内gitee码云,途虎用的是gitlab。通过config-server,可以在一个地方集中对所有环境(服务)进行外部化配置管理。config-server是用来实现配置统一管理和不同环境间配置的切换。
  • microservice微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响
  • distributed trace:分布式追踪可以通过对微服务调用链的跟踪,构建一个从服务请求开始到各个微服务交互的全部调用过程的视图。用户可以从中了解到诸如应用调用的时延,网络调用(HTTP,RPC)的生命周期,系统的性能瓶颈等等信息。

Java学习日报—2021/11/18相关推荐

  1. 实战:怎样把间隔的几个commit整理成1个?-2021.11.18

    实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文章目录 实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文档来源 实验环境 实验软件(无) 1 ...

  2. java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...

    (源码在上传的压缩包"[java学习记录]11.多线程实现阶乘计算(Thread类和Runnable接口)"中可看到,该压缩包可下载)java * 采用Thread类的子类实现线程 ...

  3. ElasticSearch搜索引擎-2_学习笔记2021.4.18)

    ElasticSearch搜索引擎-2_学习笔记(2021.4.18) 前言: RESTful 介绍 , 我们通过RESTful来操作ElasticSearch (所有请求都是通过Postman ) ...

  4. 2021.11.18周四 java学习日志

    今天算是结束了redis的入门学习,下面是学习redis做的笔记,记录一下. 一.Redis的开启语法 1.redis服务运行正常 127.0.0.1:6379[1]> ping redis默认 ...

  5. Java学习日报—JVM垃圾回收全解—2021/11/26

    目录 1.1 确定垃圾对象 1.1.1 引用计数法 1.1.2 可达性分析法 1.2 引用 1.2.1 宣告对象死亡 1.3 方法区回收 1.3.1 回收废弃常量 1.3.2 回收无用的类 1.4 常 ...

  6. Java学习日报—Java并发—2021/11/22

    目录 1. Spring.Spring Boot.Spring Cloud区别 2. Java并发之容器 2.1 CopyOnWriteArrayList和CopyOnWriteArraySet 2. ...

  7. Java学习日报—泳道与Feign—2021/11/30

    目录 1 泳道的概念和特性 1.1 背景 1.2 什么是泳道 1.3 泳道的特性 1.4 泳道的价值 2 feign的概念和简单使用 2.1 feign背景 2.2 feign使用说明 2.3 fei ...

  8. Java学习日报—SQL基础—2021/11/29

    今天效率很低,就看了以下内容... 目录 1.1关键词DISTINCT 1.2 连表查询 1.2.1 内连接 1.2.2 外连接 1.3 查询执行顺序 1.1关键词DISTINCT DISTINCT  ...

  9. Java学习日报—消息队列—2021/11/23

    1. 消息队列 1.1 基本概念 消息队列的本质就是发送 -存储 - 消费: 生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已. 这是传统的队列模型 ...

最新文章

  1. Java在Quant应用_java – 如何绘制quantil band(在R中)
  2. 菲波那切数列php实现,php实现菲波那切数列和杨辉三角
  3. Excel列数和列字母的转换(column number 和 column letters 互转)
  4. VMware vSphere学习笔记二
  5. 给WIN7安装盘添加双PE3.0
  6. 【渝粤教育】国家开放大学2018年秋季 0695-21T (1)农业企业经营管理 参考试题
  7. 581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
  8. 嵌入式linux写文件内存增加,嵌入式Linux对内存的直接读写
  9. python if else语句判断输入的数字_Python if else条件控制
  10. php图片生成缩略图_php实现根据url自动生成缩略图的方法
  11. Django 1.10中文文档-聚合
  12. 【转载】VGA视频信号详解
  13. 分数阶微分_分数微分特征
  14. ITA和意大利荣耀与共,助力蓝衣军团欧洲杯决赛战胜英格兰!
  15. 筛法打印质数表【附:100000以内质数表】
  16. linux下载blast软件
  17. 投影机基本故障及解决方法
  18. 博客园样式(仿简书)
  19. 树莓派3b+安装ubuntu 16.04+ROS kinetic过程详解及踩坑总结
  20. 在JSRUN写一段王者荣耀段位代码

热门文章

  1. Hbase导入、导出数据到本地文件
  2. simpy练习案例(二):不直接控制流程,而是使用事件隐形控制流程 env.event()
  3. pandas 使用把dataframe变为series
  4. javeWeb springMvc获取到的参数附带特殊符号,接收后被转义
  5. 苹果机的时间格式转换为时间搓
  6. Visual Studio 安装OpenCV及问题总结
  7. 元素与集合的问题思考
  8. quartz集群报错but has failed to stop it. This is very likely to create a memory leak.
  9. Ionic JPush极光推送 插件实例
  10. scala入门-07特质类(trait)的使用