Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Je, Java ni tofauti gani na lugha nyingine maarufu? Kwa nini Java inapaswa kuwa lugha ya kwanza kujifunza? Wacha tuunde mpango ambao utakusaidia kujifunza Java kutoka mwanzo na kwa kutumia ujuzi wa kupanga programu katika lugha zingine. Wacha tuorodheshe tofauti kati ya kuunda nambari ya uzalishaji katika Java na kukuza katika lugha zingine. Mikhail Zatepyakin alisoma ripoti hii kwenye mkutano wa washiriki wa siku zijazo mafunzo ya kazi Yandex na watengenezaji wengine wa mwanzo - Java Junior meetup.


- Halo kila mtu, jina langu ni Misha. Mimi ni msanidi programu kutoka kwa Yandex.Market, na leo nitakuambia kwa nini kujifunza Java na jinsi ya kufanya hivyo kwa ufanisi. Unaweza kuuliza swali linalofaa: kwa nini nitakuwa nikisimulia hadithi hii, na si msanidi fulani hodari aliye na uzoefu wa miaka mingi? Ukweli ni kwamba mimi mwenyewe nilisoma Java hivi karibuni, karibu mwaka na nusu iliyopita, kwa hiyo bado ninakumbuka jinsi ilivyokuwa na ni mitego gani.

Mwaka mmoja uliopita nilipata mafunzo katika Yandex.Market. Nilitengeneza hali ya nyuma ya Beru, kwa Soko lenyewe, labda uliitumia. Sasa ninaendelea kufanya kazi huko, katika timu tofauti. Tunaunda jukwaa la uchambuzi la Yandex.Market kwa washirika wa biashara.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Tuanze. Kwa nini ujifunze Java kutoka kwa mtazamo wa vitendo? Ukweli ni kwamba Java ni lugha maarufu sana ya programu. Ina jamii kubwa sana.

Kwa mfano, kuna faharisi ya TIOBE kama hiyo, faharisi maarufu ya umaarufu wa lugha za programu, na safu ya Java ya kwanza hapo. Pia, kwenye tovuti za kazi, labda utaona kwamba nafasi nyingi za kazi zinahusu Java, yaani, kwa kuendeleza Java, unaweza kupata kazi kila wakati.

Kwa kuwa jumuiya ni kubwa sana, swali lolote ulilo nalo litapata jibu kwenye baadhi ya Stack Overflow au tovuti nyinginezo. Pia, wakati wa kukuza Java, kwa kweli unaandika nambari kwenye JVM, kwa hivyo unaweza kubadili kwa urahisi kwa Kotlin, Scala na lugha zingine zinazotumia JVM.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Ni nini kizuri kuhusu Java kutoka kwa mtazamo wa kiitikadi? Kuna lugha tofauti za programu. Wanasuluhisha shida tofauti, unajua hivyo. Kwa mfano, Python ni nzuri kwa kuandika maandishi ya mstari mmoja ili kutatua matatizo ya haraka.

Kwa upande mzuri, unaweza kudhibiti kikamilifu msimbo unaoweza kutekelezwa. Kwa mfano, tuna magari, magari ya Yandex bila dereva, kanuni zao zimeandikwa kwa pluses. Kwa nini? Java ina kitu kama hicho - Mkusanyaji wa takataka. Inafuta RAM ya vitu visivyo vya lazima. Jambo hili huanza kwa hiari na linasimamisha ulimwengu, ambayo ni, inasimamisha programu iliyobaki na kwenda kuhesabu vitu, kumbukumbu wazi ya vitu. Ikiwa kitu kama hicho kitafanya kazi kwenye drone, sio nzuri. Drone yako itaendesha moja kwa moja, kwa wakati huu safisha kumbukumbu yake na usiangalie barabara hata kidogo. Kwa hiyo, drone imeandikwa juu ya faida.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Je, Java hutatua matatizo gani? Kimsingi ni lugha ya kutengeneza programu kubwa ambazo huandikwa kwa miaka mingi, na makumi au mamia ya watu. Hasa, mengi ya backend katika Yandex.Market imeandikwa katika Java. Tuna timu iliyosambazwa katika miji kadhaa, watu kumi katika kila moja. Na kanuni ni rahisi kudumisha, imeungwa mkono kwa miaka kumi au zaidi, na wakati huo huo watu wapya wanakuja na kuelewa kanuni hii.

Lugha inapaswa kuwa na sifa gani ili msimbo ndani yake uungwe mkono kwa urahisi na iweze kuendelezwa kwa urahisi katika timu kubwa. Kwanza kabisa, inapaswa kuwa nambari inayoweza kusomeka, na inapaswa kuwa rahisi kutekeleza suluhisho ngumu za usanifu. Hiyo ni, inapaswa kuwa rahisi kuandika vifupisho vya hali ya juu, nk. Yote hii ndio Java inatupa. Hii ni lugha yenye mwelekeo wa kitu. Ni rahisi sana kutekeleza vifupisho vya hali ya juu na usanifu changamano.

Pia kuna mifumo na maktaba nyingi za Java, kwa sababu lugha ina zaidi ya miaka 15. Wakati huu, kila kitu ambacho kinaweza kuandikwa kiliandikwa juu yake, kwa hiyo kuna tani za maktaba kwa kila kitu unachoweza kuhitaji.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Ni ujuzi gani wa kimsingi, kwa maoni yangu, mchezaji wa mwanzo wa JA anapaswa kuwa nao? Kwanza kabisa, hii ni ujuzi wa lugha ya msingi ya Java. Inayofuata ni aina fulani ya mfumo wa Sindano ya Utegemezi. Mzungumzaji anayefuata, Kirill, atazungumza juu ya hili kikamilifu zaidi. Sitaingia ndani sana. Ifuatayo ni muundo wa usanifu na muundo. Tunahitaji kuweza kuandika msimbo mzuri wa usanifu ili kuandika programu kubwa. Na hii ni aina fulani ya SQL au ORM kwa kazi za kufanya kazi na hifadhidata. Na hii inatumika zaidi kwa backend.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Nenda! Java msingi. Sitagundua Amerika hapa - unahitaji kujua lugha yenyewe. Nini unapaswa kuzingatia. Kwanza, Java imetoa matoleo mengi katika miaka ya hivi karibuni, ambayo ni, mnamo 2014-2015 ya saba ilitolewa, kisha ya nane, ya tisa, ya kumi, matoleo mengi mapya, na vitu vingi vipya vilianzishwa ndani yao. , kwa mfano, API ya Java Stream , lambda, n.k. Vitu baridi sana, safi, baridi ambavyo hutumiwa katika msimbo wa uzalishaji, kile wanachouliza katika mahojiano na ambayo unahitaji kujua. Kwa hivyo, haupaswi kuchukua kitabu kutoka kwa rafu kwenye maktaba ya Java-4 na uende kujifunza. Huu ndio mpango wetu: tunajifunza Java-8 au zaidi.

Tunazingatia kwa makini ubunifu kama vile Stream API, var, n.k. Huulizwa wakati wa mahojiano na hutumika kila mara katika uzalishaji. Hiyo ni, API ya Mkondo ni baridi zaidi kuliko vitanzi, kwa ujumla, jambo la baridi sana. Hakikisha kuwa makini.

Na kuna kila aina ya mambo kama iterators, Vighairi na kadhalika. Mambo ambayo yanaonekana kuwa sio muhimu kwako mradi tu uandike msimbo mdogo mwenyewe. Huhitaji Vighairi hivi, ni nani anayevihitaji hata hivyo? Lakini hakika wataulizwa kwenye mahojiano, hakika watakuwa na manufaa kwako katika uzalishaji. Kwa ujumla, unapaswa kuzingatia Vighairi, viboreshaji na vitu vingine.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Miundo ya data. Huwezi kwenda bila miundo, lakini itakuwa nzuri ikiwa hujui tu kwamba kuna seti, kamusi na karatasi. Na pia utekelezaji tofauti wa miundo. Kwa mfano, kamusi sawa katika Java ina utekelezaji mwingi, ikijumuisha HashMap na TreeMap. Wana asymptotics tofauti, wameundwa tofauti ndani. Unahitaji kujua jinsi zinatofautiana na wakati wa kutumia ipi.

Pia itakuwa vizuri sana ukijua jinsi miundo hii ya data inavyofanya kazi ndani. Hiyo ni, si rahisi kujua asymptotics zao - ni kiasi gani cha dau hufanya kazi, muda gani pasi hufanya kazi, lakini jinsi muundo unavyofanya kazi ndani - kwa mfano, ndoo ni nini katika HashMap.

Inafaa pia kuzingatia miti na grafu. Haya ni mambo ambayo si ya kawaida sana katika kanuni za uzalishaji, lakini ni maarufu katika mahojiano. Ipasavyo, unahitaji kuwa na uwezo wa kupita miti, grafu kwa upana na kina. Hizi zote ni algorithms rahisi.

