자바는 클래스와 인터페이스의 메타 데이터를 java.lang 패키지에 소속된 Class 클래스로 관리한다. * 메타 데이터 : 클래스 이름, 생성자 정보, 플드 정보, 메소드 정보를 의미함 1. 클래스 객체 얻기 클래스 객체를 얻기 위해서는 Object 클래스가 가지고 있는 getClass() 메소드를 이용하면 된다. 2. 리플렉션 Class 객체를 이용하면 클래스 생성자, 필드, 메소드 의 정보를 알 수 있다. 이 과정을 리플렉션 이라고 한다. 리플렉션에서는 다음과 같은 메소드를 제공하고있다. object.getDeclaredClasses(); object.getDeclaredConstructors(); object.getDeclaredFields(); object.getDeclaredMethods()..
1. 목적 원본 객체의 필드값과 동일한 값을 가지는 새로운 객체를 생성하는 것이 목적 객체 복제의 목적은 원본 객체를 안전하게 보호하기 위해서 이다. 2. 얕은 복제 단순히 필드값을 복사해서 객체를 복제하는 것을 의미한다. 필드값만 복제하기 때문에 필드가 기본 타입일 경우 값 복 사가 일어나고, 필드가 참조타입일 경우에는 객체의 번지가 복사된다. 메소드 객체 복사를 위해서는 java.lang.Cloneable 인터페이스를 구현하고 있어야한다. 반대로 인터페이스를 구현하지 않는다면 예외 처리를 반드시 설정해주어야 한다. try{ Object obj = clone(); } catch(CloneNotSupportedException e){} 3. 깊은 복제 얕은 복제의 단점을 보완해주기 위해 사용된다. 즉, ..
1. 공통 식 구하기 초기 공식: (100% - progresses%) / speed = ? day 그러나 (100% - 30%) / 30 = 2 day 값이 산출된다. 이러한 결과를 보상해주기 위해서는 나누 값의 나머지로 보상해주어야한다. day = (100 - progresses[i]) / speeds[i] + ((100 - progresses[i]) % speeds[i] > 0 ? 1 : 0); 2. Stack 공통 식으로 계산된 결과 값은 stack클라스로 peek & pop 으로 값을 비교하여 day의 값이 다음 day보다 작을경우 progresses를 대기하여 동시에 처리하는 과정을 구성한다.
OOP (Object-Oriented Programming) 객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것이다. OOP는 객체를 기준으로 코드를 나누어 구현한다. 자바의 경우 그 구성 부분 단위가 클래스이다. 자세히 말하자면 클래스는 설계도고 직접일을하는 구현체는 인스턴스다. OOP는 객체의 관점에서 프로그래밍 하는 것을 의미한다. C언어는 절차 지향 프로그래밍인데, 절차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말한다. OOP는 절차지향에 비해서 사람의 사고방식과 더 가깝다. OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행된다. 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하..
1. 프로세스와 스레드 - 프로세스 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스하고 부름 사용자가 어플리케이션을 실행하면 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는 과정을 프로세스하고 함. - 스레드 어플리케이션 내부에서의 코드 실행의 과정 혹은 흐름을 스레드 하고 하며 그 흐름이 2개 이상이라면 멀티(Multi) 스레드 라고 한다. 두가지 이상의 작업을 동시에 처리하는 과정(멀티 테스킹)에서 cpu 및 메모리 자원을 적절히 할당해 주고 병렬로 실행하는 작업이 가능하지만 멀티 테스킹이 반드시 멀티 프로레스를 뜻하지는 않는다. 하나의 프로세스 에서도 멀티 테스킹 과정이 이루어 질 수 있는데 그 과정이 가능한 것은 멀티 스레드가 가능하기 때문이다. 멀티 스레드는 하나의 파이르 ..
생성자 - new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당 - 생성자의 이름은 클래스 이름과 통일 - 리턴 값이 없다. - 오버로딩이 가능하므로 하나으 ㅣ클래스에 여러 생성자가 있을 수 있다. - 생성자도 메서드이기 때문에 리턴값이 없다는 의미릐 void를 적어야 하지만 모든 생성자가 린턴값이 없으므로 void를 생략하도록 한것이다. new 연산제에 의해 생성자가 성공적으로 실행되면 heap영역의 개체가 생성되고 객체의 주소가 리턴됨 생성자는 매소드와 비슷한 모양을 가지고 있느나, return 타입이 없고 클래스 이름과 동일하다.
정적 멤버 static - 클래스에 고정된 멤버로서 인스턴스(객체)를 생성하지 않고 사용할 수 있는 필드와 메소드를 의미 - 인스턴스(객체)에 소속된 멤머가 아닌 클래스에 소속된 멤머이기 때문에 클래스 멤버라고도 함 - 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미 - 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드) 1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다. - 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적기 때문에 서로 다른 값을 유지한다. 경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static을 붙인다. 2. static이 붙은 ..
배열의 크기가 동적(정해지지 않은 : 가변적인) 인 배열을 사용할때 사용되는 클라스 1. Vector - 필요에 따라 크기를 동적으로 조절할 수 있는 동적배열을 구현 - 배열과 마찬가지로 정수 인덱스를 이용하여 배열에 액세스 가능 - 동기화(Thread Safe) 되어있으며 한번에 하나의 스레드만 벡터의 메소드를 호출 할 수 있습니다. 2. ArrayList - 자바 표준 배열보다 약간 느릴수 있지만 배열에서 많은 조작이 필요로할때 유용하게 사용 - 기본 데이터 타입(int, char 등)에 대해 만들수 없기때문에 Integer, Object 등의 객체에 대해 참조해서 사용 3. 차이 - 동기화 -- Vector는 동기화가 가능한 반면 ArrayList는 동기화가 안됨 - 스레드 -- 스레드 안전이란 멀..
1. 스패닝 트리(STP) 그래프 상에서 모든 노드를 지날 수 있는 경우의 수 2. 최소 스패닝 트리(Minimum Spanning Tree, MST) 최소 스패닝 트리의 정의는 그래프에서 그래프의 모든 정점을 연결하되, 사이클이 존재하지 않도록 모든 정점을 간선으로 연결하는 것을 의미한다. 이때, 간선의 가중치 합을 최소로 하며 연결하여야 한다. - 크루스칼 알고리즘(Kruskal's Algorithm) 크루스칼 알고리즘은 모든 간선에 대해 가장 가중치가 작은 간선부터 연결 (간선 값을 오름차순으로 정렬해야함) 크루스칼 알고리즘 시간 복잡도 :: O(ElgE) - 프림 알고리즘(Prim's Algorithm) 프림 알고리즘은 하나의 시작점을 잡고 시작점과 연결된 정점들에 대해 가장 가중치가 작은 간선부..
- Total
- Today
- Yesterday
- OOP
- ajax
- 릿코드
- JPA
- Spring
- spring-cloud
- 디자인패턴
- 매트랩
- C언어
- security
- 스프링
- 자격증
- Solid
- CS
- 알고리즘
- 프로그래머스
- 면접
- Matlab
- interview
- nginx
- 수학
- kakao
- 그래프
- Algorithm
- java
- docker
- 백준
- 스프링부트
- springboot
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |