자바

직렬화란? 문득 개발을 하면서 갑자기 그런 생각이 들었습니다 자바 직렬화가 도대체 뭐지? Spring을 공부하면서 ObjectMapper를 쓰는데 직렬화한다는 것을 알게되고, 갑자기 궁금해져서 글을 쓰게됬어요 ㅎㅎ 그래서 직렬화란 Java 시스템 내에서 사용되는 객체를 외부의 Java 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 통틀어서 이야기 합니다! 조금 더 상세하게 이야기하면..! JVM의 메모리에 상주되어 있는 데이터를 Byte형태로 변환하는 것을 의미합니다! 그럼 어떻게.? Java의 Interface중 하나인 Serializable을 상속받으면 사용이 가능합니다.! package com.huisam.spr..
Visitor Pattern? - 방문자 패턴(Visitor Pattern) : 알고리즘을 객체 구조에서 분리시키는 디자인 패턴이다. - 분리를 하게 되면, 구조를 수정하지 않고 새로운 동작을 기존 객체에 추가할 수 있다!! -> 개방 폐쇄 원칙을 적용하게 된다! Why Visitor Pattern? - 데이터 구조와 연산을 분리 하여 인스턴스 필드를 변경하지 않고 새로운 연산을 추가할 수 있기 때문이다! - 한마디로, domain에게 View를 위한 책임은 Visitor에게 위임하기 위해서 사용된다! - 새로운 연산을 더 만들고 싶다면, 새로운 방문자를 추가하면 된다! 패턴 적용 Car Interface 구현 * Car Interface를 구현해보자! package visitor.domain; impo..
Strategy Pattern? - 전략 패턴(Strategy Pattern) : 알고리즘군을 정의하고 각각을 캡슐화해서 실행중에 알고리즘을 선택할 수 있는 행위 패턴이다. * 한마디로, 행위 자체를 인터페이스로 선언하고 각각의 알고리즘은 클래스로 상속받아서 오버라이딩 하는 방식이다. * 조금 더 쉽게 말하자면, 행동 이름자체는 똑같지만, 내용을 다르게 하기 위해 사용한다!! Why 전략 패턴? * 알고리즘 자체가 랜덤(Random) 로직이 포함될 경우, 테스트가 불가능해지는 현상이 있다. -> 이를 해결하기 위해, 정적인 로직을 갖는 알고리즘과 랜덤 로직을 갖는 알고리즘을 분리하여 테스트한다! * 위 예시는 수많은 사례중 하나이고, 많은 인터넷 블로그들은 Fly 라는 인터페이스를 주로 예시로 하더라!!..
Hash? - Hash Function : 해시 함수는 임의의 문자열을 받아서 고정 문자열로 바꾸어주는 함수다! 이때 서로 다른 문자열에 대하여 같은 고정 문자열이 될 수 있는데, 이러한 경우는 해쉬 충돌이라고 한다! H(s1) = H(s2) - 따라서 많은 공간을 낭비하게 된다! Why? 해쉬 값이 어떻게 나올지 모르니까! - 그럼에도 불구하고!! 우리는 메모리를 버리고 시간을 산 셈이다! - 일반적으로 데이터를 조회할 때 배열은 O(n)이지만 잘 만든 Hash의 경우 O(1)의 조회가 가능하다 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value..
Reflection? - Java.lang.reflection에 있는 라이브러리 기능 - Class를 컴파일 단계 에 올리지 않고, 런타임 때 클래스를 동적으로 로딩하기 위해서 사용된다! - 코드 단으로 객체(Class)에 담겨진 이름과, 모든 메서드 이름을 알 수 있다!! - 따라서 쉬운 방식으로 메서드를 호출할 수 있다! 간단한 사용법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public static void main(String[] args) { try { Class c = Class.forName("java.util.ArrayList"); Method[] m = c.getDeclaredMethods(); Field[] f = c.getDeclaredFields()..
이론? 현업? - 학사 과정에서 배우는 코딩은 정말 구현 위주의 수업이다. - 이것이 항상 전부라는 생각하는 개발자들이 많고 나 또한 그렇게 생각해왔다. ** 그냥 돌아가기만 하고, 서비스만 되면 되는거 아니에요???? * 정말 그게 그럴까? - 처음부터 완벽하게 짜면 좋지만, 그런 사람은 거의 없기에 - 대.다.수 의 코드가 수정작업에 들어간다. - 만약, 급한일이 생겨서 다른 부서로 옮기거나, 동료 개발자가 그 코드를 고치는 일이 생긴다면? - 코드를 읽을 수 없다....... @-@ - 눈으로 디버깅으로 능한 정도가 아니면 절대 불가능하다. 우리는 좀 더 정성껏 작성할 필요가 있다 - 원활한 코드 커뮤니케이션(?)을 위하여 이미 정해진 규칙이 있다. - Java Code Convention - 정말..
huisam
'자바' 태그의 글 목록 (2 Page)