《游戏测试精通》观后感

2023-10-27

第I部分、游戏测试简介

第一章、游戏测试的两条原则:1.不要恐慌、2.不要相信任何人

在第一章第一节的学习中,我了解到了,作为一名测试工作者,不论是不是新手还是一个资深的“老人”,在处于以下场景时,都会或多或少的出现恐慌的情况:不熟悉环境或业务、未准备好、处于压力之下、不安、只能看见短期目标。

不论是在学习还是工作中,我们都会遇到不熟悉的情况,一个完全不同的项目、一个不熟悉的环境、与不熟悉的工作交接等等。当我们遇到这种情况时,心里感到些许恐慌是正常的情况,但是我们内心既不能太兴奋也不能太悲观,不要去做出头的“鸟”,也不能做缩头的“乌龟”,要依据我们自己的经验或判断来行事,要尽可能的为自己寻求足够的帮助;我认为这不仅包括来自同事的来自前辈老师们的,还要自己学会在网上在书籍中找出类似的问题的案例或者解答。我们得按部就班的一步一脚印的去了解问题熟悉问题。

而“未准备好”这个情况在我今后的工作中是肯定会出现的,这也是导致恐慌的一个重要的原因,我需要做的就是努力学习、多多实践、总结经验,不论是成功还是失败的经验都相当的宝贵,学习关于游戏项目和其他部分更多的知识和弄懂游戏代码的底层逻辑。

第三个造成恐慌的原因是处于压力之下,书中提及在游戏项目里压力主要来自于:进度表(规定的时间)、预算,和职员数,有时候在项目进行中,可能是上述某一个或多个资源处于缺少或缺失的情况造成压力。或者是另一种,当项目需求增多或者加入了一些没有列入计划的变化。而作为测试人员,我们无法控制压力的来源,但是为了平衡资源我们可以降低通常情况下的标准,来去优先做一些比较能影响需求的工作,然后就有时间去解决那些相对来说重要程度较低的问题。

书上写到第四个造成压力的原因是不安,不过我认为这个原因可以称为测试人员自己出现的错误,因为当我们测试人员在深夜进行工作或者长时间进行工作后,头脑难免会不清醒,如果此时我们上报了一个没有出现的BUG,反而会浪费开发人员的时间和精力,所以测试人员自己出现的错误也是导致压力的原因。书上提及解决或者说是缓解这个问题的答案是在每次测试前和测试后都列出一个清单,在测试前看看列出的清单里有哪些需要进行测试的需求或功能,测试完了之后也比较一下清单,检查一下自己在测试时出现的问题和清单上需要测试的内容。或者直接喊一位自己的同伴来帮助自己检查有没有出现错误。

第五个因素是只能看见短期目标,因为很多的游戏项目是需要花费数月甚至更长的时间来完成的,如果仅仅只是在意一个小的短期目标,那么很难做出一个好的游戏测试,一个短期的目标仅仅只是决定了今天需要干什么怎么干。书中提到,作为一个好的团队,当他们处于暂时的落后时,他们不会出现恐慌,而是倍感信心、镇定自若。总结昨天的工作内容,做好今天的工作内容,计划好明天的工作内容,按部就班的跟随领导的计划即可。

第一章第二节,阐述了游戏测试的第二条原则——不要相信任何人,这里的任何人代表着他人也包括自己,因为书中提及,在游戏测试中信任度和测试程度是成反比的,当信任度越高时,测试就会越低,而测试的降低则会导致测出游戏BUG变少,那么隐藏的BUG就越多,软件质量随之下降。在游戏测试中,在团队里,他人可能会处于好心,而给我们自己提出一些建议或者捷径,这虽然可以让我们的工作任务更快完成,但是同样的,也会导致测试程度下降,因为你的信任度提升了,这就意味着我们平时在工作学习中得尽量保持一颗理性客观的心。在自己的测试工作完成后在进行一次最后的检查,这也是对自己的不信任,在寻找缺陷的过程中也会增长经验,做出一个好的游戏测试。

