Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 15843|Vastaus: 0

[Lähde] Staattisten menetelmien ja yksittäisten kuvioiden analyysi

[Kopioi linkki]
Julkaistu 10.10.2019 18.15.05 | | |
Ohjelmoinnissa on usein tällaista sekaannusta: jotkut funktiot ratkaistaan yksittäisillä menetelmillä ja jotkut staattisilla menetelmillä, joten mitkä ovat staattisten metodien ja singletonien periaatteet ja käyttöskenaariot? Selvennetäänpä tämä tänään.

1. Katsotaanpa ensin eroa staattisten ja ei-staattisten menetelmien välillä?

        Monet ohjelmoijat ymmärtävät, että staattiset metodit latautuvat ensin, ei-staattiset menetelmät myöhemmin, staattiset metodit ovat aina muistissa ja ei-staattiset menetelmät eivät. Siksi suositellaan ei-staattista menetelmää. Ensinnäkin on väärin korostaa, että tämä ymmärrys on väärä.

        Ensiksi analysoidaan muistista, kun sovellus alustetaan, CLR (CLR on Common Language Runtime) on myös ajonaikainen ympäristö kuten Java-virtuaalikone, joka vastaa resurssien hallinnasta (muistin varaus ja roskien kerääminen jne.) ja varmistaa tarvittavan erottelun sovelluksen ja taustalla olevan käyttöjärjestelmän välillä. CLR:llä on kaksi eri käännösnimeä: Common Language Runtime ja Common Language Runtime. Määrittää osoiteavaruuden jokaiselle prosessille käytettävissä olevassa avaruudessa, joka on hallittu heap. Hallittu hea on jaettu useisiin alueisiin, joista tärkeimmät ovat roskien keräyskeikko (GC Heap) ja loader heap (Loader Heap), jota käytetään objektiinstanssien tallentamiseen ja jota GC hallinnoi. Tärkein tieto, jonka Loader Heap tallentaa MethodTable-taulukkoon, on metatietoihin liittyvä tieto, kuten perustyypit, staattiset kentät, toteutusrajapinnat ja kaikki menetelmät. Loader Heap ei hyväksy GC:n hallintaa, ja sen elinkaari ulottuu luomisesta tuhoon. Toisin sanoen, kun luokka on ladattu, sekä staattiset että ei-staattiset menetelmät tallennetaan Load Heapin MethodTab-taulukkoon ilman GC-ohjausta, ja ne pysyvät kaikki muistissa ensimmäisen latauksen ajan.

        Mikä on ero staattisen ja ei-staattisen menetelmän välillä? Ero on siinä, että objektin luomisessa staattisella metodilla on vain kopio, kun taas ei-staattinen metodi kopioi tämän instanssin tiedoista GC Heapissa jokaiselle uudelle objektille ja samalla laittaa uuden objektin pinoon. Pinoosoittimen osoittama osoite on muistiosoite, joka juuri kopioidaan GC Heapiin. Siksi metodikutsunopeuden kannalta staattiset menetelmät ovat nopeampia, koska ei-staattiset menetelmät täytyy instansoitua ja varata muistia.

Ohjelmoinnin historian näkökulmasta lähes kaikki varhaisen rakenteellisen ohjelmoinnin menetelmät olivat staattisia menetelmiä, ja instanssimenetelmien käyttöönotto oli olio-ohjelmointia, joten instansointimenetelmä ei ratkaissut suoritustehokkuuden ja muistin ongelmaa. Sen tarkoituksena on tehdä kehityksestä kuvioituneempi ja objektilähtöisempi.

        Yllä olevasta analyysistä voidaan tehdä johtopäätös: 1. Staattinen menetelmä ja ei-staattinen menetelmä ovat ratkaisutilan ero. 2. Jos kyseessä on periytyminen, polymorfismi tai jos metodilla ei ole mitään tekemistä luokkansa objektin kanssa, sinun tulisi valita staattinen metodi, kuten työkaluluokka.        

2. Mikä on ero singleton-tilan ja staattisen menetelmän välillä?

        Joskus meidän täytyy ylläpitää tiettyä tietoa insinööritieteissä, kuten joitakin konfiguraatioattribuutteja, jotka ladataan ajonaikaisesti, ja niiden täytyy olla olemassa sovelluksen elinkaaren ajan ja julkisia, joten tarvitaan vain yksi kopio. Tässä vaiheessa harkitsemme singleton- eli staattisen menetelmän käyttöä datan ylläpitoon, mutta tällä hetkellä data saadaan olio-orientoituneesti, käytämme singleton-menetelmää.

        Ensinnäkin staattiset menetelmät ovat luokkapohjaisia ja singletonit objektipohjaisia. Jos resoluutiokuvio on objektipohjainen, käytä singleton-mallia, muuten staattista lähestymistapaa. Esimerkiksi sinun täytyy periä luokkia, toteuttaa rajapinnat, viivästyttää alustusta, kirjoittaa vanhempia luokkia uudelleen jne. käyttääksesi singletoneja, toiseksi staattiset metodit ovat prosessilähtöisiä ja singletonit objektipohjaisia. Kolmanneksi staattiset attribuuttimuuttujat eivät tyhjenny GC:llä, joten yksittäisiä objekteja ei tyhjennä GC, ja staattisilla metodeilla generoidut objektit vapautuvat staattisen metodin suorittamisen yhteydessä.




Edellinen:Hajautetun viestinnän väliohjelmistokäytäntö (kirjoittanut Ni Wei) Täysi kiinalainen PDF
Seuraava:Dell Latitude 5501 -kannettavan sammutus ja automaattinen virran käynnistys ratkaistu.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com