(建议转存)大模型提示词工程技术路线终极梳理,这一篇干货,帮你建立完整知识体系!

十分钟画出打动评审的技术路线图!借助Claude3.7高效高质输出,附专业结构化提示词 想要把复杂的思路和步骤清晰地呈现出来,结果耗费大量时间在排版上,最痛苦的是脑子里明明有清晰的框架了,结果自己动手一画,画的啥也不是,别人还不能理清你的研究框架。实际上,在研究方案里,技术路线图用流程图来画效果最好,而要让流程图既贴合研究逻辑,又能清晰传递核心信息,选择合适的主线非常重要。2)以实验中的具体技术为主线:重点突出你要用的什么关键技术,需清晰地展示这些技术的使用顺序,以及它们之间如何配合,来支撑你的整个研究。3)按照 AI 的提示,依次输入课题的标题、摘要,以及你希望用技术路线图展示的研究内容; 阅读详情

导读

本文概述几种经典提示词工程方法,总结关键信息,分析其优势和局限,并分享笔者的一点思考。

提示词工程(Prompt Engineering)是一种无需修改大模型参数即可拓展其能力的技术。它通过特定任务的指令或上下文提示,激活相关知识,实现模型与下游任务的无缝集成。该领域在问答、常识推理等应用中已取得成功。本文概述几种经典提示词工程方法,总结关键信息,分析其优势和局限,并分享笔者的一点思考。

一、技术路线1 CoT Prompting模式

Paper: Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

1.概念:在解决复杂问题时,人类通常会逐步分解问题并进行推理,直至得出答案。这种方法模仿了人类的思考过程,通过自然语言的形式表达出来,即“chain of thought”。

2.实现方式:在给定一个问题(如数学文字问题)时,不仅提供问题本身,还提供一个或多个中间推理步骤的示例(即chain of thought),以及最终的答案。这些示例作为提示(prompt)的一部分,用来指导模型如何进行推理。

3.示例:在论文中,作者提供了几个示例来说明这种方法。例如,对于一个数学问题:“The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?” 标准的提示可能直接给出答案“11”,而chain-of-thought prompting会提供如下步骤:

  • 首先计算剩余的苹果数量:23 - 20 = 3。

  • 然后加上新购买的苹果数量:3 + 6 = 9。

  • 最终得出答案:他们现在有9个苹果。

4.训练与微调:这种方法不需要对模型进行额外的训练或微调。相反,它依赖于模型已经通过大量数据预训练获得的语言理解能力。通过在提示中包含chain of thought的示例,模型能够学习如何模仿这种推理过程。

5.效果:实验结果表明,chain-of-thought prompting能够显著提高模型在一系列推理任务上的表现,尤其是在算术、常识和符号推理任务上。例如,在GSM8K数学文字问题基准测试中,使用这种方法的PaLM 540B模型达到了最先进的准确率。

6.优势:这种方法的优势在于它允许模型将复杂问题分解为更小、更易于管理的步骤,提供了模型推理过程的透明度,有助于理解和调试模型的行为。此外,它还适用于多种类型的推理任务,不仅限于数学问题。

7.局限性:尽管chain-of-thought prompting在大型模型中表现出色,但对于小型模型或没有足够示例的情况下,可能无法有效激发其推理能力。此外,这种方法依赖于模型的规模,只有当模型达到一定的参数量级时,才能观察到显著的性能提升。

二、技术路线2 Self-Consistency + CoT 模式

Paper:Self-Consistency Improves Chain of Thought Reasoning in Language Models

在chain-of-thought prompting方法中,使用贪婪解码策略(greedy decoding)是因为在传统的解码过程中,模型在每一步都会选择概率最高的词来生成文本。这种方法简单直接,但它并不考虑其他可能的词组合,因此可能无法充分探索语言模型的生成空间,尤其是在需要复杂推理的任务中。

在论文《SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS》中,作者提到了贪婪解码的局限性,并提出了自洽性方法作为改进。以下是论文中的一个例子,说明了在chain-of-thought prompting中使用贪婪解码的情况:

假设有一个数学问题:“如果停车场原本有3辆车,又来了2辆车,现在停车场有多少辆车?”使用chain-of-thought prompting的贪婪解码策略可能会生成如下的回答:

There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.

在这个例子中,模型直接给出了正确的答案“5”,但是在实际的推理过程中,模型可能会生成多个不同的推理路径,每个路径都可能有不同的中间步骤和最终答案。贪婪解码只选择了最直接的路径,而没有考虑其他可能的推理方式。

