主頁 >  其他 > Golang標準庫——io

Golang標準庫——io

2023-06-04 07:56:20 其他

原文:Golang標準庫——io

1、io

io包提供了對I/O原語的基本介面,本包的基本任務是包裝這些原語已有的實作(如os包里的原語),使之成為共享的公共介面,這些公共介面抽象出了泛用的函式并附加了一些相關的原語的操作,

因為這些介面和原語是對底層實作完全不同的低水平操作的包裝,除非得到其它方面的通知,客戶端不應假設它們是并發執行安全的,

1.1 常量

Seek 值,

const (
        SeekStart   = 0 // 尋找相對于檔案的起源
        SeekCurrent = 1 // 尋找相對于當前的偏移量
        SeekEnd     = 2 // 尋求相對于目的
)

1.2 Variables

var EOF = errors.New("EOF")

EOF當無法得到更多輸入時,Read方法回傳EOF,當函式一切正常的到達輸入的結束時,就應回傳EOF,如果在一個結構化資料流中EOF在不期望的位置出現了,則應回傳錯誤ErrUnexpectedEOF或者其它給出更多細節的錯誤,

var ErrClosedPipe = errors.New("io: read/write on closed pipe")

當從一個已關閉的Pipe讀取或者寫入時,會回傳ErrClosedPipe,

var ErrNoProgress = errors.New("multiple Read calls return no data or error")

某些使用io.Reader介面的客戶端如果多次呼叫Read都不回傳資料也不回傳錯誤時,就會回傳本錯誤,一般來說是io.Reader的實作有問題的標志,

var ErrShortBuffer = errors.New("short buffer")

ErrShortBuffer表示讀取操作需要大緩沖,但提供的緩沖不夠大,

var ErrShortWrite = errors.New("short write")

ErrShortWrite表示寫入操作寫入的資料比提供的少,卻沒有顯式的回傳錯誤,

var ErrUnexpectedEOF = errors.New("unexpected EOF")

ErrUnexpectedEOF表示在讀取一個固定尺寸的塊或者資料結構時,在讀取未完全時遇到了EOF,

1.3 type Reader

type Reader interface {
    Read(p []byte) (n int, err error)
}

Reader介面用于包裝基本的讀取方法,

Read方法讀取len(p)位元組資料寫入p,它回傳寫入的位元組數和遇到的任何錯誤,即使Read方法回傳值n < len(p),本方法在被呼叫時仍可能使用p的全部長度作為暫存空間,如果有部分可用資料,但不夠len(p)位元組,Read按慣例會回傳可以讀取到的資料,而不是等待更多資料,

當Read在讀取n > 0個位元組后遭遇錯誤或者到達檔案結尾時,會回傳讀取的位元組數,它可能會在該次呼叫回傳一個非nil的錯誤,或者在下一次呼叫時回傳0和該錯誤,一個常見的例子,Reader介面會在輸入流的結尾回傳非0的位元組數,回傳值err == EOF或err == nil,但不管怎樣,下一次Read呼叫必然回傳(0, EOF),呼叫者應該總是先處理讀取的n > 0位元組再處理錯誤值,這么做可以正確的處理發生在讀取部分資料后的I/O錯誤,也能正確處理EOF事件,

如果Read的某個實作回傳0位元組數和nil錯誤值,表示被阻礙;呼叫者應該將這種情況視為未進行操作,

1.4 type Writer

type Writer interface {
    Write(p []byte) (n int, err error)
}

Writer介面用于包裝基本的寫入方法,

Write方法len(p) 位元組資料從p寫入底層的資料流,它會回傳寫入的位元組數(0 <= n <= len(p))和遇到的任何導致寫入提前結束的錯誤,Write必須回傳非nil的錯誤,如果它回傳的 n < len(p),Write不能修改切片p中的資料,即使臨時修改也不行,

1.5 type Closer

type Closer interface {
    Close() error
}

Closer介面用于包裝基本的關閉方法,

在第一次呼叫之后再次被呼叫時,Close方法的的行為是未定義的,某些實作可能會說明他們自己的行為,

1.6 type Seeker

type Seeker interface {
    Seek(offset int64, whence int) (int64, error)
}

Seeker介面用于包裝基本的移位方法,

