原文:【Xamarin开发 Android 系列 4】 Android 基础知识

什么是Android?

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,而且不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

什么是Android手机?

Android手机就是运行在谷歌Android手机操作系统上的手机,统称为Android手机,也可称为gphone手机。

名称来源

Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。Android的Logo是由Ascender公司设计的。其中的文字使用了Ascender公司专门制作的称之为“Droid ” 的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。

版本类型

Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(Android Beta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于 Android 1.5 发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),根据最新消息新一代Android版本将命名为果冻豆(Jelly Bean)。

各版本发布时间

Android版本 发布日期
Android 1.0 2008年9月
Android 1.5 Cupcake(纸杯蛋糕) 2009年4月30日
Android 1.6 Donut(甜甜圈) 2009年9月15日
Android 2.0/2.0.1/2.1 Eclair(松饼) 2009年10月26日
Android 2.2/2.2.1 Froyo(冻酸奶) 2010年5月20日
Android 2.3 Gingerbread(姜饼) 2010年12月7日
Android 3.0 Honeycomb(蜂巢) 2011年2月2日
Android 3.1 Honeycomb(蜂巢) 2011年5月11日
Android 3.2 Honeycomb(蜂巢) 2011年7月13日
Android 4.0 Ice Cream Sandwich(冰激凌三明治) 2011年10月19日
Android 4.1 Jelly Bean(果冻豆) 2012年6月28日
Android 4.2 Jelly Bean(果冻豆) 2012年10月30日
Android 4.3 Jelly Bean(果冻豆) 2013年7月24日
Android 4.4 KitCat(巧克力) 2013年10月31日
Android 5.0 Lolipop(棒棒糖) 2014年10月15日
Android 5.1 Lolipop(棒棒糖) 2015年3月10日

Android平台优势

1)、开放性

在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

2)、挣脱运营商的束缚

在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从 iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。

3)、丰富的硬件选择

这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian 中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

4)、不受任何限制的开发商

Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、**方面的程序和游戏如何控制正是留给Android难题之一。

5)、无缝结合的Google应用

如今叱咤互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

Android研发历史

2005年

Google收购了成立仅22个月的高科技企业Android公司。

2007年

11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成。这一联盟将支持谷歌发布的手机操作系统以及应用软件,将共同开发Android系统的开放源代码。

2008年

5月28日,Patrick Brady于Google I/O大会上提出Android HAL架构图。

8月18日,Android获得美国联邦通信委员会的批准。

9月22日,谷歌正式对外发布第一款Android手机——HTC G1。

9月23日,谷歌发布Android1.0。

9月24日,全球业界都表示不看好Android操作系统,并且声称最多1年,Android就会被Google关闭。

2009年

4月30日,Android1.5正式发布。

5月10日,HTC G1和HTC G2市场大卖,成为仅次于iPhone的热门机型。

9月25日,Android1.6正式发布。

9月29日,HTC Hero G3广受欢迎,成为全球最受欢迎的机型。

10月28日,Android 2.0 智能手机操作系统正式发布。

11月10日,由于Android的火热,Android平台出现第一个恶意间谍软件:Mobile Spy。

2010年

1月7日,Google发布了旗下第一款自主品牌手机:Nexus one(HTC G5)。

1月,谷歌与Linux基金会就Linux内核的同步和维护意见不一致而产生了矛盾。

2月3日,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”上除去。

5月19日,Google正式对外发布Android2.2智能操作系统。

5月20日,Google对外正式展示了搭载Android系统的智能电视-Google TV,该电视为全球首台智能电视。

7月1日,Google宣布正式与雅虎、亚马逊合作,并且在Android上推出多项Kindle服务和雅虎服务。

7月9日,美国NDP集团调查显示,Android系统已占据了美国手机市场28%的份额,全球17%的市场份额。

8月12日,Android平台出现第一个木马病毒:Trojan-SMS.AndroidOS.FakePlayer.a。

9月,Android应用数量超过9万个。

9月21日,Google对外公布数据,每日销售的Android设备的新用户数达到20万。

10月26日,Google宣布Android达到第一个里程碑:电子市场上Android应用数量达到10万个。

12月7日,Google正式发布Android2.3操作系统。

2011年

1月,Google对外宣布Android Market上的应用数量超过20万。

1月,Google对外公布数据,每日Android设备的新用户数达到了30万。

2月,美国移动用户36%拥有智能手机。当中,48%的智能手机用户选择Android智能手机。约32.1%的智能手机用户选择了苹果iPhone。黑莓及其它智能手机占有11.6%的份额。

2月2日,Android3.0正式发布。

2月3日,谷歌发布了专用于平板电脑的Android 3.0蜂巢系统。

