當前位置:首頁 » 操作系統 » linux報告

linux報告

發布時間: 2022-04-18 04:37:25

linux進程通信實驗報告

一、實驗目的:
進一步認識並發(並行)執行的概念,區別順序執行和並發(並行)執行。

分析進程爭用臨界資源的現象,學習解決進程排斥的方法。

二、實驗環境:

一台至少具有256MB內存的計算機,並安裝Red Hat Linux 9的Linux操作系統。

三、實驗內容:

1. 預備知識
fork函數調用:創建一個新進程。

getpid函數調用:獲得一個進程的pid。

lockf系統的調用:在進程同步控制中為進程加鎖。

2. 編寫一段程序(程序名為fork1.c),使用系統調用fork()創建兩個子進程。當此程序運行時,在系統中有一個父進程和兩個子進程活動。讓每一個進程在屏幕上顯示一個字元:父進程顯示字元「a」,子進程分別顯示字元「b」和字元「c」。試觀察記錄屏幕上的顯示結果,並分析原因。

(1)進入Linux操作系統。

(2)打開終端。進入vi編譯器。

(3)輸入源程序代碼。

(4)按Esc鍵,進入命令模式後,輸入「: wq文件名」就可以運行該程序了。

❷ 如何查看linux系統警告日誌

1、打開WDCP服務管理系統登錄界面,輸入用戶名和密碼,點擊登錄。

6、在操作日誌中,可以看到進行的操作,必要時可以找回誤刪的數據。

❸ 操作系統管理Linux 系統進程實驗報告

什麼是進程

比如:windows上安裝的QQ,我們會將其稱為QQ程序,那麼當QQ運行之後,在任務管理器中,我們可以看到QQ程序在運行著,此時,我們稱其為:QQ進程。

言簡意賅總結:當我們運行一個程序,那麼我們將該程序叫進程

注意:
1.當程序運行為進程後,系統會為該進程分配內存,以及運行的身份和許可權。
2.在進程運行的過程中,伺服器上回有各種狀態來表示當前進程的指標信息。

進程是已啟動的可執行程序的運行實例,進程有以下組成部分:

分配內存, 已分配內存的地址空間
安全屬性, 進程的運行身份和許可權
進程代碼, 運行一個或多個的線程
進程狀態, 進程運行後的多種狀態
靜態程序, 二進制文件, 靜態/bin/ls, /usr/sbin/sshd
動態進程, 程序運行的過程, 有生命周期及運行狀態

進程的運行環境,包括以下幾個部分:

局部和全局變數
當前的調度上下文
分配給進程使用的系統資源,例如文件描述符、網路埠等
給進程分配對應的pid,ppid

程序和進程的區別

1.程序是數據和指令的集合,是一個靜態的概念,比如/bin/ls、/bin/cp等二進制文件,同事程序可以長期存在系統中。

2.進程是一個程序的運行過程,是一個動態概念,進程是存在生命周期概念的,也就是說進程會隨著程序的終止而銷毀,不會永遠在系統中存在。

進程的生命周期


程序運行時進程的狀態關系:

1.當父進程接收到任務調度時,會通過fork派生子進程來處理,那麼子進程會集成父進程的衣缽。
2.子進程在處理任務代碼時,父進程會進入等待的狀態...
3.如果子進程在處理任務過程中,父進程退出了,子進程沒有退出,那麼這些子進程就沒有父進程來管理了,就變成了僵屍進程。
4.每個進程都會有自己的PID號,(process id)子進程則PPID

❹ 如何linux內核報告問題

