프로그래밍 언어/[ Java ] 29

[ Java ] 13. Java의 자료형 (Primitive type & Reference type)

Primitive type & Reference type Primitive type에 대해 설명하라 Reference type에 대해 설명하라 자바에는 기본형(Privitive type)과 참조형(Reference type)이 있다. 일반적으로 다음처럼 분류가 된다. Java Data Type ㄴ Primitive Type ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char) ㄴ Reference Type ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum T..

[ Java ] 12. Java의 형변환 (2)

Promotion & Casting Promotion에 대해 설명하라. Casting에 대해 설명하라. 형변환할 때 발생할 수 있는 에러에 대해 설명하라. 데이터 타입 형변환 (타입 변환) Java에서 연산은 "2(byte 데이터 타입) + 3(byte 데이터 타입)" 과 같이 동일한 데이터 타입에서 가능합니다. 하지만, 프로그램을 만들다 보면 "2(byte 데이터 타입) + 3.5(double 데이터 타입)"과 같이 서로 다른 데이터 타입끼리의 연산이 필요할 때가 있습니다. 이럴 경우 변수의 데이터 타입을 바꿔주는 작업이 필요한데, 이것이 데이터 타입의 형변환(타입 변환)입니다. 이러한 형변환(타입변환)에는 크게 자동 형변환(Promotion)과 강제 형변환(Casting)이 있습니다. 또 다른 말로 ..

[ Java ] 11. Garbage Collection에 관해

Garbage Collection Garbage Collection의 역할에 대해 설명하라 Garabage Collection의 메모리 해제 과정을 3단계로 설명하라 Generational Garbage Collections에 대해 설명하라 Generational Garbage Collection 과정에 대해 설명하라 Minor GC와 Major GC의 차이점에 대해 설명하라 C/C++ 프로그래밍을 할 때 메모리 누수(Memory Leak)를 막기 위해 객체를 생성한 후 사용하지 않는 객체의 메모리를 프로그래머가 직접 해제해야 했습니다. 하지만 JAVA에서는 JVM(Java Virtual Machine)이 구성된 JRE(Java Runtime Environment)가 제공되며, 그 구성 요소 중 하나인 ..

[ Java ] 10. Intrinsic Lock

