java
-
Kotlin 처음 시작하기Programming/Kotlin 2021. 12. 26. 23:32
https://kotlinlang.org/ Kotlin Programming Language kotlinlang.org 코틀린을 처음 알게된 건 우아한형제들의 '어디가서 코프링 매우 알은 체 하기'라는 세미나 때문이었는데, 그때는 필요성도 실용성도 잘 체감하지 못했었다. 하지만 서버 개발자의 길에 입문하면서 코틀린에 관심이 생겼고, 왜 서버 개발 언어의 흐름이 자바에서 코틀린으로 넘어갔는지 알고싶었다. 그래서 다양한 IT서비스 회사들의 코틀린 관련 세미나를 찾아서 들었다 (사실 아래에 있는 링크 전부를 들은 건 아니다.. ㅎㅎ) - 카카오: https://tv.kakao.com/channel/3150758/cliplink/391419295 - 당근마켓(녹화본 업로드 예정): https://www.yout..
-
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의 특성 상 동영상을 보면서 동시에 문서 작업을 하는 것과 같은 다중 동시 작업을 지원해야 할 때 여러 프로세스가 메모리에 동시에 적재되고 번갈아가며 실행된다. 프로세스 또한 여러 작업 단위를 동시에 실행해야 할 수 있다. 프로세..
-
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 Wrapper ClassProgramming/Java 2021. 4. 13. 20:49
Wrapper Class는 primitive data type을 캡슐화하는 클래스이며, 다른 클래스의 객체 인스턴스 및 메소드를 만들기 위해 사용한다. Primitive Data Type에 Object처럼 사용하기 위해 Class로 바인딩시키는 역할이라고 할 수 있다. 1️⃣ primitive type은 class의 generic으로 사용할 수 없고, 2️⃣Object의 하위 클래스를 요구하는 메소드가 있을 때 일반 primitive data type을 Wrapper class로 감싸서 사용한다. 일단 primitive data type을 이용하면 일정 단위의 데이터 저장을 위해 Array만을 이용할 수 있지만, 원시 데이터 타입을 wrapper class로 감싸면 java의 다양한 collection을..
-
[Java] Comparable과 ComparatorProgramming/Java 2021. 4. 6. 10:04
Comparable과 Comparator는 모두 Java의 인터페이스이다 단어도 비슷하고, 인터페이스 내 메소드 내 구현해야 할 메소드 명도 비슷해서 항상 용법이 헷갈리지만 엄연히 역할들이 분류되어 있었다. Interface Comparable Comparable은 java.lang package에 존재하는 public interface이며 이 인터페이스를 구현하는 클래스의 객체는 순서를 정의할 수 있는 규칙을 부여할 수 있다. Collections.sort(Arrays.sort)를 할 때 인자로 Comparator를 넘겨 주지 않아도 되며 sorted map이나 sorted set에서도 그 order가 적용된다. public class Point implements Comparable { int x; ..