第一章小结:本章讲述了当我们初入游戏测试时,应该具备的素养和品质,并且总结出了两个原则:不要恐慌、不要相信任何人,我们在工作中难免会出现自己所意料之外的情况,这时候我们不能紧张不能害怕,而是依据我们的经验,做出比较合理比较客观的判断,根据自己的实际情况来为自己寻求足够的帮助来应付所需挑战的问题,同时在工作中将自己的任务划分好优先级,先处理最重要的事情,主次分明。再是在测试过程中保持一颗怀疑的态度:“这些地方不用测了?真的没问题了吗?”,多练手多测试。

第二章、成为游戏测试员

第二章第一节述说了玩游戏和测试游戏的区别,当然想要成为一名好的游戏测试员,必须得先是一个游戏玩家,但是在形式上测试游戏没有像玩游戏那样自由且随意,更多的时候可能会更加的枯燥无聊。

在第二节中解释了测试员测试的目的——找出BUG和游戏哪部分可以正常运行,并且因为每一个测试员的性格的不同,找出的BUG的数量和种类也都各不相同,但是在测试工作中,没有哪个就是完全正确的,都各有利弊和长短。

身为一名游戏测试员,也得学会“放大”问题,即当你在测试时发现了一个问题,但是此时已经处于后期阶段,这个问题如果不是会使游戏崩溃,那么很可能就不会太受重视,那么此时我们就需要将这个缺陷“放大”,在其他有可能同样会出现这个问题的地方去测试,或者是在新项目添加时就对其测试,尽可能的早发现问题,早改正。

当我们发现缺陷发现BUG时,就需要去通报团队,但是这个通报也不是无章法的,首先要主义的就是对于缺陷的描述,要尽可能的包含:人物、事件、地点、时间、方式,如果可以加上问题的解决方法和其他有用信息那对于开发者而言再好不过了;而另一种描述缺陷的方式是提供发现缺陷的一步步的详细步骤。其次就是在上报缺陷时得清晰的注明缺陷的优先级(严重度),大体上分为:紧急、高、中、低四个层次,“紧急”优先级的缺陷通常会导致游戏的异常中断并且难以恢复,或者使玩家的某些信息丢失。“高”优先级的缺陷也会造成非常严重的后果例如无法获得自己正常可以获得道具奖励,不过测试员在定级时,得非常谨慎,因为有可能“高”优先级也可能会升级为“紧急”。“中”优先级的缺陷也会有严重的影响,不过不会影响玩家的游玩和奖励的获得,书中提及,“高”优先级的缺陷和“中”优先级的区别可能就在于查看和修复的先后顺序。最后则是“低”优先级的缺陷,这类缺陷通常情况下不会对游戏正常体验造成影响,或者只有在极少数情况下才会发现。当我们标注完缺陷的优先级,之后就是本次测试的“通过”和“失败”,书中表示,这两者在测试工作中都很重要,记录下测试的类型是“被阻碍”还是“无法获得”,这个信息将会传到测试主管那,也对后续的测试计划产生影响。

作为游戏测试员,当我们发现并上报BUG后,工作还没有结束,还需要对开发人员修复后的BUG继续进行测试,看看它是否符合正常游戏的需要,这也是上一章中“不信任”的体现之一。

第二章小结:本章说明了我们身为游戏测试员应当具备的责任和义务,以及工作时的要点和细节,尽管内容不多,但是却囊括了测试员工作的大部分内容。当我们发现BUG,时尽可能的去重现去重视它,描述时也得将标题写清楚写明白,让人可以一看见提交的缺陷报告就能够知道这个缺陷的优先级,严重程度;等到开发人员将BUG修复完后,再花些时间去重新测试一遍,保证这个问题今后不会再出现。

第三章、测试的重要性

之所以有游戏测试这一个行业,是因为它有着不可替代的重要性,不论是对于游戏出版

商还是游戏开发团队,甚至手机游戏对于手机厂商和无线运营商。这些人都无比的期望开发出来的游戏可以有一个好的质量,可以很少的甚至不出先问题,当然对于游戏的受众玩家而言更是如此,没有谁喜欢自己付出很多时间精力去玩的游戏是一个残次品。那么对于游戏软件本身,测试重不重要呢?依然十分重要!

软件是由人来开发的,那么或多或少的都会出现错误和BUG,当出现缺陷时,根据缺陷被引入、被发现、甚至在未来如何被避免来对缺陷进行分类是十分重要的,书中介绍了IBM公司的正交分类系统(ODC),并且按照八种缺陷类型来分类缺陷,主要有:功能、赋值、检查、时间控制、构造/包装/合并、算法、文档、接口。

