전체 글 (109) 썸네일형 리스트형 [JAVA] String 그리고 StringBuffer와 StringBuilder Java로 코드를 작성하며 String 클래스를 많이 활용해 봤을 것이다. String 클래스 이외에도 StringBuffer, StringBuilder등 다양한 String 타입의 클래스들이 존재한다. 이러한 클래스들은 사용 의도가 모두 각각 다르다. 이들의 특성에 대해 알아보도록 하자. 계층 구조 Interface 기능 소개 CharSequence : String 타입의 문자열을 판독하는 기능을 가진 인터페이스. 문자열의 길이를 반환하거나, 특정 인덱스의 값을 반환하는 기능을 갖추고 있다. Appendable : Appendable 인터페이스는 StringBuffer와 StrigBuilder가 구현하고 있는 대표적 인터페이스로, 문자열 뒤에 추가적인 문자열을 덧붙일 때 사용하는 기능을 가지고 있다. .. TCP와 UDP 지난 포스팅에서 OSI의 7 계층에 대해 간략히 적어 보았다. 그중 4 계층에 해당하는 Transport Layer에서는 TCP 프로토콜과 UDP프로토콜을 통해 데이터를 전송하는 역할을 한다. 그중 TCP 프로토콜은 흐름 제어, 순서 제어, 연결 제어, 중복검사를 하여 데이터를 순차적으로 안전하게 전달할 수 있도록 보장한다. TCP와 UDP가 서버와 동작하는 과정을 살펴보고 차이점을 알아보도록 하자. 데이터 송·수신의 전반적인 과정 호스트 간(peer to peer / client to server)에 데이터를 송·수신하기 위해 각 Layer를 거치며 만들어지는 데이터가 감싸지는 모습이다. L4에서 송신자는 소켓을 통해 스트림 형식으로 데이터를 기록한다. L3에서 MSS(Minimum Segment Si.. Abstract Class와 Interface Abstract Class와 Interface를 상속 또는 구현하려는 클래스는 이들이 명시한 추상 메서드들을 모두 구현해야 사용할 수 있다. 추상 메서드를 가진 추상 클래스와 인터페이스. 이들이 가지고 있는 공통점이지만 과연 차이점은 무엇일까? 무엇 때문에 이 둘을 나눠 놓았을까? Abstract Class와 Interface의 특성과 차이점 그리고 언제 사용해야 하는지에 대해 알아보도록 하자. ※추상화 : 기능의 내부 구현을 숨기고 사용자에게 기능만을 명시하는 것을 의미함 Abstract Class public abstract class Animal { //field public String name; public String kind; //method public abstract sound(); } .. Key of Database 한빛 아카데미의 책을 참고하였습니다. 키의 종류 특징 Super Key 슈퍼 키 유일성의 특성을 만족하는 속성 또는 속성들의 집합 Candidate Key 후보 키 유일성과 최소성을 만족하는 속성 또는 속성들의 집합 Primary Key 기본 키 여러 후보 키 중에서 기본으로 사용할 수 있는 키 Alternate Key 대체 키 기본 키를 제외한 후보 키들 Foreign Key 외래 키 어떤 테이블(Relation)에서 다른 테이블의 기본 키를 참조하는 속성 Composite Key 복합 키 2개 이상의 속성(attribute)을 사용하여 유일성의 특성을 만족하는 키 Key의 종류 및 특징 ※ Uniqueness (유일성) : 한 테이블에서 키로 지정된 속성(Attribute)값은 튜플들 사이에서 구분될.. Transaction 데이터 베이스에 다수의 사용자가 접근하더라도 데이터베이스 내의 데이터는 손상되지 않고 반드시 정확하고 일관되게 유지되어야 한다. 데이터 베이스의 데이터가 손상이 되었어도 빠르게 복구하여 원래의 기능을 다 할 수 있도록 해야 한다. DB 내에는 데이터를 보호하기 위해 다양한 기능들이 제공되는데 그 중심에 트랜잭션이 있다. 한빛 아카데미의 책을 참고하였습니다. Transaction 트랜잭션이 수행되는 예로 비밀번호를 변경하기 위한 과정을 생각해보자. 비밀번호 변경하기를 누르고, 해당 이메일로 관련 Entity를 가져오고 업데이트하는 과정을 하나의 작업이라 볼 수 있다. 이 작업을 처리하기 위해 다수의 연산이 동작해야 하며 이 연산들의 집합을 트랜잭션이라고 볼 수 있다. 트랜잭션은 데이터베이스의 데이터가 변경.. Java에서의 Hash Hash 가능한 한 빨리 데이터를 저장하고 검색하기 위해 Hash라는 자료구조를 많이 활용한다. 해시 테이블은 데이터를 저장하는 테이블로 Key와 Value가 한 쌍으로 존재한다. Key 값은 해시 테이블에서 인 mysterlee.tistory.com 이전 포스팅으로 Hash에 대해 간단히 정리하였다. Hash는 Hash Function을 이용하여 데이터가 저장된 또는 저장될 위치의 고유한 인덱스를 반환한다. 이 인덱스 값을 통해 해시 테이블의 데이터 탐색 또는 삽입, 삭제를 하는데 가장 빠른 경우 O(1)의 시간 복잡도로 이루어진다. 하지만 해시 테이블의 크기는 한정되어 있어서 언젠가는 Collision이 발생하기 마련이다. 따라서 Collision이 발생하지 않도록 Hash Function을 잘 설계.. Hash 가능한 한 빨리 데이터를 저장하고 검색하기 위해 Hash라는 자료구조를 많이 활용한다. 해시 테이블은 데이터를 저장하는 테이블로 Key와 Value가 한 쌍으로 존재한다. Key 값은 해시 테이블에서 인덱스로 사용되며, 데이터를 찾기 위해 해시 함수를 거쳐 키 값을 얻고 검색하는 데 평균적으로 O(1)의 시간 복잡도가 걸린다. Hash에 대해 알아보자 Hash Hash Function 해시 함수는 임의의 길이를 갖는 데이터를 고정된 길이의 키 값(인덱스 값)으로 변환하여 해시 테이블에 저장하는 기능을 한다. 그림의 우측 테이블은 해시 테이블로, Index는 해시 함수를 통해 생성된 키 값으로 해시 테이블에 저장될 공간을 의미하고 Data는 hash 값, Value라고도 하며 입력받은 데이터를 저장한다. .. Dead Lock 멀티프로그래밍에서 한정된 자원을 사용하려고 할 때 경쟁(Race Condition)이 발생한다. 프로세스 간 서로의 자원을 차지하기 위해 대기 상태로 들어감으로써 이러한 상황을 Dead Lock 상황이라 볼 수 있다. 책을 참고하였습니다.Dead Lock교착상태라고도 하며, 두 개 이상의 스레드가 자원을 얻지 못해 서로 상대방의 작업이 끝나기만을 기다리며 더 이상 작업을 진행하지 못하는 상태를 말한다.서로 다른 프로세스가 공유할 수 없는 자원을 사용할 때 발생 Dead Lock 발생조건Dead Lock은 아래 4가지 조건을 모두 만족하면 발생한다. 이 중 하나라도 충족하지 않으면 Dead Lock은 발생하지 않는다. 1. Mutual Exclusion (상호 배제) 한 프로세스가 사용하는 자원은 다른 프.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 14 다음