【论文速读】用于代码生成的结构化思维链提示

【论文速读】用于代码生成的结构化思维链提示

【论文速读】用于代码生成的结构化思维链提示

2023年09月16日 23:09 上海

Structured Chain-of-Thought Prompting for Code Generation

论文地址:https://arxiv.org/pdf/2305.06599.pdf

本文讨论的是一种名为Structured Chain-of-Thought (SCoT) prompting的新型提示技术,用于代码生成。与标准的CoT提示不同,SCoT提示明确引入了程序结构,并要求LLMs生成带有程序结构的中间推理步骤。作者将CoT提示和SCoT提示进行了比较,并发现SCoT提示在三个基准测试中明显优于CoT提示。文章还介绍了SCoT提示在两个LLMs(ChatGPT和Codex)上的应用,并在三个基准测试(HumanEval、MBPP和MBCPP)上进行了评估。评估结果显示,SCoT提示在Pass@1上的性能比CoT提示提高了多达13.79%。人工评估结果表明,人类开发者更喜欢SCoT提示生成的程序。SCoT提示对示例具有鲁棒性,并取得了显著的改进。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

ABSTRACT

大型语言模型在代码生成方面表现出色,但现有的提示技术在代码生成方面准确率较低。Chain-of-Thought提示技术要求先生成中间的自然语言推理步骤,再输出代码。

本文提出了结构化代码树(SCoTs)和一种新的代码生成提示技术SCoT prompting。SCoT prompting明确约束了LLMs从源代码的角度思考如何解决需求,进一步提高了LLMs在代码生成方面的性能。在三个基准测试中,SCoT prompting优于CoT prompting,人类开发者也更喜欢SCoT prompting生成的程序。SCoT prompting对示例具有鲁棒性,并取得了显著的改进。

ACM Reference Format:

本文介绍了一种基于结构化思维链的代码生成方法,通过提示程序员思考过程中的关键点,提高代码生成的效率和质量。该方法在ACM会议上发表,共12页。

1 INTRODUCTION

代码生成旨在自动生成满足自然语言需求的程序。

将结果初始化为-999999。

遍历列表的列表。

将一个和初始化为0。

遍历列表。

添加元素到总和中。

更新结果为总和和结果中的最大值。

将结果除以K。

要点:生成文本摘要,使用超级精简的话,中文提炼。

最近,语言模型在代码生成方面表现出色。LLMs在推理过程中接受一个包含多个示例和一个新需求的提示作为输入,并根据示例生成新的程序。LLMs的性能严重依赖于提示。如何为代码生成创建有效的提示仍然是一个未解决的问题。

CoT Prompting是最先进的提示技术,通过生成CoT来指导代码生成。它在代码生成方面有轻微的改进,但改进幅度较小。

本文提出了一种用于代码生成的结构化CoT。我们的动机是代码生成旨在将自然语言需求转换为源代码。与自然语言不同,源代码包含丰富的结构信息。例如,源代码包含三种基本结构。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

本文提出了一种结构化的代码生成方法,利用LLMs的推理能力生成程序结构,以解决标准CoT在代码生成中精度低的问题。通过构建一系列中间推理步骤,使得代码生成更加连贯和可读。

SCoT是一种基于三种基本结构的代码生成工具,包括顺序结构、分支结构和循环结构。SCoT使用循环结构来清晰地描述迭代,而CoT中两个迭代的作用域不明确。此外,每个程序都包含必需的输入输出结构,包括输入输出参数和它们的类型。生成输入输出结构有助于LLMs分析需求并确定代码的入口和出口,从而有利于后续的解决过程。

SCoT prompting是一种新的提示技术,通过引入程序结构来帮助LLMs生成和实现代码,从而提高准确性。

本文研究了SCoT提示对两种常见的LLMs(ChatGPT和Codex)在三个基准测试中的影响,并使用单元测试来评估生成程序的正确性。实验结果表明,SCoT提示显著提高了LLMs在代码生成方面的准确性,并且人类开发者更喜欢使用SCoT提示生成的程序。SCoT提示对不同的LLMs和编程语言都有效,并且不依赖于特定的示例或写作风格。

本文的贡献总结如下:

