考察点:Java架构
- 分层:分层是处理任何复杂系统最常见的手段之一,将系统横向切分成若干个层面,每个层面只承担单一的职责,然后通过下层为上层提供的基础设施和服务以及上层对下层的调用来形成一个完整的复杂的系统。计算机网络的开放系统互联参考模型(OSI/RM)和Internet的TCP/IP模型都是分层结构,大型网站的软件系统也可以使用分层的理念将其分为持久层(提供数据存储和访问服务)、业务层(处理业务逻辑,系统中最核心的部分)和表示层(系统交互、视图展示)。需要指出的是:(1)分层是逻辑上的划分,在物理上可以位于同一设备上也可以在不同的设备上部署不同的功能模块,这样可以使用更多的计算资源来应对用户的并发访问;(2)层与层之间应当有清晰的边界,这样分层才有意义,才更利于软件的开发和维护。 - 分割:分割是对软件的纵向切分。我们可以将大型网站的不同功能和服务分割开,形成高内聚低耦合的功能模块(单元)。在设计初期可以做一个粗粒度的分割,将网站分割为若干个功能模块,后期还可以进一步对每个模块进行细粒度的分割,这样一方面有助于软件的开发和维护,另一方面有助于分布式的部署,提供网站的并发处理能力和功能的扩展。 - 分布式:除了上面提到的内容,网站的静态资源(JavaScript、CSS、图片等)也可以采用独立分布式部署并采用独立的域名,这样可以减轻应用服务器的负载压力,也使得浏览器对资源的加载更快。数据的存取也应该是分布式的,传统的商业级关系型数据库产品基本上都支持分布式部署,而新生的NoSQL产品几乎都是分布式的。当然,网站后台的业务处理也要使用分布式技术,例如查询索引的构建、数据分析等,这些业务计算规模庞大,可以使用Hadoop以及MapReduce分布式计算框架来处理。 - 集群:集群使得有更多的服务器提供相同的服务,可以更好的提供对并发的支持。 - 缓存:所谓缓存就是用空间换取时间的技术,将数据尽可能放在距离计算最近的位置。使用缓存是网站优化的第一定律。我们通常说的CDN、反向代理、热点数据都是对缓存技术的使用。 - 异步:异步是实现软件实体之间解耦合的又一重要手段。异步架构是典型的生产者消费者模式,二者之间没有直接的调用关系,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响,这对网站的扩展非常有利。使用异步处理还可以提高系统可用性,加快网站的响应速度(用Ajax加载数据就是一种异步技术),同时还可以起到削峰作用(应对瞬时高并发)。";能推迟处理的都要推迟处理"是网站优化的第二定律,而异步是践行网站优化第二定律的重要手段。 - 冗余:各种服务器都要提供相应的冗余服务器以便在某台或某些服务器宕机时还能保证网站可以正常工作,同时也提供了灾难恢复的可能性。冗余是网站高可用性的重要保证。
本文向大家介绍请问持久层设计要考虑的问题有哪些?请谈一下你用过的持久层框架都有哪些?相关面试题,主要包含被问及请问持久层设计要考虑的问题有哪些?请谈一下你用过的持久层框架都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 考察点:框架 参考回答: 所谓"持久"就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中
Python 语言简洁,开发者可以专注于逻辑的编写,因此重新造一遍轮子的代价非常之低, 这恐怕是 Python 社区之所以会出现如此众多 web 框架的主要原因 。 不过硬要评比最流行的 web 框架,当然还是要数 Django、Flask 和 Tornado, 三者在 GitHub 上的 star 数要远远超过其它竞争对手。 而且三者都特点鲜明,深受不同风格的开发者拥趸:Django 大而全,适
本文向大家介绍请谈一谈Spring中自动装配的方式有哪些?相关面试题,主要包含被问及请谈一谈Spring中自动装配的方式有哪些?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring框架 参考回答: - no:不进行自动装配,手动设置Bean的依赖关系。 - byName:根据Bean的名字进行自动装配。 - byType:根据Bean的类型进行自动装配。 - constructor:类
本文向大家介绍谈一谈,java中有哪些代理模式?相关面试题,主要包含被问及谈一谈,java中有哪些代理模式?时的应答技巧和注意事项,需要的朋友参考一下 考察点:代理模式 静态代理,动态代理,Cglib代理。
本文向大家介绍请简单谈一下spring框架的优点都有哪些?相关面试题,主要包含被问及请简单谈一下spring框架的优点都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring 参考回答: Spring是一个轻量级的DI和AOP容器框架,在项目的中的使用越来越广泛,它的优点主要有以下几点: Spring是一个非侵入式框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有
问题内容: 什么问题/陷阱,必须重写时,必须考虑和? 问题答案: 理论(针对语言律师和数学倾向者): 必须定义一个等价关系(它必须是自反的,对称的和可传递的)。另外,它必须是一致的(如果未修改对象,则它必须保持返回相同的值)。此外,必须始终返回。 也必须是一致的(如果未根据修改对象equals(),则它必须保持返回相同的值)。 该关系的两种方法之间是: 每当a.equals(b),则a.hashC