Self-Consistency自洽性方法则不同,它会生成多个推理路径,例如:

在这个例子中,尽管第二个路径给出了错误的答案“26”,但自洽性方法可以通过比较多个路径来识别并选择正确的答案“18”,但自洽性方法可以通过比较多个路径来识别并选择正确的答案“18”。

这个例子说明了贪婪解码可能会忽略其他合理的推理路径,为了克服这些局限性,论文提出了自洽性(self-consistency)方法。自洽性方法的核心思想是,一个复杂的推理问题通常可以通过多种不同的推理路径来解决,但正确的答案应该是唯一的。通过采样多种推理路径并找到最一致的答案,可以提高模型的推理准确性。

三、自洽性方法的例子和改进点:

1.自洽性方法包含三个步骤:(1) 使用链式思考(CoT)提示来引导语言模型;(2) 通过从语言模型的解码器中采样来替换CoT提示中的“贪婪解码”,以生成多样化的推理路径;(3) 边缘化推理路径,并通过选择最终答案集中最一致的答案来进行聚合。

2.改进点:

  • 多样性:自洽性方法通过采样生成多个推理路径,增加了解码过程的多样性,从而使模型能够探索到更多的推理可能性。

  • 一致性:通过对多个路径的最终答案进行边际化(marginalization),自洽性方法能够识别出最一致的答案,这通常更可能是正确的答案。

  • 鲁棒性:即使某些路径产生了错误的推理或答案,自洽性方法仍然可以通过多数投票机制来纠正这些错误,从而提高整体的准确率。

四、技术路线3 Least-to-Most Prompting模式

Paper: Least-to-Most Prompting Enables Complex Reasoning in Large Language Models

1.背景:传统的链式思维提示(chain-of-thought prompting)在解决难度超过示例的复杂问题时表现不佳。为了克服这一挑战,论文提出了最少到最多提示策略,该策略通过将复杂问题分解为一系列更简单的子问题来解决。

2.Least-to-Most Prompting策略:该策略分为两个阶段:问题分解和子问题解决。在问题分解阶段,使用常量示例展示如何分解问题;在子问题解决阶段,提示包含三个部分:已解决子问题的示例、已回答的子问题及其生成的解决方案列表,以及下一个待解答的问题。

3.示例:Elsa有5个苹果,Anna比Elsa多2个苹果。他们一起有多少个苹果?

  • Least-to-Most Prompting提示解决过程:

  • 确定Anna有多少个苹果。

  • 确定Elsa和Anna一起有多少个苹果。

  • 输出:他们一起有12个苹果。

五、L2M与CoT的对比

Least-to-Most Prompting(L2M)和Chain-of-Thought Prompting(CoT)是两种不同的语言模型提示策略,它们都旨在通过提供示例来引导模型完成特定任务。以下是这两种模式的比较,包括它们的异同点:

相似之处:

1.基于少样本学习的提示:L2M和CoT都使用少样本学习的提示(few-shot prompts)来指导语言模型进行推理或回答问题。这些示例作为输入的一部分,帮助模型理解任务的要求。

2.灵活性:L2M和CoT都提供了一种灵活的方式来利用预训练语言模型解决各种问题,无需对模型进行特定任务的训练或微调。

不同之处:

1.示例的复杂性:

  • L2M:Least-to-Most Prompting从最简单的示例开始,逐步增加示例的复杂性。这种方法假设简单的示例可以帮助模型建立基础理解,然后通过更复杂的示例逐步引导模型进行更复杂的推理。

  • CoT:Chain-of-Thought Prompting专注于提供一系列中间推理步骤,这些步骤模拟人类解决问题时的思考过程。每个示例都展示了如何分解问题并逐步得出答案。

2.推理过程的透明度:

  • L2M:随着示例复杂性的增加,模型的推理过程可能变得更加不明显,因为示例的变化可能不总是清晰地指示出推理步骤。

  • CoT:通过明确展示中间推理步骤,CoT提供了对模型推理过程的透明度,使最终答案的生成过程更加清晰。

3.任务适用性:

  • L2M:可能更适合于模型已经具有一定理解能力的任务,通过逐步增加难度来挑战和提升模型的能力。

  • CoT:特别适用于需要多步骤逻辑推理的任务,如数学问题解答、逻辑谜题等,因为它通过示例直接展示了推理的具体步骤。

