,当vm对象创建完成就可以通过vm对象访问到劫持的数据,比如data中的数据,methods中的方法等。...真实页面上的DOM的引用, //等等属性 }, { tag:"", id:, name:"Box3",$el:真实页面上的DOM的引用,//等等属性 }] }图片更多面试题解答参见 前端vue面试题详细解答什么是...进行判断,相同则调用patchVnode方法patchVnode做了以下操作:找到对应的真实dom,称为el如果都有都有文本节点且不相等,将el文本节点设置为Vnode的文本节点如果oldVnode有子节点而...主要做了以下操作:设置新旧VNode的头尾指针新旧头尾指针进行比较,循环向中间靠拢,根据情况调用patchVnode进行patch重复流程、调用createElem创建一个新节点,从哈希表寻找 key一致的...无template时拿el根节点的outerHTML去解析成render函数的所需的格式,并使用调用render函数渲染渲染的方式:无论什么情况,最后都统一是要使用render函数渲染
编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后生产相应的汇编代码文件,这个过程往往是我们所说的整个程序构建的核心部分。那么,这个核心部分究竟做了什么呢。...编译器做了什么? 从最直观的角度来说,编译器就是将高级语言翻译成机器语言的一个工具。 以 C语言为例,解释一下 ***.c -> ***.o 的过程。...假设test.c有下面一段代码 array[index] = (index + 4) * (2 + 6); 下面就来谈谈这个表达式是如何翻译成机器语言的过程。 ...需要注意的是:C语言的宏替换和文件包含等工作一般不是编译器做的,而是交给一个独立的预处理器。 有一个叫做lex的程序可以实现词法扫描。...简单的说,语法分析器生成的语法树就是以表达式(Expression)为节点的树。 如图 ?
1 Kafka的zk有什么作用?...,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTg5NTEw,size_16,color_FFFFFF,t_70#pic_center] 该方法创建的并不是一个真正的更新元数据的...)方法把这个MetadataRequest构建出来然后发送出去。...调用sendInternalMetadataRequest()方法时,这个请求也并没有被真正发出去,依然是保存在待发送的队列中,然后择机来异步批量发送。...Broker处理所有RPC请求的入口方法 KafkaApis#handleTopicMetadataRequest 处理更新元数据的方法 [watermark,type_ZmFuZ3poZW5naGVpdGk
Kafka使用zk实现和RocketMQ的NameServer相似的功能。 1 Kafka的zk有什么作用?...该方法里面,Kafka构造了一个更新元数据请求: ?...该方法创建的并不是一个真正的更新元数据的MetadataRequest,而是一个用于构造MetadataRequest的构造器MetadataRequest.Builder,等到真正要发送请求之前,Kafka...调用sendInternalMetadataRequest()方法时,这个请求也并没有被真正发出去,依然是保存在待发送的队列中,然后择机来异步批量发送。...Broker处理所有RPC请求的入口方法 KafkaApis#handleTopicMetadataRequest 处理更新元数据的方法 ?
刘志航 1、HashMap初始化参数都是什么?默认是多少? 2、为什么建议初始化设置容量? 3、tableSizeFor方法是做什么的? 4、如何获取到一个key的hash值?及计算下标?...负载因子(loadFactor):是指哈希表的负载因子,当哈希表的长度大于capacity * loadFactor时会进行扩容,默认 0.75f。 2 为什么建议初始化设置容量? ?...这块涉及到HashMap的扩容,在《阿里巴巴Java开发手册》中已经说明了原因。主要是为了减少频繁的扩容造成的资源损耗。 3 tableSizeFor方法是做什么的?...初始化HashMap时,如果传入初始容量,在初始化时会调用 tableSizeFor(initialCapacity) 方法寻找大于等于当前值的下一个2的幂值。...一定程度上避免hash碰撞.在源码注释中已经说明,是肯定会有碰撞,但是这是权衡之后的结果。 - -
在使用 JUnit4 进行单元测试时,我们常常需要为待测方法编写对应的测试方法,并使用 @Test 注解进行标注。...Method givenSampleText_whenTokenize_thenExpectedTokensReturned() should be public 那么,为什么 JUnit4 要求 @Test...2.1 测试框架设计 JUnit 是一个自动化测试框架,其目的是让我们能够方便地测试我们的代码。为了实现这个目标,JUnit 需要能够找到并执行我们标记为 @Test 的方法。...更新访问修饰符后,重新运行测试,错误应该会消失。 3.2 框架层可能的解决方案:使用反射调用非公有的 @Test 方法 在设计测试框架时,我们可以考虑通过反射机制来调用非公有的 @Test 方法。...强制执行公共访问级别有助于确保测试方法遵循良好的设计原则。 结论 总之,JUnit4 要求 @Test 注解方法必须为 public 的原因与测试框架的设计和 Java 语言的访问控制机制有关。
对象的过程,当vm对象创建完成就可以通过vm对象访问到劫持的数据,比如data中的数据,methods中的方法等。...什么是DIFF diff算法是一种对比算法。...进行判断,相同则调用patchVnode方法 patchVnode做了以下操作: 找到对应的真实dom,称为el 如果都有都有文本节点且不相等,将el文本节点设置为Vnode的文本节点 如果oldVnode...updateChildren主要做了以下操作: 设置新旧VNode的头尾指针 新旧头尾指针进行比较,循环向中间靠拢,根据情况调用patchVnode进行patch重复流程、调用createElem创建一个新节点...无template时拿el根节点的outerHTML去解析成render函数的所需的格式,并使用调用render函数渲染 渲染的方式:无论什么情况,最后都统一是要使用render函数渲染
看完这个问题,说实话我也是有点懵的,我只是知道 "what a nice day"不会在常量池,但是不知道具体的原因,后来群里的同学说 + 号是调用了 StringBuffer 的append 方法。...(最后经过证实,是StringBuilder的append 方法,不是StringBuffer)。...str1 是存放在常量池的 "what a nice day" (非str2)也是存放在常量池的 下面我们看一下 + 操作做了什么事情,可以在Code中看到,该操作调用了 StringBuilder.append...还有,遇到一个问题,不能死记答案,有些人告诉你,+ 操作就是 new 对象,但是具体到底是不是或者为什么是有没有思考过呢?上文中如有错误,欢迎指出。...试一试 /** * 以下程序输出的结果是什么?
前言:想必大家对于[xxx alloc] init]非常熟悉了,都知道是创建一个xxx的对象,但是OC底层到底做了什么?...->callAlloc->alloc,为什么会进入_objc_alloc而不是调用的alloc这就要涉及到llvm中的知识,后续有机会再来解释,可以简单理解为llvm做了一次类似于hook的操作,将alloc...init做了什么 - (id)init { return _objc_rootInit(self); } id _objc_rootInit(id obj) { return obj;...} 事实上init方法并没有做任何事情,也应证之前的猜想: 内存空间是由alloc负责申请,从这个角度看init并没处理任何动作 apple苹果这样设计的目的:类似工厂方法,为后续自定义做一些处理提供一个入口...new做了什么 一般在开发中,初始化除了init,还会使用new,通过源码来看两者本质上并没有什么区别 + (id)new { retur [callAlloc(self, false/*checkNil
前言 在之前的面试经历中,对于String的考察还是挺频繁的,大致考察以下几个知识点: String 常量池 new String() == 和 equals 的区别 native 方法 String.intern...看完这个问题,说实话我也是有点懵的,我只是知道 "what a nice day"不会在常量池,但是不知道具体的原因,后来群里的同学说 + 号是调用了 StringBuffer 的append 方法。...下面我们看一下 + 操作做了什么事情,可以在Code中看到,该操作调用了 StringBuilder.append 方法 : invokevirtual #5 // Method...还有,遇到一个问题,不能死记答案,有些人告诉你,+ 操作就是 new 对象,但是具体到底是不是或者为什么是有没有思考过呢?上文中如有错误,欢迎指出。...试一试 /** * 以下程序输出的结果是什么?
由于 Spock 测试框架不支持 Kotlin,因此我们决定坚持使用 Groovy 来测试。...在 Kotlin 中, 方法的参数无法修改,因此在本例中你不能改变 num。这个设计很好,因为你不应该改变方法的输入参数。但是你可以用相同的名称定义另一个变量并对其进行初始化。...首先,你需要在名称和类型之间加入这个多余的冒号。这个额外角色的目的是什么?为什么名称与其类型要分离?我不知道。可悲的是,这让你在 Kotlin 的工作变得更加困难。...如果 Java 库关心 Null 安全性,则它们会有许多支持注释可供添加。 也许可以添加一个编译器标志,使每种 Java 类型都可以为空,但这对 Kotlin 团队来说不得不花费大量额外资源。...这就是为什么 Kotlin 不允许数据类继承的原因。 我不知道你为什么提出这个问题。如果你需要更复杂的类,你仍然可以创建它们并手动维护它们的 equals、hashCode 等方法。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。 三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。...但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手。...乙心想:这什么人啊,得,我也回家吧,沟通失败。说明甲无法做出应答的情况下沟通失败。 如果甲也做出了正确的应答:我也吃了。那么第三次对话成功,两人已经建立起了顺畅的沟通渠道,接下来开始持续的聊天。...通过第二次和第三次的对话证明了甲能够听懂乙说的话,并且能做出正确的应答。 可见,两个人进行有效的语言沟通,这三次对话的过程是必须的。...同理对于TCP为什么需要进行三次握手我们可以一样的理解: 为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次
本文将为你介绍什么是Python注释,以及Python注释的含义、作用、种类等。 Python注释 在程序代码中对程序代码进行解释说明的文字,被称为注释。...Python注释作用 注释是代码中的解释型语句,不是程序,不能被执行。只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性。...Python注释种类及使用方法 Python分为单行注释和多行注释。 单行注释:以#开头,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助作用。一般用于一行或一小部分代码进行解释。...(#号和注释内容建议以一个空格隔开) # 注释内容 print(123) 多行注释:以 一对三个双引号 引起来(“”“注释内容”“”)来解释说明一段代码的作用使用方法。...一般对Python文件、类或方法进行解释。 """ 注释内容 注释内容 """ print(123)
对象头的另外一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。 ? 对象头在hotspot的C++源码里的注释如下: ?...什么是java对象的指针压缩?...很显然test1方法中的user对象被返回了,这个对象的作用域范围不确定,test2方法中的user对象我们可以确定当方法结 束这个对象就可以认为是无效对象了,对于这样的对象我们其实可以将其分配在栈内存里...我 们来进行实际测试一下。 在测试之前我们先来看看 Minor GC和Full GC 有什么不同呢?...我们可以看出eden区内存几乎已经被分配完全(即使程序什么也不做,新生代也会使用至少几M内存)。假如我们再为 allocation2分配内存会出现什么情况呢? ?
那你有没有想过一个问题,那就是当我们执行 java -jar 命令后,到底底层做了什么就启动了我们的 SpringBoot 应用呢? 或者说一个 SpringBoot 的应用到底是如何运行起来的呢?...java -jar 原理 首先我们要知道的是这个 java -jar 不是什么新的东西,而是 java 本身就自带的命令,而且 java -jar 命令在执行的时候,命令本身对于这个 jar 是不是 SpringBoot...,这也是为什么 java -jar 命令可以进行引导的原因,毕竟 java 程序都是通过 main 方法进行运行的。...而 JarLauncher 类里面的 main() 方法主要是运行 Launcher 里面的 launch() 方法,这几个类的关系图如下所示 跟着代码我们可以看到最终调用的是这个 run() 方法...org.springframework.boot.loader.JarLauncher#main 方法,该方法内部会通过引导 Start-Class 属性来启动我们的应用代码。
1、什么是回归测试 回归测试(Regression testing) 指在发生修改之后重新测试先前的测试以保证修改的正确性。...2、测试策略 回归测试的策略一般由测试经理或测试组长制定,初级软件测试人员只要按相应的策略执行测试即可。现以XYC邮箱的测试为例,简要介绍一下回归测试的基本策略。...(1)回归测试时执行全部的测试用例 XYC邮箱V1.0版本的第一轮测试中发现100个Bug,那么在第二轮的回归测试中,除了测试这100个Bug之外,其他所有功能点的测试用例需要重新再执行一遍,这样做的原因在于...(4)仅测试出现Bug的功能点 如果测试组认为软件的功能点已经十分稳定了,回归测试的时候可选择仅测试出现Bug的功能点。...至于回归测试的策略,初级软件测试人员可通过先学习测试经理制定的策略,再从执行回归测试策略过程中进一步提升自己的测试经验。
hashcode方法会影响jvm性能?听上去天方夜谭,实际上蕴藏着一些微小的原理,接下来让我们走进hashcode方法,一探native方法源头。 默认实现是什么?...在hashCode方法注释中,说hashCode一般是通过对象内存地址映射过来的。...以上都是我们的猜测,并没有实锤。我们来看一下源码吧,可恶,hashCode方法是一个本地方法。...public native int hashCode(); 真正的hashCode方法 hashCode方法的实现依赖于jvm,不同的jvm有不同的实现,我们目前能看到jvm源码就是OpenJDK的源码...大家也看到了,JDK的注释算是欺骗了我们,明明在678版本上都是随机生成的值,为什么要引导说是内存地址映射呢?我理解可能以前就是通过第4种方法实现的。
黑盒(又叫功能测试、数据驱动测试): 1.黑盒测试发现错误类型: 功能错误和遗漏 界面错误 数据库错误 性能错误 初始化和终止错误 2.黑盒测试:程序外部接口进行的 3.黑盒测试就是根据功能需求来设计测试用例...4.黑盒测试技术主要有等价类划分法、边界值法、判定表法、因果图法、场景法等。...5.等价类划分法测试技术是依据软件系统输入集合、输出集合或操作集合实现功能的相同性为依据,对其进行的子集划分,并对每个子集产生一个测试用例。 6.边界条件分析法是对大量错误发生在边界条件上的测试。...限制条件规则划分 边界值分析法 边界点:上点(边界上的点)、内点、离点(0离边界最近的点) 一般边界条件测试用例设计法 健壮性边界条件测试用例设计法 最坏边界条件测试用例设计法 健壮最坏边界条件测试用例设计法...等价类划分法和边界值分析方法比较适合输入变量或输入条件相互独立的情况,但是当输入变量或输入条件相互依赖、相互制约的时候用判定表法 条件桩—列出问题的所有条件。
让我们先来看个小故事 从前有两个测试,一个测试A和另外一个测试B 刚开始的时候A和B每天都悠闲的每天测着一个需求 主管一想,你们竟然每天都按时下班,明显工作量不够呀 所以主管让B再多测一个需求...多测一个不公平呀,所以也给了A一个 虽然每天多了个需求,A和B每天也都按时完成按时下班 竟然都测完了,还是不饱和呀,主管心说所以B你就再测一个吧 同样加班大礼包,A你也来一份吧 这时候B需要加班才能完成今天的测试任务了...于是走了 主管想着B以前每天能测4个需求,那新来的D也可以 而C则由三个需求变成了4个需求了 于是难兄难弟两个一起加班到很晚 由于C和D两个小伙子身体都不错,公司业务上升了 又有新的项目可以测试了...大家一起加班 公司业务在三位好测试的加班加点测需求,公司业务再一次上升 主管慧眼识珠发现E是测试好手 于是新的需求被丢给了E 大家继续加班,但是E加班到更晚了 这下D和E都不想抗了,F想我一个人也顶不住呀...,大家一起撤吧 可是主管才不怕呢,两条腿的骡子不好找,两只手的测试可好找了呢 GHI开始上任 新人没得挑,只好接下前辈的任务了 加班到半夜的日子继续 于是下一轮恶性循环开始......
领取专属 10元无门槛券
手把手带您无忧上云