beanstalk

This article was sponsored by Beanstalk. Thank you for supporting the sponsors that make SitePoint possible.

本文由Beanstalk赞助。 感谢您支持使SitePoint成为可能的赞助商。

Do you perform code reviews in your team? It’s a useful technique to find bugs quickly and improve the quality of your code. Simply put, the process works like this: A developer will present a code example to their team or superiors, explain what they have written, and then receive feedback on how they could improve their code. That sounds easy, but in reality it can often be complicated, time-consuming and difficult to take on.

您是否在团队中执行代码审查? 快速查找错误并提高代码质量是一种有用的技术。 简而言之,该过程是这样的:开发人员将向其团队或上级展示一个代码示例,解释他们编写的内容,然后接收有关他们如何改进其代码的反馈。 这听起来很简单,但实际上,它通常很复杂,耗时且难以实现。

But today I’m going to talk about Beanstalk, a platform that can help to incorporate a code review process into your workflow, seamlessly making it a part of your coding habits.

但是今天,我将讨论Beanstalk,它是一个可以帮助将代码审查过程整合到您的工作流程中,无缝地使其成为您的编码习惯的一部分的平台。

Let’s first have a look at the common code review techniques used by development teams and highlight where there’s room for improvement, before moving on to talk about how Beanstalk can help.

在继续讨论Beanstalk如何提供帮助之前,让我们首先看一下开发团队使用的通用代码审查技术,并强调在哪些地方需要改进。

代码审查工具和技术 (Code Review Tools and Techniques)

There are many benefits to reviewing code. Some of the more important ones are as follows:

审查代码有很多好处。 一些更重要的如下:

  1. Bugs are identified and eliminated quickly.可以快速识别并消除错误。
  2. Team members always know what’s going on in the team.团队成员总是知道团队中正在发生什么。
  3. Reviewed code is more readable.审阅的代码更具可读性。
  4. Various optimisations may be done in code review, improving speed. 可以在代码检查中进行各种优化,从而提高速度。

Let’s look at how code review is usually done. Often teams adopt one or more of the following techniques to review code:

让我们看一下通常如何进行代码审查。 团队通常采用以下一种或多种技术来检查代码:

  1. Pair programming : Two programmers sit at the same workstation and write code together, with one typing out the code and the other offering suggestions. While this seems like a good solution, it comes with some problems. For example, sometimes the senior member in a team can take over and do most of the work, defeating the purpose of the pair programming.

    配对编程 :两名程序员坐在同一工作站上,一起编写代码,其中一名键入代码,另一名提供建议。 尽管这似乎是一个不错的解决方案,但它存在一些问题。 例如,有时团队中的高级成员可以接管并完成大部分工作,从而破坏了结对编程的目的。

  2. Over the shoulder review : Usually a senior member looks over the developer’s shoulder while the latter explains what they’ve done. This is a quick, lightweight, ad hoc technique to perform code review, and that may work for small teams and projects. But as your project grows and your team expands, it’s just not possible to do over the shoulder reviews effectively.

    回顾一下 :通常,高级成员会看着开发人员的肩膀,而后者则解释了他们所做的事情。 这是一种快速,轻量级的临时技术,用于执行代码审查,并且可能适用于小型团队和项目。 但是随着项目的发展和团队的扩大,就不可能有效地进行全面评估。

  3. Email : Here the version control system sends code to reviewers via email. Usually this is done once a new commit is pushed to the repo. But things can quickly get messy with this technique. It requires you to keep track of multiple email chains to review code and suggest changes. Also, because it uses email it’s also difficult for other team members to know what is going on in the review.

    电子邮件 :版本控制系统在此处通过电子邮件将代码发送给审阅者。 通常,一旦将新提交推送到存储库中,就可以完成此操作。 但是这种技术会使事情很快变得混乱。 它要求您跟踪多个电子邮件链以检查代码并提出更改建议。 另外,由于它使用电子邮件,因此其他团队成员也很难知道审核中的情况。

  4. Code review meetings : The developer schedules a specific meeting dedicated to code review, with one or more reviewers reviewing the code. Issues are noted as a part of the process. Once the developer addresses those issues, the reviewers are notified. Of course, as with any meeting, scheduling and executing a code review can be tricky and time consuming.

    代码审查会议 :开发人员安排一个专门的会议,专门讨论代码审查,由一个或多个审查者审查代码。 问题是该过程的一部分。 开发人员解决了这些问题后,就会通知审阅者。 当然,与任何会议一样,安排和执行代码审查可能很棘手且耗时。

