이론 공부

    [알고리즘] 선택 정렬 Selection Sort

    [알고리즘] 선택 정렬 Selection Sort

    설명 원소를 넣을 위치를 정하고,어떤 원소를 넣을지 선택한 후 선택한 원소를 지정한 자리에 넣는 알고리즘이다. 과정 (오름차순 정렬인 경우) 1. 배열의 원소 중에서 최소값을 찾는다. 2. 해당 값을 배열의 맨 앞에 위치한 값과 교환한다. 3. 고른 자리(맨 앞)를 제외한 나머지 배열을 같은 방식으로 반복한다. 구현(Java) public static void sort(int[]arr){ for (int i = 0; i arr[j]){ minIdx= j; } } //지정위치에 있는 ..

    [알고리즘] 거품 정렬 Bubble Sort

    [알고리즘] 거품 정렬 Bubble Sort

    설명 서로 인접한 두 원소의 대소를 비교하고, 조건(오름차순, 내림차순 등)에 맞지 않다면 자리를 교환하면서 정렬하는 알고리즘이다. Selection Sort와 유사하다. 과정 배열의 크기 : N (0~N-1) 1회전은 i=0 부터 i와 i+1번째 원소, 즉 자신과 자신의 오른쪽 수를 비교해서 조건에 맞지 않는다면 서로 교환한다. 1회전이 끝나면 가장 큰 원소가 맨 뒤로 이동해있으므로 다음 회전에서 마지막 원소는 제외된다. 2회전도 i=0부터 1번과 동일하게 수행한다. 그러면 두번째로 큰 수가 마지막에서 두번째에 위치한다. 3회전에서는 동일하게 수행해준다. 0~N-3까지만 확인하게 된다. ⇒ 1회전에서는 0개 제외 ⇒ 2회전에서는 1개 제외 ⇒ 3회전에서는 2개 제외 ⇒ N회전에서는 N-1개 제외 구현(..

    [Web] Session과 Cookie

    [Web] Session과 Cookie

    인터넷을 사용해봤다면 Session과 Cookie는 많이 들어봤을 것이다. 쿠키는 뭐 쿠키 삭제하는 경우에 많이 봤을 것이고, 세션은 보통 웹 사이트에서 로그인 해놓고 다른 사이트에서 작업하다가 다시 돌아오면 세션이 만료되어 또는 세션이 끊겼다는 메시지가 뜨면서 다시 로그인하게 만드는 경우에서 봤을 것이다. HTTP Protocol의 특징 쿠키와 세션에 대해서 알아보기 전 HTTP의 특징을 먼저 알고 가면 이해하기 쉽다. HTTP의 순서는 1. client가 server에 요청 2. server는 요청에 대해 처리 후 client에게 처리 결과 응답 3. 응답 후 연결 해제 순서로 작동한다. 응답 후에 연결을 해제하기 때문에 stateless 라는 특징을 가지고 있다. 지속적인 연결로 인한 자원 낭비를 ..

    [네트워크] TCP와 UDP의 비교

    [네트워크] TCP와 UDP의 비교

    두 개 다 데이터를 보내기 위해 사용하는 프로토콜이다. TCP Transmission Control Protocol, 전송제어 프로토콜 인터넷을 통해 종단 간에 신뢰성 있는 바이트 스트림을 전송하도록 설계되었다. TCP서비스는 송신자, 수신자 모두가 소켓이라고 부르는 종단점을 생성함으로써 이루어진다. TCP에서 연결 설정은 3-way handshake를 통해 이루어진다. 연결 해제는 4-way handshaking을 통해 이루어진다. 흐름 제어 및 혼잡 제어 기능을 수행한다. UDP User Datagram Protocol, 사용자 데이터그램 프로토콜의 약자로 비연결형 프로토콜이다. IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다. 흐름제어, 오류제어 또는 손상된..

    [CS] Caching이란?

    [CS] Caching이란?

    Cashing 캐싱이란 저장한다는 뜻을 가지고 있다. 오랜 시간이 걸리는 작업의 결과를 저장해서 시간과 비용을 줄이는 기법을 의미한다. 캐싱은 고성능 애플리케이션을 만드는데 가장 중요한 요소 중에 하나다. 캐싱과 비슷한 예) 같은 사진을 여러번 사용하려고 할 때, 매번 다운로드 받는것이 아니라 로컬 파일에 저장했다가 사용하고 싶을 때 로컬에 저장된 이미지를 사용한다. CPU는 연산의 결과를 빠르게 저장하기 위해서 메인메모리보다 빠른 캐쉬 메모리를 사용해서 빠르게 작업을 처리한다. 그냥 한마디로 말하자면 원래 있던 장소보다 더 가까운 곳에 저장해놓고 매번 가져다 쓰는거라고 생각하면 된다. 문제 미리 저장해 놓는다고 좋은 것만은 아니다. 만약 원본이 있던 곳에서 원본 데이터가 변경이 되었을 경우엔 자동으로 ..

    [네트워크] HTTP의 GET과 POST의 차이점

    [네트워크] HTTP의 GET과 POST의 차이점

    GET과 POST는 둘다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다. GET GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 url이 담겨서 전송된다. 그렇기 때문에 URL에 ? 뒤에 데이터가 붙어 request를 보낸다. 예시로 www.hello.com?type=test&id=text 이런 형태를 띈다. GET방식은 url에 정보가 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다. 또한 보통 클라이언트에서 서버측에 요청을 보낼 때 GET과 POST를 사용하는데 패스워드나 개인정보가 url에 담겨서 전송이 된다면 보안적으로 위험할 수 있다. 그래서 GET방식은 주로 서버에서 데이터를 가져올 때 사용한다. 단순한 조회 기..

    [JAVA] 문자열 클래스

    [JAVA] 문자열 클래스

    목표 1. JAVA의 3가지 문자열 클래스에 대해 설명할 수 있다. 2. 각 문자열 클래스의 차이점에 대해 설명할 수 있다. 3. 상황에 맞게 문자열 클래스를 사용할 수 있다. String / StringBuffer / StringBuilder String StringBuffer StringBuilder 저장 공간 힙 또는 Constant String Pool 힙 힙 변경유무 불변 가변 가변 Thead Safe O O X 더보기 Constant String Pool 이란? 자바에서 스트링을 생성하는 방법에는 두 가지가 있다. String literal로 생성하는 것과 new String으로 생성하는것. String literal로 생성하면 String 값은 힙 영역 내에 있는 "String Constan..