今天把开关网搞费哈哈framework添加到你的工程

本文翻译自新近Wrox出版社出版的,由Peter van de Put所著的《Professional.iOS.Programming》。该书题材比较新颖,结构合理,是一本不错的IOS开发书籍。本文译自该书第八章《Using FTP》。本文开放使用,不局限于转载、修改、增删,引用,请保留出处说明。禁止任何商业用途。欢迎任何修改建议。

本章有哪些内容?

Ø  理解文件传输协议

Ø  开发一个简单FTP客户端

Ø  实现网络流(Network streams)

WROX.COM CODE DOWNLOADS FOR THIS CHAPTER

The wrox.com code downloads for thischapter are found at www.wrox.com/go/proiosprog on the Download Code tab. Thecode is in the Chapter 8 download and individually named according to the namesthroughout the chapter.

在第七章,你已经学习了网络部分,包括从web服务器下载文件,向RESTful和SOAP服务器发送post请求。在某些情况下,你可能还需要处理视频之类的大文件,下载到你的应用或者上传到服务器进行处理。

你可以将图片或者PDF文件编码成base64字符串,然后发送给服务器,但是这不是十分高效、迅速的方法。创建base64字符串需要花费很长时间,然后你仍然要传输这些数据。

文件传输协议FTP是一个用于FTP服务器和客户端之间进行通信的协议。

开发一个FTP客户端

为IOS应用开发一个FTP客户端的同时,你应当了解一些FTP协议的基本要素。客户端使用预先确定端口上的Internet连接来创建到服务器的连接。默认地,一个FTP系统配置使用以下端口:

Ø  端口20用于服务器创建到客户端的连接

Ø  端口21用于客户端创建到服务器的连接

译注:控制连接以通常的客户服务器方式建立。服务器以被动方式打开众所周知的用于F T P 的端口(21),等待客户的连接。客户则以主动方式打开TCP端口21,来建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器, 并传回服务器的应答。

FTP服务器的配置可以有所不同,所以你同意FTP服务器管理员关于使用那个端口就很重要了。

除了对某个端口号用于建立网络流达成一致外,FTP协议预定义了交换的命令,因此客户端可以告诉服务器它需要什么,反过来也一样。最常用的命令包括:

Ø  open:打开一个连接

Ø  close:关闭一个连接

Ø  get:从服务器拷贝一个文件到客户端(下载)

Ø  mget:从服务器拷贝多份文件到客户端(下载)

Ø  put:从客户端拷贝一个文件到服务端(上传)

Ø  mput:从客户端拷贝多份文件到服务端(上传)

Ø  delete:从当前远端目录删除一个文件

Ø  cd:改变服务器上的目录(由客户端发起)

Ø  lcd:改变客户端上的目录

Ø  mkdir或者mkd:在服务端创建一个目录(由客户端发起)

如果你以前从来没用过FTP客户端,你可以从http://filezilla-project.org/下载FileZilla项目。FileZilla是一个开源的FTP客户端和服务端,可用于分析在客户端和服务端两者之间交换的特定的命令。

根据你应用的需求,你有两个基本的选项要考虑。如果你仅仅是从FTP服务端上传或者下载文件,你可以使用由CFNetwork提供的高层API。这个方案能力有限,确定地说不是一个完整的FTP客户端。