Mara tu unapoanza kuandika nambari yoyote kubwa, ngumu, kwa kutumia maktaba, nambari za darasa nyingi, utagundua kuwa ni ngumu kwako bila kujenga mifumo na kutatua utegemezi. Hizi kimsingi ni Maven na Gradle. Zinakuruhusu kuingiza maktaba kwenye mradi wako kwa mstari mmoja. Hiyo ni, unaandika xml ya mstari mmoja na kuingiza maktaba kwenye mradi. Mifumo mikubwa. Ni takriban sawa, tumia moja - Maven au Gradle.

Ifuatayo - aina fulani ya mfumo wa udhibiti wa toleo. Ninapendekeza Git kwa sababu ni maarufu na kuna tani za mafunzo. Karibu kila mtu hutumia Git, ni jambo la kupendeza, huwezi kuishi bila hiyo.

Na aina fulani ya mazingira ya maendeleo. Ninapendekeza IntelliJ Idea. Inaharakisha sana mchakato wa maendeleo, inakusaidia sana, inakuandikia msimbo wote wa boilerplate, kwa ujumla, ni baridi.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Viungo kutoka kwa slaidi: SQLZOO, habrapost

SQL. Kidogo kuhusu backners. Kwa kweli kulikuwa na kesi ya kuchekesha hapa. Siku mbili kabla ya mahojiano yangu ya pili ya mafunzo, msichana wa HR alinipigia simu na kusema kwamba baada ya siku mbili wataniuliza kuhusu SQL na HTTP, nilihitaji kujifunza. Na sikujua karibu chochote kuhusu SQL au HTTP. Na nilipata tovuti hii nzuri - SQLZOO. Nilijifunza SQL juu yake katika masaa 12, namaanisha, syntax ya SQL, jinsi ya kuandika maswali ya CHAGUA, JIUNGE, nk. Tovuti nzuri sana, ninaipendekeza sana. Kwa kweli, katika masaa 12 nilijifunza 90% ya kile ninachojua sasa.

Na pia ni vizuri kujua usanifu wa hifadhidata. Hizi ni kila aina ya funguo, faharisi, kuhalalisha. Kuna mfululizo wa machapisho kuhusu hili kwenye Habre.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Katika Java, pamoja na SQL, kuna kila aina ya mifumo ya ramani ya Object-relationship kama vile JPA. Kuna kanuni fulani. Katika njia ya kwanza kuna msimbo fulani wa SQL - CHAGUA jina la kitambulisho KUTOKA kwa info.users WHERE id IN userIds. Kutoka kwa hifadhidata ya watumiaji, kutoka kwa meza, vitambulisho vyao na majina hupatikana.

Ifuatayo, kuna ramani fulani ambayo hubadilisha kitu kutoka msingi hadi kitu cha Java. Na kuna njia ya tatu hapa chini kwamba kweli executes kanuni hii. Yote hii inaweza kubadilishwa kwa kutumia JPA na mstari mmoja, ambao umeandikwa hapa chini. Inafanya kitu kimoja - pata All ByIdIn. Hiyo ni, kulingana na jina la njia, inazalisha swali la SQL kwako.

Jambo zuri sana. Mimi mwenyewe, wakati sikujua SQL, nilitumia JPA. Kwa ujumla, makini. Ikiwa wewe ni mvivu sana kujifunza SQL, ni janga. Na, kwa ujumla, moto!

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Spring. Nani amesikia kitu kama mfumo wa Spring? Unaona ni wangapi kati yenu? Sio bila sababu. Spring imejumuishwa katika mahitaji ya kila nafasi ya pili ya nyuma ya Java. Bila hivyo, hakuna mahali popote katika maendeleo makubwa. Spring ni nini? Kwanza kabisa, huu ni mfumo wa Sindano ya Utegemezi. Kuhusu hili pia itasema mzungumzaji anayefuata. Lakini kwa kifupi, hili ni jambo linalokuruhusu kurahisisha kuagiza utegemezi wa baadhi ya madarasa kwa wengine. Hiyo ni, ujuzi wa utegemezi hurahisishwa.

