Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Java txawv ntawm lwm yam lus nrov li cas? Vim li cas Java yuav tsum yog thawj hom lus kawm? Cia peb tsim ib txoj kev npaj uas yuav pab koj kawm Java ob qho tib si los ntawm kos thiab los ntawm kev siv cov kev txawj programming hauv lwm hom lus. Cia peb teev qhov sib txawv ntawm kev tsim cov cai tsim khoom hauv Java thiab tsim ua lwm hom lus. Mikhail Zatepyakin nyeem tsab ntawv ceeb toom no ntawm lub rooj sib tham rau cov neeg koom nrog yav tom ntej kev xyaum ua haujlwm Yandex thiab lwm tus pib tsim tawm - Java Junior ntsib.


- Nyob zoo sawv daws, kuv lub npe yog Misha. Kuv yog tus tsim tawm los ntawm Yandex.Market, thiab hnub no kuv yuav qhia koj tias vim li cas thiaj kawm Java thiab yuav ua li cas thiaj li ua tau zoo. Koj tuaj yeem nug cov lus nug uas tsim nyog: vim li cas kuv thiaj yuav qhia zaj dab neeg no, thiab tsis yog qee tus tsim tawm muaj zog nrog ntau xyoo ntawm kev paub? Qhov tseeb yog tias kuv tus kheej tau kawm Java tsis ntev los no, kwv yees li ib xyoos thiab ib nrab dhau los, yog li kuv tseem nco ntsoov tias nws zoo li cas thiab muaj qhov cuam tshuam dab tsi.

Ib xyoos dhau los kuv tau txais kev xyaum ua haujlwm ntawm Yandex.Market. Kuv tsim lub backend rau Beru, rau Kev Lag Luam nws tus kheej, tej zaum koj siv nws. Tam sim no kuv tseem ua hauj lwm nyob rau ntawd, nyob rau hauv ib pab neeg sib txawv. Peb tsim ib qho kev txheeb xyuas platform rau Yandex.Market rau cov neeg koom tes ua lag luam.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Cia peb pib. Vim li cas ho kawm Java los ntawm qhov kev pom zoo? Qhov tseeb yog tias Java yog ib hom lus nrov heev. Nws muaj lub zej zog loj heev.

Piv txwv li, muaj xws li TIOBE index, ib tug nrov Performance index ntawm qhov nrov ntawm programming lus, thiab Java nyob rau hauv thawj qhov chaw. Tsis tas li ntawd, ntawm qhov chaw ua haujlwm, koj yuav pom tias feem ntau ntawm cov haujlwm tsis txaus siab yog hais txog Java, uas yog, los ntawm kev txhim kho hauv Java, koj tuaj yeem nrhiav haujlwm ib txwm.

Txij li thaum lub zej zog loj heev, txhua lo lus nug koj muaj yuav pom cov lus teb ntawm qee qhov Stack Overflow lossis lwm qhov chaw. Tsis tas li ntawd, thaum tsim hauv Java, koj yeej tau sau cov lej ntawm JVM, yog li koj tuaj yeem hloov mus rau Kotlin, Scala thiab lwm yam lus uas siv JVM.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Dab tsi yog qhov zoo ntawm Java los ntawm kev xav ntawm kev xav? Muaj ntau hom lus programming. Lawv daws teeb meem sib txawv, koj paub qhov ntawd. Piv txwv li, Python yog qhov zoo rau kev sau ib kab ntawv los daws cov teeb meem ceev.