本文提出了一种基于程序结构的中间推理步骤构建方法——SCoT,并提出了一种名为SCoT Prompting的代码生成提示技术。实验结果表明,SCoT Prompting显著优于SOTA基线。同时,本文还讨论了不同程序结构的贡献和SCoT Prompting的鲁棒性。

我们开源了我们的复制包,包括数据集和SCoT提示的源代码,以便其他研究人员和实践者重复我们的工作并验证他们的研究。

2 METHODOLOGY

本节介绍了一种名为SCoT的结构化思维链条,它由程序结构构建的多个中间推理步骤组成。然后,提出了一种名为SCoT提示的代码生成新技术。SCoT提示首先要求LLMs生成一个SCoT,然后输出最终的代码。在子节中,首先描述了SCoT的设计,然后展示了SCoT提示的详细信息。

2.1 Structured Chain-of-Thought

Chain-of-Thought是一种自然语言推理方法,用于描述解决问题的步骤。它最初用于自然语言生成,但在代码生成方面的应用效果有限。在HumanEval基准测试中,添加Chain-of-Thought只能使ChatGPT的Pass@1得分提高0.82分。

本文提出了一种结构化的代码生成方法,与自然语言生成不同,代码生成的目标是高度结构化的代码。源代码通过特定的结构来解决问题,包括序列结构、分支结构和循环结构。因此,生成代码的中间推理步骤也应该是结构化的。

SCoT相比CoT,明确引入了程序结构,包括序列结构、分支结构和循环结构。现有研究证明,任何简单或复杂的程序都可以由这三种基本结构组成。

•序列结构:中间步骤按顺序排列,所有步骤处于同一级别。•分支结构:以条件开始,并根据条件的不同结果放置不同的中间步骤。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

本文介绍了程序中的分支结构和循环结构,分支结构包括if、if...else和if...elif...else三种格式,循环结构包括for循环和while循环两种基本格式。

允许不同程序结构之间的嵌套,使LLMs能够为一些复杂的要求设计更复杂的SCoT。SCoT灵活地使用各种程序结构来构建解决过程。

除了三种基本结构外,我们还添加了输入输出结构,其中包含输入输出参数及其类型。这是因为程序需要一个输入输出结构来指示入口和出口。生成输入输出结构有助于澄清需求并生成解决过程。

2.2 SCoT prompting

基于SCoT,我们提出了一种新的代码生成提示技术,称为SCoT提示。它首先要求LLMs生成一个SCoT,然后输出最终的代码。

为了实现SCoT提示,我们设计了两个特殊的提示。第一个提示用于生成SCoT,示例如图3所示。提示以几个示例(即<需求,SCoTs>)开头。这些示例涵盖了三种基本的程序结构和输入输出结构。接下来,斜体句子是给LLMs的指令,指示LLMs的目标和相关约束。最后,提示以一个新的需求结束,并输入LLMs。我们希望LLMs能够从示例中学习,并为新的需求生成一个SCoT。

生成SCoT后,我们为生成最终代码设计了第二个提示。示例提示如图4所示。

使用SCoT作为软模板,要求LLMs实现一个程序,根据给定的需求和代码生成摘要。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

LLMs通过学习示例,根据要求和SCoT生成新的程序。

本文介绍了SCoT提示的两种方法来减轻错误积累的影响。第一种方法是让LLMs检查SCoT并修复可能的噪声。第二种方法是SCoT提示使用两步生成管道,提供了一个调试的机会。人类开发人员可以先检查生成的SCoT并修复可能的错误,然后使用SCoT生成代码。

2.3 Implementation Details

SCoT是一种不依赖于特定LLM的代码生成提示技术。本文以ChatGPT为默认LLM,选择几个真实基准测试数据中的<需求,代码>对作为示例种子,手动编写SCoT并获得<需求,SCoT,代码>三元组,用于生成提示。未来,用户可以灵活地将该方法应用于更强大的LLM中。

3 STUDY DESIGN

本研究旨在评估SCoT提示的有效性,通过进行大规模研究回答四个研究问题。本节介绍了我们的研究细节,包括数据集、评估指标、比较基线和实现细节。

3.1 Research Questions

本研究旨在回答以下研究问题:

