• Gemini vs ChatGPT vs Claude - AI 대전의 진짜 승자는 누구인가?

    “누가 더 뛰어난가?”보다 중요한 질문 AI를 쓰다 보면 자주 듣게 되는 질문이 있습니다. “제미나이, 챗GPT, 클로드 중에 뭐가 제일 좋아요?” 하지만 실제로 세 가지 모델을 모두 써보면서 깨달은 건, “누가 더 뛰어한가?” 라는 질문보다 “어떤 상황에서 누구를 쓰는 게 더 효과적인가?” 가 훨씬 중요하다는 점입니다. 마치 자바에서 ArrayList와 LinkedList, HashMap이...


  • 자바 제네릭의 타입 정보를 유지하는 방법 - Super Type Token

    자바 제네릭의 타입 파라미터를 저장하고 사용하는 방법을 알아봅니다. 제네릭은 코드의 재사용성을 높이고 데이터 타입의 안정성을 높여줍니다. 제네릭이 없었더라면 객체를 담는 컬렉션을 안전하게 사용할 수 없을 것입니다. 아래는 간단한 컬렉션을 구현하고 사용하는 예제를 살펴봅시다. public class MyCollection { static class SimpleCollection { private final Object[] data = new Object[100]; private int...


  • 푸시한 커밋을 리베이스 했을 때 브랜치 정리 방법

    rebase는 커밋 그래프를 이쁘게 만들어주는 일등 공신이죠. 저는 항상 rebase를 이용해서 개발 중인 브랜치를 최신화시키는데요 혼자서 사용하는 개발 브랜치면 상관없는데 이게 다른 사람과 공유하면서 작업할 때는 좀 골때리는 상황이 생깁니다. 아래의 경우를 보겠습니다. A개발자, B개발자 모두 master 브랜치에서 딴 d 커밋을 베이스로 작업하고 있었어요. 그런데 A개발자가 d커밋을 master의 c커밋 위로...


  • 자바 제네릭 와일드 카드 사용 방법과 등장 배경

    자바 제네릭의 와일드카드를 사용하는 방법과 제네릭 타입의 상위/하위타입에 관해 설명합니다. 지금까지 제네릭 타입과 제네릭 메소드를 선언하고 사용하는 방법에 대해 알아보았습니다. 하지만 제네릭은 생각처럼 만만한 개념이 아닙니다. 제네릭을 조금 더 깊이 이해하기 위해서는 주의해야 할 것들과 꼭 알아야 할 것들이 많습니다. 지금부터 제네릭 클래스의 상위/하위 타입에 대해서 알아보도록 하겠습니다. 서브 타입...


  • 자바 제네릭 메소드 선언 방법과 타입 추론

    자바 제네릭 메소드 선언 및 사용 방법, 타입추론으로 얻을 수 있는 이점을 설명합니다. public <T extends Comparable<? super T>> T max(Collection<? extends T> col){ } [리스트 1] 우리의 목표 우리는 이 메소드를 한번 읽어 볼 꺼라고 이 고생을 하고 있습니다. 그런데 이 메소드를 정확하게 이해하기 위해서는 조금 더 힘을 내셔야...