6月,Android在日本的智能手机操作系统市场占有率达到57%。

7月,Android在欧洲的智能手机操作系统市场占有率达到了22.3%

7月,Google对外公布数据,Android每天的新用户达到55万,Android设备用户总数达1.35亿。

8月,谷歌收购摩托罗拉移动。

8月,Google对外宣布Android Market上的应用数量超过30万。

8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一。

8月,Android在韩国的智能手机操作系统市场占有率达到了95%。

8月,Android系统在35个国家市场占有率第一,平均市场占有率达到48%。

8月,Android系统成为亚太地区第一大系统,市场占有率为亚太地区第一大。

9月,Android在美国的智能手机操作系统市场占有率达到43%。

10月19日,谷歌正式发布Android 4.0操作系统。

11月,Android Market上提交审核的应用程序数量达到50万。

11月初,谷歌对Android Market上的应用程序进行了大清理,据统计,此次共清理了约18万个应用程序,包括流氓应用、病毒软件、侵犯版权、低质量和滥竽充数的各种程序,谷歌将这一系列应用删除后,使得Android市场中的优质应用程序总数到31.5万。

11月15日,Android在中国大陆的智能手机操作系统市场占有率达到了58%。

11月20日,谷歌宣布启动了Android Market应用审核、取缔、清扫行为,定期对电子市场上存在的不合格、低质量、违法恶意的应用程序进行清理。

11月18日,美国NPD数据显示,Android和iOS平台上的游戏占有率都首度超过任天堂的DS掌机和索尼的PSP掌机,手机游戏玩家也超过了掌机玩家,游戏开发商更倾向于向Android和iOS手机上开发游戏。

11月18日,谷歌报告显示,通过谷歌服务器激活的Android设备用户总数已经超过2亿,每天激活的新用户数超过55万,而这仅仅是通过谷歌服务器激活的用户设备数。

12月9日,Google对外宣布,Android Market的累计下载量已经突破100亿次,平均每月的下载量为10亿次。

12月18日,Google移动事业部副总裁Andy Rubin表示,每天激活的Android设备已达到70万部。

12月26日,Andy Rubin通过Twitter宣布,圣诞节的前两天24日和25日,共有370万部Android设备被激活。

2012年

1月4日,数据显示,Android Market上的应用程序数量突破40万个,每4个月增加10万个应用程序

1月5,数据显示,在谷歌电子市场上登记的Android开发者已经达到了10万名。

1月20日,谷歌报告显示,通过谷歌服务器激活的Android设备用户总数已经超过2.5亿,距离去年11月的数量,在短短2个月时间内全球共卖出5000万台安卓设备,平均每秒钟就卖出10台安卓设备。

2月4日,comScore等数据市场研究机构的数据显示,安卓在美国手机市场的占有率达到了47.3%。

2月5日,美国联邦政府宣布成立专门的Android实验室进行适用于军方的Android第三方ROM的定制工作。

2月15日,美国联邦政府总务署宣布已经采购了2万台Android手机供政府人员使用。

2月22日,Android在中国大陆的智能手机操作系统市场占有率达到了68.4%。

2月28日,谷歌正式宣布,Android设备每天激活量达到85万台,通过谷歌服务器激活的Android设备用户总数突破3亿台,距离2012年1月的数量,在短短1个月时间内全球共卖出5000万台安卓设备,平均每秒钟就卖出15台安卓设备。

2月28日,谷歌官方数据显示,Android电子市场(Android Market)上的应用程序数量已经突破45万个,一年内增加30万个。

3月1日,Google对外宣布,Android Market的累计下载量已经突破130亿次。

3月4日,Android在印度的智能手机操作系统市场占有率达到了34%。

4月4日,Android在美国市场的占有率增长到了50.1%。

5月1日,Android在东南亚各国的平均份额达到了49%。

.................

Android系统架构

Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。

在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

而在Android系统底层方面,Android使用C/C++作为开发语言。

应用程序(部分)

早期的Android应用程序开发,通常通过Android SDK(Android软件开发包)下使用Java作为编程语言来开发应用程序,但通过不同的软件开发包,则使用的编程语言也不同。

例如开发者可以通过Android NDK(Android Native开发包)使用C语言或者C++语言来作为编程语言开发应用程序。同时谷歌还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的Visual Basic语言。此外,谷歌公司还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。

Java开发方面

Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。 Android结构其中Activity等同于J2ME的MIDlet,一个 Activity 类(Class)负责创建视窗(Windows),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(Stopped),甚至被系统清除(Kill)。

View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有BitMap等同于J2ME的Image。

C/C++开发方面