本研究旨在验证SCoT提示在代码生成中的准确性是否高于现有的提示技术。研究采用了三种现有的提示技术和SCoT提示技术,并应用于两个LLM模型。通过使用单元测试来衡量不同方法生成的程序的正确性,并报告Pass@k指标。

本研究雇佣了10名开发人员对SCoTprompting和基准生成的程序进行手动评估。评估包括正确性、代码质量和可维护性三个方面。

本研究旨在评估SCoT提示对示例的鲁棒性。通过使用不同的示例种子和写作风格,测量SCoT提示的性能。

本研究旨在分析SCoT提示中不同程序结构的贡献。研究选择LLM作为基础模型,分别移除不同的程序结构并报告性能波动。SCoT提示引入了三种基本结构和输入输出结构。

3.2 Benchmarks

本文介绍了三个代表性的代码生成基准测试,包括Python中的HumanEval和MBPP,以及C++中的MBCPP。这些测试的详细信息在文中有描述。

这段文字介绍了三个编程基准测试:HumanEval、MBPP和MBCPP。它们分别包含手写编程问题、简单数字操作和基本库使用的编程问题,以及对函数正确性的测试。其中,MBCPP是通过众包收集的C++函数级别代码生成基准测试。

本文介绍了三个数据集的统计信息,随机从训练数据中选取样本作为提示,测试数据上评估不同方法的性能。在HumanEval中使用MBPP的示例。

3.3 Evaluation Metrics

本研究使用Pass@𝑘作为评估指标,𝑘的取值为1、3和5。Pass@𝑘表示在给定需求下,生成的程序中有多少能通过所有测试用例。我们认为开发者在实际场景中主要使用前5个输出。

之前的研究发现标准的Pass@k存在高方差,提出了无偏的Pass@k。本文遵循之前的研究。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

本文介绍了如何使用无偏的Pass@k方法来评估工作和就业需求。具体来说,我们根据需求生成n个程序(n≥k,本文中n=20,k∈[1, 3, 5]),统计满足需求的数量c,并计算无偏的Pass@k值。

之前的代码生成研究使用了基于文本相似度的度量标准,但这些标准最初是为自然语言生成设计的,对于程序的正确性评估效果较差。因此,在我们的实验中我们不使用这些度量标准。

3.4 Comparison Baselines

本文提出了一种新的代码生成提示技术,并选择了三种主流提示技术作为基准进行评估。

LLMs可以通过零样本提示和少样本提示来生成程序。Chain-of-Thought提示是少样本提示的一种变体,它包含了自然语言推理步骤。

为了公平比较,所有基线和SCoT提示都有相同数量的示例和示例种子。

选择基线的标准有三个:(1) 直接将SCoT提示技术与现有的代码生成提示技术进行比较;(2) 我们的方法是增强LLMs的,可以灵活地应用于不同的LLMs;(3) 我们不考虑一些代码生成排名技术,因为它们与我们的方法是互补的。

3.5 Base Large Language Models

现有的源代码LLM可以分为两类。

本文介绍了两种类型的自然语言处理模型:语言模型和指令调整模型,并选择了代表性的基础模型。

本文介绍了两种语言模型:标准语言模型和指令调整模型。标准语言模型用于代码自动完成,而指令调整模型则是在标准语言模型基础上进行指令训练,用于执行任务。本文选用了Codex和ChatGPT作为基础模型,并使用OpenAI的API进行访问。

我们的方法不依赖于特定的LLMs,可以轻松应用于不同的LLMs。未来,我们将探索在更强大的LLMs上使用它的可能性。

3.6 Sampling Settings

本研究使用核心采样方法从LLMs中解码程序,以确保实验的公平性。所有基准模型和SCoT提示生成器每个需求生成20个程序。采样设置的详细信息如下。

本文介绍了温度、top-p值和生成长度等基础概念,并说明了CoT提示需要更长的生成长度,因为它需要生成中间推理步骤和代码。

SCoT提示:从LLMs中每个要求中抽取20个SCoTs,温度为0.8,top-p为0.95,最大生成长度为300个标记。然后,对于每个SCoT,使用LLMs生成相应的程序,温度为0,最大生成长度为300个标记。最终,每个要求得到20个程序。总生成长度与CoT提示相同。