Nyob rau sab ntxiv, koj tuaj yeem tswj hwm tus lej ua tiav. Piv txwv li, peb muaj tsheb, Yandex tsav tsheb tsis muaj tsheb, lawv cov cai sau rau hauv pluses. Vim li cas? Java muaj xws li ib yam - khib nyiab Collector. Nws tshem RAM ntawm cov khoom tsis tsim nyog. Qhov no pib tshwm sim tsis tu ncua thiab nres-lub-lub ntiaj teb, uas yog, nws nres qhov seem ntawm qhov kev pab cuam thiab mus suav cov khoom, nco ntsoov cov khoom. Yog tias qhov no ua haujlwm hauv lub drone, nws tsis txias. Koj lub drone yuav tsav ncaj nraim, lub sijhawm no tshem nws lub cim xeeb thiab tsis saib ntawm txoj kev txhua. Yog li ntawd, lub drone yog sau rau ntawm qhov zoo.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Java daws teeb meem dab tsi? Nws yog feem ntau yog ib hom lus rau kev tsim cov kev pab cuam loj uas tau sau ntau xyoo, los ntawm kaum lossis ntau pua tus neeg. Tshwj xeeb, ntau qhov backend hauv Yandex.Market yog sau hauv Java. Peb muaj ib pab neeg faib nyob rau hauv ob peb lub nroog, kaum tus neeg nyob rau hauv txhua. Thiab cov cai tswj tau yooj yim, nws tau txais kev txhawb nqa rau kaum xyoo lossis ntau dua, thiab tib lub sijhawm cov neeg tshiab tuaj thiab nkag siab cov cai no.

Cov yam ntxwv dab tsi yuav tsum muaj hom lus kom cov cai hauv nws tau yooj yim txhawb thiab kom nws tuaj yeem tsim tau yooj yim hauv pawg loj. Ua ntej ntawm tag nrho cov, nws yuav tsum tau nyeem tau code, thiab nws yuav tsum yooj yim rau siv complex architectural daws teeb meem. Ntawd yog, nws yuav tsum yooj yim sau cov ntsiab lus siab, thiab lwm yam. Tag nrho cov no yog qhov uas Java muab rau peb. Qhov no yog ib hom lus-oriented. Nws yog ib qho yooj yim heev los siv cov qib siab abstractions thiab complex architectures.

Kuj tseem muaj ntau lub moj khaum thiab cov tsev qiv ntawv rau Java, vim hais tias cov lus muaj ntau tshaj 15 xyoo. Lub sijhawm no, txhua yam uas tuaj yeem sau tau raug sau rau ntawm nws, yog li muaj ntau lub tsev qiv ntawv rau txhua yam koj xav tau.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Dab tsi cov txuj ci tseem ceeb, hauv kuv lub tswv yim, yuav tsum pib JA player muaj? Ua ntej tshaj plaws, qhov no yog kev paub txog Java core lus. Tom ntej no yog qee yam ntawm Dependency Injection moj khaum. Tus neeg hais lus tom ntej, Kirill, yuav tham txog qhov no ntau dua. Kuv yuav tsis mus tob heev. Tom ntej no yog cov architecture thiab tsim qauv. Peb yuav tsum muaj peev xwm sau architecturally zoo nkauj code thiaj li yuav sau ntawv loj. Thiab qhov no yog qee yam ntawm SQL lossis ORM rau cov haujlwm ua haujlwm nrog cov ntaub ntawv. Thiab qhov no siv ntau dua rau lub backend.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Mus! Java core. Kuv yuav tsis tshua pom Asmeskas ntawm no - koj yuav tsum paub cov lus nws tus kheej. Yam koj yuav tsum xyuam xim rau. Ua ntej, Java tau tso tawm ntau lub versions nyob rau xyoo tas los no, uas yog, xyoo 2014-2015 lub xya tau tso tawm, tom qab ntawd lub yim, cuaj, thib kaum, ntau yam tshiab, thiab ntau yam tshiab tshiab tau qhia hauv lawv. , piv txwv li, Java Stream API, lambda, thiab lwm yam txias heev, tshiab, txias yam uas siv rau hauv cov cai ntau lawm, lawv nug txog dab tsi hauv kev xam phaj thiab qhov koj yuav tsum paub. Yog li ntawd, koj yuav tsum tsis txhob nqa ib phau ntawv los ntawm txee rau hauv lub tsev qiv ntawv Java-4 thiab mus kawm nws. Nov yog peb txoj kev npaj: peb kawm Java-8 lossis siab dua.

