Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/senocak/blog
Türkçe Blog
https://github.com/senocak/blog
design-patterns java kotlin mockito spring spring-boot
Last synced: about 5 hours ago
JSON representation
Türkçe Blog
- Host: GitHub
- URL: https://github.com/senocak/blog
- Owner: senocak
- Created: 2024-04-16T16:42:00.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-04-24T06:22:20.000Z (7 months ago)
- Last Synced: 2024-04-29T12:56:37.229Z (6 months ago)
- Topics: design-patterns, java, kotlin, mockito, spring, spring-boot
- Homepage:
- Size: 1.67 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.adoc
Awesome Lists containing this project
README
= BLOG
:nofooter:
:icons: font
:url-quickref: https://github.com/senocak/blogTIP: İnternette https://spring.io/[Spring Boot], https://kotlinlang.org/[Kotlin], https://java.com/[Java] eğitimleri bulmak yaygın olsa da, güncel olan ve kendimin zaman içinde sorduğu soruların cevaplarını derledim.
== Patterns
|===
|Topic |Description|link:api-gateway-pattern.adoc[API Gateway Pattern] |The API gateway acts as a single entry point for clients to access the microservices, allowing clients to interact with the microservices as if they were a single service.
|link:abstract-document-pattern.adoc[Abstract Document Pattern] |An object-oriented structural design pattern for organizing objects in loosely typed key-value stores and exposing the data using typed views.
|link:singleton-pattern.adoc[Singleton Pattern] |Restricts the instantiation of a class and ensures that only one instance of the class exists in the Java Virtual Machine
|link:builder-pattern.adoc[Builder Pattern] |To provide a flexible solution to various object creation problems in oop.
|link:cache-aside-pattern.adoc[Cache Aside Pattern] |Loads data into the cache on demand.
|link:producer-consumer-pattern.adoc[Producer Consumer Pattern] | Amacı işin tanımlanması ile işin yürütülmesi'ni ayırarak Producer ve Consumer arasındaki bağlantıyı azaltan klasik bir eşzamanlılık modelidir.
|link:solid.adoc[SOLID] | Single responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency inversion
|===TIP: Bütün örnekler java ile uyumlu çalışan kotlin ile yazılmaya özen gösterilmiştir.
== Java & Kotlin & SpringBoot
|===
|Topic |Description|link:junit-5-vs-junit-4.adoc[JUnit 5 vs JUnit 4] | JUnit 5, Java 8 kodlama stilini uyarlamayı ve JUnit 4'ten daha sağlam ve esnek olmayı amaçlamaktadır.
|link:mockito-at-spy.adoc[Mockito: @Spy] | Gerçek nesnenin sadece belirtilen metodları mock kodu tarafından override edilir.
|link:mockito-doreturn-vs-thenreturn.adoc[Mockito: doReturn vs thenReturn] | when-thenReturn ve doReturn-when arasındaki farklar
|link:comparable-vs-comparator.adoc[Comparable vs Comparator] | Comparable and Comparator are interfaces used for sorting objects.
|link:stringbuilder-vs-stringbuffer.adoc[Stringbuilder vs Stringbuffer] | String ile setlenmiş değişkenler daha sonradan değiştirilemez, bu ne demek eğer değişken'in içeriği sonradan değiştirilirse artık bu aynı obje olamayacaktır.
|link:function-interface.adoc[Function Interface] | Represents a function that accepts one argument and produces a result.
|link:anonymous-inner-class.adoc[Anonymous Inner Class] | Adı olmayan ve kendisi için yalnızca tek bir nesnenin oluşturulduğu bir iç sınıftır.
|link:kotlin-regex.adoc[Kotlin Regex] | Kotlin Düzenli ifadeler
|link:collections-vs-streams.adoc[Collections vs Streams] | Her ikisi de kavramsal olarak iki farklı amaç için kullanılan iki farklı şeydir.
|link:terminal-operations.adoc[Terminal Operations] | Bir terminal işlemi Stream başlatır ve Stream ardışık düzenine ve içeriğine bağlı bir sonuç döndürür.
|link:intermediate-operations.adoc[Intermediate Operations] | Ara işlevler bir akışı geri döndürür.
|link:reflection.adoc[Reflection] | Reflection, çalışma zamanında metodların, sınıfların ve arayüzlerin davranışını incelemek veya değiştirmek için kullanılan bir API'dir.
|link:process-vs-thread.adoc[Process vs Thread] | Process, yürütülmekte olan herhangi bir program anlamına gelir. Thread, bir sürecin bir bölümü anlamına gelir.
|link:diamond-operator.adoc[Diamond Operator] | Diamond Operator derleyiciye tür çıkarımı özelliğini ekler ve jeneriklerle sunulan atamalardaki karmaşıklığı azaltır.
|link:runnable-vs-callable.adoc[Runnable vs Callable] | Runnuable ve Callable bir görevi farklı bir Thread ile çalıştırmak için kullanılan iki interface'dir.
|link:lambda-expressions.adoc[Lambda Expressions] | Lambda ifadesi, parametre alan ve bir değer döndüren kısa bir kod bloğudur.
|link:optional-sinifi.adoc[Optional Sinifi] | Java 8 ile birlikte hayatımıza giren en önemli özelliklerden biri olan Optional sınıfında null referanslar yerine isteğe bağlı değerleri göstermek için iyi bir çözüm sunmaktadır.
|link:throw-vs-throws.adoc[Throw vs Throws] | Hem throw hem de throws, bir metodtan veya herhangi bir kod bloğundan açıkça bir exception atmak için kullanılan exception işleme kavramlarıdır.
|link:interface-vs-abstract-class.adoc[Interface vs Abstract Class] | Abstract sınıflar alanlara ve özelliklere sahip olabilirken, interface'ler yalnızca özelliklere sahip olabilir.
|link:serialization.adoc[Serialization] | Bir nesnenin durumunu byte array olarak temsil etme kavramı.
|link:timer-sinifi.adoc[Timer Sınıfı] | Kod bloğunun ne zaman, ne sıklıkta çalışacağını belirlemek için kullanılır.
|link:overriding-equals-ve-hashcode.adoc[Overriding equals() ve hashcode()] | Overriding equals() ve hashcode()
|link:checked-ve-unchecked-exceptionlar.adoc[Checked ve Unchecked Exceptionlar] | Checked ve Unchecked Exceptionlar
|link:collectionlar.adoc[Collectionlar] | Collectionlar, tek bir birim halinde bir araya getirilmiş birden çok nesne grubudur.
|link:spring-data-jpa-specifications.adoc[Spring Data Jpa Specifications] | Spring Data JPA Spesifikasyonu, sorgularınızı birden fazla ayrı filtreleme seçeneğinden oluşturmanıza olanak tanıyan çok kullanışlı bir özelliktir.
|link:spring-boot-ve-guvenlik.adoc[Spring Security] | Spring Security ve annotation'ları kullanarak, uygulamanın kaynaklarına kimlerin erişebileceğini ve bu kaynaklarla nasıl etkileşimde bulunabileceklerini kontrol edebiliriz.
|link:entity-listenerda-beanlere-erismek.adoc[Entity Listenerda Beanlere Erismek]|Entity Listener'da Bean'lere erişmek
|link:tum-responselara-header-ekleme.adoc[Tüm Responselara Header Ekleme]|Bir filtre kullanarak, mapping yöntemlerinin her biri için manuel olarak response header eklemekten kaçınabiliriz.
|link:hibernate-vs-spring-data-jpa.adoc[Hibernate vs Spring Data JPA]|Hibernate bir JPA uygulamasıdır, Spring Data JPA ise bir JPA Veri Erişim Soyutlamasıdır.
|link:spring-boot-ve-veritabani-islemleri.adoc[Spring Boot ve Veritabanı İşlemleri]|Spring Boot JDBC, JPA/Hibernate, JOOQ gibi SQL tabanlı veri erişim teknolojileri ile çalışmayı kolaylaştırır.
|link:testcontainers-setup.adoc[Testcontainers / PostgreSQL, MySQL, MariaDB, Redis, RabbitMq]|Testcontainers, Docker konteynerlerini JUnit testlerine kolaylıkla entegre etmeye izin veren bir Java kütüphanesidir.
|link:neden-constructor-injection-kullanmaliyiz.adoc[Neden Constructor Injection Kullanmalıyız?]|Dependency injection, bir uygulamadaki sınıflar arasında gevşek bağlantı(loose coupling) uygulamaya yönelik bir yaklaşımdır. Bağımlılıkları enjekte etmenin farklı yolları vardır ve bu makale neden yapıcı enjeksiyonunun tercih edilen yol olması gerektiğini açıklamaktadır.
|link:at-component-vs-at-repository-vs-at-service-vs-at-controller.adoc[@Component vs @Repository vs @Service vs @Controller]|@Component vs @Repository vs @Service vs @Controller
|===