Java
-
[Java] Java Multi-Thread Programming의 모든것을 알아보자Java/자바를 더 깊게 2022. 3. 2. 01:53
Multi-Thread란 무엇인가(What)? 우선 Multi-Thread에 대해 알아보기 전에 프로세스에 대해 먼저 알아보겠습니다. 프로세스란? 단순하게 말하자면 실행 중인 프로그램입니다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 됩니다. 우리가 친숙한 바탕화면의 실행 아이콘들이 프로그램입니다. 프로세스는 CPU, 메모리, 디스크, 네트워크 등의 자원을 사용하고 있습니다. 이클립스가 메모리를 1GB사용하고있네요. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 스레드로 구성되어 있습니다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 스레드입니다. 따라서 모든 프로세스에는 최소한 하나 이상의 스레드가 존재하며, 둘 이상의 스..
-
[Java] Java8 default 인터페이스Java 2022. 2. 28. 16:38
default interface란? interface라 하면 추상화를 위해 method의 구현은 없고 선언만 있는 모습을 떠올리기 쉽습니다. public interface MyInterface{ int myAbstractMethod1(); int myAbstractMethod2(); } 하지만 Java8에서는 interface에 아래와 같은 method들을 정의하는 것이 가능해졌습니다. public interface MyInterface { int myAbstractMethod1(); int myAbstractMethod2(); default int myDefaultMethod() { return 0; } static int myStaticMethod() { return 0; } } 키워드 default..
-
[Java] 자바의 인자 전달 방식 (call by value와 call by reference)Java 2022. 2. 27. 00:01
우선 call by value와 call by reference에 대해 먼저 설명해 드리겠습니다. Call-By-Value (값에 의한 호출) package javastudy; public class callByValueTest { public static void main(String[] args) { int x = 3; int y = 5; System.out.println(x + " " + y); swap(3,5); System.out.println(x + " " + y); } static void swap(int x, int y) { int temp = x; x = y; y = temp; } } 위의 코드의 출력 결과는 어떻게 될까요? 첫 번째 줄에는 당연히 3 5가 출력됩니다. swap이라는 메서..
-
[Java] 이클립스 글자 안 보일 때 해결 방법(이클립스 흰 화면 출력 시 해결 방법)Java 2022. 2. 26. 00:01
갑자기 잘되던 이클립스가 아래와 같이 아무것도 보이지 않고 엄청나게 큰 커서만 깜빡거리는 상황이 발생하였습니다. 오류 사진 첨부 우선 우클릭을 눌러 Preferences로 들어가 우측 상단에 font를 검색하여 Colors and Fonts로 이동합니다. Aa라는 이미지 옆에 공백이 있습니다. Use System Font를 사용하게 되면 다음과 같이 공백이 글자로 바뀌게 됩니다. 이후에 Apply and Close를 누르게 되면 글자가 잘 출력됩니다.
-
[Java] Java Collection Framework의 모든것을 알아보자Java/자바를 더 깊게 2022. 2. 22. 17:29
Java Collection Framework(JCF)란? Collection이란 객체 그룹을 나타내는 객체입니다. Collection 에 기본형 int를 넣지 못하고 객체인 Integer를 넣는 것을 떠올리시면 됩니다. 컬렉션 프레임워크는 컬렉션을 표현하고 조작하기 위한 통합 아키텍처로, 세부 구현 사항과 독립적으로 컬렉션을 조작할 수 있습니다. 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것으로 생각하시면 됩니다. Framework vs Library 둘 다 개발 생산성을 증가시켜준다는 공통점이 존재하지만 제어를 누가 할 수 있느냐에 따른 차이점이 있습니다. 라이브러리는 개발자가 라이브러리를 제어할 수 있으며, 프레임워크는 프레임워크가 개발자를 제어합니다..
-
[Java] DTO, DAO, VO란?Java 2022. 2. 19. 00:01
자바를 공부하던 중 DTO, DAO라는 단어들이 많이 보여서 확실하게 개념을 잡고 가고자 정리하게 되었습니다. DAO란? Data Access Object의 약자로, 데이터베이스의 data에 접근하기 위한 객체입니다. 데이터베이스에 접근하기 때문에 Service와 DB를 연결하는 고리의 역할을 합니다. jdbc와 같은 곳에서 db connection을 받아오거나, DB와 서로 통신하는 기능을 담당하는 객체를 뜻합니다. 아래의 코드는 DAO 클래스의 예제입니다. jdbc쪽 안 써보셨다면 이해가 어려울 수 있지만 단순히 DB와 연결하여 통신(조회, 삭제, 수정)할 수 있는 객체입니다. 코드를 보시면 List를 반환하네요? MemberDto라는 객체의 리스트를 반환하는데 DTO란 무엇인지는 아래에서 살펴보겠습..
-
[Java] JVM이란? JVM(Java Virtual Machine)의 모든것을 알아보자Java/자바를 더 깊게 2022. 2. 17. 09:06
JVM이란? Java Virtual Machine의 약자로 자바 가상 머신이라고 불립니다. 자바와 운영체제 사이에서 중계자 역할을 합니다. 따라서 자바가 운영체제 종류에 영향받지 않고 돌아갈 수 있도록 합니다. = (Write Once Run AnyWhere) C언어나 C++언어 같은 경우에는 16비트, 32비트, 64비트 플랫폼에 따라 int 형의 크기가 변하지만 JVM은 기본 자료형인 int는 4바이트(2^32)로 고정시켜 타입의 안정성을 꾀하고 플랫폼 독립성을 보장합니다. 어떤것들은 JVM이라고 부를 수 있을까? (JVM Specification) Specification은 '규격' 또는 '사양'이라고 번역됩니다. 특정 기술분야에 대해, 이 기술은 이런 규격을 가졌으니 이 기술을 사용하거나 구현할 ..
-
[Java] String이 불변 객체인 이유는?Java/자바를 더 깊게 2022. 2. 15. 01:19
보통 String / StringBuffer / StringBuilder의 차이점들은 많이 알고 있습니다. String은 불변 객체이며, StringBuffer/ StringBuilder는 가변 객체입니다. 또한 StringBuilder는 thread-safe 하지 않으며 StringBuffer는 thread-safe 합니다. 그런데 String은 왜 불변 객체로 만들었을까요? 1. 성능 자바에서 문자열은 정말 많이 사용됩니다. 따라서 자바는 상수풀 이라는 것을 만들었습니다. public class Test { public static void main(String[] args) { String s1 = "Hello World"; String s2 = "Hello World"; System.out.pri..