Pluton Mesaj tarihi: Kasım 19, 2015 Mesaj tarihi: Kasım 19, 2015 Selamlar şimdi bir IP havuzu yapmam gerekiyor ve belli aralıklarla bu havuzda ki aynı iplerin sayısını çıkarmam gerekiyor. Diğer bir sorum. Ip adreslerni IpAdress olarak mı yoksa string olarak mı tutsam bilemedim çünkü c# 'da orta seviyelerdeyim. Dictionary'de IpAdress, int yaparak eğer Ip hiç yoksa ekleticem daha sonra +1 ile update etmeyi düşünüyorum. Hangisi daha mantıklı ve sağlıklı olur ?
Kojiroh Mesaj tarihi: Aralık 4, 2015 Mesaj tarihi: Aralık 4, 2015 IPAddress veya string tutmanın performans açısından hiçbi fark yaratacağını sanmıyorum ben, o yüzden lazım olur diye IPAddress olarak tutmak daha faydalı olur. Bakarsın bi yerde IPAddress instance'ına laızm olur, sen ya da çağırdığın fonksiyon IPAddress.Parse(...) diyip parse etmek zorunda kalmaz. List vs dictionary konusunda da List veya Dictionary olarak tutacağını varsayarsak durum şöyle; List'te tüm IP adreslerinin toplam sayısını bulmak O(1) zamanlı bi işken (list.Count demek yeterli), herhangi bi IP adresinin sayısını bulmak zor (list.Where(x => x == ip).Count() demek gerek ki bu kesinlikle O(1) değil). Dictionary'de ise tam tersi, herhangi bi IP adresinin syısını bulmak O(1) zamanlı ve kolay (dict.GetOrDefault(ip, 0)), tüm IP'lerin toplamını bulmak zor (dict.Values.Sum() ki bu da O(1) değil). Yeni bi IP adresi eklemek ikisinde de kolay, ilkinde list.Add(ip), ikincisinde list[ip] = list.GetOrDefault(ip, 0) + 1; Yalnız her iki durumda da direkt List ve Dictionary kullanmak yerine thread-safe alternatiflerini (List yerine BlockingCollection, Dictionary yerine ConcurrentDictionary) kullanmak lazım ki aynı anda aynı IP adresinden iki istek gelip farklı thread'ler tarafından ele alındığında sorun çıkarmasın. Tabi kullanım şekilleri birazcık daha değişiyo ama en azından güvenli. Onun dışında, eğer sunucunu birden fazla instance olarak çalıştıracaksan ve bu IP adresleri her instance tarafından ortak olarak erişilecekse bi veritabanında veya Hazelcast, Redis gibi bi in-memory key-value store'da tutmak lazım.
Pluton Mesaj tarihi: Aralık 6, 2015 Konuyu açan Mesaj tarihi: Aralık 6, 2015 Çok iyi bir anlatım olmuş. Çok teşekkürler. Çoktan yapmıştım birşeyler ama buna göre tekrar değiştiricem
Öne çıkan mesajlar