深入理解并发和并行
并发是逻辑上的同时发生,而并行是物理上的同时发生。并发可以跑在一个处理器上通过时间片进行切换,而并行需要两个或两个以上的线程跑在不同的处理器上。如果同一个任务的多个线程始终运行在不变的CPU核心上,那就不是并行。
并发是逻辑上的同时发生,而并行是物理上的同时发生。并发可以跑在一个处理器上通过时间片进行切换,而并行需要两个或两个以上的线程跑在不同的处理器上。如果同一个任务的多个线程始终运行在不变的CPU核心上,那就不是并行。
有一天我看到某博客采用VuePress,简洁美观、功能强大。VuePress的帮助文档非常详实,是Vue团队的诚意之作。正好我有一些Vue开发的功底,犹如出狱的色狼碰上了洗澡的刘亦菲。如果时间可以倒流,我绝对不会用WordPress来构建我的博客。WordPress固然成熟,设计的太“重”了。
Java已经诞生20多年了,依然是企业级开发中使用最广泛的语言,也是挨骂最多的语言。Java广受批评的四个缺点是:性能差、内存消耗大、GUI弱、代码啰嗦,我们应该如何看待这几个问题呢?在微服务的背景下,提倡围绕业务能力而非技术来构建应用,允许由不同的语言构建应用程序。一个超大的集群,往往有上万个微服务的容器在运行。为了更有效率的管理容器,必须对微服务提几点要求:镜像体积小、内存消耗小、启动速度快,这些却都是Java的弱项。
许多业务场景中都会到线程池,比如微服务接收外部调用、异步发送邮件、离线统计报表等等。线程池有三个优点:降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗;提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行;提高线程的可管理性,对线程进行统一的分配,调优和监控。老话说,请神容易送神难,使用了线程池就要承受它带来的问题。线程池的运行机制比较复杂,使用线程池的参数并不好配置。线程池执行的情况与任务类型相关,IO密集型和CPU密集型的任务运行起来的情况差异很大,配置合理依赖开发人员的经验和知识。如果配置不当,反而降低系统效率。另外,还一个问题,如何优雅关闭线程池,避免任务或者数据丢失呢?
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:Spring Cloud Alibaba主要包含哪些组件;Nacos的核心功能有哪些;说说Nacos的工作流程;说说Sentinel的使用场景;说说限流算法有哪几种;Sentinel如何限制资源的调用;为什么会产生分布式事务;Seata如何避免并发场景的脏读与脏写;Seata主推的事务模式是什么,有什么优势。
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:你怎么描述Spring Cloud 框架;说说微服务架构的优缺点;Spring Cloud有哪些重要组件;Eureka的作用是什么;什么是Eureka的自我保护模式;你还了解其他网关吗,有什么区别;服务雪崩的原因有哪些。
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:Spring Boot有哪些优点;Spring Boot的核心配置文件有哪些,区别是什么呢;Spring Boot的配置文件有哪几种格式,有什么区别;SpringBoot的核心注解是哪个;Spring Boot 3.0 的新特性了解吗;SpringBoot打成的jar和普通jar有什么区别;SpringBoot中如何实现定时任务;什么是Spring Boot Starter。
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:Mybatis的适用场景是什么;MyBatis与Hibernate有哪些不同;Mybatis如何实现批量提交;Mybatis有缓存吗;#{}和${}的区别是什么;Mybatis如何解决SQL注入。
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有:谈谈Spring Bean的作用域和生命周期; 说说SpringMVC处理请求的流程;如何用Spring实现一个切面;Spring AOP的原理是什么;Spring事务的传播属性是什么;Spring中BeanFactory和FactoryBean有什么区别;Spring的依赖注入有哪几种方式; Spring如何实现数据库事务。
整理一些Java基础面试题,内容涵盖语言基础、并发、JVM、IO模型、中间件、开发框架等等。本章节的面试题有: 说说什么是IO流;Java中有几种类型的流;说说Java中常用的IO流实现类;什么是Java序列化,如何实现Java序列化;PrintStream、BufferedWriter、PrintWriter的区别是什么;字符流和字节流有什么区别;如何实现对象克隆;什么是缓冲区,有什么作用; 什么是阻塞IO,什么是非阻塞IO。