Seek方法設定下一次讀寫的位置:偏移量為offset,校準點由whence確定:0表示相對于檔案起始;1表示相對于當前位置;2表示相對于檔案結尾,Seek方法回傳新的位置以及可能遇到的錯誤,

移動到一個絕對偏移量為負數的位置會導致錯誤,移動到任何偏移量為正數的位置都是合法的,但其下一次I/O操作的具體行為則要看底層的實作,

1.7 type ReadCloser

type ReadCloser interface {
    Reader
    Closer
}

ReadCloser介面聚合了基本的讀取和關閉操作,

1.8 type ReadSeeker

type ReadSeeker interface {
    Reader
    Seeker
}

ReadSeeker介面聚合了基本的讀取和移位操作,

1.9 type WriteCloser

type WriteCloser interface {
    Writer
    Closer
}

WriteCloser介面聚合了基本的寫入和關閉操作,

1.10 type WriteSeeker

type WriteSeeker interface {
    Writer
    Seeker
}

WriteSeeker介面聚合了基本的寫入和移位操作,

1.11 type ReadWriter

type ReadWriter interface {
    Reader
    Writer
}

ReadWriter介面聚合了基本的讀寫操作,

1.12 type ReadWriteCloser

type ReadWriteCloser interface {
    Reader
    Writer
    Closer
}

ReadWriteCloser介面聚合了基本的讀寫和關閉操作,

1.13 type ReadWriteSeeker

type ReadWriteSeeker interface {
    Reader
    Writer
    Seeker
}

ReadWriteSeeker介面聚合了基本的讀寫和移位操作,

1.14 type ReaderAt

type ReaderAt interface {
    ReadAt(p []byte, off int64) (n int, err error)
}

ReaderAt介面包裝了基本的ReadAt方法,

ReadAt從底層輸入流的偏移量off位置讀取len(p)位元組資料寫入p, 它回傳讀取的位元組數(0 <= n <= len(p))和遇到的任何錯誤,當ReadAt方法回傳值n < len(p)時,它會回傳一個非nil的錯誤來說明為啥沒有讀取更多的位元組,在這方面,ReadAt是比Read要嚴格的,即使ReadAt方法回傳值 n < len(p),它在被呼叫時仍可能使用p的全部長度作為暫存空間,如果有部分可用資料,但不夠len(p)位元組,ReadAt會阻塞直到獲取len(p)個位元組資料或者遇到錯誤,在這方面,ReadAt和Read是不同的,如果ReadAt回傳時到達輸入流的結尾,而回傳值n == len(p),其回傳值err既可以是EOF也可以是nil,

如果ReadAt是從某個有偏移量的底層輸入流(的Reader包裝)讀取,ReadAt方法既不應影響底層的偏移量,也不應被底層的偏移量影響,

ReadAt方法的呼叫者可以對同一輸入流執行并行的ReadAt呼叫,

1.15 type WriterAt

type WriterAt interface {
    WriteAt(p []byte, off int64) (n int, err error)
}

WriterAt介面包裝了基本的WriteAt方法,

WriteAt將p全部len(p)位元組資料寫入底層資料流的偏移量off位置,它回傳寫入的位元組數(0 <= n <= len(p))和遇到的任何導致寫入提前中止的錯誤,當其回傳值n < len(p)時,WriteAt必須放哪會一個非nil的錯誤,

如果WriteAt寫入的物件是某個有偏移量的底層輸出流(的Writer包裝),WriteAt方法既不應影響底層的偏移量,也不應被底層的偏移量影響,

ReadAt方法的呼叫者可以對同一輸入流執行并行的WriteAt呼叫,(前提是寫入范圍不重疊)

1.16 type ByteReader

type ByteReader interface {
    ReadByte() (c byte, err error)
}

ByteReader是基本的ReadByte方法的包裝,

ReadByte讀取輸入中的單個位元組并回傳,如果沒有位元組可讀取,會回傳錯誤,

1.17 type ByteScanner

type ByteScanner interface {
    ByteReader
    UnreadByte() error
}

ByteScanner介面在基本的ReadByte方法之外還添加了UnreadByte方法,

