六星社区java话题相关问答、教程、技术知识分享集合。...[ 百科 ]
(面试没有录音,仅凭回忆记录,可能不全,仅供参考) 一面: 问项目30分钟。操作系统:1、操作系统都有哪些内容啊?(答:进程管理、内存管理、文件管理)2、进程通信的方式?每种方式的应...
领域驱动设计(DDD)在互联网兴起之前很流行,但是互联网的兴起一段时间不再强调领域驱动设计。在互联网处理,业务比较单薄,基本上都是CRUD就能搞定,同时,互联网业务要求快速上线,尽快抢占市场。
服务在拆分成微服务之后,最显著的特征就是服务的数量增多了。由此导致原本只需要调用一个接口就能完成的任务现在需要调用多个接口了。拿电商的商品详情界面为例。在商品详情界面一般会显示:商品详情、购买数量、剩余数量、评价和相关推荐等。
SOA在早些年被提出来,是一种面向服务的架构。由于其比较厚重,一般只在大公司有一些落地。在这几年微服务的概念又被提了出来,而且非常火热。SOA与微服务都提到了服务,那么二者有什么区别呢?
当业务发展到一定阶段,数量上去之后,数据库可能会成为性能的瓶颈。此时就需要一些架构调整去优化数据库的访问,而数据库的读写分离就是其中的一种手段。不过要注意的是读写分离会增加系统的复杂性。在使用读写分离之前,先进行单机优化,比如sql语句的优化,表设计的优化或者增加缓存等。在充分利用单机性能之后,再考虑读写分离。另外,读写分离也是有适用场景的。
加权轮询算法是负载均衡算法中的一种。在负载均衡的场景下,后端服务器会根据其资源,如内存、cpu等,分配不同的权值。负载均衡器会根据权值分发请求。假设后端有3台服务器,其加权分别为A(5),B(3),C(2)。有10次请求到来时,可能的调度结果是AABACABCAB。
spark是一种快速、通用、可扩展的大数据分析引擎。spark除了提供核心的api外,为了更方便使用,针对更具体的场景提供了解决方案。spark提供了用于交互查询的spark SQL、流处理spark Streaming、机器学习spark MLlib和图计算spark GraphX。
分治算法的基本步骤
在大量并发访问的场景里,系统很容易由于过多的请求而崩溃。在系统被拆分成多个微服务之后,每个微服务具有独立性,有责任保护好自己。为了避免因为负载过高导致服务崩溃,可以使用限流。
有向图检测是否存在换是比较常见的场景。在一些调度引擎中,调度的任务往往存在依赖,而检测是否存在循环依赖,即有向图中是否存在环是调度引擎的职责。当然,也是面试中常遇到的算法。今天为大家介绍用拓扑排序方法检测有向图中是否有环。
现在程序运行环境都是多核cpu的环境,为了充分的压榨cpu,多线程的编程模式是避免不了的。线程是有生命周期的,如果每个任务都创建一个线程,在任务结束后线程的生命周期就终止,那么势必会导致线程频繁的创建和销毁,会带来性能的损失。另外,随意的创建线程会导致线程不可能,比如线程过多导致资源耗尽等。因此有了线程池,而JAVA为了减少开发者的负担,在JDK中提供了线程池的实现。
Join操作是一种常见的数据库操作,通过Join可以将多个表关联起来,根据用户的条件共同提供数据。一般情况,在数据库中都会内置多种Join算法,优化器在优化的时候会根据SQL语句和表的统计信息选择合适的算法。
在做架构设计的时候,一般会采用一些架构模式,便于设计和以后需求变更时修改代码。如果设计模式选择得不正确那么很容易造成架构的混乱,代码也会变成怪物。
j2se6函数说明
在使用了 Java 15 年后,我写了第一行 Kotlin 代码,到现在已经差不多 5 年了。我们的团队用 Utterlyidle 替代 Spring,用 Totallylazy 进行函数式编程。我们是 IntelliJ 的忠实粉丝,并试着充分利用它提供的 Java 工具。