Java 67

Spring 웹 개발 기초

1. 정적 컨텐츠 (Static contents) 정적 컨텐츠는 실시간으로 변경할 필요가 없는 데이터 즉, 변화가 없는(Static : 정적)데이터를 의미합니다. 어느 접속자에게든 동일한 모습을 반환합니다. 서버에서 file을 그대로 웹 브라우저에 내리는 것을 의미하기도 합니다. Spring에서는 이 정적 컨텐츠라는 기능을 자동으로 제공합니다. 대충 번역해보자면, 기본적으로 Spring boot는 클래스 경로의 /static (or /public or /resources)~~ 디렉토리로부터 정적 컨텐츠를 제공한다고 되어있습니다. static이라는 디렉토리 안에 htllo-static.html이라는 file을 추가하고 웹 브라우저에 localhost 주소를 입력하고 접속하게 되면, 그대로 정적 컨텐츠가 반..

Skills/Spring 2022.05.13

Hashmap 자료구조

해시맵은 Map 인터페이스에 속해있는 Collection으로, 데이터들을 Key와 Value로 구성된 entry 객체를 저장하는 자료구조입니다. 여기서 key는 고유한 속성이지만, Value는 고유한 속성이 아니기 때문에 Value는 중복이 될 수 있습니다. Hash는 특정 키에 대한 값을 빠르게 찾아올 수 있는 장점이 있습니다. key-value가 1:1로 매칭되기 때문에 삽입, 삭제, 검색 과정에서 O(1)의 시간복잡도를 가집니다. 1. Hashmap 선언 import java.util.HashMap; public class Test { public static void main(String[] args) { HashMap hm = new HashMap(); // 타입 설정x Object 입력 Has..

Spring 개요

Spring은 Java 기반의 웹 애플리케이션을 만들 수 있는 프레임워크입니다. 초기의 Spring은 개발자들이 라이브러리를 일일이 입력해서 불러와야 했지만, Spring boot가 등장하면서 라이브러리와 실행환경, 의존성 관리 등에 대한 지원을 쉽게 받을 수 있도록 바뀌었습니다. (https://start.spring.io/) 처음 Project란의 Marven, Gradle은 빌드 도구라고 합니다. 빌드 도구는 프로젝트에서 작성한 Java 코드와 프로젝트 내에 필요한 xml, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 자동화 도구입니다. Dependencies는 프로젝트에 필요한 라이브러리를 선택하는 것입니다. 스프링 부트에서 프로젝트를 생성하고, 선택한 라이브러리를 탐..

Skills/Spring 2022.05.11

Java new 연산자

메모리는 스택과 힙 영역으로 나눠져 있습니다. 스택은 정적(Static)이지만 힙은 참조형입니다.큰 용량을 차지하며 해체하기 전까지는 삭제되지 않습니다. https://refreshment-wg.tistory.com/67 이 글에서 Java에서는 가비지 컬렉션이 힙 영역을 정리한다는 역할을 한다고 했습니다. new는 클래스 타입의 인스턴스(객체)를 생성해주는 역할을 합니다. 이 때 heap 영역에 데이터를 저장할 공간을 할당받고, 그 공간의 참조값(refrence value)를 객체에 반환하고, 이어서 생성자를 호출합니다. aoClass sc=new aoClass(); 위의 코드를 보면, aoClass라는 타입으로 sc라는 객체를 선언한 뒤, new를 사용해 생성자인 aoClass()를 힙 영역에 할당..

Skills/Java 2022.05.10

Scanner & BufferedReader

알고리즘에서 Java로 입력을 받을 때 Scanner를 많이 사용합니다. Scanner는 공란과 줄바꿈을 입력값의 경계로 사용하며, 입력받은 즉시 자료형이 확정이 됩니다. 반면 BufferedReader는 버퍼를 이용해 입출력을 하는 방식입니다. 하드디스크를 비롯 키보드와 같은 외부 장치의 데이터 I/O는 시간이 걸리는 작업입니다. (CPU의 연산속도가 상대적으로 매우 빠름) 즉 키보드를 누를 때 마다 누른 문자의 정보를 이동시키는 것보다, 메모리에 버퍼를 둬서 데이터를 묶어서 전송하는 것이 더 빠릅니다. 여기서 버퍼는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역입니다. 위에서 설명했듯이, Scanner는 공란과 줄바꿈을 경계로 입력 값을 인식하기 때문에..

Skills/Java 2022.05.07

Java 구성 (class, method, instance)

1. Class 클래스는 '유사한 특성을 지닌 객체(Object)들을 묶어놓은 집합체'라고 표현 가능합니다. 예를 들어 게임을 할 때, 플레이어의 이름이나, 정보 등 구조를 명세하는 설계도를 클래스라고 합니다. public class Player{ String name; // 플레이어 이름 int charlv; // 캐릭터 레벨 } 위의 코드에서는 Player라는 클래스에 플레이어의 이름, 레벨이라는 변수들을 선언해주었습니다. 이는 Player라는 이름을 가진 클래스의 구조가 됩니다.  참고로 클래스의 이름과 객체 이름은 명사 혹은 명사구가 적합합니다. Customer, Accoount 등 이 좋은 예이며, Manager, Data, info 등의 같은 단어를 피하고 동사는 사용하지 않는 것이 좋습니다..

Skills/Java 2022.05.06

Java public static void main(String[] args)의 의미

public class Main{ public static void main{String[] args){ } } Java에서 모든 프로그램은 public static void main(String[] args)라는 함수로 시작합니다. 코드에 대해 의미를 살펴보겠습니다. 1. 제한자 먼저 public은 제한자 부분으로 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있습니다. 여기서 접근 제한자는 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 좋지많은 않습니다. 그런 이유에서 프로그래머가 객체들에게 접근 제한을 걸 수 있는데, 이를 Java에서는 접근 제한자라고 합니다. 접근 제한자의 종류로는 1) public : 모든 접근을 허용 2) protected : 같은 ..

Skills/Java 2022.05.04