Peb ua tib zoo mloog rau kev tsim kho tshiab xws li Stream API, var, thiab lwm yam. Lawv raug nug thaum sib tham thiab siv tas li hauv kev tsim khoom. Ntawd yog, Stream API yog txias dua li lub voj voog, feem ntau, yog qhov txias heev. Nco ntsoov ua tib zoo mloog.

Thiab muaj txhua yam zoo li iterators, Exceptions thiab hais txog. Tej yam uas zoo li tsis tseem ceeb rau koj ntev npaum li koj sau qee tus lej me me rau koj tus kheej. Koj tsis xav tau cov Exceptions, leej twg xav tau lawv lawm? Tab sis lawv yuav twv yuav raug nug ntawm kev xam phaj, lawv yuav twv yuav raug hu muaj txiaj ntsig rau koj hauv kev tsim khoom. Feem ntau, koj yuav tsum tau xyuam xim rau Exceptions, iterators thiab lwm yam.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Cov ntaub ntawv qauv. Koj tsis tuaj yeem mus yam tsis muaj cov qauv, tab sis nws yuav zoo yog tias koj tsis paub tias muaj cov ntawv teev lus, phau ntawv txhais lus, thiab cov ntawv. Thiab kuj sib txawv kev siv ntawm cov qauv. Piv txwv li, tib phau ntawv txhais lus hauv Java muaj ntau qhov kev siv, suav nrog HashMap thiab TreeMap. Lawv muaj cov asymptotics sib txawv, lawv yog cov qauv sib txawv hauv. Koj yuav tsum paub tias lawv txawv li cas thiab thaum twg siv qhov twg.

Nws kuj yuav txias heev yog tias koj paub yuav ua li cas cov ntaub ntawv no ua haujlwm sab hauv. Ntawd yog, nws tsis yooj yim kom paub lawv cov asymptotics - ntau npaum li cas tus thawj koom ruam ua haujlwm, ntev npaum li cas dhau los ua haujlwm, tab sis yuav ua li cas cov qauv ua haujlwm sab hauv - piv txwv li, lub thoob hauv HashMap yog dab tsi.

Nws tseem tsim nyog them nqi rau cov ntoo thiab cov duab kos. Cov no yog cov khoom uas tsis tshua muaj nyob rau hauv ntau lawm code, tab sis lawv yog nrov nyob rau hauv kev xam phaj. Raws li, koj yuav tsum muaj peev xwm hla cov ntoo, cov duab hauv qhov dav thiab qhov tob. Cov no yog tag nrho cov algorithms yooj yim.

Thaum koj pib sau cov lej loj, nyuaj, siv cov tsev qiv ntawv, ntau chav kawm code, koj yuav paub tias nws nyuaj rau koj yam tsis muaj kev tsim kho thiab daws cov kev vam meej. Cov no feem ntau yog Maven thiab Gradle. Lawv tso cai rau koj import cov tsev qiv ntawv rau hauv koj qhov project hauv ib kab. Ntawd yog, koj sau ib kab xml thiab import cov tsev qiv ntawv rau hauv qhov project. Zoo heev systems. Lawv yog kwv yees li qub, siv ib qho - Maven lossis Gradle.

Tom ntej no - ib co version tswj system. Kuv pom zoo Git vim nws nrov thiab muaj tons ntawm kev qhia. Yuav luag txhua tus siv Git, nws yog qhov txias, koj tsis tuaj yeem nyob yam tsis muaj nws.

Thiab qee yam kev loj hlob ib puag ncig. Kuv xav kom IntelliJ tswv yim. Nws ua kom cov txheej txheem kev loj hlob sai heev, pab koj ntau, sau tag nrho cov cai boilerplate rau koj, feem ntau, nws txias.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Links los ntawm swb: SQLZOO, habrapost