UnreadByte方法讓下一次呼叫ReadByte時回傳之前呼叫ReadByte時回傳的同一個位元組,連續呼叫兩次UnreadByte方法而中間沒有呼叫ReadByte時,可能會導致錯誤,

1.18 type RuneReader

type RuneReader interface {
    ReadRune() (r rune, size int, err error)
}

RuneReader是基本的ReadRune方法的包裝,

ReadRune讀取單個utf-8編碼的字符,回傳該字符和它的位元組長度,如果沒有有效的字符,會回傳錯誤,

1.19 type RuneScanner

type RuneScanner interface {
    RuneReader
    UnreadRune() error
}

RuneScanner介面在基本的ReadRune方法之外還添加了UnreadRune方法,

UnreadRune方法讓下一次呼叫ReadRune時回傳之前呼叫ReadRune時回傳的同一個utf-8字符,連續呼叫兩次UnreadRune方法而中間沒有呼叫ReadRune時,可能會導致錯誤,

1.20 type ByteWriter

type ByteWriter interface {
    WriteByte(c byte) error
}

ByteWriter是基本的WriteByte方法的包裝,

1.21 type ReaderFrom

type ReaderFrom interface {
    ReadFrom(r Reader) (n int64, err error)
}

ReaderFrom介面包裝了基本的ReadFrom方法,

ReadFrom方法從r讀取資料直到EOF或者遇到錯誤,回傳值n是讀取的位元組數,執行時遇到的錯誤(EOF除外)也會被回傳,

1.22 type WriterTo

type WriterTo interface {
    WriteTo(w Writer) (n int64, err error)
}

WriterTo介面包裝了基本的WriteTo方法,

WriteTo方法將資料寫入w直到沒有資料可以寫入或者遇到錯誤,回傳值n是寫入的位元組數,執行時遇到的任何錯誤也會被回傳,

1.23 type LimitedReader

type LimitedReader struct {
    R   Reader // 底層Reader介面
    N   int64  // 剩余可讀取位元組數
}

LimitedReader從R中讀取資料,但限制可以讀取的資料的量為最多N位元組,每次呼叫Read方法都會更新N以標記剩余可以讀取的位元組數,

1.23.1 func LimitReader
func LimitReader(r Reader, n int64) Reader

回傳一個Reader,它從r中讀取n個位元組后以EOF停止,回傳值介面的底層為*LimitedReader型別,

1.23.2 func (*LimitedReader) Read
func (l *LimitedReader) Read(p []byte) (n int, err error)

1.24 type SectionReader

type SectionReader struct {
    // 內含隱藏或非匯出欄位
}

SectionReader實作了對底層滿足ReadAt介面的輸入流某個片段的Read、ReadAt、Seek方法,

1.24.1 func NewSectionReader
func NewSectionReader(r ReaderAt, off int64, n int64) *SectionReader

回傳一個從r中的偏移量off處為起始,讀取n個位元組后以EOF停止的SectionReader,

1.24.2 func (*SectionReader) Size
func (s *SectionReader) Size() int64

Size回傳該片段的位元組數,

1.24.3 func (*SectionReader) Read
func (s *SectionReader) Read(p []byte) (n int, err error)
1.24.4 func (*SectionReader) ReadAt
func (s *SectionReader) ReadAt(p []byte, off int64) (n int, err error)
1.24.5 func (*SectionReader) Seek
func (s *SectionReader) Seek(offset int64, whence int) (int64, error)

1.25 type PipeReader

type PipeReader struct {
    // 內含隱藏或非匯出欄位
}

PipeReader是一個管道的讀取端,

1.25.1 func Pipe
func Pipe() (*PipeReader, *PipeWriter)

Pipe創建一個同步的記憶體中的管道,它可以用于連接期望io.Reader的代碼和期望io.Writer的代碼,一端的讀取對應另一端的寫入,直接在兩端拷貝資料,沒有內部緩沖,可以安全的并行呼叫Read和Write或者Read/Write與Close方法,Close方法會在最后一次阻塞中的I/O操作結束后完成,并行呼叫Read或并行呼叫Write也是安全的:每一個獨立的呼叫會依次進行,

1.25.2 func (*PipeReader) Read
func (r *PipeReader) Read(data []byte) (n int, err error)

Read實作了標準Reader介面:它從管道中讀取資料,會阻塞直到寫入端開始寫入或寫入端被關閉,

