Hammaga salom, JavaRush jamoasi. Bugun biz disk raskadrovka haqida gaplashamiz: bu nima va Intellij IDEA-da qanday disk raskadrovka qilish kerak. Maqola Java Core haqida minimal ma'lumotga ega bo'lgan odamlar uchun mo'ljallangan. Kutubxonalarni nashr qilish uchun ramkalar yoki murakkab jarayonlar bo'lmaydi. Oson yurish. Shunday qilib, o'zingizni qulay his qiling va boshlaylik!
hujjatlariga asoslanib , biz quyidagilarni o'qiymiz: kutilgan xatti-harakatlar - nektar yig'iladigan barcha gullardan ( ikki barobar qiymat sifatida) asalning yarmiga teng miqdorda asal yig'iladi. yig'ilgan nektar. Loyihada quyidagi sinflar mavjud:
faylida nektar 2 dan 1 gacha nisbatda asalga aylanishi haqida yozilgan:
Biznes-tahlilchi bilan bog'langanimizdan so'ng, biz hujjat README faylida xatolik bor va uni yangilash kerak degan xulosaga keldik . README faylini yangilaymiz:
markazidagi maqolalarni aqlli ko'rinish bilan o'qishni davom ettirishimiz mumkin :)
Nima uchun Debug kerak?
Keling, darhol aniqlik kiritaylik: xatosiz kod yo'q ... Hayot shunday ishlaydi. Shuning uchun, agar kod biz kutgandek ishlamasa, biz darhol oqsoqlanmasligimiz va hamma narsadan voz kechmasligimiz kerak. Lekin nima qilish kerak? Albatta,System.out.println
iloji boricha ko'rsatma berishingiz va keyin xato topasiz degan umidda terminaldagi chiqishni ko'rib chiqishingiz mumkin. Shunday bo'lsa-da, bu mumkin ... va ular buni qiladilar va ular buni jurnallar yordamida ehtiyotkorlik bilan bajaradilar (bu haqda bu erda o'qishingiz mumkin ). Ammo agar kodni mahalliy mashinada ishga tushirish mumkin bo'lsa, Debug dan foydalanish yaxshidir . Darhol shuni ta'kidlashni istardimki, ushbu maqolada biz Intellij IDEA ichidagi loyihani disk raskadrovka qilishni ko'rib chiqamiz. Agar siz masofaviy disk raskadrovka haqida o'qishga qiziqsangiz, bu erda bizning resursimizdagi maqola .
Debug nima
Nosozliklarni tuzatish - bu kodni tuzatish (tekshirish) jarayoni bo'lib, uni bajarish paytida siz belgilangan joyda to'xtashingiz va bajarilish jarayonini kuzatishingiz mumkin. Muayyan joyda dasturning holatini tushuning. Bu xuddi hayotni to'xtatib, hamma narsaga tashqaridan qarashga o'xshaydi. Ajoyib, to'g'rimi? Bizning maqsadimiz - Intellij IDEA-dan foydalanib ilovalarni disk raskadrovka qilishni tez va oson o'rganishdir.Nosozliklarni tuzatishni boshlash uchun nima kerak
Men bepul maslahat beraman: maqolani o'qiyotganingizda, bu erda tasvirlangan hamma narsani bajaring, xayriyatki, buning uchun hamma narsa mavjud. Nima kerak:- Intellij IDEA ishlab chiqish muhiti versiyasi 2019.3.1 va undan yuqori. Agar kimdirda yo'q bo'lsa, uni yuklab olishingiz mumkin bo'lgan havola . Jamiyat nashrini yuklab oling, chunki men bundan foydalanaman.
- Loyihani GitHub'dan klonlash va IDEA orqali import qilish.
Bir oz nazariya ... Men va'da beraman: D
Nosozliklarni tuzatishni biroz boshlash uchun siz breakPoint nima ekanligini tushunishingiz va boshlashingiz kerak bo'lgan bir nechta tezkor tugmalarni tushunishingiz kerak. BreakPoint - bu ilova to'xtatilishi kerak bo'lgan joy yoki holatni ko'rsatadigan maxsus marker. To'xtash nuqtasini chap yon panelda sichqonchaning chap tugmachasini bosish yoki kod joylashgan joyni bosish va Ctrl + F8 tugmalarini bosib o'rnatishingiz mumkin . To'xtash nuqtalari uch xil bo'ladi: chiziq belgisi, o'zgaruvchan belgi va usul belgisi. Bu shunday ko'rinadi:-
Har bir qator:
agar ifodada lambda bo'lsa, IDEA sizga tanlovni taklif qiladi - ifodani butun qatorga yoki aniqrog'i lambdaga qo'yish:
-
Usul bo'yicha:
-
Har bir sinf uchun
- Bee.java:24 - 24-qatordagi Bee sinfida
- Main.java:14 - 14-qatordagi Asosiy sinfda
Kelinglar, disk raskadrovkaning yovvoyi joylariga o'taylik
Men irsiy asalarichi bo'lganim uchun, disk raskadrovka taqdimoti uchun asalarilar tomonidan nektar yig'ish, nektarni asalga qayta ishlash va uyadan asal olish jarayonini tasvirlaydigan loyiha yaratdim. Loyihaning ildizida joylashgan README faylining- Bee - oddiy ishchi ari;
- BeeQueen - malika ari;
- BeeHive - asalari uyasi;
- HoneyPlant - asal yig'iladigan asal o'simlik;
- Asosiy -
public static void main()
loyiha boshlanadigan usul qaerda joylashgan.
main()
, u nafaqat asal miqdori hisoblanmaydi, balki xato ham paydo bo'ladi ... U erda nima noto'g'ri ekanligini ko'rishingiz kerak. Pastki o'ng burchakdagi stek izidan biz HoneyPlant.java:20
, da RuntimeException tashlanganligini ko'rishimiz mumkin: Bu aynan bizning holatimiz: RuntimeException mavjud, keling, yuqorida tavsiflanganidek, bunday istisno uchun qidiruvni qo'shamiz va main()
usulni ishga tushiramiz. disk raskadrovka rejimi. Buni amalga oshirish uchun Intellij IDEA-dagi yashil uchburchak o'qni usuldan oldin bosing main()
: va biz ushbu belgi bilan istisno ishga tushirilgunga qadar to'xtatilgan dasturni olamiz.To'liq ma'lumot olish uchun Nosozliklarni tuzatish bo'limiga qarash kerak. U ilovaning ushbu qismida mavjud bo'lgan barcha o'zgaruvchilarni ko'rsatadigan Variables ga ega:
- nektar = 1,0;
- nektar sig'imi = -1,0.
if ( nectar == 0 ) {
return 0;
}
Lekin diqqatga sazovor tomoni shundaki, u noto'g'ri o'zgaruvchini tekshirmoqda ... va bu koddagi xato. NectarCapacity o'zgaruvchisida bo'lgan guldagi nektar qiymatini tekshirish o'rniga , dastur usulga kiradigan nektar qiymatini tekshiradi va ular nektardan olmoqchi bo'lgan miqdordir. Mana, birinchi xato! Shuning uchun biz uni to'g'ri qo'yamiz va ifodani olamiz:
if ( nectarCapacity == 0) {
return 0;
}
Keyinchalik, biz main()
usulni oddiy rejimda ishga tushiramiz (Run `Main.main()`)
va boshqa xatolik yo'q, dastur ishladi: Ilova ishladi va javob berdi: "33,0 asal 2 asal o'simlikidan 7 ta asalari tomonidan ishlab chiqarilgan" Hammasi yaxshi bo'lar edi, lekin javob: noto'g'ri... Hammasi chunki README ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
Asosiy usuldan ko'rinib turibdiki, ikkita asal o'simligi, mos ravishda 30 va 40 birlik nektar bor, shuning uchun oxirida siz 35 birlik asal olishingiz kerak. Va u yozadi 33. Qolgan ikkita birlik qaerga ketdi? ... Endi biz bilib olamiz! Main.main()
Buni amalga oshirish uchun 28-satrdagi usulda to'xtash nuqtasini qo'yishimiz kerak , u bajariladi beeHive.populateHoney()
va main
usulni Debug rejimida ishga tushiramiz: Keling, ushbu nuqtani batafsil ko'rib chiqaylik. Dastur 28-qatorni bajarishdan oldin to'xtadi. Pastki qismida biz ishlayotgan dasturdagi barcha ma'lumotlarni tavsiflovchi Debug bo'limini ko'ramiz. O'zgaruvchilar qismi, yuqorida aytib o'tilganidek, ilovaning ushbu qismidan foydalanish mumkin bo'lgan barcha o'zgaruvchilar va ob'ektlarni o'z ichiga oladi. Ramkalar qismi dasturning bosqichlarini ko'rsatadi, siz oldingi bosqichga qarashingiz va barcha mahalliy ma'lumotlarni olishingiz mumkin. Dasturning ishini davom ettirish uchun quyida ko'rsatilgandek F9 tugmasini yoki yashil belgini bosishingiz mumkin: Dasturni to'xtatish uchun qizil kvadratni bosishingiz kerak: Ilovani disk raskadrovka rejimida qayta ishga tushirish uchun o'qni bosishingiz kerak: Keyinchalik, dastur bo'ylab bosqichma-bosqich o'tish uchun siz ikkita tugmachadan foydalanishingiz mumkin:
- F8 - kod bo'limidan o'ting va ichki usullarga kirmang;
- F7 - kod bo'limidan o'ting va ichki usullarni kiriting.
beeHive.populateHoney()
biz F7 tugmasini bosishimiz kerak va biz davom etamiz: Keyinchalik, biz F8 tugmasidan foydalanib , ushbu usuldan oxirigacha disk raskadrovka rejimidan o'tamiz va ushbu usulda nima sodir bo'lishini tasvirlaymiz:
- 25-qator - Stream API barcha asalarilardan asal yig'ish uchun ishlatiladi;
- 26-qator - mavjudiga asal qo'shiladi;
- 27-qator - malika uchun 2 birlik asal ajratilgan;
- 28-qator - bu ikki birlik asalning umumiy miqdoridan chiqariladi;
- 29-qator - malika bu asalni yeydi.
## Documentation
Presentation based on honey getting process.
**Note**:
* 1 honey point = 2 nectar points
* 2 honey point queen bee eats every time when beehive populates the honey.
Va hamma narsa: topilgan barcha xatolar tuzatildi, biz xotirjamlik bilan qahva ichishni va JavaRush Xulosa qiling
Ushbu maqolada biz buni aniqladik:- xatolarsiz ish yo'q va disk raskadrovka ularni hal qilishning ajoyib usuli;
- uzilish nuqtasi nima va uning qanday turlari mavjud;
- istisno to'xtash nuqtasini qanday sozlash kerak;
- Nosozliklarni tuzatish rejimida qanday harakat qilish kerak.
O'qish uchun maqola
- Maqolada foydalanilgan loyiha
- IntelliJ IDEA va Debug: sho'ng'in emas, balki snorkeling
- Dasturlash haqidagi achchiq haqiqat...
- Rasmiy hujjatlar
- To'xtash nuqtalarining turlari. Rasmiy hujjatlar
- Qanday qilib intervyu testi ochiq manba kutubxonasiga aylandi
- Aviachiptalar narxini monitoring qilish tizimini yaratish: bosqichma-bosqich qo'llanma [1-qism]
- Skyscanner API uchun mijoz yaratish va uni jCenter va Maven Central-da nashr qilish bo'yicha qo'llanma [1-qism]
- Jurnal: nima, qanday, qaerda va nima bilan?
GO TO FULL VERSION