SQL ntawv. Ib me ntsis txog backenders. Yeej muaj ib rooj plaub funny ntawm no. Ob hnub ua ntej kuv qhov kev sib tham ua haujlwm thib ob, tus ntxhais HR hu kuv thiab hais tias ob hnub lawv yuav nug kuv txog SQL thiab HTTP, kuv yuav tsum tau kawm. Thiab kuv paub yuav luag tsis muaj dab tsi txog SQL lossis HTTP. Thiab kuv pom qhov chaw txias no - SQLZOO. Kuv kawm SQL ntawm nws hauv 12 teev, Kuv txhais tau tias, SQL syntax, yuav ua li cas sau SELECT queries, JOIN, thiab lwm yam. Qhov chaw txias heev, Kuv xav kom nws. Qhov tseeb, hauv 12 teev kuv kawm 90% ntawm qhov kuv paub tam sim no.

Thiab nws kuj zoo heev kom paub database architecture. Cov no yog txhua yam ntawm cov yuam sij, indexes, normalization. Muaj ntau cov lus tshaj tawm txog qhov no ntawm Habre.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Hauv Java, ntxiv rau SQL, muaj txhua yam ntawm Object-relational mapping systems xws li JPA. Muaj qee qhov chaws. Nyob rau hauv thawj txoj kev muaj ib co SQL code - SELECT id lub npe los ntawm info.users qhov twg id IN userIds. Los ntawm cov neeg siv database, los ntawm lub rooj, lawv cov ID thiab cov npe tau txais.

Tom ntej no, muaj qee tus mapper uas hloov ib yam khoom los ntawm lub hauv paus mus rau hauv Java khoom. Thiab muaj ib txoj hauv kev thib peb hauv qab no uas ua tiav cov cai no. Tag nrho cov no tuaj yeem hloov tau siv JPA nrog ib kab, uas tau sau hauv qab no. Nws ua tib yam - nrhiav All ByIdIn. Ntawd yog, raws li lub npe ntawm txoj kev, nws tsim cov lus nug SQL rau koj.

Qhov txias heev. Kuv tus kheej, thaum kuv tsis paub SQL, siv JPA. Feem ntau, xyuam xim. Yog tias koj tub nkees heev los kawm SQL, nws yog kev puas tsuaj. Thiab, feem ntau, hluav taws!

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Caij nplooj ntoos hlav. Leej twg tau hnov ​​​​txog ib yam li lub caij nplooj ntoos hlav? Koj puas pom koj muaj pes tsawg tus? Tsis yog tsis muaj laj thawj. Caij nplooj ntoos hlav muaj nyob rau hauv qhov yuav tsum tau ntawm txhua qhov thib ob Java backend vacancy. Yog tsis muaj nws, yeej tsis muaj qhov twg hauv kev loj hlob loj. Spring yog dab tsi? Ua ntej ntawm tag nrho cov, qhov no yog ib lub moj khaum Dependency Txhaj. Txog qhov no thiab yuav qhia tus neeg hais lus tom ntej. Tab sis nyob rau hauv luv luv, qhov no yog ib yam uas tso cai rau koj kom yooj yim rau import cov dependencies ntawm ib co chav kawm ntawv mus rau lwm tus. Ntawd yog, kev paub txog kev vam meej yog yooj yim.

Caij nplooj ntoos hlav khau raj yog ib qho ntawm Caij Nplooj Hlav uas tso cai rau koj los khiav koj daim ntawv thov server nrog ib lub pob. Koj mus rau THID, nias ob peb lub nyees khawm, thiab tam sim no koj muaj koj daim ntawv thov server thiab khiav ntawm localhost 8080. Ntawd yog, koj tsis tau sau ib kab ntawm cov lej tsis tau, tab sis nws twb ua haujlwm lawm. Qhov txias heev. Yog tias koj sau qee yam ntawm koj tus kheej, hluav taws!