1.25.3 func (*PipeReader) Close
func (r *PipeReader) Close() error

Close關閉讀取器;關閉后如果對管道的寫入端進行寫入操作,就會回傳(0, ErrClosedPip),

1.25.4 func (*PipeReader) CloseWithError
func (r *PipeReader) CloseWithError(err error) error

CloseWithError類似Close方法,但將呼叫Write時回傳的錯誤改為err,

1.26 type PipeWriter

type PipeWriter struct {
    // 內含隱藏或非匯出欄位
}

PipeWriter是一個管道的寫入端,

1.26.1 func (*PipeWriter) Write
func (w *PipeWriter) Write(data []byte) (n int, err error)

Write實作了標準Writer介面:它將資料寫入到管道中,會阻塞直到讀取器讀完所有的資料或讀取端被關閉,

1.26.2 func (*PipeWriter) Close
func (w *PipeWriter) Close() error

Close關閉寫入器;關閉后如果對管道的讀取端進行讀取操作,就會回傳(0, EOF),

1.26.3 func (*PipeWriter) CloseWithError
func (w *PipeWriter) CloseWithError(err error) error

CloseWithError類似Close方法,但將呼叫Read時回傳的錯誤改為err,

1.27 func TeeReader

func TeeReader(r Reader, w Writer) Reader

TeeReader回傳一個將其從r讀取的資料寫入w的Reader介面,所有通過該介面對r的讀取都會執行對應的對w的寫入,沒有內部的緩沖:寫入必須在讀取完成前完成,寫入時遇到的任何錯誤都會作為讀取錯誤回傳,

1.28 func MultiReader

func MultiReader(readers ...Reader) Reader

MultiReader回傳一個將提供的Reader在邏輯上串聯起來的Reader介面,他們依次被讀取,當所有的輸入流都讀取完畢,Read才會回傳EOF,如果readers中任一個回傳了非nil非EOF的錯誤,Read方法會回傳該錯誤,

1.29 func MultiWriter

func MultiWriter(writers ...Writer) Writer

MultiWriter創建一個Writer介面,會將提供給其的資料寫入所有創建時提供的Writer介面,

1.30 func Copy

func Copy(dst Writer, src Reader) (written int64, err error)

將src的資料拷貝到dst,直到在src上到達EOF或發生錯誤,回傳拷貝的位元組數和遇到的第一個錯誤,

對成功的呼叫,回傳值err為nil而非EOF,因為Copy定義為從src讀取直到EOF,它不會將讀取到EOF視為應報告的錯誤,如果src實作了WriterTo介面,本函式會呼叫src.WriteTo(dst)進行拷貝;否則如果dst實作了ReaderFrom介面,本函式會呼叫dst.ReadFrom(src)進行拷貝,

1.31 func CopyN

func CopyN(dst Writer, src Reader, n int64) (written int64, err error)

從src拷貝n個位元組資料到dst,直到在src上到達EOF或發生錯誤,回傳復制的位元組數和遇到的第一個錯誤,

只有err為nil時,written才會等于n,如果dst實作了ReaderFrom介面,本函式很呼叫它實作拷貝,

1.32 func ReadAtLeast

func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)

ReadAtLeast從r至少讀取min位元組資料填充進buf,函式回傳寫入的位元組數和錯誤(如果沒有讀取足夠的位元組),只有沒有讀取到位元組時才可能回傳EOF;如果讀取了有但不夠的位元組時遇到了EOF,函式會回傳ErrUnexpectedEOF, 如果min比buf的長度還大,函式會回傳ErrShortBuffer,只有回傳值err為nil時,回傳值n才會不小于min,

1.33 func ReadFull

func ReadFull(r Reader, buf []byte) (n int, err error)

ReadFull從r精確地讀取len(buf)位元組資料填充進buf,函式回傳寫入的位元組數和錯誤(如果沒有讀取足夠的位元組),只有沒有讀取到位元組時才可能回傳EOF;如果讀取了有但不夠的位元組時遇到了EOF,函式會回傳ErrUnexpectedEOF, 只有回傳值err為nil時,回傳值n才會等于len(buf),

1.34 func WriteString

func WriteString(w Writer, s string) (n int, err error)

