본문 바로가기

전체 글19

이진 탐색(Binary Search) 알고리즘을 풀다가 이진 탐색의 존재를 새까맣게 잊고 있었다는 것에 충격을 받아서 작성한다. 이진 탐색은 최악의 조건에서도 O(logN)의 시간 복잡도를 보장하는 획기적인 탐색 방법이다. 데이터들의 값을 반으로 나누어 가며 탐색을 진행하기 때문에 최소 의 시간 복잡도를 보장하는 것이다. 단, 탐색을 원하는 데이터들이 정렬이 되어 있어야 한다는 조건에서만 이진 탐색을 사용할 수 있다. import java.util.ArrayList; public class Test{ public static void main(String[] args) { ArrayList list = new ArrayList(); for(int i=1; i 2021. 7. 16.
세션과 쿠키🍪 웹을 사용하거나 웹에 대해서 공부를 한다면 한번쯤은 들어봤을 단어가 쿠키와 세션일 것이다. 웹에서 세션과 쿠키를 왜 사용하는 지 먼저 살펴보도록 하겠다. 쿠키와 세션은 HTTP 프로토콜의 비 연결성, 비 상태성 이라는 특징 때문에 사용을 한다. HTTP 프로토콜로 클라이언트가 서버와 통신하면서 요청에 대한 응답을 받으면 그 연결을 끊어버리는 것과, 연결이 끊기게 되면 상태 정보는 유지하지 않는다는 것이다. 이렇게 연결이 종료가 된다면 상태를 저장할 수 없다는 점을 개선하기 위해서 세션과 쿠키를 사용한다. 쿠키 (Cookie) 쿠키 쿠키는 클라이언트 로컬에 저장되는 키와 값으로 구성된 작은 데이터 파일이다. 쿠키는 클라이언트의 상태 정보를 로컬에 저장하고 서버측에서는 이를 참조한다. 서버측에서 setCoo.. 2021. 7. 16.
인터페이스를 통한 느슨한 결합 class A{ public void methodA(B b){ b.methodB(); } } class B{ public void methodB(){ System.out.println("methodB()"); } } class InterfaceTest{ public static void main(String[] args){ A a = new A(); a.method(new B()); } } 위의 내용에서는 클래스 A가 클래스 B의 인스턴스를 직접 사용하고 메서드를 호출한다. 이런 경우에 클래스 A와 클래스 B은 서로 직접적인 관계에 있게 된다. 이 방식의 단점에 대해서 알아보면 이번 주제를 잘 이해할 수 있을 것이다. 1. 클래스 A를 작성하려면 클래스 B가 먼저 작성이 되어 있어야 한다. 2. 만약 중.. 2021. 7. 15.
Map 데이터 정렬하기 _ by Key / by Value Java Map 데이터 정렬하기 Map 데이터는 구조적으로 Key - Value의 형태로 값을 저장한다. 그렇기 때문에 다른 타입과는 다르게 정렬 기준이 key 또는 value 두가지 이다. Map 정렬 구현 import java.util.*; public class Test{ public static void main(String[] args){ HashMap map = new HashMap(); map.put("a",19); map.put("d",97); map.put("c",6); map.put("b",10); System.out.println("키로 정렬 _ 오름차순"); sortMapByKey(map, "asc"); System.out.println("키로 정렬 _ 내림차순"); sortMapB.. 2021. 7. 6.