Hacker News

Kugabana kuri Stack

Ibitekerezo

9 min read Via go.dev

Mewayz Team

Editorial Team

Hacker News

Kuki Kugabana Stack Biracyafite akamaro mubuhanga bugezweho bwa software

Igihe cyose gusaba kwawe gutunganya icyifuzo, gukora impinduka, cyangwa guhamagara imikorere, hafashwe icyemezo cyicecekeye inyuma yinyuma: aya makuru agomba kuba yibuka he? Kumyaka mirongo, kugabana stack nimwe muburyo bwihuse, buteganijwe cyane bwo kwibuka bushobora kuboneka kuri programmes - nyamara buracyasobanuka nabi. Mugihe cyibihe byacungwa, abakusanya imyanda, hamwe nubwubatsi-kavukire, gusobanukirwa uburyo nigihe cyo kugenera kuri stack bishobora gusobanura itandukaniro riri hagati ya porogaramu ikoresha abakoresha 10,000 bahurira hamwe nimwe ihura munsi ya 500. Kuri Mewayz, aho urubuga rwacu rukorera ubucuruzi burenga 138.000 hamwe na modul 207 ihuriweho, buri microsecond yo kubara ububiko.

Ikirundo hamwe nikirundo: Ubucuruzi bwibanze-Off

Kwibuka mubidukikije byinshi byateganijwe bigabanijwemo uturere tubiri twibanze: ikirundo hamwe nikirundo. Ikibaho gikora nkicyanyuma-cyambere, cyambere-hanze (LIFO) imiterere yamakuru. Iyo imikorere yitwa, "ikadiri" nshya isunikwa kumurongo urimo impinduka zaho, aderesi zisubizwa, hamwe nibikorwa byimikorere. Iyo iyo mikorere igarutse, ikadiri yose irahita isohoka ako kanya. Nta gushakisha, nta kubika ibitabo, nta gucamo ibice - gusa icyerekezo kimwe cyo guhindura.

Ikirundo, bitandukanye, ni pisine nini yo kwibuka aho kugabana no kugabana bishobora kubaho murutonde urwo arirwo rwose. Ihinduka riza ku giciro: uwagabanije agomba gukurikirana ibibujijwe kubuntu, gutunganya ibice, kandi mundimi nyinshi, kwishingikiriza kumyanda kugirango ugarure ububiko budakoreshwa. Gutanga ikirundo muri gahunda isanzwe ya C bifata hafi inshuro 10 kugeza kuri 20 kurenza kugabanwa. Mu ndimi zegeranijwe n’imyanda nka Java cyangwa C #, hejuru irashobora kuba hejuru cyane mugihe ikiruhuko cyo gukusanya cyakozwe muri.

Gusobanukirwa ibi bicuruzwa ntabwo ari amasomo gusa. Mugihe wubaka software itunganya ibihumbi nibicuruzwa kumasegonda - yaba iyo ari moteri yo gutanga inyemezabuguzi, igihe nyacyo cyo gusesengura ibintu, cyangwa CRM ikora ibintu byinshi bitumizwa mu mahanga - guhitamo ingamba nziza zo kugabura inzira zishyushye bigira ingaruka ku gihe cyo gusubiza hamwe n’ibikorwa remezo.

Uburyo Kugabana Stack Mubyukuri Bikora

Kurwego rwibyuma, ibyubatswe byinshi byubaka byegurira igitabo (icyerekezo cya stack) kugirango gikurikirane hejuru yikibaho. Kugabura kwibuka kuri stack biroroshye nko kugabanya iyi ngingo numubare ukenewe wa bytes. Kugabana ni revers: kongera igitekerezo. Nta mutwe wa metadata, nta lisiti yubusa, nta guhuriza hamwe kumpande zegeranye. Niyo mpamvu kugabana stack bikunze gusobanurwa nkufite O (1) imikorere-ihoraho-yigihe hamwe na buke buke.

