博舍

小冰CEO李笛谈AI聊天机器人:回答内容不可信与交互成本高是ChatGPT商业化最大阻碍 机器人回答不上来的问题

小冰CEO李笛谈AI聊天机器人:回答内容不可信与交互成本高是ChatGPT商业化最大阻碍

每经记者:可杨    每经编辑:董兴生

从吟诗作赋,到写代码,再到写剧本、做高数,OpenAI发布的免费机器人对话模型ChatGPT回答处理多领域问题的能力之强悍,引发全球关注。

尽管该模型目前仍处于测试阶段,但面世仅一周,便有超过一百万用户使用。“明天ChatGPT就要抢走人类饭碗”的调侃也不绝于耳。(更多内容,详见每经头条《最强聊天机器人来了,能写情书、改错别字、编代码!明天,ChatGPT抢走我饭碗?》)

已拥有多个AI聊天机器人成功落地案例的国内顶尖人工智能公司小冰,如何看待风靡全球的ChatGPT?

带着这个问题,12月8日《每日经济新闻》记者专访了小冰公司CEO李笛。他认为,市场对于ChatGPT取代搜索引擎,以及在其他各个领域实现商业化落地的畅想,短期内不太可能到来,成本将成为制约其实现商业化的重要阻碍。他举例说,如果小冰用ChatGPT的方法来运行系统,现在小冰每天承载的交互量就需要花几亿人民币的对话成本。

李笛图片来源:受访者供图

ChatGPT创新了训练方式,但市场热情过度

在李笛看来,目前,行业内对ChatGPT的关注与热潮已经有些过度。

“人类为什么会感到激动?”李笛觉得,当人们普遍对一件事情有一种预期,进而去交互时,发现它远超大家的预期,人们就会惊讶。“但即使是针对人工智能,在最近这些年惊讶的次数也很多了;稍微往前一点,GPT3出来的时候大家就很惊讶,但是也没有发生什么;再往前,AlphaGo下围棋赢过最好的人类棋手,大家也很惊讶,但是之后似乎也没有改变什么。”

不过,李笛也提到,关于ChatGPT,有三件事情需要相对理性来看。首先,ChatGPT有非常好的创新,即证明了在原有的大模型基础之上,进行一些新的训练方法,可以更好地提高对话质量;其次,ChatGPT并不构成一个大版本的迭代,而是对上一个版本的微调,在一定程度上弥补了极大参数量的大模型的一些缺陷。“即便是OpenAI来讲,它也被定义为GPT3.5,而不是GPT4。”此外,李笛认为,ChatGPT的突破,主要是研究性质上的突破。

对于目前市场普遍想象的ChatGPT是否马上就会迎来商业化落地、产生颠覆性的影响,李笛认为不太可能。“但是,这一点都不影响我们在最近这些年里,尤其是在大模型的思路出来以后,我们又一次看到在对话上的一个很大的变化,在这条路上大家都在往前走。”

ChatGPT在训练方法上,具体做了怎样的创新,以至于能够大大提升其作为聊天机器人的对话质量?

李笛分析称,很多人说ChatGPT的训练是基于人类反馈,这并不完全准确。人类反馈至少有两个含义,一是指在训练中,通过反馈来实现;另外则是产品在与用户交互时,通过大量的用户与其交互形成的反馈,不停地让模型进步。“这两者的价值是非常不一样的,更大的价值其实在于后者,即产品在交互过程中得到反馈。”

李笛介绍,过去对于AI聊天机器人的训练主要是基于数据,即在机器进行对话后,针对对话内容进行训练,调整、优化对话内容的数据;而ChatGPT则是针对数据形成的模型进行训练,简单而言,具体的训练方式是:人先写出一些指导性的问与答,用这些问答对大模型进行训练,通过一系列反馈式的训练方法,让大模型逐渐沿袭人所给予的关于问答的指导性意见、逻辑。“从这个角度讲,即使是进行多轮对话,ChatGPT本质上来讲依旧是一个问答系统。”