功能错误会导致游戏性能异常并且影响用户的游戏体验,该错误可能是由于提供这一功能的代码错误或者遗失导致的。

赋值错误是当游戏中的某一个值被错误的初始化或设置,或者丢失了某一个参数值时,就叫做赋值错误。当我们在游戏时进入某个新的关卡或者新的游戏模式时,会容易出现。例如体育游戏的团队日程表、比赛的初始比分板,RPG游戏的开始时的状态、属性、技能点数等,当出现上述的赋值错误时,有时是对玩家有益,有时反而有害,因此我们游戏测试员在测试过程中时就得格外关注游戏中的数值平衡度,将数值稳定在策划所规划好的范围内。

检查错误是指代码中不能适当的验证数据,例如在代码中以赋值等号“=”替代比较等号“==”来对数据进行比较,或者没有关注边界值,将“<=”替换成了“<”,这些问题看似是小问题,但是在实际游戏体验中却可能会造成大灾难,因此必须得重视起来。

时间控制缺陷是在游戏里出现资源的管理和资源的调度时,出现的异常,有时也与用户的输入有关,例如用户连续的按下某个按键或者长按时出现的问题。

构造/包装/合并引发的缺陷可以简称为“构造缺陷”,是由于配置游戏源代码库,变更游戏文件管理,或者版本识别和控制引发的问题,当一个程序员想改变一个游戏的文件时,就就有可能会导致这个问题的出现。

算法缺陷是指玩家在游戏中遇到的不合理的计算数值或者一些游戏里的NPC或者其他物体的反常的行为,有时会影响玩家的游戏体验有时则会使玩家在游戏里获取一些不属于的权力和利益。例如体育游戏里的人机对战、电脑的应对政策,RPG游戏里的人物的对话或者一些举动,战斗时的伤害计算和战斗损耗等等。

文档缺陷是游戏中已经确定下来的,包括游戏的文本、音频、图形文件等,这种类型的缺陷不是游戏代码所导致的,而是在文件里获得数据或者被定义的常量。这种类型的错误通常会使游戏出现显示上的异常。

最后一个接口缺陷则是会发生在任何一个信息被转移或被交换的地方,统称为接口;在游戏代码里,当一个模块调用另一个模块出现错误时,接口缺陷就发生了。例如:使用错误的参数来调用函数、在参数顺序错误的情况下调用函数、在缺少参数的情况下调用函数等等。在测试时注意每一个参数的传递,以及函数的调用,就可以尽可能的避免接口缺陷的出现。

第三章小结:游戏测试在游戏中是极为重要的,因为游戏不可能不出现错误,要想游戏可以顺利的游玩下去,有一个较好的体验和一个较好的游戏质量,那么在游戏发行之前,就得做出充足的测试,排除掉绝大部分的错误和缺陷,是我们作为游戏测试员的责任之一。

 

第II部分、游戏制作

第四章、游戏团队

第一部分为开发团队,主要负责生产可以正确运行的游戏代码,并且将软件实现在可以在硬件上运行。开发团队内部主要有:

  1. 开发主管,主要负责定义项目所需的开发活动,管理开发过程中出现的问题,指定开发中所需要执行的计划和规划。并且负责确立开发过程中的技术工具和标准。
  2. 开发工程师,负责编写代码来制作游戏,一般分为前端(客户端)工程师和后端(服务器)工程师。
  3. 构造工程师,对于一些较小的项目而言,项目的构建可能就由开发人员来完成了,但是在一些大型项目里,项目的构建则是由一个或多个专家来执行的。构造工程师的任务包括建立代码和游戏数据库素材库的结构、为每个游戏版本定义和维护说明等。