Reba imikorere ibara igiteranyo cyumurongo wa fagitire. Irashobora gutangaza impinduka nke zaho: umubare wuzuye, igiciro cyikiguzi kireremba, igipimo cyimisoro kireremba, nigisubizo kireremba. Indangagaciro zose uko ari enye zisunikwa kumurongo iyo imikorere yinjiye hanyuma igahita isubirwamo iyo isohotse. Ubuzima bwose burashobora kugenwa kandi busaba interineti zeru zitangwa na porogaramu cyangwa uwakusanyije imyanda.

Ubushishozi bwibanze: Gutanga ibice ntabwo byihuse - birateganijwe. Muri sisitemu-imikorere ikomeye, guhanura akenshi bifite akamaro kuruta umuvuduko muto. Igikorwa gihora cyuzuza microseconds 2 nigiciro cyinshi kuruta icyegeranyo cya microsecond 1 ariko rimwe na rimwe kigera kuri microseconds 50 kubera guhagarika imyanda.

Igihe cyo Gukunda Kugabana Stack

Ntabwo buri gice cyamakuru ari kumurongo. Ububiko bwa Stack bugarukira (mubisanzwe hagati ya 1 MB na 8 MB kuri buri murongo, bitewe na sisitemu y'imikorere), kandi amakuru yatanzwe kuri stack ntashobora kurenza imikorere yabiremye. Ariko, hariho ibintu bisobanutse aho kugabana stack aribwo buryo bwiza bwo guhitamo.

      Byaremewe, bikoreshwa, kandi bijugunywa murwego rumwe rukora.
        Buffer ya 256-byte yo gushiraho itariki yumurongo ni umukandida mwiza.

        Mubikorwa, abakoranya bigezweho nibyiza cyane mugutezimbere imikoreshereze ya stack. Tekinike nkisesengura ryo guhunga muri Go na Java ya JIT ikusanya irashobora guhita yimura ikirundo cyagenwe kumurongo mugihe uwakusanyije yerekanye ko amakuru adahunze ibikorwa. Gusobanukirwa ibi byiza bigufasha kwandika code isukuye mugihe ukomeje kungukirwa nibikorwa bya stack.

        Imitego isanzwe nuburyo bwo kubyirinda

        > Mubidukikije bibyara umusaruro, igicucu cyuzuye mubisanzwe gisenya urudodo cyangwa inzira yose nta nzira nziza yo gukira. Niyo mpamvu imiterere na sisitemu y'imikorere ishyiraho ingano yubunini.

        Undi mutego utagaragara ni ugusubiza ibyerekana cyangwa ibyerekeranye namakuru yatanzwe. Kuberako stack yibuka isubirwamo mugihe imikorere igarutse, icyerekezo icyo aricyo cyose cyo kwibuka gihinduka icyerekezo. Muri C na C ++, ibi biganisha kumyitwarire idasobanutse ishobora kugaragara nkigikorwa cyo kwipimisha ariko ikananirwa cyane mubikorwa. Kugenzura inguzanyo ya Rust ifata iki cyiciro cyamakosa mugihe cyo gukusanya, iyo ikaba ari imwe mu mpamvu ururimi rwabonye uburyo bwo gukurura porogaramu.

        Ikibazo cya gatatu kirimo umutekano wurudodo. Buri nyuzi ibona igipande cyayo, bivuze ko igabanywa ryamakuru yatanzwe muburyo bwihariye. Ibi mubyukuri ni akarusho mubihe byinshi - nta gufunga gukenewe kugirango ugere kubihinduka byaho. Ariko, abitezimbere rimwe na rimwe bakora ikosa ryo kugerageza gusangira amakuru yatanzwe hagati yinyuzi, biganisha kumiterere yubwoko cyangwa gukoresha-nyuma yubusa. Mugihe amakuru akeneye gusaranganywa kumutwe cyangwa gutsimbarara kurenza imikorere ihamagarwa, ikirundo nicyo guhitamo gikwiye.

        💡 DID YOU KNOW?

        Mewayz replaces 8+ business tools in one platform

        CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

        Start Free →

        Kugabanganya Gutondekanya Indimi na Frameworks

        Indimi zitandukanye zo gutangiza gahunda zikoresha kugabana stack hamwe nuburyo butandukanye bwo gukorera mu mucyo. Muri C na C ++, porogaramu ifite igenzura ryeruye: impinduka zaho zijya kumurongo, kandi malloc cyangwa nshya ishyira amakuru kumurundo. Muri Go, uwatoranije akora isesengura ryo guhunga kugirango ahitemo mu buryo bwikora, kandi ingagi zitangirana nuduce duto 2 KB dukura cyane - igisubizo cyiza kiringaniza umutekano nibikorwa. PHP, uburyo bwo gukoresha ururimi nka Laravel, itanga indangagaciro nyinshi binyuze mumbere yimbere ya Zend Moteri yububiko, ariko gusobanukirwa amahame shingiro bifasha abitezimbere kwandika kode ikora neza ndetse no murwego rwo gusaba.

        > Iyo modul 207 isangiye igihe, kugabanya kugisabwa kugabanwa kubisabwa na 15% birashobora kugabanywa kugabanuka kugiciro cya seriveri hamwe niterambere ryagerwaho mugihe cyo gusubiza kubakoresha amaherezo bayobora ubucuruzi bwabo kurubuga.

        JavaScript na TypeScript, imbaraga nyinshi zigezweho hamwe na Node.js zinyuma, zishingikiriza rwose kumashanyarazi ya V8 ikusanya imyanda kugirango icunge ububiko. Abashoramari ntibashobora kugabura muburyo butaziguye, ariko V8 yogukoresha neza (TurboFan) ikora igabanywa ryimbere imbere kubintu bishobora kwerekana ko ari igihe gito. Kwandika ibikorwa bito, byera hamwe nibihinduka byaho biha moteri amahirwe meza yo gukoresha ibyo byiza.

        Ingamba zifatika zo kugabanya umuvuduko wikirundo

        Nubwo waba ukora mururimi rwo murwego rwohejuru aho udashobora kugenzura neza na stack hamwe nogutanga ibirundo, urashobora gufata uburyo bugabanya umuvuduko wikirundo bitari ngombwa kandi ukareka igihe cyogukora neza.

        1. Hitamo ubwoko bwagaciro kuruta ubwoko bwerekanwe aho ururimi rubashyigikira. Muri C #, ukoresheje imiterere aho kuba urwego kubintu bito, bikunze kuremwa bikomeza kubishyira kumurongo. Muri Genda, gutambutsa uduce duto kubiciro aho kubigaragaza byerekana ingaruka zimwe.
        2. Irinde kugenera imbere imbere. Niba ukeneye igice cyigihe gito cyangwa umurongo imbere mumuzinga ukoresha inshuro 100.000, tanga rimwe mbere yumuzingo hanyuma usubire kuri buri itera.
        3. Koresha ikintu cyo guhuriza hamwe ibintu byakunze kuremwa no gusenywa.
        4. Umwirondoro mbere yo gutezimbere. Gukoresha neza utarondoye amakuru bishobora gukoresha imbaraga munzira zikonje zidakunze gukorwa.
        5. Koresha ikibuga cyagenewe ibikorwa byicyiciro.

        Izi ngamba ntabwo arizo nyigisho gusa. Iyo porogaramu ya SaaS ikora imirimo-nyayo-nyayo - nyir'ubucuruzi buciriritse atanga inyemezabuguzi za buri kwezi, umuyobozi wa HR ukoresha umushahara ku bakozi 200, itsinda ryamamaza ryasesenguye imikorere yo kwiyamamaza mu miyoboro - ingaruka ziterwa no gucunga neza kwibuka ni ibintu byoroshye, byitabirwa cyane abakoresha bumva nubwo batigeze batekereza kubibera munsi.

        Kubaka Imikorere-Ibitekerezo bya software ku munzani

        Kugenera ibice ni igice kimwe cyibikorwa binini cyane, ariko ni urufatiro. Gusobanukirwa uburyo kwibuka bikora kurwego rwo hasi biha injeniyeri moderi zo mumutwe bakeneye kugirango bafate ibyemezo byiza kuri buri cyiciro cya stack - kuva guhitamo imiterere yamakuru no gushushanya API kugeza kugena ibikorwa remezo no gushyiraho imipaka yumutungo wa serivise.

        Kubucuruzi bushingiye kumurongo nka Mewayz kugirango bakore ibikorwa byabo bya buri munsi, kwishyura ibyo byemezo byubwubatsi biragaragara: imitwaro yihuta yurupapuro, imikoranire yoroshye, hamwe nicyizere cyuko sisitemu itazangirika munsi yumutwaro mwinshi. Mugihe module yo gukenera ikeneye kugenzura iboneka muri kalendari nyinshi mugihe nyacyo, cyangwa ikibaho cyo gusesengura ikusanyamakuru ikusanya amakuru mubice byinshi byubucuruzi, ingamba zo kwibuka zifatika zirenze ibyo abakoresha benshi bazigera babimenya.

        Porogaramu nziza irumva idafite imbaraga zo gukoresha neza kuko abayiremye babize ibyuya bikomeza kutagaragara. Kugenera ibice - byihuse, bigena, kandi byiza muburyo bworoshye - ni kimwe mubintu bisobanutse bikwiye gusobanuka byimbitse, waba wandika gahunda yawe yambere cyangwa wubaka urubuga rukorera ubucuruzi ibihumbi nibihumbi kwisi yose.

        Ibibazo bikunze kubazwa

        Gutanga stack niki kandi kuki bitwaye?

        Gutanga Stack ni stratégies yo gucunga kwibuka aho amakuru abikwa muburyo bwa nyuma, imiterere-yambere ihita icungwa na progaramu ya progaramu ya progaramu. Nibyingenzi kuko ububiko bwagabanijwe bwibikoresho byihuta cyane kuruta kugabanwa ibirundo - nta gukusanya imyanda hejuru, nta gucamo ibice, no kugabana ako kanya iyo umurimo ugarutse. Kubikorwa-binenga imikorere, gusobanukirwa kugabanwa kugabanwa birashobora kugabanya cyane ubukererwe no kunoza ibicuruzwa.

        Ni ryari nshobora gukoresha igenamigambi hejuru yo kugabana ibirundo?

        Koresha igenamigambi rya stack kubintu bito, bigufi-byabayeho bihinduka hamwe nubunini buzwi mugihe cyo gukusanya - nkibintu byaho byuzuye, imirongo, hamwe nubunini bugaragara. Gutanga ibirundo bikwiranye nuburyo bunini bwamakuru, ibyegeranyo bingana, cyangwa ibintu bigomba kubaho kumurimo wabiremye. Amategeko y'ingenzi: niba amakuru yubuzima bwe bwose ahuye nimikorere yubunini nubunini bwayo buteganijwe, igipande ni hafi guhitamo byihuse.

        Ese gutondeka amakosa arenze urugero birashobora gukumirwa mubikorwa byo gukora?

        Yego, stack overflow amakosa arashobora gukumirwa hamwe nubuhanga bwa disipuline. Irinde kwisubiramo kwimbitse cyangwa kutagira umupaka, kugabanya imipaka minini ihinduka, kandi ukoreshe algorithms aho bishoboka. Indimi nyinshi hamwe na sisitemu y'imikorere ikwemerera kugena imipaka yubunini. Gukurikirana ibikoresho hamwe nibisubizo bya platform nka Mewayz , OS yubucuruzi 207-module itangirwa $ 19 / mo, irashobora gufasha amakipe gukurikirana ubuzima bwimikorere no gufata ibyemezo hakiri kare.

        Indimi zigezweho ziracyungukirwa no kugabana stack?

        Rwose. Ndetse n'indimi zifite igihe cyagenwe - nka Go, Rust, C #, na Java - koresha isesengura ryo guhunga kugirango umenye niba impinduka zishobora kugabanywa aho kugenerwa ibirundo. Rust ishyira mubikorwa igenamigambi ryambere binyuze muburyo bwa nyirayo, kandi Go's compiler irabikora neza. Gusobanukirwa nubukanishi bifasha abitezimbere kwandika code abayitegura bashobora gukora neza, bikavamo imikoreshereze mike yo kwibuka hamwe nigihe cyo gukora byihuse.