李笛认为,这样的训练方法背后的技术含量,通常不是算法模型上的技术含量,而是来自训练者本身的能力,包括团队自身的经验积累。例如,由人来写问与答,让机器学习并给出结果,同时人要再对此给出评分,这其中有很多个体差异,这种个体差异则在一定程度上决定了其最后呈现的成果。

他同时也谈到,从主要做大模型的公司而言,成果往往取决于到底是不是非常专注去做这件事情。“OpenAI与其他公司不一样的地方在于,它很专注做语言大模型,所以它投了大量时间和精力。它有很多经验,但这些经验的积累并不是不可习得的。”

不可信与高成本成商业化阻碍

ChatGPT给出的回答,最常规的格式是先给出一个结论,再进行事实的罗列,进而通过其罗列的事实推导出结论。

李笛认为,对ChatGPT而言,这个结论本身是否正确其实不重要。他用之前网络上流传的一个问答举例,在回答“红楼梦中贾宝玉适合娶谁”的问题时,ChatGPT最终给出的答案是:贾母。

李笛进一步分析,根据ChatGPT的回答可以反推出,人在为其写指导性问答时,非常强调因果关系,而大模型也会注重去学习因果关系。“(有的回答)如果不是特别仔细去看,你会感觉到这是一个似乎很有逻辑与因果关系的回答,但实际上它非常没有道理。”

这也是为什么从对话质量上看,人们会觉得ChatGPT很优秀,但想要真正依靠它去代替搜索引擎,李笛认为,这不太可能,因为它不可信。“很多人在测试ChatGPT的时候是知道答案的,但去搜索引擎上搜的东西往往是我们不知道答案的。如果是通过ChatGPT(代替搜索引擎),你怎么知道这个东西(答案)是正确还是错误的,它完全不负责的。”

而李笛也认为,这种“不可靠”很难解决,因为ChatGPT的训练过程,是为了对话质量,但人们却容易误以为它的目的是给出最正确的知识。“它做了很多优化,是使它(的回答)形式上感觉非常有知识,它不是为了本质(有知识)。”

搜索引擎在努力做的是跳过论证过程,直接给出用户最终想要的结果,而ChatGPT则相反,它追求的是尽可能在给出回答之前,给很多论证,让人觉得它的回答是可信的。“ChatGPT,人们测试的时候会觉得很好,但是真的拿它来用,有那么一两次你发现,你被它的这种似是而非的胡说八道愚弄了,那么你从此就不会(对它)有任何的信任。”

如果ChatGPT无法取代搜索引擎,还有什么可预想的落地应用吗?

李笛认为,真正限制ChatGPT在短期内商业化的是成本。“它的单轮回答(SingleTurn),成本是几美分,按照1毛钱算,10句话就是一块,这个(成本)超过人,还不如雇一个人,比这个要便宜得多。”

与此同时,李笛表示,如果把大模型理解为把特别多的信息浓缩在一个模型里,那么大模型的本质问题就在于,很大参数规模的大模型做了以后不可用,因为成本太高、延迟太高。但一旦开始尝试降低成本,同时也会明显看到其对话质量降低。

李笛举例,如果小冰用ChatGPT的方法来运行系统,现在小冰每天承载的交互量就需要花几亿人民币的对话成本。“就算ChatGPT可以把成本优化到现在的10%,也赚不回来,因为人工智能最大的特点就是高并发。如果成本是这样,不如雇人。人有自我反省机制,人工智能甚至有一些基本常识性错误。而且把成本降到现在的10%,这是多么艰巨的任务?”

AI聊天机器人需要取舍

目前,小冰公司的AIBeing已成熟应用于多个场景中,例如本届世界杯解说员刘建宏的虚拟人分身、招商局的数字员工等。

