欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      IO總結(jié)5篇

      時(shí)間:2019-05-12 11:56:52下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《IO總結(jié)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《IO總結(jié)》。

      第一篇:IO總結(jié)

      輸入和輸出

      IO分類輸入 和 輸出 流節(jié)點(diǎn)流 和 處理流字節(jié)流(byte)和 字符流(char)

      輸入流

      字節(jié)流

      抽象基類 InputStream

      讀取文件的 FileInputStream

      緩沖流 BufferedInputStream

      讀取各種java基本數(shù)據(jù)類型的 DataInputStream

      讀取對象 ObjectInputStream

      字符流

      抽象基類 Reader

      讀取文本文件的 FileReader

      實(shí)現(xiàn)緩沖的 BufferedRead 讀取一個(gè)行 readLine();newline()輸出流

      字節(jié)流

      抽象基類 OutputStream

      寫文件的 FileOutputStream

      緩沖輸出流 BufferedOutputStream

      寫各種java基本數(shù)據(jù)類型的 DataOutputStream

      寫對象的 ObjectOutputStreamwriteObject(Object obj);字符流

      對象的序列化

      一個(gè)對象所屬的類如果實(shí)現(xiàn)java.io.Serializable

      則這個(gè)類是序列化類,此類創(chuàng)建的對象就是序列化對象 序列化對象可以通過文件流在文件中進(jìn)行讀和寫。

      第二篇:關(guān)于磁盤IO的總結(jié)

      磁盤IO的總結(jié):

      1.IO讀寫:磁盤是用來存取數(shù)據(jù)的。磁盤的存數(shù)據(jù)對應(yīng)IO的寫操作,磁盤的取數(shù)據(jù)對應(yīng)IO的讀操作。

      2.隨機(jī)訪問(Random Access)與連續(xù)訪問(Sequential Access):

      隨機(jī)訪問指的是本次IO所給出的扇區(qū)地址和上次IO給出扇區(qū)地址相差比較大,這樣的話磁頭在兩次IO操作之間需要做比較大的移動(dòng)動(dòng)作才能重新開始讀/寫數(shù)據(jù)。

      同理,連續(xù)訪問就是兩次給出的扇區(qū)地址相近,磁頭就能很快的進(jìn)行操作,這樣的多個(gè)IO操作就是連續(xù)訪問。

      3.順序IO模式(Queue Mode)/并發(fā)IO模式(BurstMode):

      原理:磁盤控制器可能會一次對磁盤組發(fā)出一連串的IO命令,如果磁盤組一次只能執(zhí)行一個(gè)IO命令時(shí)稱為順序IO;當(dāng)磁盤組能同時(shí)執(zhí)行多個(gè)IO命令時(shí),稱為并發(fā)IO。

      并發(fā)IO只能發(fā)生在由多個(gè)磁盤組成的磁盤組上,單塊磁盤只能一次處理一個(gè)IO命令。

      4.IOPS,IO系統(tǒng)每秒所執(zhí)行IO操作的次數(shù)

      5.一次完整的磁盤IO操作:

      當(dāng)控制器對磁盤發(fā)出一個(gè)IO操作命令的時(shí)候,磁盤的驅(qū)動(dòng)臂(ActuatorArm)帶讀寫磁頭(Head)離開著陸區(qū)(LandingZone,位于內(nèi)圈沒有數(shù)據(jù)的區(qū)域),移動(dòng)到要操作的初始數(shù)據(jù)塊所在的磁道(Track)的正上方,這個(gè)過程被稱為尋址(Seeking),對應(yīng)消耗的時(shí)間被稱為尋址時(shí)間(SeekTime);但是找到對應(yīng)磁道還不能馬上讀取數(shù)據(jù),這時(shí)候磁頭要等到磁盤盤片(Platter)旋轉(zhuǎn)到初始數(shù)據(jù)塊所在的扇區(qū)(Sector)落在讀寫磁頭正上方的之后才能開始讀取數(shù)據(jù),在這個(gè)等待盤片旋轉(zhuǎn)到可操作扇區(qū)的過程中消耗的時(shí)間稱為旋轉(zhuǎn)延時(shí)(RotationalDelay);接下來就隨著盤片的旋轉(zhuǎn),磁頭不斷的讀/寫相應(yīng)的數(shù)據(jù)塊,直到完成這次IO所需要操作的全部數(shù)據(jù),這個(gè)過程稱為數(shù)據(jù)傳送(DataTransfer),對應(yīng)的時(shí)間稱為傳送時(shí)間(TransferTime)。完成這三個(gè)步驟之后一次IO操作也就完成了。

      6.傳輸速度(Transfer Rate)/吞吐率(Throughput):是磁盤在實(shí)際使用的時(shí)候從磁盤系統(tǒng)總線上流過的數(shù)據(jù)量。

      7.IO響應(yīng)時(shí)間也被稱為IO延時(shí)(IOLatency),IO響應(yīng)時(shí)間就是從操作系統(tǒng)內(nèi)核發(fā)出的一個(gè)讀或者寫的IO命令到操作系統(tǒng)內(nèi)核接收到IO回應(yīng)的時(shí)間,注意不要和單個(gè)IO時(shí)間混淆了,單個(gè)IO時(shí)間僅僅指的是IO操作在磁盤內(nèi)部處理的時(shí)間,而IO響應(yīng)時(shí)間還要包括IO操作在IO等待隊(duì)列中所花費(fèi)的等待時(shí)間。

      8.dd命令 dd:硬拷貝命令(直接在硬盤上進(jìn)行數(shù)據(jù)拷貝,沒有經(jīng)過內(nèi)存,二進(jìn)制之間的協(xié)調(diào)復(fù)制)

      bs=BYTES:一次讀取和寫入的字節(jié)數(shù)(單元大小)

      count=BLOCKS:單元數(shù)量

      if=FILE:源文件

      of=FILE:目標(biāo)文件

      測試磁盤的寫入:

      [root@localhost ~]# /usr/bin/time dd if=/dev/zero of=/tmp/hx bs=4k count=10240 10240+0 records in 10240+0 records out 41943040 bytes(42 MB)copied, 0.0577 s, 727 MB/s 0.00user 0.05system 0:00.05elapsed 96%CPU(0avgtext+0avgdata 832maxresident)k 0inputs+81920outputs(0major+241minor)pagefaults 0swaps

      測試磁盤的讀?。?/p>

      [root@localhost ~]# /usr/bin/time dd if=/tmp/hx of=/dev/null bs=4k 10240+0 records in 10240+0 records out 41943040 bytes(42 MB)copied, 0.014955 s, 2.8 GB/s 0.00user 0.01system 0:00.01elapsed 86%CPU(0avgtext+0avgdata 828maxresident)k 0inputs+0outputs(0major+240minor)pagefaults 0swaps

      讀寫同時(shí)測試

      [root@localhost ~]# /usr/bin/time dd if=/tmp/foo of=/tmp/foo2 bs=4k 10240+0 records in 10240+0 records out 41943040 bytes(42 MB)copied, 0.0742246 s, 565 MB/s 0.00user 0.08system 0:00.08elapsed 97%CPU(0avgtext+0avgdata 828maxresident)k 0inputs+81952outputs(0major+240minor)pagefaults 0swaps 9.[root@localhost ~]# iostat-x Linux 2.6.32-573.el6.x86_64(localhost.localdomain)03/16/2016 _x86_64_(12 CPU)

      avg-cpu: %user

      %nice %system %iowait %steal

      %idle

      0.09

      0.00

      0.06

      0.02

      0.00

      99.82

      Device:

      rrqm/s

      wrqm/s

      r/s

      w/s

      rsec/s

      wsec/s avgrq-sz avgqu-sz

      await svctm %util sda

      8.30

      68.47

      7.61

      2.27

      363.21

      565.82

      94.05

      0.05

      5.32

      0.40

      0.39 各個(gè)性能指標(biāo)的簡單說明。rrqm/s 每秒進(jìn)行merge的讀操作數(shù)目。wrqm/s 每秒進(jìn)行merge的寫操作數(shù)目。r/s 每秒完成的讀I/O設(shè)備次數(shù)。w/s 每秒完成的寫I/O設(shè)備次數(shù)。rsec/s 每秒讀扇區(qū)數(shù)。wsec/s 每秒寫扇區(qū)數(shù)。rkB/s 每秒讀K字節(jié)數(shù)。wkB/s 每秒寫K字節(jié)數(shù)。avgrq-sz平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū))。avgqu-sz平均I/O隊(duì)列長度。await平均每次設(shè)備I/O操作的等待時(shí)間(毫秒)。svctm平均每次設(shè)備I/O操作的服務(wù)時(shí)間(毫秒)。%util 一秒中有百分之多少的時(shí)間用于I/O操作,或者說一秒中有多少時(shí)間I/O隊(duì)列是非空的。

      平均單次IO大小(IO Chunk Size)<=>avgrq-sz

      平均IO響應(yīng)時(shí)間(IO Response Time)<=>await

      IOPS(IO per Second)<=> r/s + w/s

      吞吐率(Throughtput)<=> rkB/s + wkB/s

      10.fio是一個(gè)非常靈活的io測試工具,他可以通過多線程或進(jìn)程模擬各種io操作。

      fio分順序讀,隨機(jī)讀,順序?qū)?,隨機(jī)寫,混合隨機(jī)讀寫模式。參數(shù):

      filename: 指定文件(設(shè)備)的名稱??梢酝ㄟ^冒號分割同時(shí)指定多個(gè)文件,如filename=/dev/sda:/dev/sdb。

      directory: 設(shè)置filename的路徑前綴。在后面的基準(zhǔn)測試中,采用這種方式來指定設(shè)備。

      name: 指定job的名字,在命令行中表示新啟動(dòng)一個(gè)job。

      direct: bool類型,如果設(shè)置成true(1),表示不使用io buffer。

      ioengine: I/O引擎,現(xiàn)在fio支持19種ioengine。默認(rèn)值是sync同步阻塞I/O,libaio是Linux的native異步I/O。

      iodepth: 如果ioengine采用異步方式,該參數(shù)表示一批提交保持的io單元數(shù)。

      rw: I/O模式,隨機(jī)讀寫,順序讀寫等等。

      bs: I/O block大小,默認(rèn)是4k。

      size: 指定job處理的文件的大小。

      numjobs: 指定job的克隆數(shù)(線程)。

      time_based: 如果在runtime指定的時(shí)間還沒到時(shí)文件就被讀寫完成,將繼續(xù)重復(fù)知道runtime時(shí)間結(jié)束。

      runtime: 指定在多少秒后停止進(jìn)程。如果未指定該參數(shù),fio將執(zhí)行至指定的文件讀寫完全完成。

      group_reporting: 當(dāng)同時(shí)指定了numjobs了時(shí),輸出結(jié)果按組顯示。

      例: #順序讀

      fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=read-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest

      #順序?qū)?/p>

      fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=write-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest

      #隨機(jī)讀

      fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=randread-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest #隨機(jī)寫

      fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=randwrite-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest

      #混合隨機(jī)讀寫

      fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=randrw-rwmixread=70-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=100-group_reporting-name=mytest-ioscheduler=noop

      補(bǔ)充:

      上次測試的三塊固態(tài)硬盤IO:

      0.55到2K的小文件

      [root@localhost 1]# fio-filename=/data/B/1/2-direct=1-iodepth 1-thread-rw=randrw-rwmixread=80-ioengine=psync-bsrange=512-2048-size=4G-numjobs=5-group_reporting-name=test-runtime=1200 test:(g=0): rw=randrw, bs=512-2K/512-2K, ioengine=psync, iodepth=1...test:(g=0): rw=randrw, bs=512-2K/512-2K, ioengine=psync, iodepth=1 fio 2.0.7 Starting 5 threads test: Laying out IO file(s)(1 file(s)/ 4096MB)Jobs: 5(f=5): [mmmmm] [100.0% done] [8319K/2060K /s] [9870 /2498 iops] [eta 00m:00s] test:(groupid=0, jobs=5): err= 0: pid=29601

      read : io=11152MB, bw=9515.1KB/s, iops=9183 , runt=1200079msec

      clat(usec): min=0 , max=1000.3K, avg=468.07, stdev=1981.20

      lat(usec): min=0 , max=1000.3K, avg=468.42, stdev=1981.20

      clat percentiles(usec):

      | 1.00th=[ 189], 5.00th=[ 211], 10.00th=[ 225], 20.00th=[ 249],| 30.00th=[ 274], 40.00th=[ 294], 50.00th=[ 318], 60.00th=[ 350],| 70.00th=[ 382], 80.00th=[ 430], 90.00th=[ 516], 95.00th=[ 596],| 99.00th=[ 844], 99.50th=[ 5088], 99.90th=[32128], 99.95th=[42240],| 99.99th=[58624]

      bw(KB/s): min= 159, max= 6607, per=20.03%, avg=1905.53, stdev=328.56

      write: io=2789.3MB, bw=2379.2KB/s, iops=2297 , runt=1200079msec

      clat(usec): min=0 , max=1000.2K, avg=283.77, stdev=1432.42

      lat(usec): min=0 , max=1000.2K, avg=284.21, stdev=1432.42

      clat percentiles(usec):

      | 1.00th=[

      89], 5.00th=[ 110], 10.00th=[ 137], 20.00th=[ 153],| 30.00th=[ 165], 40.00th=[ 175], 50.00th=[ 189], 60.00th=[ 207],| 70.00th=[ 239], 80.00th=[ 302], 90.00th=[ 386], 95.00th=[ 458],| 99.00th=[ 660], 99.50th=[ 1976], 99.90th=[20352], 99.95th=[27520],| 99.99th=[43264]

      bw(KB/s): min=

      60, max= 1769, per=20.03%, avg=476.50, stdev=87.73

      lat(usec): 2=0.08%, 100=0.51%, 250=29.98%, 500=59.64%, 750=8.40%

      lat(usec): 1000=0.63%

      lat(msec): 2=0.10%, 4=0.11%, 10=0.19%, 20=0.08%, 50=0.23%

      lat(msec): 100=0.03%, 250=0.01%, 500=0.01%, 1000=0.01%, 2000=0.01%

      cpu

      : usr=6.13%, sys=37.70%, ctx=101478124, majf=0, minf=24056

      IO depths

      : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%

      submit

      : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%

      complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%

      issued

      : total=r=11021114/w=2757348/d=0, short=r=0/w=0/d=0

      Run status group 0(all jobs):

      READ: io=11152MB, aggrb=9515KB/s, minb=9515KB/s, maxb=9515KB/s, mint=1200079msec, maxt=1200079msec

      WRITE: io=2789.3MB, aggrb=2379KB/s, minb=2379KB/s, maxb=2379KB/s, mint=1200079msec, maxt=1200079msec

      Disk stats(read/write):

      sda: ios=11020977/2758079, merge=0/69, ticks=4004421/515149, in_queue=4514919, util=98.00%

      10M的大文件

      [root@localhost 1]# fio-filename=/data/B/1/10-direct=1-iodepth 1-thread-rw=randrw-rwmixread=80-ioengine=psync-bs=10M-size=10G-numjobs=10

      -group_reporting-name=test-runtime=1800 test:(g=0): rw=randrw, bs=10M-10M/10M-10M, ioengine=psync, iodepth=1...test:(g=0): rw=randrw, bs=10M-10M/10M-10M, ioengine=psync, iodepth=1 fio 2.0.7 Starting 10 threads test: Laying out IO file(s)(1 file(s)/ 10240MB)Jobs: 4(f=4): [_m___mm_m_] [99.0% done] [220.2M/104.9M /s] [21 /10 iops] [eta 00m:03s]]

      test:(groupid=0, jobs=10): err= 0: pid=29618

      read : io=81910MB, bw=270613KB/s, iops=26 , runt=309948msec

      clat(msec): min=15 , max=1006 , avg=334.89, stdev=102.97

      lat(msec): min=15 , max=1006 , avg=334.89, stdev=102.97

      clat percentiles(msec):

      | 1.00th=[ 123], 5.00th=[ 157], 10.00th=[ 200], 20.00th=[ 249],| 30.00th=[ 289], 40.00th=[ 318], 50.00th=[ 343], 60.00th=[ 363],| 70.00th=[ 383], 80.00th=[ 412], 90.00th=[ 449], 95.00th=[ 482],| 99.00th=[ 578], 99.50th=[ 766], 99.90th=[ 963], 99.95th=[ 979],| 99.99th=[ 1004]

      bw(KB/s): min= 7076, max=64912, per=10.25%, avg=27750.67, stdev=7359.31

      write: io=20490MB, bw=67694KB/s, iops=6 , runt=309948msec

      clat(msec): min=24 , max=752 , avg=161.82, stdev=105.86

      lat(msec): min=25 , max=753 , avg=162.61, stdev=105.84

      clat percentiles(msec):

      | 1.00th=[

      27], 5.00th=[

      33], 10.00th=[

      34], 20.00th=[

      51],| 30.00th=[

      54], 40.00th=[ 103], 50.00th=[ 178], 60.00th=[ 206],| 70.00th=[ 233], 80.00th=[ 260], 90.00th=[ 297], 95.00th=[ 326],| 99.00th=[ 392], 99.50th=[ 416], 99.90th=[ 644], 99.95th=[ 725],| 99.99th=[ 750]

      bw(KB/s): min= 7398, max=82447, per=29.87%, avg=20218.16, stdev=9671.17

      lat(msec): 20=0.01%, 50=3.69%, 100=4.55%, 250=23.75%, 500=65.39%

      lat(msec): 750=2.18%, 1000=0.42%, 2000=0.01%

      cpu

      : usr=0.61%, sys=6.94%, ctx=600392, majf=0, minf=12529

      IO depths

      : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%

      submit

      : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%

      complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%

      issued

      : total=r=8191/w=2049/d=0, short=r=0/w=0/d=0

      Run status group 0(all jobs):

      READ: io=81910MB, aggrb=270612KB/s, minb=270612KB/s, maxb=270612KB/s, mint=309948msec, maxt=309948msec

      WRITE: io=20490MB, aggrb=67694KB/s, minb=67694KB/s, maxb=67694KB/s, mint=309948msec, maxt=309948msec

      Disk stats(read/write):

      sda: ios=261982/65792, merge=0/96, ticks=40438645/1040942, in_queue=41479880, util=100.00%

      第三篇:IO企業(yè)文化

      IO的企業(yè)文化是什么:

      【企業(yè)文化】

      ——企業(yè)定位

      · 四個(gè)人每個(gè)人找十個(gè)標(biāo)的,各自去實(shí)驗(yàn),標(biāo)的領(lǐng)域的選取根據(jù)各自偏好和擅長。公司注冊成功后去尋找一個(gè)信托平臺,費(fèi)用為一個(gè)點(diǎn)的回報(bào)率。財(cái)務(wù)方面不用管信托平臺會代為管理,并且將財(cái)務(wù)報(bào)表予以公示

      ·托管公司 代理大陸客戶進(jìn)行港股操盤

      ——使命

      ·為客戶利益而努力進(jìn)取

      ·提高每位員工的公司榮譽(yù)感,自豪感。

      ·像對待技術(shù)創(chuàng)新一樣致力于成本創(chuàng)新。

      ·讓更多的人獲得更好,更穩(wěn)健的服務(wù)

      ·充分調(diào)動(dòng)員工主觀能動(dòng)性,主動(dòng)完成好任務(wù)。

      ——核心價(jià)值觀

      · 成就客戶—我們致力于每位客戶的滿意和成功。

      · 尊重員工—我們致力于尊重每位員工的要求以及情感。

      · 誠信正直—我們秉持信任、誠實(shí)和富有責(zé)任感,無論是對內(nèi)部還是外部?!?追求卓越—我們倡導(dǎo)每天學(xué)習(xí)一點(diǎn),開拓視野,每天爭做最佳最好。

      ——愿景

      IO基于對行業(yè)的深厚理解,以及對優(yōu)秀的管理和文化基因的傳承,順應(yīng)時(shí)代的趨勢,爭取成為時(shí)代的領(lǐng)頭羊,在全球范圍內(nèi)打造高品質(zhì)的產(chǎn)品,讓消費(fèi)者充分享受卓越的IO服務(wù)。IO致力于發(fā)展成為一個(gè)自由民主的公司,一個(gè)可以自由討論,積極發(fā)出自己聲音的的公司,一個(gè)穩(wěn)健提升的企業(yè),為客戶、股東、員工和社會創(chuàng)造更多的價(jià)值,讓世界因IO更美好。

      第四篇:黑馬程序員——IO(Input Output)流總結(jié)(一)

      IO(Input Output)流總結(jié)

      (一)IO流是處理數(shù)據(jù)之間數(shù)據(jù)傳輸?shù)摹?/p>

      Java對數(shù)據(jù)的操作是通過流的方式。

      Java中用于操作IO流的對象都放在java.io包中。

      流的分類:按照操作數(shù)據(jù)分為:字符流和字節(jié)流。

      按照流向分為:輸入流和輸出流。

      輸入流:輸出流:

      字符流:

      ReaderWriter

      |--BufferedReader|--BufferedWriter

      |--inputStreamReader|--OutputStreamWriter

      |--FileReader|--FileWriter

      字節(jié)流:

      InputStreamOutputStream

      |--FileInputStream|--FileOutputStream

      InputStreamOutputStream

      |--FilterInputStream|--FilterOutputStream

      |--BufferedInputStream|--BufferedOutputStream

      在計(jì)算機(jī)中存儲的都是1和0的序列。也就是二進(jìn)制的有序序列,不論是文本、音樂或者是視頻。

      那么為什么要在流中定義字節(jié)流和字符流呢?

      這個(gè)與我們的字符編碼方式有關(guān)。我們都知道世界上有很多種的語言,比如:ASCII、GB2312、GBK、UTF-8和Unicode等。

      如果一個(gè)文本文件使用GB2312編碼的方式存儲的,如果我們用Unicode的編碼方式來讀取,那么就會出現(xiàn)亂碼。所以字符流是一種特殊的流,在java中就定義了專門處理字符的流對象。

      當(dāng)我們拿到一個(gè)API文檔我們應(yīng)該如何使用呢?

      1,確定要使用的功能。

      2,查閱API看有沒有相關(guān)的功能類。

      3,如果沒有,就分析需要如何自定義一個(gè)出來,并且要使用到那些相關(guān)功能的類,這些類在API中有沒有定義。

      4,不論有或者沒有需要自定義一個(gè),我們都要先查閱相關(guān)功能類的根類,那么查閱一個(gè)API的時(shí)候我們要注意一些什么呢?

      5,找到相關(guān)功能根類,先看一下它是一個(gè)類,還是接口,還是抽象類,如果是接口或

      者是抽象類我們就不能直接使用這個(gè)類,而要使用這個(gè)類的子類。

      6,但是,我們不用急于先看它有哪些子類,我們先看一下它到底暴露了什么字段、構(gòu)造函數(shù)和方法。

      7,在查看暴露的信息時(shí),我們要注意幾點(diǎn):

      a.如果是static修飾的,說明是靜態(tài)的,我們不用new對象也可以直接使用。

      b.我們要確定自己要使用的方法將會返回的數(shù)據(jù)的類型,是void呢、String呢、int呢、還是其他的。查找的時(shí)候就重點(diǎn)找返回這些類型的方法。(注意:如果我們使用的類是一個(gè)使用單例設(shè)計(jì)模式設(shè)計(jì)的,那么他就沒有構(gòu)造函數(shù),我們就一般可以通過靜態(tài)的getIstance()方法獲取相應(yīng)的對象,這時(shí)我們就要找返回值是對象類型的方法。)

      8,如果在根類中找到了需要的方法,但是根類又不能創(chuàng)建對象,那么我們就看看,繼承這個(gè)根類的子類有哪些,一般子類都繼承了父類的方法,所以子類可以直接調(diào)用父類的方法,并且子類又定義了一些自身特別的方法。

      9,找到需要的類創(chuàng)建對象,或者找到相關(guān)功能的對象自定義一個(gè)需要的類。

      下面我們按照以上的方法來闡述IO流的學(xué)習(xí):

      字節(jié)流:

      字節(jié)流的根類有:讀取流(Reader)、寫入流(Writer)

      根類都是abstract(抽象)的,我們不能直接創(chuàng)建對象,但是我們可以看一看父類都定義了什么方法。

      Reader:

      int read()

      讀取單個(gè)字符。

      int read(char[] cbuf)

      將字符讀入數(shù)組。

      abstractint read(char[] cbuf, int off, int len)

      將字符讀入數(shù)組的某一部分。

      intread(CharBuffer target)

      試圖將字符讀入指定的字符緩沖區(qū)。

      abstractvoid close()

      關(guān)閉該流并釋放與之關(guān)聯(lián)的所有資源。

      FileReader:Reader的子類,可以創(chuàng)建對象,專門用來操作字符數(shù)據(jù)流的。

      Writer:

      void write(char[] cbuf)

      寫入字符數(shù)組。

      abstractvoid write(char[] cbuf, int off, int len)

      寫入字符數(shù)組的某一部分。

      void write(int c)

      寫入單個(gè)字符。

      void write(String str)

      寫入字符串。

      void write(String str, int off, int len)

      寫入字符串的某一部分。

      abstractvoid close()

      關(guān)閉此流,但要先刷新它。

      abstractvoid flush()

      刷新該流的緩沖。

      寫入流(Writer)在每次調(diào)用write()方法的時(shí)候都要flush()(刷新)一次,當(dāng)然Writer也不能創(chuàng)建對象,我們可以使用他的子類FileWriter,F(xiàn)ileWriter是專門處理字符寫入流的類。

      FileReader 和 FileWriter 為我們提供了操作字符數(shù)據(jù)流的一般方法,其中比較高效的就是自定義一個(gè)數(shù)組,用這個(gè)數(shù)組作為臨時(shí)存儲區(qū),每次讀取一塊(裝滿數(shù)組)數(shù)據(jù),然后再將這一塊數(shù)據(jù)寫入相應(yīng)的目的地。這樣就提高了效率,如果每次讀取一個(gè)字符然后寫入一個(gè)字符,就很低效,是不可取的。

      自定一個(gè)數(shù)組為我們提高了效率,但是每次使用都要寫很多代碼,所以開發(fā)者就將這個(gè)數(shù)組封裝為了一個(gè)特殊的對象。那就是緩沖區(qū)!BufferedReader(字符讀取緩沖區(qū))和BufferedWriter(字符寫入緩沖區(qū))。他是用的是裝飾設(shè)計(jì)模式,是再不改變原來已定義類的基礎(chǔ)上增強(qiáng)類的功能。

      補(bǔ)充:BufferedReader的子類LineNumberReader,增加了int getLineNumber():獲得當(dāng)前行號的功能,我們可以在使用緩沖區(qū)的同時(shí)讀取行號。

      裝飾設(shè)計(jì)模式:

      當(dāng)想要對已有的對象進(jìn)行功能增強(qiáng)時(shí),可以定義類,將已有對象傳入,基于已有的功能,并提供加強(qiáng)功能。那么自定義的該類稱為裝飾類。

      字符流學(xué)習(xí)完了,那么如果要學(xué)習(xí)字節(jié)流就會簡單很多,我們通過查閱API知道:很多方法都似曾相識。所以,總結(jié)一下就是下面幾點(diǎn):

      A.字節(jié)流分為:InputStream(讀取流)和OutputStream(寫入流)

      B.字節(jié)流和字符流的功能基本相同,只不過傳入的參數(shù)由字符流中的字節(jié)char,變成了字節(jié)中的byte。

      C.字節(jié)流也具有緩沖區(qū):

      BufferedInputStream(字節(jié)讀取緩沖區(qū))和BufferedOutputStream(字節(jié)寫入緩沖區(qū))。方法與字符緩沖區(qū)相似。

      第五篇:C8051f020 IO配置小結(jié)

      C8051f020 I/O配置小結(jié)

      020的每個(gè)I/O口引腳都可以被配置為推挽或漏極開路輸出。同時(shí)引入了數(shù)字交叉開關(guān),允許將內(nèi)部數(shù)字系統(tǒng)資源映射到P0、P1、P2和P3的端口引腳。通過設(shè)置交叉開關(guān)寄存器可將片內(nèi)的計(jì)數(shù)器/定時(shí)器、串行總線、硬件中斷、ADC轉(zhuǎn)換啟動(dòng)輸入、比較器輸出以及微控制器內(nèi)部的其他數(shù)字信號配置為出現(xiàn)在端口I/O引腳。必須在訪問這些外設(shè)的I/O之前配置和允許交叉開關(guān)。注意的問題:

      1.低端口既能按位尋址,也可以按字節(jié)尋址;高端口只能按字節(jié)尋址。2.沒有被分配到的引腳作為一般的數(shù)字通用I/O口。3.P1口還可以用作ADC1的模擬輸入。

      4.P0MDOUT~P3MDOUT用于控制I/O端口每一位的輸出狀態(tài)。

      5.EMIF(外部存儲器接口)是用于CPU與片外XRAM之間的數(shù)據(jù)傳輸通道,通過寄存器EMI0CF和EMI0CN選擇和管理端口實(shí)現(xiàn)數(shù)據(jù)的傳輸。

      6.為了能訪問片外存儲器空間,必須設(shè)置EMI0CN寄存器的內(nèi)容為片外存儲器的空間頁地址。7.如果把外部存儲器接口(EMIF)設(shè)置在高端口則首先要把EMI0CF的PRTSEL位設(shè)置為1,選擇高端口,同時(shí)選擇地址的復(fù)用或非復(fù)用方式,在把XBR的外部寄存器的EMIFLE位設(shè)置為0。8.復(fù)用方式配置:在復(fù)用方式下,數(shù)據(jù)總線和地址總線的第8位共用相同的引腳(AD0~AD7)。在該方式下,要用一個(gè)外部鎖存器(如74HC373或相同功能的鎖存器)保持RAM地址的低8位。外部鎖存器由ALE(地址鎖存使能)信號控制,ALE信號由外部存儲器接口邏輯驅(qū)動(dòng)。9.在總線復(fù)用時(shí),需要把地址數(shù)據(jù)復(fù)用端口配置為漏極開路。

      10.ALE高/低脈寬占1個(gè)SYSCLK周期,地址建立/保持時(shí)間占0個(gè)SYSCLK周期,/WR和/RD占12個(gè)SYSCLK周期,EMIF工作在地址/數(shù)據(jù)復(fù)用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF的步驟是:先將EMIF選到低端口或高端口;然后選擇復(fù)用方式或非復(fù)用方式;再選擇存儲器的模式(只用片內(nèi)存儲器、不帶塊選擇的分片方式、帶塊選擇的分片方式或只用片外存儲器);然后設(shè)置EMI0TC;最后通過寄存器PnMDOUT和P74OUT選擇所期望的相關(guān)端口的輸出方式。如: void PORT_Init(void){ XBR2 = 0x40;/*使能交叉開關(guān)和弱上拉*/ P74OUT |= 0xff;/*使能P4~P7推挽輸出*/ EMI0CF |= 0x2c;/*EMIF工作在地址/數(shù)據(jù)復(fù)用方式,只用外部存儲器,ALE高/低脈寬占1個(gè)SYSCLK周期*/ EMI0TC |= 0x6c;/*地址建立/保持時(shí)間占0個(gè)SYSCLK周期,/WR和/RD占12個(gè)SYSCLK周期*/ P3MDOUT |= 0xdf;/*使能P3.5推挽輸出*/ } 11.避免高端口處于“浮空”狀態(tài),以避免因輸入浮空為無效邏輯電平而導(dǎo)致不必要的功率消耗,為此應(yīng)采取如下措施的任何一種:a.將XBR2.7位設(shè)置為邏輯0選擇弱上拉狀態(tài)

      R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值 WEAKPUD XBARE-T4EXE T4E UART1E EMIFLE CNVSTE 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址

      位7 WEAKPUD 弱上拉禁止位 0 弱上拉全局允許 1 弱上拉全局禁止

      位6 XBARE 交叉開關(guān)允許位 0 交叉開關(guān)禁止端口0 1 2 和3 的所有引腳被強(qiáng)制為輸入方式 1 交叉開關(guān)允許 位5 未用讀0 寫=忽略 位4 T4EXE T4EX 輸入允許位 0 T4EX 不連到端口引腳 1 T4EX 連到端口引腳 位3 T4E T4 輸入允許位 0 T4 不連到端口引腳 1 T4 連到端口引腳

      位2 UART1E UART1 I/O 允許位 0 UART1 I/O 不連到端口引腳 1 UART1 TX 和RX 連到兩個(gè)端口引腳 位1 EMIFLE 外部存儲器接口低端口允許位

      0 P0.7 P0.6 和P0.5 的功能由交叉開關(guān)或端口鎖存器決定 1 如果EMI0CF.4 = 0 外部存儲器接口為復(fù)用方式

      則P0.7(/WR)P0.6(/RD)和P0.5(/ALE)被交叉開關(guān)跳過它們的輸出 狀態(tài)由端口鎖存器和外部存儲器接口決定 如果EMI0CF.4 = 1 外部存儲器接口為非復(fù)用方式

      則P0.7(/WR)和P0.6(/RD)被交叉開關(guān)跳過它們的輸出狀態(tài)由端口鎖 存器和外部存儲器接口決定

      位0 CNVSTE 外部轉(zhuǎn)換啟動(dòng)輸入允許位 0 CNVSTR 不連到端口引腳 1 CNVSTR 連到端口引腳;

      b.令P74OUT=0xFF,將高端口輸出方式配置為推拉方式(P74OUT為高端口輸出方式寄存器); c.向高端口數(shù)據(jù)寄存器P4、P5、P6和P7寫0。12.配置端口引腳的輸出方式

      每個(gè)端口引腳的輸出方式都可被配置為漏極開路或推挽方式。在推挽方式下向端口數(shù)據(jù)寄存器中的相應(yīng)位寫邏輯0 將使端口引腳被驅(qū)動(dòng)到GND 寫邏輯1 將使端口引腳被驅(qū)動(dòng)到VDD,在漏極開路方式下向端口數(shù)據(jù)寄存器中的相應(yīng)位寫邏輯0 將使端口引腳被驅(qū)動(dòng)到GND 寫邏輯1 將使端口引腳處于高阻狀態(tài),當(dāng)系統(tǒng)中不同器件的端口引腳有共享連接。即多個(gè)輸出連接到同一個(gè)物理線時(shí)(例如SMBus 連接中的SDA 信號),使用漏極開路方式可以防止不同器件之間的沖突。(推挽方式在有些書中稱為推拉方式)

      轉(zhuǎn)載-關(guān)于開漏、推挽方式2008-01-27 17:53漏級開路即高阻狀態(tài),適用于輸入/輸出,其可獨(dú)立輸入/輸出低電平和高阻狀態(tài),若需要產(chǎn)生高電平,則需使用外部上拉電阻或使用如LCX245等電平轉(zhuǎn)換芯片。有些朋友,尤其是未學(xué)過此方面知識的朋友,在實(shí)際工作中將I/O口設(shè)置為漏開,并想輸出高電平,但向口線上寫1后對方并未認(rèn)出高電平,但用萬用表測量引腳確有電壓,這種認(rèn)為是不對的,對于高阻狀態(tài)來說,測量電壓是無意義的,正確的方法應(yīng)是外加上拉電阻,上拉電阻的阻值=上拉電壓/芯片引腳最大灌(拉)電流。

      推挽方式可完全獨(dú)立產(chǎn)生高低電平,推挽方式為低阻,這樣,才能保證口線上不分走電壓或分走極小的電壓(可忽略),保證輸出與電源相同的高電平,推挽適用于輸出而不適用于輸入,因?yàn)槿魧ν仆欤ǖ妥瑁┘痈唠娖胶螅琁=U/R,I會很大,將造成口的燒毀。對與C8051F的很多型號片子,將I/O口設(shè)置為推挽方式的做法為:PnMDOUT=0xff,Pn=0x00,這樣設(shè)置I/O口為推挽,并輸出低電平(可降低功耗)將I/O口設(shè)置為漏開方式的做法為:PnMDOUT=0x00,Pn=0x11,這樣設(shè)置I/O口為漏開。

      如果學(xué)過三極管放大電路一定知道,前置單管放大器和功放末級放大電路的區(qū)別。單片機(jī)內(nèi)部的邏輯經(jīng)過內(nèi)部的邏輯運(yùn)算后需要輸出到外面,外面的器件可能需要較大的電流才能推動(dòng),因此在單片機(jī)的輸出端口必須有一個(gè)驅(qū)動(dòng)電路。

      這種驅(qū)動(dòng)電路有兩種形式: 其中的一種是采用一只N型三極管(npn或n溝道),以npn三極管為例,就是e接地,b接內(nèi)部的邏輯運(yùn)算,c引出,b受內(nèi)部驅(qū)動(dòng)可以控制三極管是否導(dǎo)通但如果三極管的c極一直懸空,盡管b極上發(fā)生高低變化,c極上也不會有高低變化,因此在這種條件下必須在外部提供一個(gè)電阻,電阻的一端接c(引出腳)另一端接電源,這樣當(dāng)三極管的b有高電壓是三極管導(dǎo)通,c電壓為低,當(dāng)b為低電壓時(shí)三極管不通,c極在電阻的拉動(dòng)下為高電壓,這種驅(qū)動(dòng)電路有個(gè)特點(diǎn):低電壓是三極管驅(qū)動(dòng)的,高電壓是電阻驅(qū)動(dòng)的(上下不對稱),三極管導(dǎo)通時(shí)的ec內(nèi)阻很小,因此可以提供很大的電流,可以直接驅(qū)動(dòng)led甚至繼電器,但電阻的驅(qū)動(dòng)是有限的,最大高電平輸出電流=(vcc-Vh)/r;

      另一種是互補(bǔ)推挽輸出,采用2只晶體管,一只在上一只在下,上面的一只是n型,下面為p型(以三極管為例),兩只管子的連接為:npn(上)的c連vcc,pnp(下)的c接地,兩只管子的ee,bb相連,其中ee作為輸出(引出腳),bb接內(nèi)部邏輯,這個(gè)電路通常用于功率放大點(diǎn)路的末級(音響),當(dāng)bb接高電壓時(shí)npn管導(dǎo)通輸出高電壓,由于三極管的ec電阻很小,因此輸出的高電壓有很強(qiáng)的驅(qū)動(dòng)能力,當(dāng)bb接低電壓時(shí)npn截至,pnp導(dǎo)通,由于三極管的ec電阻很小因此輸出的低電壓有很強(qiáng)的驅(qū)動(dòng)能力,簡單的例子,9013導(dǎo)通時(shí)ec電阻不到10歐,以Vh=2.5v,vcc=5v計(jì)算,高電平輸出電流最大=250MA,短路電流500ma,這個(gè)計(jì)算同時(shí)告訴我們采用推挽輸出時(shí)一定要小心千萬不要出現(xiàn)外部電路短路的可能,否則肯定燒毀芯片,特別是外部驅(qū)動(dòng)三極管時(shí)別忘了在三極管的基極加限流電阻。推挽輸出電路的形式很多,有些單片機(jī)上下都采用n型管,但內(nèi)部邏輯提供互補(bǔ)輸出,以上的說明僅僅為了說明推挽的原理,為了更深的理解可以參考功率放大電路。

      推挽方式可完全獨(dú)立產(chǎn)生高低電平,推挽方式為低阻,這樣,才能保證口線上不分走電壓或分走極小的電壓(可忽略),保證輸出與電源相同的高電平,推挽適用于輸出而不適用于輸入,因?yàn)槿魧ν仆欤ǖ妥瑁┘痈唠娖胶?,I=U/R,I會很大,將造成口的燒毀。

      對與C8051F的很多型號片子,將I/O口設(shè)置為推挽方式的做法為:PnMDOUT=0xff,Pn=0x00,這樣設(shè)置I/O口為推挽,并輸出低電平(可降低功耗)將I/O口設(shè)置為漏開方式的做法為:PnMDOUT=0x00,Pn=0x11,這樣設(shè)置I/O口為漏開。

      推挽輸出0的時(shí)候和開漏特性一樣,就是1的時(shí)候可以當(dāng)作直接接VCC.推挽輸出的驅(qū)動(dòng)能力相當(dāng)強(qiáng),因?yàn)檩敵?就等于接到了VCC.而同時(shí)推挽輸出的IO也需要注意不要直接接到地,否則一旦輸出1,就等于VCC通過內(nèi)部的場效應(yīng)管直接到地了,這時(shí)候IO端發(fā)熱就很大,時(shí)間長就就拜拜了.你看到DX32實(shí)驗(yàn)板上,按鍵部分都是串了個(gè)300歐才到地的,就是為了避免IO誤操作,使這些輸入變成推挽輸出1而做的保護(hù).以此為設(shè)計(jì)依據(jù),一般情況下,所有的IO都盡量避免直接到地,即使這個(gè)IO你是打算用來做輸入的.

      下載IO總結(jié)5篇word格式文檔
      下載IO總結(jié)5篇.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        黑馬程序員——IO(Input Output)流總結(jié)(二)五篇范文

        IO(Input Output)流總結(jié)(二)剛開始觀看畢老師的視屏的時(shí)候,感覺一會兒輸出流,一會兒輸入流的,一會兒System.out,一會兒又轉(zhuǎn)換流的。很暈。 最后畢老師給了一個(gè)總結(jié),歸納出了IO操作的......

        并行IO口電路擴(kuò)展幾個(gè)問題(本站推薦)

        并行I/O口電路擴(kuò)展幾個(gè)問題,你會嗎?7-1 為什么當(dāng)系統(tǒng)接有外部程序存貯器時(shí),P2口不能再作I/O口使用了? 7-2 8255有幾種工作方式?試說明其每種工作方式的意義? 7-3 8155擴(kuò)展器有幾部......

        JAVA(IO流方法大全)(優(yōu)秀范文五篇)

        package Stream; import java.io.*; public class Io { public void test1 throws Exception{ File file=new File("E:/txt.txt"); if(file.exists){System.out.println......

        51單片機(jī)IO口工作原理

        51單片機(jī)I/O口工作原理 一、P0端口的結(jié)構(gòu)及工作原理 P0端口8位中的一位結(jié)構(gòu)圖見下圖: 由上圖可見,P0端口由鎖存器、輸入緩沖器、切換開關(guān)、一個(gè)與非門、一個(gè)與門及場效應(yīng)管......

        6、伺服及IO裝置線路連接、檢查

        伺服及IO裝置線路連接、檢查 以上參數(shù)設(shè)定完畢后,斷開系統(tǒng)電源及機(jī)床電源,連接系統(tǒng)及各放大器、分離檢測單元FSSB伺服光纜,并檢查電機(jī)動(dòng)力、反饋線路連接是否正確(如電機(jī)未連接,......

        Java 實(shí)驗(yàn) 文件管理與IO流

        作業(yè)要求:每個(gè)題保存為一個(gè).java文件,保存在同一工程文件夾中,文件夾的名字為E:Java你的班級+姓名,例如:E:Java信息11張三。 注意:上交的程序包含程序的執(zhí)行結(jié)果,以注釋的形式......

        實(shí)驗(yàn)12:Java高級IO流程序設(shè)計(jì)

        實(shí)驗(yàn)12:Java高級I/O流程序設(shè)計(jì) 實(shí)驗(yàn)時(shí)間:實(shí)驗(yàn)地點(diǎn): 一、實(shí)驗(yàn)?zāi)康募耙?(1)掌握文件類File的使用。 (2)理解隨機(jī)存取文件類RandomAccessFile的使用。 二、實(shí)驗(yàn)設(shè)備環(huán)境及要求三、實(shí)......

        Java實(shí)驗(yàn)五 IO流的一般使用

        Java實(shí)驗(yàn)五IO流的一般使用 實(shí)驗(yàn)?zāi)康模赫莆瘴募惖氖褂?,了解一般流的基本?yīng)用。加深處理代碼的能力。 實(shí)驗(yàn)內(nèi)容: import java.io.* ;public class lijun43 { public static void......