Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

Java သည် အခြားနာမည်ကြီးဘာသာစကားများနှင့် မည်သို့ကွာခြားသနည်း။ Java သည် အဘယ်ကြောင့် ပထမဆုံး သင်ယူသင့်သနည်း။ Java ကို အစမှ သင်ယူပြီး အခြားဘာသာစကားများဖြင့် ပရိုဂရမ်ရေးသားခြင်းစွမ်းရည်ကို အသုံးချခြင်းဖြင့် ကူညီပေးမည့် အစီအစဉ်တစ်ခုကို ဖန်တီးကြပါစို့။ Java တွင် ထုတ်လုပ်မှုကုဒ် ဖန်တီးခြင်းနှင့် အခြားဘာသာစကားများဖြင့် တီထွင်ခြင်းကြား ခြားနားချက်များကို စာရင်းပြုစုကြပါစို့။ Mikhail Zatepyakin သည် အနာဂတ်ပါဝင်သူများအတွက် အစည်းအဝေးတစ်ခုတွင် ဤအစီရင်ခံစာကို ဖတ်ကြားခဲ့သည်။ အလုပ်သင် Yandex နှင့် အခြားသော အစပြု developer များ - Java Junior တွေ့ဆုံမှု။


- အားလုံးပဲမင်္ဂလာပါ ကျွန်တော့်နာမည် Misha ပါ။ ကျွန်ုပ်သည် Yandex.Market မှ developer တစ်ဦးဖြစ်ပြီး ယနေ့တွင် Java ကို လေ့လာရန်နှင့် ၎င်းကို ထိရောက်စွာပြုလုပ်နည်းကို ပြောပြပါမည်။ ကျိုးကြောင်းဆီလျော်သောမေးခွန်းကို သင်မေးနိုင်သည်- အတွေ့အကြုံ နှစ်ပေါင်းများစွာရှိသော ခိုင်မာသော developer မဟုတ်ဘဲ အဘယ်ကြောင့် ဤဇာတ်လမ်းကို ပြောပြရမည်နည်း။ တကယ်တော့ လွန်ခဲ့တဲ့ တစ်နှစ်ခွဲလောက်က ကျွန်တော်ကိုယ်တိုင် Java ကို မကြာသေးမီက လေ့လာခဲ့တာပါ၊ ဒါကြောင့် ဘယ်လိုပုံစံနဲ့ ချို့ယွင်းချက်တွေ ရှိနေလဲဆိုတာကို ကျွန်တော် မှတ်မိနေပါသေးတယ်။

လွန်ခဲ့သည့်တစ်နှစ်က ကျွန်တော် Yandex.Market တွင် အလုပ်သင်တစ်ခုရခဲ့သည်။ Beru အတွက် backend ကို တီထွင်ခဲ့တယ်၊ Market ကိုယ်တိုင်အတွက်၊ သင်သုံးတာဖြစ်နိုင်ပါတယ်။ အခုကျွန်တော်က တခြားအဖွဲ့တစ်ခုမှာ ဆက်ပြီးအလုပ်လုပ်နေတယ်။ ကျွန်ုပ်တို့သည် လုပ်ငန်းလုပ်ဖော်ကိုင်ဖက်များအတွက် Yandex.Market အတွက် ခွဲခြမ်းစိတ်ဖြာမှုပလပ်ဖောင်းတစ်ခုကို ဖန်တီးပါသည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

စလိုက်ကြစို့။ ဘာကြောင့် Java ကို လက်တွေ့ကျကျ ရှုထောင့်ကနေ သင်ယူရတာလဲ။ တကယ်တော့ Java ဟာ အလွန်နာမည်ကြီးတဲ့ programming language တစ်ခုပါ။ ၎င်းတွင် အလွန်ကြီးမားသော အသိုက်အဝန်းတစ်ခုရှိသည်။

ဥပမာအားဖြင့်၊ ထိုကဲ့သို့သော TIOBE အညွှန်းကိန်း၊ ပရိုဂရမ်းမင်းဘာသာစကားများ၏ လူကြိုက်များမှုဆိုင်ရာ အညွှန်းကိန်းတစ်ခုရှိပြီး Java သည် ထိုနေရာတွင် ပထမအဆင့်ရှိသည်။ ထို့အပြင် အလုပ်ဆိုဒ်များတွင် လစ်လပ်နေသောနေရာအများစုသည် Java အကြောင်းဖြစ်သည်၊ ဆိုလိုသည်မှာ Java တွင် တီထွင်ခြင်းဖြင့် သင်သည် အလုပ်တစ်ခုကို အမြဲတမ်းရှာဖွေနိုင်သည်။

ကွန်မြူနတီသည် အလွန်ကြီးမားသောကြောင့်၊ သင်မေးထားသောမေးခွန်းတိုင်းသည် Stack Overflow သို့မဟုတ် အခြားဆိုက်အချို့တွင် အဖြေတွေ့လိမ့်မည်။ Java တွင် ဖွံ့ဖြိုးလာသောအခါတွင် သင်သည် JVM တွင် ကုဒ်ကို အမှန်တကယ် ရေးသားနေသောကြောင့် သင်သည် JVM ကို အသုံးပြုသည့် Kotlin၊ Scala နှင့် အခြားဘာသာစကားများသို့ အလွယ်တကူ ပြောင်းနိုင်သည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

အယူဝါဒ ရှုထောင့်မှ ဂျာဗား ၏ ကောင်းကျိုးက ဘာလဲ ။ ပရိုဂရမ်းမင်းဘာသာစကားအမျိုးမျိုးရှိပါတယ်။ သူတို့ဟာ မတူညီတဲ့ပြဿနာတွေကို ဖြေရှင်းနိုင်တယ်ဆိုတာ သင်သိပါတယ်။ ဥပမာအားဖြင့်၊ Python သည် အမြန်ပြဿနာများကို ဖြေရှင်းရန်အတွက် တစ်ကြောင်းတည်းသော script များရေးသားခြင်းအတွက် ကောင်းမွန်ပါသည်။

အပေါင်းဘက်တွင်၊ သင်သည် executable code ကို အပြည့်အဝ ထိန်းချုပ်နိုင်သည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့တွင်ကားများ၊ Yandex မောင်းသူမဲ့ကားများရှိသည်၊ ၎င်းတို့၏ကုဒ်ကို pluses ဖြင့်ရေးထားသည်။ အဘယ်ကြောင့်? Java တွင် အမှိုက်စုဆောင်းသူ ရှိပါသည်။ ၎င်းသည် မလိုအပ်သော အရာဝတ္ထုများ၏ RAM ကို ရှင်းလင်းပေးသည်။ ဤအရာသည် သူ့အလိုလို စတင်ပြီး ကမ္ဘာကို ရပ်တန့်စေသည်၊ ဆိုလိုသည်မှာ ၎င်းသည် ကျန်သော ပရိုဂရမ်များကို ရပ်တန့်ကာ အရာဝတ္ထုများကို ရေတွက်ရန်၊ အရာဝတ္ထုများ၏ မှတ်ဉာဏ်ကို ရှင်းရှင်းလင်းလင်း ဖြစ်စေသည်။ ဒီလိုအရာမျိုးဟာ ဒရုန်းမှာ အလုပ်လုပ်ရင် မအေးပါဘူး။ သင်၏ဒရုန်းသည် ဤအခိုက်အတန့်တွင် ၎င်း၏မှတ်ဉာဏ်ကို ရှင်းလင်းစေပြီး လမ်းကို လုံးဝမကြည့်ဘဲ ဖြောင့်တန်းစွာမောင်းနှင်မည်ဖြစ်သည်။ ထို့ကြောင့် ဒရုန်းသည် ကောင်းကျိုးများကို ရေးထားသည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

