Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 261|回复: 0

[默认分类] Java编程领域技术名词解释

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-4-26 10:50:58 | 显示全部楼层 |阅读模式


      1、java中间件,分布式系统、分布式缓存、消息队列
      JAVA中间件:包括服务框架中间件:解决集群间的访问通信问题。消息中间件:解决应用之间的消息传递、解耦、异步的问题。数据访问中间件:解决应用访问数据库的共性问题。
      分布式系统:一定是有多个节点组成的系统,一般一个节点就是一台服务器,节点之间是相互连通协作的,这些连通的节点上部署了我们的组件,共同服务于一个大型系统。比如淘宝网,在对浏览器发送请求的背后,是一个大型的分布式系统为我们服务,整个系统有的负责请求处理,有的负责存储,有的负责计算,最终通过相互的协作把请求的结果返回给浏览器,并呈现给我们。
      分布式缓存:就是把数据存放在不同的物理机器上,利用分布式缓存中间件进行处理数据。Redis和Memcached缓存系统都是以key-value的形式存储和访问数据,在内存中维护一张巨大的HashTable。但是redis比memcached支持的数据类型更多,有五种数据类型:String、Hash、List、Set、ZSet(有序集合)。注意:分布式缓存系统需要用到一致哈希算法,它的的好处在于节点个数发生变化(减少或增加)时无需重新计算哈希值,避免大量key的重新映射,保证数据储存或读取时可以正确、快速地找到对应的节点。
      消息队列(中间件):负责消息的收发管理,利用高效可靠的异步消息传递机制集成到分布式系统。五大优点:解耦、异步、横向扩展、安全可靠、顺序保证。常见的有ActiveMQ(支持多语言,实现jms1.1),RabbitMQ(支持更多语言,基于AMQP规范),Kafka(高吞吐量,分布式,分区,O(1)磁盘顺序提供消息持久化)
      2、常用的开源项目框架理解
      Spring
      Spring是轻量级的IoC和AOP的容器框架,是进行对象管理、对象关联、解耦的一个中间层框架。是面向Bean的编程,实现了组件的解耦。
      
       IoC(DI)依赖注入实现的技术反射机制、工厂模式。其中pring的BeanFactory主要实现步骤如下,
      
      
       解析配置文件(bean.xml)
       使用反射机制动态加载每个class节点中配置的类
       为每个class节点中配置的类实例化一个对象
       使用反射机制调用各个对象的seter方法,将配置文件中的属性值设置进对应的对象
       将这些对象放在一个存储空间(beanMap)中
       使用getBean方法从存储空间(beanMap)中取出指定的JavaBean
      
      
       AOP实现的技术: JDK动态代理技术 和 CGLIB技术(动态字节码增强技术) 。尽管实现技术不一样,但都是基于代理模式 , 都是生成一个代理对象 。
      
      
       JDK动态代理技术:主要使用到 InvocationHandler 接口和 java.lang.reflect.Proxy类的newProxyInstance() 方法。通过使用接口,使系统松耦合。
       CGLIB(动态字节码增强)技术:是继承被代理对象,然后Override需要被代理的方法。使用继承,代码写起来更简单。
      
       
      Struts2
      Struts2是基于Servlet、MVC设计模式的Web应用框架,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
      
       Struts2框架采用Filter(StrutsPrepareAndExecuteFilter)作为核心控制器实现。是类级别的拦截,每次请求对应实例一个新的Action,然后调用setter getter方法把request中的数据注入。一个Action对象对应一个request上下文。
       Struts2流程分析:
      
      ①当在浏览器中输入相应网址,会加载web.xml中的核心控制器
      ②核心控制器会拦截所有请求,加载struts.xml的配置文件,找到和请求名字相同的action
      ③创建Class属性指定类的对象
      ④执行method属性指定的方法,返回一个字符串结果
      ⑤找Name等于此字符串的result,转到相应页面或action
      ⑥在页面中执行相关代码:通过EL表达式或者OGNL表达式取当前类属性的值
       
      SpringMVC
      SpringMVC是基于Servlet 、MVC设计模式的一个松耦合的web应用框架,使用前端控制器模式来进行设计,再根据请求映射规则分发给相应的后端控制器进行处理。
      
       SpringMVC框架采用Servlet作为核心控制器实现。是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去。一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。、
       开发效率对比:
      
      由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC开发效率和性能高于Struts2
      
       SpringMVC的工作流程如下:
      
      
       用户发送请求至前端控制器(DispatcherServlet)
       DispatcherServlet收到请求调用处理器映射器(HandlerMapping)
       处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器对象一并返回给DispatcherServlet
       DispatcherServlet通过处理器适配器(HandlerAdapter)调用具体的处理器(Controller)
       处理器即后端控制器(Controller)执行具体的业务操作,完成后返回ModelAndView
       HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
       DispatcherServlet将ModelAndView传给ViewReslover视图解析器
       ViewReslover解析后返回具体View
       DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
       DispatcherServlet响应用户
      
       
      MyBatis
      MyBatis 是一个基于 Java 的 持久层 框架, MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。 把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。
      MyBatis的特点:
      基于SQL语法,SQL语句封装在配置文件中,便于统一管理与维护。
      自动化程度低、手工映射SQL,灵活程度高。
       
      Hibernate
      Hibernate是优秀的Java 持久化层解决方案、对象-关系映射(ORM)工具、简化了JDBC 繁琐的编码。
      Hibernate特点:
      Hibernate对象-关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。
      编写程序的时候,HQL语句操作,以面向对象的方式处理数据。而保存数据的时候,却以关系型数据库的方式存储。
       
      Springboot
      SpringBoot是基于Spring4.0的一套快速搭建Spring框架的整合包。方便对各种框架的整合,让他们集成在一起更加简单,简化了我们在集成过程中的模板化配置。遵循”约定大于配置”,实现零配置。
      特点:
      
        创建独立的Spring应用程序
        嵌入的Tomcat,无需部署WAR文件
        简化Maven配置
        自动配置Spring
        提供生产就绪型功能,如指标,健康检查和外部配置
      
       
      微服务
      微服务是一种可以让软件职责单一、松耦合、自包含、可以独立运行和部署的架构思想。微服务架构是让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。目的是有效的拆分应用,实现敏捷开发和部署。
      关键思想就是:拆分、单一、独立、组件化。把原本一个庞大、复杂的项目按业务边界拆分一个一个独立运行的小项目,通过接口的方式组装成一个大的项目。
       
      dubbo
      首先了解一下ESB(企业数据总线):一般采用集中式转发请求,适合大量异构系统集成,侧重任务的编排,性能问题可通过异构的方式来进行规避,无法支持特别大的并发。
      Dubbo(服务注册管理),采用的是分布式调用,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其侧重服务的治理,将各个服务颗粒化,各个子业务系统在程序逻辑上完成业务的编排。是远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
      其核心部分包含:
      1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
      2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
      3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
      服务注册中心:ZooKeeper     服务调用方式: RPC
       
      Spring Cloud
      Spring cloud是基于spring boot以及结合Netflix 相关思想和代码对微服务理念的java实现。提供了一些可以用于快速构建分布式系统通用模式的工具(例如:配置管理、服务注册与发现、断路器、智能路由、微代理、控制总线),在本质上是一种分布式的解决方案。
      五大核心组件:
      
       服务注册发现 - Netflix Eureka
       配置中心 - spring cloud config
       负载均衡-Netflix Ribbon
       断路器 - Netflix Hystrix
       路由(网关) - Netflix Zuu
      
      服务注册中心:Netflix Eureka     服务调用方式:REST API
       
      Zookeeper
      ZooKeeper是一种分布式应用程序协调服务,用于管理大型主机。它是集群的管理者,监视着集群中各个节点的状态,根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
      Zookeeper作用:
      1.命名服务   2.配置管理   3.集群管理   4.分布式锁  5.队列管理
      Zookeeper设计目的:
      1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
      2.可靠性:具有简单、健壮、良好的性能,如果消息被到一台服务器接受,那么它将被所有的服务器接受。
      3.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
      4.等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。
      5.原子性:更新只能成功或者失败,没有中间状态。
      6.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
       
      Docker
      Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
      总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
      Docker 主要用途。
      (1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
      (2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
      (3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
       
      Redis
      Redis 是一个开源的,基于高级的key-value存储在内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
      Redis优点
      (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
      (2) 支持丰富数据类型,支持string,list,set,sorted set,hash
      (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
      (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
       
      Memcached
      Memcached基于一个存储键/值对的hashmap。Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
      
       Memcached特征:
      
      
       协议简单
       基于libevent的事件处理
       内置内存存储方式
       memcached不互相通信的分布式
      
      
       Memcache与Redis的区别都有哪些?    
      
      1)、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。
      2)、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。
      3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
       
      3、远程服务调用 RPC、REST API
      RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 不同的只是传输数据的格式。
      RPC架构里包含如下4个组件:
      1、 客户端(Client):服务调用方
      2、 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方
      3、 服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务
      4、 服务端(Server):真正的服务提供者。
      RPC架构目的是把调用、编码/解码的过程封装起来,让用户像调用本地服务一样的调用远程服务。要做到对客户端(调用方)透明化服务, RPC框架需要考虑解决如下问题:
      
       服务端提供的服务如何发布,客户端如何发现服务;
       如何对请求对象和返回结果进行序列化和反序列化;
       如何更高效进行网络通信。
      
       
      REST 即表述性状态传递(Representational State Transfer,简称REST),是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
      REST通过资源的角度观察网络( 通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ),以URI对网络资源进行唯一标识,响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。
      REST使用HTTP+URI+XML 来实现其要求的架构风格:HTTP协议和URI用于统一接口和定位资源,文本、二进制流、XML、JSON等格式用来作为资源的表述。
      满足REST约束条件和原则的架构或接口,就被称为是RESTful架构或RESTful接口。就像URL都是URI(统一资源标识)的表现形式一样,RESTful是符合REST原则的表现形式。
       
       
      

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-28 18:03 , Processed in 0.403995 second(s), 54 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表