Caij nplooj ntoos hlav yog lub moj khaum loj heev. Nws tsis tsuas yog khaws koj daim ntawv thov server thiab daws qhov Dependency Txhaj. Nws tso cai rau koj ua ntau yam, suav nrog tsim REST API txoj hauv kev. Ntawd yog, koj tau sau qee txoj hauv kev thiab txuas rau Get map annotation rau nws. Thiab tam sim no koj twb muaj qee txoj hauv kev ntawm localhost uas sau Hello world rau koj. Ob kab code thiab nws ua haujlwm. Cov khoom txias.

Caij nplooj ntoos hlav kuj ua rau kev xeem ntawv yooj yim dua. Tsis muaj txoj hauv kev uas tsis muaj kev sim hauv kev loj hlob. Cov cai yuav tsum tau kuaj. Rau lub hom phiaj no, Java muaj lub tsev qiv ntawv txias JUnit 5. Thiab JUnit feem ntau, tab sis qhov tseeb version yog thib tsib. Muaj txhua yam rau kev sim, txhua yam kev lees paub thiab lwm yam.

Thiab muaj qhov txaus Mockito moj khaum. Xav txog tias koj muaj qee qhov kev ua haujlwm uas koj xav sim. Kev ua haujlwm ua ntau yam, suav nrog, qee qhov hauv nruab nrab, nws nkag rau hauv VKontakte nrog koj tus ID, piv txwv li, thiab tau txais thawj lub npe thiab lub xeem ntawm tus neeg siv VKontakte los ntawm tus ID. Tej zaum koj yuav tsis suav nrog VKontakte hauv kev xeem, qhov ntawd yog qhov txawv. Tab sis koj yuav tsum tau sim cov kev ua haujlwm, yog li koj ua chav kawm no, siv Mockito, mok nws, imitation nws.

Koj yuav hais tias thaum qhov kev thov tuaj rau hauv chav kawm no nrog tus ID xws li thiab zoo li, nws rov qab qee lub npe, piv txwv li, Vasya Pupkin. Thiab nws yuav ua haujlwm. Ntawd yog, koj yuav sim txhua qhov kev ua haujlwm rau mok ib chav kawm. Qhov txias heev.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Txuas los ntawm swb

Cov qauv tsim. Nws yog dab tsi? Cov no yog cov qauv rau kev daws teeb meem ib txwm tshwm sim hauv kev txhim kho. Hauv kev txhim kho, cov teeb meem zoo ib yam lossis zoo sib xws feem ntau tshwm sim tias nws yuav zoo los daws qee qhov zoo. Yog li ntawd, tib neeg tuaj nrog cov kev coj ua zoo tshaj plaws, qee cov qauv, yuav ua li cas los daws cov teeb meem no.

Muaj ib lub vev xaib nrog cov qauv nrov tshaj plaws - refactoring.guru, koj tuaj yeem nyeem nws, nrhiav seb cov qauv twg muaj, nyeem ib pawg ntawm txoj kev xav. Qhov teeb meem yog tias nws siv tsis tau. Qhov tseeb, cov qauv uas tsis muaj kev xyaum tsis muaj txiaj ntsig tshwj xeeb.

Koj yuav hnov ​​​​txog qee cov qauv xws li Singletone lossis Builder. Leej twg hnov ​​cov lus no? Ntau tus neeg. Muaj cov qauv yooj yim uas koj tuaj yeem siv koj tus kheej. Tab sis feem ntau ntawm cov qauv: lub tswv yim, Hoobkas, façade - nws tsis paub meej qhov twg los siv lawv.