Linux Kernel BUG:soft lockup CPU#1 stuck分析
1.線上內核bug日誌
kernel: Deltaway too big! 18428729675200069867 ts=18446743954022816244 write stamp =18014278822746377
kernel:------------[ cut here ]------------
kernel:WARNING: at kernel/trace/ring_buffer.c:1988 rb_reserve_next_event+0x2ce/0x370()(Not tainted)
kernel:Hardware name: ProLiant DL360 G7
kernel:Moles linked in: fuse ipv6 power_meter bnx2 sg microcode serio_raw iTCO_wdtiTCO_vendor_support hpilo hpwdt i7core_edac edac_core shpchp ext4 mbcache jbd2sd_mod crc_t10dif hpsa radeon ttm drm_kms_helper drm i2c_algo_bit i2c_coredm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
kernel: Pid:5483, comm: master Not tainted 2.6.32-220.el6.x86_64 #1
kernel: CallTrace:
kernel:[<ffffffff81069b77>] ? warn_slowpath_common+0x87/0xc0
kernel:[<ffffffff81069bca>] ? warn_slowpath_null+0x1a/0x20
kernel:[<ffffffff810ea8ae>] ? rb_reserve_next_event+0x2ce/0x370
kernel:[<ffffffff810eab02>] ? ring_buffer_lock_reserve+0xa2/0x160
kernel:[<ffffffff810ec97c>] ? trace_buffer_lock_reserve+0x2c/0x70
kernel:[<ffffffff810ecb16>] ? trace_current_buffer_lock_reserve+0x16/0x20
kernel:[<ffffffff8107ae1e>] ? ftrace_raw_event_hrtimer_cancel+0x4e/0xb0
kernel:[<ffffffff81095e7a>] ? hrtimer_try_to_cancel+0xba/0xd0
kernel:[<ffffffff8106f634>] ? do_setitimer+0xd4/0x220
kernel:[<ffffffff8106f88a>] ? alarm_setitimer+0x3a/0x60
kernel:[<ffffffff8107c27e>] ? sys_alarm+0xe/0x20
kernel:[<ffffffff8100b308>] ? tracesys+0xd9/0xde
kernel: ---[end trace 4d0a1ef2e62cb1a2 ]---
abrt-mp-oops: Reported 1 kernel oopses to Abrt
kernel: BUG: softlockup - CPU#11 stuck for 4278190091s! [qmgr:5492]
kernel:Moles linked in: fuse ipv6 power_meter bnx2 sg microcode serio_raw iTCO_wdtiTCO_vendor_support hpilo hpwdt i7core_edac edac_core shpchp ext4 mbcache jbd2sd_mod crc_t10dif hpsa radeon ttm drm_kms_helper drm i2c_algo_bit i2c_coredm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
kernel: CPU 11
kernel:Moles linked in: fuse ipv6 power_meter bnx2 sg microcode serio_raw iTCO_wdtiTCO_vendor_support hpilo hpwdt i7core_edac edac_core shpchp ext4 mbcache jbd2sd_mod crc_t10dif hpsa radeon ttm drm_kms_helper drm i2c_algo_bit i2c_coredm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
kernel:
kernel: Pid:5492, comm: qmgr Tainted: G W ---------------- 2.6.32-220.el6.x86_64 #1 HPProLiant DL360 G7
kernel: RIP:0010:[<ffffffff8106f730>] [<ffffffff8106f730>]do_setitimer+0x1d0/0x220
kernel: RSP:0018:ffff88080a661ef8 EFLAGS: 00000286
kernel: RAX:ffff88080b175a08 RBX: ffff88080a661f18 RCX: 0000000000000000
kernel: RDX:0000000000000000 RSI: 0000000000000082 RDI: ffff88080c8c4c40
kernel: RBP:ffffffff8100bc0e R08: 0000000000000000 R09: 0099d7270e01c3f1
kernel: R10:0000000000000000 R11: 0000000000000246 R12: ffffffff810ef9a3
kernel: R13:ffff88080a661e88 R14: 0000000000000000 R15: ffff88080a65a544
kernel: FS:00007f10b245f7c0(0000) GS:ffff88083c4a0000(0000) knlGS:0000000000000000
kernel: CS:0010 DS: 0000 ES: 0000 CR0: 000000008005003b
kernel: CR2:00007ff955977380 CR3: 000000100a80b000 CR4: 00000000000006e0
kernel: DR0:0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
kernel: DR3:0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
kernel:Process qmgr (pid: 5492, threadinfo ffff88080a660000, task ffff880809577500)
kernel: Stack:
kernel:00007f10b323def0 00007f10b248ead0 00007f10b26d0f78 00007f10b248ede0
kernel:<0> ffff88080a661f68 ffffffff8106f88a 0000000000000000 0000000000000000
kernel:<0> 000000000000014c 00000000000f423d 0000000000000000 0000000000000000
kernel: CallTrace:
kernel:[<ffffffff8106f88a>] ? alarm_setitimer+0x3a/0x60
kernel:[<ffffffff8107c27e>] ? sys_alarm+0xe/0x20
kernel:[<ffffffff8100b308>] ? tracesys+0xd9/0xde
kernel: Code:89 ef e8 74 66 02 00 83 3d 15 69 b5 00 00 75 37 49 8b 84 24 70 07 00 00 48 0508 08 00 00 66 ff 00 66 66 90 fb 66 0f 1f 44 00 00 <31> c0 e9 64 fe ff ff49 8b 84 24 68 07 00 00 48 c7 80 d0 00 00
kernel: CallTrace:
kernel:[<ffffffff8106f769>] ? do_setitimer+0x209/0x220
kernel:[<ffffffff8106f88a>] ? alarm_setitimer+0x3a/0x60
kernel:[<ffffffff8107c27e>] ? sys_alarm+0xe/0x20
kernel:[<ffffffff8100b308>] ? tracesys+0xd9/0xde
abrt-mp-oops: Reported 1 kernel oopses to Abrt