Java သည် မည်သည့်ပြဿနာများကို ဖြေရှင်းပေးသနည်း။ ၎င်းသည် လူပေါင်း ဒါဇင်နှင့်ချီသော နှစ်များအတွင်း ရေးသားခဲ့သော ကြီးမားသော ပရိုဂရမ်များကို တီထွင်ရန်အတွက် အဓိကအားဖြင့် ဘာသာစကားတစ်ခုဖြစ်သည်။ အထူးသဖြင့်၊ Yandex.Market ရှိ backend အများအပြားကို Java ဖြင့်ရေးသားထားသည်။ ကျွန်ုပ်တို့တွင် မြို့ပေါင်းများစွာတွင် ဖြန့်ဝေရေးအဖွဲ့တစ်ခုစီရှိပြီး လူဆယ်ဦးရှိသည်။ ကုဒ်ကို ထိန်းသိမ်းရလွယ်ကူသည်၊ ၎င်းကို ဆယ်နှစ် သို့မဟုတ် ထို့ထက်ပို၍ ထောက်ပံ့ပေးထားပြီး တစ်ချိန်တည်းတွင် လူသစ်များဝင်လာပြီး ဤကုဒ်ကို နားလည်သည်။

ဘာသာစကားတစ်ခုတွင် မည်သည့်ဝိသေသလက္ခဏာများ ရှိသင့်သနည်း၊ သို့မှသာ ၎င်းရှိကုဒ်ကို အလွယ်တကူ ပံ့ပိုးနိုင်ပြီး အသင်းကြီးများတွင် အလွယ်တကူ တီထွင်နိုင်စေရန်။ ပထမဦးစွာ၊ ၎င်းသည် ဖတ်နိုင်သော ကုဒ်ဖြစ်သင့်ပြီး ရှုပ်ထွေးသော ဗိသုကာဆိုင်ရာ ဖြေရှင်းချက်များကို အကောင်အထည်ဖော်ရန် လွယ်ကူသင့်သည်။ ဆိုလိုသည်မှာ၊ အဆင့်မြင့် abstractions စသည်တို့ကို ရေးရန် လွယ်ကူသင့်ပါသည်။ ဤအရာအားလုံးသည် Java မှ ကျွန်ုပ်တို့အား ပေးဆောင်ပါသည်။ ၎င်းသည် အရာဝတ္ထုကို ဦးတည်သော ဘာသာစကားတစ်ခုဖြစ်သည်။ အဆင့်မြင့် abstractions များနှင့် ရှုပ်ထွေးသော ဗိသုကာလက်ရာများကို အကောင်အထည်ဖော်ရန် အမှန်တကယ်လွယ်ကူပါသည်။

Java အတွက် မူဘောင်များနှင့် စာကြည့်တိုက်များစွာလည်း ရှိပါသည်၊ အဘယ်ကြောင့်ဆိုသော် ဘာသာစကားသည် 15 နှစ်ကျော်ပြီဖြစ်သောကြောင့် ဖြစ်သည်။ ထိုအချိန်တွင်၊ ရေးနိုင်သမျှကို ရေးမှတ်ထားသောကြောင့် သင်လိုအပ်သမျှအတွက် စာကြည့်တိုက်များစွာရှိသည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ကျွန်တော့်အမြင်အရတော့ JA ကစားသမားတစ်ယောက်မှာ ဘယ်အခြေခံအရည်အချင်းတွေ ရှိသင့်လဲ။ ပထမဆုံးအနေနဲ့၊ ဒါက Java core language ရဲ့ ဗဟုသုတပါ။ နောက်တစ်ခုကတော့ Dependency Injection framework တစ်မျိုးပါ။ နောက်စပီကာဖြစ်တဲ့ Kirill က ဒီအကြောင်းကို ပိုပြီးပြည့်စုံအောင် ပြောပြပါလိမ့်မယ်။ ငါအရမ်းနက်နဲမသွားဘူး။ နောက်တစ်ခုကတော့ ဗိသုကာနဲ့ ဒီဇိုင်းပုံစံတွေပါ။ အပလီကေးရှင်းကြီးများကိုရေးရန်အတွက် ကျွန်ုပ်တို့သည် ဗိသုကာလက်ရာမြောက်လှပသောကုဒ်ကို ရေးသားနိုင်ရန်လိုအပ်သည်။ ၎င်းသည် ဒေတာဘေ့စ်နှင့် လုပ်ဆောင်သည့် အလုပ်များအတွက် SQL သို့မဟုတ် ORM အမျိုးအစားအချို့ဖြစ်သည်။ ပြီးတော့ ဒါက backend နဲ့ ပိုသက်ဆိုင်တယ်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

သွား! Java core ။ ဒီမှာ အမေရိကကို ငါတကယ်ရှာတွေ့မှာမဟုတ်ဘူး- မင်းဘာသာစကားကိုယ်တိုင်သိဖို့လိုတယ်။ ဘာတွေကို သတိထားသင့်လဲ။ ပထမဦးစွာ၊ Java သည် မကြာသေးမီနှစ်များအတွင်း ဗားရှင်းများစွာကို ထုတ်ဝေခဲ့ပြီး ဆိုလိုသည်မှာ 2014-2015 ခုနှစ်တွင် သတ္တမမြောက်ကို ထုတ်ဝေခဲ့ပြီး၊ ထို့နောက် အဋ္ဌမ၊ နဝမ၊ ဒသမ၊ ဗားရှင်းအသစ်များစွာနှင့် ၎င်းတို့တွင် အလန်းစားအသစ်များစွာကို မိတ်ဆက်ပေးခဲ့သည်။ ဥပမာအားဖြင့်၊ Java Stream API ၊ lambda စသည်တို့။ ထုတ်လုပ်ရေးကုဒ်တွင် အသုံးပြုသည့် အလွန်အေးမြသော၊ လတ်ဆတ်သော၊ အေးမြသော အရာများ၊ အင်တာဗျူးများတွင် ၎င်းတို့မေးထားသည်များနှင့် သင်သိလိုသောအရာများ။ ထို့ကြောင့် သင်သည် Java-4 စာကြည့်တိုက်ရှိ စင်မှ စာအုပ်တစ်အုပ်ကို ယူသွားပြီး ၎င်းကို လေ့လာရန် မသင့်ပါ။ ဤသည်မှာ ကျွန်ုပ်တို့၏ အစီအစဉ်ဖြစ်သည်- ကျွန်ုပ်တို့သည် Java-8 သို့မဟုတ် ထို့ထက် ပိုလေ့လာသည်။

