Stack ve Heap nedir? IoC Container nedir?

reqz

Üye
26 Ağu 2023
61
27
Software


STACK VE HEAP NEDİR?

i



Ön Tanım:
Stack ve heap genel programcılıkta bir terimdir. Bu terimler aslında bellekte referans tutma şekilleriyle ile ilgilidir.

i



Stack:
Stackte oluşturulan değişkenler çıkınca direk silinirler ve sadece derleme zamanında oluşturulur sonrasında Garbage Collector isimli bir yere atılırlar. Adından da anlaşılacağı üzere çöp toplayıcısı. Bellekte bir yer tutmaz. Oluşturulan değişkenler stack'ten çıkınca değiştirilir.
i


Heap:
Heap referans tutucu yerlere denir. Heap stack gibi bellekten silinmez. Referans tipler heap üzerinde oluştuktan sonra silinse de bellekten silinmez. Değişkenler Java, C# gibi dillerde GC'yle silinir ama GC'siz dillerde silinmezler.

Örneğin:
(C# dilinde bir örnek)
public int Toplama(int num1, int num2);
{
int num1 = 1;
int num2 = 2;
}

public void Sonuc();
{
return num1 + num2;
}
Sonuc sonuc = new Sonuc();
Console.WriteLine(sonuc);
New'lendiği için heapten silinmez. Böyle basit bir konu gibi görünse de projelerde çok işe yarayan bir özelliktir.
IoC Container nedir? (Inversion of Control)
i

IoC Container, yazılım dillerinin kendine has referans tutucularıdır. Bu farklı dillerde değişebilir ama OOP dillerinde vardır. Bu projelerde önemli bir şeydir.
Mesela bir WebAPI'miz olsun ya da bir Logger'ımız olsun. Bunu new'lemek istediğimizde kendi yazılım dilinin IoC Container'ını kullanarak onun içinde newler. Mesela WebAPI'de C# dilinde builder.Services.AddSingleton(objectmanager, iobjectservice); diyerek WebAPI'de C#'da örneklenmiş bir şekilde böyle newleriz ve bu yazılım dilinin kendi IoC Container'ını kullanmış oluruz.
Java'da da Springboot'un kendine has IoC container'ı vardır.
Fakat yapay IoC Container'larda vardır, örneğin C#'ta Autofac, Ninject... Diğer dillerde de aynı şekilde yapay IoC Container'lar bulunabilir.


Yapay IoC Container'lar ne işe yarar:

Yapay IoC Container'lar yani insanlar tarafından yapılmış IoC Container'lar büyük projelerde projelerde kolaylık ve karışıklılığın önlenebilmesi için kullanılır.

Bir class'ı newlemek yerine bir kere o pakette yazıp diğer kullanışlarınızda sizin yerinize newler.




-Reqz
 
Son düzenleme:
10 Tem 2023
12
3
Bedava tüm dillerin temelini vermişsin dostum 😄Harika 👍
Mesaj otomatik olarak birleştirildi:

Bedava tüm dillerin temelini vermişsin dostum 😄Harika 👍
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.