4 RESULTS AND ANALYSIS

4.1 RQ1: How does SCoT prompting perform interms of accuracy compared to baselines?

本研究使用SCoT提示和基线对三个基准进行测试,并使用单元测试来衡量生成程序的正确性。

本文介绍了在两个LLMs上应用基线和SCoT提示的设置,并使用Pass@k方法在三个代码生成基准测试中测量不同方法的性能。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

表2展示了不同方法的Pass@k(k∈[1,3,5])结果。红色数字表示SCoT提示相对于SOTA基线-CoT提示的相对改进。

SCoT prompting在代码生成任务中取得了最好的结果,比其他基准模型更能生成正确的程序。与SOTA基准模型CoT prompting相比,SCoT prompting在三个基准测试中的Pass@1指标上分别提升了13.79%、12.31%和6.63%。SCoT prompting在不同的LLMs和编程语言中都表现出了有效性,并且能够解锁LLMs在代码生成中的推理能力。SCoT prompting通过引入程序结构来生成中间推理步骤,进一步提升了LLMs的推理能力。

4.2 RQ2: Do developers prefer programsgenerated by SCoT prompting?

本研究聘请10名开发人员对SCoT生成的程序进行手动审核,旨在帮助开发人员编写程序。代码生成的最终目标是辅助开发人员编写程序。

为了保证评估的公正性,我们采用了先前研究中人类评估的设置。我们仔细检查了评估设置,并认为我们的设置是可靠的。具体来说,我们手动评估生成的程序在以下方面:...

评估程序的要点包括正确性和代码质量。正确性根据是否满足要求进行评分,代码质量则根据是否存在代码异味进行评分。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

该评分标准主要考虑了代码的可读性、性能和可维护性。其中,可读性包括变量命名的语义和代码的重复性;性能包括代码的效率和资源的释放;可维护性包括代码的规范性和可读性。评分标准分为0-2分,分别对应不好、一般和好。

本文介绍了SCoT程序生成模型的评估方法,包括评估指标、评估程序和评估者。通过示例和讨论,将每个评估指标的得分设置为0到2之间的整数。最终,邀请10名开发人员对800个生成的程序进行匿名评估,每组由两名评估者评估,最终得分为两名评估者的平均分。评估者可以在评估过程中搜索互联网。

人类评估结果表明,SCoT提示相对于SOTA基线-CoT提示有显著改进,所有p值都远小于0.05。详见表3。

SCoT提示在所有基线中在三个方面中获得最高分。具体而言,SCoT提示在错误性方面超过了SOTA基线-CoT提示15.27%,在代码质量方面超过了10.66%,在可维护性方面超过了15.90%。

SCoT是一种新的程序结构约束方法,可以帮助LLMs生成更准确、更规范的代码,减少代码异味。SCoT通过三种基本结构来探索多样化的解决方案,提高了代码的正确性。

图5展示了由SCoT提示和few-shot提示生成的两个程序。两个程序都通过了单元测试。但是few-shot提示生成的程序中包含了一个非常复杂的语句。开发人员需要花费大量的精力来理解和维护这个程序。相比之下,SCoT提示生成的程序具有良好的可读性,并且SCoT清楚地解释了代码的行为。开发人员可以将SCoT作为程序的注释,用于未来的维护。

4.3 RQ3: Is SCoT prompting robust to examples?

本研究探讨了SCoT提示对于不同样例的鲁棒性。由于SCoT提示需要手动编写样例,因此不同的样例会影响其性能表现。本研究旨在探究SCoT提示对于样例的鲁棒性。

本研究旨在评估SCoT提示对于种子选择和写作风格的鲁棒性。我们手动编写了一些SCoT示例,用于种子选择和提示。

该研究旨在验证SCoT提示不依赖于特定的种子和写作风格。通过选择不同的种子和聘请不同的注释者来进行实验,以评估SCoT提示的性能。

我们使用ChatGPT作为基准模型,在HumanEval中评估CoT提示的鲁棒性。

结果显示在表5和表6中。

SCoT提示在不同的示例种子或注释者下表现出强大的鲁棒性,远优于CoT提示。这证实了SCoT提示不依赖于特定的种子或写作风格,并显示了SCoT的改进。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

