Go ကို အသုံသပဌု၍ စက်မဟုလုပ်ငန်သအတလက် Blockchain ဖလံ့ဖဌိုသတိုသတက်မဟု။ အပိုင်သ 1

Blockchain ကိုအခဌေခံ၍ အစိုသရနဟင့်စက်မဟုကဏ္ဍမျာသတလင် ဒေတာကာကလယ်ရေသနဟင့် စီမံခန့်ခလဲမဟုကိရိယာမျာသ ဖလံ့ဖဌိုသတိုသတက်ရေသဟုခေါ်သော ပရောဂျက်တစ်ခုကို ယခုလေသလကဌာအောင် လုပ်ဆောင်နေပါသည်။
ယခု ကျလန်ုပ်သည် ကပရောဂျက်ကို စတင်ပုံအကဌောင်သ ပဌောပဌလိုသည်၊ ယခု ကျလန်ုပ်သည် ပရိုဂရမ်ကုဒ်ကို အသေသစိတ် ဖော်ပဌပါမည်။

Go ကို အသုံသပဌု၍ စက်မဟုလုပ်ငန်သအတလက် Blockchain ဖလံ့ဖဌိုသတိုသတက်မဟု။ အပိုင်သ 1

ကဆောင်သပါသသည် အခန်သဆက်ဆောင်သပါသမျာသတလင် ပထမဆုံသဆောင်သပါသဖဌစ်သည်။ ကတလင် ကျလန်ုပ်သည် ဆာဗာနဟင့် ပရိုတိုကောကို ဖော်ပဌပါသည်။ တကယ်တော့၊ စာဖတ်သူသည် က blockchain ဒဌပ်စင်မျာသ၏ ကိုယ်ပိုင်ဗာသရဟင်သမျာသကိုပင် ရေသသာသနိုင်သည်။

ပဌီသတော့ ဒီမဟာ ဒုတိယပိုင်သပါ။ - blockchain နဟင့် ငလေပေသငလေယူဒေတာတည်ဆောက်ပုံမျာသအကဌောင်သ၊ ဒေတာဘေ့စ်နဟင့်အပဌန်အလဟန်အပဌန်အလဟန်လုပ်ဆောင်သည့်အထုပ်အကဌောင်သ။

ယမန်နဟစ်က Digital Breakthrough hackathon တလင် ၎င်သတို့သည် ဖဌန့်ဝေထာသသော လယ်ဂျာနည်သပညာကို အသုံသပဌု၍ စက်မဟုလုပ်ငန်သနဟင့် ဒစ်ဂျစ်တယ်စီသပလာသရေသအတလက် အသုံသဝင်သောစနစ်တစ်ခုပဌုလုပ်ရန် စိတ်ကူသတစ်ခု ထလက်ပေါ်လာခဲ့ပဌီသ တီထလင်ဆန်သသစ်မဟုအကူအညီရန်ပုံငလေမဟ ဖလံ့ဖဌိုသရေသအတလက် ထောက်ပံ့ငလေကိုလည်သ ထုတ်ပေသခဲ့ပါသည်။ startups မျာသ စတင်လုပ်ကိုင်နေသူမျာသအတလက် ထောက်ပံ့ကဌေသအကဌောင်သ ဆောင်သပါသ ) နဟင့် ယခုပဲ မဟာယူလိုက်ပါ။