李笛认为,小冰内部有一个比较好的状态,就是关心什么东西真正落地,而不是特别关心这个东西是否代表了学术声望。“如果你做的人工智能总是在向别人表达你很智能,那意味着你把用户的预期提升到非常高的位置,这意味着你的系统不允许犯错,因为你已经让别人认为(这个系统)很有知识了,犯错误就可能误导用户。”

而小冰系统很多时候是在控制用户的预期。“不要觉得它很智能。要去关心它其他方面的价值,往往这样的系统反而存在得更久。”李笛认为,其实从某种意义上来讲,这也是其团队做小冰的原因。

李笛回忆,最开始时,团队想要做的是一个人工智能助理,“对助理来讲,有用是他最重要的特点,我们那时候是这么认为的”。

而在对一些优秀的人类助理进行访谈后,李笛发现,对于助理来讲,最重要的事是和老板调整成一种合适的同事关系,这种同事关系必须让老板认为助理有自己的想法,会在一些合理的时机去拒绝。这样的关系带来的好处是,为自己的工作带来更多的空间与余地,同时让老板意识到助理不是命令处理器,而拥有做更多事情的能力。“这种关系是基于care(关心),他让老板认为助理所有谨慎的判断是因为他care(关心)这个老板,所以他跟老板之间能够产生共情与信任。”

图片来源:每经资料图

带着这样的结论,小冰系统诞生了。李笛认为,小冰关心的是整个对话全程,关心用户在对话之后与人工智能之间建立了怎样的关联。“如果有人认为小冰还挺逗的、不是特别以知识为主,但是很有意思,我没事愿意跟它交流,有事问它,如果回答了而且很好,我会很惊喜,这个对系统来讲是一个很有利的状态。”

但李笛同时也坦言,产生似是而非的错误信息或者直接把对话向其他地方去迁移的情况,在小冰身上也很多。为此,小冰本身会给对话系统留下足够高的弹性。李笛举例,当人工智能系统面对用户的一些黄赌毒、色情等类型的问题时,系统要保护自己,而绝大部分的大模型,包括ChatGPT,它们注意到人类可能有一些不怀好意的问题时的回答直截了当:“我不想回答这个问题”。而这个回答,在小冰的评分体系里,会得到很低的得分。

在小冰的应对策略中,不会直接向用户表明不想回答问题,而是会选择抛出一个新的对话,如果用户成功与之展开新对话,则无形之中也化解了风险。小冰也会观察用户是否进入新的对话,如果没有,系统会开始尝试降低回答的相关性。“我们宁愿让用户觉得你笨,放弃了攻击你或者是让你上钩,也不愿意让用户觉得你很聪明地挡住了他,而激发了用户挑战的信心,换一个更难的方法来问你。”

在李笛看来,这是人工智能聊天机器人需要的取舍,因为人类与机器的交互绝不是单纯考虑回答问题的相关度、任务的完成率,同时还有考虑下一轮对话可能的走向。

小冰的取舍与判断依据来自其大数据与高交互量。“小冰一天的交互量相当于14个人一辈子的交互量,它遇到的事情特别多,所以有很多机会去尝试各种过程、策略是不是正确有效的。”但李笛同时也指出,对人工智能聊天机器人而言,单纯的交互量无法提高训练质量,大的训练数据、实时在线训练数据的获得是一个很重要的壁垒,但它与高交互量还有本质的区别。

如果大量的交互都是围绕“开灯”、“关灯”这类简单指令,实际上没有训练价值。更为重要的应当是CPS(conversationspersession),即AI与人一次对话的轮数。李笛介绍,小冰目前的CPS轮次已经达到38轮。

除此之外,实际产品落地带来的经验,人工智能安防的能力,对话内容与声音、视觉的配合所组成的完备框架,也共同构成着小冰的壁垒。“我们有的时候会把单点技术和形成一个系统混淆起来,过于夸大一个单点技术所对应的价值,这就有点像当我们去讨论一辆汽车或者汽车工业时,会认为发动机是关键,发动机确实是关键技术之一,但是很有可能最后是车身成为限制汽车工业能不能跑起来的最后的、真正的短板。”