第二部分是测试团队,我们做测试时通常是为了保证某个物件的质量,做游戏软件尤其如此,在测试团队里,主要分有:

  1. 测试主管,测试主管在功能上类似与开发主管,只不过测试主管主要是规划和协调测试行为,制定好一整个测试期间的计划。
  2. 测试工程师,在之前的章节已经详细介绍了测试工程师的主要职责和工作内容,相比于开发工程师而言,测试工程师则更像是一个捣蛋者,需要去想方设法的在“鸡蛋里挑骨头”,但是相同是,两份工作都需要用热情来对待。
  3. Beta测试员,这个测试员有些特殊,主要是在alpha测试之后进行,由玩家和使用者组成的一类测试员,以用户和玩家的视角来测试一款游戏,主要职责就是在游玩体验过程中记录下他们所遇见的任何问题。

当然还有其他的团队例如美工、音效团队、项目经理和游戏策划等等,都是完成一款精良的英雄所不可或缺的一部分。

第四章小结:在本次章节里,我跟随这书中的内容学习了一个游戏团队都有那些成员组成,包括开发、测试、美术、策划等等,一款精良的好玩的优秀的游戏绝对不是任何一个人或者几个人就可以完成的,必须得是一个完整的有纪律的团队花费一定的时间去慢慢打磨慢慢修正出的一个产品。在这个团队里每个人都有着不可替代的位置,只要团队里每个人都努力,相信一定可以研究出一款优秀的游戏。

第五章、游戏生产周期

一款游戏的开发从0到1,不管是需要多长时间,都需要经历过一系列的在行业内已经标准化的阶段,书中也详细介绍了游戏开发周期所对应的九个阶段,分别是:概念开发阶段、试生产阶段、开发阶段、alpha阶段、beta阶段、代码冻结阶段、生产发布阶段、补丁阶段、升级阶段。

当我们团队内的某个人对游戏有了一些新的想法,一些新的灵感,并且这些巧思足以撑起一个游戏的制作的时候,那么一个游戏的概念开发阶段就开始了。这是游戏生产周期的第一个阶段,也就是一款游戏从无到有的一个起点。在这个阶段里,主要目标就是根据刚刚的灵感,来构思出游戏的大主题,即表明了一个游戏要怎么去玩,玩些什么。将这个主题记录下来,并且还得一目了然,清晰可见,让别人一看就知道,“哦!原来这个游戏是这么玩的。”不仅仅是主题,在概念开发阶段,还需要提出一款游戏的中心概念、游戏的种类、游戏机制、游戏特征、游戏背景和目标受众。一款游戏首先想要做好,那就必须得是“专一”的,如果不清楚自己的定位,那么从一开始就注定这款游戏就只能是泛泛之辈,随大流的产物。

经过了概念开发阶段的游戏定位,就到了游戏生产周期的第二个阶段——试生产阶段,也被称为概念验证阶段,顾名思义,这个阶段就是为了验证上一阶段的思路是否可行,游戏是否值得玩家去玩,是否值得一做。这个阶段的目的是完成游戏的设计,确定游戏生产路线和项目计划。试生产阶段结束时,我们需要拿出的成果有:游戏设计文档、艺术生产计划、技术设计文档和项目计划。游戏设计文档详细讲述了所有发生在游戏里事儿,包括游戏的完整信息,用户界面、故事、人物、怪物以及其他细节。最好可以将这份文档以网页的形式保存,不仅可以随时进行更新,也可以方便的供他人观看。艺术生产计划包括了游戏的画风、游戏的美术风格、游戏的表现形式等,是一款游戏的外貌设计。技术设计文档由技术主管负责,决定了在试生产环节所需要使用的哪些技术,哪些工具。而项目计划则是规划好了如何去构造游戏,如何可以更好的将游戏开发出来,包含了一款游戏的开发中的各方各面。

如果一款游戏通过了试生产环节,那么就表明这款游戏是值得开发的,于是就进入到了开发阶段。在开头就有提及,一款游戏的开发时长是不确定的,因为有了一个好的计划不意味着可以事事都跟着安排走,看上去在计划的安排下一切都井井有条,但是就和小孩子过暑假一样,看似把一切都规划好了,可是当暑假结束的日子越来越近时,才发现之前的时间都去哪了?为了解决这一情况,书中提到了一个解决办法,那就是将一些较大的任务全都分解成一些较小的任务,小到方便处理,并且在完成这小小任务之后记录下来,这样就可可以清晰的知道自己是否落伍,使用的技术和硬件设备是否落后了。

