精华内容
下载资源
问答
  • 十大优秀编程项目,让你的简历金光闪闪

    万次阅读 多人点赞 2019-10-06 11:37:28
    被问到如何学习编程时,最常听到的问题就是:“有没有什么新项目的好点子?” 一些老套的答案有:“做一个象棋游戏”或者“命令行界面”。 这些答案没有错,但这些例子不符合现代编程的需要。现代软件编写需要经常...

    全文共3241字,预计学习时长6分钟

    被问到如何学习编程时,最常听到的问题就是:“有没有什么新项目的好点子?”

    一些老套的答案有:“做一个象棋游戏”或者“命令行界面”。

    这些答案没有错,但这些例子不符合现代编程的需要。现代软件编写需要经常使用软件服务化(SaaS)和网络应用,这意味着程序员需要了解如何在线编程。

    用户网站或应用程序的编程需要服务器、身份验证和数据库,这个过程十分复杂。它会迫使你使用高难度的技术互动,而这些互动在开发井字游戏命令行时永远不会用到。

    其中一些可以由亚马逊云计算服务或其他大公司常用的第三方来管理。同样,这有助于你接触到行业中有帮助且大量使用的技术。这将成为你简历上更具实践性的一笔,也有助于你学习使用新技术。

    小贴士:如果你选择了一个复杂的项目,那么一次专注于构建一个特性。一口气构建一个完整的网站或应用程序是很困难的。首先,创建一个登录界面,或者在用户登录后创建主登录页面。如果试图立刻完成整个项目,那么你很可能会失败。

    娱乐向网站

    1.一个无需人工干预就能发布前十名博客的网页抓取器

    某些项目推荐帖子存在问题:他们推荐的项目没有激励程序员继续开发。例如,很多人建议建造一个爬虫工具。

    一旦你建立了网页爬虫并抓取了数据,你会怎么做?

    为什么不利用这些数据建一个网站呢?不一定要很花哨或拥有很多浏览量,这个爬虫可以将数据拉入数据库,然后选择最受欢迎的博客。它可以复制该博客的标题和几个句子,然后创建一个在线分享的帖子。这个项目看似简单,但会令人印象深刻,让你与众不同。

    通过这个网站,你已经表明自己可以做的不仅仅是对系统的一小部分进行编码。相反,可以从整个系统的角度思考。你需要考虑如何实现流程自动化、管理数据库、创建网站和选择博客。据此,你还可能拥有一个有形的最终产品。

    如果没有有形的最终产品,你可能会变得没有动力,仅仅满足于创建一个爬虫工具。

    另外,说不定你的网站会变得很流行!

    所需技能:数据库、网页爬虫工具、自动化、网页开发(用于博客)和通用编程。

    2.使用Meetup和Eventbrite APIs的事件提醒系统

    你想去看乐队或喜剧表演,可最终因忘记而错过?也许你所在的地区有一个关于数据科学或大数据的免费会议,但是却因为忘记检查而错过参与。

    为什么不使用Meetup和Eventbrite APIs制作自己的汇集器呢?当关键字出现在事件描述或标题中时,它就会提醒你。现在,假设Meetup和Eventbrite都有相似的功能,但尝试建立自己的系统总是十分有趣。

    你可以定制系统,让它按照你想要的方式工作,甚至可以将它做成一个网站,让其他人也可以收到提醒。通过这个项目,你可以练习使用两种不同的API,比较和归纳两种API中你喜欢或不喜欢的部分。因此,如果负责构建一个应用编程接口,你将更好地了解什么是有效的,什么是无效的。

    所需技能:API、数据库、自动化、网络开发和通用编程。

    3.一个9GAG的复制网站

    当创建自己的项目时,你不需要每次都重造轮子。试着先创造一个可靠的基础网站,允许用户登录、发布照片和动图、滚动订阅等。接下来,可以加入更多有趣的特性,例如关注、点赞和搜索——特别是搜索功能,它能让你深入了解推荐系统和机器学习的工作原理。

    试着复制受欢迎的网站总是十分有趣。实际上,这是一种很好的学习方式,因为你必须对每个特性进行逆向工程。逆向工程是一项伟大的技能,因为作为一名软件工程师,你将不断地维护他人代码,你需要用他们的思维方式进行思考。

    所需技能:机器学习(推荐系统)、数据库、自动化、网络开发和通用编程。

    零售向网站

    4.一个礼品推荐应用程序

    你是否曾经尝试为朋友挑选合适的礼物?如果你能创建一个网站,预测什么样的礼物适合朋友呢?这个网站可以让目标用户创建一个账户,或是仅是得到一个推荐。

    同样,这也为创建需要身份验证、数据库开发等的帐户提供了机会。

    该项目的另一个重要部分是你可以使用亚马逊的应用编程接口作为附属链接。你将学习到以下内容:第一,了解如何使用应用编程接口,轻松阅读应用编程接口文档。第二,如果你做得好,就可以通过用户购买的每件产品获得佣金。

    通过这个项目,你也可以创建一个基础的机器学习模型。可以创建一个测验,筛选出最好的礼物,然后根据人们点击该礼物的回应率,学习驱动模型。

    所需技能:API、数据库、通用编程和应用程序开发。

    5.物物交换和交易网站

    考虑创建与OfferUp相似的网站。与其花钱,不如创建一个只允许交易的网站。这个概念将迫使你开发一些需要思考的特性。没有计划的话,就不能开展这个项目。

    如何发布、在哪里找到最近发布的项目、以及如何搜索——这都是你可以构建的独立功能。此外,你需要考虑用户将如何互动,甚至他们实际上是如何进行交易的。

    这个想法在现实生活中不一定有用——但它能提升你作为程序员所掌握的技能。

    所需技能:数据库、网络开发、通用编程和应用程序开发(如果你选择制作一个应用程序的话)。

    B2B网站

    6.发票和合同管理系统

    合同和发票管理非常复杂。合同中可能有许多难以追踪的细微条款和规定。

    因此,即使你将它简化为一些核心组件,这依然一个非常好的项目。将复杂的业务流程转化为软件并不容易。但正因如此,本项目是一个很好的挑战。

    再次强调,我们不会把它复杂化。你需要采取一个基本特征,比如输入合同条款,并首先开发这一部分。然后,你可以添加其他功能,如发票跟踪、合同分析和预测。

    所需技能:过程管理、数据库、网络开发和通用编程。

    7.任务管理系统

    像KanbanFlow这样的任务板由几个模块化特性构建而成,因此是一个很好的项目。起始部分会花费你一点工夫,因为需要建立一个耐用的、动态的用户界面。事实上,这个项目可能需要两个人合作:一个人在前端工作,另一个人在后端工作。

    不要因此而气馁!这实际上是一个提高沟通和团队合作技能的机会。你们两人需要谈论设计,确保双方都能完全理解,并且知道你们的模块将连接到哪里。

    这比看起来更具挑战性。

    所需技能:沟通、前端、数据库、网络开发和通用编程。

    8.求职板

    任何旨在拥有不同类型用户的项目都需要有趣的设计。如何确保雇主和潜在求职者都能通过体验网站以满足自身需求?和其他大多数项目一样,你不需要同时关注所有项目。首先尝试创建职务公告,然后可以关注求职者及其反应。

    所需技能:数据库、网络开发和通用编程。

    9.根据标准化数据集预测利润的网站

    大多数公司都拥有许多非常标准化的数据集,包括成本中心的会计数据、账户、行描述,最后则是实际交易成本。

    数据集标准化让创建分析变得更容易,这就是它的伟大之处。你可以尝试创建一个标准化的仪表板,帮助公司预测支出,查看每月支出,并尽可能帮助他们改善支出。

    对该项目来说,可能要花很多时间学习如何确保数据安全。当然,我们建议在深入研究安全性前,首先尝试构建侧重于获取并显示标准化数据数据的模块。这是一个永远绕不开的难题!

    所需技能:预测、业务逻辑、数据库、网络开发和通用编程。

    游戏创意

    10. 贪吃蛇

    如果在本世纪初就用过手机的话,那你可能已经玩过贪吃蛇了。这是一个简单的游戏,但是你可以试着让事情变得更复杂!首先,从尝试开发游戏开始。

    你需要弄清楚如何在线开发游戏。Sebastian Opperman的《霓虹贪吃蛇》是一个很好的开始。之后可以添加一些很酷的新功能,比如特殊物品或者特殊能力。

    这是一个玩耍和娱乐的机会。该项目并不是非常技术化,因为不会有很多用户注册并使用该网站。然而,如何保持游戏在线运行是一个很好的挑战。

    所需技能:网络开发、通用编程和用户界面。

    真心希望这个列表能激励你创建一个超棒的新项目。可以把它添加到你的简历中,并在面试中谈论它。也许你会因此成为一家市值十亿美元的创业公司的下一任CEO!

    留言 点赞 关注

    我们一起分享AI学习与发展的干货
    欢迎关注全平台AI垂类自媒体 “读芯术”

    (添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

    展开全文
  • TCP/IP网络编程项目式教程(微课版)是由唐四薪编著、清华大学出版社于2019年11月出版的图书。 本书按照问题驱动、由浅入深的理念,以项目实例的形式介绍基于Visual C++的TCP/IP WinSock编程方法。 本书是微课版,...

    TCP/IP网络编程项目式教程(微课版)是由唐四薪编著、清华大学出版社于2019年11月出版的图书。

    本书按照问题驱动、由浅入深的理念,以项目实例的形式介绍基于Visual C++的TCP/IP WinSock编程方法。

    本书是微课版,提供了20个微课配套视频,在Visual Studio 2010环境中对书中的关键内容进行了演示和讲解,扫描书中相应位置的二维码即可观看。

    TCP/IP网络编程项目式教程
    TCP/IP网络编程项目式教程

     

     

    书    名:

    TCP/IP网络编程项目式教程

    作    者

    唐四薪

    ISBN

    9787302536840

    页    数

    222

    定    价

    39

    出版社

    清华大学出版社

    出版时间

    2019年11月

    全书共分13章,以项目实例的形式阐述了:网络编程概述、控制台版的TCP通信程序、Windows API版本的TCP通信程序、异步通信版的TCP通信程序、UDP通信程序、MFC版的TCP通信程序、文件传输程序、网络用户登录程序,TCP一对多通信程序、群聊软件、在线考试系统。

    本书适合作为高等院校各专业“网络编程”等课程的教材,也可作为网络编程的培训类教材,还可供网络编程开发人员参考使用。

    前言

     

    TCP/IP 网络编程(俗称Socket编程),是针对TCP/IP层协议(如TCP、UDP)进行的网络编程。这是一种最传统的网络编程方式,许多互联网早期诞生的网络软件,如QQ、Foxmail都是依赖于Socket编程技术开发出来的。

    相对于基于应用层协议(如HTTP)的Web编程来说,TCP/IP 网络编程由于是在更底层协议上进行编程,必须编程实现创建套接字、监听、建立连接等前期步骤后才能进行网络通信,而Web编程却能依靠HTTP协议直接收发数据,因此,TCP/IP 编程的入门难度明显比Web编程要大得多。同时,TCP/IP 网络编程主要用于开发C/S结构或P2P结构的软件,这类软件需要开发Windows界面,很多时候还会涉及到多线程编程,以及线程之间参数的传递,因此,TCP/IP 网络程序通常是网络通信的代码与Windows界面代码及多线程处理的代码混杂在一起,这无疑也增加了这种网络编程的学习难度。

    TCP/IP 网络编程相对于当今的Web编程来说虽然属于冷门,但其实际应用领域还是很多的,并且有些应用具有不可替代性(比如工控软件,物联网通信软件等)。随着物联网技术的普及,TCP/IP 网络编程必将再次变得重要起来。以慕课网为例,关于Socket技术的相关课程多达9门,并且指出“掌握了Socket技术,就等于掌握了推送、IM、物联网等领域的命脉”,“学习本课程后物联网相关通信工作不再是难题,且你有能力成为物联网协议的制定者”。这足以说明学习TCP/IP 网络编程大有可为。

    目前市场上有很多网络编程的教材,其定位大都是基于学习者已经很好地掌握了VC/MFC编程。但实际情况是,很多学生只有C语言和面向对象编程的基础知识,几乎还不具备任何Windows程序开发的知识和经验,程序编写能力不足,本书正是为了帮助这类读者快速掌握Socket编程技术而编写的。在内容编排时,注重解决以下几方面的问题。

    (1)分散难点,由浅入深,问题驱动。比如:在程序类型上,按照“控制台程序→Windows API程序→MFC程序”的步骤组织案例,在开发技术上,按照“TCP一对一同步通信→TCP异步通信→TCP一对多通信→Select模型一对多通信→完成端口模型”。这样,就将Socket编程的难点“WinSock五种I/O模型”分散到了不同的章节实例中讲解。

    (2)本书大部分案例程序都是Windows界面程序,这样有利于提高学生的学习兴趣,并且能让学生掌握如何将控制台程序转换成Windows界面程序,这是很有实用价值的。

    (3)考虑到很多同学VC编程基础不好,在介绍网络程序之前,先介绍一些预备程序的编写。Socket编程的另一个难点是很多程序都不可避免地涉及到多线程,本书将多线程编程也分散安排在后面几章的几个实例中讲解。

    (4)摒弃了用WinSock编程制作浏览器、FTP客户端和电子邮件客户端等内容,因为这些软件已经有很多现成的,完全不需要自己去开发,已没有多少实用价值,且不能让学生产生学习兴趣。而是安排了群聊软件、网络用户登录系统、在线考试系统等实用价值很大且有趣味性的案例。

    虽然目前TCP/IP 网络编程的语言有C++、Java、Python等,但Java、Python等语言都对网络编程的核心WinSock函数进行了封装,而C++的Win32 API可直接使用WinSock函数进行编程,这样更有利于学生理解Socket编程的底层实现细节,是纯正的Socket编程,学生学会后,不需要多少修改,就能适应Linux、Unix等环境的网络编程,且C++语言效率更高,适合物联网、工控软件的开发。基于此,本书采用C++语言作为网络编程的实现语言,同时为了帮助读者融会贯通,本书在附录中介绍了使用Python和Java制作基本的TCP通信程序。

    本书为使用本书作为教材的教师提供教学用多媒体课件、实例源文件和习题参考答案,可登录清华大学出版社网站免费下载,也可访问本书在超星网的配套课程网站 [1]  ,或者和作者联系。

    目录

     

    项目1 网络编程的实现原理 1

    1.1 网络程序的类型与应用领域 1

    1.1.1 网络程序的类型 1

    1.1.2 网络程序的应用领域 2

    1.2 套接字及其种类 4

    1.2.1 什么是套接字 4

    1.2.2 套接字的类型 6

    1.2.3 网络字节顺序 6

    1.3 VC编程基础知识 7

    1.3.1 VC字符串处理函数 7

    1.3.2 VC中新增的数据类型 9

    习题 10

    项目2 控制台版本的TCP通信程序 10

    2.1 套接字编程基础 10

    2.1.1 套接字编程步骤 11

    2.1.2 套接字编程的准备工作 12

    2.1.3 套接字编程中使用的函数 13

    2.1.4 套接字建立连接与TCP三次握手 16

    2.2 最基本的TCP通信程序 16

    2.2.1服务器端程序的制作 17

    2.2.2 客户端程序的制作 18

    2.2.3 Winsock的错误处理 20

    2.3 UNIX Socket编程 20

    习题 21

    项目3 Win32 API网络通信程序 22

    3.1 Windows对话框程序 22

    3.1.1 新建对话框程序 22

    3.1.2 处理Windows消息 26

    3.1.3 获取和设置控件的内容 27

    3.2 Windows API程序示例 28

    3.2.1 计算器程序 28

    3.2.2 获取主机名、IP和时间的程序 30

    3.3 Win32 API版本的TCP通信程序 32

    3.3.1 控制台程序改造成Windows程序的方法 32

    3.3.2 服务器端程序制作步骤 33

    3.3.3 客户端程序制作步骤 36

    习题 38

    项目4 异步通信版的TCP通信程序 38

    4.1 阻塞与非阻塞模式 39

    4.1.1 引起阻塞的WinSock函数 39

    4.1.2 异步I/O模型 39

    4.1.3 WSAAsyncSelect模型 40

    4.2 异步通信的TCP程序实例 42

    4.2.1 服务器端程序制作步骤 42

    4.2.2 客户端程序制作步骤 45

    习题 47

    项目5 UDP通信程序 48

    5.1 UDP通信程序的原理 48

    5.1.1 UDP协议的通信模式 49

    5.1.2UDP的数据收发函数 51

    5.2控制台版本的UDP C/S通信程序 52

    5.2.1服务器端程序的制作 52

    5.2.2 客户端程序的制作 53

    5.3 异步P2P UDP通信程序 54

    5.4 UDP广播消息的程序 58

    5.4.1 设置套接字选项 58

    5.4.2 UDP广播程序的制作 59

    习题 63

    项目6 MFC网络编程 64

    6.1 MFC概述 64

    6.1.1 MFC的类库 64

    6.1.2 MFC程序的结构 65

    6.2 MFC版本的计算器程序 67

    6.2.1 设置成员变量 67

    6.2.2 编写代码 68

    6.2.3 在VS2010中新建MFC程序 69

    6.3 MFC WinSock版的TCP通信程序 71

    6.3.1 服务器端程序的制作 71

    6.3.2 客户端程序的制作 75

    习题 78

    项目7 使用CSocket类和CAsyncSocket类 78

    7.1 MFC Socket编程基础 78

    7.1.1 CAsyncSocket类的函数 79

    7.1.2 CAsyncSocket类编程的步骤 81

    7.2 CSocket版本的TCP通信程序 81

    7.2.1 服务器端程序制作步骤 81

    7.2.2 客户端程序制作步骤 84

    7.3 CAsyncSocket版本的TCP通信程序 86

    7.3.1 服务器端程序的制作 87

    7.3.2 客户端程序的制作 90

    习题 93

    项目8 TCP文件传输程序 93

    8.1 控制台版的TCP文件传输程序 94

    8.1.1 服务器端程序的制作 94

    8.1.2 客户端程序的制作 96

    8.2 CFile和CFileDialog类 97

    8.2.1 CFile文件类的使用 98

    8.2.2 CFileDialog文件类的使用 99

    8.2.3 使用CFile和CFileDialog类制作记事本 100

    8.3 MFC版本的文件传输程序 101

    8.3.1文件传输程序的流程 102

    8.3.2服务器端程序制作步骤 103

    8.3.3 客户端程序制作步骤 106

    习题 110

    项目9 网络用户登录程序 110

    9.1 MFC访问数据库 111

    9.1.1访问数据库的原理 111

    9.1.2 ADO访问数据库示例程序 112

    9.2 单机版用户登录程序 114

    9.2.1 程序制作步骤 115

    9.2.2 查询数据库的实现 117

    9.2.3 在登录对话框与主界面之间传递变量 119

    9.3 网络版用户登录程序 120

    9.3.1 客户端程序的制作 121

    9.3.2 服务器端程序的制作 124

    习题 127

    项目10 TCP一对多通信程序 127

    10.1 多线程程序的作用 127

    10.1.1 进程与线程 127

    10.1.2 创建线程的步骤 128

    10.2 控制台版多线程TCP通信程序 129

    10.2.1服务器端程序的原理 130

    10.2.2服务器端程序制作步骤 131

    10.3 MFC版多线程TCP通信程序 132

    10.3.1程序的实现原理 133

    10.3.2 服务器端程序制作步骤 134

    习题 138

    项目11 使用select模型实现一对多通信 138

    11.1 Select模型基础 138

    11.1.1 Select模型的集合与事件 138

    11.1.2 select模型编程的步骤 139

    11.2 群聊软件 140

    11.2.1 群聊软件的实现原理 140

    11.2.2 服务器端程序的制作步骤 142

    11.3 服务器远程监控系统 146

    习题 148

    项目12 在线考试系统 148

    12.1 重叠I/O模型 149

    12.1.1 WSAOVERLAPPED结构体 149

    12.1.2 重叠I/O模型的相关函数 150

    12.1.3 重叠I/O模型的编程框架 152

    12.1.4 基于重叠I/O的TCP通信程序 153

    12.2 完成端口模型 156

    12.2.1 使用完成端口的编程流程 156

    12.2.2 在线考试系统的设计 157

    习题 160

    项目13 网络嗅探软件 160

    13.1 原始套接字概述 161

    13.1.1 创建原始套接字 161

    13.1.2 使用原始套接字收发数据 162

    13.2 制作网络嗅探软件 162

    13.2.1 网络嗅探软件的原理 162

    13.2.2 网络嗅探软件的制作 163

    习题 164

    附录A Python版的TCP通信程序 165

    附录B Java版的TCP通信程序 166

    参考文献 168

    本书提供了VC6和VS2010两种版本的源程序代码,ppt课件、试卷、教学大纲、考试大纲、实验指导书等配套资源。其中,试卷、教学大纲、实验指导书等只提供给选用本教材的教师。 

    展开全文
  • 编程项目构建工具简介

    千次阅读 2017-09-03 12:30:11
    在进行编程操作的时候,我们常常会遇到很多与编程无关的项目管理工作,如下载依赖、编译源码、单元测试、项目部署等操作。一般的,小型项目我们可以手动实现这些操作,然而大型项目这些工作则相对复杂。构建工具是...

    原文地址:http://www.datalearner.com/blog/1051504412945938

    在进行编程操作的时候,我们常常会遇到很多与编程无关的项目管理工作,如下载依赖、编译源码、单元测试、项目部署等操作。一般的,小型项目我们可以手动实现这些操作,然而大型项目这些工作则相对复杂。构建工具是帮助我们实现一系列项目管理、测试和部署操作的工具。
    软件构建(Software Build)是指软件开发过程中涉及到的一系列处理工作,如将源代码编译成二进制代码,打包二进制代码,运行自动化测试等。为了方便编程人员的操作,人们开发了自动构建(Build Automation)工具来帮助人们处理这些工作。这篇博客将简单介绍构建工具的概念。

    一、为什么需要构建工具

    在国内高校的编程课中,比如,以合肥工业大学管理学院电子商务专业的编程课为例。一般都是从Java编程基础教起,在安装好JDK之后,开始使用一个记事本编写一个HelloWorld.java,里面内容是打印出Hello World。接下来教大家使用JCreator工具来编写程序,实现输出。之后的教学主要内容在Java知识上,对于项目开发的经验和知识则很少描述。于是很多同学不理解,为什么要用JCreator编写程序,或者是JCreator很好用,为什么后面大家用Eclipse、IntelliJ IDEA这种工具来开发Java。

    这些工具都是IDE,也就是为了方便开发人员组织代码文件,管理项目而开发的。IDE其实也可以实现编译、打包的功能。既然如此为何还需要构建工具呢?为什么很多IDE软件都提供了各种构建工具插件呢?个人认为,IDE本身是为了提供开发人员编程的工具,因此整合了项目管理和构建的一些功能。而构建工具的目标是为了管理依赖、编译、打包和部署。因此,后者更像是提供编程的依赖环境和外部包,并帮助发布部署项目的。它的对项目管理支持的功能和目标比IDE更纯粹也更强大(比如大部分构建工具都有中央库,收集了几乎所有开源的外部包提供给开发者自动导入外部包的功能,而一般IDE的这方面功能也是通过构建工具实现的。同时,构建工具几乎都支持命令行运行,来帮助我们打包、编译和发布等,证明它并不是提供一个编写代码的环境,而是作为管理的工具存在。而IDE几乎都是有界面,可以提供代码编写的)。此外,网络上还有一些说法(https://www.oschina.net/question/558461_117208):

    一般而言.一个比较正规的项目都不会基于IDE 进行构建..一般会用ant, maven, gradle ,
    为什么不用ide 呢?首先,是ide的选择,有人喜欢,用vim,eclipse,intellijidea,收费的,免费的.
    特别是公开的项目,你用什么IDE 相当于为这个IDE 打广告了..
    所以,一般而言都是用构建工具,而不是IDE .实际上各种IDE 也是基于各种构建系统,也正是不同的IDE,它们的构建方式不同,所以要让不同的IDE间能一起开发,于是需要一个统一的构建工具,只是你平时不关注而已..

    对于小型的项目而言,比如大学开始的Java课可能要求我们写一个简单的计算器等。该项目依赖的外部的代码很少,几乎使用Java自带的SDK就可以了。但是,对于大中型的项目,都会依赖很多外部开发资源。网络上开源了大量的代码,在我们编写程序的时候可以帮助我们减少重复性的工作,大大提升复用情况,降低编程难度。对于这种项目的代码维护,以及依赖维护是很复杂的。什么程序依赖什么版本的什么外部包,如果不使用构建工具帮助我们管理这些依赖,那将增加开发人员大量的负担。因此,包括上述编译、打包和发布等功能,构建工具在帮助我们管理这些东西,大大提升编程效率。

    二、构建工具的功能

    基本上构建的自动化是编写或使一大部分任务自动执行的一个动作,而这些任务则是软件开发者的日常,像是

    下载依赖
    将源代码编译成二进制代码
    打包生成的二进制代码
    进行单元测试
    部署到生产系统
    

    三、流行的构建工具

    历史上,自动构建工具主要是通过makefiles(环境变量文件)进行,它是一个文件,包含了自动构建的指令。大多数情况下,makefile都是指示如何编译并连接项目的。目前,不同的编程语言有不同的构建工具。主要包括如下:

    Java - Ant, Maven, Gradle
    .NET Framework - NAnt
    C# - MsBuild
    

    在Java的世界里,目前在被使用的常用构建工具有三个:Ant,Maven,Gradle。

    Ant的核心是由Java编写,采用XML作为构建脚本,这样就允许你在任何环境下,运行构建。Ant基于任务链思想,任务之间定义依赖,形成先后顺序。缺点是使用XML定义构建脚本,导致脚本臃肿,Ant自身没有为项目构建提供指导,导致每个build脚本都不一样,开发人员对于每个项目都需要去熟悉脚本内容,没有提供在Ant生态环境内的依赖管理工具。

    Maven团队意识到Ant的缺陷,采用标准的项目布局,和统一的生命周期,采用约定由于配置的思想,减少构建脚本需要的编写内容,活跃的社区,可以方便找到合适的插件,强大的依赖管理工具。缺点是采用默认的结构和生命周期,太过限制,编写插件扩展麻烦,XML作为构建脚本。

    而Gradle同时拥有Ant和Maven的优点,它是基于Groovy的DSL,提供声明式的构建语言,采用标准的项目布局,但拥有完全的可配置性,就是可以改,通过插件,提供默认的构建生命周期,也可以自己定义任务,单独运行任务,定义任务间的依赖,强大的依赖管理工具,与Maven和Ivy仓库结合,与Ant天生兼容,有效的重用Ant的任务,多种实现插件的方式,强大的官方插件库,从构建级别,支持从Ant或者Maven的逐步迁移,通过包装器,无缝的在各个平台运行。

    四、如何识别项目构建工具

    一般地,一个项目的根目录中就会包含构建工具的配置文件信息,也表明了该项目使用的构建工具,通常有如下的对应关系:

    build.xml - 该项目使用Ant构建
    pom.xml - 该项目使用Maven构建
    build.gradle - 该项目使用Gradle构建
    

    参考文献:
    1、https://zhuanlan.zhihu.com/p/23634332
    2、http://www.infoq.com/cn/news/2011/04/xxb-maven-6-gradle
    3、https://en.wikipedia.org/wiki/List_of_build_automation_software
    4、https://en.wikipedia.org/wiki/Build_automation
    5、https://en.wikipedia.org/wiki/Makefile
    6、http://benweizhu.github.io/blog/2015/01/31/deep-into-gradle-in-action-1/

    原文地址:http://www.datalearner.com/blog/1051504412945938

    展开全文
  • 《择善教育》C/C++黑客编程项目实战教程     下载地址:百度网盘

    《择善教育》C/C++黑客编程项目实战教程

     

     

    下载地址:百度网盘

    展开全文
  • Socket编程项目VS开发环境配置

    千次阅读 2018-12-16 09:17:22
    项目属性->连接器->输入->附加依赖项里加入ws2_32.lib
  • C语言编程项目实战(完整)

    万次阅读 2019-03-25 15:05:44
    C语言编程从入门到大师级视频教程 下载地址:百度网盘
  • 课程名称: 传智播客 QT编程 薛国良主讲 视频教程 教学视频课程简介: 传智播客 QT编程 薛国良主讲 视频教程 教学视频讲解了QT编程技术方法,QT基础知识,QT控件,QT消息基础,QT消息过滤器-消息通知-发送自定义消息、...
  • 创建数据库代码: DROP DATABASE IF EXISTS petShop; CREATE DATABASE petShop; USE petShop; /*创建表*/ CREATE TABLE `petStore`( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, ......
  • 编程项目实战课,欢迎参加

    千次阅读 热门讨论 2009-06-26 09:36:00
    因此决定举办本期项目实训班,实训班以实际工作出发,完全参考项目流程和实际开发过程。尽可能的模拟V模型进行开发。  为了解决单纯学习一门语言的枯燥性,我们采用项目应用式的学习方法。在用到某个技术点时我...
  • 课程目录: 小节1 基本概念 32:46 小节2 游戏资源提取及修改 31:41 小节3 CE&OD找地址 31:59 小节4 剩余时间地址计算公式追溯 24:47 小节5 其他数据地址计算公式推导 37:09 小节6 浮点数据查找及程序其他...
  • 16、第十五讲 反射 特性 序列化 动态编程  17、第十六讲 多线程 同步  18、第十七讲 最后一课  19、WinForms 第一讲 基本概念  20、WinForms 第二讲 菜单 托盘 工具栏 状态栏  21、WinForms 第三讲 其他...
  • 我最开始学习《数据结构》课程使在大学二年级,当时编程基础薄弱的我认为它是一门很难的课程,将其和《数学分析》、《高等代数》并列为很难的几门课之一。当时的电脑还不普及,班级中能买到台式机的同学没有几个,...
  • 课程目录: 下载地址:百度网盘
  • 文言文不好玩,16岁高中生开发粤语编程项目

    千次阅读 多人点赞 2021-06-23 14:06:25
    本文转载自程序员极客实验室 粤语编程语言——TheCantonese Programming Language。...那么,今天我们就给大家介绍一个有趣的粤语编程语言 GitHub 项目,其开发者 Stepfen Shawn 似乎(自称)是...
  • 当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期...
  • 《vc++ socket编程核心技术与项目实战》很多学员都有这样的感觉,c++ socket编程的书看了不少,却似懂非懂,编程还是不得要领,做项目的时候经常遇到各种技术障碍。在本套课程中,作者把积累多年的大量socket编程...
  • 物联网项目开发编程语言一览

    千次阅读 2016-07-28 09:56:00
    物联网开发项目正在全球范围内如火如荼的地进行。新型的硬件平台的出现能够让工程师们能够以前所未有的便捷在物联网应用中构建嵌入式系统。然而硬件平台选定,接下来的开发选择也让我们应接不暇,也更具挑战。首先和...
  • 适合 C++ 新手学习的开源项目——在 GitHub 学编程

    万次阅读 多人点赞 2020-11-05 08:15:00
    作者:HelloGitHub-小鱼干俗话说:万事开头难,学习编程也是一样。在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如:我要学习某一门编程语言,...
  • 项目:Hellomod 按照书中项目流程在内核2.6.27.5中实验,出现错误: error : invalid preprocessing directive#MODULE_LICENCE 把前面的#去掉,又出现这样的错误: erro : expected declar
  • 照惯例这周给大家推荐几个Github上高星的优秀项目,我的github:图灵的...在项目中,内容每月 28 号以月刊的形式更新发布,这是一个面向编程新手、热爱编程、对开源社区感兴趣人群的项目,内容每月 28 号以月刊的形...
  • 编程比赛项目和时间汇总

    千次阅读 2018-08-15 17:39:42
    七、微软公司的编程之美(用微软的AI平台) https://studentclub.msra.cn/bop2016/intro   八、codeforces的简称, http://codeforces.com/ 九、帮助企业招人的猿圈Oxcoder: www.oxcoder.com
  • 如果你是正在学习Java的初学者,或者打算转行学习Java编程的小白,那么你一定会对Java能够做什么项目一定很感兴趣。一定希望对Java能够实现哪些东西有所了解。 今天就为大家简单说一下一些可以用Java编程语言练手的...
  • 多线程编程在实际项目中的运用

    万次阅读 多人点赞 2018-03-08 21:31:35
    最近在实际项目中遇到了需要多线程来处理的一个实际问题:一堆视频资源需要上传到一个cc平台,如果串行处理,显然不能很好实用多核的cpu处理器,于是考虑到实用线程的方式进行上传,但是创建多少个线程了?...
  • 基础篇结合示例论述了Delphi的深度编程技术,其中包括9章,分别为:理解Windows消息、进程与线程、自定义组件的编写、文件操作、创建DLL应用程序、两层数据库应用程序、多层数据库应用程序、Socket编程、串口编程;...
  • 所以你弄项目可以弄一个服务器端的项目,也怪不得之前没有找到合适的Linux c的项目,因为你没有弄清楚实际开发里面Linux c编程是用在什么地方。 也怪不得很多招聘要求是写要多线程编程,网络编程,可能实际就是去弄...
  • 不久前,微博热搜火了一个让...现大赛已落幕,根据投票评选出了获奖的项目,截至目前,该话题的阅读已超2.9 亿,讨论9.8万。 这场编程大赛,由百度杨超越贴吧主办,杨超越知乎研究所、杨超越码农后援会协办。在...
  • 项目中使用CLR编程

    千次阅读 2014-11-03 11:05:43
    1、创建自己的项目 2、右键“解决方案。。。”→添加→新建项目→C#→数据库→SQL Server项目,如下图所示: 3、选择操作数据库 4、创建存储过程 5、代码 using System; using System.Data; using System.Data...
  • 编程可以这样学

    万人学习 2017-06-26 09:27:55
    编程可以这样学》提出一种全新的学习理念,在我们去窥探各种语言或技术的细枝末节之前,老张会带着大家先去程序员的世界里遨游一圈:C语言只是用来写黑底白字的控制台程序吗?算法在游戏开发中有什么用?学校开设...
  • 【C/C++】开发中大型项目的第一步--多文件编程

    千次阅读 多人点赞 2020-04-12 23:37:29
    文章目录1....C/C++通常不需要将程序分成多个文件,但是在项目代码量大时,将源码拆成多可文件,可以使代码管理方便很多,且减少编译大型程序的编译时间,每次改代码,只需要重新编译更改的文件(类似...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,069,309
精华内容 427,723
关键字:

编程项目