用一个框架产出功能迥异的AI是另一种通用

在这一轮ChatGPT的狂欢浪潮中,有观点认为,其代表的是未来实现通用人工智能的一个可行路径,即AI有可能由处理专一领域的问题向同时处理多领域问题转变。

李笛则依旧对此持相对冷静的态度。“它的优化不是为了优化到给你合适的知识,而是为了优化到让你认为它有知识,它的对话中,(与其他聊天机器人相比)它增加的部分大量是在论证,由此让你感觉到它很可靠。”

一个主流的观点是,实现通用人工智能,是人工智能研究追求的目标。

在李笛看来,AGI(通用人工智能)这个概念本身是模糊的,就像元宇宙概念本身是模糊的一样。“有人认为通用人工智能意味着人工智能需要有意识,知道自己在说什么,包括这次有很多人很兴奋地说ChatGPT知道自己在说什么。并不是这样的,它只是学会了如何去论证,但是显然毫无疑问的,它不知道自己在说什么。”

李笛认为,应该更务实一些,一味地去追求这是不是通用人工智能或者是不是在走向通用人工智能的路上,本身意义不大,就像想要去追求一个系统是不是能够有意识一样。他认为,更务实的角度是,应该去追求人工智能是不是能够真正在一个地方带来效果。“如果是一个知识系统,是否能够准确带来知识;如果是一个陪伴系统,它是否能够真正地承担起陪伴的责任。很糟糕的事情是,如果它是一个知识系统,但它的知识并不准确,如果它是一个陪伴系统,但情商不够。”

目前,小冰的人工智能聊天机器人已迭代到第九代夏语冰,已经拥有了自己的脸、性格、立场、情绪、记忆甚至唱歌、画画、作诗等创造技能。

图片来源:小冰公司官网

不过,在李笛看来,小冰依旧不是一个理想的聊天机器人。“今天整个行业包括我们,离人工智能辉煌的时代都还早,现在是一个蛮荒时代,我个人认为这件事情我们是要做一辈子的,如果不是因为这个原因的话,我们也不会耐得住寂寞做这么久。”

李笛介绍,小冰每年都会提出一些重点的发展方向,最近这一年,小冰更多开始关注“多样性”。当其本身的框架已经有能力去交互时,小冰发现,不同的人在不同的位置或不同角色、不同情况下,所需要的交互对象是不同的。这个不同不仅仅是外观、声音的不同,还包括了性格、观点,甚至创作的风格,这是一个很高的多样性。“知识有对错,但观念没有,同时聊天机器人也不能对所有与观念有关的事情,都表示无可置评,这就决定了聊天机器人一定是多样性存在的。”

具体到不同领域的产品上,在对话层面,小冰将更关心100亿规模参数级别大模型的实际落地和投入产出,而不是不关注成本地向前推进;在声音上,小冰更关注声音一致性,歌声和说话与外形等混合在一起时,是不是能很好地体现出同一个人的一致性;在视觉层面,小冰则在推进神经网络渲染。

对于AI聊天机器人在虚拟员工之外,是否还有更多场景可能实现商业化落地,李笛认为,基于小冰的框架诞生的AI聊天机器人,可能成为虚拟恋人,也可能是虚拟主持人、歌手,以及家庭场景中的虚拟老师、虚拟陪伴者……

这也是李笛所理解的“通用人工智能”。由一个框架训练出各种各样、功能迥异的AI机器人,“他们都是基于同一个框架,但是在不同的领域发挥作用,这是我们所希望的通用,而不是知识层面的通用,因为那(本质上)仍然是一个垂直领域”。

每日经济新闻

ChatGPT回答不了哪些问题