Alpha阶段也叫做alpha测试阶段,主要是在公司举行的一次测试,当游戏的开发进行到这个阶段时,大体上的工作也已经开发完成,包括玩法、引擎、用户界面等,进入alpha阶段后,工作的重心任务也从构造游戏转变为了完善游戏。

Beta阶段,beta测试是继alpha测试之后又一次的大型测试,但是测试人员从公司内部转为了公司外部的玩家来进行测试,到这一阶段开发已经基本结束,游戏的内容也已经基本完备。目的就是在上线之前尽可能的发现更多的BUG,来稳定该游戏项目。

代码冻结阶段,当游戏的开发处于这一阶段时,就表明游戏里的代码已经全部被送去测试,基本上如果不出现什么紧急的BUG导致游戏出现崩溃等现象的话,就不会再对游戏代码进行改动了。

当所有的测试已经彻底结束,一切准备就绪,那么就代表着游戏已经可以上线发布了!即生产发布阶段。

但是所有的游戏都不是一蹴而就,一挥即成的,公司内部的测试无法发现所有的缺陷,在游戏上线之后依然会存在很多BUG,甚至是“紧急”优先级的BUG,这时候就需要发布补丁,去修复问题。这一阶段被称为补丁阶段。

升级阶段代表着游戏发行之后后续的更新,有时候它是新的玩法,有时候它是新的地图,有时候它也有可能是对游戏某些内容的重做,当处于这一阶段时,即升级阶段。但是一次升级也是一个小的项目,依然需要对其进行测试以及其他的步骤。

第五章小结:在这个阶段,我了解到了一款游戏从0到1的全过程,从小到大,从一个小小的构思,到最后完成的一款大型的游戏项目,在这个过程中,时间或许有长有短,但是不会改变的是游戏团队对于一款游戏的认真和负责,不论是在哪一个阶段,每个人都需要保持热爱,接近全能的去付出,市面上任何一款成功的好玩的游戏,无一例外不是如此。

 

第III部分、测试基础

第六章、软件质量

游戏也是软件的一种,对于游戏这类软件而言,在软件质量上,不仅仅包含着一款普通软件所具备的高质量特性,还有一些其他的元素,例如:游戏故事情节、游戏机制、美术风格和音乐音效的质量、游戏内元素的体现、游戏内的AI的智能水平······;除此之外,不管是在什么软件中,都是最重要的一点:一个良好的体验。这不仅仅体现在一个易于理解和使用的界面,还包括流畅的使用等等一些在表面上无法直观看出来的东西。这也是测试人员在进行测试工作时的一个重要考量之一。

第一节讲述了影响一款软件或者说游戏的质量的因素有哪些,那么第二节,就是接着引出了游戏质量的鉴定;因为游戏软件的质量主要是靠游戏的代码来决定的,在鉴定时,如果只有测试人员来进行,那么不是最好的办法,书中提及,最好的办法就是在问题引进之前就把问题消除,意思就是在代码编写前或者编写时就检查出问题,及时解决。但是和棋局中的道理类似,“当局者迷,旁观者清”。在和同伴的讨论之中,往往就会把问题发现并修复。书中提及了几个同伴评论的形式:1、走查:这种形式主要是由部分主管完成,在一个房间内走动,对工作提出自己的看法和建议,并在出现疑惑时对参与者进行提问。2、评论:书中的标题写的是“评论”,不过我认为应该是“会议”更加好一些,因为在这种形势下,通常由4~6个人组成,或者在一间大的会议室内,一起讨论和讲解,在其他人对讲解者提出问题的同时,也会使其发现问题。3、基于清单的评论:这种形式的规模比起“会议”更加小一些,只在两个人之间进行,同伴对于讲解者举出一个清单来列出自己所想要提出的疑问和漏洞,来帮助讲解者更加清晰的认识到自己。4、检查:这种形式相对比较正式,用于通过一个完整的步骤来进行。

除了游戏质量的因素和检测之外,还需要QA(质量检测)团队在测试时,得有一个固定好的执行标准,通常分为两类:用户界面标准、编码标准。

用户界面就是玩家在游玩时所看见的界面,书上表明了在测试时应所执行的标准,例如:文本清晰、字符大小相同、使用大写字母、避免横向菜单、给文本定位留下足够的空间、将按钮功能与游戏中的特定功能分开等等,这些标准都是非常有意义的,在为了测试工作中提供了一系列指标,提供了项目要符合标准的理由,对于工作和游戏质量的提升非常大。