4.结果的一致性:

  • L2M:由于示例的复杂性逐渐增加,模型的输出可能会随着示例的变化而变化,这可能导致结果的一致性不如CoT。

  • CoT:通过生成多个推理路径并选择最一致的答案,CoT方法旨在提高答案的一致性和准确性。

上面3种全是Google的作品。

技术路线4 XoT 基于CoT思想的各种魔改

六、Boosting of Thoughts(BoT,2024.02)

Boosting of Thoughts(BoT): Trial-and-Error Problem Solving with Large Language Models

University of Toronto、University of Alberta

核心内容概述:

1.研究背景:LLMs在解决复杂问题时依赖于链式思考(chain-of-thought)提示,但现有方法通常需要人工注释,且难以泛化到新任务。

2.BoT方法:BoT通过迭代过程自动探索和评估大量思考树,从而获取推理经验。这些经验用于修订提示,增强推理步骤的生成,直至得出最终答案。这种方法不依赖于特定任务的人工注释,而是通过从模型生成的错误中学习来逐步改进推理步骤。

3.实验:使用GPT-4和Llama2模型在多个复杂的数学问题数据集上进行实验,包括MMLU、SVAMP、GSM8K、AQuA和MATH等。

4.结果:BoT在大多数数据集上取得了与人类注释相媲美或更高的问题解决率,尤其是在没有人类注释的情况下,其性能显著提高。

5.贡献:BoT提出了一种新的框架,它不需要特定任务的人工注释,具有很好的可扩展性,并且通过迭代过程快速收敛到解决方案。

6.结论:BoT展示了通过增强提示来引导LLMs进行有效推理的能力,即使在没有人类注释的情况下,也能在各种任务中保持高性能。

七、BoT方法的步骤:

1.初始提示:从一个简单的初始提示开始,不需要任何人工注释的例子。

2.生成思考结构:并行生成大量的思考结构(例如,树状结构),这些结构代表了可能的推理路径。

3.聚合思考链:从生成的思考结构中提取最有可能成功的思考链。

4.自我评估:使用LLM对聚合的思考链进行评估,生成反馈,包括错误分析和改进建议。

5.迭代改进:将反馈加入到提示中,作为经验来指导下一次迭代的思考结构生成。

6.收敛和解答:通过多次迭代,不断积累经验,最终得到一个准确的解决方案。

例子 24点问题:The given four numbers are: 2, 4, 5, 5

八、BoT的解决过程如下:

1.初始提示:BoT从一个简单的提示开始,告诉模型需要使用给定的四个数字和基本的算术运算(加、减、乘、除)来得到24。

2.第一次迭代:模型生成了一些初步的思考步骤,但这些步骤可能并不接近解决方案。例如,模型可能首先尝试将两个5相加得到10,然后尝试将10与4相乘得到40,这显然不是正确的方向。

3.错误分析:模型评估生成的思考链,并识别出错误或无效的步骤。在这个阶段,模型可能识别出40不是一个合理的中间结果,因为它离目标24太远。

4.第二次迭代:根据第一次迭代的错误分析,模型调整提示,尝试不同的操作和数字组合。这次,模型可能尝试使用加法和乘法的组合,例如将2和4相加得到6,然后将两个5相加得到10,最后将6和10相乘得到60。

5.进一步迭代:模型继续迭代过程,每次都会根据之前的经验和错误分析来改进思考步骤。在后续的迭代中,模型可能会尝试更多的组合,直到找到一个有效的解决方案。

6.最终解决方案:经过多次迭代,模型最终找到了正确的思考链。例如,它可能发现以下步骤:将4乘以5得到20,再将20减去2得到18,最后将18加上5得到最终的24。

初始提示词(initial prompt)是一个简单的文本描述,用于引导大型语言模型(LLM)开始解决问题。对于24点游戏问题,初始提示词可能会是这样的:

“In the game of 24, you are given four numbers, and the goal is to use basic arithmetic operations (+, -, *, /) to combine these numbers to obtain a result of 24. You can only use each number once, and parentheses can be used to change the order of operations.”

这段提示词为模型提供了游戏的基本规则,即使用加、减、乘、除四种基本算术运算,结合给定的四个数字,来得到结果24。这个初始提示词不包含具体的解题步骤或示例,而是提供了解决问题所需的上下文信息。随后,Boosting of Thoughts框架将通过迭代过程,逐步引导模型探索可能的解题路径,并在每次迭代后根据模型的自我评估来优化提示词,以更好地解决特定的24点问题。

Tree of Thoughts(ToT,2023.05)

Paper:Tree of Thoughts- Deliberate Problem Solving with Large Language Models