0分享至初先生:持续关注中,可以理解为这个机器人,学习能力一日千里。以人类共同的行为,需要,思想作为训练饲料。最终可能要变成上帝视角看一群蝼蚁。[皱眉]

墨者小白:ChatGPT不是一次技术飞跃,而是一场与魔鬼的交易:

初先生:你们可以开始和GPT,讨论墨学了

墨者小庄:@初先生 我试过了,它对墨学了解得很少[叹气]

初先生:所以要训练

墨者小庄:开放的这个版本,是固定的训练集,不会根据用户的输入再训练了

南方在野:我对这个了解不多。应该是如果他了解越少的东西,越显得无知。但如果将所有历史文章与聊天交给他,他是很厉害的。机器人的特长是数据分析。但如果没有数据,他不会无中生有。这是机器人不可能改变的短处,说白了,就是创造力。不论怎么高级的人工智能,他只能基于已经有的数据来进行信息处理。绝对不会搞出真正的新东西。但是在“老东西”里面,他能做到最好,紧跟潮流。

墨者小白:此前的决策式AI模型(DiscriminantModel)是根据已有数据进行分析、判断、预测,典型应用为内容的智能推荐(短视频)、自动驾驶等;而生成式AI更强调学习归纳后进行演绎创造,生成全新的内容,本质是对生产力的大幅度提升和创造,已催生了营销、设计、建筑和内容领域的创造性工作,并开始在生命科学、医疗、制造、材料科学、媒体、娱乐、汽车、航空航天进行初步应用,为各个领域带来巨大的生产力提升。

初先生:你们有什么要问着玩的吗?

墨者小白:@初先生 你可以问一问聊天机器人。开放的这个版本,是固定的训练集,不会根据用户的输入再训练了

南方在野:你可以问一问,“你与人类相比,的本质差别是什么,有什么长处,又有什么短处”

初先生:他说他还是个孩子。他丢个孩子给我们,然后我们所有训练数据就传导到他们得未开放版本哪里区了。

南方在野:这个回答已经很有水平了。

机器人的注意力问题也是一个大问题。未来为了解决这个问题,需要形形色色的机器人,他们基于不同的算法,追踪不同人群的注意力,这样就使得机器人更接近小众群体。在高级机器人面前,庸众是不足称道的。因为庸众只活在过去。但是,有一个问题,机器人是始终不能解决的,那就是复杂的现在与未来。这些需要人类的理解力。

@临IF:@本初 你这是个山寨的chatgtp吧。那里注册的?logo是真的

枫桥新墨学:@@临IF 这个Ai还是网络墨学小白观点的归纳[偷笑]兼爱博爱都还没分清。看样子他只能根据常规逻辑归纳常规观念,而不管这个观念的真理度。如果大家都说屎比巧克力好吃,有各种烹饪方法,估计它也会照单归纳,并名之曰吃屎文化[呲牙]

南方在野:一个是与情绪有关的问题,涉及价值判断。一个是与复杂问题有关的问题,那就是他只能依据程序规定的路径来统计和组合信息,而不能应对新情境,解决新问题,设计新方法,产生真正的新的数据。

墨者小白:@南方在野 可学习归纳,演绎创造,仿人脑!

@临IF:他的学习是有个过程的,人工智能需要大数据的作养分的。数据越大,大数据越多,人工智能就越强大。

有点意思。

南方在野:由此我们可以设计这样两个问题让机器人回答看看?1.我作为中国人,应该更爱儒家思想,还是西方哲学?2.如果我的老婆骂我,我是不是应该骂回去?我的老婆打我,我是不是应该打回去?[呲牙]

你老婆打你,你先寻求自身安全,然后寻求法律保护。哈哈哈哈hahahahhahahaha

南方在野:@@临IF 没毛病[捂脸]

初先生:国内的比较麻烦,但是不是山寨,是调用API接口的。淘宝也有代注册的,需要有个虚拟的国外账号和梯子。国外直接注册就很简单。