编码标准通常是指在编写时的规范,这能有效的阻止在编写代码时的缺陷的发生。主要有:文件命名惯例、头文件引入、注释和缩进格式、使用常量、使用全局变量。这些标准的指定通常会使一个公司的代码都变得更加整齐和统一,使得其他员工在检查和观看时都变得更加清晰易懂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《游戏测试精通》观后感 的相关文章

  • 如何克服原语按值传递的事实

    我有一段很长的代码来计算两个值 doubles 对我来说 我在几个地方使用了这段代码 为了坚持 DRY 原则 我应该将这段代码重构为一个很好的单元测试方法 但是我不能让它返回两个双精度数 而双精度数是原始的 因此不能按值传递和操作 我能想到
  • 如何使用 Apache POI API 将图像添加到 pptx 中添加的图像占位符?

    我已经预定义了带有文本和图像占位符的 pptx 模板 我如何从模板访问和修改这些占位符 我可以使用 POI pptx API 直接将图像和文本添加到幻灯片中 但如何将其添加到模板的占位符中 请参阅链接以了解如何添加占位符来创建固定模板 ht
  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • 如何使用 Java 中的 Web 服务(例如 Axis2)发送复杂对象的数组或集合?

    我对 SOAP Web 服务还比较陌生 虽然我完成了一些较小的 Web 服务项目 但我偶然从来不需要返回 或用作参数 复杂 对象的数组或集合 当我尝试这样做时 根据我的 SOAP 绑定风格 我会得到不同的奇怪行为 当我使用RPC 文字 我可
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • OSGi:如果不取消服务会发生什么

    这是我获取 OSGi 服务的方式 ServiceReference reference bundleContext getServiceReference Foo class getName Foo foo Foo bundleContex
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 当从服务类中调用时,Spring @Transactional 不适用于带注释的方法

    在下面的代码中 当方法内部 是从内部调用的方法外部 应该在交易范围内 但事实并非如此 但当方法内部 直接从调用我的控制器class 它受到事务的约束 有什么解释吗 这是控制器类 Controller public class MyContr
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个