Stream API၊ var စသည်တို့ကဲ့သို့သော ဆန်းသစ်တီထွင်မှုများကို ကျွန်ုပ်တို့ အာရုံစိုက်ပါသည်။ ၎င်းတို့ကို အင်တာဗျူးများအတွင်း မေးမြန်းပြီး ထုတ်လုပ်ရေးတွင် အမြဲတစေ အသုံးပြုပါသည်။ ဆိုလိုသည်မှာ၊ Stream API သည် loops များထက် များစွာအေးသည်၊ ယေဘုယျအားဖြင့်၊ အလွန်အေးသော အရာဖြစ်သည်။ သေချာဂရုပြုပါ။

ထို့အပြင် ထပ်ဆင့်ရေးသူများ၊ ခြွင်းချက်များနှင့် အခြားအရာများ ရှိပါသည်။ သင်ကိုယ်တိုင်ကုဒ်လေးတစ်ခုရေးနေသရွေ့ သင့်အတွက် အရေးမပါဘူးလို့ထင်တဲ့အရာတွေပါ။ ဒီခြွင်းချက်တွေကို မင်း မလိုအပ်ဘူး၊ ဘယ်သူတွေ လိုအပ်နေလဲ။ ဒါပေမယ့် အင်တာဗျူးတွေမှာ သူတို့ကို သေချာပေါက် မေးလိမ့်မယ်၊ သူတို့က ထုတ်လုပ်ရေးမှာ သင့်အတွက် သေချာပေါက် အသုံးဝင်ပါလိမ့်မယ်။ ယေဘူယျအားဖြင့် သင်သည် ခြွင်းချက်များ၊ ထပ်တလဲလဲနှင့် အခြားအရာများကို အာရုံစိုက်သင့်သည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ဒေတာဖွဲ့စည်းပုံများ။ ဖွဲ့စည်းတည်ဆောက်ပုံများမပါဘဲ သင်မသွားနိုင်ပါ၊ သို့သော် အစုံ၊ အဘိဓာန်နှင့် စာရွက်များရှိကြောင်း သင်မသိပါက အလွန်ကောင်းပါသည်။ နှင့် ကွဲပြားခြားနားသော ဖွဲ့စည်းပုံများကို အကောင်အထည်ဖော်ခြင်း။ ဥပမာအားဖြင့်၊ Java ရှိ တူညီသောအဘိဓာန်တွင် HashMap နှင့် TreeMap အပါအဝင် အကောင်အထည်ဖော်မှုများစွာရှိသည်။ ၎င်းတို့တွင် ကွဲပြားသော ရောဂါလက္ခဏာများ ရှိသည်၊ ၎င်းတို့သည် အတွင်းပိုင်းတွင် တည်ဆောက်ပုံ ကွဲပြားသည်။ ၎င်းတို့ မည်ကဲ့သို့ ကွဲပြားပြီး မည်သည့်အချိန်ကို အသုံးပြုရမည်ကို သိရန် လိုအပ်ပါသည်။

ဤဒေတာတည်ဆောက်ပုံများသည် အတွင်းပိုင်းအလုပ်လုပ်ပုံကို သင်သိပါက အလွန်အေးမြပါလိမ့်မည်။ ဆိုလိုသည်မှာ၊ ၎င်းတို့၏ asymptotics များကို သိရန်မလွယ်ကူပါ - အလောင်းအစားမည်မျှအလုပ်လုပ်သည်၊ pass မည်မျှကြာကြာအလုပ်လုပ်သည်၊ သို့သော်အတွင်းတွင်တည်ဆောက်ပုံအလုပ်လုပ်ပုံ - ဥပမာ HashMap ရှိပုံးတစ်ပုံးဆိုတာဘာလဲ။

သစ်ပင်များနှင့် ဂရပ်များကို အာရုံစိုက်ရန်လည်း ထိုက်တန်ပါသည်။ ဤအရာများသည် ထုတ်လုပ်မှုကုဒ်တွင် အသုံးများသော အရာများမဟုတ်သော်လည်း အင်တာဗျူးများတွင် ၎င်းတို့သည် ရေပန်းစားသည်။ ထို့ကြောင့် သင်သည် သစ်ပင်များကို ဖြတ်၍ အကျယ်နှင့် အတိမ်အနက်ရှိ ဂရပ်များကို ဖြတ်ကျော်နိုင်ရန်လိုအပ်သည်။ ဒါတွေအားလုံးဟာ ရိုးရှင်းတဲ့ algorithms တွေပါ။

ကြီးမားသောကုဒ်များ၊ ရှုပ်ထွေးသော၊ စာကြည့်တိုက်များ၊ multi-class ကုဒ်များကို စတင်ရေးသားသည်နှင့်တပြိုင်နက်၊ တည်ဆောက်မှုစနစ်များနှင့် မှီခိုမှုများကို ဖြေရှင်းခြင်းမရှိဘဲ သင့်အတွက် ခက်ခဲကြောင်း သင်သဘောပေါက်လာမည်ဖြစ်သည်။ ၎င်းတို့သည် အဓိကအားဖြင့် Maven နှင့် Gradle တို့ဖြစ်သည်။ ၎င်းတို့သည် သင့်ပရောဂျက်သို့ စာကြည့်တိုက်များကို တစ်ကြောင်းတည်း တင်သွင်းခွင့်ပြုသည်။ ဆိုလိုသည်မှာ သင်သည် one-line xml ကိုရေးပြီး ပရောဂျက်ထဲသို့ စာကြည့်တိုက်များကို ထည့်သွင်းပါ။ ကောင်းမွန်သောစနစ်များ။ ၎င်းတို့သည် ခန့်မှန်းခြေအားဖြင့် တူညီသည်၊ Maven သို့မဟုတ် Gradle ကို အသုံးပြုပါ။

နောက်တစ်ခု - အချို့သောဗားရှင်းထိန်းချုပ်မှုစနစ်။ Git သည် လူကြိုက်များပြီး ကျူတိုရီရယ်များစွာရှိသောကြောင့် ကျွန်ုပ်အကြံပြုပါသည်။ လူတိုင်းနီးပါး Git ကိုအသုံးပြုကြသည်၊ ၎င်းသည်အေးမြသောအရာဖြစ်သည်၊ ၎င်းမရှိဘဲသင်မနေနိုင်ပါ။

တစ်မျိုးမျိုးသော ဖွံ့ဖြိုးတိုးတက်မှုပတ်ဝန်းကျင်။ IntelliJ Idea ကို အကြံပြုလိုပါတယ်။ ၎င်းသည် ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်ကို အလွန်အရှိန်မြှင့်ပေးသည်၊ သင့်အတွက် များစွာကူညီပေးသည်၊ သင့်အတွက် boilerplate code အားလုံးကိုရေးပေးသည်၊ ယေဘူယျအားဖြင့် ၎င်းသည် အေးမြသည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ဆလိုက်မှ လင့်ခ်များ- SQLZOO, habrapost

