作者|蔡柱梁审校|重楼目录前言可靠性分析副本设计leader选举机制日志同步机制1前言本文里面涉及到较多基础概念,如果忘记了,那么可以去看下《一文带你快速入门kafka》。对于一个消息中间件而言,可靠性是是至关重要的要素之一。不管是面试或者实际工作中,我们都不得不面对几个问题:是几个九?消息会不会丢失?如何保证幂等?如何顺序消费?在这篇文章中,笔者会和大家一起去看Kafka是如何设计的。2可靠性分析针对上面的几个问题,Kafka需要考虑包括并不限于以下问题:可用性– Kafka支持分布式架构,实现了故障转移,避免单点问题如何避免脑裂问题(这个要了解Kafka的leader选举机制)– 多副本机
目录事务的四大特性?数据库的三大范式事务隔离级别有哪些?生产环境数据库一般用的什么隔离级别呢?编码和字符集的关系utf8和utf8mb4的区别什么是索引?索引的优缺点?索引的作用?什么情况下需要建索引?什么情况下不建索引?索引的数据结构Hash索引和B+树索引的区别?为什么B+树比B树更适合实现数据库索引?索引有什么分类?什么是最左匹配原则?什么是聚集索引?什么是覆盖索引?索引的设计原则?索引什么时候会失效?什么是前缀索引?索引下推常见的存储引擎有哪些?MyISAM和InnoDB的区别?MySQL有哪些锁?MVCC实现原理?快照读和当前读共享锁和排他锁binlog/redolog/undolo
模式串匹配——KMP算法KMP算法一直是一个比较难以理解的算法,本篇文章主要根据《大话数据结构》中关于KMP算法的讲解,结合自己的思考,对于KMP算法进行一个比较详细的解释。由于博主本人水平有限,难免会出现一些错误。如果发现文章中存在错误敬请批评指正,感谢您的阅读。字符串模式匹配介绍相信学习过数据结构与算法的同学一定不会对字符串感到陌生,字符串的逻辑结构与线性表很类似,不同之处是字符串中的元素都是字符。对于字符串这一数据结构,寻找字符串中子串的位置是最重要的操作之一,查找字串位置的操作通常称为串的模式匹配。而KMP算法就是一种字符串模式匹配算法,在介绍KMP算法之前,我们首先了解以下朴素的模式
1.简介本来打算再写一篇这个系列的文章也要和小伙伴或者童鞋们说再见了,可是有人留言问WebSocket包和小程序的包不会抓,那就关于这两个知识点宏哥就再水两篇文章。2.什么是Socket?在计算机通信领域,socket被翻译为“套接字”(套接字=主机+端口号),它是计算机之间进行通信的一种约定或一种方式。通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open–>读写write/read关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,
内容摘自我的学习网站:topjavaer.cn什么是JVM?JVM,全称JavaVirtualMachine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可在多种平台上不加修改的运行,这也是Java能够“一次编译,到处运行的”原因。讲一下JVM内存结构?JVM内存结构分为5大区域,程序计数器、虚拟机栈、本地方法栈、堆、方法区。程序计数器线程私有的,作为当前线程的行号指示器,用于记录
目录一、简介二、feign和OpenFeign的区别三、SpringCloud集成OpenFeign1、引入starter2、在启动类或者配置类上加@EnableFeignClients注解3、声明Feign接口4、@FeignClient属性介绍5、@EnableFeignClients属性介绍四、默认配置1、替换默认配置前置说明(这里以Feign请求日志为例)2、使用配置文件替换默认配置(推荐使用优先级最高)2.1、全局请求日志配置2.2、独立请求日志配置(独立配置优先)2.3、源码分析为什么使用配置文件配置优先级最高3、在@EnableFeignClients中使用缺省(默认)配置类替换
内容摘自我的学习网站:topjavaer.cn分享50道Java并发高频面试题。线程池线程池:一个管理线程的池子。为什么平时都是使用线程池创建线程,直接new一个线程不好吗?嗯,手动创建线程有两个缺点不受控风险频繁创建开销大为什么不受控?系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建线程没有统一标准,比如创建的线程有没有名字等。当系统运行起来,所有线程都在抢占资源,毫无规则,混乱场面可想而知,不好管控。最全面的Java面试网站频繁手动创建线程为什么开销会大?跟newObject()有什么差别?虽然Java中万物皆对象,但是newThread()创建一个线程和newObject()
说说你对SpringMVC的理解SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。什么是MVC模式?MVC的全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。🍎个人主页:乐趣国学的博客🍊个人信条:不迁怒,不贰过。小知识,大智慧。💞当前专栏:JAVA开发者成长之路✨特色专栏:国学周更-心性养成之路🥭本文内容:【JAVA高级】——吃透JDBC中的事务及事务的封装更多内容点击👇【JAVA高级】——初识JDBC中DAO数据访问对象文章目录💖事务✨service层控制事务✨service层控制事务失败的原因✨解决方案一:传递Connection💫AccountDaoImpl类代码💫AccountServiceImpl类代码💫测试💫解决方案的弊端✨解决方案二:ThreadLocal💫ThreadLo
🎬江城开朗的豌豆:个人主页 🔥 个人专栏 :《VUE》 《javaScript》⛺️ 生活的理想,就是为了理想的生活 !目录函数声明函数表达式可选参数和默认参数剩余参数(RestParameters)this和箭头函数重载TypeScript提供了丰富的函数类型定义方式,可以对函数参数、返回值进行类型注解,从而提供了更为强大的类型检查。函数声明在TypeScript中,你可以在函数声明中对函数的参数和返回值进行类型注解。functionadd(x:number,y:number):number{returnx+y;}在这个例子中,我们定义了一个add函数,它接受两个参数x和y,这两个参数都是