程序结构中的提示来自于整体结构,而非具体示例细节。

SCoT提示在不同设置下表现略有差异,但仍然优于CoT提示。这是预期的,因为提示技术使用示例。

4.4 RQ4: What are the contributions of differentprogram structures in SCoT prompting?

本节中提到,SCoT提示引入了基本结构(即序列、分支和循环)和输入输出结构。这个研究问题旨在分析不同程序结构的贡献。

本文研究了ChatGPT模型的基本结构和输入输出结构对模型性能的影响,进行了削减实验。当削减基本结构时,使用CoT模型作为中间步骤;当削减输入输出结构时,SCoT模型只包含基本结构的求解过程。

本文结果见表4,其中“w/o”表示无。

设计可行的解决过程需要三种基本结构。在表格4中,去除基本结构后。

SCoT提示的性能明显下降。LLMs受益于使用基本结构来清晰地编写解决过程。SCoT提示使用三种基本结构来描述解决过程,SCoT清晰且类似于代码,有利于以下代码实现。

IO结构有助于理解需求,删除IO结构后,SCoT提示的性能略有下降。分析失败的案例后发现,IO结构有助于理解需求。添加IO结构后,LLMs首先对输入输出格式进行推理,并正确返回布尔值。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

5 DISCUSSION

5.1 SCoT vs. Pseudocode

SCoT与伪代码相似,但SCoT更抽象,使用自然语言概括操作。26%的SCoT与伪代码非常相似,有助于使用和维护;74%的SCoT与伪代码不同,更抽象。

SCoT比伪代码更好,因为它将代码生成分解为两个步骤,先探索多样化的解决方案,然后再以标准化的方式实现程序。我们设计了SCoT的变体来验证这一点。

本文介绍了一种名为SCoT Prompting的新型文本生成模型,它比SCoT-P Prompting更加准确。作者将SCoT Prompting和SCoT-P Prompting应用于ChatGPT,并对其准确性进行了测试。结果表明,SCoT Prompting在三个基准测试中表现优异,证明了其优越性。

5.2 SCoT prompting vs. Rank Techniques

最近的研究提出了一种使用排名技术来提高LLMs在代码生成上的性能的方法。这些研究首先从LLMs中采样许多程序,然后使用测试用例或神经网络对采样的程序进行重新排序。其中一种流行的排名技术是CodeT,它通过大规模采样并在自动生成的测试用例上执行采样的程序,根据执行结果对程序进行重新排序。本文不直接将我们的方法与排名技术进行比较,原因有两个。

本文介绍了SCoT提示和排名技术的不同重点和互补性,旨在设计一种新的提示技术并提高LLMs在代码生成中的准确性。实际应用中,用户可以使用SCoT提示生成多个程序,然后使用排名技术选择最终输出。

本文介绍了一项实验,验证了SCoT提示和排名技术的互补性。通过逐步引入CodeT和SCoT提示,以ChatGPT为基础模型,在MBPP上进行了实验。结果显示,SCoT提示和排名技术的结合可以提高文本摘要生成的效果。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

ChatGPT通过添加CodeT和SCoT提示不断提高性能。

排名技术需要在测试用例上执行程序并使用执行结果重新排名程序,但这种方法有限制,无法应用于未完成的项目。SCoT提示方法不使用执行结果,适用于更广泛的场景,因此与排名技术不可直接比较。

5.3 Threats to Validity

我们工作的有效性面临三个主要威胁。

为了减少实验结果的泛化威胁,研究者们精选了三个代表性的代码生成基准测试,并选择了广泛使用的评估指标Pass@k。同时,他们选择了最先进的提示技术作为比较基线,并在第四节进行了全面比较。SCoT提示和基线具有相同的示例种子和最大生成长度。

本文研究了SCoT提示对于代码生成的影响,与CoT提示相比,SCoT提示采用了两步生成代码的方式。但是,实验结果表明,SCoT提示的改进并不是由于两步生成代码的方式,而是由于程序结构的改进。同时,本文还进行了消融实验,结果表明,去除提示结构后,SCoT提示的性能显著下降。因此,SCoT提示的改进主要来自于程序结构的改进。