2.內核軟死鎖(soft lockup)bug原因分析
Soft lockup名稱解釋:所謂,soft lockup就是說,這個bug沒有讓系統徹底死機,但是若干個進程(或者kernel thread)被鎖死在了某個狀態(一般在內核區域),很多情況下這個是由於內核鎖的使用的問題。
Linux內核對於每一個cpu都有一個監控進程,在技術界這個叫做watchdog(看門狗)。通過ps –ef | grep watchdog能夠看見,進程名稱大概是watchdog/X(數字:cpu邏輯編號1/2/3/4之類的)。這個進程或者線程每一秒鍾運行一次,否則會睡眠和待機。這個進程運行會收集每一個cpu運行時使用數據的時間並且存放到屬於每個cpu自己的內核數據結構。在內核中有很多特定的中斷函數。這些中斷函數會調用soft lockup計數,他會使用當前的時間戳與特定(對應的)cpu的內核數據結構中保存的時間對比,如果發現當前的時間戳比對應cpu保存的時間大於設定的閥值,他就假設監測進程或看門狗線程在一個相當可觀的時間還沒有執。Cpu軟鎖為什麼會產生,是怎麼產生的?如果linux內核是經過精心設計安排的CPU調度訪問,那麼怎麼會產生cpu軟死鎖?那麼只能說由於用戶開發的或者第三方軟體引入,看我們伺服器內核panic的原因就是qmgr進程引起。因為每一個無限的循環都會一直有一個cpu的執行流程(qmgr進程示一個後台郵件的消息隊列服務進程),並且擁有一定的優先順序。Cpu調度器調度一個驅動程序來運行,如果這個驅動程序有問題並且沒有被檢測到,那麼這個驅動程序將會暫用cpu的很長時間。根據前面的描述,看門狗進程會抓住(catch)這一點並且拋出一個軟死鎖(soft lockup)錯誤。軟死鎖會掛起cpu使你的系統不可用。
如果是用戶空間的進程或線程引起的問題backtrace是不會有內容的,如果內核線程那麼在soft lockup消息中會顯示出backtrace信息。
3.根據linux內核源碼分析錯誤
根據我們第一部分內核拋出的錯誤信息和call trace(linux內核的跟蹤子系統)來分析產生的具體原因。
首先根據我們的centos版本安裝相應的linux內核源碼,具體步驟如下:
(1)下載源碼的rpm包kernel-2.6.32-220.17.1.el6.src.rpm
(2)安裝相應的依賴庫,命令:yuminstall rpm-build redhat-rpm-config asciidoc newt-devel
(3)安裝源碼包:rpm -ikernel-2.6.32-220.17.1.el6.src.rpm
(4)進入建立源碼的目錄:cd~/rpmbuild/SPECS
(5)建立生成源碼目錄:rpmbuild-bp --target=`uname -m` kernel.spec

