본문 바로가기

분류 전체보기

(26)
Cookie와 Session Cookie와 Session Cookie와 Session을 사용하는 이유 HTTP 프로토콜의 특징이자 약점인 비연결지향(Connectionless)와 상태정보유지안함(Stateless) 보완하기 위해서 사용합니다. 비연결지향(Connectionless) : 클라이언트가 Request를 서버에 보내면 서버는 클라이언트에게 요청에 맞는 Response를 보내고 접속을 끊습니다. 상태정보유지안함(Stateless) : 연결을 끊는 순간, 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성 Cookie 정보를 유지할 수 없는 Connectionless, Stateless의 성격을 가진 HTTP 프로토콜의 단점을 해결하기 위해 도입됨 웹 서버가 브라우저에게 지시하여 사용자의 로컬 컴퓨터의 파일 또는..
Java 메모리 - (3) Garbage Collector Garbage Collector(GC) 메모리 관리 방법 중 하나로 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라 부릅니다. C언어의 경우, 프로그래머가 메모리를 할당한 뒤 수동으로 해제까지 직접 해줘야 합니다. 그래서 메모리를 할당해놓고 필요없어진 뒤에도 해제를 안하는 일 등이 생겨서 메모리 누수가 생기거나 거꾸로 해제했던 메모리를 다시 사용하는 실수가 생기곤 합니다. 이러한 문제들을 해결하기 위해 생겨난 것이 가비지 컬렉션이며, 가비지 컬렉션 기능을 채택한 언어의 경우에는 가비지 컬렉터가 자동으로 프로그램이 실행되며 생기는 쓸모 없는 메모리들을 알아서 수집하고 관리해줍니다...
Java 메모리 - (2) JVM JVM(Java Virtual Machine) JVM을 이해하기 위해서는 JVM, JRE, JDK, Java를 구분해서 알아야 할 필요가 있습니다. JVM (Java Virtual Machine) Java Byte Code를 OS에 맞게 해석해주는 역할을 합니다. Java Compiler는 .java 파일을 .class 라는 Java Byte Code로 변환시켜 줍니다. Byte Code는 기계어가 아니기 때문에 OS에서 바로 실행되지 않습니다. 이때, JVM은 OS가 Byte Code를 이해할 수 있도록 해석해줍니다. 이러한 JVM의 해석을 거치기 때문에 C언어 같은 네이티브 언어에 비해 속도가 느렸지만, JIT(Just In Time) 컴파일러를 구현해 이점을 극복했습니다. 따라서, Byte Code..
Java 메모리 - (1) Java 메모리 구조 Java 메모리 구조 Java 애플리케이션을 개발할 때, 메모리를 잘 아는 것은 중요합니다. 메모리에 어떻게 코드가 적재되는지 이해해야 코드를 최적화할 수 있고 코드 에러를 피할 수 있습니다. 메모리 관리가 잘 되지 않는 프로그램은 서비스 속도 저하에서부터 심하게는 서버 불능 상태에 이르기도 합니다. 한정된 자원에서 효율적으로 메모리를 사용하여 성능 향상도 가능합니다. Method Area(Static Area) JVM이 구동될 때 생성되며 모든 스레드가 공유하는 영역 JVM 구동 중 사용될 클래스 파일을 읽고 클래스 별로 runtime constant pool(런타임 상수 풀), field data(필드 데이터), method data(메서드 데이터), constructor(생성자) 등을 저장 필드 정..
객체지향 프로그래밍(OOP) 객체지향 VS 절차지향 절차지향(Procedural Programming)이란? 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. 대표적인 절차지향 언어에는 C언어가 있습니다. 절차지향 프로그래밍은 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리합니다. 장점 컴퓨터의 처리구조와 유사해 실행 속도가 빠릅니다. 단점 유지보수가 어려움 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움 디버깅이 어려움 객체지향(Object Oriented Programming)이란? 실제 세계를 모델링하여 소프트웨어를 개발하는 방법입니다. 객체지향 프로그..
JAVA Java란? 객체지향 프로그래밍 언어이다. 서버, 모바일, 임베디드, 애플리케이션 등 다양한 분야에서 쓰인다. 처음 나온 것은 1995년이다. Java의 특징 쉬운 언어이다. C와 C++언어의 문법을 기본으로 차용하여 개발된 언어 C와 C++이 가진 어려운 문법인 포인터와 다중 상속 제거 C와 C++에 비해 쉬운 언어이다. 이식성이 높은 언어이다. Java는 JVM(Java Virtual Machine) 위에서 돌아가기 때문에 운영체제 종류에 상관없이 돌아간다. Java 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도 자바 실행 환경(JRE : Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능하다. 따라서 Java 언어는 이식성이 높은 프로그래밍 언어라..