SQL ကျောထောက်နောက်ခံပြုသူများအကြောင်း အနည်းငယ်။ ဒီနေရာမှာ ရယ်စရာကောင်းတဲ့ ကိစ္စတစ်ခု ရှိခဲ့တယ်။ ကျွန်ုပ်၏ဒုတိယအလုပ်သင်အင်တာဗျူးမစမီ နှစ်ရက်အလိုတွင် HR မှမိန်းကလေးတစ်ဦးသည် ကျွန်ုပ်ကိုဖုန်းဆက်ပြီး နှစ်ရက်အတွင်း SQL နှင့် HTTP အကြောင်း ကျွန်ုပ်အား လေ့လာရန် လိုအပ်ကြောင်း ပြောကြားခဲ့ပါသည်။ ပြီးတော့ SQL ဒါမှမဟုတ် HTTP အကြောင်း ဘာမှ မသိသလောက်ပါပဲ။ ပြီးတော့ ဒီအမိုက်စားဆိုဒ်ကိုတွေ့ခဲ့တယ်- SQLZOO. SQL ကို 12 နာရီအတွင်း သင်ယူခဲ့တယ်၊ ဆိုလိုချင်တာက SQL syntax၊ SELECT queries တွေကို ဘယ်လိုရေးရမလဲ၊ JOIN စသဖြင့်ပေါ့။ အရမ်းမိုက်တဲ့ site ပါ၊ အဲဒါကို အထူးအကြံပြုလိုပါတယ်။ တကယ်တော့ 12 နာရီအတွင်းမှာ ငါအခုသိတဲ့အရာ 90% ကို သိလိုက်ရတယ်။

ဒေတာဘေ့စ်ဗိသုကာပညာကိုလည်း သိဖို့ကောင်းပါတယ်။ ၎င်းတို့သည် သော့များ၊ အညွှန်းများ၊ ပုံမှန်ပြုလုပ်ခြင်း အမျိုးအစားများဖြစ်သည်။ Habre တွင် ဤအကြောင်းအရာနှင့်ပတ်သက်သည့် ပို့စ်များစွာရှိသည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

Java တွင် SQL အပြင်၊ JPA ကဲ့သို့သော Object-relational mapping systems အမျိုးအစားများရှိသည်။ ကုဒ်တစ်ချို့ရှိတယ်။ ပထမနည်းလမ်းတွင် SQL ကုဒ်အချို့ရှိသည် - SELECT id name FROM info.users WHERE ID IN userIds။ အသုံးပြုသူများ ဒေတာဘေ့စ်မှ၊ ဇယားမှ ၎င်းတို့၏ ID များနှင့် အမည်များကို ရယူသည်။

ထို့နောက်တွင်၊ အခြေခံမှအရာဝတ္တုကို Java အရာဝတ္ထုအဖြစ်သို့ပြောင်းလဲပေးသောမြေပုံပါရှိချက်တစ်ခုရှိသည်။ ပြီးတော့ ဒီကုဒ်ကို အမှန်တကယ် အကောင်အထည်ဖော်တဲ့ အောက်မှာ တတိယနည်းလမ်းတစ်ခု ရှိပါတယ်။ ဤအရာအားလုံးကို JPA ကိုအသုံးပြု၍ အောက်တွင်ဖော်ပြထားသော စာကြောင်းတစ်ကြောင်းဖြင့် အစားထိုးနိုင်ပါသည်။ အတူတူပါပဲ - All ByIdIn ကိုရှာပါ။ ဆိုလိုသည်မှာ နည်းလမ်း၏အမည်ကိုအခြေခံ၍ ၎င်းသည် သင့်အတွက် SQL query တစ်ခုထုတ်ပေးသည်။

အရမ်းမိုက်တဲ့အရာ။ ငါကိုယ်တိုင် SQL ကို မသိတုန်းက JPA ကို သုံးတယ်။ ယေဘူယျအားဖြင့် သတိထားပါ။ SQL ကို လေ့လာဖို့ အရမ်းပျင်းနေတယ်ဆိုရင် ဒါဟာ ဘေးဥပဒ်ပါပဲ။ ယေဘုယျအားဖြင့်၊ မီး။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

နွေဦး။ Spring framework ဆိုတာကို ဘယ်သူကြားဖူးလဲ။ မင်းဘယ်နှစ်ယောက်ရှိတယ်ဆိုတာ မင်းမြင်လား။ အကြောင်းပြချက်မရှိဘဲ မဟုတ်ပါဘူး။ Spring သည် Java backend လစ်လပ်နေရာတိုင်း၏ လိုအပ်ချက်များတွင် ထည့်သွင်းထားသည်။ အဲဒါမရှိရင်၊ ကြီးမားတဲ့ ဖွံ့ဖြိုးတိုးတက်မှုမှာ ဘယ်မှာမှ မရှိနိုင်ပါဘူး။ နွေဦးဆိုတာ ဘာလဲ။ ပထမဆုံးအနေနဲ့၊ ဒါက Dependency Injection framework တစ်ခုပါ။ ဒီအကြောင်းလည်း ပါပါတယ်။ ပြောပြလိမ့်မယ်။ နောက်ပီ။ သို့သော် အတိုချုပ်အားဖြင့်၊ ဤအရာသည် အချို့သော အတန်းများ၏ မှီခိုမှုကို အခြားသူများထံ ပိုမိုလွယ်ကူစွာ တင်သွင်းနိုင်စေမည့် အရာဖြစ်သည်။ ဆိုလိုသည်မှာ မှီခိုမှုဆိုင်ရာ အသိပညာသည် ရိုးရှင်းပါသည်။

Spring Boot သည် သင့်ဆာဗာအက်ပလီကေးရှင်းကို ခလုတ်တစ်ခုတည်းဖြင့် လုပ်ဆောင်နိုင်စေမည့် Spring အပိုင်းတစ်ခုဖြစ်သည်။ သင်သည် THID သို့သွားကာ ခလုတ်အချို့ကို နှိပ်ပါ၊ ယခုအခါတွင် သင့်ဆာဗာအက်ပ်လီကေးရှင်းကို localhost 8080 တွင် စတင်လည်ပတ်နေပြီဖြစ်သည်။ ဆိုလိုသည်မှာ သင်သည် ကုဒ်တစ်ကြောင်းကို မရေးရသေးသော်လည်း ၎င်းသည် အလုပ်လုပ်နေပြီဖြစ်သည်။ အရမ်းမိုက်တဲ့အရာ။ တစ်ခုခုရေးရင် မီးတောက်။