下面開始真正的根據內核bug日誌分析源碼:
(1)第一階段內核錯誤日誌分析(時間在Dec 4 14:03:34這個階段的日誌輸出代碼分析,其實這部分代碼不會導致cpu軟死鎖,主要是第二階段錯誤日誌顯示導致cpu軟死鎖)
我們首先通過日誌定位到相關源代碼:看下面日誌:Dec 4 14:03:34 BP-YZH-1-xxxx kernel: WARNING: atkernel/trace/ring_buffer.c:1988 rb_reserve_next_event+0x2ce/0x370() (Not tainted)
根據日誌內容我們可以很容易的定位到kernel/trace/ring_buffer.c這個文件的1988行代碼如下:WARN_ON(1)。
先簡單解釋一下WARN_ON的作用:WARN_ON只是列印出當前棧信息,不會panic。所以會看到後面有一大堆的棧信息。這個宏定義如下:
#ifndef WARN_ON
#defineWARN_ON(condition) ({ \
int __ret_warn_on = !!(condition); \
if (unlikely(__ret_warn_on)) \
__WARN(); \
unlikely(__ret_warn_on); \
})
#endif
這個宏很簡單保證傳遞進來的條件值為0或者1(兩次邏輯非操作的結果),然後使用分支預測技術(保證執行概率大的分支緊鄰上面的指令)判斷是否需要調用__WARN()宏定義。如果滿足條件執行了__WARN()宏定義也接著執行一條空指令;。上面調用WARN_ON宏是傳遞的1,所以會執行__WARN()。下面繼續看一下__WARN()宏定義如下:
#define __WARN() warn_slowpath_null(__FILE__,__LINE__)
從接下來的call trace信息中我們也確實發現調用了warn_slowpath_null這個函數。通過在linux內核源代碼中搜索這個函數的實現,發現在panic.c(內核恐慌時的相關功能實現)中實現如下:
voidwarn_slowpath_null(const char *file, int line)
{
warn_slowpath_common(file, line,__builtin_return_address(0),
TAINT_WARN, NULL);
}
EXPORT_SYMBOL(warn_slowpath_null);//都出這個符號,讓其他模塊可以使用這個函數
同樣的我們看到了warn_slowpath_common這個函數,而在call trace當中這個函數在warn_slowpath_null函數之前列印出來,再次印證了這個流程是正確的。同樣在panic.c這個文件中我發現了warn_slowpath_common這個函數的實現如下:
static voidwarn_slowpath_common(const char *file, int line, void *caller,
unsigned taint, struct slowpath_args *args)
{
const char *board;

printk(KERN_WARNING "------------[ cut here]------------\n");
printk(KERN_WARNING "WARNING: at %s:%d %pS()(%s)\n",
file, line, caller, print_tainted());
board = dmi_get_system_info(DMI_PRODUCT_NAME);//得到dmi系統信息
if (board)
printk(KERN_WARNING "Hardware name:%s\n", board);//通過我們的日誌信息可以發現我們硬體名稱是ProLiant DL360 G7

if (args)
vprintk(args->fmt, args->args);

print_moles();//列印系統模塊信息
mp_stack();//mp信息輸出(call trace開始)
print_oops_end_marker();//列印oops結束
add_taint(taint);
}
分析這個函數的實現不難發現我們的很多日誌信息從這里開始輸出,包括列印一些系統信息,就不繼續深入分析了(請看代碼注釋,裡面調用相關函數列印對應信息,通過我分析這些函數的實現和我們的日誌信息完全能夠對應,其中mp_stack是與cpu體系結構相關的,我們的伺服器應該是屬於x86體系)。這里在繼續分析一下mp_stack函數的實現,因為這個是與cpu體系結構相關的,而且這個函數直接反應出導致內核panic的相關進程。這個函數實現如下:
/*
* The architecture-independent mp_stackgenerator
*/
void mp_stack(void)
{
unsigned long stack;

printk("Pid: %d, comm: %.20s %s %s %.*s\n",
current->pid, current->comm,print_tainted(),
init_utsname()->release,
(int

❺ linux網路配置實驗報告

http://wenku..com/view/bb2754a20029bd64783e2cf0.html

❻ 操作系統Linux實驗報告3張妮

1) 啟動vmware虛擬機2) 單擊「文件—>新建?虛擬機」,出現「安裝虛擬機向導」對話框,單擊「下一步」,選「典型」;
3)「客戶機操作系統」選擇安裝Linux,版本選「RedHat Linux」,單擊「下一步」;
4) 在「虛擬機名稱」處:輸入「LINUX」, 創建指定位置(不要選擇在C盤)的磁碟映像文件linux.vmx單擊「下一步」,出現「網路連接」 設置界面,選擇「使用橋接網路」 單擊下一步;
5) 磁碟容量為8G, 單擊「完成」;
6)編輯虛擬機設置:
雙擊設備欄「CD-ROM」,選擇「使用ISO鏡像」;指定鏡像文件路徑,例如: D:\RedHatLinux_ISOFiles\RedHatLinux9_i386_disc1.iso ;
Floppy設備欄取消「打開電源時連接「
7) 配置步驟完成,啟動系統。