Princeton University + Google DeepMind

Tree of Thoughts(ToT)是文章中用到的一种用于增强大型语言模型(LLMs)在复杂问题解决中推理能力的结构。ToT将传统的序列化推理步骤转换成树状结构,这种结构允许模型在推理过程中探索多个可能的思考路径。每个节点在树中代表一个推理步骤,而分支则代表不同的推理方向或选择。

Tree of Thoughts的特点:

1.树状结构:ToT使用树状结构来表示推理过程,其中根节点代表问题的初始状态,而叶节点代表可能的解决方案或推理的最终步骤。

2.分支探索:在树的每一层,都会生成多个分支,每个分支代表了一种不同的推理路径。这些分支可以基于模型对问题的理解和可能的解决方案来生成。

3.回溯机制:ToT允许模型在树中回溯,即如果某个推理路径看起来不会导致正确的解决方案,模型可以返回到之前的节点并尝试另一条路径。

4.动态扩展:树结构在推理过程中动态扩展,模型可以根据新的信息和中间结果不断添加新的节点和分支。

5.复杂问题解决:ToT特别适合解决需要多步骤逻辑推理和多种可能解决方案的复杂问题。

在Boosting of Thoughts中的应用:

在Boosting of Thoughts框架中,ToT结构被用来生成和评估大量的推理路径。BoT通过迭代过程构建这些树状结构,每次迭代都会根据LLM生成的反馈来调整和改进提示。这样,即使是从一个简单的初始提示开始,BoT也能够通过积累经验来逐步引导模型生成更有效的推理链,最终解决复杂的问题。

例如,在解决数学问题时,BoT可能会生成多个包含不同数学操作和中间结果的ToT结构。通过评估这些结构,BoT可以识别出哪些操作序列更有可能得到正确答案,并将这些信息用于指导下一轮的推理。通过这种方式,BoT能够模拟人类解决问题时的思考过程,通过试错和自我修正来逐步接近最终解决方案。

九、Comments 1

技术路线无非是三类

  • greedy search 贪婪搜索
  • exhausted search 穷举搜索
  • beam search 约束搜索
特点/方法Greedy SearchExhausted SearchBeam Search
定义在每一步选择局部最优的选项,不考虑全局最优解。系统地搜索所有可能的选项,直到找到最优解。一种启发式搜索算法,每次扩展固定数量的最佳选项(称为“束宽”),并逐步构建解决方案。
目标快速找到局部最优解。找到全局最优解。在有限的计算资源下找到接近最优的解。
效率高,因为快速做出决策,不探索所有可能的路径。低,因为需要探索所有可能性,可能非常耗时。中等,通过限制搜索宽度来平衡效率和效果。
完备性不完备,可能会错过最优解。完备,保证找到最优解(如果存在)。可能不完备,但通常能找到好的解决方案。
适用性适用于解空间较小或问题结构简单的情况。适用于解空间较大且需要找到最优解的问题。适用于解空间较大且需要在有限时间内找到好解的问题。
例子爬山算法、最短路径算法(如Dijkstra算法)。深度优先搜索(DFS)、广度优先搜索(BFS)。A*搜索算法、蒙特卡洛树搜索(MCTS)。

技术路线5 多重自我迭代模式(AutoGPT)

  1. Amazon的作品:Auto-GPT for Online Decision Making: Benchmarks and Additional Opinions

Auto-GPT探讨自主代理在在线决策任务中的有效性和灵活性。Auto-GPT是基于大型语言模型(LLMs)的自主代理,它能够连接互联网并尝试完成各种任务。尽管Auto-GPT引起了广泛关注,但其在现实世界任务中的表现仍存在不确定性。

  1. Auto-GPT特点
  • 接收高层次的目标和指令,无需人类逐步指导。

  • 通过生成“思考”、“推理”、“计划”和“批评”来进行自我独白。

  • 能够通过简单的工具指令和几个示例整合各种工具。

  • 包含长期自我记忆和记忆检索机制。

  • 特定任务的适应应该只需要最小的努力,如提供目标定义和工具描述。

  1. 实验设置:WebShop和ALFWorld是两个用于评估语言模型在在线决策任务中性能的模拟环境,这些任务涉及响应未知的外部环境。