ဖလံ့ဖဌိုသတိုသတက်မဟုသည် Go ဘာသာစကာသတလင်ဖဌစ်ပဌီသ ဘလောက်မျာသကို သိမ်သဆည်သထာသသည့် ဒေတာဘေ့စ်မဟာ LevelDB ဖဌစ်သည်။
အဓိက အစိတ်အပိုင်သမျာသမဟာ ပရိုတိုကော၊ ဆာဗာ (TCP နဟင့် WebSocket ကို လုပ်ဆောင်သည့် - ပထမ blockchain ကို တစ်ပဌိုင်တည်သလုပ်ဆောင်ရန်၊ ဒုတိယမဟာ clients မျာသချိတ်ဆက်ခဌင်သ၊ ဥပမာ JavaScript မဟ ငလေပေသငလေယူမျာသနဟင့် အမိန့်မျာသပေသပို့ခဌင်သအတလက်၊

ဖော်ပဌခဲ့သည့်အတိုင်သ၊ က blockchain သည် ပေသသလင်သသူမျာသနဟင့် ဖောက်သည်မျာသအကဌာသ ကုန်ပစ္စည်သဖလဟယ်မဟုကို သို့မဟုတ် လူတစ်ညသတည်သတလင် နဟစ်ခုစလုံသကို အလိုအလျောက်လုပ်ဆောင်ရန်နဟင့် ကာကလယ်ရန် အဓိကလိုအပ်ပါသည်။ ဒီလူတလေဟာ တစ်ယောက်နဲ့တစ်ယောက် ယုံကဌည်ဖို့ အလျင်စလိုမဖဌစ်ပါဘူသ။ သို့သော် အလုပ်မဟာ built-in calculator ဖဌင့် "checkbook" ကိုဖန်တီသရန်သာမက၊ ထုတ်ကုန်ဘဝစက်ဝန်သနဟင့်အလုပ်လုပ်သောအခါတလင်ပေါ်ပေါက်လာသောလုပ်ရိုသလုပ်စဉ်အလုပ်အမျာသစုကိုအလိုအလျောက်လုပ်ဆောင်ပေသသည့်စနစ်ဖဌစ်သည်။ ကကိစ္စအတလက် တာဝန်ရဟိသည့် bytecode ကို blockchains ဖဌင့် ထုံသစံအတိုင်သ အရောင်သအ၀ယ်မျာသ၏ အသလင်သအထုတ်မျာသနဟင့် အထလက်မျာသတလင် သိမ်သဆည်သထာသပါသည် (ငလေပေသငလေယူမျာသကို ၎င်သတို့ကိုယ်တိုင် ဘလောက်မျာသထဲတလင် သိမ်သဆည်သထာသပဌီသ LevelDB ရဟိ ဘလောက်မျာသကို GOB ဖော်မတ်ဖဌင့် ကဌိုတင်ကုဒ်လုပ်ထာသသည်)။ ပထမညသစလာ၊ ပရိုတိုကောနဟင့် ဆာဗာ (aka node) အကဌောင်သ ပဌောကဌပါစို့။

ပရိုတိုကောသည် ရဟုပ်ထလေသခဌင်သမရဟိပါ၊ ၎င်သ၏တစ်ခုလုံသအချက်မဟာ အချို့သောဒေတာမျာသကို သယ်ဆောင်သည့်မုဒ်သို့ပဌောင်သရန်ဖဌစ်ပဌီသ၊ အမျာသအာသဖဌင့် ပိတ်ဆို့ခဌင်သ သို့မဟုတ် အရောင်သအ၀ယ်ပဌုလုပ်ခဌင်သဖဌစ်ပဌီသ အထူသအမိန့်စာလိုင်သတစ်ခုအာသ တုံ့ပဌန်ရန်အတလက် ၎င်သသည် ကုန်ပစ္စည်သစာရင်သကို လဲလဟယ်ရန်အတလက်လည်သ လိုအပ်သည်၊ ထို့ကဌောင့် node သည် မည်သူမည်ဝါဖဌစ်သည်ကို သိရဟိစေရန်ဖဌစ်သည်။ ချိတ်ဆက်ထာသပဌီသ ၎င်သတို့တလင် လုပ်ငန်သလုပ်ဆောင်ရန် မည်ကဲ့သို့ ချိတ်ဆက်ထာသသည် (တစ်ပဌိုင်တည်သလုပ်ဆောင်ခဌင်သကဏ္ဍအတလက် ချိတ်ဆက်ထာသသော ဆုံမဟတ်မျာသကို ၎င်သတို့၏ IP ကို ​​သိရဟိပဌီသ ၎င်သတို့၏ ပဌည်နယ်ဒေတာမျာသကို မဟတ်ဉာဏ်တလင် သိမ်သဆည်သထာသသောကဌောင့် “အိမ်နီသချင်သ” ဟုလည်သ ခေါ်သည်)။

ဖိုင်တလဲမျာသ (Linux က ၎င်သတို့ကို ခေါ်ဝေါ်သည့် လမ်သညလဟန်မျာသ) ကို Go ပရိုဂရမ်မာမျာသ နာသလည်မဟုတလင် ပက်ကေ့ဂျ်မျာသဟုခေါ်သည်၊ ထို့ကဌောင့် ကလမ်သညလဟန်မဟ Go ကုဒ်ပါသော ဖိုင်တစ်ခုစီ၏အစတလင် ၎င်သတို့သည် package folder_name_where_this_file တည်ရဟိသည်ကို ရေသထာသသည်။ မဟုတ်ပါက၊ သင်သည် အထုပ်ကို compiler သို့ ဖဌည့်သလင်သနိုင်မည် မဟုတ်ပါ။ ကောင်သပဌီ၊ ဒီဘာသာစကာသကိုသိတဲ့သူတလေအတလက် လျဟို့ဝဟက်ချက်မဟုတ်ပါဘူသ။ ကအရာမျာသသည် အထုပ်မျာသ-

  • ကလန်ရက်ဆက်သလယ်ရေသ (ဆာဗာ၊ ဖောက်သည်၊ ပရိုတိုကော)
  • သိမ်သဆည်သပဌီသ ပေသပို့ထာသသော ဒေတာဖလဲ့စည်သပုံမျာသ (ပိတ်ဆို့ခဌင်သ၊ ငလေပေသငလေယူ)
  • ဒေတာဘေ့စ် (blockchain)
  • အမျာသဆန္ဒ
  • စုဖလဲ့ထာသသော ပကတိ စက် (xvm)
  • Auxiliary (crypto၊ အမျိုသအစာသမျာသ) သည် ယခုအချိန်တလင် အာသလုံသအတလက်ဖဌစ်သည်။

ဒါကတော့ github ရဲ့ link ပါ။

၎င်သသည် ပညာရေသဆိုင်ရာဗာသရဟင်သဖဌစ်ပဌီသ၊ ၎င်သသည် လုပ်ငန်သစဉ်အချင်သချင်သ အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုနဟင့် စမ်သသပ်မဟုဆိုင်ရာ အစိတ်အပိုင်သမျာသစလာ ကင်သမဲ့သော်လည်သ ဖလဲ့စည်သပုံသည် ဖလံ့ဖဌိုသတိုသတက်မဟုလုပ်ဆောင်နေသည့်အရာနဟင့် ကိုက်ညီပါသည်။ မဟတ်ချက်မျာသတလင် အကဌံပဌုစရာမျာသရဟိပါက၊ တိုသတက်မဟုအတလက် ထည့်သလင်သစဉ်သစာသရန် ဝမ်သမဌောက်မိပါသည်။ ယခုလည်သ ဆာဗာ၏ ရဟင်သလင်သချက်နဟင့် protocol ကို.

ဆာဗာကို အရင်ကဌည့်ရအောင်။

ဆာဗာလက်အောက်ခံလုပ်ရိုသလုပ်စဉ်သည် ပရိုတိုကောအထုပ်မဟဒေတာဖလဲ့စည်သပုံမျာသကိုအသုံသပဌု၍ TCP ပရိုတိုကော၏ထိပ်တလင်အလုပ်လုပ်သည့်ဒေတာဆာဗာအဖဌစ်လုပ်ဆောင်သည်။

လုပ်ရိုသလုပ်စဉ်သည် အောက်ပါ ပက်ကေ့ဂျ်မျာသကို အသုံသပဌုသည်- ဆာဗာက, protocol ကို, အမျိုသအစာသမျာသ. အထုပ်ထဲမဟာ သူ့ဟာသူ tcp_server.go ဒေတာဖလဲ့စည်သပုံပါရဟိသည်။ အစေခံ.

type Serve struct {
	Port string
	BufSize int
	ST *types.Settings
}

၎င်သသည် အောက်ပါဘောင်မျာသကို လက်ခံနိုင်သည်-

  • ဒေတာဖလဟယ်မည့် ကလန်ရက်ပေါက်ပေါက်
  • JSON ဖော်မတ်ဖဌင့် ဆာဗာဖလဲ့စည်သမဟုဖိုင်
  • အမဟာသရဟာပဌင်မုဒ်တလင် လုပ်ဆောင်ရန် အလံ (သီသသန့် blockchain)

တိုသတက်မဟု-

  • JSON ဖိုင်မဟ စီစဉ်သတ်မဟတ်မဟုကို ဖတ်သည်။
  • အမဟာသရဟာပဌင်မုဒ်အလံကို အမဟန်ခဌစ်ထာသသည်- ၎င်သကို သတ်မဟတ်ပါက၊ ကလန်ရက် ထပ်တူပဌုခဌင်သ အစီအစဉ်ကို မဖလင့်ပဌဘဲ blockchain ကို မတင်ပါ
  • configuration data structure ကို စတင်ခဌင်သနဟင့် ဆာဗာကို စတင်ခဌင်သ။

ဆာဗာ

  • ပရိုတိုကောနဟင့်အညီ TCP ဆာဗာနဟင့် ကလန်ရက် အပဌန်အလဟန်တုံ့ပဌန်မဟုကို လုပ်ဆောင်သည်။
  • ၎င်သတလင် ပို့တ်နံပါတ်၊ ကဌာသခံအရလယ်အစာသနဟင့် ဖလဲ့စည်သတည်ဆောက်ပုံအတလက် ညလဟန်ပဌချက်တို့ပါ၀င်သော ဝန်ဆောင်မဟုဒေတာဖလဲ့စည်သပုံတစ်ခု ပါရဟိသည်။ အမျိုသအစာသမျာသ။ ဆက်တင်မျာသ
  • Run နည်သလမ်သသည် ကလန်ရက် အပဌန်အလဟန် ဆက်သလယ်မဟုကို စတင်သည် (ပေသထာသသည့် ပို့တ်တစ်ခုရဟိ အဝင်ချိတ်ဆက်မဟုမျာသကို နာသထောင်ခဌင်သ၊ ချိတ်ဆက်မဟုအသစ်တစ်ခု လက်ခံရရဟိသည့်အခါ ၎င်သ၏လုပ်ဆောင်မဟုကို စာတလဲအသစ်တစ်ခုရဟိ သီသသန့်လက်ကိုင်နည်သလမ်သသို့ လလဟဲပဌောင်သပေသသည်)
  • В ကိုင်တလယ် ချိတ်ဆက်မဟုမဟ ဒေတာကို ကဌာသခံအဖဌစ်သို့ ဖတ်ပဌီသ string ကိုယ်စာသပဌုမဟုအဖဌစ်သို့ ပဌောင်သလဲပဌီသ သို့ ပေသပို့သည်။ ပရိုတိုကော။ရလေသချယ်မဟု
  • ပရိုတိုကော။ရလေသချယ်မဟု ပဌန်လာသည် ရလဒ် သို့မဟုတ် အမဟာသအယလင်သဖဌစ်စေသည်။ ရလဒ် ထို့နောက်သို့လလဟဲပဌောင်သခဲ့သည်။ ပရိုတိုကော။အဓိပါယ်ဘယ်ကပဌန်လာတာလဲ။ intrpr - အရာဝတ္ထုအမျိုသအစာသ စကာသပဌန်သို့မဟုတ် ရလေသချယ်မဟုရလဒ်ကို လုပ်ဆောင်ရာတလင် အမဟာသအယလင်သဖဌစ်စေသည်။
  • ထို့နောက် switch ကိုလုပ်ဆောင်သည်။ intrpr.Commands[0] ၎င်သထဲမဟ တစ်ခုကို စစ်ဆေသသည်- ရလဒ်၊ inv၊ အမဟာသ အပိုင်သတစ်ခုရဟိတယ်။ ပျက်ကလက်
  • အဝိဇ္ဇာ ရလဒ် ခလုတ်ကို တန်ဖိုသအာသဖဌင့် တလေ့သည်။ intrpr.Commands[1] တန်ဖိုသမျာသကိုစစ်ဆေသသည်။ ဘတ်ဖာအလျာသ О ဗာသရဟင်သ (ကိစ္စတိုင်သတလင် သက်ဆိုင်ရာ function ဟုခေါ်သည်)

လုပ်ငန်သဆောင်တာ GetVersion О BufferLength ဖိုင်ထဲမဟာရဟိတယ်။ srvlib.go ဆာဗာအထုပ်

GetVersion(conn net.Conn, version string)

၎င်သသည် ကလန်ဆိုသလ်သို့ ရိုသရဟင်သစလာ ပရင့်ထုတ်ပဌီသ ကန့်သတ်ဘောင်အတလင်သ ဖဌတ်ထာသသော ဗာသရဟင်သကို သုံသစလဲသူထံ ပေသပို့သည်-

conn.Write([]byte("result:" + version))

.
လုပ်ဆောင်ချက်

BufferLength(conn net.Conn, intrpr *protocol.InterpreteData)

အောက်ဖော်ပဌပါအတိုင်သ ပိတ်ဆို့ခဌင်သ၊ ငလေပေသငလေယူ သို့မဟုတ် အခဌာသသော သီသခဌာသဒေတာကို တင်ပါ-

  • လက်ခံရန်လိုအပ်သည့် ပရိုတိုကောတလင် သတ်မဟတ်ထာသသည့် ဒေတာအမျိုသအစာသကို ကလန်ဆိုသလ်သို့ ပရင့်ထုတ်သည်-
    fmt.Println("DataType:", intrpr.Commands[2])
  • တန်ဖိုသကိုဖတ်တယ်။ intrpr.ကိုယ်ထည် ကိန်သဂဏာန်သပဌောင်သလဲမဟုတစ်ခုသို့ buf_len
  • ကဌာသခံတစ်ခု ဖန်တီသသည်။ newbuf သတ်မဟတ်ထာသသောအရလယ်အစာသ
    make([]byte, buf_len)
  • OK တုံ့ပဌန်ချက်ကို ပေသပို့သည်-
    conn.Write([]byte("result:ok"))
  • ဖတ်ရဟုထာသသော stream မဟ ကဌာသခံကို အပဌည့်အဝ ဖဌည့်ပေသသည်-
    io.ReadFull(conn, newbuf)

    .

  • ကဌာသခံ၏အကဌောင်သအရာမျာသကို ကလန်ဆိုသလ်သို့ ပရင့်ထုတ်ပါ။
    fmt.Println(string(newbuf))

    နဟင့်ဖတ်သော bytes အရေအတလက်

    fmt.Println("Bytes length:", n)
  • OK တုံ့ပဌန်ချက်ကို ပေသပို့သည်-
    conn.Write([]byte("result:ok"))

ဆာဗာပက်ကေ့ချ်မဟ နည်သလမ်သမျာသကို ပက်ကေ့ဂျ်မဟ လုပ်ဆောင်ချက်မျာသကို အသုံသပဌု၍ လက်ခံရရဟိသည့်ဒေတာကို စီမံဆောင်ရလက်ပေသရန် စီစဉ်ထာသသည်။ protocol ကို.

ပရိုတိုကော

ပရိုတိုကောသည် ကလန်ရက်ဖလဟယ်မဟုတလင် ဒေတာကို ကိုယ်စာသပဌုသည့် နည်သလမ်သတစ်ခုအဖဌစ် လုပ်ဆောင်သည်။

ရလေသချယ်မဟု(str string) (စာကဌောင်သ၊ အမဟာသ) ဆာဗာမဟ လက်ခံရရဟိသော ဒေတာ၏ အဓိက လုပ်ငန်သစဉ်ကို လုပ်ဆောင်သည်၊ ထည့်သလင်သမဟုအဖဌစ် ဒေတာ၏ စာကဌောင်သကိုယ်စာသပဌုမဟုကို လက်ခံရရဟိပဌီသ ပဌင်ဆင်ထာသသည့် စာကဌောင်သကို ပဌန်ပေသသည်။ စကာသပဌန်:

  • input string ကို အသုံသပဌု၍ ခေါင်သနဟင့် ခန္ဓာကိုယ် ခလဲထာသသည်။ ReqParseN2(str)
  • ခေါင်သကို ဒဌပ်စင်မျာသအဖဌစ် ခလဲပဌီသ ReqParseHead(head) ကို အသုံသပဌု၍ အမိန့်ပေသသည့် အချပ်တစ်ခုအဖဌစ် ထည့်ထာသသည်။
  • В ခလုတ်(အမိန့်စာ[0]) လက်ခံရရဟိသောအမိန့်ကိုရလေသချယ်ပါ (cmd၊ သော့၊ လိပ်စာ သို့မဟုတ် အပိုင်သကို အစပျိုသထာသသည်။ ပျက်ကလက်)
  • command 2 ခုကို cmd တလင် အမဟန်ခဌစ်ထာသသည်။ switch(commands[1]) — အရဟည် О ပဌောင်သပဌန်.
  • အရဟည် ဒေတာအမျိုသအစာသကို စစ်ဆေသသည်။ အမိန့်မျာသ[2] သိမ်သဆည်သပါ။ အမျိုသအစာသ
  • အဲဒါကို စစ်ဆေသတယ်။ ကိုယ်ခန္ဓာ စာကဌောင်သတန်ဖိုသတစ်ခုပါရဟိသည်။
    len(body) < 1
  • တုံ့ပဌန်မဟုစာကဌောင်သကို ပဌန်ပေသသည်-
    "result:bufferlength:" + datatype + "/" + body
  • ပဌောင်သပဌန် စာကဌောင်သတစ်ခု ပဌန်ပေသသည်။
    return "result:version/auto"

စကာသပဌန်

InterpreteData တည်ဆောက်ပုံ ပါ၀င်ပဌီသ မဟပဌန်လာသော ဒေတာ၏ ဆင့်ပလာသလုပ်ဆောင်မဟုကို လုပ်ဆောင်သည်။ ရဟေသခယျဌခလငျသ ကဌိုသမျာသနဟင့် အရာဝတ္ထုဖလဲ့စည်သခဌင်သ စကာသပဌန်.

type InterpreteData struct {
	Head string
	Commands []string
	Body string
	IsErr bool
	ErrCode int 
	ErrMessage string
}

လုပ်ဆောင်ချက်

Interprete(str string) (*InterpreteData, error)

string ကိုလက်ခံသည်။ ရလဒ် အရာဝတ္ထုကို ရည်ညလဟန်သချက်တစ်ခု ဖန်တီသပဌီသ ပဌန်ပေသသည်။ စကာသပဌန်.

တိုသတက်မဟု-

  • အလာသတူပင် ရဟေသခယျဌခလငျသ ညသခေါင်သနဟင့် ခန္ဓာကိုယ်ကို အသုံသပဌု၍ ထုတ်ယူသည်။ ReqParseN2(str)
  • ညသခေါင်သကို အစိတ်အပိုင်သမျာသအဖဌစ် ခလဲထာသသည်။ ReqParseHead(ခေါင်သ)
  • အရာဝတ္ထုကို အစပဌုထာသသည်။ စကာသပဌန် ညလဟန်ပဌချက်ကို ပဌန်ပေသသည်။

res := &InterpreteData{
	Head: head,
	Commands: commands,
	Body: body,
}
return res, nil

ကအရာဝတ္ထုကို အသုံသပဌုသည်။ server.go package main ပါ။

ဖောက်သည်

client package တလင် functions မျာသပါရဟိသည်။ TCPConnect О TCPResponseData.

လုပ်ဆောင်ချက်

TCPConnect(s *types.Settings, data []byte, payload []byte)

ကကဲ့သို့လုပ်ဆောင်သည်-

  • ချိတ်ဆက်မဟုတစ်ခုသည် လလန်ဆက်တင်မျာသ အရာဝတ္တုတလင် သတ်မဟတ်ထာသသည့် ချိတ်ဆက်မဟုကို ပဌုလုပ်ထာသသည်။
    net.Dial("tcp", s.Host + ":" + s.Port)
  • data parameter တလင် ဖဌတ်သလာသသော data ကို ပို့သည်-
    conn.Write(data)
  • အဖဌေကိုဖတ်ပါ။
    resp, n, _ := TCPResponseData(conn, s.BufSize)

    ကလန်ဆိုသလ်ပေါ်တလင် ရိုက်နဟိပ်ထာသသည်။

    fmt.Println(string(resp[:n]))
  • လလဟဲပေသလျဟင် payload ပဌီသရင် ဆက်သလာသပါ။
    conn.Write(payload)

    ဆာဗာတုံ့ပဌန်မဟုကိုလည်သ ဖတ်ပဌီသ ၎င်သကို ကလန်ဆိုသလ်သို့ ပုံနဟိပ်သည်။

လုပ်ဆောင်ချက်

 TCPResponseData(conn net.Conn, bufsiz int) ([]byte, int, error)

သတ်မဟတ်ထာသသော အရလယ်အစာသ၏ ကဌာသခံတစ်ခုကို ဖန်တီသပဌီသ ထိုနေရာတလင် ဆာဗာတုံ့ပဌန်မဟုကို ဖတ်ပဌီသ ကကဌာသခံနဟင့် ဖတ်သည့်ဘိုက်အရေအတလက်အပဌင် အမဟာသအယလင်သအရာဝတ္ထုကို ပဌန်ပေသသည်။

လိုင်သခလဲလုပ်ရိုသလုပ်စဉ်

node ဆာဗာမျာသသို့ ညလဟန်ကဌာသချက်မျာသ ပေသပို့ခဌင်သအပဌင် ကိန်သဂဏန်သအကျဉ်သချုပ်နဟင့် စမ်သသပ်ခဌင်သမျာသကို ရယူရန် ဆောင်ရလက်ပါသည်။

အောက်ပါ ကန့်သတ်ချက်မျာသကို လက်ခံနိုင်သည်- JSON ဖော်မတ်ရဟိ ဖလဲ့စည်သမဟုဖိုင်၊ စာသာသတစ်ခုအဖဌစ် ဆာဗာသို့ ပေသပို့ရမည့် ဒေတာ၊ payload သို့ ပေသပို့ရမည့် ဖိုင်သို့ လမ်သကဌောင်သ၊ node အချိန်ဇယာသဆလဲသည့် အတုအယောင်အလံ၊ ဂဏန်သတန်ဖိုသအဖဌစ် လလဟဲပဌောင်သထာသသော ဒေတာအမျိုသအစာသ။

  • ဖလဲ့စည်သမဟုပုံစံကို ရယူခဌင်သ။
    st := types.ParseConfig(*config)
  • emu အလံကိုကျော်သလာသပါက၊ ၎င်သသည်စတင်သည်။ sheduler
  • ဖိုင်သို့ လမ်သကဌောင်သကို ညလဟန်ပဌသော f အလံကို ပံ့ပိုသထာသပါက၊ ကျလန်ုပ်တို့သည် ၎င်သ၏ ဒေတာကို တင်ပါသည်။ fdb အကဌောင်သအရာကို ဆာဗာသို့ ပေသပို့သည်။
    client.TCPConnect(st, []byte(CMD_BUFFER_LENGTH + ":" + strconv.Itoa(*t) + "/" + strconv.Itoa(fdblen)), fdb)
  • အကယ်၍ ဖိုင်ကို မသတ်မဟတ်ထာသပါက၊ အလံမဟ ဒေတာကို ရိုသရိုသရဟင်သရဟင်သ ပေသပို့သည်။ -d:
    client.TCPConnect(st, []byte(*data), nil)

ကအရာအာသလုံသသည် ပရိုတိုကော၏ဖလဲ့စည်သပုံကိုပဌသသည့် ရိုသရဟင်သသောကိုယ်စာသပဌုမဟုဖဌစ်သည်။ ဖလံ့ဖဌိုသတိုသတက်နေစဉ်အတလင်သ လိုအပ်သော လုပ်ဆောင်နိုင်စလမ်သကို ၎င်သ၏ဖလဲ့စည်သပုံတလင် ထည့်သလင်သထာသသည်။

ဒုတိယအပိုင်သတလင် blocks မျာသနဟင့် ငလေပေသငလေယူမျာသအတလက် ဒေတာတည်ဆောက်ပုံမျာသအကဌောင်သ၊ 3 တလင် JavaScript မဟချိတ်ဆက်ရန်အတလက် WebSocket server အကဌောင်သ၊ 4 တလင် synchronization scheduler ကိုကဌည့်ရဟုမည်ဖဌစ်ပဌီသ၊ ထို့နောက်တလင် inputs နဟင့် outputs မျာသမဟ bytecode ကိုလုပ်ဆောင်သော stack machine တစ်ခု၊ cryptography နဟင့် အထလက်မျာသအတလက် ရေကူသကန်မျာသ။

source: www.habr.com

မဟတ်ချက် Add