http://blog.zhulong.com/blog/detail5382951.html
http://blog.zhulong.com/blog/detail5382957.html
http://blog.zhulong.com/blog/detail5382952.html
http://blog.zhulong.com/blog/detail5382953.html
http://blog.zhulong.com/blog/detail5382954.html
http://blog.zhulong.com/blog/detail5382959.html
http://blog.zhulong.com/blog/detail5382958.html
http://blog.zhulong.com/blog/detail5382956.html
http://blog.zhulong.com/blog/detail5382955.html
http://blog.zhulong.com/blog/detail5382960.html
http://blog.zhulong.com/blog/detail5382962.html
http://blog.zhulong.com/blog/detail5382961.html
http://blog.zhulong.com/blog/detail5382964.html
http://blog.zhulong.com/blog/detail5382965.html
http://blog.zhulong.com/blog/detail5382963.html
http://blog.zhulong.com/blog/detail5382967.html
http://blog.zhulong.com/blog/detail5382968.html
http://blog.zhulong.com/blog/detail5382966.html
http://blog.zhulong.com/blog/detail5382969.html
http://blog.zhulong.com/blog/detail5382970.html
http://blog.zhulong.com/blog/detail5382971.html
http://blog.zhulong.com/blog/detail5382972.html
http://blog.zhulong.com/blog/detail5382974.html
http://blog.zhulong.com/blog/detail5382976.html
http://blog.zhulong.com/blog/detail5382975.html
http://blog.zhulong.com/blog/detail5382977.html
http://blog.zhulong.com/blog/detail5382978.html
http://blog.zhulong.com/blog/detail5382979.html
http://blog.zhulong.com/blog/detail5382980.html
http://blog.zhulong.com/blog/detail5382981.html
http://blog.zhulong.com/blog/detail5382982.html
http://blog.zhulong.com/blog/detail5382983.html
http://blog.zhulong.com/blog/detail5382973.html
http://blog.zhulong.com/blog/detail5382984.html
http://blog.zhulong.com/blog/detail5382985.html
http://blog.zhulong.com/blog/detail5382986.html
http://blog.zhulong.com/blog/detail5382987.html
http://blog.zhulong.com/blog/detail5382988.html
http://blog.zhulong.com/blog/detail5382989.html
http://blog.zhulong.com/blog/detail5382991.html
http://blog.zhulong.com/blog/detail5382990.html
http://blog.zhulong.com/blog/detail5382992.html
http://blog.zhulong.com/blog/detail5382993.html
http://blog.zhulong.com/blog/detail5382994.html
http://blog.zhulong.com/blog/detail5382995.html
http://blog.zhulong.com/blog/detail5382997.html
http://blog.zhulong.com/blog/detail5382996.html
http://blog.zhulong.com/blog/detail5382998.html
http://blog.zhulong.com/blog/detail5383000.html
http://blog.zhulong.com/blog/detail5383001.html
http://blog.zhulong.com/blog/detail5383002.html
http://blog.zhulong.com/blog/detail5383003.html
http://blog.zhulong.com/blog/detail5383004.html
http://blog.zhulong.com/blog/detail5383005.html
http://blog.zhulong.com/blog/detail5383006.html
http://blog.zhulong.com/blog/detail5382999.html
http://blog.zhulong.com/blog/detail5383008.html
http://blog.zhulong.com/blog/detail5383007.html
http://blog.zhulong.com/blog/detail5383009.html
http://blog.zhulong.com/blog/detail5383010.html
http://blog.zhulong.com/blog/detail5383011.html
http://blog.zhulong.com/blog/detail5383012.html
http://blog.zhulong.com/blog/detail5383013.html
http://blog.zhulong.com/blog/detail5383015.html
http://blog.zhulong.com/blog/detail5383016.html
http://blog.zhulong.com/blog/detail5383017.html
http://blog.zhulong.com/blog/detail5383018.html
http://blog.zhulong.com/blog/detail5383019.html
http://blog.zhulong.com/blog/detail5383020.html
http://blog.zhulong.com/blog/detail5383021.html
http://blog.zhulong.com/blog/detail5383023.html
http://blog.zhulong.com/blog/detail5383022.html
http://blog.zhulong.com/blog/detail5383024.html
http://blog.zhulong.com/blog/detail5383025.html
http://blog.zhulong.com/blog/detail5383027.html
http://blog.zhulong.com/blog/detail5383026.html
http://blog.zhulong.com/blog/detail5383028.html
http://blog.zhulong.com/blog/detail5383029.html
http://blog.zhulong.com/blog/detail5383031.html
http://blog.zhulong.com/blog/detail5383030.html
http://blog.zhulong.com/blog/detail5383032.html
http://blog.zhulong.com/blog/detail5383033.html
http://blog.zhulong.com/blog/detail5383034.html
http://blog.zhulong.com/blog/detail5383035.html
http://blog.zhulong.com/blog/detail5383036.html
http://blog.zhulong.com/blog/detail5383037.html
http://blog.zhulong.com/blog/detail5383038.html
http://blog.zhulong.com/blog/detail5383039.html
http://blog.zhulong.com/blog/detail5383040.html
http://blog.zhulong.com/blog/detail5383041.html
http://blog.zhulong.com/blog/detail5383042.html
http://blog.zhulong.com/blog/detail5383043.html
http://blog.zhulong.com/blog/detail5383045.html
http://blog.zhulong.com/blog/detail5383046.html
http://blog.zhulong.com/blog/detail5383044.html
http://blog.zhulong.com/blog/detail5383047.html
http://blog.zhulong.com/blog/detail5383049.html
http://blog.zhulong.com/blog/detail5383048.html
http://blog.zhulong.com/blog/detail5383051.html
http://blog.zhulong.com/blog/detail5383050.html
http://blog.zhulong.com/blog/detail5383052.html
http://blog.zhulong.com/blog/detail5383053.html
http://blog.zhulong.com/blog/detail5383054.html
http://blog.zhulong.com/blog/detail5383055.html
http://blog.zhulong.com/blog/detail5383056.html
http://blog.zhulong.com/blog/detail5383057.html
http://blog.zhulong.com/blog/detail5383058.html
http://blog.zhulong.com/blog/detail5383059.html
http://blog.zhulong.com/blog/detail5383060.html
http://blog.zhulong.com/blog/detail5383061.html
http://blog.zhulong.com/blog/detail5383062.html
http://blog.zhulong.com/blog/detail5383063.html
http://blog.zhulong.com/blog/detail5383064.html
http://blog.zhulong.com/blog/detail5383065.html
http://blog.zhulong.com/blog/detail5383066.html
http://blog.zhulong.com/blog/detail5383067.html
http://blog.zhulong.com/blog/detail5383068.html
http://blog.zhulong.com/blog/detail5383069.html
http://blog.zhulong.com/blog/detail5383014.html
http://blog.zhulong.com/blog/detail5383070.html
http://blog.zhulong.com/blog/detail5383071.html
http://blog.zhulong.com/blog/detail5383075.html
http://blog.zhulong.com/blog/detail5383072.html
http://blog.zhulong.com/blog/detail5383074.html
http://blog.zhulong.com/blog/detail5383073.html
http://blog.zhulong.com/blog/detail5383076.html
http://blog.zhulong.com/blog/detail5383078.html
http://blog.zhulong.com/blog/detail5383079.html
http://blog.zhulong.com/blog/detail5383080.html
http://blog.zhulong.com/blog/detail5383082.html
http://blog.zhulong.com/blog/detail5383081.html
http://blog.zhulong.com/blog/detail5383083.html
http://blog.zhulong.com/blog/detail5383085.html
http://blog.zhulong.com/blog/detail5383084.html
http://blog.zhulong.com/blog/detail5383086.html
http://blog.zhulong.com/blog/detail5383087.html
http://blog.zhulong.com/blog/detail5383088.html
http://blog.zhulong.com/blog/detail5383089.html
http://blog.zhulong.com/blog/detail5383090.html
http://blog.zhulong.com/blog/detail5383091.html
http://blog.zhulong.com/blog/detail5383093.html
http://blog.zhulong.com/blog/detail5383092.html
http://blog.zhulong.com/blog/detail5383094.html
http://blog.zhulong.com/blog/detail5383095.html
http://blog.zhulong.com/blog/detail5383096.html
http://blog.zhulong.com/blog/detail5383097.html
http://blog.zhulong.com/blog/detail5383098.html
http://blog.zhulong.com/blog/detail5383099.html
http://blog.zhulong.com/blog/detail5383100.html
http://blog.zhulong.com/blog/detail5383101.html
http://blog.zhulong.com/blog/detail5383102.html
http://blog.zhulong.com/blog/detail5383103.html
http://blog.zhulong.com/blog/detail5383104.html
http://blog.zhulong.com/blog/detail5383105.html
http://blog.zhulong.com/blog/detail5383106.html
http://blog.zhulong.com/blog/detail5383107.html
http://blog.zhulong.com/blog/detail5383108.html
http://blog.zhulong.com/blog/detail5383109.html
http://blog.zhulong.com/blog/detail5383110.html
http://blog.zhulong.com/blog/detail5383111.html
http://blog.zhulong.com/blog/detail5383114.html
http://blog.zhulong.com/blog/detail5383112.html
http://blog.zhulong.com/blog/detail5383113.html
http://blog.zhulong.com/blog/detail5383115.html
http://blog.zhulong.com/blog/detail5383116.html
http://blog.zhulong.com/blog/detail5383117.html
http://blog.zhulong.com/blog/detail5383118.html
http://blog.zhulong.com/blog/detail5383119.html
http://blog.zhulong.com/blog/detail5383120.html
http://blog.zhulong.com/blog/detail5383121.html
http://blog.zhulong.com/blog/detail5383122.html
http://blog.zhulong.com/blog/detail5383123.html
http://blog.zhulong.com/blog/detail5383124.html
http://blog.zhulong.com/blog/detail5383125.html
http://blog.zhulong.com/blog/detail5383126.html
http://blog.zhulong.com/blog/detail5383127.html
http://blog.zhulong.com/blog/detail5383128.html
http://blog.zhulong.com/blog/detail5383129.html
http://blog.zhulong.com/blog/detail5383130.html
http://blog.zhulong.com/blog/detail5383133.html
http://blog.zhulong.com/blog/detail5383131.html
http://blog.zhulong.com/blog/detail5383132.html
http://blog.zhulong.com/blog/detail5383134.html
http://blog.zhulong.com/blog/detail5383135.html
http://blog.zhulong.com/blog/detail5383137.html
http://blog.zhulong.com/blog/detail5383136.html
http://blog.zhulong.com/blog/detail5383138.html
http://blog.zhulong.com/blog/detail5383139.html
http://blog.zhulong.com/blog/detail5383140.html
http://blog.zhulong.com/blog/detail5383141.html
http://blog.zhulong.com/blog/detail5383142.html
http://blog.zhulong.com/blog/detail5383145.html
http://blog.zhulong.com/blog/detail5383144.html
http://blog.zhulong.com/blog/detail5383143.html
http://blog.zhulong.com/blog/detail5383146.html
http://blog.zhulong.com/blog/detail5383147.html
http://blog.zhulong.com/blog/detail5383148.html
http://blog.zhulong.com/blog/detail5383149.html
http://blog.zhulong.com/blog/detail5383150.html
http://blog.zhulong.com/blog/detail5383151.html
http://blog.zhulong.com/blog/detail5383152.html
http://blog.zhulong.com/blog/detail5383153.html
http://blog.zhulong.com/blog/detail5383154.html
http://blog.zhulong.com/blog/detail5383155.html
http://blog.zhulong.com/blog/detail5383156.html
http://blog.zhulong.com/blog/detail5383157.html
http://blog.zhulong.com/blog/detail5383158.html
http://blog.zhulong.com/blog/detail5383159.html
http://blog.zhulong.com/blog/detail5383160.html
http://blog.zhulong.com/blog/detail5383161.html
http://blog.zhulong.com/blog/detail5383162.html
http://blog.zhulong.com/blog/detail5383163.html
http://blog.zhulong.com/blog/detail5383164.html
http://blog.zhulong.com/blog/detail5383165.html
http://blog.zhulong.com/blog/detail5383166.html
http://blog.zhulong.com/blog/detail5383167.html
http://blog.zhulong.com/blog/detail5383168.html
http://blog.zhulong.com/blog/detail5383169.html
http://blog.zhulong.com/blog/detail5383171.html
http://blog.zhulong.com/blog/detail5383170.html
http://blog.zhulong.com/blog/detail5383172.html
http://blog.zhulong.com/blog/detail5383173.html
http://blog.zhulong.com/blog/detail5383174.html
http://blog.zhulong.com/blog/detail5383175.html
http://blog.zhulong.com/blog/detail5383176.html
http://blog.zhulong.com/blog/detail5383177.html
http://blog.zhulong.com/blog/detail5383178.html
http://blog.zhulong.com/blog/detail5383179.html
http://blog.zhulong.com/blog/detail5383180.html
http://blog.zhulong.com/blog/detail5383183.html
http://blog.zhulong.com/blog/detail5383182.html
http://blog.zhulong.com/blog/detail5383181.html
http://blog.zhulong.com/blog/detail5383184.html
http://blog.zhulong.com/blog/detail5383185.html
http://blog.zhulong.com/blog/detail5383186.html
http://blog.zhulong.com/blog/detail5383187.html
http://blog.zhulong.com/blog/detail5383188.html
http://blog.zhulong.com/blog/detail5383189.html
http://blog.zhulong.com/blog/detail5383190.html
http://blog.zhulong.com/blog/detail5383191.html
http://blog.zhulong.com/blog/detail5383192.html
http://blog.zhulong.com/blog/detail5383193.html
http://blog.zhulong.com/blog/detail5383194.html
http://blog.zhulong.com/blog/detail5383195.html
http://blog.zhulong.com/blog/detail5383196.html
http://blog.zhulong.com/blog/detail5383197.html
http://blog.zhulong.com/blog/detail5383198.html
http://blog.zhulong.com/blog/detail5383199.html
http://blog.zhulong.com/blog/detail5383200.html
http://blog.zhulong.com/blog/detail5383201.html
http://blog.zhulong.com/blog/detail5383202.html
http://blog.zhulong.com/blog/detail5383203.html
http://blog.zhulong.com/blog/detail5383204.html
http://blog.zhulong.com/blog/detail5383205.html
http://blog.zhulong.com/blog/detail5383207.html
http://blog.zhulong.com/blog/detail5383206.html
http://blog.zhulong.com/blog/detail5383209.html
http://blog.zhulong.com/blog/detail5383210.html
http://blog.zhulong.com/blog/detail5383208.html
http://blog.zhulong.com/blog/detail5383211.html
http://blog.zhulong.com/blog/detail5383212.html
http://blog.zhulong.com/blog/detail5383213.html
http://blog.zhulong.com/blog/detail5383214.html
http://blog.zhulong.com/blog/detail5383217.html
http://blog.zhulong.com/blog/detail5383215.html
http://blog.zhulong.com/blog/detail5383216.html
http://blog.zhulong.com/blog/detail5383218.html
http://blog.zhulong.com/blog/detail5383219.html
http://blog.zhulong.com/blog/detail5383220.html
http://blog.zhulong.com/blog/detail5383221.html
http://blog.zhulong.com/blog/detail5383222.html
http://blog.zhulong.com/blog/detail5383224.html
http://blog.zhulong.com/blog/detail5383223.html
http://blog.zhulong.com/blog/detail5383225.html
http://blog.zhulong.com/blog/detail5383226.html
http://blog.zhulong.com/blog/detail5383227.html
http://blog.zhulong.com/blog/detail5383228.html
http://blog.zhulong.com/blog/detail5383229.html
http://blog.zhulong.com/blog/detail5383230.html
http://blog.zhulong.com/blog/detail5383231.html
http://blog.zhulong.com/blog/detail5383232.html
http://blog.zhulong.com/blog/detail5383233.html
http://blog.zhulong.com/blog/detail5383234.html
http://blog.zhulong.com/blog/detail5383235.html
http://blog.zhulong.com/blog/detail5383236.html
http://blog.zhulong.com/blog/detail5383237.html
http://blog.zhulong.com/blog/detail5383238.html
http://blog.zhulong.com/blog/detail5383239.html
http://blog.zhulong.com/blog/detail5383240.html
http://blog.zhulong.com/blog/detail5383241.html
http://blog.zhulong.com/blog/detail5383242.html
http://blog.zhulong.com/blog/detail5383243.html
http://blog.zhulong.com/blog/detail5383244.html
http://blog.zhulong.com/blog/detail5383245.html
http://blog.zhulong.com/blog/detail5383246.html
http://blog.zhulong.com/blog/detail5383247.html
http://blog.zhulong.com/blog/detail5383248.html
http://blog.zhulong.com/blog/detail5383249.html
http://blog.zhulong.com/blog/detail5383250.html
http://blog.zhulong.com/blog/detail5383251.html
http://blog.zhulong.com/blog/detail5383252.html
http://blog.zhulong.com/blog/detail5383255.html
http://blog.zhulong.com/blog/detail5383253.html
http://blog.zhulong.com/blog/detail5383254.html
http://blog.zhulong.com/blog/detail5383257.html
http://blog.zhulong.com/blog/detail5383256.html
http://blog.zhulong.com/blog/detail5383258.html
http://blog.zhulong.com/blog/detail5383260.html
http://blog.zhulong.com/blog/detail5383259.html
http://blog.zhulong.com/blog/detail5383261.html
http://blog.zhulong.com/blog/detail5383262.html
http://blog.zhulong.com/blog/detail5383263.html
http://blog.zhulong.com/blog/detail5383264.html
http://blog.zhulong.com/blog/detail5383267.html
http://blog.zhulong.com/blog/detail5383266.html
http://blog.zhulong.com/blog/detail5383269.html
http://blog.zhulong.com/blog/detail5383268.html
http://blog.zhulong.com/blog/detail5383270.html
http://blog.zhulong.com/blog/detail5383271.html
http://blog.zhulong.com/blog/detail5383265.html
http://blog.zhulong.com/blog/detail5383273.html
http://blog.zhulong.com/blog/detail5383274.html
http://blog.zhulong.com/blog/detail5383276.html
http://blog.zhulong.com/blog/detail5383277.html
http://blog.zhulong.com/blog/detail5383278.html
http://blog.zhulong.com/blog/detail5383275.html
http://blog.zhulong.com/blog/detail5383279.html
http://blog.zhulong.com/blog/detail5383280.html
http://blog.zhulong.com/blog/detail5383272.html
http://blog.zhulong.com/blog/detail5383281.html
http://blog.zhulong.com/blog/detail5383282.html
http://blog.zhulong.com/blog/detail5383283.html
http://blog.zhulong.com/blog/detail5383284.html
http://blog.zhulong.com/blog/detail5383285.html
http://blog.zhulong.com/blog/detail5383287.html
http://blog.zhulong.com/blog/detail5383286.html
http://blog.zhulong.com/blog/detail5383288.html
http://blog.zhulong.com/blog/detail5383289.html
http://blog.zhulong.com/blog/detail5383290.html
http://blog.zhulong.com/blog/detail5383291.html
http://blog.zhulong.com/blog/detail5383293.html
http://blog.zhulong.com/blog/detail5383295.html
http://blog.zhulong.com/blog/detail5383294.html
http://blog.zhulong.com/blog/detail5383296.html
http://blog.zhulong.com/blog/detail5383298.html
http://blog.zhulong.com/blog/detail5383299.html
http://blog.zhulong.com/blog/detail5383300.html
http://blog.zhulong.com/blog/detail5383292.html
http://blog.zhulong.com/blog/detail5383301.html
http://blog.zhulong.com/blog/detail5383297.html
http://blog.zhulong.com/blog/detail5383302.html
http://blog.zhulong.com/blog/detail5383303.html
http://blog.zhulong.com/blog/detail5383304.html
http://blog.zhulong.com/blog/detail5383305.html
http://blog.zhulong.com/blog/detail5383306.html
http://blog.zhulong.com/blog/detail5383308.html
http://blog.zhulong.com/blog/detail5383309.html
http://blog.zhulong.com/blog/detail5383312.html
http://blog.zhulong.com/blog/detail5383311.html
http://blog.zhulong.com/blog/detail5383310.html
http://blog.zhulong.com/blog/detail5383313.html
http://blog.zhulong.com/blog/detail5383307.html
http://blog.zhulong.com/blog/detail5383314.html
http://blog.zhulong.com/blog/detail5383315.html
http://blog.zhulong.com/blog/detail5383317.html
http://blog.zhulong.com/blog/detail5383318.html
http://blog.zhulong.com/blog/detail5383319.html
http://blog.zhulong.com/blog/detail5383320.html
http://blog.zhulong.com/blog/detail5383321.html
http://blog.zhulong.com/blog/detail5383316.html
http://blog.zhulong.com/blog/detail5383322.html
http://blog.zhulong.com/blog/detail5383323.html
http://blog.zhulong.com/blog/detail5383324.html
http://blog.zhulong.com/blog/detail5383325.html
http://blog.zhulong.com/blog/detail5383326.html
http://blog.zhulong.com/blog/detail5383328.html
http://blog.zhulong.com/blog/detail5383327.html
http://blog.zhulong.com/blog/detail5383329.html
http://blog.zhulong.com/blog/detail5383330.html
http://blog.zhulong.com/blog/detail5383331.html
http://blog.zhulong.com/blog/detail5383332.html
http://blog.zhulong.com/blog/detail5383333.html
http://blog.zhulong.com/blog/detail5383334.html
http://blog.zhulong.com/blog/detail5383335.html
http://blog.zhulong.com/blog/detail5383336.html
http://blog.zhulong.com/blog/detail5383337.html
http://blog.zhulong.com/blog/detail5383338.html
http://blog.zhulong.com/blog/detail5383339.html
http://blog.zhulong.com/blog/detail5383341.html
http://blog.zhulong.com/blog/detail5383340.html
http://blog.zhulong.com/blog/detail5383342.html
http://blog.zhulong.com/blog/detail5383343.html
http://blog.zhulong.com/blog/detail5383344.html
http://blog.zhulong.com/blog/detail5383345.html
http://blog.zhulong.com/blog/detail5383346.html
http://blog.zhulong.com/blog/detail5383348.html
http://blog.zhulong.com/blog/detail5383347.html
http://blog.zhulong.com/blog/detail5383349.html
http://blog.zhulong.com/blog/detail5383350.html
http://blog.zhulong.com/blog/detail5383351.html
http://blog.zhulong.com/blog/detail5383352.html
http://blog.zhulong.com/blog/detail5383354.html
http://blog.zhulong.com/blog/detail5383355.html
http://blog.zhulong.com/blog/detail5383356.html
http://blog.zhulong.com/blog/detail5383359.html
http://blog.zhulong.com/blog/detail5383358.html
http://blog.zhulong.com/blog/detail5383360.html
http://blog.zhulong.com/blog/detail5383361.html
http://blog.zhulong.com/blog/detail5383353.html
http://blog.zhulong.com/blog/detail5383362.html
http://blog.zhulong.com/blog/detail5383363.html
http://blog.zhulong.com/blog/detail5383365.html
http://blog.zhulong.com/blog/detail5383364.html
http://blog.zhulong.com/blog/detail5383366.html
http://blog.zhulong.com/blog/detail5383367.html
http://blog.zhulong.com/blog/detail5383368.html
http://blog.zhulong.com/blog/detail5383369.html
http://blog.zhulong.com/blog/detail5383370.html
http://blog.zhulong.com/blog/detail5383372.html
http://blog.zhulong.com/blog/detail5383373.html
http://blog.zhulong.com/blog/detail5383357.html
http://blog.zhulong.com/blog/detail5383375.html
http://blog.zhulong.com/blog/detail5383374.html
http://blog.zhulong.com/blog/detail5383377.html
http://blog.zhulong.com/blog/detail5383376.html
http://blog.zhulong.com/blog/detail5383077.html
http://blog.zhulong.com/blog/detail5383371.html
http://blog.zhulong.com/blog/detail5383378.html
http://blog.zhulong.com/blog/detail5383379.html
http://blog.zhulong.com/blog/detail5383380.html
http://blog.zhulong.com/blog/detail5383381.html
http://blog.zhulong.com/blog/detail5383382.html
http://blog.zhulong.com/blog/detail5383383.html
http://blog.zhulong.com/blog/detail5383384.html
http://blog.zhulong.com/blog/detail5383385.html
http://blog.zhulong.com/blog/detail5383386.html
http://blog.zhulong.com/blog/detail5383387.html
http://blog.zhulong.com/blog/detail5383388.html
http://blog.zhulong.com/blog/detail5383389.html
http://blog.zhulong.com/blog/detail5383390.html
http://blog.zhulong.com/blog/detail5383391.html
http://blog.zhulong.com/blog/detail5383393.html
http://blog.zhulong.com/blog/detail5383392.html
http://blog.zhulong.com/blog/detail5383394.html
http://blog.zhulong.com/blog/detail5383395.html
http://blog.zhulong.com/blog/detail5383396.html
http://blog.zhulong.com/blog/detail5383397.html
http://blog.zhulong.com/blog/detail5383400.html
http://blog.zhulong.com/blog/detail5383398.html
http://blog.zhulong.com/blog/detail5383401.html
http://blog.zhulong.com/blog/detail5383403.html
http://blog.zhulong.com/blog/detail5383402.html
http://blog.zhulong.com/blog/detail5383399.html
http://blog.zhulong.com/blog/detail5383406.html
http://blog.zhulong.com/blog/detail5383405.html
http://blog.zhulong.com/blog/detail5383404.html
http://blog.zhulong.com/blog/detail5383407.html
http://blog.zhulong.com/blog/detail5383408.html
http://blog.zhulong.com/blog/detail5383411.html
http://blog.zhulong.com/blog/detail5383410.html
http://blog.zhulong.com/blog/detail5383409.html
http://blog.zhulong.com/blog/detail5383412.html
http://blog.zhulong.com/blog/detail5383413.html
http://blog.zhulong.com/blog/detail5383414.html
http://blog.zhulong.com/blog/detail5383415.html
http://blog.zhulong.com/blog/detail5383416.html
http://blog.zhulong.com/blog/detail5383417.html
http://blog.zhulong.com/blog/detail5383418.html
http://blog.zhulong.com/blog/detail5383419.html
http://blog.zhulong.com/blog/detail5383421.html
http://blog.zhulong.com/blog/detail5383422.html
http://blog.zhulong.com/blog/detail5383423.html
http://blog.zhulong.com/blog/detail5383420.html
http://blog.zhulong.com/blog/detail5383425.html
http://blog.zhulong.com/blog/detail5383426.html
http://blog.zhulong.com/blog/detail5383424.html
http://blog.zhulong.com/blog/detail5383427.html
http://blog.zhulong.com/blog/detail5383428.html
http://blog.zhulong.com/blog/detail5383431.html
http://blog.zhulong.com/blog/detail5383429.html
http://blog.zhulong.com/blog/detail5383430.html
http://blog.zhulong.com/blog/detail5383432.html
http://blog.zhulong.com/blog/detail5383433.html
http://blog.zhulong.com/blog/detail5383435.html
http://blog.zhulong.com/blog/detail5383434.html
http://blog.zhulong.com/blog/detail5383436.html
http://blog.zhulong.com/blog/detail5383437.html
http://blog.zhulong.com/blog/detail5383439.html
http://blog.zhulong.com/blog/detail5383440.html
http://blog.zhulong.com/blog/detail5383441.html
http://blog.zhulong.com/blog/detail5383438.html
http://blog.zhulong.com/blog/detail5383443.html
http://blog.zhulong.com/blog/detail5383442.html
http://blog.zhulong.com/blog/detail5383444.html
http://blog.zhulong.com/blog/detail5383445.html
http://blog.zhulong.com/blog/detail5383446.html
http://blog.zhulong.com/blog/detail5383447.html
http://blog.zhulong.com/blog/detail5383448.html
http://blog.zhulong.com/blog/detail5383453.html
http://blog.zhulong.com/blog/detail5383451.html
http://blog.zhulong.com/blog/detail5383452.html
http://blog.zhulong.com/blog/detail5383450.html
http://blog.zhulong.com/blog/detail5383449.html
http://blog.zhulong.com/blog/detail5383454.html
http://blog.zhulong.com/blog/detail5383455.html
http://blog.zhulong.com/blog/detail5383456.html
http://blog.zhulong.com/blog/detail5383458.html
http://blog.zhulong.com/blog/detail5383457.html
http://blog.zhulong.com/blog/detail5383460.html
http://blog.zhulong.com/blog/detail5383459.html
http://blog.zhulong.com/blog/detail5383461.html
http://blog.zhulong.com/blog/detail5383462.html
http://blog.zhulong.com/blog/detail5383463.html
http://blog.zhulong.com/blog/detail5383464.html
http://blog.zhulong.com/blog/detail5383465.html
http://blog.zhulong.com/blog/detail5383466.html
http://blog.zhulong.com/blog/detail5383468.html
http://blog.zhulong.com/blog/detail5383467.html
http://blog.zhulong.com/blog/detail5383469.html
http://blog.zhulong.com/blog/detail5383470.html
http://blog.zhulong.com/blog/detail5383472.html
http://blog.zhulong.com/blog/detail5383471.html
http://blog.zhulong.com/blog/detail5383473.html
http://blog.zhulong.com/blog/detail5383474.html
http://blog.zhulong.com/blog/detail5383476.html
http://blog.zhulong.com/blog/detail5383475.html
http://blog.zhulong.com/blog/detail5383477.html
http://blog.zhulong.com/blog/detail5383478.html
http://blog.zhulong.com/blog/detail5383480.html
http://blog.zhulong.com/blog/detail5383479.html
http://blog.zhulong.com/blog/detail5383481.html
http://blog.zhulong.com/blog/detail5383482.html
http://blog.zhulong.com/blog/detail5383484.html
http://blog.zhulong.com/blog/detail5383485.html
http://blog.zhulong.com/blog/detail5383486.html
http://blog.zhulong.com/blog/detail5383483.html
http://blog.zhulong.com/blog/detail5383487.html
http://blog.zhulong.com/blog/detail5383489.html
http://blog.zhulong.com/blog/detail5383490.html
http://blog.zhulong.com/blog/detail5383488.html
http://blog.zhulong.com/blog/detail5383492.html
http://blog.zhulong.com/blog/detail5383493.html
http://blog.zhulong.com/blog/detail5383491.html
http://blog.zhulong.com/blog/detail5383494.html
http://blog.zhulong.com/blog/detail5383495.html
http://blog.zhulong.com/blog/detail5383496.html
http://blog.zhulong.com/blog/detail5383497.html
http://blog.zhulong.com/blog/detail5383498.html
http://blog.zhulong.com/blog/detail5383499.html
http://blog.zhulong.com/blog/detail5383500.html
http://blog.zhulong.com/blog/detail5383501.html
http://blog.zhulong.com/blog/detail5383502.html
http://blog.zhulong.com/blog/detail5383503.html
http://blog.zhulong.com/blog/detail5383505.html
http://blog.zhulong.com/blog/detail5383504.html
http://blog.zhulong.com/blog/detail5383506.html
http://blog.zhulong.com/blog/detail5383508.html
http://blog.zhulong.com/blog/detail5383507.html
http://blog.zhulong.com/blog/detail5383509.html
http://blog.zhulong.com/blog/detail5383510.html
http://blog.zhulong.com/blog/detail5383511.html
http://blog.zhulong.com/blog/detail5383512.html
http://blog.zhulong.com/blog/detail5383513.html
http://blog.zhulong.com/blog/detail5383514.html
http://blog.zhulong.com/blog/detail5383515.html
http://blog.zhulong.com/blog/detail5383516.html
http://blog.zhulong.com/blog/detail5383517.html
http://blog.zhulong.com/blog/detail5383518.html
http://blog.zhulong.com/blog/detail5383519.html
http://blog.zhulong.com/blog/detail5383520.html
http://blog.zhulong.com/blog/detail5383521.html
http://blog.zhulong.com/blog/detail5383522.html
http://blog.zhulong.com/blog/detail5383523.html
http://blog.zhulong.com/blog/detail5383525.html
http://blog.zhulong.com/blog/detail5383524.html
http://blog.zhulong.com/blog/detail5383526.html
http://blog.zhulong.com/blog/detail5383527.html
http://blog.zhulong.com/blog/detail5383528.html
http://blog.zhulong.com/blog/detail5383530.html
http://blog.zhulong.com/blog/detail5383529.html
http://blog.zhulong.com/blog/detail5383531.html
http://blog.zhulong.com/blog/detail5383532.html
http://blog.zhulong.com/blog/detail5383533.html
http://blog.zhulong.com/blog/detail5383534.html
http://blog.zhulong.com/blog/detail5383535.html
http://blog.zhulong.com/blog/detail5383536.html
http://blog.zhulong.com/blog/detail5383537.html
http://blog.zhulong.com/blog/detail5383539.html
http://blog.zhulong.com/blog/detail5383540.html
http://blog.zhulong.com/blog/detail5383541.html
http://blog.zhulong.com/blog/detail5383542.html
http://blog.zhulong.com/blog/detail5383543.html
http://blog.zhulong.com/blog/detail5383544.html
http://blog.zhulong.com/blog/detail5383545.html
http://blog.zhulong.com/blog/detail5383546.html
http://blog.zhulong.com/blog/detail5383547.html
http://blog.zhulong.com/blog/detail5383548.html
http://blog.zhulong.com/blog/detail5383549.html
http://blog.zhulong.com/blog/detail5383550.html
http://blog.zhulong.com/blog/detail5383551.html
http://blog.zhulong.com/blog/detail5383552.html
http://blog.zhulong.com/blog/detail5383553.html
http://blog.zhulong.com/blog/detail5383538.html
http://blog.zhulong.com/blog/detail5383554.html
http://blog.zhulong.com/blog/detail5383555.html
http://blog.zhulong.com/blog/detail5383557.html
http://blog.zhulong.com/blog/detail5383556.html
http://blog.zhulong.com/blog/detail5383558.html
http://blog.zhulong.com/blog/detail5383559.html
http://blog.zhulong.com/blog/detail5383560.html
http://blog.zhulong.com/blog/detail5383562.html
http://blog.zhulong.com/blog/detail5383561.html
http://blog.zhulong.com/blog/detail5383563.html
http://blog.zhulong.com/blog/detail5383564.html
http://blog.zhulong.com/blog/detail5383566.html
http://blog.zhulong.com/blog/detail5383565.html
http://blog.zhulong.com/blog/detail5383567.html
http://blog.zhulong.com/blog/detail5383568.html
http://blog.zhulong.com/blog/detail5383569.html
http://blog.zhulong.com/blog/detail5383571.html
http://blog.zhulong.com/blog/detail5383570.html
http://blog.zhulong.com/blog/detail5383572.html
http://blog.zhulong.com/blog/detail5383573.html
http://blog.zhulong.com/blog/detail5383574.html
http://blog.zhulong.com/blog/detail5383577.html
http://blog.zhulong.com/blog/detail5383575.html
http://blog.zhulong.com/blog/detail5383576.html
http://blog.zhulong.com/blog/detail5383578.html
http://blog.zhulong.com/blog/detail5383579.html
http://blog.zhulong.com/blog/detail5383582.html
http://blog.zhulong.com/blog/detail5383580.html
http://blog.zhulong.com/blog/detail5383583.html
http://blog.zhulong.com/blog/detail5383581.html
http://blog.zhulong.com/blog/detail5383584.html
http://blog.zhulong.com/blog/detail5383585.html
http://blog.zhulong.com/blog/detail5383586.html
http://blog.zhulong.com/blog/detail5383588.html
http://blog.zhulong.com/blog/detail5383589.html
http://blog.zhulong.com/blog/detail5383590.html
http://blog.zhulong.com/blog/detail5383591.html
http://blog.zhulong.com/blog/detail5383594.html
http://blog.zhulong.com/blog/detail5383593.html
http://blog.zhulong.com/blog/detail5383587.html
http://blog.zhulong.com/blog/detail5383595.html
http://blog.zhulong.com/blog/detail5383592.html
http://blog.zhulong.com/blog/detail5383597.html
http://blog.zhulong.com/blog/detail5383598.html
http://blog.zhulong.com/blog/detail5383596.html
http://blog.zhulong.com/blog/detail5383599.html
http://blog.zhulong.com/blog/detail5383600.html
http://blog.zhulong.com/blog/detail5383601.html
http://blog.zhulong.com/blog/detail5383602.html
http://blog.zhulong.com/blog/detail5383603.html
http://blog.zhulong.com/blog/detail5383604.html
http://blog.zhulong.com/blog/detail5383605.html
http://blog.zhulong.com/blog/detail5383606.html
http://blog.zhulong.com/blog/detail5383607.html
http://blog.zhulong.com/blog/detail5383608.html
http://blog.zhulong.com/blog/detail5383609.html
http://blog.zhulong.com/blog/detail5383611.html
http://blog.zhulong.com/blog/detail5383610.html
http://blog.zhulong.com/blog/detail5383612.html
http://blog.zhulong.com/blog/detail5383613.html
http://blog.zhulong.com/blog/detail5383615.html
http://blog.zhulong.com/blog/detail5383617.html
http://blog.zhulong.com/blog/detail5383616.html
http://blog.zhulong.com/blog/detail5383618.html
http://blog.zhulong.com/blog/detail5383614.html
http://blog.zhulong.com/blog/detail5383619.html
http://blog.zhulong.com/blog/detail5383620.html
http://blog.zhulong.com/blog/detail5383621.html
http://blog.zhulong.com/blog/detail5383622.html
http://blog.zhulong.com/blog/detail5383623.html
http://blog.zhulong.com/blog/detail5383624.html
http://blog.zhulong.com/blog/detail5383625.html
http://blog.zhulong.com/blog/detail5383626.html
http://blog.zhulong.com/blog/detail5383627.html
http://blog.zhulong.com/blog/detail5383628.html
http://blog.zhulong.com/blog/detail5383629.html
http://blog.zhulong.com/blog/detail5383630.html
http://blog.zhulong.com/blog/detail5383631.html
http://blog.zhulong.com/blog/detail5383632.html
http://blog.zhulong.com/blog/detail5383633.html
http://blog.zhulong.com/blog/detail5383634.html
http://blog.zhulong.com/blog/detail5383636.html
http://blog.zhulong.com/blog/detail5383637.html
http://blog.zhulong.com/blog/detail5383639.html
http://blog.zhulong.com/blog/detail5383638.html
http://blog.zhulong.com/blog/detail5383635.html
http://blog.zhulong.com/blog/detail5383641.html
http://blog.zhulong.com/blog/detail5383640.html
http://blog.zhulong.com/blog/detail5383642.html
http://blog.zhulong.com/blog/detail5383643.html
http://blog.zhulong.com/blog/detail5383644.html
http://blog.zhulong.com/blog/detail5383645.html
http://blog.zhulong.com/blog/detail5383647.html
http://blog.zhulong.com/blog/detail5383650.html
http://blog.zhulong.com/blog/detail5383648.html
http://blog.zhulong.com/blog/detail5383649.html
http://blog.zhulong.com/blog/detail5383651.html
http://blog.zhulong.com/blog/detail5383646.html
http://blog.zhulong.com/blog/detail5383652.html
http://blog.zhulong.com/blog/detail5383653.html
http://blog.zhulong.com/blog/detail5383654.html
http://blog.zhulong.com/blog/detail5383655.html
http://blog.zhulong.com/blog/detail5383656.html
http://blog.zhulong.com/blog/detail5383657.html
http://blog.zhulong.com/blog/detail5383658.html
http://blog.zhulong.com/blog/detail5383659.html
http://blog.zhulong.com/blog/detail5383660.html
http://blog.zhulong.com/blog/detail5383661.html
http://blog.zhulong.com/blog/detail5383662.html
http://blog.zhulong.com/blog/detail5383664.html
http://blog.zhulong.com/blog/detail5383663.html
http://blog.zhulong.com/blog/detail5383665.html
http://blog.zhulong.com/blog/detail5383667.html
http://blog.zhulong.com/blog/detail5383666.html
http://blog.zhulong.com/blog/detail5383668.html
http://blog.zhulong.com/blog/detail5383670.html
http://blog.zhulong.com/blog/detail5383669.html
http://blog.zhulong.com/blog/detail5383671.html
http://blog.zhulong.com/blog/detail5383672.html
http://blog.zhulong.com/blog/detail5383673.html
http://blog.zhulong.com/blog/detail5383676.html
http://blog.zhulong.com/blog/detail5383675.html
http://blog.zhulong.com/blog/detail5383677.html
http://blog.zhulong.com/blog/detail5383674.html
http://blog.zhulong.com/blog/detail5383678.html
http://blog.zhulong.com/blog/detail5383680.html
http://blog.zhulong.com/blog/detail5383681.html
http://blog.zhulong.com/blog/detail5383682.html
http://blog.zhulong.com/blog/detail5383685.html
http://blog.zhulong.com/blog/detail5383683.html
http://blog.zhulong.com/blog/detail5383684.html
http://blog.zhulong.com/blog/detail5383679.html
http://blog.zhulong.com/blog/detail5383687.html
http://blog.zhulong.com/blog/detail5383686.html
http://blog.zhulong.com/blog/detail5383688.html
http://blog.zhulong.com/blog/detail5383689.html
http://blog.zhulong.com/blog/detail5383691.html
http://blog.zhulong.com/blog/detail5383692.html
http://blog.zhulong.com/blog/detail5383690.html
http://blog.zhulong.com/blog/detail5383693.html
http://blog.zhulong.com/blog/detail5383694.html
http://blog.zhulong.com/blog/detail5383695.html
http://blog.zhulong.com/blog/detail5383696.html
http://blog.zhulong.com/blog/detail5383697.html
http://blog.zhulong.com/blog/detail5383698.html
http://blog.zhulong.com/blog/detail5383699.html
http://blog.zhulong.com/blog/detail5383700.html
http://blog.zhulong.com/blog/detail5383701.html
http://blog.zhulong.com/blog/detail5383702.html