WriteString函式將字串s的內容寫入w中,如果w已經實作了WriteString方法,函式會直接呼叫該方法,

2、ioutil

ioutil包實作了一些實用的io介面

2.1 Variables

var Discard io.Writer = devNull(0)

Discard是一個io.Writer介面,對它的所有Write呼叫都會無實際操作的成功回傳,

2.2 func NopCloser

func NopCloser(r io.Reader) io.ReadCloser

NopCloser用一個無操作的Close方法包裝r回傳一個ReadCloser介面,

2.3 func ReadAll

func ReadAll(r io.Reader) ([]byte, error)

ReadAll從r讀取資料直到EOF或遇到error,回傳讀取的資料和遇到的錯誤,成功的呼叫回傳的err為nil而非EOF,因為本函式定義為讀取r直到EOF,它不會將讀取回傳的EOF視為應報告的錯誤,

2.4 func ReadFile

func ReadFile(filename string) ([]byte, error)

ReadFile 從filename指定的檔案中讀取資料并回傳檔案的內容,成功的呼叫回傳的err為nil而非EOF,因為本函式定義為讀取整個檔案,它不會將讀取回傳的EOF視為應報告的錯誤,

2.5 func WriteFile

func WriteFile(filename string, data []byte, perm os.FileMode) error

函式向filename指定的檔案中寫入資料,如果檔案不存在將按給出的權限創建檔案,否則在寫入資料之前清空檔案,

2.6 func ReadDir

func ReadDir(dirname string) ([]os.FileInfo, error)

回傳dirname指定的目錄的目錄資訊的有序串列,

func main() {
   rd, err := ioutil.ReadDir("D://")
   fmt.Println(err)
   for _, fi := range rd {
      if fi.IsDir() {
         fmt.Printf("[%s]\n", fi.Name())

      } else {
         fmt.Println(fi.Name())
      }
   }
}

2.7 func TempDir

func TempDir(dir, prefix string) (name string, err error)

在dir目錄里創建一個新的、使用prfix作為前綴的臨時檔案夾,并回傳檔案夾的路徑,如果dir是空字串,TempDir使用默認用于臨時檔案的目錄(參見os.TempDir函式), 不同程式同時呼叫該函式會創建不同的臨時目錄,呼叫本函式的程式有責任在不需要臨時檔案夾時摧毀它,

2.8 func TempFile

func TempFile(dir, prefix string) (f *os.File, err error)

在dir目錄下創建一個新的、使用prefix為前綴的臨時檔案,以讀寫模式打開該檔案并回傳os.File指標,如果dir是空字串,TempFile使用默認用于臨時檔案的目錄(參見os.TempDir函式),不同程式同時呼叫該函式會創建不同的臨時檔案,呼叫本函式的程式有責任在不需要臨時檔案時摧毀它,