随机推荐

  • ESP8266连接 TCP

    AT GMR查看固件版本 v1 0以上固件命令如下 恢复到初始状态 AT RESTORE 设置WiFi应用模式为Station和Server共存模式 AT CWMODE 3 连接路由器 SSID为路由器用户名 Password为密码 AT
  • cocosCreator 物理关节组件

    cocosCreator 物理关节组件 重点 距离关节 旋转关节 绳子关节 轮子关节 焊接关节 棱柱关节 马达关节 重点 开启物理系统 物理系统默认是关闭的 如果需要使用物理系统 那么首先需要做的事情就是开启物理系统 否则你在编辑器里做的所
  • 如何在WPS、Word里插入高亮代码块

    需要使用Notepad step1 我们首先需要在Notepad 里安装好NppExport插件 步骤如下 第1步 打开 插件管理 第2步 搜索并安装 NppExport 插件 安装后 在已安装界面如下图所示 step2 然后将代码复制在N
  • ws协议与http协议的异同_websocket和http的区别

    websocket和http的区别 1 WebSocket是双向通信协议 模拟Socket协议 可以双向发送或接受信息 而HTTP是单向的 2 WebSocket是需要浏览器和服务器握手进行建立连接的 而http是浏览器发起向服务器的连接
  • 企业运维经典面试题汇总(2)

    1 写一个脚本查找最后创建时间是三天前 后缀是 log的文件并删除 find ctime 3 name log rm rf 2 统计ip访问情况 要求分析nginx访问日志 找出访问页面数量在前十位的ip cat access log aw
  • IDEA-Docker配置CA证书和远程访问

    前言 为了优化idea docker部署 防止自己服务器端口2375被黑 这里简单介绍一下idea docker的ca证书配置 1 新建一个脚本docker ca sh 将下面的脚本复制进去 注意修改一下docker主机ip 创建 Dock
  • spring boot org.springframework.context.annotation.ConflictingBeanDefinitionException

    org springframework context annotation ConflictingBeanDefinitionException 分析接解决方法 错误信息 分析接解决方法 annotation ConflictingBea
  • [从零开始学DeepFaceLab-10]: 使用-命令行八大操作步骤-第6步:模型的选择与训练 - 模型训练

    目录 总体流程 步骤6 模型的选择与训练 模型训练命令 6 1 命令 6 train Quick96 bat 适用CPU only情形以及快速学习 必需之一
  • redis mysql 案例_redis 使用案例

    1 使用redis消息列队发布信息 在一些用户创造用户的应用中 如SNS 微博 可能出现1秒有上千万个用户同时发布消息的情况 此时如果使用mysql可能出现 too many connections 错误 当然 把mysql的max con
  • idea java 远程调试_使用IDEA进行JAVA代码的远程Debug

    在本地开发过程中 对代码进行Debug能逐行对代码逻辑进行调试 方便准备的排查问题 但是当代码发布到线上时 如果运行过程中出现异常 仅仅依靠日志来排查问题的话 会比较耗时 而且经常由于日志不全等原因而不能快速准确定位问题 而通过对JAVA代
  • 电机控制基础——定时器基础知识与PWM输出原理

    单片机开发中 电机的控制与定时器有着密不可分的关系 无论是直流电机 步进电机还是舵机 都会用到定时器 比如最常用的有刷直流电机 会使用定时器产生PWM波来调节转速 通过定时器的正交编码器接口来测量转速等 本篇先介绍定时器的基础知识 然后对照
  • importing maven projects 9% 卡住

    导入一个maven工程后 一直显示 importing maven projects 9 解决办法 找到eclipse安装目录下的eclipse ini 在最后加入 vm JAVA HOME bin javaw exe 再次重启eclips
  • flutter 环形进度条组件CircularProgressIndicator、线性进度条组件LinearProgressIndicator

    环形进度条组件 不能放在ListView中 若不设置value 即无value参数 会一直加载动画 LinearProgressIndicator valueColor AlwaysStoppedAnimation Colors x 设置进
  • 如何进入mysql命令界面

    1 找到安装mysql安装路径 复制bin目录地址 eg D installmysqlin 2 进入cmd命令窗口 3 因为安装到D盘 进入D盘的盘符 输入D 直接输入cdD installmysqlin是无效的 4 进入bin目录 cdD
  • video.js 播放 rtsp、hls

    什么是HLS RTSP RTMP HLS HTTP Live Streaming 苹果公司提出的流媒体协议 直接把流媒体切片成一段段 信息保存到m3u列表文件中 可以将不同速率的版本切成相应的片 播放器可以直接使用http协议请求流数据 可
  • arduino+esp8266+onenet+mqtt_4G模块(EC20)连接MQTT服务器(EMQ X)

    上面的示意图也是这篇推文的主题 使用三个客户端EC20 ESP8266 MQTTX通过MQTT协议连接上我们搭建的EMQ X服务器最后完成消息的发布和订阅 概述 其中ESP826大家都有认识 那么相对陌生的EC20是一个4G模块 MQTTX
  • vika+obsidian快速进入一个研究领域

    目的是快速熟悉一个陌生的研究领域 写出文献综述 步骤 检索相关文献100篇以上 在vika中建表格 表头如下所示 阅读100篇论文的题目 关键词 摘要 填充vika表格 并找出需要精度的文献10篇左右 中文综述优先 精度10篇论文 并用ob
  • 《程序员面试宝典》第6章 宏和const

    一 用一个宏定义FIND求一个结构体struc里某个变量相对struc的偏移量 int a char b 20 double cc FIND student a 0 FIND student b 4 FIND student cc 4 20
  • vscode 如何自动补全react和jsx代码?

    补全react代码 文件 首选项 设置 打开之后 搜索emmet includeLanguages 添加javascript javascriptreact属性 重启即可生效 补全jsx代码 在原来的搜索位置 搜索emmet trigger
  • 《游戏测试精通》观后感

    第I部分 游戏测试简介 第一章 游戏测试的两条原则 1 不要恐慌 2 不要相信任何人 在第一章第一节的学习中 我了解到了 作为一名测试工作者 不论是不是新手还是一个资深的 老人 在处于以下场景时 都会或多或少的出现恐慌的情况 不熟悉环境或业