Thiab kom txog thaum koj pom hauv kev xyaum hauv qee tus neeg txoj cai qhov chaw uas tus qauv no tau siv, koj yuav tsis tuaj yeem siv koj tus kheej. Yog li ntawd, kev xyaum yog qhov tseem ceeb heev nrog cov qauv. Thiab tsuas yog nyeem txog lawv ntawm refactoring.guru tsis muaj txiaj ntsig zoo, tab sis nws yog qhov tsim nyog ua.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Vim li cas thiaj xav tau cov qauv? Cia peb hais tias koj muaj qee yam siv chav kawm. Nws muaj ib tug ID thiab lub npe. Txhua tus neeg siv yuav tsum muaj ob tus ID thiab lub npe. Sab laug yog chav kawm.

Dab tsi yog txoj hauv kev los pib Tus Neeg Siv? Muaj ob txoj kev xaiv - ib tug constructor los yog ib tug setter. Dab tsi yog qhov tsis zoo ntawm ob txoj hauv kev?

Tus tsim. Tus neeg siv tshiab (7, "Daim ntawv cog lus"), ok. Tam sim no cia peb hais tias peb tsis muaj chav kawm siv, tab sis qee qhov lwm tus, nrog xya tus lej. Koj yuav muaj tus tsim muaj xya tus lej sib law liag. Nws tsis paub meej tias cov lej no yog dab tsi thiab cov ntawm lawv yog cov cuab yeej twg. Tus tsim tsis zoo.

Qhov thib ob xaiv yog setter. Koj sau meej meej: setId(7), setName("Bond"). Koj nkag siab tias cov khoom twg yog nyob rau thaj chaw twg. Tab sis setter muaj teeb meem. Ua ntej, koj tuaj yeem hnov ​​​​qab muab qee yam, thiab qhov thib ob, koj cov khoom yuav hloov pauv tau. Qhov no tsis yog xov muaj kev nyab xeeb thiab me ntsis txo qhov kev nyeem tau ntawm cov cai. Tias yog vim li cas tib neeg tuaj nrog tus qauv txias - Builder.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Qhov no yog dab tsi? Cia peb sim ua ke qhov zoo ntawm ob txoj hauv kev-setter thiab tus tsim-hauv ib qho. Peb ua ib yam khoom, Builder, uas tseem yuav muaj Id thiab lub npe teb, uas nws tus kheej yuav tsim raws li tus setter, thiab uas yuav muaj ib txoj kev tsim uas xa rov qab rau koj tus neeg siv tshiab nrog tag nrho cov tsis. Peb tau txais ib qho khoom tsis hloov pauv thiab tus neeg teeb tsa. Txias!

Cov teeb meem yog dab tsi? Ntawm no peb muaj cov classic Builder. Qhov teeb meem yog tias peb tseem tuaj yeem tsis nco qab tshawb xyuas hauv qee qhov chaw. Thiab yog tias peb tsis nco qab mus xyuas tus ID, qhov no hauv Builder nws yog pib rau xoom, vim tias hom int tsis yog nullable. Thiab yog tias peb ua Lub Npe "Daim Ntawv cog lus" thiab tsis nco qab mus xyuas lub chaw ua haujlwm ID, peb yuav muaj tus neeg siv tshiab nrog tus lej "0" thiab lub npe "Daim Ntawv cog lus". Tsis txias.

Wb sim sib tua no. Hauv Builder peb yuav hloov int mus rau int kom nws yog nullable. Tam sim no txhua yam zoo heev.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Yog tias peb sim tsim Tus Neeg Siv nrog lub npe "Daim Ntawv cog lus", tsis nco qab tso tus ID rau nws, peb yuav tau txais qhov tshwj xeeb pointer, vim hais tias tus ID tsis yog nullable, tab sis tus Builder muaj qhov null, tshwj xeeb pointer zam.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Tab sis peb tseem tuaj yeem hnov ​​​​qab tso lub npe, yog li peb teeb tsa cov khoom rov ua rau null. Tam sim no, thaum peb tsim peb cov khoom los ntawm Builder, nws xyuas tias daim teb tsis yog nullable. Thiab qhov ntawd tsis yog tag nrho.

