Enum은 비슷한 상수들끼리 모아놓은 열거타입 클래스...정도로만 알고 넘어갔다.그런데 Enum을 활용해 코드의 가독성과 관리의 효율성을 높이는 것을 보고 (특히 조건문)큰 흥미가 생겨 부랴부랴 찾아봤다. 특히 배달의 민족 기술블로그에 있는 Enum 활용기를 보고'와 이렇게도 활용할 수 있구나' 하며 놀랐다.마치 게임에 대한 이해가 높아서 기본 유닛의 특징을 활용해 새로운 전략으로 농락하는 모습을 본 듯한 느낌(?) 참조 사이트를 보며 직접 if문을 구현해 본 코드는 다음과 같다.123456789101112131415161718192021222324public class main { public static void main(String[] args) { String data = "Banana"; Fru..
클래스 로더 → JVM 내의 런타임 데이터 영역 배치 → 실행 엔진이 바이트코드 실행 바이트코드 = OpCode (1byte) + 추가 피연산자 실행 엔진 ▶ OpCode 하나를 가져와 피연산자와 함께 작업을 수행 → 반복 ▶ 바이트코드를 실제로 기계가 실행할 수 있는 형태로 변경해야 하는데, 두 가지 방식이 있음. - 인터프리터 > 바이트코드 명령어를 하나씩 읽어서 해석하고 실행 > 하나하나의 해석은 빠르지만, 인터프리팅 결과의 실행은 느림 - JIT (Just-In-Time) 컴파일러 > 인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 전체를 컴파일하여 네이티브 코드로 변경, 이후에는 더 이상 인터프리팅하지 않고 네이티브 코드로 직접 실행 > 네이티브 코드는 캐시에 보관하기에 한 번 컴파일된 ..
런타임 데이터 영역(Runtime Data Area) ▶ PC Register - 스레드 시작될 때 생성- 현재 수행중인 JVM 명령 주소 갖음.▶ JVM Stack- 스레드 시작될 때 생성- 스택 프레임 저장 및 추가, 제거- 예외 발생 시 printStackTrack() 등의 메소드로 보여주는 Stack Trace의 각 라인은 하나의 스택 프레임 표현- 지역 변수도 스택- 객체 레퍼런스 변수도 스택 ( 변수만!! 실제론 힙에 들어있음 ) * 스택 프레임 ?- 메소드 수행 시 하나의 스택 프레임 생성 → JVM 스택에 추가 → 메소드 종료 → 스택 프레임 제거- 지역 변수 배열 : 0부터 시작하는 인덱스를 가진 배열- 피연산자 스택 : 메소드의 실제 작업공간, 각 메소드는 피연산자 스택과 지역변수 배열..
자바 코드 수행 과정을 보면 이렇다.테두리 친 부분이 JVM 영역이고 하나씩 봐야겠다. 클래스 로더(Class Loader)▶ 특징 1) 계층구조 : 클래스 로더끼리 부모-자식 관계를 이루어 계층구조 (최상위 = 부트스트랩) 2) 위임모델 : 클래스 로더끼리 로드 위임 (상위클래스 로더 확인 → 상위클래스 있다면 해당 클래스 사용) 3) 가시성 제한 : 하위 클래스 로더는 상위클래스 로더의 클래스를 찾을 수 있지만 상위는 하위를 찾을 수 없음. 4) 언로드 불가 : 클래스 로더는 클래스 로드만 가능 (but 현재 클래스 로더 삭제 → 새로운 클래스 로더 생성하는 방법으로 사용)▶ 로드된 클래스들을 보관하는 네임스페이스 갖음.▶ 클래스 로드 시 이미 로드된 클래스인지 확인 위해서 네임스페이스에 보관된 FQ..
- new 연산자로 객체를 생성한만큼 객체에 메모리가 생성됨.- 변수 : 생성자와 메소드 내에서만 사용- Field : 객체와 함께 존재, 객체 고유 데이터 --> 초기값 생략 가능 (생략하면 기본 초기값으로 자동 설정) --> 초기화 할 때 public Korean(String name, String ssn){this.name = name;this.ssn = ssn; }필드와 매개 변수(Parameter) 이름이 동일하면 매개 변수가 우선순위가 높기 때문에 필드에 접근을 못함.따라서 field = parameter 이면 this. - Constructor(생성자) --> 생성자 선언 : 기본 생성자 추가 X Car myCar = new Car(); --- 기본 생성자는 사용 X --> 생성자 선언 생략..
랜덤한 값을 구하고 싶으면1) Math.Random() 2) java.util.Random로또 번호 구하는 것처럼 {1, 2, 3, ... , 44, 45} 중 6개의 숫자를 무작위로 뽑아내는 용도라면 위의 두가지 중 하나를 사용해도 되었겠지만,DB에서 여러개의 값을 불러와서 그 중 랜덤한 값을 뽑아내야 했기에 쓰기가 애매했다.리스트를 섞어주는게 뭐가 있을까 더 찾아보니 이걸 찾을 수 있었다. Collections.shuffle을 사용해 배열을 섞어보자이름 그대로 수집한 배열을(Collections) 섞어준다.(shuffle) 사용법도 단순해서 좋았다12List list = service.getAddress();Collections.shuffle(list);csCollections.shuffle() 여기..
어제까진 잘 되던 톰캣이 오늘은 안될 때... 바빠 죽겠는데 지하철마저 연착되는 그런 느낌을 받게 된다. 이클립스 톰캣 에러를 잡아보자 (STS, Maven, GitHub) 이런 에러가 떴을 경우, 구글링을 통해 해본 여러가지 방법들 1) @WebServlet() 이 존재하는지 확인 후 삭제 해준다 ( 하지만 없었다고 한다 ) 2) Window - Preferences - server - Runtime Environments 에서 기존에 있던 서버를 지우고 다시 설치한다. ( 시도는 좋았다고 한다 ) 3) STS Maven 프로젝트 생성시 jar 파일이 자동으로 .m2/repository 폴더에 설치되는데, 이 폴더를 지우고 다시 Maven Update를 통해 다시 jar파일들을 받아준다. (.m2/re..
- Total
- Today
- Yesterday
- 프로그래머스
- 텔레그램
- API
- 객체지향과 디자인패턴
- 기능개발
- 노션트렐로광고X
- 124 나라의 숫자
- Spring
- AWS
- 카카오인턴
- 알고리즘
- java
- cgv
- 파이팅코리아
- codility
- 다음 맵 api
- 스프링 부트
- json
- 더 나은 내일
- K번째수
- 최솟값
- 안드로이드 스튜디오
- 예매 알림
- 문자열 내 마음대로 정렬하기
- FrogJmp
- 타겟 넘버
- 완주하지 못한 선수
- 맵 api
- 자바
- 쇠막대기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |