Programming/Java
-
StackOverflowError가 뭘까? (사이트 아님)Programming/Java 2021. 11. 8. 22:22
https://stackoverflow.com/questions/3197708/what-causes-a-java-lang-stackoverflowerror/3197731 What causes a java.lang.StackOverflowError What can cause a java.lang.StackOverflowError? The stack printout that I get is not very deep at all (only 5 methods). stackoverflow.com When a function call is invoked by a Java Application, a stack frame is allocated on the call stack. The stack frame contai..
-
Thread-Safe: Multi-Thread 환경에서 동시성을 제어하기Programming/Java 2021. 10. 17. 00:19
https://2jinishappy.tistory.com/323 Java에서 Thread를 사용하는 방법 애플리케이션의 구현이 복잡해지면서 CS 기초 특히 트랜잭션, 쓰레드를 제대로 이해해야 겠다고 느꼈다. 그래서 쓰레드의 정의, 자바에서의 쓰레드 사용법, Thread-Safe 구현 방식, Thread-Safe Collection 2jinishappy.tistory.com Thread-Safe Java 환경에서는 개발자가 쉽게 다중의 Thread를 생성하고 사용할 수 있다. 여러 쓰레드의 바이트 코드를 동시에 실행시키는 멀티 쓰레딩은 애플리케이션 성능을 향상시킬 수 있지만, Resource를 공유하기 때문에 안전한 접근 방식이 필요하다. 즉, Multiple Thread를 사용할 때 에는 Thread-S..
-
POJO(Plain Old Java Object)와 JavaBeanProgramming/Java 2021. 10. 8. 19:00
POJO(Plain Old Java Object) 특정 프레임워크에 종속되지 않은 순수한 자바 객체 속성, 메서드에 대한 어떠한 네이밍 규칙도 없다. Java EE와 같은 무거운 프레임워크들이 서비스 시장을 점유했을 때, 해당 프레임워크에 종속된 (무거운) 객체를 사용해야 했던 것에 반발해서 나오게 된 개념이다. Spring Framework는 POJO를 기본 개념으로 채택했다. public class EmployeePojo { public String firstName; public String lastName; private LocalDate startDate; public EmployeePojo(String firstName, String lastName, LocalDate startDate) { ..
-
Java에서 Thread를 사용하는 방법Programming/Java 2021. 10. 4. 01:19
애플리케이션의 구현이 복잡해지면서 CS 기초 특히 트랜잭션, 쓰레드를 제대로 이해해야 겠다고 느꼈다. 그래서 쓰레드의 정의, 자바에서의 쓰레드 사용법, Thread-Safe 구현 방식, Thread-Safe Collections 같이 자바에서의 쓰레드 활용에 대해 리스트로 정리하고자 한다. Thread-safe에 대한 내용이 길어질 것 같아서 이 글에서는 Java에서의 Thread 선언까지만 다룰것이다. 프로세스와 쓰레드 프로세스는 실행 중인 프로그램의 단위를 말한다. 현재 OS의 특성 상 동영상을 보면서 동시에 문서 작업을 하는 것과 같은 다중 동시 작업을 지원해야 할 때 여러 프로세스가 메모리에 동시에 적재되고 번갈아가며 실행된다. 프로세스 또한 여러 작업 단위를 동시에 실행해야 할 수 있다. 프로세..
-
String Pool - Java의 String은 어디에 저장될까Programming/Java 2021. 8. 26. 01:24
Java String API(java.lang.String)는 Java에서 Primitive Data Type과 Reference Data Type의 중간 성격을 띄는, 특별한 클래스이다 https://2jinishappy.tistory.com/259?category=936901 [Java] String 🆚 StringBuffer 🆚 StringBuilder 무슨 차이일까? "String, StringBuilder, StringBuffer의 차이에 대해 설명하세요" 라는 면접 빈출 질문이 있다고 한다 그래서 오늘 java 공식 api 문서를 보면서 세 가지 클래스의 차이를 정리해 볼 것이다 1. String String 클.. 2jinishappy.tistory.com 이 글에서 언급한 것 처럼, Str..
-
Checked and Unchecked ExceptionProgramming/Java 2021. 8. 25. 21:10
Exception Java에는 Checked Exception과 Unchecked Exception이 존재한다. Checked Exception RuntimeException을 상속하지 않는 클래스. Exception 처리 코드 여부를 컴파일러가 Check 프로그램 실행 흐름 상 에러 발생 가능이 있을 때 try-catch / throws를 이용해 예외 처리 (Spring) Transaction의 기본 Rollback 대상이 아니기 때문에 트랜잭션 관리를 위한 추가적인 처리를 해주어야 한다 Unchecked Exception RuntimeException을 상속하는 클래스. 언제 발생할까? 프로그래머의 실수로 발생하는 예외 상황(0으로 나누기, NPE, OutOfIndex 등) 컴파일 시점에는 에러가 발..
-
[Java] Hotspot JVM Garbage Collection 과정Programming/Java 2021. 8. 23. 21:22
Garbage Collection(GC)은 메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당한 메모리 영역 중 더 이상 사용하지 않는(않을 것이라 판단되는) 영역을 해제하는 기법이다. C언어의 malloc을 이용한 동적 할당은 free를 통해 사용자가 메모리 해제의 시점과 여부를 선택해야 했다. //SIZE 만큼 동적할당 int* arr = (*int)malloc(sizeof(int)*SIZE); //직접 메모리 영역 해제 free(arr); 이러한 방식은 해제해야 할 메모리 영역도 그대로 남아있는 메모리 누수를 발생시킬 수 있기 때문에 요즘의 언어에서는 메모리가 더 이상 참조되지 않는 시점에 알아서 메모리를 해제하는 GC를 두는 것이 일반적이다. 이 글에서는 JVM(Java Virtual Mach..
-
[Java] Primitive Data TypesProgramming/Java 2021. 8. 22. 05:23
Java는 statically-typed language로서 컴파일 시간에 변수의 타입이 초기화 되므로 변수는 선언과 동시에 반드시 초기화 되어야 한다 int num = 1; 이러한 문장을 통해 numeric data를 가지고 있고 '1'의 초기 값을 지닌 num이라는 변수를 선언할 수 있다. 변수의 데이터 타입은 변수가 가질 수 있는 값, 해당 변수에 적용할 수 있는 연산들을 지정할 수 있다. 자바는 클래스형이 아닌 8가지의 원시 타입(숫자형, 문자형)을 제공한다. data type size 표현 범위 default value byte 1byte -128 ~ 127 0 short 2byte -32,768 ~ 32,767 0 int 4byte -2^31 ~ 2^31 - 1 (unsigned) 0 ~ 2^..