So those are some existing ways of managing code review, which each have their problems. Let’s have a look at a better way.

因此,这是一些管理代码审查的现有方法,每种方法都有其问题。 让我们来看看一种更好的方法。

Beanstalk简介 (Introducing Beanstalk)

Beanstalk is a code hosting solution for development teams. Once you signup you can start creating repositories (repos) to host your code. In case you’re not aware, a “repo” is a storage space for your code. You can create a new repo by clicking on the “Create a repository” button in your Beanstalk dashboard. You can also create “branches” for fixing bugs or developing new features. We’ll discuss branches more later on.

Beanstalk是面向开发团队的代码托管解决方案。 注册后,您可以开始创建存储库(repos)来托管您的代码。 如果您不知道,“回购”是代码的存储空间。 您可以通过在Beanstalk仪表板中单击“创建存储库”按钮来创建新的存储库。 您还可以创建“分支”来修复错误或开发新功能。 我们将在以后讨论分支。

Beanstalk promotes a three-step process to ship your code :

Beanstalk促进了包含以下三个步骤的代码发布过程:

  1. Commit your code提交您的代码
  2. Review with the team via Code Review通过代码审查与团队一起审查
  3. Deploy the final reviewed code部署最终审阅的代码

This is a useful way to release your code because code review is built in as an essential step in the development workflow. This means the code quality will be improved and bugs eliminated earlier. Developers can update their code based on a comment or issue, make their changes and then get feedback from reviewers.

这是发布代码的一种有用方法,因为代码审查是开发工作流程中必不可少的步骤。 这意味着将提高代码质量,并尽早消除错误。 开发人员可以根据评论或问题更新代码,进行更改,然后从审阅者那里获得反馈。

代码托管和提交 (Code Hosting and Committing)

To start using Beanstalk’s code review tools you’ll first need to host your code. This process is very simple. If you don’t have a Beanstalk account yet, go ahead and create one.

要开始使用Beanstalk的代码审查工具,您首先需要托管代码。 这个过程很简单。 如果您还没有Beanstalk帐户,请继续创建一个 。

Once you’ve created an account you can go to the “repositories” tab to create a new repository. You can create both git- and subversion-based repos, but we’ll be using git for this example. In case you are new to git, here’s an article to help you get up to speed.

创建帐户后,您可以转到“存储库”选项卡以创建新的存储库。 您可以创建基于git和基于Subversion的存储库,但在本示例中我们将使用git。 如果您是git的新手, 这里有一篇文章可以帮助您快速入门 。

Creating a repo is easy. Once you click on the “Create a repository” button you’ll be presented with a wizard. It’ll ask you to choose a title and repo type (git, subversion or another.) Once you fill in the details your repo will be ready.

创建一个仓库很容易。 单击“创建存储库”按钮后,将显示一个向导。 它会要求您选择标题和存储库类型( gitsubversion或其他)。一旦填写了详细信息,存储库就可以准备好了。

Here’s a screenshot of the repo creation wizard.

这是回购创建向导的屏幕截图。

I created a simple git repository to demonstrate the process. My repositories tab looks like this:

我创建了一个简单的git仓库来演示该过程。 我的存储库选项卡如下所示:

Once your repo is ready, you’ll get a URL (mine is https://sitepointdemo.git.beanstalkapp.com/simple-nodejs-repo.git). You can use this URL to push ‘commits’ into your repository.

仓库准备就绪后,您将获得一个URL(我的站点为https://sitepointdemo.git.beanstalkapp.com/simple-nodejs-repo.git )。 您可以使用此URL将“提交”推送到存储库中。

Again, if you’re unfamiliar with source control, think of commits as snapshots of your code at a particular point in time. Once you’ve committed some changes, you can always revert back to that point in the future.

同样,如果您不熟悉源代码控制,可以将提交视为特定时间点的代码快照。 做出一些更改后,将来随时可以恢复到该点。

Now your new repo is ready you can start committing the changes. If you have your source code on your machine you can commit locally and push those to your Beanstalk repo.

现在您的新仓库已经准备就绪,您可以开始提交更改了。 如果您的计算机上有源代码,则可以在本地提交并将其推送到Beanstalk存储库。

Every repo has one or more ‘branches’. The normal workflow involves a master branch for production. Every feature and bug fix should start in a new branch and be submitted for code review once it’s completed. Once the review is complete and issues are resolved, the branch can be merged back into the master branch and its changes applied to the production code.

每个回购都有一个或多个“分支”。 正常的工作流程涉及生产的主分支。 每个功能和错误修复都应从新分支开始,并在完成后提交给代码审查。 审查完成并解决问题后,可以将分支合并回master分支,并将其更改应用于生产代码。

The ‘branches’ tab, shown in the screenshot below, lists different branches in your repo. You can also create new branches and delete existing ones.

下方屏幕快照中显示的“分支”标签列出了您的仓库中的不同分支。 您还可以创建新分支并删除现有分支。

For more information on working with branches check out this tutorial.

有关使用分支的更多信息,请查看本教程 。

Now you have the basics in mind, let’s create our first code review.

现在您已经有了基础知识,让我们创建我们的第一个代码审查。

代码审查 (Code Reviewing)

创建评论 (Creating a Review)

Creating a code review request is easy. First, create a branch in your repo. Once the branch is ready you can create and assign a review to someone from your team. The following screenshot demonstrates the process:

创建代码审查请求很容易。 首先,在您的仓库中创建一个分支。 分支准备就绪后,您可以创建评论并将其分配给团队中的某人。 以下屏幕截图演示了该过程:

Since I’m the only one in the team in my lonely demo environment, I’ve assigned the review to myself. In a real-world app, you’d obviously want to assign this review to someone from your team. It’s also possible to assign the review to multiple reviewers, to help you get more perspective on your code.

由于我是寂寞的演示环境中团队中的唯一成员,因此我已将评估分配给自己。 在实际应用中,您显然希望将此评论分配给团队中的某人。 还可以将审阅分配给多个审阅者,以帮助您更好地了解代码。

You also have the option to add watchers. This is for those team members who don’t directly review your code, but who need to know about the progress of the reviewed branch. As a team grows, more people — product managers or developer managers, for example — will want to adopt this “watcher” status to keep track of code they have an interest in.

您还可以选择添加观察者。 这适用于那些不直接检查您的代码,但需要了解所检查分支进度的团队成员。 随着团队的成长,越来越多的人(例如产品经理或开发经理)将希望采用这种“观察者”状态来跟踪他们感兴趣的代码。

Once you create the review, go to the “Reviews” tab, where you can find a list of reviews.

创建评论后,转到“评论”标签,您可以在其中找到评论列表。

As you can see, the above screenshot displays the two pending code reviews I just created. Click on either of them and you’ll be taken to a detailed code review page, which lets you manage the review assigned to you. This is where things get interesting. You have a lot of cool and exciting code review tools. Let’s explore them one by one.

如您所见,上面的屏幕快照显示了我刚刚创建的两个未决代码审查。 单击它们之一,您将进入详细的代码审查页面,该页面可让您管理分配给您的审查。 这就是事情变得有趣的地方。 您有很多很棒的代码审查工具。 让我们一一探讨。

讨论,问题和分支机构代码 (Discussion, Issues, and Your Branches’ Code)

As a reviewer, many times you’ll find several problems with the code. After all, that’s why code review is done! Usually you’ll sit down with the developer and point out the issues one-by-one. You may also write a formal email to the developer outlining the issues found. But is that the best way to do things? It’s very easy to lose track of the issues, especially when there are too many moving parts.

作为审阅者,很多时候您会发现代码存在一些问题。 毕竟,这就是代码审查完成的原因! 通常,您会与开发人员坐下来,一一指出问题。 您还可以向开发人员写一封正式电子邮件,概述发现的问题。 但这是做事的最好方法吗? 跟踪问题很容易,尤其是在活动部件过多的情况下。

To tackle this issue Beanstalk offers a feature called “Issues in Code Review”. In the code review section, you have a dedicated ‘Issues’ tab. As a reviewer, you should use this tab to add issues you find in the code. As soon as you find an issue in the code, add it here. This keeps things cohesive, as you and the developer can both keep track of what’s going on in the review. Take a look at the following screenshot, which describes the process of adding issues.

为了解决这个问题,Beanstalk提供了一个称为“代码审查中的问题”的功能。 在代码查看部分,您有专用的“问题”标签。 作为审阅者,您应该使用此选项卡添加在代码中找到的问题。 一旦在代码中发现问题,请在此处添加。 这使事情保持连贯性,因为您和开发人员都可以跟踪评论中发生的事情。 请看以下屏幕快照,该屏幕快照描述了添加问题的过程。

You can see comments and issues are kept separate in the discussion and issues tab so your team can have discussions and track issues related to the code without having to dig through a single comment thread to find issues, or vice versa.

您可以在“讨论和问题”选项卡中看到注释和问题保持分离,因此您的团队可以进行讨论并跟踪与代码相关的问题,而无需深入研究单个注释线程来查找问题,反之亦然。

You can also add comments inline to notify developers about any issues or ask questions. Not sure why a developer added a particular line? No problem! Just click on the line and ask them with an inline comment. Cool huh?

您还可以内联添加评论,以将任何问题或问题通知开发人员。 不确定为什么开发人员添加了特定行? 没问题! 只需单击该行,然后向他们询问内嵌评论。 酷吧?

There is also a tick box associated with each issue. If you think the issue has been resolved, simply click on this box to label it as such and move on to the next issue.

每个问题都有一个复选框。 如果您认为问题已解决,只需单击此框将其标记为问题,然后继续进行下一个问题。

You should also note that as long as there are open issues, the review can’t be approved and consequently the branch can’t be merged with the master brach. This is a very neat feature because it guarantees all issues will be fixed before the branch is merged.

您还应该注意,只要有未解决的问题,审核就不会被批准,因此分支无法与分支机构合并。 这是一个非常简洁的功能,因为它可以确保在合并分支之前解决所有问题。

Another nice thing about this tool is that it supports markdown syntax! Many times you’ll need to write code blocks to explain the issues clearly. Markdown makes it easy for you format your issue description and refer to code snippets inside it. You can easily switch between normal view and markdown view by clicking on the ‘preview’ button.

这个工具的另一个好处是它支持markdown语法! 很多时候,您需要编写代码块来清楚地说明问题。 Markdown使您可以轻松设置问题说明的格式并参考其中的代码段。 您可以通过单击“预览”按钮轻松地在普通视图和降价视图之间切换。

代码编辑 (Code Editing)

Code editing is a nice add-on to your code review workflow. You can find the ‘Code’ tab right beside ‘Issues’. In this section you can see the changed code, edit the files and commit changes made by you. You can also click on the ‘expand’ button to get more detailed information on a particular change.

代码编辑是代码检查工作流程的一个不错的附加组件。 您可以在“问题”旁边找到“代码”标签。 在此部分中,您可以查看更改的代码,编辑文件并提交您所做的更改。 您也可以单击“扩展”按钮以获取有关特定更改的更多详细信息。

Take a look at the following screenshot which shows the edit and expand options.

看一下下面的屏幕快照,其中显示了编辑和扩展选项。

If you click on the edit button you’ll be taken to a new page where you can edit the file in an actual code editor (yes, there’s syntax highlighting too!) You also have the option to write a commit message and commit the changes directly.

如果单击“编辑”按钮,将转到一个新页面,您可以在此页面中使用实际的代码编辑器编辑文件(是的,语法也突出显示了!)您还可以选择编写提交消息并提交更改直。

集成责备工具 (Integrated Blame Tool)

When you ship code frequently, it becomes very hard to keep track of every code change. Often you’ll find yourself wondering exactly why a particular line was deleted or modified. Beanstalk has you covered. With the integrated blame tool you’ll know exactly why something changed, as it provides context for every change in the file.

当您频繁发送代码时,很难跟踪每个代码更改。 通常,您会发现自己想知道为什么删除或修改了特定行。 Beanstalk已覆盖您。 使用集成的责备工具,您将确切知道更改原因的原因,因为它为文件中的每个更改提供了上下文。

分行详情和历史 (Branch Details and History)

You can find all the relevant information related to a given branch in the ‘Branch Details’ tab. With this you will be able to identify who the contributors are and how many revisions have been made so far. The integrated ‘History’ tab lets you keep track of the all the actions done in the particular branch. For example, you can quickly browse through the history list to know when an issue was opened and closed. By clicking on an issue description you can directly jump to the particular issue in the Issues tab and start troubleshooting if you need to. The history tool is an uncomplicated yet very powerful addition to the feature set.

您可以在“分支详细信息”标签中找到与给定分支相关的所有相关信息。 使用此工具,您将能够确定谁是贡献者,以及到目前为止已进行了多少次修订。 集成的“历史记录”选项卡可让您跟踪在特定分支中执行的所有操作。 例如,您可以快速浏览历史记录列表,以了解何时打开和关闭问题。 通过单击问题描述,您可以直接跳至“问题”选项卡中的特定问题,并根据需要开始故障排除。 历史记录工具是对功能集的简单且非常强大的添加。

分支权限和一键式分支合并 (Branch Permissions and One Click Branch Merging)

When you create a new review you have the option to choose to merge the branch automatically once all the issues are resolved. That’s awesome. But if you haven’t selected that option you can manually merge the branch with the main branch once all the issues are resolved. Assuming there are no outstanding conflicts you can click on the ‘Approve and Merge’ button in the ‘Issues’ tab to approve the changes and merge with the main branch with one click.

当您创建新评论时,可以选择在所有问题解决后自动合并分支。 棒极了。 但是,如果您没有选择该选项,则可以在解决所有问题后手动将分支与主分支合并。 假设没有未解决的冲突,您可以单击“问题”选项卡中的“批准并合并”按钮以批准更改,然后单击一下即可与主分支合并。

With Branch Permissions you can easily restrict write access for particular branches to selected developers. For example, the production branch should not be writable by everybody. This is a clever tool that will be useful in every project.

使用分支权限,您可以轻松地将特定分支的写访问权限限制为选定的开发人员。 例如,生产分支不应该每个人都可写。 这是一个聪明的工具,将在每个项目中使用。

比较视图 (Compare View)

When you are following a collaborative coding process, sometimes you’ll need to know how exactly one branch differs from another. With the “Compare View” feature, you can easily compare two different branches and identify what has changed. You can also take advantage of this tool to compare specific commits in same or different branches. Take a look at the following screenshot which shows the Compare View.

当您遵循协作编码过程时,有时您需要知道一个分支与另一个分支有何不同。 使用“比较视图”功能,您可以轻松比较两个不同的分支并确定发生了什么变化。 您还可以利用此工具来比较相同或不同分支中的特定提交。 请看下面的屏幕快照,其中显示了“比较视图”。

邮件通知 (Email Notifications)

Not at your desk? Travelling a lot? Don’t worry, Beanstalk can send you automatic email notifications whenever there’s activity in any of the repos you are interested in. Reviewers and watchers will get these updates, and the email notification system also makes sure you don’t get overwhelmed with too many emails. For example, if someone comments on 10 lines of code in a few minutes, you’ll only receive one email rather than 10.

不在办公桌旁吗 经常旅行? 不用担心,只要您感兴趣的任何回购交易中有活动,Beanstalk都会向您发送自动电子邮件通知。审阅者和观察者将获得这些更新,并且电子邮件通知系统还确保您不会被太多的邮件淹没电子邮件。 例如,如果某人在几分钟内对10行代码发表评论,那么您只会收到一封电子邮件,而不是10条。

There is also a Smart Digest tool which shows you a list of activities in your repository. This is a very useful tool to start your day with. I grabbed the following image from Beanstalk’s website which shows the smart digest view.

还有一个Smart Digest工具,可为您显示存储库中的活动列表。 这是开始新的一天非常有用的工具。 我从Beanstalk网站获取了以下图像,该图像显示了智能摘要视图。

部署方式 (Deployment)

Once the review is approved and the branch is merged with production, you need to ship the final code. Beanstalk’s deployment system lets you instantly deploy the code to your servers (via SFTP, SSH) or your favorite cloud services such as Rackspace Cloud Files, Amazon S3, and Heroku. Here’s a summary of how that deployment process works.

审核通过并且分支与生产合并后,您需要交付最终代码。 Beanstalk的部署系统使您可以立即将代码(通过SFTP,SSH)部署到服务器或您喜欢的云服务(如Rackspace Cloud Files,Amazon S3和Heroku)中。 这是该部署过程如何工作的摘要。

The benefits are obvious. You don’t need to switch between products for deployment —everything is handled in a single app. Everything you need for a proper deployment process — from code commits to reviews to deployment — all takes place in the same environment.

好处是显而易见的。 您无需在要部署的产品之间进行切换-一切都在一个应用程序中处理。 正确部署过程所需的一切-从代码提交到审核再到部署-都在同一环境中进行。

结论 (Conclusion)

Code review and collaboration are two major parts of any development workflow. Beanstalk takes collaborative coding to a whole new level. With Beanstalk, code review doesn’t wait until the end of the process; it’s done as a part of the overall collaborative coding process. Furthermore, Beanstalk’s code review tools and techniques can be easily applied to your existing development workflow.

代码审查和协作是任何开发工作流程的两个主要部分。 Beanstalk将协作编码提升到一个全新的水平。 使用Beanstalk,代码审查不会等到过程结束时才开始。 它是整个协作编码过程的一部分。 此外,Beanstalk的代码审查工具和技术可以轻松地应用于您现有的开发工作流程。

This was my take on the important code review features available in Beanstalk, but if you want to learn more, check it out here. I have personally found Beanstalk immensely useful in my development workflow.

这是我对Beanstalk中可用的重要代码审查功能的看法,但是如果您想了解更多信息, 请在此处查看 。 我个人发现Beanstalk在我的开发工作流程中非常有用。

How do you manage your code review process? Have you given Beanstalk a try? Let us know in the comments.

您如何管理代码审查流程? 您尝试过Beanstalk吗? 让我们在评论中知道。

翻译自: https://www.sitepoint.com/integrated-collaborative-code-reviewing-beanstalk/

beanstalk

beanstalk_Beanstalk的集成和协作代码审查相关推荐

  1. 自动化代码审查平台: 基于Docker Compose整合Jenkins + SonarQube

    目录 代码审查平台 本文目标 环境要求 系统环境 组件服务版本 前言 代码评审 SonarQube简介 概述 部署流程 检查系统参数 设置系统参数 拉取代码 进入文件目录 创建数据卷目录 部署文件信息 ...

  2. 鸿蒙跨屏协作实现原理,跨屏协作满足效率党 高效工作这几款手机必备

    对于职场办公人士来说,多设备办公室是常态.您是否仍对设备之间的交互感到烦恼?为无法在多个设备之间进行协作感到困扰?下面让我推荐几款支持"多屏协作"功能的手机.01华为"多 ...

  3. 优傲协作机器人变身“火眼金睛”质检员

    在绝大多数制造业中采用纯人工检测的方式显然已经不靠谱,不仅费时低效,也无法保证产品质量的一致性.但传统工业机器人安装.维护等成本还有对专业编程的高要求往往让很多制造商望而却步.协作机器人能很好地平衡效 ...

  4. 12款适合小团队协作、任务管理和进度跟踪的在线任务管理的工具推荐?

    国内外12款主流任务管理软件测评: 1.开发任务管理PingCode; 2.多合一项目任务管理Worktile;3.个人和小团队项目任务管理Notion; 4.企业任务管理平台SmartTask; 5 ...

  5. java实现使用代码压缩文件_Jenkins:使用SonarQube实现代码审查

    1. SonarQube简介 SonarQube 是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误.目前支持java.C#.C/C++.Python等二十几种编程语言的代码质 ...

  6. html5 语音留言,思科统一协作终端Jabber 产品介绍..pptx

    思科统一协作终端Jabber 产品介绍. 思科统一协作终端Jabber 产品介绍Session AgendaCisco Jabber IntroductionProduct Overview/Road ...

  7. linux devops_DevOps原则与学生Linux程序产生共鸣

    linux devops 在公立学校中管理IT可能会很艰难. Penn Manor学区的IT团队管理着3,500多名学生Linux笔记本电脑和台式机,具有数百种独特的教学要求,涵盖了多个学科,部门和年 ...

  8. GitHub---团队合作

    GitHub进行团队合作 原文: Team Collaboration With GitHub GitHub已经成为的一切开放源码软件的基石.开发人员喜欢它,基于它进行协作,并不断通过它开发令人惊叹的 ...

  9. 在SDLC中使用静态代码分析的最佳实践

    http://vultrace.cn更多精彩,尽在个人博客. 文章翻译自ncc group的论文,论文超长预警,请耐心观看. Best Practices for the use of Static ...

最新文章

  1. getline简单例子
  2. cacti监控(3)配置cacti
  3. PHP前端和数据库的连接
  4. matlab练习_MATLAB教程-台大郭彦甫-第十四节,含练习答案
  5. 现在编程语言的两大主流
  6. 用Jenkins自动化搭建测试环境_入门试炼06
  7. 超图Cesium鼠标事件处理
  8. 学习 | Spring Cloud Config 从入门到精通
  9. html让文本框左剧中对齐_HTML 样式 CSS
  10. 利用VX助手增加编程效率
  11. java定义vip顾客继承顾客_Java初级教频教程 - JavaSE - Java - 私塾在线 - 只做精品视频课程服务...
  12. 练字在现代社会的意义还大不大,尤其是电脑普及的情况下,花费大量的时间去练字还值得么?
  13. 服务器管理系统架构,统一管理 统一IT管理系统架构设计思路与实践
  14. Android 监听软键盘弹出/隐藏,控制软键盘弹出/隐藏
  15. Day001-2021-07-29 变量定义/数据类型/基础运算 判断/循环/数组
  16. 面试问遇到最难的事情_太难的事情
  17. 网页无法与服务器建立安全连接失败,“发生了SSL错误,无法与服务器建立安全连接。”...
  18. java 获取当天0时0分0秒和 23时23分59秒 的时间
  19. 高祖酒老总梁辉收《江行初雪图》临作,获保值增值承诺
  20. 浙大计算机学院郭庆,团队介绍

热门文章

  1. 2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I
  2. Mockito教程一
  3. java如何验证时间合法性
  4. 深度分析第一家上市的全栈量子计算公司IonQ,是否值得投资?
  5. Doc2Vec计算句子相似度
  6. vue 幻灯片组件_带有vue的漂亮幻灯片组件
  7. java permgen是什么_关于java:PermGen空间的意义
  8. Android玄铁剑之TextView之图文并茂
  9. 小程序写手机号码查吉凶,有检验手机号码正确性
  10. 递归算法解决斐波那契数列