// 示例:臨時目錄、臨時檔案
func main() {
   // 創建臨時目錄
   dir, err := ioutil.TempDir("", "Test")
   if err != nil {
      fmt.Println(err)
   }
   defer os.Remove(dir) // 用完洗掉
   fmt.Printf("%s\n", dir)

   // 創建臨時檔案
   f, err := ioutil.TempFile(dir, "Test")
   if err != nil {
      fmt.Println(err)
   }
   defer os.Remove(f.Name()) // 用完洗掉
   fmt.Printf("%s\n", f.Name())
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554231.html

標籤:其他

上一篇:2023年18個最佳的ChatGPT AI插件

下一篇:返回列表

標籤雲
其他(160290) Python(38201) JavaScript(25474) Java(18185) C(15236) 區塊鏈(8269) C#(7972) AI(7469) 爪哇(7425) MySQL(7226) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5346) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4582) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1981) 功能(1967) HtmlCss(1952) Web開發(1951) C++(1928) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • Golang標準庫——io

    > 原文:[Golang標準庫——io](https://www.jianshu.com/p/ae82a7436bff) ### 1、io > io包提供了對I/O原語的基本介面。本包的基本任務是包裝這些原語已有的實作(如os包里的原語),使之成為共享的公共介面,這些公共介面抽象出了泛用的函式并附加 ......

    uj5u.com 2023-06-04 07:56:20 more
  • 2023年18個最佳的ChatGPT AI插件

    ChatGPT已經將人工智能提升到了一個新的高度。ChatGPT 4不僅是聊天機器人,還可以很好地與第三方插件配合使用。我們挑選出了2023年目前18款最佳的插件來介紹給您。 ......

    uj5u.com 2023-06-04 07:50:50 more
  • AtCoder Beginner Contest 304

    ## [A - First Player (abc304 a)](https://atcoder.jp/contests/abc304/tasks/abc304_a) ### 題目大意 依次給定每個人的姓名和年齡,排成一圈。從年齡最小的人依次輸出姓名。 ### 解題思路 找到年齡最小的,依次輸出就好 ......

    uj5u.com 2023-06-04 07:48:22 more
  • 高級程式員和新手小白程式員區別你是那個等級看解決bug速度

    IT入門深似海 ,程式員行業,我覺得是最難做的。加不完的班,熬不完的夜。 >和產品經理,扯不清,理還亂的宿命關系 一直都在 新需求-做專案-解決問題-解決bug-新需求 好像一直都是這么一個回圈。(哈哈哈)我覺得一個好的程式員,判斷根本取決于,遇到生產問題和bug,解決的問題的**思路**,和解決問 ......

    uj5u.com 2023-06-04 07:47:04 more
  • 7.1. JDBC簡介

    **1. 什么是JDBC?** JDBC(Java Database Connectivity)是一個Java API,用于連接和執行SQL陳述句與關系型資料庫進行互動。JDBC提供了一組介面和類,使Java程式能夠與各種資料庫通信,如MySQL、Oracle、PostgreSQL等。 **2. JD ......

    uj5u.com 2023-06-04 07:46:40 more
  • IPC橫向移動

    # IPC橫向移動 [TOC] ## 一、IPC介紹 IPC( Internet Process Connection)共享“命名管道”的資源,是為了實作行程間通信而開放的命名管道。IPC可以通過驗證用戶名和密碼獲得相應的權限,通常在遠程管理計算機和查看計算機的共享資源時使用。 通過ipc$,可以與 ......

    uj5u.com 2023-06-04 07:46:34 more
  • 利用遠控工具橫向移動

    # 利用遠控工具橫向移動 [TOC] ## 一、利用遠控工具向日葵橫向移動 ### 1、向日葵介紹 向日葵遠程控制軟體是一款免費的集遠程控制電腦/手機/平板、遠程桌面連接、遠程開機、遠程管理、支持內網穿透的一體化遠程控制管理工具軟體,且還能進行遠程檔案傳輸、遠程攝像頭監控等。 ### 2、利用思路 ......

    uj5u.com 2023-06-03 08:38:59 more
  • 學習筆記——VMWare的使用和Windows的安裝

    2023-06-02 一、VMware介紹 1.1 VMware即虛擬機軟體,用于模擬計算機(虛擬機/客戶機) 物體機(是實實在在的計算機) (1)特點 ①多啟動系統 一個時刻只能運行一個系統,切換時必須重啟。 ②虛擬PC軟體 一臺機器上同時運行多個系統 二、在虛擬機中安裝作業系統 2.1 安裝前的 ......

    uj5u.com 2023-06-03 08:38:55 more
  • 軟體測驗工程師如何從功能測驗轉成自動化測驗?經驗分享篇

    隨著測驗行業的發展,"會代碼"越來越成為測驗工程師的一個標簽。打開各大招聘網站,測驗工程師月薪一萬以上基本都有一個必備技能,那就是自動化測驗。那么自動化測驗到底難不難呢?下面我將會將我的經歷講給大家聽,希望聽完后,大家會有自己的一個判斷。 ......

    uj5u.com 2023-06-03 08:38:38 more
  • 軟體測驗作業3年,我是如何從剛入門進階到自動化測驗的?

    從事測驗作業已3年有余了,今天想聊一下自己剛入門時和現在的今昔對比,雖然現在也沒什么成就,只能說笑談一下自己的測驗生涯,各位看官就當是茶余飯后的吐槽吧,另外也想寫一寫自己的職場感想,希望對剛開始作業的小伙伴能夠有些幫助或啟發。 ......

    uj5u.com 2023-06-03 08:38:23 more