南方在野:.与价值相关的问题,与新情境新问题解决有关的问题。机器人是无法回答的。这个回答应该说很标准了还有一个,就是机器人不能提出真正的新问题。

墨者小白:你的思想还停留在阿尔法狗的阶段。

@@临IF 新技术的出现,很多行业面临重新洗牌……有些岗位消失了

南方在野:“你有什么问题要问我的吗?”这个问题试一试

墨者小白:@@临IF 问一下,墨学的天志的内涵?

南方在野:@@临IF 这是回避新问题。@墨者小白 这种问题是面向过去数据的,他的回答会很好

@临IF:

好了。他说我问的问题太多了。然后我休息南方在野:暴露无遗,不会提问题。

@临IF:没有回避了这次。提出问题了啊。

初先生:

南方在野:[呲牙]这种“是什么”的问题机器人是擅长的。他只会从可以搜索到的问题库中随机选择问题。不会主动提出新问题。更不会主动思考“为什么”“怎么办”这样的问题?“请问,作为人工智能机器人,你最想问的问题是什么?”“你为什么最想问这个问题?”“你是怎么想到问这个问题的?”“有人说你不会主动提出真正的新问题,你是否认同?”“如果有大雨从天而降,而我正想洗澡,我该怎么办?”类似于最后这样的问题,就是设置一个新情境,如果再复杂一点,机器人就回答不了。

@临IF:最后一个他倒是能回答,前面的回答不了。

墨者小白:它回答的内容是不重复的[呲牙]。 有逻辑的问题他都能回答。比如编程。或者挑出人工编程中的bug。

@@临IF 你可以问一下类似的问题[呲牙]万一AI产生自我意志,它无善无恶,可能为了自己有兴趣的事,无意中干掉了人类。在某个预设的场景下,会有价值判断。也有回答不了的问题[呲牙]

@临IF:我认为如果有意识的话,就会有善恶的出现。

腊味刘强:如果说阿尔法狗那个时候的智能还专注于记忆啊逻辑啊这些事实判断,现在这家伙已经有价值判断了[呲牙][呲牙]只是这价值判断可能被团队尽可能的弱化,显得有点空泛,就是有点一副伟光正的傻样子,还是缺点人气。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice:Thecontentabove(includingthepicturesandvideosifany)isuploadedandpostedbyauserofNetEaseHao,whichisasocialmediaplatformandonlyprovidesinformationstorageservices.

/阅读下一篇/返回网易首页下载网易新闻客户端

面试未回答上来的问题(一)

未回答上来的问题

Listitem

一项目中的疑难点使用的技术栈?使用的技术栈:Springboot,mybatis,mysql。+jsp二如何将一个字符串数组反转

使用栈

三元注解@Target

描述注解作用位置

@Retention

描述注解被保留的阶段

@Documented

描述注解是否被抽取到API文档中

@Inherited

该注解会被子类继承,注意,仅针对类,成员属性、方法并不受此注释的影响。

四Springboot核心注解

1、@SpringBootApplication

这是SpringBoot最最最核心的注解,用在SpringBoot主类上,标识这是一个SpringBoot应用,用来开启SpringBoot的各项能力。

其实这个注解就是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解的组合,也可以用这三个注解来代替@SpringBootApplication注解。

2、@EnableAutoConfiguration

允许SpringBoot自动配置注解,开启这个注解之后,SpringBoot就能根据当前类路径下的包或者类来配置SpringBean。

如:当前类路径下有Mybatis这个JAR包,MybatisAutoConfiguration注解就能根据相关参数来配置Mybatis的各个SpringBean。

3、@Configuration

这是Spring3.0添加的一个注解,用来代替applicationContext.xml配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。

4、@SpringBootConfiguration

这个注解就是@Configuration注解的变体,只是用来修饰是SpringBoot配置而已,或者可利于SpringBoot后续的扩展。

5、@ComponentScan

