Overview When we develop application, we always think concepts called "Blocking, Non-blocking, Synchronous, Asynchronous". We usually think that "Blocking, non-blocking, Synchronous, Asynchronous" are the same. But, This perspective is wrong. It is unrelated concepts each other. It is difficult and confusing concepts. It is confused between "Blocking" and "Synchronous". Likewise, It is confused ..
Java uses memory without explicitly releasing it. Instead, JVM manages memory. JVM deletes unused objects in the Heap area by GC. Heap area is dynamically allocated memory area. Heap manages object-type data objects, typically classes such as String and Collection. The important part of this is to determine which object to keep and which object to GC in Heap. GC is designed with the following co..
We have a lot of thoughts about OOP(Object Oriented Programming). But many people can't answer easily. Some people answer SOLID principle. From the beginning class, we are going to learn about the basics of OOPs in JAVA. In order to implement OOP in JAVA, We have to satisfy a few things. The concepts for OOP is as follows. Class Object Abstraction Inheritance Encapsulation Polymorphism Attribute..
개요 Java 개발자라면 Jackson에서 제공하는 ObjectMapper와 자주 마주치게 됩니다. Java 클래스 내용을 확인하거나 내용물의 Parsing 과정에 필요한 커스터마이징이 존재하기 때문입니다. 물론 중요한 기능은 (1) "Java Object" =Serialize=> "JSON", (2) "JSON" =Deserialize=> "Java Object" 입니다. 개발 중에 매 번 찾아보기 지쳐서 이제는 한 곳에 정리가 필요하지 않을까 생각되어서 이 글을 쓰게 되었습니다. 목차 Add Dependency for "Jackson ObjectMapper" Basic Features Convert "Java Object" to "JSON" Convert "JSON" to "Java Object" C..
개요 "자바 인터페이스(Java Interface)는 무엇인가?" 이런 궁금점을 가지고 있는 Java Programmer가 많습니다. 저는 "객체 지향 개발 5대 원칙 - SOLID"을 만족시켜줄 수 있어서라고 생각합니다. 그러면 "왜 SOLID를 만족시켜야 하는가?"라는 질문을 가지게 됩니다. 서비스 애플리케이션의 라이프사이클을 "설계 / 개발 / 유지보수" 세 단계로 나누면, 유지보수가 소프트웨어 라이프사이클에서 가장 큰 부분을 차지합니다. 유지보수에서 인터페이스(interface)는 SOLID를 구현하고, 객체 지향 개발을 하는데 큰 도움을 줍니다. "설계 / 개발 / 유지보수" 관점에서 객체 지향을 설명하면, 다음과 같은 장점이 있습니다. 객체 지향 사용하여, 대상을 추상화를 하고, 추상화된 대상..
간략하게 SHA-2 란? SHA-2(Secure Hash Algorithm 2)는 해시 알고리즘입니다. 여기서 해시 알고리즘은 값를 입력받아, 고정된 길이의 해시값을 출력하는 알고리즘입니다. 암호 알고리즘에는 키가 사용되지만, 해시 알고리즘 함수는 키를 사용하지 않습니다. 그래서 같은 입력에 대해 항상 같은 출력이 나오게 됩니다. 해시 알고리즘 함수를 사용하는 이유는 동일한 값인지 살피거나, 변조를 탐지할 수 있는 무결성을 갖기 위함입니다. 해시함수가 출력하는 압축된 문장을 다이제스트(Digest) 라고 합니다. SHA-2가 생성하는 Digest 출력 길이는 224, 256, 384, 512bit입니다. SHA-2의 256bit 버전을 SHA-256로, SHA-2의 512bit 버전을 SHA-512로 줄..
String format 문법 형식 %[argument_index$][flags][width]conversion 문법 설명 1) 필수값: %와 conversion 으로 무조건 있어야합니다. "conversion": 표현 할 데이터의 타입으로, s(문자열), d(정수), x(16진수), o(8진수), f(실수) ex) %s, %d, %x, %o, %f ex) System.out.println(String.format("%s, %s", "KOREA", "JAPAN")); 2) 옵션값: [argument_index$][flags][width] 는 생략 가능합니다. 생략 가능한 옵션 [argument_index] 옵션 [flags] 옵션 [width] 옵션 [argument_index] 옵션 들어갈 파라미터의 ..
정의 자바프로그래밍하면 객체지향프로그래밍 OOP(Object Oriented Programming)라고 해도 됩니다. OOP의 특성으로 크게 캡슐화, 추상화, 다형성, 상속성 정도는 명확하게 알고있어야 합니다. 어떤 대상을 Abstraction하여 공통점을 찾고, 그것을 Encapsulation하여 한군데에 모아서 객체를 만들고, Inheritance하여 재사용이 가능하게 만들어줍니다. 상속받은 객체는 Polymorphism 하여 기능을 수정 또는 추가하여 재사용할 수 있다로 이해하면 됩니다. 결국 가장 중요한 것은 동일하게 반복하여 사용하는 코드를 줄이기 위해 OOP를 사용합니다. 유지보수의 관점에서도 좋겠죠? 1. 추상화 (Abstraction) 나중에 따로 추상클래스(Abstract Class)와 ..