Developer

· Developer/OS
프로세스? - 프로세스를 구동하기 위해서는 다양한 자원이 필요하다. - 이에 대한 효율적인 배분을 위해서 상황에 맞는 자원을 각각의 프로세스에게 분배할 필요가 있다. - 그러면 이러한 효율적인 배분이 왜 필요한 것일까? - 효율적인 배분이 필요한 이유는 프로세스의 Waiting 상태가 존재하기 때문이다. - Waiting 상태의 프로세스에게 자원을 배분하면, 낭비가 이루어지기 때문에 이를 효율적으로 관리하기 위해 스케줄링을 하는 것이다! - 결국, "어떻게 프로세스들이 CPU를 효율적으로 사용할 것인가? " 에 대한 답을 끌어내기 위해서다 CPU 스케줄링이 일어나는 시점 º Running 상태에서 Waiting 상태로 전환 되었을 때 º Running 상태에서 Ready 상태로 전환 되었을 때 º Wai..
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..
Insertion Sort? - 가장 기본적인 정렬방법 중(Bubble Sort, Selection Sort)와 같이 시간복잡도 O(N^2)를 가진다. - 안정적인 정렬 방법이다. - 최선의 경우 O(N), 최악의 경우 O(N^2)이다. - N의 크기가 작을수록 O(N^2)의 정렬 방법이 효율이 좋다 * Why ? - Quick, Merge의 경우 Function Call 에 들어가는 비용이 더 커지므로! 시간복잡도에 대한 고찰 - 최선의 경우 : 주어진 key값에 대하여 한번만 비교하고 끝날 때!!!! ( 땡기는 작업 X ) - 최악의 경우 : 주어진 key값에 대하여 모든 원소를 비교해야 할 때!! 정렬 순서 1. 0번째 index는 제외하고, 1번째부터 index를 시작한다! 2. 해당 범위내에 마..
huisam
'Developer' 카테고리의 글 목록 (16 Page)