နွေဦးဘောင်သည် အလွန်ကြီးမားသည်။ ၎င်းသည် သင်၏ဆာဗာအပလီကေးရှင်းကို ကောက်ယူရုံသာမက မှီခိုမှုထိုးသွင်းမှုကိုလည်း ဖြေရှင်းပေးသည်။ ၎င်းသည် သင့်အား REST API နည်းလမ်းများ ဖန်တီးခြင်းအပါအဝင် အရာများစွာကို လုပ်ဆောင်နိုင်စေပါသည်။ ဆိုလိုသည်မှာ သင်သည် နည်းလမ်းအချို့ကို ရေးသားခဲ့ပြီး Get mapping မှတ်ချက်ကို ၎င်းတွင် တွဲထားသည်။ ယခုတွင် သင့်ထံ Hello world ကို သင်ရေးပေးသည့် localhost တွင် နည်းလမ်းအချို့ရှိနေပြီဖြစ်သည်။ ကုဒ်မျဉ်းနှစ်ကြောင်းနဲ့ အလုပ်လုပ်ပါတယ်။ သိပ်ကောင်းတဲ့အရာပဲ။

Spring သည် စာရေးခြင်းစာမေးပွဲများကို ပိုမိုလွယ်ကူစေသည်။ ကြီးမားသော ဖွံ့ဖြိုးတိုးတက်မှုတွင် စမ်းသပ်ခြင်းမရှိဘဲ နည်းလမ်းမရှိပါ။ ကုဒ်ကို စမ်းသပ်ရန် လိုအပ်သည်။ ဤရည်ရွယ်ချက်အတွက်၊ Java တွင် အေးမြသောစာကြည့်တိုက်တစ်ခု JUnit 5 ရှိသည်။ ယေဘုယျအားဖြင့် JUnit ဖြစ်သော်လည်း နောက်ဆုံးဗားရှင်းမှာ ပဉ္စမမြောက်ဖြစ်သည်။ စမ်းသပ်ရန်အရာအားလုံး၊ အခိုင်အမာနှင့်အခြားအရာအားလုံးရှိသည်။

ပြီးတော့ အရမ်းကောင်းတဲ့ Mockito မူဘောင်တစ်ခုရှိတယ်။ သင့်တွင် စမ်းသပ်လိုသော လုပ်ဆောင်ချက်အချို့ရှိသည်ဟု မြင်ယောင်ကြည့်ပါ။ လုပ်ဆောင်ချက်သည် အလယ်တစ်နေရာတွင်၊ ဥပမာအားဖြင့် သင့် ID ဖြင့် VKontakte သို့ဝင်ရောက်ပြီး ID မှ VKontakte အသုံးပြုသူ၏ ပထမဆုံးနှင့် နောက်ဆုံးအမည်ကို လက်ခံရရှိခြင်းအပါအဝင် လုပ်ဆောင်ချက်အများအပြားကို လုပ်ဆောင်သည်။ စမ်းသပ်မှုများတွင် သင်သည် VKontakte မပါဝင်နိုင်သည်မှာ ထူးဆန်းပါသည်။ ဒါပေမယ့် သင်လုပ်ဆောင်နိုင်စွမ်းကို စမ်းသပ်ဖို့ လိုပါတယ်၊ ဒါကြောင့် သင်က Mockito ကိုသုံးပြီး ဒီအတန်းကို အတုခိုးပြီး အတုယူလုပ်ခဲ့တာပါ။

ID တစ်ခုနှင့်ထိုကဲ့သို့သောတောင်းဆိုမှုတစ်ခုသည်ဤအတန်းသို့ရောက်ရှိသောအခါ၎င်းသည်နောက်ဆုံးအမည်အချို့ ဥပမာ Vasya Pupkin ကိုပြန်ပေးသည်ဟုသင်ပြောလိမ့်မည်။ အလုပ်ဖြစ်မည်။ ဆိုလိုသည်မှာ mok one class အတွက် လုပ်ဆောင်နိုင်စွမ်းအားလုံးကို သင်စမ်းသပ်မည်ဖြစ်သည်။ အရမ်းမိုက်တဲ့အရာ။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ဆလိုက်မှ လင့်ခ်

ဒီဇိုင်းပုံစံများ။ ဒါဘာလဲ? ဤအရာများသည် ဖွံ့ဖြိုးတိုးတက်မှုတွင် ဖြစ်ပေါ်လာသည့် ပုံမှန်ပြဿနာများကို ဖြေရှင်းရန်အတွက် နမူနာပုံစံများဖြစ်သည်။ ဖွံ့ဖြိုးတိုးတက်မှုတွင်၊ တူညီသော သို့မဟုတ် အလားတူပြဿနာများ မကြာခဏ ပေါ်ပေါက်လာပါက တစ်နည်းနည်းဖြင့် ကောင်းစွာဖြေရှင်းနိုင်မည်ဖြစ်သည်။ ထို့ကြောင့်၊ လူများသည် ဤပြဿနာများကိုဖြေရှင်းနည်းအတွက် အကောင်းဆုံးအလေ့အကျင့်များ၊ အချို့သော ပုံစံများဖြင့် ပေါ်လာကြသည်။

refactoring.guru တွင် ရေပန်းအစားဆုံး ပုံစံများပါသည့် ဝဘ်ဆိုဒ်တစ်ခု ရှိပါသည်။ ၎င်းကို သင်ဖတ်နိုင်သည်၊ မည်သည့်ပုံစံများ ရှိသည်ကို ရှာဖွေပါ၊ သီအိုရီများစွာကို ဖတ်ပါ။ ပြဿနာက လက်တွေ့မှာ အသုံးမဝင်တာဘဲ။ တကယ်တော့ အလေ့အကျင့်မရှိသော ပုံစံများသည် အထူးအသုံးမဝင်ပေ။

Singletone သို့မဟုတ် Builder ကဲ့သို့သော ပုံစံအချို့အကြောင်း သင်ကြားလိမ့်မည်။ ဒီစကားတွေကို ဘယ်သူကြားဖူးလဲ။ လူတွေအများကြီး။ သင်ကိုယ်တိုင် အကောင်အထည်ဖော်နိုင်တဲ့ ရိုးရှင်းတဲ့ ပုံစံတွေရှိပါတယ်။ သို့သော် ပုံစံအများစု- ဗျူဟာ၊ စက်ရုံ၊ မျက်နှာစာ - ၎င်းတို့ကို မည်သည့်နေရာတွင် အသုံးချရမည်ကို မရှင်းလင်းပါ။

အခြားသူ၏ကုဒ်တွင် ဤပုံစံကို အသုံးပြုသည့်နေရာကို လက်တွေ့တွင် သင်မတွေ့မချင်း၊ ၎င်းကို သင်ကိုယ်တိုင် အသုံးချနိုင်မည်မဟုတ်ပေ။ ထို့ကြောင့် ပုံစံများဖြင့် လေ့ကျင့်ရန် အလွန်အရေးကြီးပါသည်။ refactoring.guru တွင် ၎င်းတို့အကြောင်းဖတ်ရုံမျှမက အလွန်အထောက်အကူဖြစ်ပေသည်၊ သို့သော် ၎င်းသည် သေချာပေါက်လုပ်ဆောင်ရကျိုးနပ်ပါသည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