时间: 2024-10-06 22:18:32

今天把开关网搞费哈哈framework添加到你的工程的相关文章

设置MySQL允许外网访问 费元星 feiyuanxing.com 站长

1.修改配置文件sudo vim /etc/mysql/my.cnf把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行. 2.登录数据库mysql -u root -p 输入密码mysql> use mysql; 3.查询hostmysql> select user,host from user; 4.创建host如果没有"%"这个host值,就执行下面这两句:mysql> update user set host='%' wh

Entity Framework 添加、附加、和实体状态

这篇文章将会覆盖如何新增和附加实体到上下文以及在 SaveChanges 中Entity Framework 如何处理它们. Entity Framework 会在实体与上下文连接时追踪它们的状态,但你能在实体与上下文断开连接或者 N-Tier 场景下让 EF 知道你的实体的状态是什么.在这篇文章中展示的技术同时适用于 通过Code First 创建的模型 和 EF 设计器创建的模型 . 实体状态 和 SaveChanges 在 EntityState 枚举定义中,一个实体能够处于以下的五个状态

安卓开发_慕课网_百度地图_添加覆盖物

学习内容来自“慕课网” 本片学习内容接自前四篇基础 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 安卓开发_慕课网_百度地图_实现方向传感器 安卓开发_慕课网_百度地图_实现模式转换 请先学习前4篇再学习本篇,因为本篇在前四篇的基础上进行代码的编写 一.新建一个类用来存放数据(距离,点赞数,介绍图等信息) 1 package com.example.map; 2 3 import java.io.Serializable; 4 import java.util.ArrayLi

