`
xujinquan19
  • 浏览: 145230 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

《Android应用开发揭秘》

                                               ///////http://www.iteye.com/wiki/hzbook/2249-Android

 

Android应用开发揭秘(国内首本基于Andriod 2.0的经典著作,5大专业社区一致鼎力推荐!)
 
书名:Android应用开发揭秘
作者:杨丰盛
出版社:机械工业出版社
ISBN:9787111291954
出版日期:2010 年3月(1版2次)
开本:16
页码:515
版次:1-2
定价:69元
豆瓣网讨论地址:http://www.douban.com/subject/4200822/
China-pub预订地址:http://www.china-pub.com/196305
 

第一部分  准备篇
 
第1章  Android开发简介
 
在Google及其开放手机联盟推出基于Linux平台的开源手机操作系统Android之后,Google又不惜重金举办了Android开发者大赛,吸引了众多开发者的目光。Android不仅功能强大,而且具有开放和免费等先天优势,全球范围内的电信行业、手机制造商因此毫不犹豫地加入到Android开放手机联盟中来。2008年9月22日,美国运营商T-Mobile USA在纽约正式发布了第一款基于Android的手机--T-Mobile G1。这让更多的移动设备厂商看到了Android的光明前景,并纷纷加入其中,Android甚至已经涉足上网本市场。中国移动也在Android的基础之上推出了自己的操作系统OMS,而基于OMS操作系统的联想O1手机也即将上市,2009年年底将会有更多的Android手机出现。

随着Android手机的普及,Android应用的需求势必会越来越大,这将是一个潜力巨大的市场,会吸引无数软件开发厂商和开发者投身其中。作为程序员的我们,当然也不应该落后于人,赶快加入到Android应用的开发阵营中来吧!
 
1.1  Android基本概念
Android一词本意是指“机器人”,当然现在大家都知道它是Google推出的开源手机操作系统。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。它是由一个由 30 多家科技公司和手机公司组成的“开放手机联盟”共同研发的,这将大大降低新型手机设备的研发成本。完全整合的全移动功能性产品成为“开放手机联盟”的最终目标。
 
1.1.1  Android简介
Android 作为Google移动互联网战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。Google的目标是让移动通信不依赖于设备,甚至是平台。出于这个目的,Android 将完善而不是替代Google长期以来推行的移动发展战略:通过与全球各地的手机制造商和移动运营商成为合作伙伴,开发既实用又有吸引力的移动服务,并推广这些产品。

Android平台的研发队伍阵容强大,包括Google、HTC(宏达电)、T-Mobile、高通、摩托罗拉、三星、LG以及中国移动在内的30多家企业都将基于该平台开发手机的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。“开放手机联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优质的移动服务。同时,开发商也将得到一个新的开放级别,更方便地进行协同合作,从而保障新型移动设备的研发速度。因此Android 是第一个完整、开放、免费的手机平台。下面我们来欣赏一下第一款基于Android操作系统的手机G1,外观相当漂亮,如图1-1所示。

Android系统具有如下5个特点:
*  开放性。Google与开放手机联盟合作开发了 Android,Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
*  应用程序无界限。Android 上的应用程序可以通过标准 API 访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。
*  应用程序是在平等的条件下创建的。移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。
*  应用程序可以轻松地嵌入网络。应用程序可以轻松地嵌入HTML、JavaScript 和样式表,还可以通过 WebView 显示网络内容。
*  应用程序可以并行运行。Android 是一种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时,应用程序可以生成通知以引起注意。

为什么Android手机如此受用户青睐,下面我们来看看Android究竟有些什么功能在吸引着我们。
(1)智能虚拟键盘。虚拟键盘的出现意味着基于Android 1.5或以上版本(Android 2.0)的移动设备可以同时支持物理键盘和虚拟键盘。不同的输入方式可满足用户在特定场景的需求。Android虚拟键盘可以在任何应用中提供,包括Gmail、浏览器、SMS,当然也包括大量的第三方应用,如自动校正、推荐、用户词典等。不同于其他手机平台,Android 1.5及其以上的版本还支持第三方虚拟键盘应用的安装,如图1-2所示。
(2)使用Widget实现桌面个性化。可以用Widget“武装”自己的桌面。大多数小的Web应用都是从网络上获得实时数据并展示给用户的。Android预装了5个桌面Widget,包括数字时钟、日历、音乐播放器、相框和搜索。不同于iPhone,Android通过内置的应用程序库安装第三方Widget,如图1-3所示。
                        
        
                    图1-1 Android G1                                                  图1-2  虚拟键盘                
 

                

                     图1-3  用Widget实现个性化桌面


(3)用在线文件夹快速浏览在线数据。类似于OS X Leopard的QuickLook特征,Android的在线文件夹可显示常见的数据条目,比如联系人、喜欢的应用、E-mail信息、播放列表、书签、RSS源等,并不需要运行系统程序处理特定的数据条目。在线文件夹数据实时更新,就像通过云或是本地创建新的数据。什么是最好的,开发者可以拓展通用数据条目和注册新数据类型的内置支持。例如,Twitter客户端程序可以注册tweet作为新数据类型,因此可以让你从你的朋友那里创建tweet的在线文件。Android可以为我们的个人桌面提供一组在线文件夹,从而帮助我们快速、方便地浏览联系人、股市、书签等信息。
(4)视频录制和分享。Android还有录制和分享视频的功能,对回放和MPEG-4、3GP等视频格式也有了更好的支持。可以通过E-mail、MMS或直接上传到YouTube等方式来分享视频,使用隐私控制来决定是分享给朋友还是每个人。上传视频的同时,可以继续使用手机,甚至可以继续录制和上传新的视频。如图1-4所示,通过YouTube分享录制的视频。
(5)图片上传。在线分享图片需要的点击更少。完成照相后,当浏览图片或选择Google在线图片服务Picasa时,只需轻点“分享”就会拥有1GB的免费图片存储空间。
(6)更快、更兼容的浏览器。Android的基于Webkit内核的浏览器带来了重要的调速装置(SpeedPumb),这得益于新的Webkit渲染引擎和优化的Java脚本编译器(SquireIFish)。当使用包含大量Java脚本的复杂Web应用时,可以体验到更佳的性能。除提高速度外,Android的浏览器还支持Web页面内的复制和粘贴操作,用户可以选中文本并复制,然后粘贴到搜索框中进行搜索。
(7)Voice Search语音搜索。带有语音识别技术的Google手机已于2008年11月面世,它支持语音搜索功能。该功能增强了默认的搜索能力,已超过纯文本搜索。当你大声说出要搜索的内容后,Android将上传数字信号并记录到Google服务器中。在服务器中,语音识别技术能将语音转化为特定的文本搜索,使之通过Google搜索引擎,通过地理位置的筛选,将结果反馈到手机设备。图1-5显示了Google文本和语音搜索桌面。
(8)立体声蓝牙和免提电话。除了增强的免提电话体验,Android还支持立体声蓝牙(A2DP和AVCRP),并有自动配对功能。
(9)强大的GPS技术。Android内部提供了大量GPS组件,我们可以很轻松地获得设备当前的位置等信息,让导航等功能更加完美。
(10)Android系统硬件检测。Android可自动检测和修复SD卡的文件系统,允许第三方应用显示Android系统的硬件特征。为了让用户下载到与自己的设备更匹配的应用,我们可以检测用户设备的硬件信息,让满足应用要求的设备安装该程序,当更多的Android设备建立在不同的硬件上时,这个功能会显得很实用。

 

 
        

 

           图1-通过YouTube分享录制的视频                      1-5 Google文本和语音搜索桌面

 

1.1.2  Android的系统构架
通过上一节的介绍,我们对Android的特点以及它为什么会如此受欢迎有了初步的了解。下面将讨论Android的系统架构,我们先来看看Android的体系结构,如图1-6所示。

 

 

                                            图1-6  Android系统结构图


从图1-6可以看出Android分为4层,从高到底分别是应用层、应用框架层、系统运行库层和Linux内核层。下面将对这4层进行简要的分析和介绍。
1.应用层
应用是用Java语言编写的运行在虚拟机上的程序,如图1-6中最上层部分所示。其实,Google最开始时就在Android系统中捆绑了一些核心应用,比如E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序,等等。
2.应用框架层
这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的架构设计,但是必须遵守其框架的开发原则。
从图1-6中可以看出,Android提供了如下一些组件。
*  丰富而又可扩展的视图(View):可以用来构建应用程序,它包括列表(List)、网格(Grid)、文本框(Text Box)、按钮(Button),以及可嵌入的Web浏览器。
* 内容提供器(Content Providers):它可以让一个应用访问另一个应用的数据(如联系人数据库), 或共享它们自己的数据。
*  资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形和布局文件(Layout file)。
*  通知管理器 (Notification Manager):应用可以在状态栏中显示自定义的提示信息。
*  活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航退回功能。
*  窗口管理器(Window Manager):管理所有的窗口程序。
*  包管理器(Package Manager):Android系统内的程序管理。
后面的章节将进一步介绍这些组件的使用。


3.系统运行库(C/C++库以及Android运行库)层
当使用Android 应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其能更好地为我们服务。
*  Bionic系统 C 库:C语言标准库,系统最底层的库,C库通过Linux系统来调用。
*  多媒体库(MediaFramework):Android系统多媒体库,基于 PacketVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。
*  SGL:2D图形引擎库。
*  SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。
*  OpenGL ES 1.0:3D效果的支持。
*  SQLite:关系数据库。
*  Webkit:Web浏览器引擎。
*  FreeType:位图(bitmap)及矢量(vector)。


每个Java程序都运行在Dalvik虚拟机之上。与PC一样,每个Android应用程序都有自己的进程,Dalvik虚拟机只执行.dex的可执行文件。当Java程序通过编译,最后还需要通过SDK中的dx工具转化成.dex格式才能正常在虚拟机上执行。


Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用,以及在低速CPU上表现出的高性能,确实令人刮目相看。Android系统可以简单地完成进程隔离和线程管理。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。


很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android的编程语言恰恰就是Java语言。但是这种说法并不准确,因为Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容。它们有两个明显的不同:Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式为dex(Dalvik Executable)的文件。在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到jar文件,而后Java虚拟机会从相应的class文件和jar文件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成class文件后,还会通过一个工具(dx)将应用所有的class文件转换成一个dex文件,而后Dalvik虚拟机会从其中读取指令和数据。


Dalvik虚拟机非常适合在移动终端上使用,相对于在桌面系统和服务器系统运行的虚拟机而言,它不需要很快的CPU计算速度和大量的内存空间。根据Google的测算,64MB的内存已经能够让系统正常运转了。其中24MB被用于底层系统的初始化和启动,另外20MB被用于启动高层服务。当然,随着系统服务的增多和应用功能的扩展,其所消耗的内存也势必越来越大。归纳起来,Dalvik虚拟机有如下几个主要特征:
(1)专有的dex文件格式。dex是Dalvik虚拟机专用的文件格式,而为什么弃用已有的字节码文件(.class文件)而采用新的格式呢?原因如下:
*  每个应用中会定义很多类,编译完成后即会有很多相应的class文件,class文件中会有大量冗余信息,而dex文件格式会把所有的class文件内容整合到一个文件中。这样,除了减少整体的文件尺寸和I/O操作外,也提高了类的查找速度。
*  增加了对新的操作码的支持。
*  文件结构尽量简洁,使用等长的指令,借以提高解析速度。
*  尽量扩大只读结构的大小,借以提高跨进程的数据共享。
(2)dex的优化。dex文件的结构是紧凑的,但是如果还想运行时的性能有进一步提高,就需要对dex文件进一步优化。优化主要针对以下几个方面:
*  调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的每一个域。
*  验证DEX文件中的所有类。
*  对一些特定的类和方法里的操作码进行优化。
(3)基于寄存器。相对于基于堆栈实现的虚拟机,基于寄存器实现的虚拟机虽然在硬件、通用性上要差一些,但是它在代码的执行效率上却更胜一筹。
(4)一个应用,一个虚拟机实例,一个进程。每一个Android应用都运行在一个Dalvik虚拟机实例中,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制、内存分配和管理、Mutex等的实现都依赖底层操作系统。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多地依赖操作系统的线程调度和管理机制。不同的应用在不同的进程空间里运行,对不同来源的应用都使用不同的Linux用户来运行,可以最大程度地保护应用的安全和独立运行。


4.Linux内核层
Android 的核心系统服务基于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。Linux内核同时也作为硬件和软件栈之间的抽象层。


Android更多的是需要一些与移动设备相关的驱动程序,主要的驱动如下所示。
*  显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动。
*  键盘驱动(KeyBoard Driver):作为输入设备的键盘驱动。
*  Flash内存驱动(Flash Memory Driver):基于MTD的Flash驱动程序。
*  照相机驱动(Camera Driver):常用的基于Linux的v4l2(Video for Linux)驱动。
*  音频驱动(Audio Driver):常用的基于ALSA(Advanced Linux Sound Architecture)的高级Linux声音体系驱动。
*  蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术。
*  WiFi驱动:基于IEEE 802.11标准的驱动程序。
*  Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。
*  Power Management(电源管理):比如电池电量等。


1.1.3  Android应用程序框架
上一节我们对Android的系统构架进行了详细剖析,Android分为应用层、应用框架层、系统运行库层和Linux内核层。我们在开发应用时都是通过框架来与Android底层进行交互,接触最多的就是应用框架层了。


什么是应用程序框架呢?框架可以说是一个应用程序的核心,是所有参与开发的程序员共同使用和遵守的约定,大家在其约定上进行必要的扩展,但程序始终保持主体结构的一致性。其作用是让程序保持清晰和一目了然,在满足不同需求的同时又不互相影响。


Android系统提供给应用开发者的本身就是一个框架,所有的应用开发都必须遵守这个框架的原则。我们在开发应用时就是在这个框架上进行扩展,下面来看看Android这个框架都有些什么功能可供我们使用。
*  android.app:提供高层的程序模型和基本的运行环境。
*  android.content:包含对各种设备上的数据进行访问和发布。
*  android.database:通过内容提供者浏览和操作数据库。
*  android.graphics:底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。
*  android.location :定位和相关服务的类。
*  android.media:提供一些类管理多种音频、视频的媒体接口。
*  android.net :提供帮助网络访问的类,超过通常的java.net.* 接口。
*  android.os :提供了系统服务、消息传输和IPC机制。
*  android.opengl:提供OpenGL的工具。
*  android.provider:提供访问Android内容提供者的类。
*  android.telephony:提供与拨打电话相关的API交互。
*  android.view:提供基础的用户界面接口框架。
*  android.util :涉及工具性的方法,例如时间日期的操作。
*  android.webkit :默认浏览器操作接口。
*  android.widget:包含各种UI元素(大部分是可见的)在应用程序的布局中使用。


1.2  OMS介绍
OMS是Open Mobile System的简称,即面向移动互联网的开放型移动智能终端软件平台,它包括基于Linux 2.6内核的移动终端下层操作系统、上层应用软件、中间件、Java虚拟机、硬件参考设计以及基于WebKit的各类应用。它具有强大的兼容性、扩展性和安全性,以及简单易用、友好的人机界面等,而且具有完全自主的知识产权。在此之上,OMS拥有开放统一的API开发接口、完备的集成开发环境和活跃的在线生态环境,极大地方便了移动应用的开发。


OMS的可移植性将使该软件平台在其他领域具有广泛的应用,如航空航天、军事、制造业等。


1.2.1  OPhone介绍
OPhone是基于Linux的面向移动互联网的终端基础软件及系统解决方案。由于OPhone与Android兼容,都是基于Java开发的,因此可以同时用OMS API和Android API来开发OMS应用。任何用Android API开发的应用都可以在OMS终端上正确地运行。然而,不能在Android终端上运行由扩展的OMS API开发的程序,因为这些OMS API是OMS平台独有的,而且在运行时是必需的。
OPhone是指采用了OMS智能操作系统的手机。为了突破TD终端瓶颈,以及促进手机终端与中国移动的网络和应用服务进行无缝对接,中国移动在Android操作系统基础上自主开发了OMS系统,该系统直接内置了中国移动的服务菜单、音乐随身听、手机导航、号簿管家、139邮箱、飞信、快讯和移动梦网等特色业务,如图1-7所示。


1.2.2  Widget介绍
OMS除了支持基于Java的应用,还支持Widget应用开发。Widget应用是OMS的精华,而Android从1.5版本开始同样支持Widget应用开发,但是所采用的标准则和OMS不同,我们会在后面的章节详细讲解。


Widget应用采用了 JIL (Joint Innovation Lab)Widget标准。JIL Widget是一个采用HTML、JavaScript和CSS等网络技术的应用程序。Widget应用是在Widget引擎上运行的独立的应用程序。Widget已经成为手机上非常流行的技术,可以为用户带来良好的移动互联网体验,随时随地获取有用的资讯,如天气预报、股票信息、头条新闻等。从用户的角度来看,Widget应用和OPhone应用没有什么区别。实际上,Widget应用不同于OPhone应用。OPhone应用是采用Java技术的应用程序,而Widget应用则是采用HTML、JavaScript和CSS等网络技术的应用程序。相比较而言,Widget应用的开发更加方便快捷。此外,JIL Widget还提供了许多JavaScript API来扩展Widget应用的能力,如访问手机电话本、手机文件系统等。Widget应用运行效果如图1-8所示。
                


      
 
                         图1-7  OPhone系统界面                                                  图1-8  HelloWidget效果预览


1.3  小结
本章主要介绍了与Android相关的一些基本概念,同时分析了Android系统的特点及其功能,简单介绍了目前主流的7个Linux平台手机以及中国移动的OMS操作系统。在介绍Android基本概念时重点介绍了Android系统架构和应用框架,其中应用层即是我们使用Java语言编写的一些运行在虚拟机上的程序,应用框架层是我们开发应用时接触最为紧密的一层,在开发应用程序时必须遵守其规则,才能保证所开发的应用程序能在Android上安全地运行。大家应着重理解这两层,这样才能开发出效率更高的应用程序。


据称今年底将会有18款之多的以Android平台为系统的Linux手机上市, Android将在移动开发中具有更广阔的前景。要想成为一个优秀的Android手机开发者,还需要从基础做起,希望大家好好掌握本章的内容。

分享到:
评论

相关推荐

    多图表实现员工满意度调查数据分析python

    员工满意度是指员工对于工作环境、待遇、职业发展和组织管理等方面的满意程度。它是衡量员工对工作的整体感受和情绪状态的重要指标。

    2020届软件工程本科毕业生毕业设计项目.zip

    2020届软件工程本科毕业生毕业设计项目

    基于stm32平衡小车

    平衡小车 基于stm32 平衡小车 基于stm32 平衡小车 基于stm32

    c语言火车票订票管理源码.rar

    c语言火车票订票管理源码.rar

    施耐德PLC例程源码四台水泵的轮换

    施耐德PLC例程源码四台水泵的轮换提取方式是百度网盘分享地址

    node-v16.13.2-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    digix算法创新大赛2019baseline.zip

    digix算法创新大赛2019baseline

    三菱PLC小型立体仓库项目.zip

    三菱PLC小型立体仓库项目.zip 叉手篮具到位检测 入库2电机前限

    node-v15.3.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    软考高项-ITTO背诵打印必过版-2024-高项已通过

    软考高项_ITTO背诵打印必过版_2024_高项已通过

    巧解HTTP三次握手四次挥手流程(超详细).docx

    TCP三次握手及四次挥手详细图解 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. TCP三次握手 所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。 1.TCP建立流程 第一次握手:建立连接时,客户端发送SYN(Seq = J)包到服务器,并进入到syn_sent状态。等待服务器确认。 第二次握手:服务器收到SYN包,知道了Client端想建立连接. 它会向客户端发送SYN+ ACK包(ack =J+1 TCP 四次挥手 TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作

    node-v13.5.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    欧母龙PLC例程源码扎钢机程序

    欧母龙PLC例程源码扎钢机程序提取方式是百度网盘分享地址

    基于RGB相机的驾驶员注视区域估计_刘觅涵.pdf

    驾驶员注意力检测,驾驶员分神驾驶检测,DMS,汽车智能驾驶,智能座舱

    Unity实现二维码扫描,二维码生成

    Unity实现二维码扫描,二维码生成 提供ZXing.unity.dll可以进行二维码的生成和扫描,扫描的方式是在场景中发射射线,射线获取rawimage的texture并读取,然后作为二维码进行解析。 提供源代码。

    中山大学-计科-操作系统实验.zip

    中山大学-计科-操作系统实验.zip

    施耐德PLC例程源码恒压供水程序(用施耐德TWIDOPLC编的)

    施耐德PLC例程源码恒压供水程序(用施耐德TWIDO PLC编的)提取方式是百度网盘分享地址

    node-v14.8.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v14.6.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    python实现小说词频统计

    小说词频统计是指对一本小说中出现的各个词语进行计数和分析,以确定每个词语在整篇小说中的出现频率。 以下是对小说词频统计的一些基本说明: 数据收集:首先需要获取目标小说的文本数据。这可以通过手动输入、复制粘贴文本内容或使用自动化工具来提取文本。 文本处理:在进行词频统计之前,通常需要对文本数据进行预处理。这可能包括去除标点符号、停用词(如“的”、“是”等)和特殊字符,将文本转换为统一的格式。 词语计数:进行词频统计时,遍历整个文本,逐个词语地计数它们的出现次数。通常会使用字典、哈希表或其他数据结构来存储词语及其计数。

Global site tag (gtag.js) - Google Analytics