第一篇:路由器及IOS簡介
路由器及IOS簡介
1.路由器簡介
(1)CPU:中央處理單元,和計算機一樣,它是路由器的控制和運算部件。
(2)RAM/DRAM:內存,用于存儲臨時的運算結果,例如,路由表、arp表、快速交換緩存、緩沖數據包、數據隊列,以及當前配置。眾所周知,RAM中的數據在路由器斷電后是丟失的。
(3)FLASH:可擦除、可編程的ROM,用于存放路由器的IOS,FLASH的課擦除特性允許我們更新、升級IOS。而不是更換路由器內部的芯片。路由器斷電后,FLASH的內容不會丟失。當FLASH容量較大時,可以存放多個IOS版本。
(4)NVRAM:非易失性RAM,用于存放路由器的配置文件,路由器斷電后,NVRAM中的內容仍然保持。
(5)ROM:只讀存儲器,存儲了路由器的開機診斷程序、引導程序和特殊版本的IOS軟件(用于診斷等有限用途),當ROM中軟件升級時需要更換芯片。
2.IOS簡介
路由器也有自己的操作系統,通常稱為IOS(internetwork operating system)。和計算機上的Windows一樣,IOS是路由器的靈魂,所有配置是通過IOS完成的。
圖1“show”命令現實路由器的各種信息
圖2配置文件的流動
ROM
FLASHTFTPROM
CONSOLE
圖3路由器啟動過程示意圖
第二篇:路由器IOS升級方法總結
IOS升級方法一
在對能夠正常啟動的CISCO路由器的IOS進行升級時,比較簡單。具體步驟如下:
1、尋找一種TFTP服務器軟件(有CISCO公司的TFTPServer或3COM公司的3Cserver等,在升級較大IOS映象文件時,建議用3Cserver),安裝在一臺計算機上,將要升級的IOS映象文件拷貝到相關的目錄中(例:D:),并運行TFTP服務器軟件,通過菜單設置Root目錄為拷貝IOS映象文件所在目錄(如D:)。假設該計算機的IP地址為10.32.10.1;
2、連接路由器的console口與PC機的COM1,使用PC的超級終端軟件訪問路由器,將路由器的地址設為10.32.10.32(與計算機的IP地址同網段即可)。建議在進行IOS升級前將原有IOS文件備份下來,防止待升級的IOS文件存在問題不可用;
QUOTE: Router# dir flash:(查看目前IOS映象文件名,也可用Router#Show version)
Directory of flash:/
1-rw-5998292 C2600-I-MZ.122-11.BIN
8388608 bytes total(2390252 bytes free)
Router#copy flash tftp(備份IOS文件)
Source filename []?c2600-i-mz.122-11.bin
Address or name of remote host []? 10.32.10.1(TFTP服務器地址)Destination filename [c2600-i-mz.122-11.bin]?
?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!?
?。。。。。。。。。。。。。。。。。。。。。。。。。?
5998292 bytes copied in 324.071 secs(18509 bytes/sec)
Router#
3、對路由器進行IOS升級;
QUOTE: Router#copy tftp flash
Address or name of remote host []? 10.32.10.1(TFTP服務器地址)
Source filename []? c2600-i-mz.122-11.bin(需升級的新IOS映象文件名)
Destination filename [c2600-i-mz.122-11.bin]?
Do you want to over write? [confirm]
Accessing tftp://10.32.10.1/c2600-i-mz.122-11.bin...Erase flash: before copying? [confirm]
Erasing the flash filesystem will remove all files!Continue? [confirm]
Erasing device...eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...erasedee
Erase of flash: complete
Loading c2600-i-mz.122-11.bin from 10.32.10.1(via Ethernet0/0):?。。。。。?!
!!?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?
?。。。。。。。。。。。。。。。。。。?/p>
[OKRestricted
Rights clause at FAR sec.52.227-19 and subparagraph
(c)(1)(ii)of the Rights in Technical Data and Computer
Software clause at DFARS sec.252.227-7013.cisco Systems, Inc.170 West Tasman Drive
San Jose, California 95134-1706
Cisco Internetwork Operating System Software
IOS(tm)C2600 Software(C2600-I-M), Version 12.2(11)T9, RELEASE SOFTWARE(fc1)
TAC Support: http://www.tmdps.cn/tac
Copyright(c)1986-2003 by cisco Systems, Inc.Compiled Mon 23-Jun-03 15:42 by cmong
Image text-base: 0x8000809C, data-base: 0x80A68B48
cisco 2610(MPC860)processor(revision 0x203)with 22528K/2048K bytes of memory
Processor board ID JAD03483395(1128032249)
M860 processor: part number 0, mask 49
Bridging software.X.25 software, Version 3.0.0.1 Ethernet/IEEE 802.3 interface(s)
Serial(sync/async)network interface(s)
32K bytes of non-volatile configuration memory.8192K bytes of processor board System flash(Read/Write)
Press RETURN to get started!
*Mar 1 00:00:05.652: %PA-2-UNDEFPA: Undefined Port Adaptor type 100 in bay 1
*Mar 1 00:00:07.996: %LINK-3-UPDOWN: Interface Ethernet0/0, changed state to up
*Mar 1 00:00:07.996: %LINK-3-UPDOWN: Interface Serial0/0, changed state to down
*Mar 1 00:00:07.996: %LINK-3-UPDOWN: Interface Serial0/1, changed state to down
*Mar 1 00:00:09.142: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0, changed state to up
*Mar 1 00:00:09.142: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to down
*Mar 1 00:00:09.142: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to down
*Mar 1 00:00:09.458: %SYS-5-CONFIG_I: Configured from memory by console
*Mar 1 00:00:11.245: %LINK-5-CHANGED: Interface Serial0/1, changed state to administratively down
*Mar 1 00:00:12.275: %SYS-5-RESTART: System restarted--Cisco Internetwork Operating System Software
IOS(tm)C2600 Software(C2600-I-M), Version 12.2(11)T9, RELEASE SOFTWARE(fc1)
TAC Support: http://www.tmdps.cn/tac
Copyright(c)1986-2003 by cisco Systems, Inc.Compiled Mon 23-Jun-03 15:42 by cmong
*Mar 1 00:00:12.279: %SNMP-5-COLDSTART: SNMP agent on host NE16 is undergoing a cold start
Router> 采用這種方法時,由于使用console口來傳送,速率為9600bps,需要時間較長。因此可修改console口速率利用xmodem命令實現快速升級IOS。具體方法如下:
QUOTE: rommon 1 > confreg 回車
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: image specified by the boot system commands
or default to: cisco2-C2600
do you wish to change the configuration? y/n [n]: y(選擇 yes)
enable “diagnostic mode”? y/n [n]: n(選擇 no)
enable “use net in IP bcast address”? y/n [n]: n(選擇 no)
disable “load rom after netboot fails”? y/n [n]: n(選擇 no)
enable “use all zero broadcast”? y/n [n]: n(選擇 no)
enable “break/abort has effect”? y/n [n]: n(選擇 no)
enable “ignore system config info”? y/n [n]: n(選擇 no)
change console baud rate? y/n [n]: y(選擇 yes)
enter rate: 0 = 9600, 1 = 4800, 2 = 1200, 3 = 2400
= 19200, 5 = 38400, 6 = 57600, 7 = 115200 [0]: 7(選擇 7,用最大的11520
速率的xmodem傳輸)
change the boot characteristics? y/n [n]: n(選擇 no)
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 115200
boot: image specified by the boot system commands
or default to: cisco2-C2600
do you wish to change the configuration? y/n [n]: n(選擇 no)
You must reset or power cycle for new config to take effect
rommon 2 > reset 回車
注意:在按reset鍵前,需要修改串口速度(我的電腦---端口屬性----串口速度調為115200),然后再修改超級終端里設置速率為115200,記住,一定要這么做,否則會出現亂碼!然后關閉這個超級終端,重新建立一個超級終端連接,重新啟動系統后,出現 QUOTE: rommon 1> 提示符
然后,輸入
QUOTE: rommon 1> xmodem-r
Do not start the sending program yet...Invoke this application only for disaster recovery.Do you wish to continue? y/n [n]: y(選擇 yes)
Ready to receive file...此時,在超級終端的菜單上的“傳送”---“發送文件”----選擇IOS映像文件所在地以及選擇使用“xmodem”協議,點擊“發送”即可。等待10-20分鐘左右就可升級完3-6M的IOS文件!待升級完成后,請記住修改回計算機串口與超級終端、路由器confreg下的xmodem等傳輸速率為9600bps。
方法如下:
QUOTE: Router>en 進入新IOS的特權模式
Router#reload 重啟系統
Proceed with reload? [confirm] 回車
00:01:04: %SYS-5-RELOAD: Reload requested
System Bootstrap, Version 11.3(2)XA4, RELEASE SOFTWARE(fc1)
Copyright(c)1999 by cisco Systems, Inc.TAC:Home:SW:IOS:Specials for info
PC = 0xfff0a530, Vector = 0x500, SP = 0x680127b0
C2600 platform with 24576 Kbytes of main memory
PC = 0xfff0a530, Vector = 0x500, SP = 0x80004684
monitor: command “boot” aborted due to user interrupt 30秒內按ctrl+break鍵
rommon 1 > confreg(輸入“confreg”命令)
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 115200
boot: image specified by the boot system commands
or default to: cisco2-C2600
do you wish to change the configuration? y/n [n]: y(選擇 yes)
enable “diagnostic mode”? y/n [n]: n(選擇 no)
enable “use nn IP bcast address”? y/n [n]: n(選擇 no)
disable “load rom after netboot fails”? y/n [n]: n(選擇 no)
enable “use all zero broadcast”? y/n [n]: n(選擇 no)
enable “break/abort has effect”? y/n [n]: n(選擇 no)
enable “ignore system config info”? y/n [n]: n(選擇 no)
change console baud rate? y/n [n]: y(選擇 yes)
enter rate: 0 = 9600, 1 = 4800, 2 = 1200, 3 = 2400
= 19200, 5 = 38400, 6 = 57600, 7 = 115200 [7]: 0(選擇 0,改回用標準速率速率9600的xmodem傳輸)
change the boot characteristics? y/n [n]: n(選擇 no)
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: image specified by the boot system commands
or default to: cisco2-C2600
do you wish to change the configuration? y/n [n]: n You must reset or power cycle for new config to take effect
rommon 2 > 此時手工改回計算機串口與超級終端2者傳輸速率為9600
然后敲入
QUOTE: rommon 2 >reset 最好關掉電源后,重新啟動。利用xmodem命令實現路由器IOS升級速度較慢,往往等上很長時間,為了快速升級,可以采用下列方法。
二)通過tftpdnld命令升級IOS,具體步驟如下:
1、用Cisco原配的線纜連接路由器的console口與PC機的COM1,使用PC機的超級終端軟件訪問路由器;用一根雙絞線連接路由器的eth0/0口與PC機的網卡。
2、將路由器的eth0/0口IP地址設為10.32.10.32;PC機的IP地址設為10.32.10.1。將要升級的IOS映象文件拷貝到相關的目錄中,并運行TFTP服務器軟件,通過菜單設置Root目錄為拷貝IOS映象文件所在目錄。
3、通過set 命令查看配置參數
QUOTE: rommon 2 > set
PS1=rommon!>
BOOT=
BSI=0
RET_2_RTS=
?=0
4、在 rommon 狀態下輸入:(注意大小寫)QUOTE: rommon 3 >IP_ADDRESS=10.32.10.1(路由器的ip地址)
rommon 4 >IP_SUBNET_MASK=255.255.255.0(路由器的掩碼)
rommon 5 >DEFAULT_GATEWAY=10.32.10.32(缺省網關,是pc機的ip地址)
rommon 6 >TFTP_SERVER=10.32.10.32(是pc機的ip地址)
rommon 7 >TFTP_FILE=C2600-I-MZ.122-11.BIN(上傳ios文件的名稱)
rommon 8>sync(保存參數配置)
rommon 9 >set(查看)
rommon 10 > set
PS1=rommon!>
BOOT=
IP_ADDRESS=10.32.10.1
IP_SUBNET_MASK=255.255.255.0
DEFAULT_GATEWAY=10.32.10.32
TFTP_SERVER=10.32.10.32
TFTP_FILE=C2600-I-MZ.122-11.BIN
BSI=0
RET_2_RTS=
?=0
rommon 11 >tftpdnld 執行tftpdnld命令進行ios升級,有時可能會報錯或命令不執行,這時只要用sync命令保存配置后,重新啟動路由器(最好關掉電源再開機)后,再執行tftpdnld命令就可以了。QUOTE: rommon 11 >tftpdnld(傳送文件)出現提示選擇y
IP_ADDRESS: 10.32.10.1
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY: 10.32.10.32
TFTP_SERVER: 10.32.10.32
TFTP_FILE: C2600-I-MZ.122-11.BIN
Invoke this command for disaster recovery only.WARNING: all existing data in all partitions on flash will be lost!
Do you wish to continue? y/n: [n]: y
Receiving C2600-I-MZ.122-11.BIN from 10.32.10.32?。。。。。。。。。。。。。?!!
?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?
?
!?。。。。。。。。。。。。。。。。。。?!
File reception completed.Copying file C2600-I-MZ.122-11.BIN to flash.Erasing flash at 0x607c0000
program flash location 0x605b0000
rommon 13 >
在rommon 13 >提示符下鍵入reset,或重新啟動路由器(power-cycle),進入正常引導狀態,即:
Router> 筆者在Cisco2500、2600、7200等系列路由器上均實際操作過,以上為在Cisco2610路由器上實際操作捕獲或截屏,所配地址只是特例,大家可根據實際需要予以修改。最后建議:大家在作正常路由器系統升級時,為防止不正確操作等引起的升級失敗,請先把路由器原有的系統備份下來。
第三篇:CISCO路由器IOS升級方法總結
CISCO路由器IOS升級方法總結
前不久,朋友在對一臺帶語音??斓腃ISCO2610進行IOS升級時,由于路由器的內存(flash)為8M,IOS軟件為7M多,升級后路由器無法正常啟動。啟動后到rommon 1 >狀態,請求幫助。由于本人長期從事計算機網絡管理工作,在對CISCO路由器的長期日常維護和管理實踐中積累了一定的經驗?,F總結歸納出CISCO路由器IOS映像升級的幾種方法,供廣大網絡愛好者或同仁參考。在介紹CISCO路由器IOS升級方法前,有必要對Cisco路由器的存儲器的相關知識作以簡單介紹。路由器與計算機相似,它也有內存和操作系統。在Cisco路由器中,其操作系統叫做互連網操作系統(Internetwork Operating System),常簡稱為IOS.路由器的存儲器主要有:
ROM:只讀存儲器包含路由器正在使用的IOS的一份副本;
RAM:IOS將隨機訪問存儲器分成共享和主存。主要用來存儲運行中的路由器配置和與路由協議有關的IOS數據結構;
FLASH(閃存):用來存儲IOS軟件映像文件,閃存是可以擦除內存,它能夠用IOS的新版本覆寫,IOS升級主要是閃存中的IOS映像文件進行更換。
NVRAM:非易失性隨機訪問存儲器,用來存儲系統的配置文件。
IOS升級方法一
在對能夠正常啟動的CISCO路由器的IOS進行升級時,比較簡單。具體步驟如下:
1、尋找一種TFTP服務器軟件(有CISCO公司的TFTPServer或3COM公司的3Cserver等,在升級較大IOS映象文件時,建議用3Cserver),安裝在一臺計算機上,將要升級的IOS映象文件拷貝到相關的目錄中(例:D:),并運行TFTP服務器軟件,通過菜單設置Root目錄為拷貝IOS映象文件所在目錄(如D:)。假設該計算機的IP地址為10.32.10.1;
2、連接路由器的console口與PC機的COM1(有文檔說明),使用PC的超級終端軟件訪問路由器,將路由器的地址設為10.32.10.32(與計算機的IP地址同網段即可)。建議在進行IOS升級前將原有IOS文件備份下來,防止待升級的IOS文件存在問題不可用; 也可用Router#Show version)QUOTE:Router# dir flash:(查看目前IOS映象文件名,Directory of flash:/ 1-rw-5998292 C2600-I-MZ.122-11.BIN 8388608 bytes total(2390252 bytes free)
Router#copy flash tftp(備份IOS文件)Source filename []?c2600-i-mz.122-11.bin Address or name of remote host []? 10.32.10.1(指定TFTP服務器地址)
Destination filename [c2600-i-mz.122-11.bin]?
!?。。。。。。。。。。。。。。。。。。?!
…
?。。。。。。。。。。。。。。。。。。。?!
5998292 bytes copied in 324.071 secs(18509 bytes/sec)Router#
3、對路由器進行IOS升級;
QUOTE:Router#copy tftp flash Address or name of remote host []? 10.32.10.1(指定TFTP服務器地址)
Source filename []? c2600-i-mz.122-11.bin(需升級的新IOS映象文件名)
Destination filename [c2600-i-mz.122-11.bin]?
Do you want to over write? [confirm]
(確認)
Accessing tftp://10.32.10.1/c2600-i-mz.122-11.bin……
Erase flash: before copying? [confirm] Erasing the flash filesystem will remove all files!Continue? [confirm] Erasing device…… eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ……erasedee
Erase of flash: complete
:?。。。。。?!Loading c2600-i-mz.122-11.bin from 10.32.10.1(via Ethernet0/0)!
?。。。。。。。。。。。。。。。。。。。。?!
?。。。。。。。。。。。。。。。。。?!
[OKRestricted Rights clause at FAR sec.52.227-19 and subparagraph(c)(1)(ii)of the Rights in Technical Data and Computer Software clause at DFARS sec.252.227-7013.cisco Systems,Inc.170 West Tasman Drive San Jose,California 95134-1706 Cisco Internetwork Operating System Software,(11)IOS(tm)C2600 Software(C2600-I-M)Version 12.2T9,RELEASE SOFTWARE(fc1)
TAC Support: http://www.tmdps.cn/tac
Copyright(c)1986-2003 by cisco Systems,Inc.Compiled Mon 23-Jun-03 15:42 by cmong Image text-base: 0x8000809C,data-base: 0x80A68B48 cisco 2610(MPC860)processor(revision 0x203)with 22528K/2048K bytes of memory Processor board ID JAD03483395(1128032249)
M860 processor: part number 0,mask 49 Bridging software.X.25 software,Version 3.0.0.1 Ethernet/IEEE 802.3 interface(s)
Serial(sync/async)network interface(s)
32K bytes of non-volatile configuration memory.8192K bytes of processor board System flash(Read/Write)
Press RETURN to get started!
*Mar 1 00:00:05.652: %PA-2-UNDEFPA: Undefined Port Adaptor type 100 in bay 1 *Mar 1 00:00:07.996: %LINK-3-UPDOWN: Interface Ethernet0/0,changed state to up *Mar 1 00:00:07.996: %LINK-3-UPDOWN: Interface Serial0/0,changed state to down *Mar 1 00:00:07.996: %LINK-3-UPDOWN: Interface Serial0/1,changed state to down *Mar 1 00:00:09.142: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0,changed state to up *Mar 1 00:00:09.142: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0,changed state to down *Mar 1 00:00:09.142: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1,changed state to down *Mar 1 00:00:09.458: %SYS-5-CONFIG_I: Configured from memory by console *Mar 1 00:00:11.245: %LINK-5-CHANGED: Interface Serial0/1,changed state to administratively down *Mar 1 00:00:12.275: %SYS-5-RESTART: System restarted ——Cisco Internetwork Operating System Software,(11)IOS(tm)C2600 Software(C2600-I-M)Version 12.2T9,RELEASE SOFTWARE(fc1)
TAC Support: http://www.tmdps.cn/tac
Copyright(c)1986-2003 by cisco Systems,Inc.Compiled Mon 23-Jun-03 15:42 by cmong *Mar 1 00:00:12.279: %SNMP-5-COLDSTART: SNMP agent on host NE16 is undergoing a cold start Router采用這種方法時,由于使用console口來傳送,速率為9600bps,需要時間較長。因此可修改console口速率利用xmodem命令實現快速升級IOS.具體方法如下:
QUOTE:rommon 1 > confreg 回車
Configuration Summary enabled are:
load rom after netboot fails console baud: 9600
原始的速率9600bps boot: image specified by the boot system commands or default to: cisco2-C2600 do you wish to change the configuration? y/n [n]: y(選擇 yes)
enable “diagnostic mode”? y/n [n]: n(選擇 no)
enable “use net in IP bcast address”? y/n [n]: n(選擇 no)
disable “load rom after netboot fails”? y/n [n]: n(選擇 no)
enable “use all zero broadcast”? y/n [n]: n(選擇 no)
enable “break/abort has effect”? y/n [n]: n(選擇 no)
enable “ignore system config info”? y/n [n]: n(選擇 no)
change console baud rate? y/n [n]: y(選擇 yes)
enter rate: 0 = 9600,1 = 4800,2 = 1200,3 = 2400 4 = 19200,5 = 38400,6 = 57600,7 = 115200 [0]: 7(選擇 7,用最大的11520 速率的xmodem傳輸)
change the boot characteristics? y/n [n]: n(選擇 no)
Configuration Summary enabled are:
load rom after netboot fails console baud: 115200 boot: image specified by the boot system commands or default to: cisco2-C2600 do you wish to change the configuration? y/n [n]: n(選擇 no)
You must reset or power cycle for new config to take effect rommon 2 > reset 回車注意:在按reset鍵前,需要修改串口速度(我的電腦——端口屬性——串口速度調為115200),然后再修改超級終端里設置速率為115200,記住,一定要這么做,否則會出現亂碼!然后關閉這個超級終端,重新建立一個超級終端連接,重新啟動系統后,出現
QUOTE:rommon 1> 提示符然后,輸入
QUOTE:rommon 1> xmodem-r
Do not start the sending program yet……
Invoke this application only for disaster recovery.Do you wish to continue? y/n [n]: y(選擇 yes)
Ready to receive file ……
此時,在超級終端的菜單上的“傳送”——“發送文件”——選擇IOS映像文件所在地以及選擇使用“xmodem”協議,點擊“發送”即可。等待10-20分鐘左右就可升級完3-6M的IOS文件!待升級完成后,請記住修改回計算機串口與超級終端、路由器confreg下的xmodem等傳輸速率為9600bps.方法如下:
QUOTE:Router>en 進入新IOS的特權模式
Router#reload 重啟系統
Proceed with reload? [confirm] 回車
00:01:04: %SYS-5-RELOAD: Reload requested System Bootstrap,Version 11.3(2)XA4,RELEASE SOFTWARE(fc1)
Copyright(c)1999 by cisco Systems,Inc.TAC:Home:SW:IOS:Specials for info PC = 0xfff0a530,Vector = 0x500,SP = 0x680127b0 C2600 platform with 24576 Kbytes of main memory PC = 0xfff0a530,Vector = 0x500,SP = 0x80004684 monitor: command “boot” aborted due to user interrupt 30秒內按ctrl+break鍵 rommon 1 > confreg(輸入“confreg”命令)
Configuration Summary enabled are:
load rom after netboot fails console baud: 115200
boot: image specified by the boot system commands or default to: cisco2-C2600 do you wish to change the configuration? y/n [n]: y(選擇 yes)
enable “diagnostic mode”? y/n [n]: n(選擇 no)
enable “use nn IP bcast address”? y/n [n]: n(選擇 no)
disable “load rom after netboot fails”? y/n [n]: n(選擇 no)
enable “use all zero broadcast”? y/n [n]: n(選擇 no)
enable “break/abort has effect”? y/n [n]: n(選擇 no)
enable “ignore system config info”? y/n [n]: n(選擇 no)
change console baud rate? y/n [n]: y(選擇 yes)
enter rate: 0 = 9600,1 = 4800,2 = 1200,3 = 2400 4 = 19200,5 = 38400,6 = 57600,7 = 115200 [7]: 0(選擇 0,改回用標準速率速率9600的xmodem傳輸)
change the boot characteristics? y/n [n]: n(選擇 no)
Configuration Summary enabled are:
load rom after netboot fails console baud: 9600 boot: image specified by the boot system commands or default to: cisco2-C2600 do you wish to change the configuration? y/n [n]: n You must reset or power cycle for new config to take effect rommon 2 > 此時手工改回計算機串口與超級終端2者傳輸速率為9600 然后敲入:
QUOTE:rommon 2 >reset
最好關掉電源后,重新啟動。利用xmodem命令實現路由器IOS升級速度較慢,往往等上很長時間,為了快速升級,可以采用下列方法。
(二)通過tftpdnld命令升級IOS,具體步驟如下:
1、用Cisco原配的線纜連接路由器的console口與PC機的COM1,使用PC機的超級終端軟件訪問路由器;用一根雙絞線連接路由器的eth0/0口與PC機的網卡。
2、將路由器的eth0/0口IP地址設為10.32.10.32;PC機的IP地址設為10.32.10.1.將要升級的IOS映象文件拷貝到相關的目錄中,并運行TFTP服務器軟件,通過菜單設置Root目錄為拷貝IOS映象文件所在目錄。
3、通過set 命令查看配置參數
QUOTE:rommon 2 > set PS1=rommon!> BOOT= BSI=0 RET_2_RTS= ?=0
4、在 rommon 狀態下輸入:(注意大小寫)
QUOTE:rommon 3 >IP_ADDRESS=10.32.10.1(路由器的ip地址)
rommon 4 >IP_SUBNET_MASK=255.255.255.0(路由器的掩碼)
rommon 5 >DEFAULT_GATEWAY=10.32.10.32(缺省網關,是pc機的ip地址)rommon 6 >TFTP_SERVER=10.32.10.32(是pc機的ip地址)
rommon 7 >TFTP_FILE=C2600-I-MZ.122-11.BIN(上傳ios文件的名稱)
rommon 8>sync(保存參數配置)
rommon 9 >set(查看)
PS1=rommon!> BOOT= IP_ADDRESS=10.32.10.1 IP_SUBNET_MASK=255.255.255.0 DEFAULT_GATEWAY=10.32.10.32 TFTP_SERVER=10.32.10.32 TFTP_FILE=C2600-I-MZ.122-11.BIN BSI=0 RET_2_RTS= ?=0 rommon 10 >tftpdnld執行tftpdnld命令進行ios升級,有時可能會報錯或命令不執行,這時只要用sync命令保存配置后,重新啟動路由器(最好關掉電源再開機)后,再執行tftpdnld命令就可以了。
QUOTE:rommon 10 >tftpdnld(傳送文件)出現提示選擇y IP_ADDRESS: 10.32.10.1 IP_SUBNET_MASK: 255.255.255.0 DEFAULT_GATEWAY: 10.32.10.32 TFTP_SERVER: 10.32.10.32 TFTP_FILE: C2600-I-MZ.122-11.BIN Invoke this command for disaster recovery only.WARNING: all existing data in all partitions on flash will be lost!Do you wish to continue? y/n: [n]:
y
!?。。。。。。。。。。。。?!Receiving C2600-I-MZ.122-11.BIN from 10.32.10.32!
!?。。。。。。。。。。。。。。。。。?!
…
!?。。。。。。。。。。。。。。。。。。。?/p>
File reception completed.Copying file C2600-I-MZ.122-11.BIN to flash.Erasing flash at 0x607c0000 program flash location 0x605b0000 rommon 11> 在rommon 11>提示符下鍵入reset,或重新啟動路由器(power-cycle),進入正常引導狀態,即:
rommon 11 >reset 筆者在Cisco2500、2600、7200等系列路由器上均實際操作過,以上為在Cisco2610路由器上實際操作捕獲或截屏,所配地址只是特例,大家可根據實際需要予以修改。最后建議:大家在作正常路由器系統升級時,為防止不正確操作等引起的升級失敗,請先把路由器原有的系統備份下來。
第四篇:路由器IOS升級方法總結
路由器IOS升級方法總結
本人長期從事計算機網絡管理工作,在對CISCO路由器的長期日常維護和管理實踐中積累了一定的經驗?,F總結歸納出CISCO路由器IOS映像升級的幾種方法,供廣大網絡愛好者或同仁參考。在介紹CISCO路由器IOS升級方法前,有必要對Cisco路由器的存儲器的相關知識作以簡單介紹。路由器與計算機相似,它也有內存和操作系統。在Cisco路 由器中,其操作系統叫做互連網操作系統(Internetwork Operating System),常簡稱為IOS。路由器的存儲器主要有: ROM:只讀存儲器包含路由器正在使用的IOS的一份副本;
RAM:IOS將隨機訪問存儲器分成共享和主存。主要用來存儲運行中的路由器配置和與路由協議有關的IOS數據結構;
FLASH(閃存):用來存儲IOS軟件映像文件,閃存是可以擦除內存,它能夠用IOS的新版本覆寫,IOS升級主要是閃存中的IOS映像文件進行更換。NVRAM:非易失性隨機訪問存儲器,用來存儲系統的配置文件。
IOS升級方法一
在對能夠正常啟動的CISCO路由器的IOS進行升級時,比較簡單。具體步驟如下:
1、尋找一種TFTP服務器軟件(有CISCO公司的TFTPServer或3COM公司的3Cserver等,在升級較大IOS映象文件時,建議用3Cserver),安裝在一臺計算機上,將要升級的IOS映象文件拷貝到相關的目錄中(例:D:),并運行TFTP服務器軟件,通過菜單設置Root目錄為拷貝IOS映象文件所在目錄(如D:)。假設該計算機的IP地址為10.32.10.1;
2、連接路由器的console口與PC機的COM1,使用PC的超級終端軟件訪問路由器,將路由器的地址設為10.32.10.32(與計算機的IP地址同網段即可)。建議在進行IOS升級前將原有IOS文件備份下來,防止待升級的IOS文件存在問題不可用; QUOTE: Router# dir flash:(查看目前IOS映象文件名,也可用Router#Show version)
Directory of flash:/
1-rw-5998292 C2600-I-MZ.122-11.BIN
8388608 bytes total(2390252 bytes free)
Router#copy flash tftp(備份IOS文件)
Source filename []?c2600-i-mz.122-11.bin
Address or name of remote host []? 10.32.10.1(TFTP服務器地址)
Destination filename [c2600-i-mz.122-11.bin]?
?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!
…
?。。。。。。。。。。。。。。。。。。。。。。。。?!!
5998292 bytes copied in 324.071 secs(18509 bytes/sec)
Router#
3、對路由器進行IOS升級; QUOTE: Router#copy tftp flash
Address or name of remote host []? 10.32.10.1(TFTP服務器地址)
Source filename []? c2600-i-mz.122-11.bin(需升級的新IOS映象文件名)
Destination filename [c2600-i-mz.122-11.bin]?
Do you want to over write? [confirm]
Accessing tftp://10.32.10.1/c2600-i-mz.122-11.bin...Erase flash: before copying? [confirm]
Erasing the flash filesystem will remove all files!Continue? [confirm]
Erasing device...eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...erasedee
Erase of flash: complete
Loading c2600-i-mz.122-11.bin from 10.32.10.1(via Ethernet0/0):?。。。。。?!
?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!
…
!?。。。。。。。。。。。。。。。。?!
[OK-5998292 bytes]
Verifying checksum...OK(0xA0C0)
5998292 bytes copied in 318.282 secs(18846 bytes/sec)
Router# IOS升級方法二
由于升級失敗后或者路由器的config-register寄存器值為0x2101時,開啟路由器時、或者在開啟(某些型號)Cisco路由器的電源開關后30秒內按下Ctrl+break鍵,中斷路由器的正常啟動,路由器都會進入rom監視模式,即Router(boot)>,在這種情形下,對路由器的IOS進行升級,也比較簡單。首先進入特權模式下,即
QUOTE: Router(boot)>en
Router(boot)# 其他升級步驟同方法一,即:執行copy tftp flash命令,對IOS進行升級。升級完成后,不要忘了修改config-register寄存器值為0x2102(恢復正常值)。QUOTE: Router(boot)# t
Router(boot)(config)# config-register 0x2102
Router(boot)(config)#exit
Router(boot)#wr
Router(boot)#reload
重啟即可。
第五篇:ios畢業論文
河南理工大學畢業設計(論文)說明書
摘 要
隨著計算機網絡通信技術和Internet的飛速發展,基于因特網的手機移動應用已經開始成為一種全新的功能需求,并且越來越受到人們的關注。由于移動應用具有簡單性,隨時隨地性等諸多特點,因此它有著傳統計算機所無法比擬的優點。這樣一來,手機移動應用的開發工作就顯得尤為重要,開發出一個集合手機應用的“商店”極為重要,近年來iphone手機在中的發展趨勢日趨上升,iphone手機保密性很強,很多東西都不對外開放,愛限免手機app就是針對iphone手機而開發的一款手機應用,日趨擴大的市場也使得應用于iphone手機的app開發日趨緊迫,可以說愛限免的開發不僅是客戶的需求更是市場的需求。
愛限免項目的開發使用了iphone自己研發的開發軟件xcode6.0,主要有UIkit框架和Foundation框架組成。愛限免的項目開發,對數據進行展示主要應用列表控制器UIableview,在使用UItableview是對cell的復用是此技術的難點,主要避免在cell復用是出現內存泄露狀況而導致的程序崩潰,數據的獲取應用了AFHttpNetWork第三方庫,對網絡數據進行get獲取,把獲取的數據用數據模型接收,這樣有利于降低耦合性,是程序更順暢。在對數據保存時用到了FMDB第三方數據庫,此數據庫的底層也是對squlite的封裝,是開發者應用起來更順手簡介,提高效率,界面之間的數據傳輸難點blcok的應用,這點要求開發者對block有比較深刻的理解,以及應用熟練度。關鍵詞:ios,squlite,block,應用,控件
I
河南理工大學畢業設計(論文)說明書
Abstract
With the rapid development of computer network communication technology and the Internet, based on Internet mobile phone application has begun to become a kind of new functional requirements, and people have paid more and more attention.Because of its simplicity, anytime, anywhere, etc., it has the advantages that the traditional computer can't match..In this way, the mobile application development work is particularly important, the development of a collection of mobile application store “is very important, in recent years the iPhone in the development trend is rising day by day, iPhone mobile phone security is very strong, a lot of things are not open to the public, love limit free mobile app is for the iPhone and the development of a mobile application, widening the market also make the application to iPhone app development is becoming more and more urgent, you can love limit free development is not only the needs of customers is the demand of the market
The development of love limited free project use of iPhone own R & D software xcode6.0, mainly UIkit framework and Foundation framework.Love free for a limited time of project development, the data for display of the main application list controller UIableview, in the use of UItableview is reuse of the cell is the difficulty of this technology, mainly to avoid memory leak condition, which leads to the program crashes in the cell multiplexing and data acquisition application the AFHttpNetWork third-party libraries, the network data to get access to, to get the data model data receiving, which help to reduce coupling is process smoother.In to save the data used in the FMDB database of the third party, the bottom of this database is to squlite package is more comfortable profile application developers, improve efficiency, application of interface between data transmission difficulties blcok, this requires developers to more profound understanding of block, as well as the application of proficiency Keywords: IOS, squlite, block, application, control II
河南理工大學畢業設計(論文)說明書
目 錄
摘 要............................................................I 第一章 前 言.....................................................1
1.1 課題開發背景................................................1 1.2 愛限免手機app框架設計開發的現實意義........................2 1.3 國內外研究狀況..............................................2 1.4 論文內容和結構..............................................3 第2章 愛限免手機應用開發技術簡介.................................5
2.1 Objective-c簡介.............................................5 2.1.1 ios系統框架...........................................6 2.1.2核心操作系統層和核心服務層.............................7 2.1.3應用程序框架...........................................8 2.2 SQLite數據庫介紹............................................9 2.3 XCode......................................................10 第3章 愛限免手機應用app需求分析................................11
3.1 愛限免手機應用app的可行性分析.............................11 3.2 愛限免手機應用app功能需求分析.............................13 3.2.1 功能需求..............................................14 第4章 愛限免手機應用app設計....................................16
4.1 模塊功能設計...............................................16 4.1.1 限免模塊..............................................16 4.2.1 免費模塊..............................................21 4.2.2 專題模塊..............................................26 4.2.3 分享功能模塊..........................................30 4.2.4 收藏功能模塊..........................................32 4.2.5 搜索功能模塊..........................................36 第5章 系統測試..................................................38
5.1 功能模塊測試...............................................38 5.2 功能整體測試...............................................39 總結與展望.......................................................40
總結...........................................................40
III
河南理工大學畢業設計(論文)說明書
展望...........................................................41 參考文獻.........................................................43 謝 辭...........................................................44
IV
河南理工大學畢業設計(論文)說明書
第一章 前 言
1.1 課題開發背景
如今移動開發產業讓人眼花繚亂,主要的開飯平臺有:iOS(iPhoneOS)、Android、Nokia Symbian、BlackBerry、Java ME、Windows Phone、Flash/Flash Lite、mobile web(WAP/XHTML/CSS/Javascript)。Android以其開放性,多任務,大功能,畫面流暢,硬件設備優良多樣等各種優點,占智能機一大部分;然而它也存在著很明顯的不足,如:兼容性差,各種機型的配置不一樣,以至于開發的時候出現各種版本。有些產品華而不實,用戶體驗差。Symbian主要基于C語言的應用開發,支持多線程運行模式,但是開發代碼量過大給開發人員造成很大的不便,另外塞班版本之間兼容性差也是SymbianOS需要改進的一個地方。就目前而言,三大平臺(Android、Symbian、BlackBerry)的市場占有率也在逐漸下降,iOS呈現平穩上升趨勢。
1.App Store的支付模式成熟
App Store的成熟不僅僅是商業模式的創新,更重要的是無法模仿,經過長時間的運營,App Store已經形成完備的支付模式,被大部分用戶接受。
2.iOS是用Objective-C開發
從全球的編程語言排行榜來看,雖然,Objective-C只有蘋果公司一家使用,但是已經排名第4,可見iOS開發的普及性和受歡迎程度,另外,objective-c是對c語言的封裝,既沒有了c語言寫程序的繁瑣復雜性,又兼顧了c語言的高效率,這也使得objective-c語言在編程語言中的地位以及受歡迎度日益上升的一個因素。
3.Iphone性能優越
蘋果iPhone以及所有蘋果的硬件軟件策略和控制讓蘋果在用戶體驗和控制產品質量方面占盡先機,大部分iOS用戶能夠同時對他們手中的設備進行更新,這會吸引更多用戶。
4.iPhone在中國極受歡迎
中國的各大移動運營商都積極地與蘋果公司合作,各自推出適合中國人使用的手機套餐和應用,比如中國聯通,中國電信等等,社會各界也對iPhone有很好的評價,還有很多知名手機應用軟件,如qq微信等也加入了app store。
5.iOS在各國開發者中有很好的學習氛圍
如facebook的three 20 iOS開源代碼庫,都是良好的學習資源,還有一些
河南理工大學畢業設計(論文)說明書
前輩大牛發表的博客如博客園就是一個ios開發者很好的交流網站,還有一些如cocoachina里邊集合了很多開發者的心得及項目,國內外的開發大牛都有在上邊發表自己的心得。也是ios開發者良好的學習資源。
1.2 愛限免手機app框架設計開發的現實意義
隨著科技的發展技術的進步,手機的功能也出現了翻天覆地的變化,由原來只是打電話發短信的基本功能,轉變為現在的全功能智能手機,人們對手機的要求也越來越高。
1.iphone手機中國市場無限擴大
Iphone手機的性能優越已經不言而喻,不用就釋放也使得iphone手機避免了安卓手機卡機現象,然而iphone手機并不對外開源,是的其核心技術只被蘋果公司壟斷,關于iphone手機的手機應用也是少之又少,畢竟開發者有限。因此iphone手機的app開發也是迫切的。
2.開發框架完善
Iphone應用的開發主要平臺式有iphone公司自己研發的開發平臺xcode,是由蘋果公司的先輩大牛寫出來的,主要用于ios開發者開發軟件,集合objective-c,性能比較完善。
3.滿足市場
Iphone主要軟件獲取是從appStore中買或者是免費下載,愛限免主要實現對iphone手機應用的時時推薦,把app進行條理分類,便于用戶根據個人需求獲取自己想要得到的app。
1.3 國內外研究狀況
1.國外
第一代iPhone在2007年誕生雖然現在也許很難想象,但是當第一代iPhone發布的時候,它相對來說落后的特性和功能是不足以讓它直接在紙面的參數對比上勝過競爭對手的。當時的Windows Mobile, Palm OS, Symbian, 甚至是BlackBerry都是2007年間相對成熟的系統了,都擁有廣泛而又深厚的特性積累。相比之下,iPhone不支持3G網絡,不支持多任務操作,也不支持第三方應用。你沒有辦法去復制/粘貼文本,你沒有辦法在想要發送的電子郵件中添加附件。就連彩信iPhone也沒有辦法提供支持。其他方面的特性缺失還包括:Exchange郵件推送、可自定義的主屏幕、tethering、可見的全局文件管理器、Office文件編輯、語音撥號、以及對黑客和開發者所理應由的開放性,iphone發布三個 2
河南理工大學畢業設計(論文)說明書
月之后就迎來了第一次升級,引入了iTunes Wi-Fi MusicStore。它允許用戶直接在iPhone上面購買音樂,它或許是許許多多iPhone新特性中因為運營商網絡壓力或者運營利益而遭到壓制的例子中的第一個,在隨之而來的ios2解決了手機應用問題加入了appstore,App Store同時存在于手機(AppStore應用)和PC(iTunes)兩個地方,用戶選擇任意一種途徑都可以自由地瀏覽和安裝應用程序。這對于過去分散性極高的移動應用(大部分通過web直接下載,有些應用存在于第三方應用商店,整體和OS的整合度較差)來說是一個巨大的變化。另外重要的是,AppStore和iTunesMusic使用一個賬號,用戶無需再次輸入自己的信用卡賬號密碼。這意味著查找和安裝應用程序將前所未有的容易,這大大提高了用戶沖動消費的可能性,在之后的升級中也加入了自己原創的地圖的一些高級功能。2.國內
隨著智能手機的大眾化,越來越多的人應用智能手機。相對的對手機軟件的需求也就越來越多。當今時代手機不再只是用來打電話、發短信的工具,反而對手機的娛樂功能要求越來越高。手機新聞也成為了人們的主要獲取信息途徑之一。目前中國新聞行業已經具備了相當的規模,并在國際市場上已有一定的競爭力。蘋果手機作為當今中國智能手機市場上不可或缺的一個品牌,基于iOS的手機軟件需求量也就相應的越來越強。市場上的新聞品牌繁多,定位不一,基本滿足了各層次消費者的需求,例如:騰訊新聞、搜狐新聞、網易新聞、新浪新聞等等這些大家所熟知的新聞已經在蘋果軟件中占據了一定的地位。智能手機的普及使得移動信息平臺成為了主流。伴隨著蘋果手機進入中國市場,相應的iOS技術逐漸流行起來。而對于開發蘋果應用的語言Objective-C,也成為當今社會最流行的開發語言,并且保持著強勁的上升趨勢,隱隱有超過C語言的現象。對于其他的開發語言,例如java、javascripe,Object-C以其強大的優勢遙遙領先于這些其他的編程語言。本人根據當前的形式,決定引用這種這種技術來開發手機應用。
1.4 論文內容和結構
本論文主要寫的是一個ios項目-愛限免的實現過程,以及一些在實現過程中遇到的難題,解決方法,自己在解決問題中的體悟和感受,以及對以后項目的完善的展望,本文把實現項目過程中的核心代碼張是給讀者看,讓讀者對我的項目有初步的了解,也對關鍵代碼附有文字說明以及代碼運行后的圖片展示。具體 3
河南理工大學畢業設計(論文)說明書
章節內容如下簡介講述:
第一章,介紹了課題的開發背景、課題開發的現實意義、國內外研究綜述、論文內容及結構。
第二章,概略地介紹了開發愛限免手機應用多用到的各種技術,比如新技術Objective-c,SQLite數據庫,開源框架的json解析等。
第三章,對愛限免系統結構設計、系統結構功能、運行環境等概要分析設計階段做工了大體介紹即需求分析。
第四章,對系統總體流程設計、系統整體框架、后臺邏輯處理功能設計和數據庫設計作了簡要說明具體介紹了系統各功能實現過程,如分享、收藏等。
第五章,大體介紹了對本系統的測試工作,涵蓋了測試計劃、測試結果以及測試分析這三個方面的內容。
河南理工大學畢業設計(論文)說明書
第2章 愛限免手機應用開發技術簡介
該部分主要包括對iOS系統架構的分析、核心操作系統的分析、應用程序框架的分析、內核的分析、開發環境的配置信息、選用數據庫描述信息等,具體如下:
2.1 Objective-c簡介
Objective-C是非?!皩嶋H”的語言。它使用一個用C寫成、很吊的運行庫,只會令應用程序的占得內存增加很小。OC寫成的程序通常不會比其源代碼大很多。而其函數庫(通常附在軟件發行本)亦和Smalltalk系統要使用極大的內存來開啟一個窗口的情況相反。Objective-C的最初版本并不支持垃圾回收。在當時這是爭論的焦點之一,很多人考慮到Smalltalk回收時有漫長的“死亡時間”,令整個系統失去功用。Objective-C為避免此問題才不擁有這個功能。雖然某些第三方版本已經加入這個功能(尤其是GNUstep),再起Mac OS X 10.3中仍未引入這個功能。不過令人欣慰的是在Apple發布的XCode4中已經支持自動釋放,我不敢冒昧的說那是垃圾回收,因為兩者機制不同,在xCode4中的自動釋放,也就是ARC(Automatic Reference Counting)機制,是不需要用戶手動去Release一個對象,而是在編譯期間,編譯器會自動幫你添加那些以前你經常寫[NSObject release]。
另一個問題是OC不包括命名空間機制(namespace mechanism)。取而代之的是程序設計師必須在其類別名稱加上前綴,時常引致沖突。在2004年,在Cocoa編程環境中,所有Mac OS X類別和函式均有“NS”作為前綴,例如NSobject或NSButton來清楚分別它們屬于Mac OS X核心;使用“NS”是由于這些類別的名稱在NeXTSTEP開發時定下。雖然Objective-C是C的母集,但它也不是C的基本型別為第一級的對象。和C++不同,Objective-C不支援運算子多載(它不支持ad-hoc多型)。亦與C++不同,但和Java相同,Objective-C只容許對象繼承一個類別(不設多重繼承)。Categories和protocols不但可以提供很多多重繼承的好處,而且沒有很多缺點,例如額外執行時間過重和二進制不兼容。由于OC使用動態運行時類型,而且所有的方法都是函數調用(有時甚至連系統調用(syscalls)也如此),很多常見的編譯時性能優化方法都不能應用于OC(例如:內聯函數、常數傳播、交互式優化、純量取代與聚集等)。這使得OC性能劣于類似的對象抽象語言(如C++)。不過OC擁護者認為既然OC運行時消耗較大,OC本來就不應應用于C++或Java常見的底層抽象
河南理工大學畢業設計(論文)說明書
2.1.1 ios系統
Cisco的網際操作系統(IOS)是一個為網際互連優化的操作系統--類似一個局域操作系統(NOS)、如Novell的 NetWare,為LANs而進行優化。IOS為長時間有效地維護一個互聯網絡提供了統一的規則。簡而言之,它是一個與硬件分離的軟件體系結構,隨網絡技術的不斷發展,可動態地升級以適應不斷變化的技術
IOS可以被視作一個網際互連中樞。一個高度智能的管理員,負責管理、控制復雜的分布式網絡資源。其早期版本是一個單獨系統,基本上以路由器為中心。它被排列成一個過程(Procedure)集,允許任何過程之間相互呼叫。這種單一的結構使數據的隱蔽性和獨立性不強。它的大多數操作代碼擁有結構和操作的相關性
iPHONE是Mac出的封閉手機系統,iPhone相對要穩定,不開放源代碼的,擴展相對不足,移植性很好!iPhone開發用的是Objective-C(一種C語言的第三方拓展版),從眾面小,不能定制UI(界面),只能進行功能解鎖 比如:越獄.iPhone定位于高端手機市場,走的是個性化路線,主要優勢是AppStore(移動網上商店),Mac擁有全球最大最成熟的移動網上商店
1.模塊性
IOS是Cisco路由軟件的初始品牌名稱。隨著Cisco技術的發展,IOS不斷擴展,成為Cisco Central ENgineering(中央工程部門)所稱之為的“一系列緊密連接的網際互連軟件產品”。盡管在其品牌名識別中,IOS可能仍然等同于路由軟件,但是它的持續發展發已使之過渡到支持局域網和ATM交換機,并為網絡管理應用提供重要的代理功能。必須強調的是,IOS是Cisco開發的技術:一項企業資產。它給公司提供獨特的市場競爭優勢。許多競爭者許可IOS在其集線器和中由模塊內運行,IOS已尼廣泛成為網際互連軟件事實上的工業標準。
2.靈活性
基于Cisco產品的工程開發以用戶可以獲得適應變化的靈活性。IOS軟件提供一個可擴展的平臺,Cisco會隨著需求和技術的發展集成新的功能。Cisco可以更快地將新產品投向市場,我們的客戶可以享用這種優勢。
3.可伸縮性
IOS遍布網際互連市場;廣泛的Cisco使用伙伴及競爭者在他們的產品上支 6
河南理工大學畢業設計(論文)說明書
持IOS.IOS軟件體系結構還允許其集成構造企業互聯網絡的所有部分。Cisco已經定義了4個:核心/中樞:網絡中樞和WAN服務,包括大型骨干網絡路由器和ATM交換機。工作組:從共享型局域網移植到局域網交換(VLANs)提供更優的網絡分段和性能。)遠程訪問:遠程局域網連接解決方案;邊際路由器、調制解調器等。IBM網際互連:SNA和LAN并行集成,從SNA轉換到IP.Cisco的IOS擴展了所有這些領域,提供了支持端到端網際互連的穩健性。
4.可操作性
IOS提供最廣泛的基于標準的物理和邏輯協議接口——超過業界任何其他供應商:從雙絞線到光纖,從局域網到園區網到廣域網,Novell NetWare,UNIX,SNA以及其他許多接口。即是說,一個圍繞IOS建立的網絡將支持非常廣泛的應用。
2.1.2核心操作系統層和核心服務層
位于iOS系統架構最下面的一層是核心操作層,它包括內存管理,文件管理,電源管理以及一些其他的操作系統業務,它可以直接和硬件設備交互。核心操作系統層包括以下這些組件:OS X Kernel,Mach 3.0,BSD,Sockets,Power Mgmt,File System Keychain,Certificates,Security,Bonjour等
開發人員也可以完全訪問核心服務層來方問iOS的一些服務,包括數據庫連接,URL學習等等,它主要包括以下這些組件:Collections,Address Book,Networking,File Access,SQLite,Core Location,Net Services,Threading,Preferences,URL Utilities等。
SQLite是嵌入式的和輕量級的sql數據庫,廣泛用于iOS應用。iOS系統內置SQLite數據庫減小了開發人員的負擔,是系統的一部分。
Net Servicer主要負責網絡服務,在開發過程中,承擔應用程序與服務器之間連接的角色,有很強的交互性。
媒體層,通過它可以在應用程序中使用各種媒體文件,進行音頻與視頻的錄制,圖形的繪制,以及制作基礎的動畫效果。它包括以下這些組件:Core Audio,OpenGL,Audo Mixing,AudioRecording,VideoPlayback,JPG,PBG,TIFF,PDF,Quartz,CoreAnimation,OpenGL ES。最上面一層是可觸摸層,這一層為應用開發提供了各種有用的框架,并且大部分與用戶界面有關,本質上來說它負責用戶在iOS設備上的觸摸交互操作。它包括以下這些組件:Multi-Touch Events,Core Motion,Camera,View Hierarchy,Localization,Alerts,Web Views,Image 7
河南理工大學畢業設計(論文)說明書
Picker,Multi-Touch Controls。
在Cocoa Touch層中的很多技術都是基于Objective-C語言的。Objective-C語言為iOS提供了相機集合,文件管理,網絡操作等支持。例如UIKit框架,它為應用程序提供了各種可視化組件,窗口(window),視圖(view)和按鈕組件(UIButton)。Cocoa Touch層中的其他框架,對我們在應用程序中的開發來說也是非常有用的,如訪問用戶通信錄功能框架,獲取照片信息功能的框架,負責加速感應器和三維陀螺儀等硬件支持的框架等等。
2.1.3應用程序框架
編寫應用程序項目,都是從CocoaTouch層開始的,具體來說是從UIKit Framework開始的。iOS常用的SDK框架如下:
AddressBook.framework 提供訪問存儲核心數據庫中用戶聯系人信息的功能。
AddressBook.framework提供一個用戶界面,用于顯示存儲在地址薄中的聯系人詳情。
AudioUnit.framework提供一個接口,讓我們的應用程序可以對音頻進行處理。
AudioToolbox.framework和AVFoundation.framework提供音頻錄制和回放的底層API,同時也負責管理音頻硬件。
CFNetwork.framework訪問和配置網絡,像HTTP,FTP和Bonjour Services等。
CoreFoundation.framework提供抽象的常用數據類型,如Unicode、strings、XML、URL等。
CoreGraphics.framework提供2D繪制的基于C的API。
Foundation.framework提供Object-C的基礎類(像NSObject)、基本數據類型和操作系統服務等。
GameKit.framework為游戲提供網絡功能,點對點互聯和游戲中的語音交流。MapKit.framework為應用程序提供內嵌地圖的接口。MediaPlayer.framework提供視頻播放和音頻的功能。
MessageUI.framework提供視圖控制接口用以處理E-mail和短信。OpenGLES.framework提供簡潔而高效的繪制2D和3D圖形的OpenGL API。QuartzCore.framework提供動畫特效以及通過硬件進行渲染的能力。
河南理工大學畢業設計(論文)說明書
StoreKit.framework為應用程序提供在程序運行中消費的支持。SystemConfiguration.framework檢測當前網絡是否可用和硬件設備狀態的能力。
2.2 SQLite數據庫介紹
SQLite是一個輕量級、跨平臺的關系型數據庫。既然號稱關系型數據庫,支持SQL92標準中常用的事務(比如視圖、事務、觸發器等)就是理所當然的了,具體特色有以下幾點:
1.輕量級
先說它的第一個特色:輕量級。想必SQLite的創建者很看重這個特性,連它的Logo都是用的“羽毛”,來顯擺它的輕飄飄。SQLite和C/S模式的數據庫軟件不同,它是進程內的數據庫引擎,因此不存在數據庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態 庫,就可以享受它的全部功能。而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB等。
2.綠色軟件
SQLite的另外一個特點是綠色:它的核心引擎本身不依賴第三方的軟件,使用它也不需要“安裝”。所以在部署的時候能夠省去不少麻煩。
3.單一文件
所謂的“單一文件”,就是數據庫中所有的信息(比如表、視圖、觸發器、等)都包含在一個文件內。這個文件可以copy到其它目錄或其它機器上,也照用不誤。
4.跨平臺/可移植性
如果光支持主流操作系統,那就沒啥好吹噓的了。除了主流操作系統,SQLite還支持了很多冷門的操作系統。我個人比較感興趣的是它對很多嵌入式系統(比如Android、Windows Mobile、Symbin、Palm、VxWorks等)的支持。
5.內存數據庫(in-memory database)
SQLite的API不區分當前操作的數據庫是在內存還是在文件(對于存儲介質是透明的)。所以如果你覺得磁盤I/O有可能成為瓶頸的話,可以考慮切換為內存方式。切換的時候,操作SQLite的代碼基本不用大改,只要在開始時把文件Load到內存,結束時把內存的數據庫Dump回文件就OK了。
河南理工大學畢業設計(論文)說明書
2.3 XCode Xcode2.0是開發人員建立Mac OS X應用程序的最快捷方式,也是利用新的蘋果電腦公司技術的最簡單的途徑。Xcode2.0將Mac OSX的輕松使用,UNIX 能量以及高性能的開發技術集合在一起。
不管你用C、C++、Objective-C或 Java編寫程序,在AppleScript里編寫腳本,還是試圖從另一個奇妙的工具中轉移編碼,你會發現Xcode編譯速度極快。每次操作都很快速和輕松。
Xcode4的虛擬模型和設計功能讓你可以更輕松的開發和維護應用程序。只需選擇應用程序中想要編寫的部分,然后模型和設計系統將自動創建分類圖表,不僅可以顯示編碼,還可以讓你進行瀏覽。Mac OS X Core Data API 幫你的應用程序創建數據結構。更棒的是,它還自動提供撤消、重做和保存功能,無需編寫任何編碼。
Xcode整合的 Apple Reference Library為所有的Apple開發者文件提供一個單獨的搜索和顯示界面,這些文件包括來自蘋果電腦公司網站的在線文件,以及存放在你電腦上的文件。新的參考資料庫甚至可以幫你將定期更新資料下載到你的電腦,保持文件的最新狀態。Xcode 將幫你快速找到最新的答案。
Xcode4的核心部分是蘋果電腦公司下一代業界標準的gcc編譯器gcc4.0。新的編譯器利用許多先進的最優化技術幫你從現存編碼中獲得更多性能。從超級計算世界借鑒來的自動向量化(Auto-vectorization)技術可以幫助你釋放每臺 Intel 系統中速度引擎的能量,而不需要編寫向量化編碼。其他的最優化工具則支持反饋定向的最優化,以及隱藏模塊分析。
Xcode 將賦予你創建諸如計算和渲染引擎應用程序的能力,這些應用程序使用64位內存定址。這非常適合數據集中的應用程序,其通過訪問內存中的數據運行速度更快,遠勝于磁盤訪問。Xcode將為你提供工具來建立并調試適合 IntelCore i5, i7 和Mac OSX Lion的32或64位應用程序,還可以讓你創建包含32位和64位執行能力的 Fat Binaries。
眾所周知,在構建中引進多重處理器可以提高速度,Xcode 能幫你實現這個明顯的結論。利用支持 Rendezvous 的分布式構建功能,可以輕易地把編譯工作量分散到閑置的電腦上來寄放構建,或者更好是在單獨的電腦上開發一個專門的 Xserve 構建寄放區,快速處理那些耗時的任務。
河南理工大學畢業設計(論文)說明書
第3章 愛限免手機應用app需求分析
根據第一章所定義的課題研究方向及目標,本章將對系統功能進行具體的需求分析,具體分析愛限免app所要實現的功能以及欲達到的效果,具體內容如下章節:
3.1 愛限免手機應用app的可行性分析
1.使用objective-c編程技術
Objective-c是非常實際的語言,他是一個用c寫成、很小的運行庫,只會令程序的尺寸增加很小,和大部分oo系統使用極大的vm執行時間會取代整個系統運作相反,Objective-c寫的程序通常不會比起原始代碼大很多,而其函數庫亦和Smalltalk系統要使用極大的內存來開啟一個窗口的情況相反,因objective-c它完全兼容標準c語言,c語言具有的高效性也被objective-c繼承,但是我們用的objective-c并不像c語言用起來那么的復雜,因為它是對c的封裝,把復雜高效的語言變得簡單高效,這樣更利于ios開發者使用,也為iOS開發者帶來了便捷。(1)動態綁定
函數和消息的最根本不同是:函數和它的參數是在編譯的時候已經確定下來,但是消息和接收對象知道程序已經在運行,消息在傳遞時才能確定下來。確切的消息方法實現依賴于消息的接收者,不同的接收者可能有相同的方法名不同的方法實現,只有在消息接收時才能確定(動態類型),通過源代碼的類型定義并不能完全確認接收者的類型。運行時消息例程查找接收者和消息方法,找到消息方法實現的機器碼,呼叫這個方法,傳遞給它消息實例變量指針(2)多態性
在Objective-c中消息的調用看上去和標準C中的函數調用相似,但因為方法屬于一個對象,消息的行為與函數調用還是不同。在一些情況下,一些對象僅能對針對它涉及的方法起作用,不能被其他類的方法使用,即使這些類有同樣名稱的方法。這意味著兩個對象對同樣的消息有著不同的響應,即多態性。Objective-c中多態性和動態綁定配合使用,可以使代碼提供給任意數量不同類型的對象使用,這些對象不需要再寫代碼的時候就已經定義好,它們可以是以后開發的對象,也可以是其他項目的對象。(3)面向對象
面向對象程序構建在多種對象之上,基于Cocoa框架的程序可能使用
河南理工大學畢業設計(論文)說明書
NSMatrix對象、NSWindow對象、NSDirectonary對象、NSFont對象以及許多其它對象。在Objective-c中通過定義類來定義對象。面向對象讓開發者更容易開發應用程序軟件,以及更加規范化(4)繼承性
類的定義是累進的,任一個新類都是在另一個類的基礎上定義的,新類繼承了它的方法和實例變量。繼承使所有的類構成一顆樹形的結構,在Objective-c中使用類一般要繼承或間接繼承于基類:NSObject,因為NSObject提供了大量的有用特性。比如,一些圖形類,需要繼承于Shape類,而Shape是Graphic類的子類,Graphic又繼承于NSObject類,因此,還是間接繼承于NSObject類。類的繼承關系圖3-1所示:
圖3-1 Objective-C類繼承圖
在項目中NSObject集合了所有類的基本方法,所有的=類都繼承或者間接繼承NSObject。2.社會市場因素可行性
如今社會發展迅速,手機行業更是赤手可熱,手機應用的開發也是更新換代比較頻繁,一款好的手機軟件商店,不僅能適應市場的發展方向,更是為廣大用戶帶來福利以及便捷。
按照目前市場情形,越來越多的移動開發者涌進iOS開發領域。iOS平臺上應用軟件,App Store的支付模式更為成熟而且有監管,另外iOS的兼容性問題小,開發人員不用考慮太多的配置兼容問題,美觀大方的外形,更是吸引了大量
河南理工大學畢業設計(論文)說明書 的用戶。而且其良好的用戶體驗,都為iOS的發展奠定了良好的基礎。3.硬件工具可行性
使用工具方面,開發工具ios xcode6.0版本,要求mac10.8操作系統,一臺已經安裝有所有必備的軟件及相應軟件設備的計算機;內存要求大于或等于2G。
3.2 愛限免手機應用app功能需求分析
愛限免手機應用app,設計5個模塊,每個模塊各司其職,在整個工程中又到了MVC模式,單例模式,block模式,是每個功能模塊化各模塊之間的聯系降到最低,使得每個模塊都類似一個小型的家庭,每個成員各司其職,這樣就降低了程序的耦合性有利于后期代碼的維護,模塊化的設計也使得你的app看起來更有你條理性,下邊就是對模塊化的圖文解釋,具體如圖3-2-1:
圖3-2-1 模塊展示
河南理工大學畢業設計(論文)說明書
此圖清晰的展示了app的5個功能模塊,首相是上邊的5個大模塊,由一個分欄控制器UITablebarController控制,把這5各模塊放到分欄控制器數組中進行控制,如圖3-2-1設一個搜索控制器和一個詳情控制器,通過正反向傳值把5大功能模塊的信息傳到這兩個控制器上邊進行顯示,其中在詳情頁面還有收藏分享工能,收藏使用了一個數據庫進行裝載數據,分享實在MOb注冊了開發者 根據官方文檔進行了qq空間分享(需要有qq空間客戶端才行)。
3.2.1 功能需求
1.App應用的查看功能需求
此項目分別有5各視圖控制器viewcontroller分別有系統的分欄控制器tabbaicontroller控制,可以根據下標來回相互切換,每個視圖控制器上邊都有一個表格控制器UITableview來進行展示數據內容,由于數據的內容各不相同,表格控制器還需要適應每個數據的變化,視圖控制器之間還可以相互跳轉,一般都是通過壓棧的形勢來進行跳轉。2.App應用詳情查看表功能需求
應用詳情的展示由xib可視化編程和代碼兩者結合實現,可以展示商品的圖片、大小、類型、詳情介紹等內容,還有周邊推薦,可以看到周邊人的app,以經緯度來確定摸個區域。3.在線搜索應用功能需求
搜索功能有uiseacrbar來實現,通過app的名字,漢字英文都可以,通過代理方法把輸入框里邊的內容和數據中的信息對比,有相同的就保存到數組中,再通過UItableview展示到界面上來。4.在線app分享功能需求
分享的第三放有很多,我這里只用mob進行空間分享,這個功能需要開發者注冊開發者賬號,在官網上下載分享文檔,提取核心代碼,分享的實現有mob完成。
5.App收藏功能需求
App的收藏這里與運用了數據庫,可以通過點擊事件把你點擊的app加到數據庫中,再在相應的界面進行信息展示。6.App圖片保存功能需求
通過點擊事件來觸發收藏相冊的代理事件,把相應的圖片收藏到相冊,打開相冊即可觀看。
河南理工大學畢業設計(論文)說明書
7.App應用設置的功能需求
這里的app設置功能只做了,對收藏的app進行刪除的操作。
河南理工大學畢業設計(論文)說明書
第4章 愛限免手機應用app設計
系統設計階段主要的任務是系統各個模塊的具體設計與實現。
4.1 模塊功能設計
下面以具體的效果來展示各個功能模塊。
4.1.1 限免模塊
1實現顯示免費app的展示 2 對限時免費app的詳情查看 3對現實免費app的時間倒計時 4 app基本信息的顯示
限免功能模塊運行效果圖如下4.1.1-1,4.1.1-2所示
圖4.1.1-1限免界面
此圖為限免模塊的展示,如圖界面由一個uitableview覆蓋真個屏幕,商品在每個cell上進行信息展示,具體的設計由xib完成,下面展示cell的設計:
下邊我就用代碼來展示一下這個界面的實現: 首先是對網絡數據的請求startTime;
cell.surplusTimeLabel.text = [NSString stringWithFormat:@”剩余:%.2lld:%.2lld:%.2lld“,time/3600,time%3600/60,time%60];
}else{
AppMode1 *mode = _searchArr[indexPath.row];
cell.nameLabel.text = mode.name;
cell.iconImage.image = [UIImage imageWithData:mode.iconData];
cell.lastPriceLabel.text = [NSString stringWithFormat:@”¥ %.1f“,[mode.lastPrice floatValue]];
cell.categoryLabel.text = [mode.categoryName isEqualToString:@”Game“]?@”游戲“:@”應用“;
cell.countLabel.text = [NSString stringWithFormat:@”分享:%@次 收藏:%@次 下載:%@次“,mode.shares,mode.favorites,mode.downloads];
//處理 星星
cell.starImageView.frame = CGRectMake(cell.starImageView.frame.origin.x, cell.starImageView.frame.origin.y, 65/5.0*[mode.starOverall floatValue], cell.starImageView.frame.size.height);//修改fream
河南理工大學畢業設計(論文)說明書
//處理 倒計時問題
NSDate *date = [NSDate date];
long long startTime =(long long)[date timeIntervalSince1970];
NSString *str = [mode.surplusTime componentsSeparatedByString:@”.“][0];
NSDateFormatter *fo = [NSDateFormatter new];
fo.dateFormat = @”YYYY-MM-dd HH:mm:ss“;
NSDate *endDate = [fo dateFromString:str];
long long endTime =(long long)[endDate timeIntervalSince1970];
long long time = endTime(UITableViewCell
*)tableView:(UITableView
*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@”cell“];
if(tableView == _tableView){
AppMode1 *mode = _dataArr[indexPath.row];
cell.nameLabel.text = mode.name;
cell.iconImage.image = [UIImage imageWithData:mode.iconData];
cell.lastPriceLabel.text = @”¥ 0.0“;
cell.categoryLabel.text = [mode.categoryName isEqualToString:@”Game“]?@”游戲“:@”應用“;
cell.countLabel.text = [NSString stringWithFormat:@”分享:%@次 收藏:%@次 下載:%@次“,mode.shares,mode.favorites,mode.downloads];
//處理 星星--下面兩項 在xib中已經處理過
//
cell.starImageView.contentMode = UIViewContentModeLeft;//設置圖片填充方式
//
cell.clipsToBounds = YES;//設置 自動切割超出自身fream的部分
cell.starImageView.frame cell.starImageView.frame.origin.y,=
CGRectMake(cell.starImageView.frame.origin.x, 65/5.0*[mode.starOverall
floatValue], cell.starImageView.frame.size.height);//修改fream
cell.surplusTimeLabel.text = [NSString stringWithFormat:@”評分:%.2f分“,[mode.starOverall floatValue]];
}else{
AppMode1 *mode = _searchArr[indexPath.row];
cell.nameLabel.text = mode.name;
cell.iconImage.image = [UIImage imageWithData:mode.iconData];25
河南理工大學畢業設計(論文)說明書
cell.lastPriceLabel.text = @”¥ 0.0“;
cell.categoryLabel.text = [mode.categoryName isEqualToString:@”Game“]?@”游戲“:@”應用“;
cell.countLabel.text = [NSString stringWithFormat:@”分享:%@次 收藏:%@次 下載:%@次“,mode.shares,mode.favorites,mode.downloads];
//處理 星星
cell.starImageView.frame cell.starImageView.frame.origin.y,=
CGRectMake(cell.starImageView.frame.origin.x, 65/5.0*[mode.starOverall
floatValue], cell.starImageView.frame.size.height);//修改fream
cell.surplusTimeLabel.text = [NSString stringWithFormat:@”評分:%.2f分“,[mode.starOverall floatValue]];
}
UILabel *lebel =(UILabel *)[cell.contentView viewWithTag:10];
lebel.hidden = YES;
return cell;} 4.2.2 專題模塊
1按照一定的專題分類顯示 運行效果圖如下4.2.2-1
圖4.2.2-1 專題界面
河南理工大學畢業設計(論文)說明書
專題界面實現如圖所示,從圖上不難看出這個界面的cell復雜得多,這個cell上不僅僅是一個app的展示,而是集合了多個app,每個app都顯示不同的信息,而且點擊每個app都會顯示對應的商品詳情,在這里處理這個就用到了block傳值,下面對界面的設計進行代碼展示,首先是請求數據的展示: AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:PAGE_D_URL parameters:@{@”page“:@”1“,@”limit“:@”5“} success:^(AFHTTPRequestOperation *operation, id responseObject){
NSArray *arr = responseObject;
for(int i=0;i AppMode4 *mode = [[AppMode4 alloc]init]; mode.title0 = arr[i][@”title“]; mode.imageUrlStr1 = arr[i][@”img“]; mode.imageUrlStr6 = arr[i][@”desc_img“]; mode.title5 = arr[i][@”desc“]; mode.title1 = arr[i][@”applications“][0][@”name“]; mode.title2 = arr[i][@”applications“][1][@”name“]; mode.title3 = arr[i][@”applications“][2][@”name“]; mode.title4 = arr[i][@”applications“][3][@”name“]; mode.imageUrlStr2 = arr[i][@”applications“][0][@”iconUrl“]; mode.imageUrlStr3 = arr[i][@”applications“][1][@”iconUrl“]; mode.imageUrlStr4 = arr[i][@”applications“][2][@”iconUrl“]; mode.imageUrlStr5 = arr[i][@”applications“][3][@”iconUrl“]; mode.star1 = arr[i][@”applications“][0][@”starOverall“]; mode.star2 = arr[i][@”applications“][1][@”starOverall“]; mode.star3 = arr[i][@”applications“][2][@”starOverall“]; mode.star4 = arr[i][@”applications“][3][@”starOverall“]; mode.btnTitle1_1 = arr[i][@”applications“][0][@”comment“]; mode.btnTitle1_2 = arr[i][@”applications“][0][@”downloads“]; mode.btnTitle2_1 = arr[i][@”applications“][1][@”comment“]; mode.btnTitle2_2 = arr[i][@”applications“][1][@”downloads“];27 河南理工大學畢業設計(論文)說明書 mode.btnTitle3_1 = arr[i][@”applications“][2][@”comment“]; mode.btnTitle3_2 = arr[i][@”applications“][2][@”downloads“]; mode.btnTitle4_1 = arr[i][@”applications“][3][@”comment“]; mode.btnTitle4_2 = arr[i][@”applications“][3][@”downloads“]; _IDarray = @[arr[i][@”applications“][0][@”applicationId“],arr[i][@”applications“][1][@”applicationId“],arr[i][@”applications“][2][@”applicationId“],arr[i][@”applications“][3][@”applicationId“]]; [_IDMUarray addObject:_IDarray]; [_dataArr addObject:mode]; } [_tableView reloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError *error){ }];} 下面展示cell的賦值問題,這里我們會為每個app打上標簽,一遍我們在傳值的時候能辨認我們還點擊的是哪個app。 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ CustomCell_D *cell = [tableView dequeueReusableCellWithIdentifier:@”cell“]; cell.array = _IDMUarray[indexPath.row]; AppMode4 *mode = _dataArr[indexPath.row]; [cell setBlock:^(NSString *ID){ ViewControllerA_2 *viewCtl_2 = [[ViewControllerA_2 alloc]init]; viewCtl_2.appId = ID; [self.navigationController pushViewController:viewCtl_2 animated:YES]; }]; [cell.myImageView1 setImageWithURL:[NSURL URLWithString:mode.imageUrlStr1] placeholderImage:[UIImage imageNamed:@”topic_TopicImage_Default“]]; [cell.myImageView2 setImageWithURL:[NSURL URLWithString:mode.imageUrlStr2] placeholderImage:[UIImage 河南理工大學畢業設計(論文)說明書 imageNamed:@”topic_TopicImage_Default“]]; [cell.myImageView3 setImageWithURL:[NSURL URLWithString:mode.imageUrlStr3] placeholderImage:[UIImage imageNamed:@”topic_TopicImage_Default“]]; [cell.myImageView4 setImageWithURL:[NSURL URLWithString:mode.imageUrlStr4] placeholderImage:[UIImage imageNamed:@”topic_TopicImage_Default“]]; [cell.myImageView5 setImageWithURL:[NSURL URLWithString:mode.imageUrlStr5] placeholderImage:[UIImage imageNamed:@”topic_TopicImage_Default“]]; [cell.myImageView6 setImageWithURL:[NSURL URLWithString:mode.imageUrlStr6] placeholderImage:[UIImage imageNamed:@”topic_TopicImage_Default“]]; cell.myLabel1.text = mode.title1; cell.myLabel2.text = mode.title2; cell.myLabel3.text = mode.title3; cell.myLabel4.text = mode.title4; cell.myLabel5.text = mode.title5; [cell.btn1_2 setTitle:mode.btnTitle1_2 forState:UIControlStateNormal]; [cell.btn1_1 setTitle:[NSString stringWithFormat:@”%@“,mode.btnTitle1_1] forState:UIControlStateNormal]; [cell.btn2_2 setTitle:mode.btnTitle2_2 forState:UIControlStateNormal]; [cell.btn2_1 setTitle:[NSString stringWithFormat:@”%@“,mode.btnTitle2_1] forState:UIControlStateNormal]; [cell.btn3_2 setTitle:mode.btnTitle3_2 forState:UIControlStateNormal]; [cell.btn3_1 setTitle:[NSString stringWithFormat:@”%@“,mode.btnTitle3_1] forState:UIControlStateNormal]; [cell.btn4_2 setTitle:mode.btnTitle4_2 forState:UIControlStateNormal]; [cell.btn4_1 setTitle:[NSString stringWithFormat:@”%@“,mode.btnTitle4_1] forState:UIControlStateNormal]; cell.star1.frame = CGRectMake(cell.star1.frame.origin.x, 29 河南理工大學畢業設計(論文)說明書 cell.star1.frame.origin.y, 65/5.0*[mode.star1 floatValue], cell.star1.frame.size.height); cell.star2.frame = CGRectMake(cell.star2.frame.origin.x, cell.star2.frame.origin.y, 65/5.0*[mode.star2 floatValue], cell.star2.frame.size.height); cell.star3.frame = CGRectMake(cell.star3.frame.origin.x, cell.star3.frame.origin.y, 65/5.0*[mode.star3 floatValue], cell.star3.frame.size.height); cell.star4.frame = CGRectMake(cell.star4.frame.origin.x, cell.star4.frame.origin.y, 65/5.0*[mode.star4 floatValue], cell.star4.frame.size.height); return cell;} 4.2.3 分享功能模塊 1實現了分享的功能 運行效果圖如下4.2.3-1 圖4.2.4-1 點擊分享默認界面 在這里分享功能我用了mob第三方分享,通郭mob給的官方文檔,導入系統庫,就可以實現分享功能,具體代碼如下展示: //注冊shareSDK [ShareSDK registerApp:@”74f6b479a893“]; //添加QQ空間應用 注冊網址 http://connect.qq.com/intro/login/ [ShareSDK connectQZoneWithAppKey:@”1104627452“ appSecret:@”Usc84bJXmMeTzNCI“ qqApiInterfaceCls:[QQApiInterface class] tencentOAuthCls:[TencentOAuth class]]; 河南理工大學畢業設計(論文)說明書 //添加QQ應用 注冊網址 http://open.qq.com/ [ShareSDK connectQQWithQZoneAppKey:@”1104627452“ qqApiInterfaceCls:[QQApiInterface class] tencentOAuthCls:[TencentOAuth class]]; //分享點擊事件 -(IBAction)shareButton:(id)sender { //構造分享內容 id defaultContent:@”測試一下“ image:[ShareSDK imageWithPath:nil] title:@”ShareSDK“ url:@”http://www.tmdps.cn“ description:@”這是一條測試信息“ mediaType:SSPublishContentMediaTypeNews]; //創建彈出菜單容器 id [container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp]; //彈出分享菜單 [ShareSDK showShareActionSheet:container shareList:nil content:publishContent statusBarTips:YES authOptions:nil shareOptions:nil result:^(ShareType type, SSResponseState state, id if(state == SSResponseStateSuccess) { NSLog(NSLocalizedString(@”TEXT_ShARE_SUC“, @”分享成功“)); } else if(state == SSResponseStateFail) { 河南理工大學畢業設計(論文)說明書 NSLog(NSLocalizedString(@”TEXT_ShARE_FAI“, @”分享失敗,錯誤碼:%d,錯誤描述:%@“), [error errorCode], [error errorDescription]); } }];} 4.2.4 收藏功能模塊 1顯示你是否收藏成功 運行效果圖如下4.2.5-1 圖4.2.4-1 點擊收藏顯示界面 收藏功能我這里使用了一個ios本地數據庫codata也是對sqlite的封裝,這里使用了ios的單例模式,把這個數據庫寫在中轉站中,形成一個單例,所謂的單例就是在整個項目工程中只會被實例化一次,不會重復多次實例化,確保每次取到的都是同一個數據庫,代碼如下 @interface AppDelegate : UIResponder @property(strong, nonatomic)UIWindow *window; @property(readonly, strong, nonatomic)NSManagedObjectContext *managedObjectContext;@property(readonly, strong, nonatomic)NSManagedObjectModel *managedObjectModel;@property(readonly, strong, nonatomic)NSPersistentStoreCoordinator 河南理工大學畢業設計(論文)說明書 *persistentStoreCoordinator; 在沒次收藏成功的時候都會有一個提示圖標,就是圖里邊的溫馨提示,這里使用了一個 UIAlertView 來實現這個功能具體代碼如下: //賦值頭像 AFHTTPRequestOperationManager *man = [AFHTTPRequestOperationManager manager]; man.responseSerializer = [AFHTTPResponseSerializer serializer]; [man GET:_myIconUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject){ mode.iconData = responseObject; //存儲數據 [dele.managedObjectContext save:nil]; //彈出提示 收藏成功 UIAlertView *alv = [[UIAlertView alloc]initWithTitle:@”溫馨提示“ message:@”收藏成功“ delegate:self cancelButtonTitle:@”知道了“ otherButtonTitles:nil, nil]; [alv show]; } failure:^(AFHTTPRequestOperation *operation, NSError *error){ }];下面就是收藏功能的實現,這里收藏功能是通過appdelegate把實例化的數據庫在相應的控制器種取到,把要收藏的app添加到數據庫中實現本地化存儲,從而實現收藏,具體代碼如下: //取得 實體對象 AppDelegate *dele = [UIApplication sharedApplication].delegate; AppMode *mode = [NSEntityDescription insertNewObjectForEntityForName:@”AppMode“ inManagedObjectContext:dele.managedObjectContext]; //賦值 mode.appId = self.appId;33 河南理工大學畢業設計(論文)說明書 mode.name = _myName;這樣就把喜歡的app進行了收藏,由于這個數據庫是被寫成了單例,因此里邊的數據是會不斷更新的,而數據內容就是收藏的app,在需要展示的界面取出來數據庫進行刷表就可以實現展示,具體代碼如下: [_arr2 removeAllObjects]; //從數據庫取出收藏的app AppDelegate *delegate = [UIApplication sharedApplication].delegate; NSFetchRequest *request = [NSFetchRequest new]; request.entity = [NSEntityDescription entityForName:@”AppMode“ inManagedObjectContext:delegate.managedObjectContext]; _arr = [delegate.managedObjectContext executeFetchRequest:request error:nil]; //創建一個 滾動視圖,高度根據需要改變 _sView = [[UIScrollView alloc]initWithFrame:self.view.bounds]; _sView.frame= CGRectMake(0, 50, self.view.bounds.size.width, self.view.bounds.size.height); [self.view addSubview:_sView]; _sView.contentSize = CGSizeMake(self.view.bounds.size.width, 50+(_arr.count /3 +1)*100); //根據收藏的app個數 創建圖標 for(int i =0;i<_arr.count;i++){ UIImageView *view = [[UIImageView alloc]initWithFrame:CGRectMake(30+i%3*100, 50+i/3*100, 60, 60)]; //打開人機交互開關 view.userInteractionEnabled = YES; view.image = [UIImage imageWithData:[_arr[i] iconData]];34 河南理工大學畢業設計(論文)說明書 view.tag = 600+i; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y + 60, 60, 20)]; label.textAlignment = NSTextAlignmentCenter; label.font = [UIFont systemFontOfSize:12]; label.text = [_arr[i] name]; [_sView addSubview:label]; [_sView addSubview:view]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(gesAction:)]; [view addGestureRecognizer:tap]; //創建 刪除小圖標 UIImageView *view2 = [[UIImageView alloc]initWithFrame:CGRectMake(-10,-10, 70, 70)]; //打開人機交互開關 view2.userInteractionEnabled = YES;// view2.backgroundColor = [UIColor lightGrayColor]; view2.contentMode = UIViewContentModeTopLeft; view2.image = [UIImage imageNamed:@”close“]; //添加到 圖標視圖上 [view addSubview:view2]; //判斷是否 隱藏 刪除小圖標 if(!_btn.selected){ view2.hidden = YES; } //添加手勢 UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(deleteGesAction:)]; [view2 addGestureRecognizer:tap2];35 河南理工大學畢業設計(論文)說明書 //添加到數組 [_arr2 addObject:view2];App的刪除功能也是在這里實現的,通過點擊設置按鈕,使app的圖標顯示刪除“×”,點擊,把它從數據庫中刪掉,刷新數據,代碼如下: //刪除收藏的數據 -(void)deleteGesAction:(UIGestureRecognizer *)ges{ //根據點擊的view 獲取角標------正好相對應 要刪除的app在arr中的角標 NSInteger index = [_arr2 indexOfObject:ges.view];// NSLog(@”%ld",index); //從數據庫取出收藏的app AppDelegate *delegate = [UIApplication sharedApplication].delegate; //刪除 [delegate.managedObjectContext deleteObject:_arr[index]]; [delegate.managedObjectContext save:nil]; //刷新頁面 [_sView removeFromSuperview]; [self loadData];4.2.5 搜索功能模塊 1實現app名字搜索顯示 2 點擊可以查看信息 運行效果圖如下4.2.5-1,36 河南理工大學畢業設計(論文)說明書 圖4.2.5-1 搜索結果界面 搜索界面的實現實在原有界面的基礎上加上實現代理方法,用uiseachbar來實現app的搜索功能核心代碼如下 -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{ //清空搜索結果數組 [_searchArr removeAllObjects]; for(AppMode1 *mode in _dataArr){ if([mode.name rangeOfString:searchString].location!= NSNotFound){ [_searchArr addObject:mode]; } } return YES;} 37 河南理工大學畢業設計(論文)說明書 第5章 系統測試 系統測試是保證系統質量和可靠性的關鍵步驟,是對系統開發過程中的系統分析系統設計和實施的最后復查。根據測試的概念和目的,在進行信息系統測試。 5.1 功能模塊測試 1.限免模塊的測試,主要測試、接口數據是否能正確顯示,不出現閃退的情況,時間會不會刷新,每個app的星級會不會正確顯示,這些測試中唯獨最后兩項最為麻煩,第一次測試的時候星星的顯示問題總是搞不定,不管怎么調試都是顯示五顆星,和顯示的數據不照應,經過同學的幫忙,忙才發祥是父視圖沒有對子視圖進行切割,還有就是限免的價格是被拉掉的,我是用xib做的拉掉的效果,但是在點擊這個app的時候這個被拉掉的線就會莫名的消失,變成原樣,當時周圍的同學也是每辦法了,這個問題一直拖到了最后,知道有天逛博客時看到有一篇博客寫到點擊cell的時候,cell會變成灰色,當時我就想到了這個問題,我認為我的劃線沒了可能是和cell的背景色沖突了,把這個關掉之后,果不其然,劃線不會消失了。 2.降價模塊測試,主要針對數據解析json的正確應用,josn解析的時候主要注意里邊數據的取值方式,json數據里邊你需要的可能是有一個數組構成的,也可能是一個字典,正當的取值才不會造成無謂的越界現象,還有json數據中并不是所有的數據都是字符串的形勢顯示,也可能會出現NSnumber的數據,當時在后期調試的時候,我的程序就因一個NSNUmber的數據沒有處理好,導致程序崩潰,還很難找,因為我就沒想到我會在這里取值出錯誤。 3.免費模塊測試,主要測試對數據的解析,以及內容的顯示。 4.專題模塊的測試,主要測試cell上的控件是不是能正確的傳值,主要注意block在反向傳值的時候的回調,以及對block的應用,專題模塊這一點可以說的是我耗時最多的一個界面,主要就消耗在界面傳值這一塊,由于cell上的app比較多,對于如何處理我選中的是哪個app是我一度陷入盲區,不知道如何處理,首先想到的方法是取到app的父視圖,但是運行的時候根本不行,知道后邊學習了block才解決了這個問題。 5.詳情頁面的測試,主要測試是不是每個界面都能正確的傳進來數據,以及對數據的展示,數據圖片不一樣多造成的越界現象,圖片的加載相冊功能,分享功能,收藏功能。對周邊應用的具體詳情再次查看,怎么進行數據的處理,詳情頁面在處理的時候,難點就在于怎么把本頁的周邊app再通過點擊app在本頁顯 河南理工大學畢業設計(論文)說明書 示具體的信息,這個問題導致我把程序進行了大修改,煩躁啊,因為前期的邏輯沒處理好,導致這里傳值出問題,不過在我的努力下還是把程序都改了。 在完成逐個模塊測試后,開始對系統進行驗收測試,運行該系統,在運行過程中查找出現的錯誤。 5.2 功能整體測試 在安裝好配置環境的電腦上測試,剛開始出現屏幕混亂,經過反復修改,現在已經能正常運行。用xcode上自動檢測內存工具,檢測出多處內存泄露問題,都已經修改。測試到這個階段就簡單多了,繁瑣的工作都做完了,不過在這個階段我還是發現了一個嚴重的問題,就是內存泄露,原因是我在cell中實例化了一個控件,我當時竟然天真的以為ARC不會有內存泄露,但是還是出現了,cell復用的時候,雖然使用的以前的cell,但是你在cell里邊申請的控件還會一直開辟空間消耗內存,這樣就會導致內存泄露。 河南理工大學畢業設計(論文)說明書 總結與展望 總結 經過一段時間的忙碌,終于把畢業設計的任務完成了。現在我對該系統做一下總結 本項目的開發目標,主要是為了提供iphone手機應用平臺,為用戶更好的體驗iphone手機。設計經過緊張而有序的系統開發,收獲頗豐,感觸頗深?,F在對經驗收獲、教訓反思兩大部分總結如下: 經驗收獲: 1.編寫程序前,對已完成設計構思的系統進行主次分析,排好功能實現順序,列出程序編、寫步驟,對于理清編程思路很有幫助。人的邏輯思維可能很發達,在設計當中可以不用筆記,在腦中就能想好三到五個功能的邏輯關系和編寫步驟。但以后我們面對的是一個龐大的系統,大系統下分多個子系統,子系統下分多個功能模塊,功能模塊下分多個功能頁面,功能頁面下分多個子功能,而且子系統、功能模塊、功能頁面、子功能之間的邏輯關系構成了一張復雜龐大的邏輯關系網。這就需要我們在原先做好的設計流程圖上,系統規劃,全面分析,逐步細化,反復斟酌、推敲,然后列出編程計劃。 2.善于借鑒他人的成果,實現自己的功能,可以有效地縮短開發時間,提高工作效率,是快速提高編程能力的最佳途徑。借鑒他人的勞動成果并不是簡單地拷貝別人的源代碼,如果只是這樣的話,你會因為系統經常的報錯,卻束手無策,最后將其認為是雞肋而抱怨連天。應該是先要分析讀透他人的程序思想,取其精華,去其糟粕,使之成為自己的思想,然后將這些功能塊與自己的功能塊融合。 3.在完成這個課題的過程中,遇到了很多問題。對于iOS的開發過程更是頭疼,因為在iOS中有些控件必須接收協議,而且不用手動調用協議中的方法,系統自己調用,比如:UITableView。這個讓我感覺很不可思議,以至于每次非得手動調用協議,但是每次都出錯,后來就記住這個問題了。 4.每編完一個功能,應及時與其它完成功能一起測試,運行無誤后,方可進行下一步開發。這樣做是為了在測試時如果出錯能很方便地找到出錯的環節和病因所在,我們稱之為“step by step”(一步一腳印),對于一個初級的程序開發者來說是很有幫助的。對于編程人員來說每一個環節都是來不得有半點差錯的,每一個功能都是環環相扣,相互關聯,相互作用的 河南理工大學畢業設計(論文)說明書 教訓反思:(1).學習與實踐的結合不當。當我進行程序開發的時候,發現以前學習的知識點到用時卻忘得一干二凈了,也只好重新學習基本知識了。如果以前把知識學得透徹點,理解深刻點,也許在開發過程中可以縮短時間,提高效率。反思自我,歸其原因:不是當時的學習不夠認真,而是缺乏對知識點的運用實踐;對于像我這樣“半路出家”的編程人員來說,只是理解知識點是遠遠不夠的,如果當時沒有經過編譯、運行、調試的過程,很快就會忘記的。 (2).學習目標不專一。我們都知道在學習的時候是最忌諱這個還沒學明白就去學那個的,結果當然是哪個也沒學明白。這個沒學好,就想用另一個,造成學習不深入,學習效果不好。以后一點要記住此教訓。 展望 這次畢業設計項目做得時間挺長的,從開始學習c語言,到后來的高級語言objective-c、UI、初級網絡、高級網絡等。到最后項目的結束,感覺自己學習到了很多知識,但是知道的越多你就會越發的感覺到自己知識的不足,第一次開始認認真真的學習c還是從圖書館里的《21天精通c語言》開始,是一門語言你就要記憶很多東西,我學習的時候覺得最難得不是邏輯而是記憶,到后來的objective-c,這門高級語言的底層是對c語言的封裝,把c的很多邏輯封裝成方法,你只需拿來用就ok了,oc學完的時候已經是年后了,之后學習了UI的界面搭建,以及初級網絡。學完初級網絡就著手寫自己的畢業項目,當時覺得很難,很多知識都不熟悉,還有分享,block等高級網絡的知識還沒有接觸到,因此在初期畢業項目制作過程中只完成了界面的加載數據,界面之間沒有相互的跳轉,很沒有活力,基本的界面搭建完成已經過了一個多星期了,之后有做了bug調試,把出現的問題解決了,這樣這個app才有了形,這個完成之后我就著手學習了高級網絡,接觸到了分享,支付,通信等知識,還學了block的界面傳值,平時學習完都會做一些小的demo來做練習,大概一星期之后才回頭來完善自己的畢業項目,這是的畢業項目也已不是當初的大難題了。 雖然畢業項目做完了,但是功能并不是那么完美,就像我剛開始接觸這門語言時,我會覺得很難辦,到我學的多了,見得多,用的多了,豐富的知識已經讓我感覺到自己入門了,有自己的學習方法了,本來學習就是一個循循漸進的過程,我們每個人都不可能一下子做的很完美,很出色,都需要不斷的完善。我也希望自己在以后的工作中得到更多的知識、經驗。讓自己不斷地進步,做出屬于自己 41 河南理工大學畢業設計(論文)說明書 的獨特的作品。 河南理工大學畢業設計(論文)說明書 參考文獻 [1] 譚克強Objective-C程序設計(第四版)。 [2] 51cto網站oc教學視頻自學。以及對牛人博客的借鑒。[3] 21天精通c語言,河南理工大學,圖書館。[4] 博客園學習,主要學習UI時對我的幫助很大。 [5] cocoaChina第三方庫的使用,對后期做畢業設計,提供很多便利。 [6] 個人覺得最好用的還是度娘,什么問題都可以問她,自學學到的東西才會理解的更 深刻。 [7] DaveMak(美)JackNutting(美)JeffLaMarche(美)著.楊越孫文磊等譯.ios5基礎 教程[M].北京:人民郵電出版社.2013:3 [8] MarkDalrymple(美)ScottKnaster(美)著.楊越等譯.Objective-C基礎教程[M].北 京:人民郵電出版社.2012:7 [9] StephenG.Kochan著.林翼、范俊、朱奕欣譯.Objective-C程序設計(第四版)[M]。北京:電子工業出版社,2012:12 [10] 虞斌著.Ios軟件開發揭秘:iPhone&iPad企業應用和游戲開發[M].北京:電子出 版社,2011:1 [11] 克萊爾(美)著.李強譯.Objective-C2.0Mac和ios開發實踐指南[M].北京:機械 工業61出版社,2011:1 [12] BrianW.KernighanDeninisMRirchie著,徐寶文,李志(譯)TheCProgramming Language[M].北京:機械工業出版社2003:2 [13] 徐松林,黃猛著.cocos2D-x手機游戲開發[M].北京:人民郵電出版社.[14] Ronpatton(美)著.王鈺,曹躍譯.軟件測試[M].北京:機械工業出版社,2006 [15] 王水著.軟件工程[M].河南:河南科學技術出版社,2008:8 [16] 吳潔明著.軟件工程實例教程[M].北京:清華大學出版社,2010:11 43 河南理工大學畢業設計(論文)說明書 謝 辭 在本論文的寫作過程中,我的導師宋成老師傾注了大量的心血,從選題到開題報告,從寫作提綱,到一遍又一遍地指出每稿中的具體問題,嚴格把關,循循善誘,在此我表示衷心感謝,謝謝宋成老師在我撰寫論文的過程中給與我的極大地幫助 同時我要感謝學院的各位老師、同學和朋友。在整個的論文寫作中,各位老師、同學和朋友積極的幫助我查資料和提供有利于論文寫作的建議和意見,在他們的幫助下,論文得以不斷的完善,最終幫助我完整的寫完了整個論文 另外,要感謝在大學期間所有傳授我知識的老師,是你們的悉心教導使我有了良好的專業課知識,感謝這四年來計算機學院對我的栽培,使我成為了一名合格的理工學子。