摘要:
一、Docker简介 Docker是一个开源的应用容器引擎。基于go语言。 二、Docker核心概念 1.Docker主机和Docker客户端 2.Docker仓库、镜像、容器。 3.Docker容器的四种状态: 运行 已暂停 重新启动 已退出 4.Docker使用流程 1)创建Dockerfile 阅读全文
摘要:
一、分布式技术概念 1.负载均衡: Nginx:高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层LVS: Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层 2.webserver: J 阅读全文
摘要:
一、消息队列 1.如何保证消息队列的高可用? 1.1 kafka的高可用性 HA机制,就是Replication副本机制。只能读写leader。 多副本 -> leader & follower -> broker挂了重新选举leader即可对外服务。 2.如何保证消息不被重复消费(幂等性)? 幂等 阅读全文
摘要:
一、SpringBoot入门和微服务简介 1.SpringBoot入门 springboot:J2EE一站式解决方案 springcloud:分布式整体解决方案 SpringBoot:对Spring框架的进一步升级,能够快速创建Spring项目并独立运行,内嵌Tomcat、jetty服务器,不用打W 阅读全文
摘要:
一、Kafka介绍 1.kafka简介 1.1 kafka是一个分布式消息队列。 1.2 kafka集群和consumer都依赖zookeeper保存meta信息。 1.3 kafka通信协议基于TCP协议 二、kafka工作流程分析 1.工作流程总体分析 producer:生产者 consumer 阅读全文
摘要:
1.流 流是一组有序的数据序列,I/O流提供了一条通道程序,我们使用这个通道可以把源中的字节输送到目的地。 我们经常使用I/O流与磁盘的文件打交道,但是程序的源和目的地可以使内存,键盘,鼠标等等。 输入 输出 硬盘:File 网络:Socket 2.位、字节、字符的区别 位(bit):是计算机内部数 阅读全文
摘要:
面试题 1.为什么使用消息队列? 2.消息队列有什么优点和缺点? 3.Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Re 阅读全文
摘要:
Java并发的两个关键问题:线程之间的通信和同步。 一、Java线程通信(JMM) 1.两种线程之间的通信机制 1)共享内存:线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。例:Java的并发。 2)消息传递:线程之间没有公共状态,线程之间通过发送消息来显式进行通信。例 阅读全文
摘要:
一、创建线程的方式 1.继承Thread类,重写该类的run()方法。类 2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target来创建Thread对象,该Thread对象才是真正的线程 阅读全文
摘要:
一、synchronized关键字:锁对象或类对象。加锁方法具备原子性。 1.synchronized方法和synchronized(this){}块:都是锁当前对象。 2.static synchronized:锁的是当前类的class对象。 3.加锁的目的:保证操作的原子性。 4.同步和非同步方 阅读全文