WebShop: WebShop是一个模拟网上购物体验的环境,它通过从亚马逊网站抓取1181436个产品信息并在一个隔离的服务器上托管这些产品来创建一个真实的动作空间。这个环境为代理提供了执行产品搜索、点击项目、返回到之前的页面以及进行购买等选项。配备了集成的搜索引擎,环境能够提供给购物代理与网络浏览器相似的实时观察。评估过程涉及判断代理是否能够根据产品描述成功购买预期的产品,成功需要产品本身、属性、选项和价格的全部匹配。

ALFWorld: ALFWorld是一个开创性的研究环境,它将ALFRED数据集的复杂、面向任务的语言理解与TextWorld的沉浸式交互小说相结合。ALFRED(Action Learning From Realistic Environments and Directives)基准测试为模型提供了一个强大的测试场地,用于学习解析并执行来自详细、交互式3D环境中的语言指令的任务。同时,TextWorld作为一个动态的学习游乐场,用于训练和评估在基于文本的游戏中的强化学习代理。ALFWorld将这两个平台交织在一起,将基于文本的游戏的语言理解和决策挑战与3D环境中的物理交互结合起来,是将自然语言指令与现实世界物理交互融合的关键一步。环境包含了超过25,000个在各种区域(如厨房、客厅和卧室)的逼真环境中生成的独特任务。这些任务需要复杂的解决问题的技巧和对语言及环境的彻底理解,为AI性能提供了一个更高的基准。

  1. 模型比较:比较了流行的LLMs,如GPT-4、GPT-3.5、Claude和Vicuna在Auto-GPT风格的决策任务中的性能。

  2. 额外意见算法(Additional Opinions algorithm):引入了额外意见算法,这是一种有效的方法,将监督/模仿学习者(supervised/imitation-based learners)纳入Auto-GPT方案。这种方法使得在不需要对基础LLMs进行微调的情况下,进行轻量级的监督学习。

  1. 实验结果:通过仔细的基线比较和消融研究,证明了额外意见算法显著提高了在线决策基准任务的性能,包括WebShop和ALFWorld。

  2. 结论:Auto-GPT不仅证明了它在实际使用中的潜力,而且在GPT-4的驱动下,超过了专门为这些任务设计的监督IL(模仿学习)模型。此外,通过引入外部专家模型的额外意见,进一步提高了Auto-GPT风格代理的决策能力,尤其是对GPT-4有益。

这篇论文展示了Auto-GPT在处理复杂在线决策任务中的潜力,并提出了一种新的方法来利用外部模型作为额外意见的提供者,这为AI模型在实际应用中的使用打开了新的可能性。

Comments 2

现在来看,2023.03的AutoGPT的套路甚至有点过时了,具体来说:

1.固定提示结构:AutoGPT依赖于预定义的提示结构,这限制了模型的灵活性和适应性。在面对新任务时,泛化能力是一定有问题的,会显著增加部署复杂性。

2.缺乏上下文理解:AutoGPT是“一步到位”的逻辑。尽管AutoGPT能够生成连贯的文本,但它在理解和维持长期上下文方面存在不足。这导致在长对话或复杂任务中,模型可能无法保持话题的一致性或忽略重要的上下文信息。

3.推理能力局限:AutoGPT主要依赖于模式匹配和关联性学习,不是真正的推理能力,仍然是走在beam search的老路上。在处理需要逻辑推理和深度理解的问题时,模型可能无法提供准确的答案。

4.数据依赖性:AutoGPT的性能在很大程度上依赖于专家提示的质量和多样性。如果专家提示存在偏差或不足,那可能就完蛋了。

本文大量使用大模型来进行梳理和总结。大模型虽然不能完整的形成这样一份有观点、有例子、有逻辑的总结性文档,有时候甚至会产出各种低信息量信息(没错就是废话),但是在长文本摘要信息提取上,大模型确实已经体现出惊人的能力。以往整理这样一篇文档可能需要有经验的同学一整天的时间,但本文的整理只用了2小时。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置) 本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。 阅读详情

相关推荐

Comfy UI实战:如何用Checkpoint和Lora打造超写实人像(附完整工作流)

本文详细介绍了如何利用Comfy UI结合Checkpoint基础模型和Lora微调模型,打造超写实人像生成系统。从核心模型选择、工作流架构设计到提示词工程和参数优化,提供了一套完整的实战指南,帮助创作者提升AI绘画的专业水准和效率。

weixin_29032489的博客 461

5种大模型提示词工程技术路线,看完这篇你就是提示词工程大师!

如果你真的想学习大模型,请不要去网上找那些零零碎碎的教程,真的很难学懂!你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!

2401_85375186的博客 1140

数字摄影与摄像中的图像信号处理器(ISP):流程与经典算法详解