အဘယ်ကြောင့် ပုံစံများ လိုအပ်သနည်း။ သင့်တွင် သတ်မှတ်ထားသော User class တစ်ခုရှိသည် ဆိုကြပါစို့။ ၎င်းတွင် Id နှင့် Name တစ်ခုရှိသည်။ အသုံးပြုသူတိုင်းတွင် Id နှင့် Name တစ်ခုစီရှိရပါမည်။ ဘယ်ဘက်ထိပ်က စာသင်ခန်း။

User ကို အစပြုဖို့ နည်းလမ်းတွေက ဘာတွေလဲ။ - constructor သို့မဟုတ် setter နှစ်မျိုးရှိသည်။ ချဉ်းကပ်မှုနှစ်ခုလုံးရဲ့ အားနည်းချက်တွေက ဘာတွေလဲ။

တည်ဆောက်သူ။ အသုံးပြုသူအသစ် (၇၊ "ဘွန်း")၊ အဆင်ပြေပါတယ်။ အခု ကျွန်တော်တို့မှာ User class မရှိဘူး၊ ဒါပေမယ့် ဂဏန်းအကွက် ခုနစ်ခုပါတဲ့ အခြားတစ်ခုလို့ ဆိုကြပါစို့။ ဆက်တိုက်နံပါတ်ခုနစ်ခုပါရှိသော constructor တစ်ခုရှိလိမ့်မည်။ ဤကိန်းဂဏာန်းများသည် မည်ကဲ့သို့ဖြစ်ပြီး ၎င်းတို့အနက်မှ မည်သည့်ပစ္စည်းဥစ္စာကို ပိုင်ဆိုင်ကြောင်း ရှင်းရှင်းလင်းလင်းမသိရပါ။ ဒီဇိုင်နာက မတော်ဘူး။

ဒုတိယရွေးချယ်မှုမှာ setter ဖြစ်သည်။ သင်ရှင်းရှင်းလင်းလင်းရေးထားသည်- setId(7), setName("Bond")။ ဘယ်နယ်ပယ်မှာ ဘယ်ဥစ္စာကို ပိုင်ဆိုင်တယ်ဆိုတာ သင်နားလည်ပါတယ်။ ဒါပေမယ့် setter မှာ ပြဿနာရှိတယ်။ ပထမဦးစွာ၊ သင်သည် တစ်စုံတစ်ခုကို တာဝန်ပေးရန် မေ့သွားနိုင်ပြီး၊ ဒုတိယအနေနှင့်၊ သင်၏အရာဝတ္ထုသည် ပြောင်းလဲနိုင်သော အသွင်အပြင်ဖြစ်လာသည်။ ၎င်းသည် ချည်မျှင်မလုံခြုံသည့်အပြင် ကုဒ်၏ဖတ်နိုင်မှုကို အနည်းငယ်လျော့စေသည်။ အဲဒါကြောင့် လူတွေက မိုက်တဲ့ပုံစံ - Builder ပေါ်လာတယ်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ဒါက ဘာအကြောင်းလဲ။ ချဉ်းကပ်နည်း နှစ်ခုစလုံး၏ အားသာချက်များ—setter နှင့် constructor—ကို တစ်ခုတည်းတွင် ပေါင်းစပ်ရန် ကြိုးစားကြပါစို့။ သတ်မှတ်သူအပေါ်အခြေခံ၍ ၎င်းကိုယ်တိုင်တည်ဆောက်မည့် Id နှင့် Name အကွက်များပါရှိမည့် အရာဝတ္ထုတစ်ခုဖြစ်သည့် Builder နှင့် ၎င်းသည် သင့်အား ကန့်သတ်ချက်အားလုံးနှင့်အတူ သုံးစွဲသူအသစ်ကို ပြန်ပေးမည့် Build နည်းလမ်းတစ်ခုရှိမည်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် မပြောင်းလဲနိုင်သော အရာဝတ္ထုတစ်ခုနှင့် setter တစ်ခုကို ရရှိပါသည်။ အေးပါ!

ပြဿနာတွေက ဘာတွေလဲ။ ဤတွင် ကျွန်ုပ်တို့တွင် ဂန္တဝင် Builder ရှိသည်။ ပြဿနာမှာ အချို့သော နယ်ပယ်များတွင် စစ်ဆေးရန် မေ့ကျန်နေနိုင်သောကြောင့် ဖြစ်သည်။ ID ကိုသွားရောက်ကြည့်ရှုရန်မေ့သွားပါက၊ ဤကိစ္စတွင် Builder တွင် int အမျိုးအစားသည် ပျက်ပြယ်ခြင်းမရှိသောကြောင့် ၎င်းကို သုညသို့ အစပြုထားသည်။ အကယ်၍ ကျွန်ုပ်တို့သည် အမည် “ဘွန်း” ကို ပြုလုပ်ပြီး ID ရုံးသို့ သွားရောက်ရန် မေ့သွားပါက၊ ကျွန်ုပ်တို့တွင် id “0” နှင့် “ဘွန်း” အမည်ရှိသော အသုံးပြုသူအသစ်တစ်ဦး ရရှိမည်ဖြစ်သည်။ မအေးဘူး။

ဒါကို တိုက်ဖို့ ကြိုးစားကြပါစို့။ Builder တွင် ကျွန်ုပ်တို့သည် int သို့ int သို့ ပြောင်းလဲသွားမည်ဖြစ်ပြီး ၎င်းသည် nullable ဖြစ်စေရန်။ အခုတော့ အရာအားလုံးက ကောင်းပါတယ်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

"ဘွန်း" အမည်ဖြင့် အသုံးပြုသူအား ဖန်တီးရန် ကြိုးစားပါက ၎င်း၏ ID ကို ထည့်သွင်းရန် မေ့သွားပါက၊ ID သည် nullable မဟုတ်သောကြောင့်၊ Builder တွင် null၊ အတိအကျ pointer ခြွင်းချက်ဖြစ်သောကြောင့် null pointer ခြွင်းချက်တစ်ခု ရရှိပါမည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ဒါပေမယ့် နာမည်ထည့်ဖို့ မေ့နေသေးတဲ့အတွက် object replay ကို null လို့ သတ်မှတ်လိုက်ပါတယ်။ ယခု ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏အရာဝတ္တုကို Builder မှတည်ဆောက်သောအခါ၊ ၎င်းသည် အကွက်သည် ပျက်ပြယ်ခြင်းမရှိကြောင်း စစ်ဆေးသည်။ ဒါတွေအားလုံးမဟုတ်ဘူး။

နောက်ဆုံး ဥပမာကို ကြည့်ရအောင်။ ဤကိစ္စတွင်၊ ကျွန်ုပ်တို့သည် ID runtime တွင် null ကို တစ်နည်းတစ်ဖုံ ထည့်ပါက၊ သင်သည် ၎င်းကို ပြုလုပ်ခဲ့ကြောင်း ချက်ချင်းသိရခြင်းသည် ကောင်းပါတယ်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