Spring Boot ni kipande cha Spring ambacho hukuruhusu kuendesha programu yako ya seva na kitufe kimoja. Unaenda kwa THID, bonyeza vitufe kadhaa, na sasa unayo programu ya seva yako inayoendesha kwenye localhost 8080. Hiyo ni, haujaandika mstari mmoja wa kanuni bado, lakini tayari inafanya kazi. Jambo zuri sana. Ikiwa unaandika kitu chako mwenyewe, moto!

Spring ni mfumo mkubwa sana. Haichukui programu tumizi ya seva yako tu na kusuluhisha Sindano ya Utegemezi. Inakuruhusu kufanya rundo la vitu, pamoja na kuunda njia za REST API. Hiyo ni, uliandika njia fulani na kuambatanisha nayo maelezo ya kupata ramani. Na sasa tayari unayo mbinu fulani kwenye localhost ambayo inakuandikia Hello world. Mistari miwili ya kificho na inafanya kazi. Mambo ya baridi.

Spring pia hurahisisha majaribio ya uandishi. Hakuna njia bila kupima katika maendeleo makubwa. Msimbo unahitaji kujaribiwa. Kwa kusudi hili, Java ina maktaba ya baridi ya JUnit 5. Na JUnit kwa ujumla, lakini toleo la hivi karibuni ni la tano. Kuna kila kitu kwa ajili ya majaribio, kila aina ya madai na mambo mengine.

Na kuna mfumo mzuri wa Mockito. Fikiria kuwa una utendaji fulani ambao ungependa kujaribu. Utendaji hufanya mambo mengi, ikiwa ni pamoja na, mahali fulani katikati, huingia kwenye VKontakte na kitambulisho chako, kwa mfano, na kupokea jina la kwanza na la mwisho la mtumiaji wa VKontakte kutoka kwa kitambulisho. Labda hautajumuisha VKontakte kwenye vipimo, hiyo ni ya kushangaza. Lakini unahitaji kujaribu utendakazi, kwa hivyo ulifanya darasa hili, ukitumia Mockito, mok, kuiga.

Utasema kwamba wakati ombi linakuja kwa darasa hili na kitambulisho kama hicho na vile, inarudisha jina la mwisho, kwa mfano, Vasya Pupkin. Na itafanya kazi. Hiyo ni, utajaribu utendakazi wote wa darasa moja la mok. Jambo zuri sana.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Kiungo kutoka kwa slaidi

Miundo ya kubuni. Ni nini? Hizi ni violezo vya kutatua shida za kawaida zinazotokea katika ukuzaji. Katika maendeleo, matatizo yanayofanana au yanayofanana mara nyingi hutokea kwamba itakuwa nzuri kutatua kwa namna fulani vizuri. Kwa hiyo, watu walikuja na mazoea bora, templates fulani, juu ya jinsi ya kutatua matatizo haya.

Kuna tovuti yenye mifumo maarufu zaidi - refactoring.guru, unaweza kuisoma, kujua ni mifumo gani iliyopo, soma kundi la nadharia. Shida ni kwamba haina maana. Kwa kweli, mifumo bila mazoezi sio muhimu sana.

Utasikia kuhusu mifumo fulani kama Singletone au Builder. Nani alisikia maneno haya? Watu wengi. Kuna mifumo rahisi ambayo unaweza kutekeleza mwenyewe. Lakini mifumo mingi: mkakati, kiwanda, facade - haijulikani wazi wapi kuzitumia.

Na mpaka uone katika mazoezi katika msimbo wa mtu mwingine mahali ambapo muundo huu unatumika, hautaweza kuitumia mwenyewe. Kwa hiyo, mazoezi ni muhimu sana na mifumo. Na kusoma tu kuyahusu kwenye refactoring.guru hakusaidii sana, lakini inafaa kufanya hivyo.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Kwa nini mifumo inahitajika? Wacha tuseme una darasa fulani la Mtumiaji. Ina Kitambulisho na Jina. Kila Mtumiaji lazima awe na Kitambulisho na Jina. Juu kushoto ni darasa.

Ni njia gani za kuanzisha Mtumiaji? Kuna chaguzi mbili - ama mjenzi au seti. Je, ni hasara gani za mbinu zote mbili?

Mjenzi. Mtumiaji mpya (7, "Bond"), sawa. Sasa hebu tuseme kwamba hatuna darasa la Mtumiaji, lakini nyingine nyingine, yenye sehemu saba za nambari. Utakuwa na mjenzi aliye na nambari saba mfululizo. Haijulikani nambari hizi ni nini na ni nani kati yao ni mali gani. Muumbaji sio mzuri.