❼ 求份LINUX實習報告不足和收獲

4.1學習所得
我歸納的一下:其中用戶管理重點學習passwd、shadow、group 3個文件和useradd、passwd、groupadd、usermod 4個關鍵性命令;創建文件系統命令touch、安裝文件系統命令、、df還有find命令;以及rpm的使用等;其中,在軟體包安裝部分遇到問題,自己不能完成包安裝。後來自己在網上查閱了一些資料和多練習才安裝成功,另外我覺得本次實習的實踐性很強,必須要自己親手操作一邊,在問題和解決問題的循環中才能真正完成本次實習任務。本次實習內容較多,對於有些知識我還比較生疏,沒能熟練使用。在下來的學習中加強實踐練習,夯實系統管理的具體知識,提升上機操作能力。
對於我個人而言,我對這門課程不太感興趣。所以在實習過程中我充分利用自己的實習時間,反復的去練習實習項目,在練習中發現問題和解決問題,這樣不斷的提升自己的學習能力,在結合一些有趣的實驗和部分同學進行討論。非常感謝實習導師們在實習過程中對我們的指導,此次實習我覺得自己收獲很多,對我以後的學習和工作有非常大的幫助,在以後的學習中我會更加努力的去學習和加深自己的專業知識。實習有很多的好處,它的好處有驗證自己是否真的掌握了這些知識,以及對那些知識的不清楚,在實習中去完善自己的不足,加強和鞏固自己的不足,在實踐中去驗證理論,用理論去解決實踐中遇到的問題。

4.2經驗教訓
經過幾天的實習我的長進了很多,我學會了在linux系統下如何進行DNS域名系統配置與管理,對DNS伺服器有了更深刻了解,通過兩周的實訓操作,對常見伺服器的搭建與配置管理有了深刻的體會與了解。這次實訓不僅讓我們在理論上對linux有了全新的認識,在實踐能力上也得到了提高,對linux的許多知識加以鞏固加深,明白了作為一名新時期的人一定要做到學以致用。實訓期間,遇到不懂的問題就問同學,通過同學耐心講解,克服了許多難題,使我懂得了團結就是力量。在成長的道路上,我們要不斷學習,不斷進步,使自己得到提升。這次實訓對於我們以後學習、找工作也是受益匪淺的。相信這些寶貴的經驗會成為我們今後成功的重要基石。,讓我彌補了自己許多的不足。其實成功只離你僅有幾步之遙,以前有許多的東西都沒有學的很扎實,但是經過這一周的實習讓我的知識又重新上了一個台階,在這次實習中我學到了很多的東西,從中自己也在一步的探索中,看到自己一點一滴的變化。在一周的實訓中遇到了不少的問題,如果在linux中配置dns的時候馬虎,不細心,就會導致啟用失敗。而dns伺服器配置問題也值得我們去理解,去實踐,琢磨了很久,才琢磨透徹。
4.3實習體會
通過本次的實習,我知道了「有心人天不負」,我們只有對什麼都注意觀察、分析、總結、歸納、提煉,才能使自己的工作做出成績。只有做一個有心人,才能捕捉到每一個細小變化,作出迅速反應,捕捉住每一條信息。「世上無難事,就怕有心人」,做有心人,勤於思考,才能改進我們的工作方法。「學為中,棄為下,悟為上」。勤於思考,才能領悟,才能提高,才能做得更好。
要想在短暫的實習時間內,盡可能多的學一些東西,這就需要跟老師和同學有很好的溝通,加深彼此的了解,剛到培訓基地,老師並不了解你的能力,不清楚你會做哪些工作,不清楚你想了解什麼樣的知識,所以跟老師建立起很好的溝通是很必要的。
在信息時代,學習是不斷地汲取新信息,獲得事業進步的動力。作為一名青年學子更應該把學習作為保持工作積極性的重要途徑。只有將理論付諸於實踐才能實現理論自身的價值,也只有將理論付諸於實踐才能使理論得以檢驗。同樣,一個人的價值也是通過實踐活動來實現的,也只有通過實踐才能鍛煉人的品質,彰顯人的意志。必須在實際的工作和生活中潛心體會,並自覺的進行這種角色的轉換。
這一周的實習,使我對linux有了很深的定義,自己在學習中出現的各種問題,也讓我重新審視了自己,並完善自己在學習中的不當方法,學會自己去探索發現,讓自己也變得善於動腦,善於思考,不倚仗他人。
學以致用,是人生最大的收獲。我會進一步的認識並擴展專業知識,增長見識,不斷充實自己,使自己不斷的吸收養分,各方面得到充分的提高。為以後出身社會,打下堅實的基礎。每一日你所付出的代價都比前一日高,因為你的生命又消短了一天,所以每一日你都要更積極。今天太寶貴,不應該為酸苦的憂慮和辛澀的悔恨所銷蝕,抬起下巴,抓住今天,它不再回來。人要走進知識寶庫,是一輩子的事情,不可能一蹴而就。因此我們要學習的東西太多了。