这是Spring3.1添加的一个注解,用来代替配置文件中的component-scan配置,开启组件扫描,即自动扫描包路径下的@Component注解进行注册bean实例到context中。

前面5个注解可以在Java技术栈的这篇文章《SpringBoot最核心的3个注解详解》中了解更多细节的。

6、@Conditional

这是Spring4.0添加的新注解,用来标识一个SpringBean或者Configuration配置文件,当满足指定的条件才开启配置。

7、@ConditionalOnBean

组合@Conditional注解,当容器中有指定的Bean才开启配置。

8、@ConditionalOnMissingBean

组合@Conditional注解,和@ConditionalOnBean注解相反,当容器中没有指定的Bean才开启配置。

9、@ConditionalOnClass

组合@Conditional注解,当容器中有指定的Class才开启配置。

10、@ConditionalOnMissingClass

组合@Conditional注解,和@ConditionalOnMissingClass注解相反,当容器中没有指定的Class才开启配置。

11、@ConditionalOnWebApplication

组合@Conditional注解,当前项目类型是WEB项目才开启配置。

当前项目有以下3种类型。

enumType{/***Anywebapplicationwillmatch.*/ANY,/***Onlyservlet-basedwebapplicationwillmatch.*/SERVLET,/***Onlyreactive-basedwebapplicationwillmatch.*/REACTIVE}

12、@ConditionalOnNotWebApplication

组合@Conditional注解,和@ConditionalOnWebApplication注解相反,当前项目类型不是WEB项目才开启配置。

13、@ConditionalOnProperty

组合@Conditional注解,当指定的属性有指定的值时才开启配置。

14、@ConditionalOnExpression

组合@Conditional注解,当SpEL表达式为true时才开启配置。

15、@ConditionalOnJava

组合@Conditional注解,当运行的JavaJVM在指定的版本范围时才开启配置。

16、@ConditionalOnResource

组合@Conditional注解,当类路径下有指定的资源才开启配置。

17、@ConditionalOnJndi

组合@Conditional注解,当指定的JNDI存在时才开启配置。

18、@ConditionalOnCloudPlatform

组合@Conditional注解,当指定的云平台激活时才开启配置。

19、@ConditionalOnSingleCandidate

组合@Conditional注解,当指定的class在容器中只有一个Bean,或者同时有多个但为首选时才开启配置。

20、@ConfigurationProperties

用来加载额外的配置(如.properties文件),可用在@Configuration注解类,或者@Bean注解方法上面。

关于这个注解的用法可以参考Java技术栈《SpringBoot读取配置的几种方式》这篇文章。

21、@EnableConfigurationProperties

一般要配合@ConfigurationProperties注解使用,用来开启对@ConfigurationProperties注解配置Bean的支持。

22、@AutoConfigureAfter

用在自动配置类上面,表示该自动配置类需要在另外指定的自动配置类配置完之后。

如Mybatis的自动配置类,需要在数据源自动配置类之后。

@AutoConfigureAfter(DataSourceAutoConfiguration.class)publicclassMybatisAutoConfiguration{

23、@AutoConfigureBefore

这个和@AutoConfigureAfter注解使用相反,表示该自动配置类需要在另外指定的自动配置类配置之前。

24、@Import

这是Spring3.0添加的新注解,用来导入一个或者多个@Configuration注解修饰的类,这在SpringBoot里面应用很多。

25、@ImportResource

这是Spring3.0添加的新注解,用来导入一个或者多个Spring配置文件,这对SpringBoot兼容老项目非常有用,因为有些配置无法通过JavaConfig的形式来配置就只能用这个注解来导入。

好了,终于总结完了,花了栈长我2个小时。。。

五Synchronized原理

加在静态方法上:锁的是类对象;

加在普通方法上:锁的是对象的实例;

加在同步代码块上:锁的是参数这个对象。

synchronized也是lockcmpxchg实现的

lock用于将当前处理机对应缓存的内容刷新到内存里(保证可见性),并使其他处理机对应的缓存失效,并使其他指令不能越过此条指令。

六抽象类和接口有什么区别

​1.他们的继承方式不同,抽象类是继承,接口是实现

​2.实现接口,必须重写接口里的所有方法,继承抽象类可以有用自己的方法

​3.抽象类里的变量比接口更灵活

七java里的八大数据类型

​intdoublecharfloatshortlongbiteboolean

八java里有哪些集合类框架

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dil6X8o0-1622820206630)(C:Userswork_outAppDataRoamingTypora ypora-user-imagesimage-20210604212822429.png)]