Chaguo la pili ni setter. Unaandika wazi: setId(7), setName("Bond"). Unaelewa ni mali gani ni ya uwanja gani. Lakini setter ina shida. Kwanza, unaweza kusahau kugawa kitu, na pili, kitu chako kinabadilika. Hii sio salama na inapunguza usomaji wa nambari kidogo. Ndiyo sababu watu walikuja na muundo mzuri - Mjenzi.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Hii inahusu nini? Wacha tujaribu kuchanganya faida za njia zote mbili - seti na mjenzi - kwa moja. Tunafanya kitu fulani, Mjenzi, ambacho pia kitakuwa na mashamba ya Id na Jina, ambayo yenyewe itajengwa kulingana na seti, na ambayo itakuwa na njia ya Kujenga ambayo inakurudishia Mtumiaji mpya na vigezo vyote. Tunapata kitu kisichobadilika na seti. Baridi!

Je, ni matatizo gani? Hapa tunayo Mjenzi wa kawaida. Shida ni kwamba bado tunaweza kusahau kuangalia katika sehemu fulani. Na ikiwa tulisahau kutembelea kitambulisho, katika kesi hii katika Mjenzi imeanzishwa hadi sifuri, kwa sababu aina ya int haiwezi kubatilishwa. Na ikiwa tutafanya Jina "Bond" na kusahau kutembelea ofisi ya ID, tutakuwa na Mtumiaji mpya na kitambulisho "0" na jina "Bond". Sio poa.

Hebu jaribu kupambana na hili. Katika Builder tutabadilisha int hadi int ili iweze kubatilika. Sasa kila kitu ni nzuri.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Ikiwa tunajaribu kuunda Mtumiaji kwa jina la "Bond", na kusahau kuweka kitambulisho chake, tutapata ubaguzi wa null pointer, kwa sababu kitambulisho hakiwezi kubatilishwa, na Mjenzi ana ubaguzi wa null, hasa pointer.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Lakini bado tunaweza kusahau kuweka jina, kwa hivyo tunaweka uchezaji wa kitu tena kuwa batili. Sasa, tunapounda kitu chetu kutoka kwa Mjenzi, hukagua kuwa uga hauwezi kubatilika. Na hiyo sio yote.

Hebu tuangalie mfano wa mwisho. Katika kesi hii, ikiwa kwa namna fulani tutaweka null katika muda wa utekelezaji wa kitambulisho, itakuwa vyema kujua mara moja kwamba ulifanya hivyo na sio vizuri kwamba unafanya makosa sasa.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Unahitaji kutupa hitilafu sio wakati wa kuunda Mtumiaji, lakini unapoweka null kwa kitambulisho. Kwa hiyo, katika Mjenzi tutabadilisha setter Integer kwa int, na ataapa mara moja kwamba walitupa null.

Kwa kifupi, ni jambo gani? Kuna muundo rahisi wa Wajenzi, lakini hata utekelezaji wake una hila fulani, kwa hiyo ni baridi sana kuangalia utekelezaji tofauti wa mifumo. Kila muundo una kadhaa ya utekelezaji. Haya yote yanavutia sana.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Je, tunaandikaje Mjenzi katika msimbo wa uzalishaji? Hapa kuna Mtumiaji wetu. Tunaambatisha mzunguko wa Wajenzi kutoka kwa maktaba ya Lombok kwake, na yenyewe hututengenezea Kijenzi. Hiyo ni, hatuandiki msimbo wowote, lakini Java tayari inafikiri kwamba darasa hili lina Mjenzi, na tunaweza kuiita kama hii.