该研究探讨了语言模型的提示技术,存在数据泄漏的可能性,但不影响实验公正性。研究选择了特定的语言模型作为基础模型,并对其应用不同的提示技术,因此报告的相对改进是可信的。未来将添加最新的基准数据以缓解此威胁。

6 RELATED WORK

大型语言模型(LLMs)用于源代码,是预先训练的神经网络,包含自然语言文本和源代码。现在,LLMs可以分为两类:标准语言模型和指令调整模型。

标准语言模型是在大规模语料库上进行预训练的,其目标是预测下一个标记。它们主要用于完成给定上下文的补全,如代码补全。OpenAI在GPT系列在自然语言处理领域取得成功后,对代码进行微调,产生了闭源的Codex。随后出现了许多开源的复制尝试,如CodeParrot、CodeGen、CodeGeeX、InCoder、StarCoder和CodeT5+。

这段文字介绍了指令调整模型,即通过训练模型理解人类用户的指令并执行任务。ChatGPT、Alpaca、Code Alpaca、WizardCoder和InstructCodeT5+都是基于指令调整的模型。它们在自然语言和编程任务方面表现出色。

Prompting Techniques是一种流行的方法,利用LLMs通过输入特殊提示来生成代码,因为参数太多,直接微调LLMs很困难。

研究者提出了零样本提示和少样本提示。零样本提示将任务说明和需求连接在一起,形成提示。少样本提示在零样本提示的基础上,添加了几个需求和代码对,以便LLMs可以从给定的示例中学习代码生成。

CoT prompting是一种新的提示技术,可以帮助LLMs生成自然语言推理步骤并输出最终代码。它在自然语言生成方面取得了SOTA结果,但在代码生成方面的改进较小。该技术已经引起了许多后续研究。

本文提出了一种新的提示技术,名为结构化思维链(SCoT)提示。与标准的CoT提示不同,SCoT提示明确引入了程序结构,并要求LLMs生成带有程序结构的中间推理步骤。我们在第4节中比较了CoT提示和SCoT提示。结果显示,SCoT提示在三个基准测试中明显优于CoT提示。

7 CONCLUSION AND FUTURE WORK

本文介绍了生成代码的最新方法——使用Chain-of-Thought(CoT)提示的大型语言模型(LLMs)。CoT是多个自然语言推理步骤的中间步骤,但CoT提示在代码生成方面的准确性仍然较低。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

本文提出了一种名为SCoT的结构化CoT和一种新的代码生成提示技术SCoT prompting。SCoT prompting要求LLMs使用程序结构(即序列、分支和循环结构)生成SCoT,然后根据SCoT生成代码。在三个基准测试中,SCoT提示在Pass@k和人类评估方面显著优于CoT提示。此外,SCoT提示对示例具有鲁棒性,并获得稳定的改进。

未来,我们将探索新的代码生成提示技术,例如,可以用树(例如抽象语法树)表示源代码。我们可以设计一种基于树的提示技术,使用LLMs生成树。

www.zeeklog.com  - 【论文速读】用于代码生成的结构化思维链提示

论文速读340

论文速读 · 目录

上一篇【论文速读】思维链提示引发知识增强下一篇【论文速读】思维树:让大语言模型有意识地解决问题

Read more

java毕业设计计算机毕设项目源码之https://zeeklog.com小程序服装购物商城+后台管理系统

java毕业设计计算机毕设项目源码之https://zeeklog.com小程序服装购物商城+后台管理系统

一、项目介绍 本系统包含微信小程序做的服装商城前台和Java做的后台管理系统: 微信小程序——服装商城前台涉及技术:WXML 和 WXSS、JavaScript Java——服装商城后台涉及技术: 前端使用技术:JSP,HTML5,CSS3、JavaScript、jQuery、bootstrap等 后台使用技术:Spring、SpringMvc、Mybatis(SSM)等 数据库:Mysql数据库 前台功能介绍:查看并搜索所有的商品信息,查看商品详情、加入购物车、下单、根据订单状态查看订单、商品评价、地址管理、登录、注册 后台管理:登录、注册、商品的增删改查并查看评价、商品的增删改查、商品类型的增删改查、地址的增删改查、滚动图片的增删改查、 订单的查询删除并发货付款、购物车管理、公告的增删改查、 用户的添加删除修改、角色的添加删除修改、菜单的添加删除修改。

