일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- BalancedTree
- DeleteAll
- 회고
- 계층별 구조
- 월간회고
- Jenkins
- 프리코스
- mysql
- 카카오 2차 코딩테스트
- 메서드명
- Blue-Green
- useQuery
- 주간회고
- db
- B+TREE
- ci/cd
- jacoco
- 기능별 구조
- 어댑티브 해시 인덱스
- java
- 멀티쓰레드 프로그래밍
- SQL 실행순서
- useMutation
- 블로그 병행
- N+1
- 클래스
- 도커
- 백기선 스터디
- 우테코
- InnoDB 버퍼 풀
- Today
- Total
목록java (17)
Haneul's Blog

TDD란? TDD란 테스트 주도 개발인 Test-driven develoment를 줄인 말입니다. 이는 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나로 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성하고, 그 테스트 케이스를 통과하기 위한 코드를 생성합니다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링하는 짧은 사이클을 통해서 개발을 하는 방법론이라고 할 수 있습니다. 더 정확하게 말하자면 TDD는 Red, Green, Refactoring의 사이클로 개발을 하는 과정을 거치는데 자세한 것은 아래에서 설명하겠습니다. Red, Green, Refactoring 위 그림을 보면 빨간줄, 초록줄, 파란줄이 보입니다. 빨간줄 즉, Red는 하려는 행위를 변수, 객체 메서..
우테코의 프리코스를 참여하면서 문제를 다 풀고 조금 더 개선할 부분이 없을까 찾아보다가 많은 분들이 자바 변수명 및 메서드의 네이밍을 짓는데 많은 고민을 하는 것을 보고 이와 관련하여 정리하면 좋겠다고 생각하였습니다. 저 또한 개발을 할 때 가장 어려워 하는 것이 변수명이나 메서드의 네이밍을 정하는 것인데, 기존에 제가 알고 있던 것과 좋은 코드를 위한 네이밍은 어떻게 해야 하는지를 비교하면서 글을 정리해보겠습니다. 자바 변수명 네이밍 규칙 기본적으로 제한하는 변수 명명 규칙 자바에는 기본적으로 제한하는 변수 명명 규칙이 있습니다. 이를 지키지 않으면 컴파일 자체가 되지 않기 때문에 아마 이 글을 읽지 않아도 자바로 개발을 해보셨다면 몸으로 자연스럽게 체득했을 수도 있습니다. 그 규칙은 아래와 같습니다...

목표 [백기선 자바 스터디 15주차] 자바의 람다식에 대해 학습하세요. 학습할 것 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 사용법 람다식이란? 람다식은 메서드를 하나의 식으로 표현한 것입니다. 함수를 간략하면서도 명확하게 표현할 수 있게 해주며 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어져서 람다식을 익명 함수라고도 합니다. 자바에서의 모든 메서드는 클래스에 포함되어야 해서 일반적으로는 클래스를 만들고 객체를 생성해야 메서드를 호출할 수 있습니다. 하지만 람다식은 오직 람다식 자체만으로 메서드의 역할을 할 수 있게 해줍니다. 람다식 작성법 (a, b) -> {return a + b}; // 일반적인 람다식 (a, b) -> a + b; ..
목표 [백기선 자바 스터디 14주차] 자바의 제네릭에 대해 학습하세요. 학습할 것 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭(Generics)이란? 제네릭은 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능입니다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줍니다. 그렇다면 타입 안정성을 높인다는 것을 정확히 무슨 의미일까요? 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환 되어 발생할 수 있는 오류를 줄여준다는 것입니다. 제네릭을 사용해..

목표 [백기선 자바 스터디 13주차] 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 스트림/버퍼/채널이란? 스트림 스트림은 흐름이라는 뜻을 가지고 있습니다. 람다의 스트림과 헷갈릴 수 있지만 전혀 다른 것입니다. 여기서 말하는 스트림은 입력에서 출력으로 흐르는 단방향 데이터 흐름을 말하는데, 자료의 입출력을 도와주는 중간 통로(매개체)라고 생각하면 좋을 것 같습니다. 그렇다면 여러 개의 데이터를 하나의 스트림으로 보낸다고 생각하..