早期的Android开发只支持Java作为编程语言开发应用程序,因而使得其他语言开发者只能望而却步。2010年4月,谷歌正式对开发者发布了Android NDK,NDK允许开发者使用C/C++作为编程语言来为Android开发应用程序,初版的NDK使得开发者看到了C/C++在Android开发中的希望。

但是,当前版本的NDK在功能上还有很多局限性:NDK并没有提供对应用程序生命周期的维护;NDK也不提供对Android系统中大量系统事件的支持;对于作为应用程序交互接口的UI API,当前版本的NDK中也没有提供。但是相对于初版的NDK,现在的NDK已经进行了许多重大的功能改进。

由此可见,NDK仍然需要完善和发展,相信未来随着NDK的发展,NDK可以做得更多更好。

中介软件

操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。

Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。

Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。

Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。

Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。

Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。

硬件抽像层

Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。

HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,就可以取得操作函数。

系统内核

Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。

目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。

安全权限机制

Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。

系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。

Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。

安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:

拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。

一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。

【Xamarin开发 Android 系列 4】 Android 基础知识的更多相关文章

  1. Android音频开发(1):基础知识

    Android音频开发(1):基础知识 导读 人的说话频率基本上为300Hz~3400Hz,但是人耳朵听觉频率基本上为20Hz~20000Hz. 对于人类的语音信号而言,实际处理一般经过以下步骤: 人 ...

  2. Web程序员开发App系列 - 调试Android和IOS手机代码(补图)

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  3. [Android系列—] 2. Android 项目文件夹结构与用户界面的创建

    前言 在 [Android系列-] 1. Android 开发环境搭建与Hello World 这一篇中介绍了怎样高速搭建Android开发环境, 并成功了建立一个没有不论什么代码更改的 Androi ...

  4. Android中的一些基础知识(三)

    最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 在TextView中显示图像(使用< img>标签) 在TextView中显示图片的方法有许 ...

  5. Android中的一些基础知识(二)

    这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...

  6. Xamarin.Forms学习系列之Android集成极光推送

    一般App都会有消息推送的功能,如果是原生安卓或者IOS集成消息推送很容易,各大推送平台都有相关的Sample,但是关于Xamarin.Forms的消息推送集成的资料非常少,下面就说下Xamarin. ...

  7. 【Linux系列】Linux基础知识整理

    Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...

  8. 开发技术--浅谈python基础知识

    开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对 ...

  9. 网站开发进阶(十五)JS基础知识充电站

    JS基础知识充电站 1.javascript alert弹出对话框时确定和取消两个按钮返回值? 用的不是alert对话框,是confirm confirm(str); 参数str:你要说的话或问题: ...

  10. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

随机推荐

  1. js获取随机颜色

    var bg_colour = Math.floor(Math.random() * 16777215).toString(16); bg_colour = "#" + (&quo ...

  2. java学习之三种常用设计模式

    一.适配器设计模式 简单来说,就是通过一个间接类来选择性的来覆写一个接口 interface Window{ public void open() ; // 打开窗口 public void clos ...

  3. 接口测试入门(4)--接口自动化测试框架 / list和map用法 / 随机选取新闻 (随机数生成) / 接口相关id映射

    一.接口自动化测试框架 为了更好的组织测试方法,测试用例并且持续集成,我们选择了  java+testNG(测试用例组织)+gitlab(代码版本管理)+Jenkins(持续集成工具) 作为一整套的自 ...

  4. Java面向对象(二、继承)

    Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...

  5. MAC OS 更新GIT版本时遇到的问题

    在更新git版本时,没有备份就删掉了原先的版本,在安装完2.18.0的新版本后,使用命令行git --version,返回错误git not a developer tool or in PATH. ...

  6. PHP面向对象的三大特征操作——封装、继承、多态(下)

    <?php 继承(单继承)特点:一个子类只有一个父类,一个父类可以有多个子类.//父类(基类)class Ren{    public $name;    public function say ...

  7. junit 基础使用

    junit百度百科: JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JU ...

  8. lombok(@Getter&amp;@Setter)

    Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法. 官方地址:https://project ...

  9. 使用 JSON-lib 出现异常 java.lang.reflect.InvocationTargetException

    我是在使用json时引起的这个异常,上面是使用json-lib用到的几个jar包,原因是在commons-lang3-3.1.jar这个jar上,commons-lang3和commons-lang会 ...

  10. 深度学习课程笔记(十三)深度强化学习 --- 策略梯度方法(Policy Gradient Methods)

    深度学习课程笔记(十三)深度强化学习 --- 策略梯度方法(Policy Gradient Methods) 2018-07-17 16:50:12 Reference:https://www.you ...