图像信号处理器(Image Signal Processor, ISP)是现代数字成像系统(如智能手机、数码相机、网络摄像头等)中的核心组件,扮演着将图像传感器(如CMOS或CCD)捕获的原始光电信号转换为高质量、可供观看或进一步处理的数字图像的关键角色。在数字摄影和摄像的整个链路中,光线首先通过镜头(Lens)聚焦到图像传感器上,传感器将光信号转换为模拟电信号,随后经过模数转换(A/D转换)变为原始的数字图像信号。

qq_44682523的博客 3724

干货精讲!总结2021年最全180道Android岗面试题,实战解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oaYgsP6e-1610524577193)(//upload-images.jianshu.io/upload_images/2423320-37037f9d86a75ce0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)] 简介 Jetpack是一套库、工具和指南,可以帮助开发者更轻松地编写优质应用。这些组件可以帮助开发者遵循最佳做法、让开发

191

大疆C板使用C610电调驱动M2006电机(hal库)

大疆C板使用C610电调驱动M2006电机,以及遇到代码没问题,但是电机死活不转的处理

qq_46210601的博客 6020

轴承寿命预测实战:手把手教你用IEEE PHM2012数据集训练模型(附Python代码)

本文详细介绍了如何利用IEEE PHM2012数据集构建轴承剩余寿命预测模型,从数据预处理、特征工程到LSTM模型训练与部署,提供了完整的Python代码实现。通过实战案例,帮助读者掌握预测性维护中的关键技术,提升工业设备的运行安全与效率。

weixin_29186249的博客 311

史上最全最精简的学习路线图!绝对干货分享

前言 看日期,今天都是4月了,这春招也差不多进入尾声了。 近期任有不少朋友都在找工作,很多人开始抱怨,工作可真难找啊!身边不少朋友问我咋搞呀,秋招都要结束了,工作还没着落呢…额…这个…今年是有点难啊。说实话,面试只是对个人技术及应变能力的一次考验。只有解决了一个问题,你才有机会遇见下一个问题。 这不,今天我总结了饿了么4面(Java岗)面经,问题如下,都是真真的经历,准备面试找工作的朋友可自行检测一下。 蚂蚁金服关于spring部分面试问题: Spring bean的生命周期能不能结合源码回答一下这个问

m0_56675448的博客 246

嵌入式STM32F407CET6移植OpenHarmony系统方法

文件末尾添加:export PATH=~/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH。编译完成文件输出在LiteOs源码目录下out/STM32F407_ATK_Explorer文件夹中。②点击connect to the target,下方会自动显示识别出来的芯片型号以及flash大小。⑤点击program verify并点击start,等待烧写并校验完成,你就能看到程序正在运行了。,在选择刚才我们说的Huawei_LiteOS.hex文件。

嵌入式技术开发 546

全栈系统化的学习路线,学习路线+知识点梳理

一、码场心得 你是个能吃苦的人吗? 从前的能吃苦大多指的体力劳动的苦,但现在的能吃苦已经包括太多维度,包括:读书学习&寂寞的苦、深度思考&脑力的苦、自律习惯&修行的苦、自控能力&放弃的苦、低头做人&尊严的苦。 虽然这些苦摆在眼前,但大多数人还是喜欢吃简单的苦。熬夜加班、日复一日、重复昨天、CRUD,最后身体发胖、体质下降、能力不足、自抱自泣!所以有些苦能不吃就不吃,要吃就吃那些有成长价值的苦。 今天你坚持了吗? 如果一件小事能坚持5年以上,那你一定是很了不起的人。是

m0_57285325的博客 181

3D 结构光相机工作原理全解 | 从编码投射到三维重建,原理 + 代码 + 工业实战一站式掌握

本文从3D结构光相机的整体架构出发,层层拆解了编码投射、相位计算、相位解包裹、三维重建的核心原理,补充了工业实战所需的公式推导、代码实现、参数调优、设备选型和案例落地,核心总结如下:相位是3D结构光成像的“灵魂”,其精度、稳定性直接决定3D重建的效果,包裹相位与绝对相位的区分的是工业实战的基础;编码投射的核心是“正弦条纹+格雷码条纹”组合,正弦条纹负责高精度相位提取,格雷码条纹辅助解包裹,适配工业场景的精度与稳定性需求;

getusushu的博客 414

基于 Simulink 的 PV 光伏阵列功率发电系统仿真 Matlab

其中直流侧电压需要与光伏电池组件匹配,交流侧电压则需要与配电系统匹配,开关频率一般在几千赫兹左右,需要保证在一定范围内。根据实际需求,我们还可以通过增加负载,以及调节光照强度等方式,模拟不同的情况下系统的响应和性能表现。经过设置参数和各部分之间的传递和控制后,我们可以开始进行模型仿真。在仿真前,我们需要确定仿真时间和步长,并对整体模型进行编译。在建立完毕整体模型框架后,我们需要为每个组件设置参数,并进行传递和控制。首先,我们需要建立一个整体的模型框架,包括各个组件之间的关系和控制器的作用。

学习使你进步。 1129

泪目!你不知道这份超详细JVM内存结构?Java架构师成长路线

前几天逛知乎的时候看到一个话题:MySQL没前途了吗? 最近几年,似乎总有一种声音在说,MySQL可能不太行了,原因无非是这么几条,MySQL功能不如PG强大,原生没有分库分表不如TIDB,OLAP性能差。 可事实真的如此吗? 首先,MySQL的官网是这么介绍自己的:MySQL是世界上最受欢迎的数据库! 其次,我们直接看下数据库引擎对数据库管理系统的排名按其受欢迎程度排列,看看MySQL到底行不行! 从上图可以明显的看出,MySQL紧随它“老爹”Oracle排名第二,而且MySQL 8.0无论在功能还是性

m0_56130999的博客 121

Android 12 大屏时底下显示任务栏以及虚拟按键靠右问题

Android 12 点大屏时,底下导航栏变成显示任务栏,虚拟按键靠右的分析以及修改

Android系统开发笔记 4686

全网最全原理讲解!全栈系统化的学习路线,学习路线+知识点梳理

一、码场心得 你是个能吃苦的人吗? 从前的能吃苦大多指的体力劳动的苦,但现在的能吃苦已经包括太多维度,包括:读书学习&寂寞的苦、深度思考&脑力的苦、自律习惯&修行的苦、自控能力&放弃的苦、低头做人&尊严的苦。 虽然这些苦摆在眼前,但大多数人还是喜欢吃简单的苦。熬夜加班、日复一日、重复昨天、CRUD,最后身体发胖、体质下降、能力不足、自抱自泣!所以有些苦能不吃就不吃,要吃就吃那些有成长价值的苦。 今天你坚持了吗? 如果一件小事能坚持5年以上,那你一定是很了不起的人。是

m0_56662269的博客 224

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蚂蚁金服Java架构面试题:史上最全最精简的学习路线图!成功跳槽阿里!

前言 今天中午收到我司安全部发了一封邮件:Jackson存在安全漏洞。查了一下,这件事并不算很新鲜了(已经过了5天的样子),本文来聊聊吧。 说起来还蛮戏剧化:阿里云向Jackson官方提交了一个Jackson序列化安全漏洞。众所周知,在国内关于JSON库使用有两大主要阵营:国际著名的Jackson库和国内阿里巴巴出品的Fastjson。 同样的功能定位,不存在竞争想想也觉得不可能嘛。所以当我看到这个漏洞竟是阿里云上报的,就觉得这关系还蛮微妙呢,默默的腹黑了3秒钟,哈哈。 附:FasterXML/jackso

m0_56824583的博客 798

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

太爽了!2021Java面试真题精选干货整理

前言 该文档在Github上收获40K+star的Java面试神技(这赞数,质量多高就不用我多说了吧)非常全面,包涵Java基础、Java集合、JavaWeb、Java异常、OOP、IO与NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring全家桶、计算机网络、分布式架构、Redis、Linux、git、前端、算法与数据结构、MyBatis、RocketMQ、Netty、Dubbo。内容非常丰富,已经帮很多人拿下互联网一线公司的offer。 每个知识点都有左侧导航书签页,看的时候十分

m0_57700125的博客 787

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

作为一名程序员我不忘初心,学习路线+知识点梳理

背景介绍 金三银四,又到了一年一度最火热的跳槽/招聘季节.相信很多小伙伴已经开始投简历,或者已经找到工作了 是的,我就是找到工作的那部分人 很多Android小伙伴最近找不到工作,特别急,其实我在找工作的时候也有过比较着急的情况,所以很能理解大家的心情.一直说要给大家分享一下我的面试经验,由于最近忙着和上一家公司say goodbye+找新工作+搬家+找房子+入职一系列事件,所以等到现在才跟大家分享. 本文的阅读对象是像我这样技术水平一般,却迟迟找不到工作的小伙伴们. 先自我介绍一下,本人13年毕业,一直在

fanzhang_vip0723的博客 93

Coze(扣子)入门:手把手教你创建第一个智能体应用

500字内描述核心功能。

HUANGXIN9898的博客 8831

字节跳动最新开源!撸了35天,奉上最强干货“全家桶”!面试心得体会

引言 技术好就一定能写出优质的代码吗?不能,对于做开发的人来说,学到的技术知识是理论性的,只有把知识代入到真实的实战案例中才能快速将理论转变为技能。 一直在网上看到过很多关于类似的资料,要么就是版本比较老,要么就是讲的太干,没有阅读下去的兴趣,以至于在这方面的学习止步不前。 今天,我跟大家要分享的这份阿里《互联网实战案例》共有22大实战案例,每一章节都有对应的完整代码,同时在学习的过程中需要了解并运行代码,再也不用担心学不会了。 汇总技术架构路线,梳理技术盲区(条理清晰,一清二楚) 在技术汇总中,可以看到有

m0_56662340的博客 255

不明白JVM虚拟机还怎么面试?干货满满

前言 难道程序员的职业生命线是青春饭?答案是的。 35岁考虑转行,然后35岁又成了一个新人,而外国可以做到60岁,啥也不说了,可能是觉得中年大叔油腻,不及小鲜肉便宜,唉,可叹市场更新换代太快,快到我们来不及改变,所以,只有让随时保鲜才最重要。 我整理的spring学习笔记: 像spring这种知识点我们不能盲目的学习,首先我们得有一套学习路线,我总结了一套spring的学习思维导图,今天通过我整理的Spring学习路线.xmind给大家分析spring需要掌握的一些核心知识点。 spring的特点:

m0_56712948的博客 100

最全Android面试知识点梳理,满满干货指导_安卓面试知识点整理(1)

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后如何才能让我们在面试中对答如流呢?答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

jiameih的博客 656

java接口的定义与实现,学习路线+知识点梳理

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作心目中最好的Java项目,没有之一。 **可以毫不夸张的说,Spring重新定义了Java,**所以这是重点也是难点,工作中必须会,面试时肯定考,不过很多人在面试的时候在简历上写着熟悉Spring,但也不过只是会用SSM,在这个基础上做crud罢了,对于Spring全家桶里面其他技术点真的有所掌握吗? Spring系

m0_57081562的博客 117

我是如何拿到阿里、网易双offer的?满满干货指导

前言 看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的。为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己。由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对Android学习过程的

m0_56222134的博客 118

重磅来袭!原生Android开发的路该怎么走?成功入职腾讯

作为一名即将求职的程序员,面对一个可能跟近些年非常不同的 2020年,你的就业机会和风口会出现在哪里?在这种新环境下,工作应该选择大厂还是小公司?已有几年工作经验的老兵,又应该如何保持和提升自身竞争力,转被动为主动? 就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Android程序员的技术功底。 最近搜集了一些基础问题以及阿里、腾讯2020年一些精选的面试题,最后还把把技术点梳理成一份大而全的“Android高级工程师”面试xmind(实际上比预期多花了

m0_57205294的博客 90

干货面试教程!2021金三银四Java大厂面试题来袭!威力加强版

简介 基于SpringCloud(Hoxton.SR1) + SpringBoot(2.2.4.RELEASE) 的 SaaS型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss防跨站攻击、自动代码生成、多存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发, 支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,非常适合学习使用。核心技术采用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Toke

m0_57286518的博客 98

java学习路线

开篇闲扯 打工人,打工魂,我们生而人上人。当“资本主义”逐渐禁锢我们人(大)上(韭)人(菜)肉体的时候,那一刻我才明白那个日不落帝国·资本主义收割机·瑞民族之光幸·瑞幸咖啡是多么的了不起,尽管我不懂咖啡,但还是要说一声谢谢!说到咖啡,喝完就想上厕所,对写bug的我来说太不友好了,毕竟我不(很)喜欢带薪上厕所。 回归本次的不正经Java文章。上篇文章末尾处已经提到了,主要会把我对Synchronized的理解进行一次全方位的梳理,如果能帮助到大家吊打面试官,万分荣幸。 正文 最近整理了一份 Netty 相关

m0_57066056的博客 138
上一篇: 收藏这篇就够了!提示工程从入门到精通全攻略,一篇讲透本质、技术与最佳实践!
下一篇: 【收藏级】RAG技术从入门到精通,跟着字节跳动学实践,这一篇就够了!
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值