အသုံးပြုသူဖန်တီးမှုတွင် အမှားအယွင်းတစ်ခုကို စွန့်ပစ်ရန် လိုအပ်သော်လည်း ID တွင် null ဟု သတ်မှတ်သည့်အခါတွင်၊ ထို့ကြောင့် Builder တွင် ကျွန်ုပ်တို့သည် setter Integer ကို int သို့ပြောင်းမည်ဖြစ်ပြီး၊ သူက null ဖြစ်သည်ဟု ချက်ချင်းကျိန်ဆိုပါမည်။

တိုတိုပြောရရင် ဘာအချက်လဲ။ ရိုးရှင်းသော Builder ပုံစံတစ်ခုရှိသည်၊ သို့သော် ၎င်း၏အကောင်အထည်ဖော်မှုတွင်ပင် ပရိယာယ်အချို့ပါရှိသည်၊ ထို့ကြောင့် မတူညီသောပုံစံများ၏ အကောင်အထည်ဖော်မှုများကို ကြည့်ရှုရန် အလွန်ကောင်းမွန်ပါသည်။ ပုံစံတစ်ခုစီတွင် အကောင်အထည်ဖော်မှု ဒါဇင်များစွာရှိသည်။ ဒါတွေအားလုံးက အရမ်းစိတ်ဝင်စားဖို့ကောင်းတယ်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ထုတ်လုပ်မှုကုဒ်တွင် Builder ကို ကျွန်ုပ်တို့ မည်သို့ရေးမည်နည်း။ ဤတွင် ကျွန်ုပ်တို့၏အသုံးပြုသူဖြစ်သည်။ ကျွန်ုပ်တို့သည် Lombok စာကြည့်တိုက်မှ Builder လည်ပတ်မှုကို ၎င်းနှင့် ပူးတွဲလုပ်ဆောင်ပြီး ၎င်းသည် ကျွန်ုပ်တို့အတွက် Builder တစ်ခုကို ဖန်တီးပေးပါသည်။ ဆိုလိုသည်မှာ၊ ကျွန်ုပ်တို့သည် မည်သည့်ကုဒ်ကိုမျှ မရေးတတ်သော်လည်း Java သည် ဤအတန်းတွင် Builder ရှိသည်ဟု ထင်နေပြီး၊ ၎င်းကို ဤကဲ့သို့ ခေါ်နိုင်သည်။

Java တွင် ဘွိုင်လာပြားရေးခြင်းကို ရှောင်ရှားနိုင်သည့် အေးမြသော စာကြည့်တိုက်ဖြစ်သည့် Lombok အပါအဝင် အရာအားလုံးနီးပါးအတွက် စာကြည့်တိုက်များ ရှိကြောင်း ကျွန်ုပ်ပြောခဲ့ပြီးဖြစ်သည်။ တည်ဆောက်သူ၊ ရယူပါ။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

Patterns များသည် ဗိသုကာလက်ရာများဖြစ်နိုင်သည် - လူတန်းစားတစ်ခုတည်းအတွက်သာမက စနစ်တစ်ခုလုံးနှင့်လည်း သက်ဆိုင်ပါသည်။ စနစ်ဒီဇိုင်းတွင် အလွန်ကောင်းမွန်သော နိယာမတစ်ခု ရှိသည်- Single Responsibility Principle။ သူဘာတွေပြောနေတာလဲ။ အတန်းတစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်လုပ်ဆောင်နိုင်စွမ်းအချို့အတွက် တာဝန်ယူရမည်ဟူသောအချက်ဖြစ်သည်။ ဤကိစ္စတွင်၊ ကျွန်ုပ်တို့တွင် သုံးစွဲသူများ၊ JSON အရာဝတ္ထုများနှင့် ဆက်သွယ်ပေးသည့် Controller တစ်ခုရှိသည်။ JSON အရာဝတ္ထုများကို Java အပလီကေးရှင်းဖြင့် အလုပ်လုပ်မည့် မော်ဒယ်များအဖြစ်သို့ ပြောင်းပေးသည့် Facade ရှိသည်။ ဤမော်ဒယ်များနှင့် အလုပ်လုပ်သော ရှုပ်ထွေးသောယုတ္တိရှိသော ဝန်ဆောင်မှုတစ်ခုရှိပါသည်။ ဤမော်ဒယ်များကို ဒေတာဘေ့စ်ထဲသို့ ထည့်သွင်းပြီး ဒေတာဘေ့စ်မှ ပြန်လည်ရယူသည့် Data Access Object တစ်ခုရှိသည်။ ပြီးတော့ ဒေတာဘေ့စ်ကိုယ်တိုင်လည်း ရှိတယ်။ တစ်နည်းဆိုရသော် ၎င်းသည် အတန်းတစ်ခုတည်းတွင် မဟုတ်ဘဲ ကွဲပြားသော အတန်းငါးခုကို ပြုလုပ်နေပြီး ၎င်းသည် အခြားပုံစံတစ်ခုဖြစ်သည်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

Java ကို သင်ပိုမိုလေ့လာသင်ယူပြီးသည်နှင့်တစ်ပြိုင်နက် ဒေတာဘေ့စ်တစ်ခုပါရှိမည်ဖြစ်ပြီး၊ အခြား APIs များနှင့်အလုပ်လုပ်ကာ သင်၏ဆာဗာအပလီကေးရှင်းကို REST API ဖောက်သည်များထံပြသမည့် သင့်ကိုယ်ပိုင်ပရောဂျက်ကို ရေးသားခြင်းသည် ကောင်းပါတယ်။ ဤအရာသည် သင်၏ကိုယ်ရေးရာဇဝင်တွင် ထည့်သွင်းရန် ကောင်းမွန်သောအရာဖြစ်ပေလိမ့်မည်၊ ၎င်းသည် သင်၏ပညာရေးအတွက် အေးချမ်းသောအဆုံးသတ်တစ်ခုဖြစ်လိမ့်မည်။ ဒီနည်းနဲ့သွားပြီးတော့ အလုပ်ရနိုင်ပါတယ်။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

ဤသည်မှာ ကျွန်ုပ်၏ ဆာဗာအပလီကေးရှင်း၏ ဥပမာတစ်ခုဖြစ်သည်။ ဒုတိယနှစ်မှာ ယောက်ျားလေးတွေနဲ့ တွဲရေးတယ်။ ပွဲများကျင်းပရန်အတွက် မိုဘိုင်းအက်ပလီကေးရှင်းကို ရေးသားခဲ့ကြသည်။ ထိုနေရာတွင် အသုံးပြုသူများသည် VKontakte မှတစ်ဆင့် လော့ဂ်အင်ဝင်နိုင်သည်၊ မြေပုံပေါ်တွင် အမှတ်များထားရန်၊ အဖြစ်အပျက်များဖန်တီးရန်၊ ၎င်းတို့၏သူငယ်ချင်းများကို ၎င်းတို့ထံ ဖိတ်ခေါ်ခြင်း၊ အဖြစ်အပျက်များ၏ ပုံများကို သိမ်းဆည်းခြင်းစသည်ဖြင့် လုပ်ဆောင်နိုင်သည်။