목표 [백기선 자바 스터디 12주차] 자바의 애노테이션에 대해 학습하세요. 학습할 것 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 애노테이션 애노테이션은 주석과 비슷하게 어떠한 코드에 설명을 달아준다고 생각하면 됩니다. 하지만 애노테이션이 달린 코드에는 실제로 어떠한 기능을 부여할 수 있다는 점이 주석과는 크게 다릅니다. 즉, 다른 데이터를 설명해주는 메타데이터의 한 형태라고 할 수 있습니다. 그렇다면 이 애노테이션은 왜 사용하는 것일까요? 위에서 말했다시피 어떠한 기능을 부여하기 위해서 사용하는데 아래와 같은 기능들을 제공해줍니다. 컴파일러에 제공하는 정보 -> 컴파일러는 애노테이션을 사용하여 에러를 체크하거나 에러 메시지를 억제할 수 있습니다. ..
목표 [백기선 자바 스터디 11주차] 자바의 열거형에 대해 학습하세요. 학습할 것 enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet Enum이란? enum은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 상수를 여러 개 정의할 때 사용합니다. enum은 여러 상수를 정의한 후, 정의된 것 이외의 값은 허용하지 않습니다. 간단하게 enum을 정의하는 방법은 아래와 같습니다. public enum Car { Bently, K3, Audi, } enum은 왜 나왔을까요? 사실 enum을 처음 보았을 때 굳이 이걸써야 하나? 라는 생각을 했어서 그냥 넘어갔던 기억이 있습니다. 하지만 새로운 것이 나온 것에는 대부분 이유가 있기 ..

목표 [백기선 자바 스터디 10주차] 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. 학습할 것 Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 먼저 간단하게 Thread가 무엇인지와 Process가 무엇인지 그리고 둘의 차이점이 어떤 점이 있는지부터 간단하게 알아보고 가겠습니다. Process와 Thread 먼저 프로세스는 실행 중인 프로그램으로 어떤 프로그램이 운영체제에 의해서 메모리 공간을 할당받아 실행 중인 것을 말합니다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 쓰레드로 구성이 됩니다. 그렇다면 쓰레드는 무엇일까요? 쓰레드는 프로세스 내에서 실제로 작업을 수행하는 주체로, 모든 프로세스는 하나 이상의 쓰..

목표 [백기선 자바 스터디 9주차] 자바의 예외 처리에 대해 학습하세요. 학습할 것 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 자바에서 예외 처리를 하는 방법을 알아보기 전에 먼저 예외(Exception)란 무엇이고 에러(Error)란 무엇인지 그리고 이 둘의 차이를 잠깐 정리하겠습니다. 예외(Exception)와 에러(Error) 에러는 시스템의 비정상적인 상황이 생겨 프로그램이 비정상적으로 종료되는 것입니다. 이러한 에러는 컴파일 에러와 런타임 에러로 구분할 수 있는데, 컴파일 에러는 말 그대로 ..
목표 [백기선 자바 스터디 8주차] 자바의 인터페이스에 대해 학습하세요. 학습할 것 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스 정의하는 방법 인터페이스를 정의하는 방법을 알기 전에 먼저 인터페이스가 무엇인지부터 가볍게 알고 넘어가겠습니다. 인터페이스란? 인터페이스는 일종의 추상클래스로 추상메서드를 갖지만 추상클래스보다 추상화의 정도가 높아서 추상클래스와 달리 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없습니다. 즉, 오직 추상메서드와 상수만을 멤버로 가질 수 있으며..
목표 [백기선 자바 스터디 7주차] 자바의 패키지에 대해 학습하세요. 학습할 것 package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 자바에서 클래스가 많아지면 이를 한 곳에서 관리하기가 힘듭니다. 이를 관련된 파일끼리 폴더별로 관리하게 되는데 이를 관리하는 폴더를 자바에서는 패키지라고 합니다. 패키지의 특징 한 폴더에 같은 이름의 클래스가 2개 이상 올 수 없습니다. 소스의 가장 첫 줄에 있어야 하고, 패키지 선언은 소스 하나에 하나만 있어야 합니다. 패키지 이름과 위치한 폴더의 이름이 같아야 합니다. 패키지 이름을 java로 시작하면 안됩니다. 패키지 이름은 모두 소문자여야 합니다. -> 모든 클래스에는 정의된 클래스 ..
목표 [백기선 자바 스터디 6주차] 자바의 상속에 대해 학습하세요. 학습할 것 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속이라는 뜻은 부모의 유산을 물려받는 것을 의미합니다. 자바에서의 상속도 마찬가지로 부모 클래스의 변수와 메서드를 물려 받는 것을 의미하는데 이러한 상속을 통해서 코드의 재사용성 및 코드의 간결성을 확보해줍니다. 이러한 상속은 아래와 같이 extends라는 키워드로 상속받을 수 있습니다. class Phone{} class IPhone extends Phone{} 상속은 부모 클래스의 변수나 메서드를 물려받는다고 했는데 그렇다고 모든 ..