본문 바로가기

전체 글51

[JAVA] 가변인자(varargs)와 오버로딩 기존에는 메서드의 매개변수 개수가 고정적이었으나 JDK1.5부터 동적으로 지정해 줄 수 있게 되었으며, 이 기능을 '가변인자(variable arguments)' 라고 한다. 가변인자는 '타입... 변수명' 과 같은 형식으로 선언하며, PrintStream 클래스의 printf()가 대표적인 예이다. public PrintStream printf(String format, Object... args){...} 위와 같이 가변인자 외에도 매개변수가 더 있다면, 가변인자를 매개변수 중에서 제일 마지막에 선언해야한다. (컴파일 에러 발생) 가변인자인지 아닌지 구별할 방법이 없기 때문에 허용하지 않는다. 가변인자는 내부적으로 배열을 이용한다 따라서 가변인자가 선언된 메서드를 호출할 때마다 배열이 새로 생성된다... 2023. 1. 3.
[JAVA] 변수와 메서드 (선언위치, JVM 메모리구조, static과 인스턴스) 선언위치에 따른 변수의 종류 변수의 종류 선언위치 생성시기 클래스(static) 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스(instance) 변수 인스턴스가 생성되었을 때 지역(local) 변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 1. 인스턴스 변수 클래스 영역에 선언, 클래스의 인스턴스를 생성할 때 만들어진다 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야함 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있음 2. 클래스 변수 인스턴스 변수 앞에 static을 붙여 클래스 변수 선언 독립적인 저장공간을 갖는 인스턴스 변수와 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유 한 클래.. 2023. 1. 3.
[Spring] 서블릿, JSP, MVC 패턴 서블릿, JSP, MVC 패턴 비교 서블릿 은 자바 기반의 웹 애플리케이션 프로그래밍 기술로, 1997년 부터 사용되었다. 서블릿은 HTML 생성이 어렵다는 문제점이 있어, HTML 코드에 동적으로 자바 코드를 섞어 사용할 수 있는 뷰 템플릿 엔진인 JSP 가 1999년 등장하였다. JSP를 사용하면 편리하게 HTML생성이 가능했으나, 비즈니스 로직까지 너무 많은 역할을 담당한다는 문제가 있었다. 때문에 이후 서블릿, JSP를 조합한 MVC 패턴을 사용하여 모델, 뷰 컨트롤러로 역할을 나누어 개발하였다. 간단한 회원 저장 기능을 예로 들어보자. 서블릿으로 회원 저장 @WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save").. 2022. 7. 28.
[Spring] 서블릿(Servlet) 이란? 서블릿(Servlet) 이란? 서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다. 서블릿을 사용하는 이유 회원의 이름과 나이를 DB에 저장하는 간단한 WAS를 예로 들어보자. // 웹 브라우저가 생성한 요청 HTTP 메시지 - 회원 저장 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=kim&age=20 // 서버에서 HTTP 응답 메시지 생성 HTTP/1.1 200 OK Content-Type: text/html;charset.. 2022. 7. 28.
[Web] HTTP, Web Server, WAS HTTP 란 하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 레이어 프로토콜이다. HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연다음 응답을 받을때 까지 대기하는 전통적인 클라이언트-서버 모델을 따른다. HTTP는 무상태 프로토콜이며, 이는 서버가 두 요청간에 어떠한 데이터(상태)도 유지하지 않음을 의미한다. Stateless vs. Stateful stateless 프로토콜은 수신자가 이전 요청의 데이터(상태)를 유지하지 않는 커뮤니케이션 프로토콜이다. 전송자는 관련된 데이터(상태)를 수신자에게 보내는데, 이 때 모든 요청은 이전 요청의 데이터와 관계없이 독립적으로 수행될 수 있어야한다. ex) Internet Protocol (IP), HT.. 2022. 7. 28.
[백준] 1080 : 행렬 (JAVA) https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net Solution 대표적인 그리디 문제다. 너무 복잡하게 생각하느라고 시간을 낭비한 편이다(...) 문제를 풀면서 깨달은 점은 0->1, 1->0 뒤집기 문제에서는 불일치 하는 숫자를 최대한 한번에 많이 뒤집으려고 하는 시도가 무의미하다.. => 2번 뒤집으면 원상복귀한다. => 전부 일치하게 만드는 뒤집기가 아닌 이상 부분적으로 불일치가 일어난다. 이후에 처리가 되는지 알 수가 없다. 현재 뒤집는 시도가 이전에.. 2022. 7. 28.