ပရောဂျက်မှာ ငါဘာလုပ်ခဲ့လဲ။ SQL ကိုအသုံးမပြုဘဲ Spring Boot တွင်ဆာဗာအပလီကေးရှင်းတစ်ခုရေးခဲ့သည်။ ငါသူ့ကိုမသိဘူး JPA သုံးတယ်။ ဘာတွေလုပ်နိုင်ခဲ့လဲ။ OAuth-2 မှတစ်ဆင့် VK သို့ ဝင်ရောက်ပါ။ အသုံးပြုသူ၏ တိုကင်ကိုယူပါ၊ ၎င်းနှင့်အတူ VK သို့သွားပါ၊ ၎င်းသည် အမှန်တကယ်အသုံးပြုသူဖြစ်ကြောင်း စစ်ဆေးပါ။ VKontakte မှတစ်ဆင့် သုံးစွဲသူများအကြောင်း အချက်အလက်များ ရယူပါ။ အချက်အလက်များကို ဒေတာဘေ့စ်တစ်ခုတွင်သာမက JPA မှတစ်ဆင့်လည်း သိမ်းဆည်းနိုင်ခဲ့သည်။ ဓာတ်ပုံများနှင့် အခြားဖိုင်များကို ကွန်ပျူတာမှတ်ဉာဏ်တွင် ကျွမ်းကျင်စွာ သိမ်းဆည်းပြီး ဒေတာဘေ့စ်တွင် ၎င်းတို့ထံသို့ လင့်ခ်များကို သိမ်းဆည်းပါ။ ဒေတာဘေ့စတွင် CLOB အရာဝတ္ထုများ ရှိနေကြောင်း ထိုအချိန်တွင် ကျွန်ုပ်မသိခဲ့သဖြင့် ဤနည်းအတိုင်း လုပ်ခဲ့ပါသည်။ သုံးစွဲသူများ၊ ကလိုင်းယင့်အပလီကေးရှင်းများအတွက် REST API တစ်ခုရှိခဲ့သည်။ အခြေခံလုပ်ဆောင်နိုင်စွမ်းအတွက် ယူနစ်စမ်းသပ်မှုများရှိခဲ့သည်။

[…] ကျွန်ုပ်၏ အောင်မြင်သော Java ကို လေ့လာခြင်း၏ နမူနာလေးတစ်ခု။ တက္ကသိုလ်ပထမနှစ်မှာ C# ကို သင်ကြားခဲ့ပြီး OOP ပရိုဂရမ်းမင်းကို နားလည်သဘောပေါက်ခဲ့ပါတယ် - ဘယ်အတန်းတွေ၊ အင်တာဖေ့စ်တွေ၊ abstraction တွေလိုအပ်သလဲ၊ ဘာကြောင့်လိုအပ်တာလဲ။ ဒါဟာငါ့ကိုအများကြီးကူညီပေးခဲ့ပါတယ်။ အဲဒါမရှိရင် Java သင်ယူဖို့က တော်တော်ခက်ခဲပါတယ်၊ ဘာကြောင့် သင်တန်းတွေ လိုအပ်တယ်ဆိုတာ ရှင်းရှင်းလင်းလင်း မသိရပါဘူး။

Java ကို ဘာကြောင့် သင်ယူပြီး အဲဒါကို ထိထိရောက်ရောက် လုပ်ရမလဲ။ Yandex အစီရင်ခံစာ

တက္ကသိုလ် ဒုတိယနှစ်မှာ သူတို့ Java core ကို ထပ်သင်ပေးပေမယ့် အဲဒီမှာ မရပ်ဘဲ Spring ကို ကိုယ်တိုင်သွားလေ့လာပြီး အထက်မှာပြောခဲ့တဲ့ ကျွန်တော့်ပရောဂျက်ကို သင်တန်းစာရွက် ရေးခဲ့ပါတယ်။ ဒါတွေအားလုံးနဲ့ ကျွန်တော် Yandex မှာ အလုပ်သင်သွားခဲ့ပြီး အင်တာဗျူးဖြေပြီး Yandex.Market ကို ဝင်ခဲ့တယ်။ အဲဒီမှာ Beru အတွက် နောက်ကွယ်ကနေ ရေးခဲ့တယ်၊ ဒါက ကျွန်တော်တို့ရဲ့ စျေးကွက်နဲ့ Yandex.Market ကိုယ်တိုင်အတွက်ပါ။

အဲဒီနောက် လွန်ခဲ့တဲ့ ခြောက်လလောက်က တူညီတဲ့ Market ထဲမှာ တခြားအဖွဲ့ကို ပြောင်းရွှေ့ခဲ့တယ်။ ကျွန်ုပ်တို့သည် စီးပွားရေးလုပ်ဖော်ကိုင်ဖက်များအတွက် ခွဲခြမ်းစိတ်ဖြာမှုပြုလုပ်ပါသည်။ ကျွန်ုပ်တို့သည် ခွဲခြမ်းစိတ်ဖြာမှုဆိုင်ရာ ပလပ်ဖောင်းတွင် ရှိနေသည်၊ ကျောထောက်နောက်ခံတွင် ကျွန်ုပ်တို့ သုံးဦးရှိပါသည်၊ ထို့ကြောင့် ကျွန်ုပ်တွင် ပရောဂျက်အပေါ် သြဇာလွှမ်းမိုးမှု အလွန်များပြားပါသည်။ တကယ်ကို စိတ်ဝင်စားဖို့ကောင်းတယ်။ ဆိုလိုသည်မှာ၊ ကျွန်ုပ်တို့သည် စျေးကွက်တွင် အမှန်တကယ် ဒေတာကို ပေးဆောင်သည် - အရောင်းအ၀ယ်သည် အဘယ်အမျိုးအစား၊ မည်သည့်မော်ဒယ်များတွင်၊ စီးပွားရေးလုပ်ဖော်ကိုင်ဖက်များ၊ နာမည်ကြီးကုမ္ပဏီများအတွက် ဖြစ်သည်။ ပြီးတော့ ငါတို့သုံးယောက်ပဲရှိတယ်၊ ငါတို့ကဒီကုဒ်ရေးတယ်၊ အရမ်းမိုက်တယ်။

ကျေးဇူးတင်ပါသည်! အသုံးဝင်သောလင့်ခ်များ
- "Java 8. Beginner's Guide".
- ဒေတာဖွဲ့စည်းပုံများ.
- SQLZOO.
- ဒေတာဘေ့စ်ပုံမှန်ပြုလုပ်ခြင်း။.
- ဒီဇိုင်းပုံစံများ.
- ဒီဇိုင်းပုံစံ.
- သန့်ရှင်းသော Code ကို.
- ထိရောက်သော Java.

source: www.habr.com

မှတ်ချက် Add