Intrinsic Lock 위로 고유 락 = monitor lock = monitor 자바의 모든 객체는 lock을 갖고 있따. Synchronized 블록은 Intrinsic Lock을 이용해서 Thread의 접근을 제어한다. public class Counter { private int count; public int increase() { return ++count; // Thread-Safe 하지 않은 연산 } } Q) ++count문이 atomic 연산인가? A) read (count 값을 읽음) modify (count 값 수정) write (count 값 저장) 의 과정에서 여러 Thread가 공유 자원(count)으로 접근할 수 있으므로 동시성 문제가 발생한다. 그러면 Synchronize..

[ Java ] 09. Java에서의 Thread 활용

Java에서의 Thread 활용 요즘 OS는 모두 멀티태스킹을 지원한다. 실제로 동시에 처리될 수 있는 프로세스의 개수는 CPU 코어의 개수와 동일한데, 이보다 많은 개수의 프로세스가 존재하기 때문에 모두 함께 동시에 처리할 수는 없다. 각 코어들은 아주 짧은 시간동안 여러 프로세스를 번갈아가며 처리하는 방식을 통해 동시에 동작하는 것 처럼 보이게 할 뿐인다. 이와 마찬가지로 멀티스레딩이란 하나의 프로세스 안에 여러개의 스레드가 동시에 작업을 수행하는 것을 말한다. 스레드는 하나의 작업 단위라고 생각하면 편하다. Thread 구현 자바에서의 스레드 구현방법에는 2가지가 있다. Runnable 인터페이스 구현 Thread 클래스 상속 둘다 run() 메소드를 오버라이딩 하는 방식이다 ! public cla..

[ Java ] 08. JAVA의 형변환(Promotion, Casting)

Casting 캐스팅이란? 변수가 원하는 정보를 다 갖고 있는 것 int a = 0.1; // (1) 에러 발생 X int b = (int) true; // (2) 에러 발생 O, boolean 은 int로 캐스트 불가 (1)은 0.1이 double 형이 지만, int로 될 정보 또한 가지고 있다. (2)는 true는 int형이 될 정보를 가지고 있지 않다. 왜 캐스팅이 필요한가요? 다형성 : 오버라이딩 된 함수를 분리해서 활용할 수 있다. 상속 : 캐스팅을 통해 범용적인 프로그래밍이 가능하다. 형변환의 종류 묵시적 형변환 Promotion 캐스팅이 자동으로 발생 (업캐스팅) 작은 타입이 큰 타입으로 변환 Parent p = new Child(); (Parent) new Child()할 필요가 없다. P..

[ Java ] 07. JVM에 관하여

JVM Java Virtual Machine 시스템 메모리를 관리하면서, 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공 JVM은, 다른 프로그램을 실행시키는 것이 목적입니다. 크게 2가지 기능이 있습니다. 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 하는 것 프로그램 메모리를 관리하고 최적화 하는 것 JVM은 코드를 실행하고, 해당 코드에 대해 런타임 환경을 제공하는 프로그램에 대한 사양이다. 개발자들이 말하는 JVM은 보통 어떤 기기상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭합니다. 자바 애플리케이션을 클래스 로더를 통해 읽어들이고, 자바 API와 함께 실행하는 역할이며 JAVA와 OS 사이에서 중개자 역할을 수행하여 O..

[ Java ] 06. String, StringBuffer, StringBuilder의 특징

String, StringBuffer, StringBuilder 분류 String StringBuffer StringBuilder Storage Area Heap or Constant String Pool Heap Heap 변경 No (Immutable)(불변) Yes (Mutable)(가변) Yes(Mutable)(가변) 동기화 Yes Synchronized 가능 (Thread-safe) Synchronized 불가능. String 특징 new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않습니다.(Immutable) ex. + Boolean, Integer, Float, Long Garbage Collector로 제거되어야 합니다. 문자열 연산시 새로 객체를 만드는 Overhead가 발생합니다..

[ Java ] 05. Call by value vs Call by reference

Call by value vs Call by reference call by value 값에 의한 호출 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성됩니다.(종료 해당 공간 사라짐) call by value 호출 방식은 함수 호출 시 전달되는 변수 값을 복사해서 함수 인자로 전달합니다. 이 때 복사된 인자는 함수 안에서 지역적으로 사용되기 때문에 local value 속성을 가집니다. 따라서, 함수 안에서 인자 값이 변경되더라도, 외부 변수 값은 변경되지 않습니다. 예시 void func(int n) { n = 20; } void main() { int n = 10; func(n); printf("%d", n); } 10 call by reference 참조에 의한 호출 c..

[ Java ] 04. Java의 컴파일 과정

자바 컴파일과정 위로 자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Virtual Machine) 덕분인데, 그렇다면 JVM의 어떠한 기능 때문에, OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정으로 알아보자. 자바 컴파일 순서 개발자가 자바 소스 코드(.java)를 작성합니다. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일한다. 이 때 나오는 파일은 자바 바이트 코드(.class) 파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드입니다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다. 컴파일된 바이트 코드를 JVM의 클래스 로더(Class Loader)에게 전달합니다. 클래..

[ JAVA ] 03. Spring에서 JDBC를 활용하여 DB사용하기

1. JDBC JDBC(Java Database Connectivity)는 자바에서 데이터베이스를 접속하기 위한 기술 19-12-23 월 드라이버로딩 드라이버를 로딩한다는 것은 JVM이 어 떤 DBMS를 사용하는지 인식시키는 작업으로 java에서 오라클을 연동할 수 있도록 오라클에서 제공해준 드라이버 파일을 JVM의 메모리에 로딩시키는 작업을 하는 단계 커넥션설정하기 우리가 프린트기를 설치하고 케이블로 연결하는 것처럼. 혹은 네트워크에서 공유된 프린트기를 찾아 연결하는 것과 같이 DBMS에 저장된 데이터에 접근하기 위해서는 DBMS에 접속을 해야 합니다. getConnection Statement객체 생성하기 SQL문실행하기 결과처리 자원반납 statament의 주된 역할 => dbms의 sql을 실행 ..

[ JAVA ] 02. Spring Framework를 이용해 WEB만들기

20-01-21 화 Spring Framework 내부에서 객체를 관리 객체생성에 관여하는 기능 : 컨테이너 가 객체를 관리하는 방식 : IOC(Inversion of Control) 컨테이너 => 스프링의 컨셉을 이해하는데 가장 중요 WEB , DB연동, 로그, 트랜잭션 스프링에서는 객체를 Bean이라고 불러요 스프링은 우리가 일반적으로 만드는 방식대로 클래스를 만들고 어떻게 개발하는지 방식이 정해져있다. 클래스를 만드는 방식과 운영방식이 정해져있는 것. 20-01-22 수 스프링의 개요 1. 프레임 워크 완성된 소프트웨어가 아니라 어떤 문제를 해결하기 위해서 잘 설계된 미완의 모듈로 spring같은 경우 자바 개발자들이 공통으로 사용할만한 기능을 미리 정의해 놓은 모듈이다. ..

[ JAVA ] 01. 자바를 이용해 WEB 만들기

WEB 19-12-30 월 우리가 말하는 웹서버는 : IIS , apache 등등(웹서버 역할을 하는 소프트웨어) 이런 소프트웨어가 설치된 PC가 웹서버 client에 보여주기 위한 기본 기술(프론트엔드) : html, css, javascript, jQuery WAS(Web Application Server) Web logic, JEUS, Tomcat(Test Server) => 내부적으론 웹서버의 기능도 가지고 있으면서 자바를 실행할 수 있는 컨테이너의 기능을 갖고 있다. 결과를 조회해서 -> Servlet & JSP (서버기술 Application) Client Page + Web application/Server + DBMS(Oracle...SQL...) + Servlet&JSP => Spring..

[ JAVA ] 00. 자바의 기본 문법

0. basicJAVA 단순 코더가 아니라 구조를 바꿀 수 있어야 한다. R&D에서 개발할 거면 전체적인 흐름을 파악할 수 있어야 한다. 0. 초기 환경설정 jdk 다운로드 실행 환경설정 JAVA_HOME PATH 에디터 다운로드 eclipse edieplus 1. 자바 application 0. 실행환경 java "인터프리터"로 실행 start point -> public static void main(String [agrs]){} jar파일 - java아카이브. (rt.jar) => API 라이브러리 jar을 JVM에 올려놓으면 알아서 실행 output -> 자동으로 bin폴더에 저장 소스파일 -> src 폴더에 저장 1. 메모리 static / stack / heap ​ / -실행될 파일이 올라온다..