Çalışma Planı
Adım Adım Backend
Hiçbir şey bilmediğini varsayıp baştan başlıyoruz: önce Java'nın içi, sonra Spring, veri katmanı ve birbiriyle konuşan servisler. Günde iki kısa ders, haftada beş gün. Altıncı gün karışık alıştırma, yedinci gün dinlenme.
10 hafta 90 ders 60 dk / gün
Bir gün nasıl geçer
-
1 10 dk
Tekrar kartları
Vadesi gelen soruları çöz. Unutmaya başladığın yeri burası yakalar.
-
2 20 dk
Birinci ders
Özet, simülatör ve Checkpoint soruları. Derinleş bölümlerini şimdilik kapalı bırak.
-
3 5 dk
Mola
Ekrandan kalk. Beyin bu arada öğrendiğini yerine koyuyor.
-
4 20 dk
İkinci ders
Aynı sırayla. Bitince dersin sonundaki Kendini sına bölümünü çöz.
-
5 5 dk
Derinleş (isteğe bağlı)
Vakit kalırsa dünkü dersin kod örneğini aç ve dosyaları tek tek oku.
Haftada beş gün iki ders. Altıncı gün Pratik sayfasında 20 soruluk karışık bir alıştırma. Yedinci gün hafif gün: Tekrar sayfasında birkaç kart çözmek yeter, serin de korunur.
Bugün
Yolda sıradaki iki ders:
Hafta 1
Java ve OOP temeli
Bilgisayarın hafızasında neler oluyor, nesneler nasıl kurulur? Gerisinin hepsi bunun üstüne oturuyor.
0/10 ders tamamlandı
- SıradaStack, Heap ve Pass-by-Value9 dk
- SıradaString — Hiç Değişmeyen Metin8 dk
- Sıradafinal ve static — Kilitli Olan ve Ortak Olan8 dk
- SıradaSınıf, Nesne ve Kapsülleme — Kuralı Kim Koruyor?8 dk
- SıradaKalıtım ve Kompozisyon — Kimin İç Ayrıntısına Bağlısın?8 dk
- SıradaPolimorfizm ve Dinamik Bağlama — Kararı Kim Veriyor?8 dk
- SıradaInterface ve Abstract Class — Rol mü, İskelet mi?8 dk
- SıradaHashMap, equals ve hashCode10 dk
- SıradaKoleksiyonların İçi — ArrayList, LinkedList ve Iterator8 dk
- SıradaException Yönetimi — Hata Yukarı Çıkarken Ne Kaybolur8 dk
Hafta 2
Nesneleri derinlemesine
Nesnelerin nasıl doğduğu, kimin neye erişebildiği ve değişmeyen sınıflar: OOP'nin temelini sağlamlaştıran küçük adımlar.
0/6 ders tamamlandı
- SıradaConstructor ve this — Nesne Nasıl Doğar?8 dk
- SıradaErişim Belirleyiciler — Kim Hangi Kapıdan Girer?8 dk
- SıradaObject Sınıfı — Her Nesnenin Ortak Mirası8 dk
- SıradaDeğişmez Sınıf Tasarlamak — Bir Kez Kur, Hep Güven9 dk
- Sıradaİç İçe Sınıflar — static, Inner, Anonim ve Yerel9 dk
- SıradaSoyutlama ve Dört Sütun — Hangi Değişikliğe Hangisi Yardım Eder?9 dk
Hafta 3
Modern Java ve concurrency
Kodu kısa ve okunur yazmanın modern yolları, sonra aynı anda çalışan thread'lerin kafa karıştıran dünyası.
0/10 ders tamamlandı
- SıradaGenerics ve Type Erasure — Derleyicinin Bildiği, JVM'in Unuttuğu8 dk
- SıradaLambda ve Fonksiyonel Arayüzler — Lambda Neyi Yakalar?8 dk
- SıradaOptional'ı Doğru Kullanmak — Yokluğu Tipe Yazmak8 dk
- SıradaStream API ve Tembellik10 dk
- SıradaJava 8'den 21'e — Her Özellik Bir Hata Sınıfı10 dk
- SıradaRace Condition ve Görünürlük10 dk
- SıradaConcurrency Araçları — Executor, Lock, Atomic ve Deadlock9 dk
- SıradaConcurrentHashMap — Güvenli Map, Güvensiz Sayaç9 dk
- SıradaVirtual Threads vs Platform Threads10 dk
- SıradaTemiz Kod — İsimler, Fonksiyonlar, Yorumlar9 dk
Hafta 4
Spring çekirdeği
Spring'in perde arkasında senin yerine yaptığı işler: nesneleri kurmak, bağlamak ve sarmalamak.
0/10 ders tamamlandı
- SıradaIoC ve Dependency Injection9 dk
- SıradaSpring MVC — Bir İstek Controller'a Nasıl Ulaşır?10 dk
- SıradaAuto-configuration — Bu Bean Nereden Geldi?8 dk
- SıradaKonfigürasyon ve Profiller — Bu Değer Nereden Geldi?8 dk
- SıradaTransaction Propagation ve Rollback Yayılımı10 dk
- SıradaAOP, Proxy ve Self-Invocation Tuzağı10 dk
- SıradaValidation ve Hata Yönetimi — İstemci Ne Görüyor?8 dk
- SıradaSpring Cache — @Cacheable Kimin Cevabını Hatırlıyor?9 dk
- Sırada@Async ve Thread Havuzu — Max Neden Hiç Dolmuyor?9 dk
- SıradaSpring Security Filter Chain10 dk
Hafta 5
Veri, JPA ve Hibernate
Veritabanıyla konuşurken sessizce yanlış giden şeyler ve onları görünür hale getirmek.
0/10 ders tamamlandı
- SıradaJPA N+1 Problemi10 dk
- SıradaPersistence Context — Hibernate'in Hafızası9 dk
- SıradaJPA Projection ve DTO — Üç Alan İçin Ne Kadar Veri?8 dk
- SıradaID Üretimi ve Batch Insert — 200 Satır Kaç Gidiş Dönüş?8 dk
- SıradaFlush ve SQL Sırası — save() Satırında Neden Hiçbir Şey Olmuyor?8 dk
- SıradaCascade ve İlişkinin Sahibi — Kalem Gerçekten Eklendi mi?9 dk
- SıradaSQL mi, NoSQL mi? — Önce Erişim Desenini Yaz8 dk
- Sıradaİzolasyon Seviyeleri — Aynı İsim, Üç Farklı Davranış9 dk
- SıradaSQL İndeksleme ve EXPLAIN10 dk
- SıradaBağlantı Havuzu — Büyük Havuz Hızlı Havuz Değildir8 dk
Hafta 6
Dağıtık sistemler
Tek uygulama yetmeyince: servisleri bölmek, konuşturmak ve biri çöktüğünde ayakta kalmak.
0/10 ders tamamlandı
- SıradaMonolit mi, mikroservis mi?9 dk
- SıradaServis Sınırları — Bounded Context ve Database-per-Service10 dk
- SıradaMikroservis Katmanları — İstek Nereden Geçiyor10 dk
- SıradaREST Tasarımı ve Idempotency10 dk
- SıradaBFF — Backend for Frontend10 dk
- SıradaFeign Client — Kolaylığın Gizlediği Şeyler10 dk
- SıradaCircuit Breaker10 dk
- SıradaAPI Gateway ve Service Discovery — İstek Doğru Kapıyı Nasıl Bulur9 dk
- SıradaOutbox ve Idempotent Consumer — Olay Kaybolmasın, İki Kez de İşlenmesin9 dk
- SıradaSaga Pattern10 dk
Hafta 7
Dağıtık sistemler, ikinci adım
Servisler arasında tutarlı kalmak, bir isteği uçtan uca izlemek ve bir sistemi kimseyi kırmadan servislere taşımak.
0/9 ders tamamlandı
- SıradaDağıtık Transaction — 2PC Neden Nadiren, Saga Neden Sık10 dk
- SıradaActuator ve Gözlemlenebilirlik — Sağlık, Metrik, İz9 dk
- SıradaDağıtık Tracing — Bir İsteği Beş Servis Boyunca İzlemek10 dk
- SıradaStrangler Fig ve API Sürümleme — Monoliti Kimseyi Kırmadan Taşımak10 dk
- SıradaCQRS ve Event Sourcing — Olanı Yaz, Okumayı Ayır10 dk
- SıradaRate Limiting — Kapıdan Saniyede Kaç Kişi Geçer?10 dk
- SıradaCache Stratejileri — Defter Ne Zaman Yalan Söyler?10 dk
- SıradaYük Dengeleme — Trafik Artınca Kapıya Kim Bakar?10 dk
- SıradaURL Kısaltıcı Tasarımı — Parçaları Tek Sistemde Birleştirmek10 dk
Hafta 8
Tasarım ve ölçekleme
Kodu uzun yıllar yaşayacak biçimde düzenlemek ve kullanıcı sayısı artınca büyüyebilmek.
0/10 ders tamamlandı
- SıradaSOLID — Beş Harf, Tek Soru10 dk
- SıradaNesne Yönelimli Tasarım — Kapsülleme ve Kompozisyon10 dk
- SıradaTasarım Kalıpları — Ne Zaman Kazandırır10 dk
- SıradaZengin Domain Modeli — JPA Entity'de Kapsülleme10 dk
- SıradaValue Object ve Record — Anlamı Tipe Taşımak10 dk
- SıradaYaratımsal Kalıplar — Constructor Ne Zaman Yetmez10 dk
- SıradaSpring'in İçindeki Kalıplar — Strategy, Template Method, Proxy, Observer10 dk
- SıradaCode Smell ve Refactoring — Davranışı Değiştirmeden Değiştirmek8 dk
- SıradaOturum Yönetimi ve Stateless Ölçekleme10 dk
- SıradaKafka — Partition, Consumer Group ve Lag10 dk
Hafta 9
Java'da sık karşılaşılanlar
Her Java projesinde karşına çıkan ama ayrı bir yere sığmayan konular: sıralama, para hesabı, enum'lar ve daha fazlası.
0/10 ders tamamlandı
- SıradaComparable ve Comparator — Kim Önce Gelir?8 dk
- SıradaBigDecimal — Parada Kuruş Kaybetmemek8 dk
- SıradaZaman ve Saat Dilimleri — Havale Hangi Güne Yazılır?9 dk
- SıradaEnum — Sabit Bir Seçenek Listesi8 dk
- Sıradaint ve Integer — Kutulu ve Kutusuz Sayılar8 dk
- SıradaAnnotation ve Reflection — Spring'in Sihri Nasıl Çalışır?9 dk
- SıradaBellek Sızıntısı ve Referans Türleri — GC Neyi Bırakabilir?10 dk
- SıradaProd'da Teşhis — Heap Dump, Thread Dump ve İlk On Beş Dakika10 dk
- SıradaJVM Konteynerde — Bellek Sınırı Heap'ten Büyüktür10 dk
- SıradaJMH ile Doğru Ölçüm — Sayıya Güvenmeden Önce9 dk
Hafta 10
Tasarımı derinleştirmek
Değişimi ucuz tutan küçük kurallar, kalıpların geri kalanı ve iş kurallarını dış dünyadan ayırmak.
0/5 ders tamamlandı
- SıradaDRY, KISS, YAGNI ve Demeter — Değişimi Ucuz Tutmak10 dk
- SıradaYapısal Kalıplar — Sarmalayarak Genişletmek8 dk
- SıradaDavranışsal Kalıplar — State, Chain of Responsibility, Command9 dk
- SıradaHexagonal Mimari — Bağımlılık Oku Hangi Yöne Bakıyor10 dk
- SıradaDomain Olayları — Hesap Açılmadı, Hoş Geldin E-postası Neden Gitti?8 dk
Başka bir yol
Ön Yüz Adım Adım
Tarayıcıdan React'e, formdan performansa, günde iki küçük adım
Üretimde Ayakta Kalmak
Yük gelince, bir şey bozulunca, yeni sürüm çıkarken servisi ayakta tutmak
Veriyle Barışmak
Tablodan Hibernate'e: veri nerede durur, nasıl okunur, neden bazen şaşırtır
Güvenle Değiştirmek
Testten yayına: kodu değiştirirken içinin rahat olması
Yapay Zekâyla Kod Yazmak
Asistanı kullanmayı değil, ona güvenmenin sınırını öğrenmek
Derin Sular
Temeli bitirdin mi? JVM'in, Spring'in ve servisler arası konuşmanın derinleri
Para ve Piyasa
Bir emrin borsaya gidip geri dönüşü, adım adım
Yol bittikten sonra
Yolu bitirince merakına göre seç. Bunlar daha ileri ya da backend dışı konular; şimdilik bakman gerekmiyor.
Core Java & Eşzamanlılık
- Java Memory Model ve Yeniden Sıralama
- ThreadLocal ve ScopedValue — Havuzdaki Thread Neyi Hatırlıyor?
- JVM Konteynerde CPU — Ortalama Düşük, İstek Neden Yavaş?
- JDK 8'den 21'e Geçiş — Derleme Yeşil, Rapor Sunucusu Neden Açılmadı?
- CompletableFuture ve Structured Concurrency
- Garbage Collection — Üçlü Takas
- Sınıf Yükleme ve JIT — Uygulama Neden Isınır?
Spring Boot Ekosistemi
- Bean Yaşam Döngüsü ve Scope'lar
- Spring Kafka Hata Yönetimi — Bozuk Mesaj Partition'ı Durdurur mu?
- @Scheduled ve ShedLock — Cron İşi Kaç Pod'da Çalışıyor?
- Yapılandırılmış Loglama — Gece 2'de Doğru Satırı Bulmak
- OAuth2 ve OIDC — Şifreni Vermeden Nasıl Giriş Yapılır?
- Parola Saklama — Kullanıcı Tablosu Sızdı, Şimdi Ne Olacak?
- SSRF — Müşterinin Verdiği Adresi Sunucu Neden Çağırmamalı?
- WAR ve Uygulama Sunucusu — Tomcat'te Çalışan, WildFly'da Neden Açılmadı?
- Graceful Shutdown — Deploy Sırasında Kaç İstek Düşer?
- WebFlux ve Event Loop — Bloklayan Tek Satır Neyi Durdurur?
Mikroservisler & Design Patterns
- Servisler Arası İletişim Desenleri
- gRPC ve REST — Aynı Havale, İki Dil
- RabbitMQ — Mesaj Hangi Kuyruğa Gider?
- Bulkhead — Tek Yavaş Servis Neden Herkesi Düşürür?
- Webhook Almak — Ödeme Tamamlandı Diyen Gerçekten Sağlayıcı mı?
- Olay Şemasının Evrimi — Alanın Adını Değiştirdin, Kim Kırıldı?
- Servisler Arası Kimlik — İç Ağdan Gelen Her İstek Güvenilir mi?
- BFF'de Güvenlik ve Alternatifler — Token Handler, GraphQL, Gateway
- IBM MQ ve Sıralı Teslim — Gerçekleşme, Emirden Önce Nasıl İşlendi?
System Design & Dağıtık Sistemler
- SLO ve Hata Bütçesi — Ne Kadar Bozuk Olmaya İzin Var?
- Backpressure ve Yük Atma — Kuyruk Dolarsa Ne Olur?
- Retry, Backoff ve Jitter — Herkes Aynı Anda Tekrar Denerse
- Bloom Filter — "Kesinlikle Yok" mu, "Belki Var" mı?
- CDN ve Kenar Önbellek — Kampanya Sayfası Hızlansın, Hesap Sayfası Karışmasın
- Dağıtık Kilit ve Fencing Token — Kilit Senin Sandığında
- Lider Seçimi ve Split-Brain — Ağ Bölününce Kim Karar Verir?
- Mantıksal Saatler — Sunucuların Saati Farklıysa Hangisi Önce Oldu?
- Çok Bölgeli Kurulum — Bir Bölge Kararınca Banka Çalışmaya Devam Eder mi?
DevOps & Test
- Test Piramidi, JUnit 5 ve Mockito
- TDD — Red, Green, Refactor
- Docker Katman Cache ve İmaj Boyutu
- Spring Test Dilimleri ve Context Cache
- Testcontainers — Gerçek Veritabanı, Tek Konteyner, Kilitli Kapı
- Yayın Stratejileri — Hatalı Sürüm Kaç Kişiye Dokunur?
- Özellik Bayrakları — Deploy Ettim Ama Kimse Görmedi
- CI Pipeline — Geri Bildirim Neden Bu Kadar Geç Geliyor?
- Sözleşme Testleri — Karşı Servis Değişince Kim Kırılır?
- Sırlar — Parola Git'e Girerse Ne Olur?
- Kararsız Testler — Kod Değişmedi, Test Neden Bir Kırmızı Bir Yeşil?
- Kapsama ve Mutasyon — Yüzde Yüz Test, Hata Nasıl Geçti?
- Çok Modüllü Maven — common'ı Değiştirdim, Neyi Derlemeliyim?
Frontend & Entegrasyon
- TypeScript Tip Sistemi ve Daraltma
- JavaScript Olay Döngüsü — setTimeout(0) Neden Sonra Yazıyor?
- Flexbox mı Grid mi — Telefonda Sayfa Neden Yana Kayıyor?
- Erişilebilirlik Temelleri — Gözü Kapalı Para Gönderebilir misin?
- React Render Modeli
- useEffect — Bağımlılıklar ve Temizlik
- Tarayıcı Nasıl Çizer — Animasyon Neden Takılıyor?
- Form Gönderimi — Bir Tıkla İki Havale Nasıl Olur?
- CORS — Postman'de Çalışıyor, Tarayıcıda Neden Hata?
- Canlı Veri — Polling, SSE ve WebSocket
- Core Web Vitals — Sayfa Ne Zaman Gerçekten Hazır?
- State Nerede Yaşamalı? — Bileşen, Üst Bileşen, Context, Cache, URL
- Form Doğrulama — Hatayı Ne Zaman Göstermeli?
- Tarayıcı Önbelleği — Yeni Sürümü Yayına Aldın, Müşteri Neden Hâlâ Eskisini Görüyor?
- XSS — Havale Açıklamasına Yazılan Kod Neden Müşterinin Sayfasında Çalışır?
- İyimser Arayüz — Ne Zaman Hemen 'Tamam' Denir, Ne Zaman Beklenir?
- Kod Bölme — Giriş Ekranı Neden Grafik Kütüphanesini İndiriyor?
- Çevrimdışı Uygulama — Metroda Bağlantı Kopunca Ne Gösterilir?
- Bileşen Testi — Sınıf Adı Değişti, Test Neden Kırıldı?
- Anında Arama — Müşteri "kira" Yazdı, Ekranda Neden "k" Sonuçları Var?
Yapay Zekâ ile Geliştirme
- Dil Modeli Nasıl Cevap Üretir — Neden Var Olmayan Bir Metot Uydurur?
- Bağlam ve Görev Tarifi — Yazmadığın Her Karar Bir Tahmindir
- AI Kodunu Gözden Geçirmek — Akıcı Görünmek Doğru Olmak Değil
- AI ile Test ve Güvenlik — Yeşil Test, Doğru Test Değildir
- Ajan Tabanlı Geliştirme — Hızlı Çalışsın, Sınırı Sen Çiz
- RAG — Modele Doğru Belgeyi Göstermek
- Modelin Cevabını Uygulamada Kullanmak — Doğrulamadan Kaydetme
- Modele Araç Vermek — Asistan Hesabı ve Tutarı Kendisi Yazınca
- İstemi Ölçmek — Yeni Sürüm Gerçekten Daha mı İyi?
- Cevabı Akıtmak — Asistan Yazarken Müşteri Neden Boş Ekrana Bakıyor?
Veritabanları
- Normalizasyon — Aynı Bilgi Neden Tek Yerde Durmalı?
- Aynı Sorgu, Üç Lehçe — PostgreSQL, SQL Server, Oracle
- Doküman Modelleme — Göm mü, Referans mı?
- Sharding ve Shard Anahtarı — Veriyi Bölmenin Tek Önemli Kararı
- Sayfalama — OFFSET mi, Keyset mi?
- Tam Metin Arama — LIKE '%kira%' Neden Hem Yavaş Hem Eksik?
- Pencere Fonksiyonları — Ekstrede Yürüyen Bakiye Nasıl Hesaplanır?
- Tablo Bölümleme — Eski Yılı Silmek Neden Bütün Geceyi Aldı?
- Materialized View — Pano Her Açılışta Neden Bütün Günü Yeniden Topluyor?
- Yedek ve Geri Dönüş — WHERE'siz Bir DELETE Kaç Saatlik Veriyi Götürür?
- Liquibase — Bir Satırı Düzelttim, Uygulama Neden Açılmadı?
- MVCC ve Kilitler — Eski Satır Sürümleri Nerede Yaşar?
- Sorgu Planı ve Join Algoritmaları — Planner Neden Bu Yolu Seçti?
- Replikasyon ve Okuma Replikaları — Yazdım Ama Göremiyorum
- Tutarlılık Seviyeleri ve Quorum — CAP'ı Doğru Okumak
- Kesintisiz Şema Değişikliği — Genişlet, Taşı, Daralt
- LSM Ağacı — Yazmayı Ekleyerek Hızlanan Veritabanları
- SQL Server'da Kilit Yükseltme — Gün Sonu İşi Neden Müşteriyi Bekletti?
Hibernate ve JPA
- Entity equals ve hashCode — Aynı Sipariş mi?
- Toplu UPDATE — Veritabanı Değişti, Nesnen Neden Haberi Yok?
- join fetch ve Sayfalama — 10 Sipariş İçin Bütün Tablo
- Kalıtım Stratejileri — Üç Ödeme Türü, Kaç Tablo?
- Soft Delete — Silinen Hesap Gerçekten Gitti mi?
- Dinamik Sorgu — Filtre Ekranı Bir Kapıya Dönüşmesin
- Enum Eşleme — Bloklu Kart Neden Bir Gün Dondurulmuş Göründü?
- Kiracı Ayrımı — A Bankasının Müşterisi B Bankasının Verisini Görmesin
- İkinci Seviye Cache — Hangi Cache, Hangi Soruya Cevap Verir?
Finans ve Trading Sistemleri
- Emir Defteri — 900 Lotluk Alış Neden Ekrandaki Fiyattan Pahalıya Geldi?
- Emrin Yaşam Döngüsü — İptal Ettim Sandım, Borsa Neden Doldurdu?
- FIX Oturumu ve Sıra Numarası — İki Gerçekleşme Nereye Kayboldu?
- Mutabakat — Toplamlar Tuttu, Hesap Neden Yine de Yanlış?
- Takas ve DvP — Hisseyi Verdik, Para Neden Gelmedi?
- Hak Kullanımı — Bölünme Sabahı Müşteri Neden Yarı Yarıya Zararda Göründü?
- Fon Fiyatı ve Kesim Saati — Geç Gelen Emir Kimin Parasıyla Kazandı?
- Piyasa Verisi — Ekranda Görünen Satış Neden Gerçekte Yoktu?
- İşlem Öncesi Risk ve Kill Switch — Strateji Durmadan Emir Yağdırırsa?
- TWAP, VWAP, POV — 6.000 Lotu Kimse Fark Etmeden Nasıl Alırsın?
- Arbitraj ve Bacak Riski — 100 TL'lik Fırsat Nasıl Açık Bir Pozisyona Döndü?
- Piyasa Saatleri ve Canlıya Alma — Sürüm Gece Çıktı, Neden Açılışta Patladı?
- Düzenleyici Raporlama — Aynı Raporu İki Kez Bastık, Neden Farklı Çıktı?