精华内容
下载资源
问答
  • hashCode() 和 equals() 之间的关系?”的面试题,本篇来解析一下这道基础面试题。 先祭一张图,可以思考一下为什么? 介绍 equals()的作用是用来判断两个对象是否相等。 hashCode()的作用是获取哈希码,...

    hashCode() 和 equals() 之间的关系?的面试题,本篇来解析一下这道基础面试题。

    先祭一张图,可以思考一下为什么?

    图片

    介绍

    equals() 的作用是用来判断两个对象是否相等。

    hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

    如果两个对象是相等的,它们的 equals() 方法应该要返回 true,它们的 hashCode() 需要返回相同的结果

    因为HashSet、HashMap底层在添加元素时,会先判断对象的hashCode是否相等,如果hashCode相等才会用equals()方法比较是否相等。换句话说,HashSet和HashMap在判断两个元素是否相等时,会先判断hashCode,如果两个对象的hashCode不同则必定不相等

    展开全文
  • 比如是市场行情不好,产品受欢迎 ……然后进行一一验证 从假设→ 问题:是为了确定真正的问题是什么 这一点,主要是对于复杂系统而言的,比如去一个医院,你只告诉医生说你舒服,那么医生其实根本无法给你解决...

    假设:任何一种科学理论在未得到实验确证之前表现为假设学说或假说

    举例:

    假设1:学习工具A、工具B、工具C → 我就能找到一个好的数据分析工作

    假设2:学习工具A、工具B、工具C、分析思维、准备面试作品 → 我就能找到一个好的数据分析工作

    假设3:学习工具A、工具B、工具C、分析思维、准备面试作品、职场服务 → 我就能找到一个好的数据分析工作


    从问题 → 假设:也可以基于问题,提出进一步假设,定位深层次的原因;
    举个例子,近一个月销售额持续下降【问题客观存在啦】,如何去分析;你会针对问题提出诸多的假设;比如是市场行情不好,产品不受欢迎 ……然后进行一一验证

    从假设→ 问题:是为了确定真正的问题是什么
    这一点,主要是对于复杂系统而言的,比如去一个医院,你只告诉医生说你不舒服,那么医生其实根本无法给你解决方案的;这个时候,医生就需要进一步询问你或者猜测,你是牙疼、胃疼、还是心情不好……,医生的询问或者猜测,然后知道你原来是不开心,这个实际上就是一个从假设到问题,不断定位真正问题的过程;商业系统可能更复杂

    然后医生需要提出解决方案,让这个病人开心起来,医生可能尝试讲段子、陪她聊天或者一起吃顿好的,这里又可以看做是一个问题 → 假设方案的过程啦

    总而言之。假设,可能是Ture,也可能是false,需要依赖实践进行验证的;

    展开全文
  • 11)消息分流:在电商领域,一个店铺通常会有多个客服,此时决定用户的咨询由哪个客服来处理就是消息分流(通常消息分流会根据一系列规则来确定消息会分流给哪个客服,例如客服是否在线(客服在线的话需要重新...

    大家工作生活中可能经常使用微信、钉钉这样的即时通讯工具,作为技术开发的你有没有想过它们后端的技术架构是如何做的

    一般来说,钉钉和微信后端主要就是一个IM的即时通讯软件,再加上很多周边功能,我们先来看下IM这块的核心功能包含哪些模块:

    0)用户:系统的使用者。

    1)消息:是指用户之间的沟通内容(通常在IM系统中,消息会有以下几类:文本消息、表情消息、图片消息、视频消息、文件消息等等)。

    2)会话:通常指两个用户之间因聊天而建立起的关联。

    3)群:通常指多个用户之间因聊天而建立起的关联。

    4)终端:指用户使用IM系统的机器(通常有Android端、iOS端、Web端等等)。

    5)未读数:指用户还没读的消息数量。

    6)用户状态:指用户当前是在线、离线还是挂起等状态。

    7)关系链:是指用户与用户之间的关系,通常有单向的好友关系、双向的好友关系、关注关系等等(这里需要注意与会话的区别:用户只有在发起聊天时才产生会话,但关系并不需要聊天才能建立。对于关系链的存储,可以使用图数据库(Neo4j等等),可以很自然地表达现实世界中的关系,易于建模)。

    8)单聊:一对一聊天。

    9)群聊:多人聊天。

    10)客服:在电商领域,通常需要对用户提供售前咨询、售后咨询等服务(这时,就需要引入客服来处理用户的咨询)。

    11)消息分流:在电商领域,一个店铺通常会有多个客服,此时决定用户的咨询由哪个客服来处理就是消息分流(通常消息分流会根据一系列规则来确定消息会分流给哪个客服,例如客服是否在线(客服不在线的话需要重新分流给另一个客服)、该消息是售前咨询还是售后咨询、当前客服的繁忙程度等等)。

    12)信箱:本文的信箱我们指一个Timeline、一个收发消息的队列。

    涉及到功能的具体实现还有很多概念需要先了解下

    读扩散 vs 写扩散

    IM系统里经常会涉及到读扩散和写扩散这两个技术概念,我们来看看。

    读扩散

    图片

    如上图所示:A与每个聊天的人跟群都有一个信箱(有些地方会叫Timeline),A在查看聊天信息的时候需要读取所有有新消息的信箱。

    需要注意与Feeds系统的区别:在Feeds系统中,每个人都有一个写信箱,写只需要往自己的写信箱里写一次就好了,读需要从所有关注的人的写信箱里读。但IM系统里的读扩散通常是每两个相关联的人就有一个信箱,或者每个群一个信箱。

    读扩散的优点:

    • 1)写操作(发消息)很轻量,不管是单聊还是群聊,只需要往相应的信箱写一次就好了;

    • 2)每一个信箱天然就是两个人的聊天记录,可以方便查看聊天记录跟进行聊天记录的搜索。

    读扩散的缺点:读操作(读消息)很重,在复杂业务下,一条读扩散消息源需要复杂的逻辑才能扩散成目标消息。

    写扩散

    接下来看看写扩散。

    图片

    如上图所示:在写扩散中,每个人都只从自己的信箱里读取消息。

    但写(发消息)的时候,对于单聊跟群聊处理如下:

    • 1)单聊:往自己的信箱跟对方的信箱都写一份消息,同时,如果需要查看两个人的聊天历史记录的话还需要再写一份(当然,如果从个人信箱也能回溯出两个人的所有聊天记录,但这样效率会很低);

    • 2)群聊:需要往所有的群成员的信箱都写一份消息,同时,如果需要查看群的聊天历史记录的话还需要再写一份。可以看出,写扩散对于群聊来说大大地放大了写操作。

    PS:实际上群聊中消息扩散是IM开发中的技术痛点,有兴趣建议详细阅读:《有关IM群聊技术实现的文章汇总》。

    写扩散优点:

    • 1)读操作很轻量;

    • 2)可以很方便地做消息的多终端同步。

    写扩散缺点:写操作很重,尤其是对于群聊来说(因为如果群成员很多的话,1条消息源要扩散写成“成员数-1”条目标消息,这是很恐怖的)。

    由于概念比较多,一篇文章是不可能全部描述清楚的,还有像钉钉,微信这种亿级海量用户的系统架构实现难度是非常大的,随便给你说几个架构难点,看下你自己是否知道!

    架构难点

    1、亿级用户同时在线聊天如何保证高并发聊天消息正常推送

    2、公众号千万级粉丝大V发文章如何让粉丝高效收取

    3、高并发聊天系统如何保证发送的消息不乱序

    4、微信钉钉后端海量离线消息如何高效存储与获取

    5、高并发聊天系统如何保证发送的消息不丢失

    6、单聊与群聊数据收发机制用读扩散还是写扩散

    7、微信后端PB级海量历史聊天消息数据如何存储

    8、应该如何架构微信春晚抢红包高并发系统

    9、微信钉钉后端如何保证消息收发核心链路高可用

    10、微信钉钉的群聊为什么要设置人数上限

    11、如何架构微信后端百万在线直播互动系统

    12、如何设计微信钉钉后端系统的缓存架构抗高并发

    13、微信朋友圈日均千亿访问量背后会有哪些技术挑战

    看完懵了么?再继续看下图,给大家写了一套亿级钉钉微信后端IM架构核心(1.0)的图,感觉怎么样?👇

    图片

    是不是觉得以上架构难点都不一定遇得上?下面这十几道关于Netty以及微信钉钉架构的题,都是2021年大厂的热门题,来看看你会几道?

    一线大厂面试题

    1、BIO、NIO和AIO模型的区别

    2、同步与异步、阻塞与非阻塞的区别

    3、select、poll、epoll的机制及其区别

    4、Netty底层操作与Java NIO操作对应关系如何

    5、Netty的线程模型是怎样的,与Redis线程模型有区别吗

    6、说说Reactor响应式编程是怎么回事

    7、Netty的粘包/拆包是怎么处理的,有哪些实现

    8、Netty的protobuf编解码机制是怎样的

    9、Netty如何实现断线自动重连

    10、Netty如何支持单机百万连接

    11、说下Netty零拷贝的原理

    12、说下Netty如何实现长连接心跳保活机制

    13、Netty的内存池是怎么实现的

    14、Netty是如何解决NIO底层epoll空轮询导致CPU 100%的Bug

    15、Netty高并发高性能体现在哪些方面

    16、基于Netty如何设计微信钉钉后端高并发IM架构

    17、大规模Netty服务集群应该如何架构

    18、基于Netty推送消息如何保证不丢消息

    19、为什么微信钉钉的群人数要设上限

    20、微信钉钉后端PB级海量消息如何存储

    据我所知,如果能回答出其中的一半,就算是勉强及格了。

    如果这些你都能全部回答出来,那你应该是妥妥的技术大牛了!可以放心去投大厂简历了!

    展开全文
  • 问题:说说反射的用途及实现?1、什么是Java类中的反射?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为 Java 并是动态语言,但是它却又一个非常突出的动态相关的机制,俗称:反射。...

    问题:说说反射的用途及实现?

    1、什么是Java类中的反射?

    当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为 Java 并不是动态语言,但是它却又一个非常突出的动态相关的机制,俗称:反射。

    Reflection 是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类和对象的内部属性。

    Oracle 官方对反射解释:

    d6035d5d4d12

    image.png

    通过反射,我们可以在运行时获得程序或程序集中每一个类型成员和成员变量的信息。

    程序中一般的对象类型都是在编译期就确定下来的,而Java 反射机制可以动态的创建对象并调用其属性,这样对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象即使这个对象在编译期是未知的,

    反射的核心:是 JVM 在运行时 才动态加载的类或调用方法或属性,他不需要事先(写代码的时候或编译期)知道运行对象是谁。

    2、Java反射框架提供以下功能:

    ①、在运行时判断任意一个对象所属的类

    ②、在运行时构造任意一个类的对象

    ③、在运行时判断任意一个类所具有的成员变量和方法(通过反射设置可以调用 private)

    ④、在运行时调用人一个对象的方法

    3、反射的主要用途

    很多人都认为反射在实际Java中开发应用中并不广泛,其实不然。

    当我们在使用 IDE(如 Eclipse\IDEA)时,当我们输入一个队长或者类并向调用它的属性和方法时,一按 (“.”)点号,编译器就会自动列出她的属性或方法,这里就会用到反射。

    反射最重要的用途就是开发各种通用框架。

    很多框架(比如 Spring)都是配置化的(比如通过 XML文件配置 JavaBean,Action之类的),为了保证框架的通用性,他们可能根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。

    举一个例子,在运用Struts 2框架的开发中我们一般会在struts.xml里去配置Action,比如:

    class="org.ScZyhSoft.test.action.SimpleLoginAction"

    method="execute">

    /shop/shop-index.jsp

    login.jsp

    配置文件与Action建立了一种映射关系,当View层发出请求时,请求会被StrutsPrepareAndExecuteFilter拦截,然后StrutsPrepareAndExecuteFilter会去动态地创建Action实例。

    ——比如我们请求login.action,那么StrutsPrepareAndExecuteFilter就会去解析struts.xml文件,检索action中name为login的Action,并根据class属性创建SimpleLoginAction实例,并用invoke方法来调用execute方法,这个过程离不开反射。

    对与框架开发人员来说,反射虽小但作用非常大,它是各种容器实现的核心。而对于一般的开发者来说,不深入框架开发则用反射用的就会少一点,不过了解一下框架的底层机制有助于丰富自己的编程思想,也是很有益的。

    4、反射的基本运用

    以上我们提到了反射可以拟用于判断任意对象所属的类,获得 Class对象,构造人一个对象以及调用一个对象。这里我们介绍一下基本反射功能的事先(反射相关类一般都在 java.lang.relfect包里)。

    ①、获得 Class 对象

    (1)、使用 Class类的 forName() 静态方法:

    public static Class> forName(String className)

    ……

    在JDBC开发中常用此方法加载数据库驱动:

    ……java

    Class.forName(driver)

    (2)、直接获取某一个对象的 class,比如:

    Class> klass = int.class;

    Class> classInt = Integer.TYPE;

    (3)、调用某个对象的getClass() 方法,比如:

    StringBuilder str = new StringBuilder("123");

    Class> klass = str.getClass();

    ②、判断是否为某个类的实例

    一般地,我们用 instanceof关键字来判断是否为某个类的实例。同时我们也可以借助反射中Class对象的 isInstance()方法来判断是否为某个类的实例,它是一个 Native 方法:

    public native boolean isInstance(Object obj);

    ③、创建实例

    通过反射来生成对象主要有两种方式。

    (1)使用 Class 对象的 newInstance() 方法来创建对象对应类的实例。

    Class> c = String.calss;

    Object str = c.getInstance();

    (2)、先通过 Class 对象获取制定的 Constructor 对象,在调用 Constructor 对象的 newInstance() 方法来创建实例。这种方法可以用指定的构造器构造类的实例。

    //获取String所对应的Class对象

    Class> c = String.class;

    //获取String类带一个String参数的构造器

    Constructor constructor = c.getConstructor(String.class);

    //根据构造器创建实例

    Object obj = constructor.newInstance("23333");

    System.out.println(obj);

    展开全文
  • 说说this

    2021-03-18 08:46:59
    这里我参考了《你知道的javascript》 及 MDN上的解释,得出的结果: 在当前执行上下文(global、function 或 eval),包含函数在哪里调用(调用栈),函数的调用方式,以及传入的参数,当然还包括我们这里说的这...
  • 这个哈希码的作用是确定该对象在哈希表中的索引位置。 关系 我们以“类的用途”来将“hashCode() 和 equals()的关系”分2种情况来说明。 1、不会创建“类对应的散列表” 这里所说的“不会创建类对应的散列表”是说:...
  • 的HTML结构怎么理解关于html结构的面试题,的html占据了很大一部分...是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以首先我们要知道html和页面的表现是没有关系的,这些是css的事情。H...
  • 同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是兼容的; 泛型的类型参数可以有多个; 泛型的参数类型可以使用extends、super语句,习惯上称为“有界类型“; 泛型的参数类型还可以...
  • 说说类的生命周期

    2021-07-25 16:57:10
    其中加载、验证、准备、初始化和卸载这五个阶段发生的顺序是确定的,但是对于解析阶段来说则一定,因为它可以发生在初始化阶段之后,这样做是为了支持 Java 语言的运行时绑定特征(也称为动态绑定,大白话就是程序...
  • 原标题:说说从UI交互设计角度web和app的差异从UI交互设计角度,聊聊WEB网站和移动APP的六大差异今天就从交互设计的角度,聊一聊Web网站和移动App有哪些不同之处、以及需要考虑的设计要点。如今UI设计专业的应用范围...
  • 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年...除了耐心,测试人员能放过每一个可能的错误。 3
  • 因此,有 a+(n+1)b+nc=2(a+b)⟹a=c+(n−1)(b+c),有了 a=c+(n−1)(b+c) 的等量关系,会发现:从相遇点到入环点的距离加上 n−1 圈的环长,恰好等于从链表头部到入环点的距离。 因此,当发现 slow 与 fast 相遇时,再...
  • 先来说说数据类型和抽象数据类型,先看下面3个例子。例1,如果我给你一个整数你会获得哪些信息?主要可以得到如下信息:该整数应该是$-\infty, \ldots, -1, -2, 0, 1, 2, \ldots +\infty$中的一个可对该整数进行加、...
  • 说说Mysql的架构体系

    2021-03-29 08:34:54
    说说Mysql的架构体系
  • 总数据分表数目一旦确定后,后期调整数量就非常方便(那意味着全量数据重分布)。这个就是选择这个分表数的第一个考虑点。 分表是存在于分库中,分库在分实例里,多个实例组成了全部的业务数据。关于分表数这里...
  • 我们也说说Android.mk(4) - 依赖:目标编程的模式另一种范式我一直觉得,Makefile确实是C/C++程序员的良配,因为Makefile所使用的两种范式都是C/C++程序员熟悉的,一种是函数式的思想,一种是依赖构成的目标链的...
  • 即使是大公司的跑龙套的,知道系统上下的整体架构,也说过去。可能一些专业的测试,包括机器的压测,全链路的问题演练,即使没做过,最后的测试报告多少还是要知道的。 如果是小公司的负责架构的,这些问题肯定...
  • 1小时学会打代码制作一个网页精美简历(1)

    万次阅读 多人点赞 2021-05-13 22:39:48
    1_bit:其实你这个时候应该可以看到,下图黄色框选位置的值,例如横轴为 x,x轴将会有坐标数值,竖轴为 y,y轴也是有刻度数值,此时就可以确定这个坐标系的 x 和 y 轴了。 小媛:明白了。我设置了这个文本框的 x 和...
  • 风机性能参数之间的关系(上)

    千次阅读 2020-12-21 00:22:10
    常见的风机主要是透平式:离心风机、轴流风机、混流风机、横流风机……风机主要性能参数有:风量、风压、轴功率、转速……双城风机就说说性能参数之间的一些关系:1、进口标准状态:进口压力:1个标准大气压,即...
  • 本文将讲解学术上不同的确定性事务和特点,并综合说说他们的优点和面临的问题。 本文将按照提出的顺序进行讲解: 确定性数据库的定义; 可扩展的确定性数据库 Calvin; 基于依赖分析的确定性数据库 BOHM &...
  • 最近群里一位兄弟在面试中被问到:「MySQL...但这位面试官按套路出牌,这位兄弟当场就是脸红耳赤的,心想nnd居然会这么问。其实面试中面试官的问题有千千万,有的问题确实背背面试题就能应对,但不是所有的面试题...
  • kafka如何确定分区数

    2021-11-17 12:55:14
    怎么确定分区数? “我应该选择几个分区?”——如果你在Kafka中国社区的群里,这样的问题你会经常碰到的。不过有些遗憾的是,我们似乎并没有很权威的答案能够解答这样的问题。其实这也奇怪,毕竟这样的问题通常...
  • 刚开始学Java 一般太会关注到反射,但是如果看很多框架的源码,发现反射无处不在。最近一个业务需求中用了反射,感觉非常丝滑。 前言 鲁班: 什么是反射? 安琪拉: 反射是Java 中提供的运行期获取对象信息的能力。...
  • 推荐使用中文版、国产化的MBSE建模软件“智睿思维基于模型的系统工程软件”(MBSES),限功能和模型数量,容易上手。 MBSE建模技术中最重要的方法就是面向对象(Object Oriented, OO)的方法。几种不同技术方法中...
  • 特性: 函数内部传入指定的值,就会返回确定唯一的值 不会造成超出作用域的变化,例如修改全局变量或引用传递的参数 优势: 使用纯函数,我们可以产生可测试的代码 test('double(2) 等于 4', () => { expect...
  • 把你的前端拿捏得死死的,每天学习得爽爽的,关注这个一样的程序员,如果你所学的东西 处于喜欢 才会有强大的动力支撑。 感谢负每一份热爱前端的程序员,不论前端技能有多奇葩,欢迎关注加我入群vx:xiaoda0423 ...
  • 今天贤集网小编就来针对“电脑打开”这一问题来说说我的电脑打开怎么办?电脑网页打开但是有网怎么解决?下面一起来听听看吧!我的电脑打开怎么办?这个问题相当模煳,因为“我的电脑打开”有多重意思,...
  • 你简历写精通吗,你说怎么把Bean塞到Spring容器?

    千次阅读 多人点赞 2021-03-31 08:27:20
    感觉目前的公司没有核心业务学到东西呀! 其实我可能和很大一部分的粉丝读者都有类似的经历,在传统类似外包的行业待过、从C#语言两年开发再面Java岗、新到互联网职场感觉太多不会的技术栈等等。 但可能最让我在...
  • 浏览器解析 URL,确定服务器域名和资源,生成 HTTP 请求信息。 ...如果本地找到,则向上访问根域名服务器,再向下依次访问顶级域名服务器、权威域名服务器,从而找到目标 IP,返回给客户端。 ..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,851
精华内容 20,340
关键字:

关系不确定的说说