By Ne0inhk
实战:java基础系列之【Exception:如何处理异常】

实战:java基础系列之【Exception:如何处理异常】

概叙 异常定义(Error/Exception) 异常:在Java语言中, 将程序执行中发生的不正常情况称为“异常” 。 (开发过程中的语法错误和逻辑错误不是异常) Java程序在执行过程中所发生的异常事件可分为两类: 1. Error: Java虚拟机无法解决的严重问题。 如: JVM系统内部错误、 资源耗尽等严重情况。 比如: StackOverflowError和OOM。 一般不编写针对性的代码进行处理。 2. Exception: 其它因编程错误或偶然的外在因素导致的一般性问题, 可以使用针对性的代码进行处理。 例如: 1、空指针访问 2、试图读取不存在的文件 3、网络连接中断 4、数组角标越界 对于这些错误, 一般有两种解决方法: 1. 一种是遇到错误就终止程序的运行。 2. 一种方法是由程序员在编写程序时, 就考虑到错误的检测、 错误消息的提示, 以及错误的处理。 要理解 Java 异常处理是如何工作的,你需要掌握以下三种类型的异常:受检异常(编译器检查)、运行时异常(编译器不检查、业务代码bug)

By Ne0inhk
科普文:软件架构Linux系列之【搞懂常见的 RAID(独立磁盘冗余阵列) 级别】

科普文:软件架构Linux系列之【搞懂常见的 RAID(独立磁盘冗余阵列) 级别】

概叙 RAID 的发展历史 RAID 最早在 1987 年由加州大学伯克利分校的三位研究人员提出,他们的研究指出,使用多个低成本硬盘并结合特定的存储算法,可以达到比单一高性能硬盘更高的存储性能和可靠性。这一思想被称为 RAID,并在此后的几十年中不断发展和应用,成为数据存储领域的重要技术。 在早期,RAID 主要用于大型数据中心和企业级存储中,随着硬盘价格的下降和技术的进步,RAID 逐渐进入了家庭和中小企业的应用场景。 随着 RAID 技术的发展,不同的 RAID 级别被定义出来。早期的 RAID 0 和 RAID 1 提供了简单的条带化和镜像功能,随后引入的 RAID 5 和 RAID 6 提供了更复杂的校验和数据保护机制。近年来,RAID 的应用进一步扩展,特别是在虚拟化和云计算环境中,分布式存储系统和软件定义存储(如 Ceph、ZFS)逐渐成为 RAID

By Ne0inhk
科普文:软件架构Linux系列之【存储性能分析方法与优化方案概叙】

科普文:软件架构Linux系列之【存储性能分析方法与优化方案概叙】

概叙 系统性能出现问题的众多场景中,存储是其中很重要的一个因素,毕竟无论是应用,还是数据库、中间件,都少不了和存储打交道,如何能更高效地应用磁盘,一定程度上影响了系统性能的发挥。磁盘阵列、IO消耗等这些基础的存储知识,还是要能够有所了解,技多不压身。 可靠性、安全性和性能是 IT 系统最重要的三个评价维度。对于 IT 系统来说,可靠性和安全性是基础,系统故障或数据泄露等造成的破坏性是显而易见的;而性能则是核心能力,代表着 IT 系统的服务水平,性能瓶颈会制约企业业务的发展,严重影响用户体验。 存储系统是企业 IT 基础架构重要的组成部分,为企业内部众多的 IT 系统提供数据存储服务。随着数字化转型的深入,企业的 IT 系统建设也进一步加快,这一方面带来了数据量的急剧增长,另一方面也提高了数据的访问频率,存储的性能瓶颈的影响也会被进一步放大。本文将结合个人运维实践,剖析存储系统的架构及运行原理,深入分析各种存储性能瓶颈场景,并提出相应的性能优化手段,希望对同行有一定的借鉴和参考价值。 1. 存储系统概述 了解存储系统的架构及其运行原理是性能分析与优化的入门课,才能去全局分析解

By Ne0inhk