Tayari nimesema kuwa Java ina maktaba kwa karibu kila kitu, pamoja na Lombok, maktaba ya baridi ambayo hukuruhusu kuzuia kuandika boilerplate. Mjenzi, PATA.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Sampuli zinaweza kuwa za usanifu - zinazohusiana sio tu na darasa moja, lakini kwa mfumo kwa ujumla. Kuna kanuni nzuri sana katika muundo wa mfumo: Kanuni ya Uwajibikaji Mmoja. Anazungumzia nini? Ukweli kwamba kila darasa lazima liwajibike kwa baadhi ya utendaji wake. Katika hali hii, tuna Kidhibiti kinachowasiliana na watumiaji, vitu vya JSON. Kuna Kitambaa, ambacho hubadilisha vitu vya JSON kuwa vielelezo ambavyo programu ya Java itafanya kazi nayo. Kuna Huduma ambayo ina mantiki ngumu ambayo inafanya kazi na mifano hii. Kuna Kipengele cha Ufikiaji Data ambacho huweka miundo hii kwenye hifadhidata na kuzipata kutoka kwa hifadhidata. Na kuna hifadhidata yenyewe. Kwa maneno mengine, yote hayako katika darasa moja, lakini tunatengeneza madarasa matano tofauti, na huo ni muundo mwingine.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Mara tu unapojifunza Java zaidi au kidogo, ni vyema kuandika mradi wako mwenyewe ambao utakuwa na hifadhidata, kufanya kazi na API zingine, na kufichua programu ya seva yako kwa wateja wa REST API. Hili litakuwa jambo zuri kuongeza kwenye wasifu wako, itakuwa mwisho mzuri wa elimu yako. Kwa hili unaweza kwenda na kupata kazi.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Hapa kuna mfano wa programu yangu ya seva. Katika mwaka wangu wa pili, niliandika karatasi ya muda na wavulana. Walikuwa wakiandika maombi ya simu kwa ajili ya kuandaa matukio. Huko, watumiaji wanaweza kuingia kupitia VKontakte, kuweka pointi kwenye ramani, kuunda matukio, kuwaalika marafiki zao kwao, kuokoa picha za matukio, nk.

Nilifanya nini katika mradi huo? Aliandika programu ya seva katika Spring Boot bila kutumia SQL. Sikumjua, nilitumia JPA. Ingeweza kufanya nini? Ingia kwa VK kupitia OAuth-2. Chukua ishara ya mtumiaji, nenda kwa VK nayo, angalia kuwa ni mtumiaji halisi. Pata habari kuhusu watumiaji kupitia VKontakte. Iliweza kuhifadhi habari katika hifadhidata, pia kupitia JPA. Hifadhi kwa ustadi picha na faili zingine kwenye kumbukumbu ya kompyuta, na uhifadhi viungo kwao kwenye hifadhidata. Wakati huo sikujua kuwa kulikuwa na vitu vya CLOB kwenye hifadhidata, kwa hivyo nilifanya hivi. Kulikuwa na REST API kwa watumiaji, programu za mteja. Na kulikuwa na vipimo vya kitengo kwa utendakazi wa kimsingi.

[…] Mfano mdogo wa kujifunza kwangu kwa Java kwa mafanikio. Katika mwaka wangu wa kwanza chuo kikuu, nilifundishwa C# na kupewa ufahamu wa upangaji wa OOP - ni madarasa gani, miingiliano, uondoaji ni, na kwa nini zinahitajika. Ilinisaidia sana. Bila hii, kujifunza Java ni ngumu sana; haijulikani kwa nini madarasa yanahitajika.

Kwa nini ujifunze Java na jinsi ya kuifanya kwa ufanisi. Ripoti ya Yandex

Katika mwaka wangu wa pili katika chuo kikuu, walifundisha tena msingi wa Java, lakini sikuacha hapo, nilikwenda kujifunza Spring mwenyewe na kuandika kazi ya kozi, mradi wangu, ambao nilitaja hapo juu. Na kwa haya yote, nilikwenda kwa mafunzo katika Yandex, nikapitisha mahojiano, na nikaingia Yandex.Market. Huko niliandika backend kwa Beru, hii ni soko letu, na kwa Yandex.Market yenyewe.

Baada ya hapo, miezi sita iliyopita, nilihamia timu nyingine ndani ya Soko hilo hilo. Tunafanya uchanganuzi kwa washirika wa biashara. Tuko kwenye jukwaa la uchanganuzi, kuna sisi watatu kwenye backend, kwa hivyo nina sehemu kubwa sana ya ushawishi kwenye mradi. Inavutia sana, kwa kweli. Hiyo ni, tunatoa data kwenye soko - ni mauzo gani, katika aina gani, katika mifano gani, kwa washirika wa biashara, makampuni makubwa yanayojulikana. Na kuna watatu tu kati yetu, tunaandika kanuni hii, na ni nzuri sana.

Asante! Viungo muhimu:
- "Java 8. Mwongozo wa Wanaoanza".
- Miundo ya data.
- SQLZOO.
- Urekebishaji wa Hifadhidata.
- Miundo ya Kubuni.
- Sampuli za Kubuni.
- Code safi.
- Java yenye ufanisi.

Chanzo: mapenzi.com

Kuongeza maoni