android4.4 framework添加第三方调用接口

近日,将第三方可执行文件封装成接口,移植到了系统中.现将曲折的成功之路做一个总结,与大家共享. 软件平台:android 硬件平台:marvell 第三方可执行文件:AA, BB; 工作需求:两个文件必须按顺序依次执行,完成功能,在framework层要提供相应的api接口,供应用程序调用. 由于此接口与wifi相关,因此framework层面将接口添加到了WifiApManager.java中, --- a/wifi/java/android/net/wifi/WifiApManager.ja

Entity Framework添加记录时获取自增ID值

var m = new 你的Model(); db.你的Model.add(m); db.SaveChange(); Response.Write(m.Id); //执行.SaveChange()保存后就直接可以取得id值了. 保存前没有id值. Entity Framework在将数据插入数据库时,如果主键字段是自增标识列,会将该自增值返回给实体对象对应的属性. 比如下面添加博客随笔至数据库的示例代码: var blogPost = new BlogPost() { Author = "博客园

[Android][Framework] 添加系统服务

新博客地址 http://wossoneri.github.io/2018/09/15/[Android][Framework]create-system-service/ 做系统开发,有时候需要自己定义一些接口供App使用, 同时为了方便维护管理,就会需要自己建立一个服务,把新的功能集中在一起.下面就是新建一个系统服务的基本步骤. 添加接口 frameworks/base/core/java/android/app/IDemoManager.aidl package android.app;