❽ 關於Linux的實訓報告

Linux






班級:網路081
姓名:徐娣娣
學號:5號

實訓內容:
1、 文本方式安裝RedLinux系統,並設置成默認情況下從文本模式啟動,啟動時等待5秒鍾。

2、 建立目錄:

3、 把文件file復制到/tmp/jxgcxy目錄下,並重新命名為temp,修改許可權為:所有者讀、寫、執行,同組用讀、寫,其他人讀。刪除目錄wl。

4、 把/etc/shadow文件中的最後10行復制到test.c文件中。

5、 添加用戶test,限定用戶test在/home分區下,只能使用最多20MB磁碟空間。

6、 某系統管理員需每天做一定的重復工作,請按照下列要求,編制一個解決方案:(1)在下午4:50刪除/abc目錄下的全部目錄和全部文件。(2)每周五下午的5:00將/home/test目錄下的所有文件歸檔並壓縮為/backup目錄中的test-data.tar.gz文件。

7、 實現磁碟配額。添加十個用戶:test1~test10,對test1用戶進行限制,硬塊限制1000,I節點硬限制100,軟限制50,並設置限制時間為3天,把test1用戶的配額設置復制給其他9個用戶。

8、 新建一個用戶jxgcxy,指定該用戶的主目錄為/tmp/jxgcxy,用戶編號為550,組編號為580,用到的shell為bash,將用戶test1改名成為user1,並修改它的主目錄為/home/user1。將test2設為root組,並該帳戶的有效期限設為1個月,查看相應文件是否設置成功。

9、 用ps和top命令查看進程,比較兩種方法的優缺點,並非別記錄顯示結果中各部分的含義以及top中多處時間刷新一次,將ftp的優先順序設為-5,將用戶test的優先順序設為-5。

10、 在linux系統上安裝VNC伺服器,在windows系統上安裝VNC客戶端軟體,通過客戶端軟體操作linux系統。

11、 設計一個shell程序,在/userdate目錄下建立50個目錄,即user1~user50,並設置每個目錄的許可權,其中其他用戶的許可權為:讀;文件所有者的許可權為:讀、寫、執行;文件所有者在組的許可權為:讀、執行。

短暫的實習生活在忙忙碌碌中度過了,雖然極其短暫但也給予我好多的感觸,我也終於明白了學校為何要採取這種實訓活動,不只是為了加強知識的補充,也是為了把以前學到的知識總結起來,以及復習以前所學的知識。

熱點內容
android編碼設置 發布:2024-11-15 13:50:02 瀏覽:906
androidstringchar 發布:2024-11-15 13:45:00 瀏覽:964
obs配置怎麼弄 發布:2024-11-15 13:43:30 瀏覽:868
特斯拉買哪個配置的 發布:2024-11-15 13:42:36 瀏覽:556
兒童編程教材 發布:2024-11-15 13:37:34 瀏覽:43
查詢伺服器連接地址 發布:2024-11-15 13:27:20 瀏覽:505
win8用戶文件夾轉移 發布:2024-11-15 13:21:24 瀏覽:73
批量緩存淘寶教育上的視頻 發布:2024-11-15 13:20:44 瀏覽:723
如何確定手機是不是安卓 發布:2024-11-15 13:19:33 瀏覽:734
loadingbuffer怎麼配置 發布:2024-11-15 13:16:57 瀏覽:797