一、Zookeeper集群Zookeeper可以配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据都是相同的,每一个服务器均可以对外提供读和写的服务,这点和Redis是相同的,即对客户端来说每个服务器都是平等的。在集群中,需要一个Leader来完成处理事务,协调Zookeeper中的其他节点等工作,接下来就来介绍Zookeeper集群是如何选择出一个Leader节点
哔哩哔哩一面1.项目为什么要用消息队列?改成异步接口不行吗?2.消息可靠性,消息重复消费。如果消息丢失,你应该怎么尽量地让用户觉得此次下单的公平性?3. Redis 性能为什么高?Redis的lua脚本,为什么能保证原子性?如果lua脚本在库存扣减完以后执行出错怎么办?4.项目如果要跟小公司进行对接,你会怎么做?5. JVM 内存布局?GC算法?6.请从操作系统以及CPU指令(怎么操作内存的)
前言近几年来,互联网行业变化非常大,除了龙头企业的更替,“裁员潮”“失业潮”也不断掀起,尤其是对于年纪太大的程序员真的是不太友好。但是,根据数据统计表明,自2018来,学习IT行业的人不减反增,更有不少其他行业的人转学转行。那为什么现在越来越多的人转行了呢?从实际上来看,互联网IT门槛低、薪水多,没有太多的限制,这些因素致使现在的年轻人开始往这个行业内跳。确实,IT行业无需太多人脉、资历,是改变
一、线程池起步1. 线程池的基本介绍首先Java里的线程利用的线程模型是KLT,这带来了许多好处,比如线程的阻塞不会带来进程的阻塞,能更加高效地利用CPU的资源等。但这也意味着在Java里的线程的创建和销毁是一个相对偏且消耗资源的操作,Java线程依赖于内核线程,创建线程需要进行操作系统状态切换,为避免资源过度消耗需要设法重用线程执行多个任务。线程池就起到这么一个重用,它负责了线程缓存,也负责对
蚂蚁金服一面:1、HashMap 和ConcurrentHashMap; 2、再谈谈一致hash 算法? 3、乐观锁还有悲观锁; 4、可重入锁和Synchronize? 5、事务四大特性? 6、事务的二段提交机制? 7、聚簇索引和非聚簇索引? 8、用自己的实践经历说一下索引的使用场景(说一个就要举一个例子)? 9、当前读和快照读? 10、类加载过程? 11、双亲委派机制及使用原因? 12、说说
前言分布式,是程序员必备技能之一,在面试过程中属于必备类的,在工作中更是会经常用到。而Kafka是一个分布式的基于发布订阅的消息队列,目前它的魅力是无穷的,对于Kafka的奥秘,还需要我们细细去探寻。要谈对Kafka有多熟悉,我相信还是阿里的大佬们最有发言权,所以今天分享的内容,就是Alibaba内部供应的“限量笔记”,关于Kafka的精髓全部写在这里面了,不得不感叹:不愧是Alibaba的技术
一、静态代理&动态代理1. 静态代理我们先假设现在有怎么一个需求,要求你在不改动原有代码的情况下在所有类的方法前后打印日志。我们很容易想到静态代理,具体做法如下:为现有的所有类都编写一个对应的代理类,并且还需要让代理类与原有类实现相同的接口;在创建代理对象时,通过构造器传入一个目标对象,然后在代理对象的方法内部调用目标对象同名方法,并且在调用方法的前后打印日志。换而言之,代理对象=增强代
携程一面:携程总部大楼(上海市长宁区金钟路),汽车票船票组,面试官两位(项目经理+开发人员)1、项目了解此处手绘系统架构图,并表明自己负责的哪一块,我们项目中对ES和RocketMQ使用比较多2、线程池参数(最好是自己手写过线程池)corePoolSize 指定了线程池里的线程数量maximumPoolSize 指定了线程池里的最大线程数量RejectPolicy 拒绝策略,当任务过多时候,如何
这份手册涵盖世界知名IT公司技术面试的程序设计问题及其解题思路解析。IT顶尖企业(阿里、字节、谷歌等)的面试过程针对不同问题,提供多个具有不同复杂度的解决方法。以Java为描述语言,介绍计算机编程中使用的数据结构和算法,覆盖相应竞争性考试的主题,目的不是提供关于数据结构和算法的定理及证明,而是强调问题及其分析,讲解必备知识和解题技巧。手册目录总览:因为手册的内容实在太多,下面就以截图展示部分内容
BIO实现一个服务器为了更好的演示BIO与NIO之间的区别,我们先用一个服务器示例来了解一个BIO实现网络通行的过程。单线程下的BIO服务器服务端public class BioServer { public static void main(String[] args) throws IOException { byte[] bs = new byte[1024];
前言关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也不至于被“拍死”在沙滩上。近日,经过一朋友的透露,Alibaba也首发了一份限量的“Java成长笔记”,里面记载的知识点非常齐全,看完之后才知道,差距真的不止一点点!Java成长笔记主要是将Java程
走过路过不要错过点击蓝字关注我们1、分布式理论1.1、分布式基本定义《分布式系统原理与范型》定义:“分布式系
背景本人2本毕业,目前工作四年,一直是Java。做的都是些二线公司,没做过一线。四年跳了三家公司。在家休息了几个月,五月中旬开始面试。字节跳动由于跳槽过多而且已经是淡季的原因。内推的我的字节哥们儿,推了不知道多少个部门,从字节海外电商推到教育线简历都由于频繁跳槽都挂了。最后才被广告营销捞了起来(而且居然是个Java部门)。这里还是奉劝大家跳槽不要像我这么频繁,唉。另外大厂,建议找人内推。这是我第
还记得刚开始工作的时候使用的是Eclipse,后面是当时公司第一批尝鲜IDEA的人。刚开始用起来其实蛮麻烦的,因为最开始还是带着Eclipse的思维。比如在Eclipse中一个workspace中可以有多个project,但是在IDEA中就没有workspace的概念了,取而代之的是project,一个project中可以有多个 module。已经不止N次的被读者问到有没有IDEA的教程,其实我
1、什么是API网关API网关是所有请求的入口,承载了所有的流量,API Gateway是一个门户一样,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的Facet模式很像。API Gateway封装内部系统的架构,并且提供API给各个客户端。它还可能有其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等API Gateway负责请求转发、合成和协议转换。所有来自客户端的请
害,别误会,我这里说的stream不是流式编程,不是大数据处理框架。我这里说的是stream指的是jdk中的一个开发工具包stream. 该工具包在jdk8中出现,可以说已经是冷饭了,为何还要你说?只因各家一言,不算得自家理解,如若有空,何多听一版又何妨。本篇主要从几个方面讲讲:1. 我们常见的stream都有哪些?2. stream包有哪些好处?3. stream包的实现原理?相信这些多少会解
性能优化性能调优,是从开发岗跃迁至架构岗的拦路虎。如果你是一个小白,那么恭喜你性能优化这个东西你暂时还不需要扛着。但如果你是公司的中坚力量,想把技术水平往架构层面靠近,那么性能优化这个东西你必须要扛下来,并且解决它。性能调优任务不像普通开发任务,它需要背负业务、时间和难度等多种压力。好性能不是调优出来的,更多是设计出来的。只有经历过性能调优,才能体会这句话的真谛。性能调优,其实就是对承载业务的互
【一面】50min自我介绍关键 SQL 优化怎么优化的?为什么性能不好?主键必须有吗?数据索引密集度很差的话,你的优化意义不大吧?MySQL 有哪几种索引?聚簇索引和辅助索引的区别?索引数据结构?为什么用B+树?MVCC?版本号怎么变化的?更新的数据的时候怎么确定版本的?幻读怎么解决的?一个 SQL 怎么走的索引?MYSQL 会怎么选的?MySQL 哪些不正规的写法无法命中索引?MySQL 有哪几
我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求。而这请求,可能是该节点能处理,也可能是该节点不能处理的,也可能是需要多节点共同处理的,可以说是情况比较复杂。所以,coordinator的重要工作是,做请求分发与结果收集。那么,如何高性能和安全准确地实现这一功能则至关重要。而这,也许诸君各有思路,孰优孰劣不访一起来探讨探讨!1:请求分发的
JDK源码大家都 ,真正喜欢看源码的多半有点“变态”。这玩意催眠又晦涩难懂,看了也会忘,需要先一点点针对某个组件或者某部分去看,一口吃不成大胖子!就拿JDK源码来说,它是个类库,加入了很多辅助代码、泛型、以及一些设计模式上的考量,没有方法毫无头绪的去看没多会你就会晕头转向! 气。今天LZ就把前段时间阿里一位老哥私授我的JDK源码学习指南分享出来给大家,希望对大家有所帮助!这份JDK源码学习指南内
走过路过不要错过点击蓝字关注我们用例:有一段sql语句,我们需要从中截取出所有字段部分,以便进行后续的类型推断或者别名字段抽取定义,请给出此解析方法。想来很简单吧,因为 sql 中的字段列表,使用方式有限,比如 a as b, a, a b...1. 解题思路如果不想做复杂处理,最容易想到的,就是直接用某个特征做分割即可。比如,先截取出 字段列表部分,然后再用逗号',' 分割,就可以得到一个个的字
前言消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。虽然说,目前状况是Kafka更为火热,但更为广泛的应该还属老牌的RabbtiMQ和Alibaba自主研发的RocketMQ。关于MQ相关的内容,Alibaba肯定还是很有话语权的,尤其是关于RocketMQ的使用,所以今天我们要分享的内容,实际上
SpringBoot大家都知道SpringBoot拥有良好的基因,还能简化编码、配置、部署、监控,也是现在面试必问的一个点。Spring Boot设计目的就是用来简化新Spring应用的初始搭建以及开发过程。Spring从2002年发展至今,随着技术的发展,在SpringBoot没有推出之前用Spring开发和部署效率一直在不断降低,而SpringBoot开箱即用和约定优于配置两大特性就可以完美
1:jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?1.8 之后 hashMap 的数据结构发生了变化,从之前的单纯的数组+链表结构变成数组+链表+红黑树。也就是说在 JVM 存储 hashMap 的 K-V 时仅仅通过 key 来决定每一个 entry 的存储槽位(Node[]中的 index)。并且 Value 以链表的形式挂在到对应槽位上(1.8 以后如果 value长度大
害,又是一个炒冷饭的时间。fork/join是在jdk1.7中出现的一个并发工作包,其特点是可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。从而达到多线程分发任务,达到高效处理的目的。1. 关于fork/join的一点想法以上说法,也许大家没什么感觉。但换个说法可能会更让人体会深切。总体上,相当于一个map阶段数据拆分,一个reduce阶段数据收
移动时代、5G时代、物联网时代的大幕已经开启,新时代提升了对Java应用的高性能、高并发的要求,也抬升了Java工程师的技术台阶和面试门槛。很多公司的面试题从某个侧面反映了生产场景的技术要求。之前只有BAT等大公司才有高并发技术相关的面试题,现在与Java项目相关的整个行业基本都涉及此类面试题。Java NIO、Reactor模式、高性能通信框架Netty、分布式锁、分布式ID、分布式缓存、高并
Redis大家都知道Redis的业务范围是非常广的,但是对于刚入行的小伙伴来说可能也就知道个缓存跟分布式锁。 得等到并发量到了一定的程度,系统扛不住了,才会用到Redis那些高级的功能。下面LZ就带大家来看看,Redis到底能干些啥:以上图为例,上面的例举的就是Redis的最常用的核心知识点,掌握了上面这些,面试跟日常开发肯定是够用了,不过你要是想真正的精通Redis这个技术栈,只会上面这些肯定
前段时间有一位粉丝问了我这么一个问题,我没有高 项目经验,但是面试的时候经常被问到高并发、性能调优方面的问题,有什么办法可以解决吗?这题我必须回答一下!之前小编看了两份《高并发系统设计》和《Java性能调优》的资料,当时面试BAT,都被面试官说答得很好,思路非常正确。这两份的作者特别用心,不仅仅是整理好了问题,就连问题的答案也是很清楚地给到了大家。 第一份 高并发系统设计内容基础篇数据库篇缓存
前言如何提升系统性能,设计出一个靠谱的系统是每一个架构师或者正在往架构师方向进阶的同僚们都需要考虑的问题。公司所处的行业,业务场景决定了你设计的系统演进过程,不过万变不离其宗,系统设计和优化的思想都是相通的(当然如果你刚入行没多久,目前肯定还不需要苦恼这种问题,但是 如何设计一个高并发系统?这个问题想必有些出去面试的好兄弟肯定被问到过,现在公司招聘的需求也大都是:有高并发系统经验者优先。如果你没
Spring5.0源码学习系列之事务管理概述(十一),在学习事务管理的源码之前,需要对事务的基本理论比较熟悉,所以本章节会对事务管理的基本理论进行描述1、什么是事务?事务就是一组原子性的SQL操作,或者说一个独立的工作单元。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)注意:Spring的事务支持是基于数据库事务的,在MySQL数据库中目前只有InnoDB或者ND
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号