百度网盘文件名称批量添加前后缀(五)

下面介绍百度网盘8种批量重命名方式中的文件夹或文件批量添加前后缀,比如想批量在文件名称前面添加上自己的微信或公众号等信息,则可以使用批量添加前后缀功能,上万个文件名次的修改也可以很快完成.具体操作如下: 下载地址:dwz.cn/JTUmWpfD 首先,下载百度网盘批量处理软件,解压后运行其中的bdmaster.exe文件,提示:软件不要放在含有中文名称的路径下,否则会出现兼容性闪退. 其次,登录自己的百度网盘账号,就像在浏览器中使用一样,勾选需要批量添加前后缀的文件或文件夹,如下图: 如果是想在

监控宝内网采集器start.sh 添加systemctl开机自启动 jkb.service

vim /lib/systemd/system/jkb.servcie [Unit] Description=jkb After=network.target [Service] Type=forking #PIDFile=/root/jkb_agent/jkb.pid ExecStart=/usr/bin/sh /root/jkb_agent/start.sh ExecStop=/usr/bin/sh /root/jkb_agent/stop.sh PrivateTmp=true [Insta

修改android framework 添加service

1. 修改点 pizza\frameworks\base\services\java\com\android\server\hwapu\ClassMonitorService.java 作用:监控服务 pizza\frameworks\base\services\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java 作用:禁用或启用home键,power键 pizza\frameworks\base\hwapu-c