Cia peb saib qhov piv txwv kawg. Hauv qhov no, yog tias peb muab tso rau hauv lub sijhawm ua haujlwm ID, nws yuav zoo heev kom paub tam sim ntawd tias koj tau ua nws thiab nws tsis txias tias koj ua yuam kev tam sim no.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Koj yuav tsum pov qhov yuam kev tsis yog thaum lub sijhawm ntawm Tus Neeg Siv Khoom tsim, tab sis thaum koj teeb tsa tsis tau rau tus ID. Yog li ntawd, nyob rau hauv Builder peb yuav hloov tus setter Integer rau int, thiab nws yuav tam sim ntawd cog lus tias lawv pov tawm null.

Hauv luv luv, lub ntsiab lus yog dab tsi? Muaj tus qauv Builder yooj yim, tab sis txawm tias nws qhov kev siv tau muaj qee qhov subtleties, yog li nws yog qhov txias heev los saib cov kev siv sib txawv ntawm cov qauv. Txhua tus qauv muaj ntau ntau qhov kev siv. Qhov no yog txhua yam nthuav heev.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Yuav ua li cas peb sau Builder nyob rau hauv ntau lawm code? Ntawm no yog peb cov neeg siv. Peb txuas lub Builder tig los ntawm Lombok lub tsev qiv ntawv rau nws, thiab nws tus kheej tsim tus tsim rau peb. Ntawd yog, peb tsis sau ib qho code, tab sis Java twb xav tias chav kawm no muaj tus tsim, thiab peb tuaj yeem hu nws zoo li no.

Kuv twb tau hais tias Java muaj cov tsev qiv ntawv yuav luag txhua yam, suav nrog Lombok, lub tsev qiv ntawv txias uas tso cai rau koj kom tsis txhob sau ntawv boilerplate. Builder, GET.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Cov qauv tuaj yeem yog architectural - cuam tshuam tsis yog rau ib chav kawm xwb, tab sis rau lub cev tag nrho. Muaj ib txoj hauv kev zoo li no hauv kev tsim qauv: Tib Lub Luag Haujlwm Txoj Cai. Nws tham txog dab tsi? Qhov tseeb tias txhua chav kawm yuav tsum muaj lub luag haujlwm rau qee qhov ntawm nws tus kheej ua haujlwm. Nyob rau hauv cov ntaub ntawv no, peb muaj ib tug Controller uas sib txuas lus nrog cov neeg siv, JSON khoom. Muaj Facade, uas hloov JSON cov khoom rau hauv cov qauv uas Java daim ntawv thov yuav ua haujlwm nrog. Muaj Kev Pabcuam uas muaj cov logic nyuaj uas ua haujlwm nrog cov qauv no. Muaj cov ntaub ntawv Access Object uas tso cov qauv no rau hauv cov ntaub ntawv thiab khaws lawv los ntawm cov ntaub ntawv. Thiab muaj cov database nws tus kheej. Hauv lwm lo lus, nws tsis yog tag nrho hauv ib chav kawm, tab sis peb tab tom ua tsib chav sib txawv, thiab qhov ntawd yog lwm tus qauv.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Thaum koj tau kawm ntau lossis tsawg dua Java, nws yog qhov zoo los sau koj tus kheej qhov project uas yuav muaj cov ntaub ntawv, ua haujlwm nrog lwm tus APIs, thiab nthuav tawm koj daim ntawv thov server rau REST API cov neeg siv khoom. Qhov no yuav yog ib qho zoo ntxiv rau koj qhov kev xav tau, nws yuav yog qhov kawg rau koj txoj kev kawm. Nrog rau qhov no koj tuaj yeem mus thiab tau ua haujlwm.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Nov yog ib qho piv txwv ntawm kuv daim ntawv thov server. Hauv kuv lub xyoo thib ob, kuv tau sau ib daim ntawv nrog cov txiv neej. Lawv tau sau ib daim ntawv thov mobile rau kev teeb tsa. Nyob ntawd, cov neeg siv tuaj yeem nkag mus hauv VKontakte, tso cov ntsiab lus ntawm daim ntawv qhia, tsim cov xwm txheej, caw lawv cov phooj ywg rau lawv, txuag cov duab ntawm cov xwm txheej, thiab lwm yam.

