文章中大多是我之前从各类文章中摘取的有关计算机的名词解释,现在想对自己之前的文档做个整理,由于当时并未标明来源,若有侵权请联系我删除相关内容
分布式与集群
机器学习与深度学习
机器学习 专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,它是人工智能的核心,是指用某些算法指导计算机利用已知数据得出适当的模型,并利用此模型对新的情境给出判断的过程。任何通过数据训练的学习算法的相关研究都属于机器学习,是使计算机具有智能的根本途径
深度学习 深度学习是学习样本数据的内在规律和表示层次 它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法 。
深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理都取得了很多成果深度学习(DL )是机器学习(ML )领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI )。
自然语言处理
自然语言处理定义
就是利用计算机的计算能力对人类的自然语言的形、音、 义等信息进行处理,即对字、词、句、篇章这些不同层次的信息,进行输入、输出、识别、分析、理解、生成操作,并对这些信息进行加工。进而实现人机或是机器与机器间的信息交流
自然语言处理应用
自然语言处理的主要解决的技术问题包括机器翻译、文本摘要的生成、文本分类任务、文本写作校对、信息的抽取、语音的合成、以及语音识别等。可以说,自然语言处理就是要计算机理解自然语言,自然语言处理主要包括两个流程,分别是自然语言理解和自然语言生成。自然语言理解是指计算机能够理解人类语言的意义,读懂人类语言的潜在含义,自然语言生成则是指计算机能以通过自然语言文本来表达它想要达到的意图。
1、机器翻译
机器翻译因其效率高、成本低,机器翻译属于自然语言信息处理的一个分支,能够将一种自然语言自动生成另一种自然语言又无需人类帮助的计算机系统。目前,谷歌翻译、百度翻译、搜狗翻译等人工智能行业巨头推出的翻译平台逐渐凭借其翻译过程的高效性和准确性占据了翻译业的主导地位。
白话机器翻译原理 基于规则(词,结构,中间语) 机器学习翻译(大量文本库),神经网络(循环神经网络 联系上下文)
2. 邮件过滤:
当前,垃圾邮件过滤器 有许多人在使用电子邮件时遇到过这些问题:不需要的电子邮件仍然被接收,或者重要的电子邮件被过滤掉。事实上,判断一封邮件是否是垃圾邮件,首先用到的方法是“关键词过滤”,如果邮件存在常见的垃圾邮件关键词,就判定为垃圾邮件。但这种方法效果很不理想,一是正常邮件中也可能有这些关键词,非常容易误判,二是将关键词进行变形,就很容易规避关键词过滤。
自然语言处理通过分析邮件中的文本内容,能够相对准确地判断邮件是否为垃圾邮件。目前,贝叶斯(Bayesian)垃圾邮件过滤是备受关注的技术之一,它通过学习大量的垃圾邮件和非垃圾邮件,收集邮件中的特征词生成垃圾词库和非垃圾词库,然后根据这些词库的统计频数计算邮件属于垃圾邮件的概率,以此来进行判定。
3 智能信息推荐(个性化推荐)
自然语言处理可以依据大数据和历史行为记录,学习出用户的兴趣爱好,预测出用户对给定物品的评分或偏好,实现对用户意图的精准理解,同时对语言进行匹配计算,实现精准匹配。例如,在新闻服务领域,通过用户阅读的内容、时长、评论等偏好,以及社交网络甚至是所使用的移动设备型号等,综合分析用户所关注的信息源及核心词汇,进行专业的细化分析,从而进行新闻推送,实现新闻的个人定制服务,最终提升用户粘性。有效解决面对海量信息的尴尬,以及建立起适应性的个性化的应用系统
4 拥有有效的文本分类方法,以建立智能推荐系统,使其可以根据用户的个人兴趣来定位并推荐相关的新闻资料。 新闻主题分类(文章分类):根据文章内容(或者结合标题)给新闻等其他文章一个类别,比如财经、体育、军事、明星等等。一般在新闻资讯方面使用比较多。情感分析:两类(正面、负面) 一般在影评(比如豆瓣、淘票票)、商品评价(比如淘宝、京东的商品评价)等对商品和服务的评价方面应用比较多。
自然语言处理的意义
自然语言处理要解决的问题的层次深度超过了计算机视觉,自然语言处理是以理解人类的世界为目标,而计算机视觉所完成的就是所见即所得。这是两个不同层次的任务。而从长远来看,自然语言处理完成的任务意义远大于计算机视觉,自然语言问题全面解决,将会标志着人工智能的绝对意义上的诞生
计算机视觉(cv)
计算机视觉定义
计算机视觉是使用计算机及相关设备对生物视觉的一种模拟。它的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样。计算机视觉就是用各种成像系统代替视觉器官作为输入敏感手段,由计算机来代替大脑完成处理和解释。计算机视觉的最终研究目标就是使计算机能象人那样通过视觉观察和理解世界,具有自主适应环境的能力。
计算机视觉应用
目前,非常火的VR、AR,3D处理等方向,都是计算机视觉的一部分。
计算机视觉的应用,无人驾驶,无人安防,人脸识别,车辆车牌识别,以图搜图,VR/AR,3D重构,医学图像分析,无人机。 例如,计算机视觉的一个重要应用领域就是自主车辆的视觉导航,还没有条件实现像人那样能识别和理解任何环境,完成自主导航的系统。因此,人们努力的研究目标是实现在高速公路上具有道路跟踪能力,可避免与前方车辆碰撞的视觉辅助驾驶系统。
机器学习自然语言处理的关系
机器学习
是一类过程的统称;(参考定义:在不直接针对问题进行编程的情况下,赋予计算机学习能力的研究领域)
自然语言处理(NLP)
是机器学习在文本、语音等自然语言数据集上的应用;在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统
文本分类问题
文本分类问题其方法可以归结为根据待分类数据的某些特征来进行匹配,当然完全的匹配是不太可能的,因此必须选择最优的匹配结果,从而完成分类
云计算(cloud computing)
是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。
云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒种)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段所说的云服务已经不单单是一种分布式计算,而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果
“云”实质上就是一个网络,狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无限扩展的,只要按使用量付费就可以,“云”就像自来水厂一样,我们可以随时接水,并且不限量,按照自己家的用水量,付费给自来水厂就可以
物联网
物联网的定义是通过射频识别、红外感应器 等信息传感设备, 把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化管理的一种网络射频识别技术(RFID)、传感器技术、
智能嵌入技术将到更加广泛的应用 。
物联网的基本特征从通信对象和过程来看,物与物、人与物之间的信息交互是物联网的核心。物联网的基本特征可概括为整体感知、可靠传输和智能处理 。
1整体感知—可以利用射频识别、 智能传感器等感知设备感知获取物体的各类信息。
2可靠传输—通过对互联网、无线网络的融合,将物体的信息实时、准确地传送 。
3智能处理—使用各种智能技术,对感知和传送到的数据、信息进行分析处理,实现监测与控制的智能化。
在物联网应用中有两项关键技术,分别是传感器技术和嵌入式技术。涉及通信技术、传感技术、网络技术以及RFID技术、嵌入式系统技术等多项知识相关课程第一个收集传感信息,进行进一步的存储和处理,( 射频识别技术,传感器技术)
第二个通过互联网传输信息和整理,(无线网络技术及嵌入式系统,物联网信息处理、信息传输、信息安全)
通过了前期的收集整理数据,你要对这些数据进行合理的管理和控制,从而对物体进行管理和控制。(具备物联网体系结构及物联网软、硬件的基本知识)
嵌入式系统
嵌入式系统 ,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。
一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成 硬件组成软件组成
中间件(独立的系统级软件)能够屏蔽操作系统和网络协议的差异
是一种独立的系统软件服务程序,能够达到资源共享、功能共享的目的。分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件。更多的应用软件被要求在许多不同的网络协议、不同的硬件生产厂商以及不一样的网络平台和环境上运营。需要开发多种应用程序来达到运营
大数据
大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。适用领域范围云计算,物联网,互联网+ 人工智能 ,大数据必然无法用单台的计算机进行处理,必须采用分布式架构。适用于大数据的技术,包括大规模并行处理(MPP)数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
PHP 即“超文本预处理器”,是一种通用开源脚本语言。
PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及
PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。 它具有成本低、速度快、可移植性好、
内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。 ## sdk (软件开发工具包) sdk
(软件开发工具包)软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
API应用编程接口:
操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作)例
- 一个提供特定功能的软件
- 整个服务器、整个应用或一款应用的很小一部分
- 在 面向对象编程中,代码被编成了对象。你的应用程序也许拥有数百个能够实现交互的对象。每一个对象都有一个API——这是一组公共方法和属性,对象可以用它来与应用中的其他对象进行交互。
APK
是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件即Android安装包(apk)。Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”
HTML
HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等
Xshell
Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的,通俗来讲就是远程操控。使用人群主要是大型企业的网管,研究机构、大学院校的网络服务器管理人员
软件测试环境(包括硬件环境和软件环境)
硬件环境
指测试必需的服务器、客户端、网络连接设备,以及打印机/扫描仪等辅助硬件设备所构成的环境;让你自己的电脑连接到服务器上,共享服务器的配置和资源
软件环境
指被测软件运行时的操作系统、数据库以及其他应用软件构成的环境。
开发与测试环境
开发与测试环境一般都是单独搭建的,开发与测试环境的分离是为了方便重现开发环境无法重现的bug,同时开发可以并行地修复bug,如果用开发环境来进行测试,开发人员进行某项操作后发生系统崩溃或者系统不能正常运行的意外,此时测试工作也不得不停止。关于测试环境的搭建,每个公司都有不一样的流程和方法
exe文件
就是在 WINDOWS环境下,可以直接打开运行的命令。 EXE File英文全名executable file ,译作可执行文件,可移植可执行 (PE)
文件格式的文件,它可以加载到内存中,并由操作系统加载程序执行,是可在操作系统存储空间中浮动定位的可执行程序。
如记事本程序notepad.exe ,可以用来编辑文档,如:测试.txt双击打开notepad.exe记事本程序来进行编辑处理。
一个Windows应用程序,例如大型游戏,除了exe文件外,其余的文件都是些什么文件?有什么内容?
exe是给用户一个入口文件还有一些你看到的什么dat,ini,xml等文件,这些就属于数据文件,
以演唱会为例子:比如你是去看陈奕迅演唱会,陈奕迅好比是exe可执行文件。你们关注的是陈奕迅,也就是普通人要执行软件,首先去找exe后缀的文件。但演唱会有很多元素,配乐,音响:可以理解为dll文件,灯光,舞台等等理解为资源文件。配乐,音响,灯光,舞台等等,这些不是你们主要关注的对象,他们只是辅助陈奕迅演唱会顺利进行的配角,他们就理解为各种资源和各种库。执行exe文件,就代表演唱会开始,然后需要用到各种各样的配角去配合完成演唱会,exe文件就去调用需要的dll,比如,(配乐.dll),执行"配乐.dll",可以开始播放背景音乐,调用灯光.gif,就可以呈现出各种各样的光效
dll就可以去控制灯光…(省略500字)所以打包下来,就是以下几个东西
:陈奕迅.exe电源.dll配乐.dll灯光.gif灯光开始.dll安保.dll演出服装.png…
但有些时候,我们觉得,dll文件这么多,会不会很冗余,所以我们辞掉了灯效师和控制电源的两个人,然后请了一个既会控制电源,又会操控灯效的人。(把两个dll合并成一个,就有一个power.dll,演唱会开始了后,我发出命令,power.dll,帮我打开舞台的电源,然后power就会打开舞台电源,然后你再叫他给我配合一下灯效,他就会帮你打灯效)一场演出下来,我们只会去关注陈奕迅他怎么表演,但其他的舞台效果,各种后台工作人员,就是各种dll和资源文件。
框架技术
技术框架(technological Framework)
是整个或部分技术系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,技术框架是可被技术开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。 架构设计是软件设计过程的早期阶段,它把需求分析和设计流程连接在一起。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作
框架
说白了就是强制你使用一些好的架构设计,就不需要你在这方面在浪费时间了。好的架构设计可以使你的程序更易于维护和扩展,在开发阶段也有利于分工。简单的说struts,它是一个MVC框架,如果你使用了struts,你自然就使用了MVC这种良好的设计模式,它可以使你的业务逻辑跟视图分离,保持程序良好的扩展性和维护性。其实就是这样,框架就是这样,你按照他的要求去开发,开发出来的东西就遵循了良好的设计。框架和库的联系
是很紧密的,我的理解就是不论是框架还是库都是为了提高我们开发的效率而存在的。库的使用上会简单一些,但是功能不是很全面,而框架的功能很全面但是需要我们按照它的规定去使用。
开源框架
是定义开源软件实现的一组功能集或工具、接口依赖关系及实现逻辑。
软件架构(software architecture)
定义
是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口(计算机科学)来实现。 软件体系结构是构建计算机软件实践的基础。
工作
软体设计师中有一些技术水平较高、经验较为丰富的人,他们需要承担软件系统的架构设计,也就是需要设计系统的元件如何划分、元件之间如何发生相互作用,以及系统中逻辑的、物理的、系统的重要决定的做出
设计目标
正如同软件本身有其要达到的目标,软件架构设计要达到如下的目标:
1.可靠性 。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。
2.安全性 。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。
3.可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。
4.可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。
5.可伸缩 (Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。
6.可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。
7.客户体验(Customer Experience)。软件系统必须易于使用。
8.市场时机(Time to Market)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。
种类
根据我们关注的角度不同,可以将架构分成三种:
1.逻辑架构**、软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等如图是一个逻辑架构的例子 从上面这张图中可以看出,此系统被划分成三个逻辑层次,即表象层次,商业层次和数据持久层次。每一个层次都含有多个逻辑元件。比如WEB服务器层次中有HTML服务元件、Session服务元件、安全服务元件、系统管理元件等。
2.物理架构、软件元件是怎样放到硬件上的。比如下面这张物理架构图描述了一个分布于北京和上海的分布式系统的物理架构,图中所有的元件都是物理设备,包括网络分流器、代理服务器、WEB服务器、应用服务器、
报表服务器、整合服务器、存储服务器。主机等等。如图是一个物理架构的例子
3.系统架构、系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。系统架构的设计要求架构师具备软件和硬件的功能和性能的过硬知识,这一工作无疑是架构设计工作中最为困难的工作。
框架的整合
虽然,我们一直强调整体大于单个的总和,但是如何将单个“个体”正确的组合成发挥更大效应的“整体”却并非易事。因为这些单独的框架都由不同的团队开发,框架与框架之间存在天然的阻抗,这种框架和框架之间的“代沟”需要额外配置和编码才能弥合。每个框架都拥有自己的配置文件,框架的整合经常带来配置的灾难,如将Spring和Struts整合时,不仅Struts本身的配置文件一个不能少,在Spring中还需要每个Action提供配置信息,而且两者需要遵守一定的契约。
相互搭配的框架和框架之间经常会出现相似的或重复的功能,如何取舍,如何使用往往让开发者们为难。如Spring本身提供了AOP方法返回结果的缓存功能,而Hibernate本身也提供二级缓存,究竟两者都使用呢,还是择一而从?往往中间又会引出很多争论。
一个整合性的框架由多个出自于不同团队的框架组成,整合框架在这些组合框架之上高位运行,底层框架的升级变化就造成了组合框架水涨船高的局面,整合框架脆弱的稳定性很容易被打破。组合框架的升级还直接带来了开发团队学习的压力,为了熟悉框架新功能和改进,在开发工作之余,他们不得不努力压榨自己的业余时间不断地充电学习。
fork
指的是把别人托管在Github上的代码复制出一个属于自己的分支 “复刻(英语:fork,又译作派生、分支)是一个软件工程名词,发生在当开发人员从一个软件包拷贝了一份源代码然后在其上进行独立的开发,创建不同的软件。这个术语不只意味着版本控制上的分支,同时也意味着开发者社区的分割,是一种形式的分裂。自由及开放源代码软件可以从原有开发团队复刻而不需要事先的许可,这也不会违反任何著作权法律。授权的专有软件(例如Unix)的复刻也时有发生。”
钓鱼网站是指欺骗用户的虚假网站。“钓鱼网站”的页面与真实网站界面基本一致,欺骗消费者或者窃取访问者提交的账号和密码信息。钓鱼网站一般只有一个或几个页面,和真实网站差别细微 。钓鱼网站是互联网中最常碰到的一种诈骗方式,通常伪装成银行及电子商务、窃取用户提交的银行账号、密码等私密信息的网站,可用电脑管家进行查杀
外观看,与真正的银行网站无异,但却在用户以为是真正的银行网站而使用网络银行等服务时将用户的账号及密码窃取,从而使用户蒙受损失。防止在这类网站受害的最好办法就是记住正宗网站的网址,并当链接到一个银行网站时,对网址进行仔细对比
又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。Pinterest采用的是瀑布流的形式展现图片内容,无需用户翻页,新的图片不断自动加载在页面底端,让用户不断的发现新的图片
pip 是一个以 Python 计算机程序语言写成的软件包管理系统,他可以安装和管理软件包,另外不少的软件包也可以在“Python 软件包索引”中找到。
命令行接口
1、pip 的其中一个主要特点就是其方便使用的命令行接口,这让用户可以透过以下的一句文字命令来轻易地安装 Python 软件包:pip install some-package-name
2此外,用户也可以轻易地透过以下的命令来移除软件包:pip uninstall some-package-name
3pip 也拥有一个透过“需求”文件来管理软件包和其相应版本数目的完整列表之功能,这容许一个完整软件包组合可以在另一个环境(如另一部计算机)或虚拟化环境中进行有效率的重新创造。这个功能可以透过一个已正确进行格式化的文本文件和以下的命令来完成:pip install -r requirements.txt
anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而python是一个编译器,如果不使用anaconda,那么安装起来会比较痛苦,各个库之间的依赖性就很难连接的很好
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行caffe软件。简单的,插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。
中间机就是从非涉密计算机向涉密计算机单向导入非涉密信息的一台专用计算机。
涉密计算机的使用单位需配置中间机和中间盘。
中间机和中间盘由单位安全保密管理员负责管理。
中间机就是从非涉密计算机向涉密计算机单向导入非涉密信息的一台专用计算机。
中间盘指用于中间机向涉密计算机传递非涉密信息的专用U盘。
中间机和中间盘都不得处理任何形式的涉密信息。
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
gcc:
gcc和g++是c/c++的linux系统集成的编译器,源文件的后缀应为 .C/.cpp/.c++/.cc等
编译器可以将C、C++等语言源程序、汇编程序编译、链接成可执行程序。GDB:
gdb是Linux下一款功能强大的调试工具,它既能在反汇编过程中充当一件称手的工具,也能在程序debug过程中为为程序员提供帮助,其唯一美中不足的是在Linux环境下没有图像界面(当然没有功能的封装也是其功能强大的原因之一,而且现在的ddd也提供了GUI)。
1.在Windows环境下,许多IDE以图形界面提供类似gdb的功能,一般也较为好用。但是一方面,gdb提供给使用者更大的自由,另一方面gdb也是目前几乎所有Linux发行版本的自带软件,简单易得;
2.调试程序时尽量减少对诸如printf等输出函数的依赖。许多作者给出的解释是重新修改代码和编译是一件麻烦的差事。这一点笔者起初也并不理解,觉得上述操作确实不算麻烦(…)。后来发现,对于一个单一文件,代码不超过100行的文件,上述操作确实在可接受范围。但对于文件众多,工程量巨大的项目,修改代码、重新编译文件是一件极其耗时且麻烦的操作。如果在Windows环境下进行大工程的debug所需要的修改、重编译所带来的频繁鼠标或快捷键操作还不能使你回心转意的话,相信我,在Linux的命令行模式下进行相同的操作会让你有所改变的;
3.习惯是逐渐养成的,不论好坏都是。或许只有逐渐在看起来不那么方便的GDB中锻炼起来,你才能在无论什么编译环境中debug的得心应手,可能那时,你会嫌弃图形界面提供的工具不够给力的;
Raspberry Pi(中文名为“树莓派”,简写为RPi,是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。 随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry
Pi电脑板,中文译名"树莓派"。卡片主板周围有1/2/4个USB接口和一个10/100
以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。
Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。