백엔드
-
[Java] Enum 내부 코드 확인하기백엔드/Java 2023. 2. 22. 08:34
사다리 미션을 하는데 리뷰어님이 Enum 내부 코드를 통해 답변을 해준 것이 기억났다. 그래서 Enum 코드를 확인하는데 다른 내부 코드들보다 만만해보여서 해석을 해보기로 했다. 전체적인 코드는 아래와 같다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 public abstract class Enum implements Comparable, Serializable { private final String name; public final String n..
-
[Java] 표준 어노테이션백엔드/Java 2023. 2. 21. 08:00
자바 코드를 보다가 내부 코드가 궁금해져서 확인해봤는데, 이런 내용의 코드가 있었다. @Test는 어떤 동작을 수행하길래 이런 어노테이션들이 붙어 있는 것일까? 그래서 찾아보니 자바의 정석을 통해 어노테이션을 정리하는 사람들이 많았다. 표준 어노테이션은 크게 두가지로 나뉜다. 하나는 어노테이션을 정의하는데 사용하는 메타 어노테이션, 하나는 일반 어노테이션이다. 이 글에서는 메타 어노테이션부터 설명한다. 1. 메타 어노테이션 오라클 공식 홈페이지 튜토리얼을 확인해보면 메타 어노테이션은 다른 어노테이션에 사용되는 어노테이션이라고 나와있다. 어노테이션을 정의하는 어노테이션이라고 생각하면 될 것 같다. [@Retension] 이 어노테이션이 들어있으면 어디까지 어노테이션 내용을 저장하는지 대한 내용을 지정할 수..
-
[우아한테크코스 5기] 2주차 후기백엔드/우아한테크코스 5기 2023. 2. 20. 01:00
기간 : 2023/02/13 (월) ~ 2023/02/19 (일) 저번주 일요일부터 ChatGPT에게 CS 지식에 대해 궁금한 점을 물어보며 유용하게 사용하고 있다. ChatGPT 성능이 이정도이면 GPT-4의 활용 용도는 얼마나 넓어질지 궁금해진다. 빨리 변수, 메서드, 클래스 이름을 자동으로 추천해주는 언어 모델이나 만들어졌으면 좋겠다. 요즘 가고 싶은 기업이 바뀌었다. 출퇴근마다 너무 피곤해서 나중에 취업을 하게 된다면 재택근무하는 회사에 들어가고 싶어졌다. 그게 아니면 지하철을 최대한 타지 않고 충분히 회사에 도착할 수 있는 거리로 이사를 하거나.. 경의중앙선 저녁 시간 지하철보다 더 심하다. 알고리즘 대회 스태프로 참여하게 됐다. 반년전만 하더라도 대회에 참가해서 수상 목표로 달리고 싶었다. 그..
-
[Java] var는 사용해도 되는 것일까?백엔드/Java 2023. 2. 13. 00:05
자동차 경주 미션 2단계의 코드 예시에서는 var를 사용하고 있다. 자바에서 var를 보는 것은 처음이었고, 자바스크립트에서 var는 사용을 지양하라고 나와있어서 선입견 때문에 이걸 과연 사용해도 될까? 라는 생각이 들었다. 1. 자바스크립트에서 var 사용을 지양하는 이유 [호이스팅 현상] console.log(foo); undefined var foo = 1; console.log(foo); 1 자바스크립트는 변수를 설정하면 변수가 속하는 유효 범위(scope) 안에 최상단으로 올려져 선언을 하게 된다. 사실상 중간에 변수를 선언해도 최상단에 선언하는 것과 같은 효과라서 위와 같은 코드가 나와도 첫번째 줄의 console.log(foo);가 작동하게 된다. [중복 선언] var foo = 1; var..
-
[Java] final을 자주 사용하는 이유백엔드/Java 2023. 2. 12. 22:10
우테코를 진행하는데 코치님도 그렇고, 리뷰어님도 final을 자주 사용해서 왜 final을 많이 사용하는지 궁금해졌다. 내가 final을 사용하는 이유는 상수 아니면 멤버 변수에만 사용했는데, 메서드 인자에도 final을 최대한 붙이는 편이라고 해서 관련된 내용을 찾아보았다. 1. final 키워드 자바에서 final 키워드는 변수, 메서드, 클래스에 적용할 수 있다. 변수 - 단 한 번만 초기화가 가능하다. - 원시 타입에 final을 붙이면 값을 변경할 수 없다. - 객체 타입에 final을 붙이면 다른 객체로 변경하지 못하는 것이지, 객체 내부 데이터는 변경할 수 있다. - 메서드 인자에 final을 붙이면 원시 타입, 객체 타입에 따라 각각의 규칙이 적용된다. 메서드 - 상속 받은 클래스의 어떤 ..
-
[우아한테크코스 5기] 1주차 후기백엔드/우아한테크코스 5기 2023. 2. 12. 15:11
기간: 2023/02/07 (화) ~ 2023/02/12 (일) 온보딩 기간으로 크게 수업, 연극 준비, 페어프로그래밍을 하게 된다. 온보딩으로 연극을 하는데 1일차부터 추노하고 싶었다.. ㅋㅋ 1. 연극 연극의 경우엔 주제 선정부터 뭘해야할지 고민했는데, 크루들이 다들 좋은 주제를 말해가지고 생각보다 쉽게 선정한 것 같다. 온보딩 크루들이 나 말고는 인싸 같았고, 나 혼자 템포를 못쫓아가서 나와는 완전히 다른 분위기라 우테코를 괜히 했나..?? 라는 생각도 많이 들었다 😭 우리 학교는 엄청 작기 때문에 다들 건너건너 이름을 자주 들었던 사람들이라 이미 다들 누군지 어느정도 알고 있는 상태에서 만나서 크게 부담감이 없었다. 그런데 처음 보는 사람들끼리 만나서 이야기를 나누니까 이거만큼 힘든 일도 없는 것..
-
[디자인 패턴] 템플릿 메서드 패턴 (Template Method)백엔드/객체지향 | 디자인패턴 2023. 1. 29. 09:56
템플릿 메서드 패턴의 경우에는 일부 구현이 다르지만, 실행 과정은 동일한 코드를 여러개 작성할 상황에서 적용하면 코드 중복을 줄여주는 디자인 패턴이다. 만약 네이버페이와 카카오페이의 결제 방식이 다음과 같다고 해보자 [네이버페이] 1. 네이버 아이디와 비밀번호를 입력하여 인증한다. 2. 포인트 충전을 한다. (+ 네이버 포인트 추가 적립) 3. 결제한다. [카카오페이] 1. 카카오 아이디와 비밀번호를 입력한다. 2. 포인트 충전을 한다. 3. 결제한다. 템플릿 메서드 패턴은 두 가지 종류가 있다. - 실행 과정을 구현한 상위 클래스 - 실행 과정의 일부 단계를 구현한 하위 클래스 본인 인증은 아이디와 비밀번호를 입력하는 것은 같지만, 내부 인증은 카카오와 네이버가 서로 다르다. 아이디와 비밀번호를 입력하..
-
[디자인 패턴] 전략 패턴 (Strategy)백엔드/객체지향 | 디자인패턴 2023. 1. 29. 09:55
전략 패턴은 특정 행동을 할 수 있는 알고리즘이 여러가지일 때, 프로그램을 실행 중에 알고리즘을 선택할 수 있도록 하는 패턴이다. 위 문장만 보면 이해하기 어렵지만, 알고보면 간단한 패턴으로 개방-폐쇄 원칙(OCP)을 지킬 수 있도록 도와주는 디자인 패턴이다. 만약 어떤 물건을 사고 결제를 할 때, 현금 결제나 카드 결제, 카카오페이를 선택할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 public class consumer { public void credit(int strategy, int money) { if (strategy == 1) { 현금 결제 } else if (strategy == 2) { 카드 결제 } else if (strategy == 3) { 카카오페이 결제 }..