Kuv tau ua dab tsi hauv qhov project? Sau daim ntawv thov server hauv Spring Boot yam tsis siv SQL. Kuv tsis paub nws, kuv siv JPA. Nws ua tau dab tsi? Nkag mus rau VK ntawm OAuth-2. Coj tus neeg siv lub token, mus rau VK nrog nws, xyuas tias nws yog tus neeg siv tiag. Tau txais cov ntaub ntawv hais txog cov neeg siv los ntawm VKontakte. Nws muaj peev xwm txuag tau cov ntaub ntawv nyob rau hauv ib tug database, kuj los ntawm JPA. Ua tib zoo khaws cov duab thiab lwm cov ntaub ntawv hauv lub computer nco, thiab khaws cov txuas rau lawv hauv cov ntaub ntawv. Lub sijhawm ntawd kuv tsis paub tias muaj CLOB cov khoom hauv cov ntaub ntawv, yog li kuv tau ua li no. Muaj REST API rau cov neeg siv, cov neeg siv khoom siv. Thiab tau muaj kev sim ntsuas rau kev ua haujlwm yooj yim.

[…] Ib qho piv txwv me me ntawm kuv txoj kev kawm tiav ntawm Java. Hauv kuv thawj xyoo hauv tsev kawm ntawv qib siab, kuv tau qhia C# thiab tau txais kev nkag siab txog OOP programming - cov chav kawm twg, kev cuam tshuam, kev paub daws teeb meem, thiab vim li cas lawv xav tau. Nws pab kuv ntau heev. Yog tsis muaj qhov no, kev kawm Java yog qhov nyuaj heev; nws tsis paub meej tias vim li cas cov chav kawm xav tau.

Vim li cas kawm Java thiab yuav ua li cas thiaj ua tau zoo. Yandex qhia

Nyob rau hauv kuv lub xyoo thib ob ntawm lub tsev kawm ntawv, lawv rov qhia Java core, tab sis kuv tsis tau tso tseg, kuv tau mus kawm Spring kuv tus kheej thiab sau ib daim ntawv kawm, kuv qhov project, uas kuv tau hais los saum no. Thiab nrog rau tag nrho cov no, kuv tau mus ua haujlwm hauv Yandex, dhau kev xam phaj, thiab nkag mus rau hauv Yandex.Market. Nyob ntawd kuv tau sau qhov backend rau Beru, qhov no yog peb lub khw, thiab rau Yandex.Market nws tus kheej.

Tom qab ntawd, rau lub hlis dhau los, kuv tau pauv mus rau lwm pab pawg hauv tib lub khw. Peb ua analytics rau cov neeg koom tes ua lag luam. Peb yog nyob rau hauv lub analytical platform, muaj peb ntawm peb nyob rau hauv lub backend, yog li kuv muaj ib tug loj heev feem ntawm lub hwj chim ntawm peb tes num. Nws yog qhov nthuav heev, ua tau. Ntawd yog, peb tau muab cov ntaub ntawv ntawm kev ua lag luam - kev muag khoom yog dab tsi, nyob rau hauv dab tsi pawg, hauv cov qauv dab tsi, rau cov neeg koom tes ua lag luam, cov tuam txhab muaj npe loj. Thiab tsuas muaj peb ntawm peb, peb sau cov lej no, thiab nws txias heev.

Ua tsaug! Muaj txiaj ntsig txuas:
- "Java 8. Beginner's Guide".
- Cov qauv ntaub ntawv.
- SQLZOO.
- Database normalization.
- Tsim Qauv.
- Qauv Tsim.
- Kev Cai Huv.
- Siv tau Java.

Tau qhov twg los: www.hab.com

Ntxiv ib saib