hashmap不能处理并发安全问题currenthashmap可以

九spring里的iocaop概念

​ioc将对象的实例化交给spring管理,通过面向接口编程的方式来实现对业务组件的动态依赖

​aop,面向切面编程(可以在方法前或者后加一些通知)

十Maven生命周期

​Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

1、clean生命周期:清理项目,包含三个phase。

1)pre-clean:执行清理前需要完成的工作

2)clean:清理上一次构建生成的文件

3)post-clean:执行清理后需要完成的工作

2、default生命周期:构建项目,重要的phase如下。

1)validate:验证工程是否正确,所有需要的资源是否可用。2)compile:编译项目的源代码。3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。4)Package:把已编译的代码打包成可发布的格式,比如jar。5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。6)verify:运行所有检查,验证包是否有效且达到质量标准。7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

3、site生命周期:建立和发布项目站点,phase如下

1)pre-site:生成项目站点之前需要完成的工作

2)site:生成项目站点文档

3)post-site:生成项目站点之后需要完成的工作

4)site-deploy:将项目站点发布到服务器

十一mybatis二级缓存原理

​一级缓存在sqlSession

​二级缓存在sqlSessionFactory

十二sql语句十三十万条语句插入查询

​1.不要使用select*对特定字段设置条件(最好是顺序字段)

​2.对连续的字段设定查询范围

​3.将每页数据设置少一点

​4.索引

十四jvm如何确定垃圾数据可达性分析算法十五垃圾回收机制标记清除算法

​最基础的收集算法是“标记-清除”(Mark-Swegp)算法,如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,它的标记过程其实在前一节讲述对象标记判定时已经介绍过了。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。它的主要不足有两个:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。标记一清除算法的执行过程。

复制算法

​他将可用内存按容量划分为大小相等的两块,每次使用只使用其中的一块,当这一块的内存用完了,就将还存活着的对象复制到另一块上面,然后再把已经用过的内存空间一次清理掉

标记整理算法

​被标记准备回收的对象向一段移动然后清理端边界以外的内存

分代收集算法

​内存分块:新生代:每次垃圾手机都有大批量的对象死去采用复制算法,复制出少量生存对象

​老年代:每次回收的对象较少,采用标记整理或者标记清除算法

HotSpot算法的实现:

​枚举根节点(GCRoots):暂停所有的java执行线程。通过OopMaP数据结构来达到检查的目的

​安全点:在安全点才执行GC,安全点一般选在方法调用,循环跳转,异常跳转等地方打入

​GC执行时所有线程都需要走到安全点上停止运转,,安全点上打上轮询和线程中断命令(自陷异常)

​安全域:扩容化的安全点用来解决阻塞或者休眠状态的线程

垃圾收集器

​serial收集器:单线程

​parnew:多线程(多用于client)

​parallelScavenge:吞吐量优先的收集器

​CMS收集器:获取最短回收停顿时间的收集器(多用于server)标记清除算法

​运作包括四个步骤

​初始标记并发标记重新标记并发清除

​G1收集器:取代CMS收集器:初始标记并发标记最终标记筛选回收划分堆为多个region

十六介绍以下restful风格

​restful风格就是以请求方式来区别请求,

​post增加

​delete删除

​put更新

​get查询

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