본문 바로가기

지식

[Java] 자바 static, final , static final 차이 오늘 MyBatis를 적용하면서 static관련 에러 메세지를 보게 되었습니다. 기초적인 에러라고 생각하고 고쳐야지 하면서 생각을 하는데... 에러를 고치는데 많은 시간을 쓰게 되고 한번 정리를 해야겠다 생각하게 되었습니다. - static 이란? 정적, 고정된의 의미를 갖고 있습니다. static 키워드를 사용하여 변수, 메소드를 만들 수 있습니다. 이들을 정적 변수, 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버 혹은 클래스 멤버라고도 합니다. 말 그대로 static 변수와 메소드는 객체(인스턴스)에 소속된 멤버가 아닌 클래스에 고정된 멤버입니다. (클래스로더가 클래스를 로딩해서 초기화할 때 함께 초기화됩니다.) - static 멤버 생성 이전의 자바 컴파일 과정을 설명한 글을 쓰면서 나온 개념으로.. 더보기
[Spring] 객체지향 설계와 스프링 (SOLID) - 스프링과 객체지향의 관계 1. 스프링은 자바 언어 기반의 프레임워크입니다. 자바 언어의 가장 큰 특징은 "객체 지향 언어"입니다. 2. 스프링은 객체 지향 언어가 가진 강력한 특징을 잘 살려내는 프레임워크입니다. 3. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다. 그렇다면..... - 좋은 객체지향 프로그래밍이란? 객체 지향의 가장 큰 특징은 "다형성" 입니다. 다형성을 구현하기 위해 추상화, 캡슐화, 상속 등 다양한 개념들이 함께 합니다. - 다형성(Polymorphism) : 유연하고 변경이 용이하게 합니다. 레고 블럭을 조립하듯이, 컴퓨터의 키보드, 마우스를 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법입니다. 즉, 역할과 구현으로 세.. 더보기
[지식] 프로세스, 스레드 (process, thread) 프로세스 : 프로그램을 메모리 상에서 실행 중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 위 그림처럼 프로세스는 각각 별도의 주소공간을 할당 받습니다. (독립적) - Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령) - Data : 전역변수, 정적변수, 배열 등 => 초기화 된 데이터는 data 영역에 저장, 초기화 되지 않은 데이터는 bss 영역에 저장 - Heap : 동적 할당 시 사용 [new(), malloc() 등] - Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역, 스레드마다 존재) * 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유합니다. * 기본적으로 프로세스마다 최소 1개의 스레드 소유 합니다. (메인 스레드 포함) (프로세스.. 더보기
[Java] Call by value, Call by reference Call by value : 값에 의한 호출 - 함수가 호출될 때 메모리 공간 안에서는 임시의 공간이 생성됩니다. 그리고 함수가 종료되면 해당 공간은 사라집니다. - 함수 호출 시 전달되는 변수 값을 복사해서 함수 인자로 전달합니다. - 복사된 인자값은 함수에서만 지역적으로 사용되기 때문에 local value 속성을 가집니다. * 즉, 함수 안에서 인자값이 변경되어도, 외부 변수 값은 변경되지 않습니다. (데이터 값을 복사해서 함수로 전달하기 때문에 원본 데이터가 변경될 가능성이 없습니다.) Call by reference : 참조에 의한 호출 - 함수 호출 시 전달되는 변수의 레퍼런스를 전달합니다. - 인자값은 전달된 변수를 가르키게 되어 인자값을 변경할 경우 전달된 변수의 값도 변경되게 됩니다. *.. 더보기
[지식] OSI 7 계층 OSI 7 계층이란 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 이렇게 계층을 나눈 이유는 네트워크 통신에 대하여 흐름을 한눈에 보기 쉽고, 사람들이 이해하기 쉽고 통신이 일어나는 과정 중 특정한 곳에 이상이 생기면 해당 나눠진 단계를 통해 빠르게 파악할 수 있기 때문입니다. 1. 물리(Physical) : 리피터, 케이블, 허브 등 데이터를 전기적인 신호로 변호나해서 주고받는 기능을 진행하는 계층 즉, 데이터를 전송하는 역할만 진행 2. 데이터 링크(Data Link) : 브릿지, 스위치 등 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 계층 따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있습니다. 이 계층에서는 MAC 주소를 통해 통신 3... 더보기
[Java] 자바 컴파일 과정, JVM 기본 개념 자바는 OS에 독립적인 특징을 가지고 있습니다. 즉, Windows에서도 MacOS에서도 차이가 없이 구동이 가능하다는 특징이 있습니다. 이러한 특징을 가능하게 해주는 것이 JVM(Java Virtual Machine)입니다. 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성합니다. 2. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일합니다. 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상머신이 이해할 수 있는 코드입니다. (추가로, 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다.) --------------- 3. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loade.. 더보기
[지식] REST, REST API, RESTful REST API를 알아보기 전 먼저 REST와 API의 단어에 대하여 알아보면 REST REST는 (Representational State Trasfer)의 줄임말로 네트워크 아키텍처 원리의 모음이다. 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. REST의 구성 요소를 설명하기 앞서 URI와 URL에 대하여 간단히 설명을 하면, URI(Uniform Resource Identifier)로 인터넷에 있는 자원을 나타내는 유일한 주소로 인터넷에서 요구되는 기본 조건으로 인터넷 프로토콜에 항상 붙어 다닌다. URL(Uniform Resource Locator)은 URI의 하위 개념으로 파일 식별자, 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약, 웹 리소스에 대한 참조 등 .. 더보기