Java

디자인 패턴? - Design Pattern(디자인패턴) : 각기 다른 소프트웨어 모듈이나 기능을 가진 응용 소프트웨어를 개발할 때 공통되는 설계 문제를 해결하기 위한 공통된 패턴 그러니까,, 바퀴가 있는데 왜 바퀴를 다시 만들고 있냐? * 우리는 프로그래머니까 효율적인 방식을 택하자! Why,, 디자인 패턴???? - 같은 문제에 대해서는 똑같은 설계법을 사용해서 다른 개발자와 의사소통을 원활하게 하고, 쉽게 개발하자! - 개발자마다 코딩 방식이 다른데, 협업을 위해서는 우리들만의 표준이 필요하다!! - 제발 코드를 작성할 때 읽기 좋게 작성해주세요ㅠㅠ 디자인 패턴 구조 1. Context - 패턴이 적용될 수 있는 상황을 나타낸다. - But, 경우에 따라서는 패턴이 유용하지 못한 상황이 나올 수도 ..
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()..
동기화와 비동기화 - 동기화 방식은 한 자원에 대해 동시에 접근하는 것을 제한하는 방식이다. - 다시말해서, 순서를 지키겠다는 말이다. - 비동기화 방식은 한 자원에 대해 동시에 접근이 가능하다 동기화 - System Call이 끝날 때까지 다른 쓰레드의 접근을 막아버리는 것이다. - 한마디로, nextLine()에서 입력을 받을 때까지 대기하는 것과 같다. 비동기화 - System Call이 왔든 말든 상관없이 계속 호출할 수 있다. - Call Back 함수를 통해 결과를 가져온다! * 동기화의 차이? - 결과물을 가져오는 시점이 달라진다!!! Java의 Synchronized 키워드 - 한마디로 Java에서의 멀티 쓰레드에서의 접근을 막는다!! 입니다. 1 2 3 4 5 6 7 8 9 10 11 1..
이론? 현업? - 학사 과정에서 배우는 코딩은 정말 구현 위주의 수업이다. - 이것이 항상 전부라는 생각하는 개발자들이 많고 나 또한 그렇게 생각해왔다. ** 그냥 돌아가기만 하고, 서비스만 되면 되는거 아니에요???? * 정말 그게 그럴까? - 처음부터 완벽하게 짜면 좋지만, 그런 사람은 거의 없기에 - 대.다.수 의 코드가 수정작업에 들어간다. - 만약, 급한일이 생겨서 다른 부서로 옮기거나, 동료 개발자가 그 코드를 고치는 일이 생긴다면? - 코드를 읽을 수 없다....... @-@ - 눈으로 디버깅으로 능한 정도가 아니면 절대 불가능하다. 우리는 좀 더 정성껏 작성할 필요가 있다 - 원활한 코드 커뮤니케이션(?)을 위하여 이미 정해진 규칙이 있다. - Java Code Convention - 정말..
JVM? - JVM : Java Virtual Machine, 자바 가상 머신 - 어떤 OS에서 동작할 수 있다는 이식성이 있으며, 스택기반으로 이루어져 있다! JVM은 다음과 같은 2가지 기능을 제공한다. ① 메모리 관리 ② Garbage Collection Why JVM? - Java 프로그램을 설계할 때, 알 수 없는 버그나 오류가 발생한 경우 빠른 디버깅을 위해 - 프로그래머가 동작과정을 숙지하고 있어야 한다 JVM 구조 Class Loader - 클래스 로더, Runtime시에 동적으로 클래스를 로드하여 링크를 통해 배치하는 작업을 수행하는 역할! - Java는 컴파일 타임에 클래스를 참조하는게 아니라 Runtime에 참조한다!! Execution Engine - Class Loader가 Run..
huisam
'Java' 태그의 글 목록 (5 Page)