[NETWORK] OSI 7계층, TCP/IP 4계층
·
NETWORK
정의 OSI 7계층 국제표준화기구에서 개발한 모델로서, 네트워크 프로토콜 디자인과 통신을 계층으로 나눈 것 네트워크 통신을 7단계로 나눈 것이라 보면 됨 일반적으로 하위 계층들은 하드웨어로, 상위 계층들은 소프트웨어 TCP/IP 4계층 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화된 모형 네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층, 이 이론을 실제로 사용하는 인터넷 표준이 TCP/IP 4계층이라 보면됨 OSI 7계층 구성 Physical Layer (물리계층) : 7계층중 최하위 계층, 전기적, 기계적 특성의 데이터(비트단위 데이터)를 전송하는 계층 Data-Link Layer (데이터링크계층) : 물리계층에서 송수신된는 정보와 오류의 관리하여 신뢰성 있는 정..
[JAVA] e.printStackTrace() 사용하지 말아야하는 이유
·
JAVA
e.printStackTrace() 예외 발생 당시의 호출스택(Call stack)에 있던 메소드의 정보와 예외 결과를 화면에 출력함 예외 상황을 분석하기 위한 용도로 사용 (개발자에게 디버깅 할 수 있는 힌트를 제공) 사용하지 말아야 하는 이유 printStackTrace()를 call할 경우 System.err로 쓰여져서 제어하기가 힘듬 printStackTrace()는 java 리플렉션을 사용하여 추적하는 것이라서 많은 오버헤드가 발생할 수 있음 printStackTrace()는 서버에서 스택정보를 취합하기 때문에 서버에 부하가 발생할 수 있음 printStackTrace()는 출력이 어디로 가는지 파악하기 가 어려움 (톰캣같은 경우 catalina.out에 남음) printStackTrace()는..
[DB] 쿼리 처리 과정
·
DATABASE
쿼리처리과정 구문분석 (Parsing) 표준화 (Standardization) 최적화 (Optimization) 컴파일 (Compile) 실행 (Execute) 구문분석 (Parsing) 요청하는 쿼리가 잘못됐는지 확인하는 과정 요청 쿼리를 SQL서버에서 이해할 수 있는 단위로 분해하는 과정이며, 쿼리 구문이 잘못된 경우 처리가 중단됨 표준화 (Standardization) 실제로 필요 없는 부분들이 제거되며, 표준화된 트리가 만들어지는 과정 최적화 (Optimization) 쿼리를 분석하고 통계정보를 바탕으로 실행계획을 만들어내는 과정이며, 쿼리 처리시 가장 중요한 단계임 쿼리분석 : 검색제한자인지 조인조건인지 판단함 인덱스 선택 : 분포 통계 정보를 이용하여 인덱스검색이나 테이블 스캔 중의 하나를 선..
[JAVA] List Collection(ArrayList / LinkedList / Vector)
·
JAVA
List Collection 데이터 중복 입력이 가능하며, 순차적이고 다량의 데이터를 입력할 때 사용 ArrayList / LinkedList / Vector로 구성됨 ArrayList 내부적으로 인덱스로 관리되는 배열로 이루어진 리스트 내부적으로 기본데이터 저장사이즈가 10으로 정의되어 있음 데이터가 10이상 저장되면, 동적으로 사이즈 1.5배정도 늘어남 인덱스를 통해 조회하기 때문에 조회시 효율적임 특정 인덱스를 삭제시 한칸씩 앞으로 전체이동하고 추가시 한칸씩 뒤로 전체이동하기 때문에 추가 삭제시 매우 비효율적임 동기화되어 있지 않아서, 동기화 처리시 동기화 선언을 해줘야함 LinkedList 노드가 데이터와 포인트를 가지고 한줄로 연결된 리스트 노드 간에 연결로 이루어짐 (현재노드에서 다음노드의 위..
[SPLUNK] BUCKET (버킷)
·
SPLUNK
Bucket(버킷) 정의 원시 데이터와 인덱스 파일이 저장되는 저장소 데이터에 대한 인덱스 파일과 데이터 자체를 포함하는 디렉토리 인덱싱된 데이터를 관리하는 단위 Bucket(버킷) 종류 Warm 버킷 : 새로 입력된 데이터가 들어있는 곳, 검색할 때 가장 먼저 검색이 이루어지는 공간 Cold 버킷 : Warm 버킷에서 롤링된 버킷, Cold버킷도 검색이 이루어지긴하지만 Warm버킷에서 검색이 끝난 후에 검색이 이루어짐 Frozen 버킷 : Cold 버킷에서 일정시간이 지나면 이동되며, Frozen 버킷으로 이동시 데이터가 삭제됨 (Splunk에서는 삭제되기 전에 스크립트를 실행시켜서 데이터를 백업하거나 다른 작업을 처리할 수 있게 기능을 제공함) Thawed 버킷 : Frozen 된 데이터를 재입력하기..
[DB] 인덱스 (INDEX)
·
DATABASE
인덱스 (INDEX) 추가적인 쓰기작업, 저장공간을 활용하여 테이블에 대한 동작 속도를 높여주는 자료구조 인덱스 장단점 테이블 조회속도와 성능을 향상시킬 수 있음 (검색에 최적화) 전반적인 시스템 부하를 줄임 인덱스 관리를 위한 추가 작업 필요, 인덱스를 관리하기 위해선 DB의 약 10% 해당하는 저장공간 필요 인덱스는 기본적으로 이진트리 검색을 사용하기 때문에 기본적으로 정렬이 되어있어서, 인덱스를 잘못 사용할 경우 오히려 성능 저하될 수 있음 (INSERT, DELETE, UPDATE가 자주 발생하는 테이블에 인덱스를 걸 경우 오히려 성능 저하) 인덱스 알고리즘 Hash Table과 B+ Tree이 있지만 일반적으로 B+ Tree를 사용 B+ Tree 정의 B-Tree 를 개선시킨 자료구조 키에 의해..
[JAVA] String / StringBuilder / StringBuffer
·
JAVA
String 정리 기본타입(Primitive Type)이 아닌 참조타입(Reference Type) 불변(immutable)의 속성 (불변이라 멀티쓰레드 환경에서 쓰레드세이프함 / 값 변경 가능성이 없기 때문에 동기화 문제 X) String 객체는 String constant pool(Heap에 할당되어 있음)에서 따로 관리가 됨 String constant pool에서 String을 관리하면 Java는 Runtime 에서 Heap영역의 메모리를 절약함 (같은 값을 가지는 String에 대해 같은 메모리를 참조하기 때문) String은 결론적으로 Heap영역에서 관리하며 불변객체이기 때문에 문자열을 추가, 수정, 삭제를 하면 새로운 문자열을 만들어야 하기 때문에 Heap영역에서 많은 가비지가 생성되어 성..
[IntelliJ] finished with non-zero exit value 1 에러 해결
·
IDE
해결방법 File > Setteings 이동 Build, Execution, Deployment > Build Tools > Gradle 이동 Build and run using을 IntelliJ IDEA 로 변경 Run tests using을 IntelliJ IDEA로 변경
[ALGORITHM] 시간복잡도 / 공간복잡도
·
ALGORITHM & DATA STRUCTURE
복잡도 프로그램의 실행이 얼마나 오래 걸리는지, 얼마나 많은 메모리를 사용하는지 시간복잡도 알고리즘에 사용되는 연산횟수의 총 횟수 절대적인 수행시간이 아닌 연산횟수를 기준으로 측정함 연산횟수를 카운팅 할 때 3가지 경우가 있지만 보통 최악의 경우(빅오표기법)을 기준으로 함 공간복잡도 알고리즘의 메모리 사용량에 대한 분석 결과 프로그램을 실행 완료하는데 필요한 저장공간의 양 보통 가변공간(실행 중 동적으로 필요한 공간)에 따라서 복잡도가 좌우됨 빅오표기법 주어진 함수에서 엄밀한 점근적 상한을 나타내는 점근적 표기법 가장 증가율이 높은 수식만 남김 연산 횟수는 O(1) → O(logn) → O(n) → O(nlogn) → O(n²) → O(2^n) → O(n!) 갈수록 증가함 예시 /** * 인프런 더개발자..