일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 싱글톤패턴
- vm인스턴스생성
- Spring MVC 구성요소
- OOP
- 재귀함수
- 투포인터알고리즘
- String.valueOf()
- List.of
- 성능테스트툴
- 버블정렬
- 코드스테이츠 백엔드
- 재귀와반복문
- 인텔리제이
- 자바
- 구간합구하기
- GCP
- MySQL
- 백준 11659
- Spring Web MVC
- 프로그래머스
- 코딩테스트
- 클라우드에서 도커 실행하기
- Spring MVC 동작원리
- java
- 11659
- 백준
- 알고리즘
- Array.asList
- 코드스테이츠
- 스택
- Today
- Total
목록Development (41)
순간을 기록으로
개요 자바를 공부하다 보면 위의 3가지 용어를 자주 접하게 됩니다. 그만큼 중요한 개념인데요. 애매한 상태로 남겨두기보다는 한 번에 확실하게 정리하는 게 좋을 것 같아서 작성하게 되었습니다. 각 개념을 설명하기 앞서 그림으로 큰 구조를 보겠습니다. JDK(Java Development Kit, 자바개발키트) - JDK란 자바 프로그램을 개발하기 위해 필요한 툴들을 모아 놓은 소프트웨어 패키지다. - JRE + 개발도구(컴파일러, 디버거 등) JRE(Java Runtime Environment, 자바실행환경) - JRE란 자바 프로그램을 실행하기 위해 필요한 환경이다. - JVM + 클래스 라이브러리 - 개발자뿐만이 아니라 자바 프로그램을 실행하는 사용자라면 JRE이 필요하다. JVM(Java Virtua..
네이티브 앱(Native App) 네이티브 앱은 모바일 기기(휴대폰, 태블릿 등) 안에 설치되고, 특정 모바일 운영체제용(안드로이드, iOS)으로 개발하는 애플리케이션을 말합니다. 네이티브 앱을 사용하려면 애플 앱스토어나 구글 플레이 스토어 같은 앱스토어에서 다운로드해야 합니다. 네이티브 앱은 애플 iOS와 안드로이드 OS와 같은 특정 모바일 운영체제를 기반으로 동작합니다. 그렇기 때문에 안드로이드 OS용 네이티브 앱은 iOS 기반 모바일 기기나 윈도우 기반 노트북 등에서는 작동하지 않습니다. 만약 아이폰과 갤럭시 등 모든 주요 운영체제에서 접근할 수 있는 앱을 만들고 싶다면 각 운영체제마다 앱을 개발해야 합니다. 즉, 같은 기능을 하는 앱을 운영체제마다 만들어야 하므로 시간과 돈이 더 많이 들어가게 됩..
서버 개발을 가정으로 합니다. 각 시스템의 크기와 목적이 다르기 때문에 환경을 합치거나 생략할 수 있습니다. 로컬 환경(local) 각 개발자마다 PC에 설치된 서버 환경을 말합니다. 예를 들면, 각 PC에 MySQL, 인텔리제이 등이 설치되어 있는 환경입니다. 개발 환경(dev) 각 개발자들이 만든 코드를 서버 환경에서 테스트할 수 있는 환경입니다. 통합 환경(Integration) 새로운 코드들이 기존 코드와 결합되어 잘 작동하는지 확인하는 환경입니다. 테스트 환경(Test) 기능 테스트와 비기능 테스트가 이뤄지는 환경입니다. 사용자의 요구사항이 충족되는지 확인합니다. QA 엔지니어가 사용하는 환경입니다. 스테이징 환경(Staging) 실제 데이터를 사용해서 소프트웨어를 테스트하여 사용할 준비가 되었..
Deploy(배포) 배포는 소프트웨어를 하나의 환경에서 다른 환경으로 옮기는 것을 말한다. 일반적으로 환경은 로컬 - 개발 - 테스트 - 스테이징 - 프로덕션(운영)이 있다. 예를들면 '기본적인 테스트를 완료한 소프트웨어를 스테이징 환경에 배포하였다.'라고 말할 수 있다. Release(출시) 서비스나 기능을 사용자가 사용할 수 있게끔 하는 것을 말한다. 구글 플레이스토어에 새로운 앱이 출시하거나 업데이트 된 버전이 올라오는 것을 출시라고 볼 수 있다. 출처: https://www.bmc.com/blogs/software-deployment-vs-release/ Deploying vs Releasing Software: What’s The Difference? www.bmc.com
Jar(Java Archive)는 여러개의 자바클래스 파일과 메타데이터, 리소스(텍스트, 이미지 등)를 하나의 파일로 모아서 배포하기 위한 패키지 파일이다. 간단히 생각해서 압축 파일이라고 생각해도 된다. 파일 확장자는 .jar이다. 인텔리제이 안에서 실행하는게 아닌 콘솔에서 내가 만든 프로그램을 실행하려면 어떻게 해야할까? jar 파일을 실행하려면 'java -jar 파일명.jar'을 사용하면 된다. 만약 aws에 내가 만든 프로그램을 올리고 싶다면 jar 한 파일만 서버에 올려두고 실행하면 된다.(참고로 jar 명령어는 JDK에 포함되어 있다.) 빌드하고 실행하기 1. 콘솔에서 해당 프로젝트 루트위치로 이동한다. 그리고 jar파일과 비슷한 파일 형식 war이란 것도 있다. War 파일 형식은 클래스파..
1.File --> Settings 누르기(Ctrl + Alt + S) 2.상단 좌측에 Annotation 검색하기 3.Enable annotation processing 체크 후 적용하기
제네릭 클래스와 상속 제네릭 클래스도 일반 클래스처럼 상속이 가능하다. class Box { ... } class SteelBox extends Box {// 제네릭 클래스의 상속 ... } 제네릭 클래스 StellBox는 제네릭 클래스 Box를 상속한다. 코드를 그림으로 표현하면 다음과 같다. Box sBox = new SteelBox("Simple"); Box iBox = new SteelBox(123); 이런 상속 관계에서 객체를 만드는 코드는 다음과 같이 짤 수 있다. 따라서 제네릭 클래스의 상속은 다음 관계도 만족한다. 즉, SteelBox 제네릭 타입(=매개변수화 타입)은 Box 제네릭 타입을 상속한다고 말할 수 있다. 그렇다면 Box box = new Box();도 성립할까? Number와 ..
제네릭 이전의 코드의 단점 1.클래스가 자료형에 의존적이게 된다. 2.인스턴스를 꺼낼 때 형변환을 해야한다. Apple ap = (Aplle)aBox.get(); Orange og = (Orange)oBox.get(); 3.실수가 컴파일 과정에서 발견되지 않는다. aBox.set("Apple");// 문자열 "Apple" 담았는데 실수다 oBox.set("Orange");// 문자열 "Orange" 담았는데 실수다 제네릭 기반 클래스 정의 class Box { private T ob; public void set(T o) { ob = o; } public T get() { return ob; } } 제네릭의 등장으로 자료형에 의존적이지 않은 클래스를 정의할 수 있고 앞에서 본 문제점을 해결할 수 있다. ..