개발기초
-
Intro Sort (인트로 정렬)개발기초/자료구조 2021. 1. 26. 01:02
일반적으로 퀵정렬은 평균적으로 O(n log n)이라는 시간복잡도를 갖습니다. 하지만 최악의 경우에는 O(n²)이라는 시간복잡도를 갖게되지요. 개발자들은 퀵정렬의 평균적이라는 장점을 살리고 최악의 경우를 보완하는 알고리즘을 만들고자 했습니다. 즉, 최악의 경우에도 O(n log n)을 만족하고자 하는 것인데요, 결국, 개발자들은 퀵정렬이 최악의 경우에도 시간복잡도가 O(n log n)이 되는 방법을 찾았습니다. 아이디어는 간단합니다. 퀵정렬을 사용하되 다른 알고리즘들과 혼합하여 사용하면 됩니다. 다만 특이한 점은 1차 임계값과 2차 임계값이 존재하여 각 알고리즘 사용 구간을 구분해준다는 점입니다. 맨 처음 정렬에는 퀵소트를 사용합니다. 그리고 재귀적으로 퀵소트를 사용하면서 분할되는 횟수를 스스로 모니터링..
-
1. Strategy Pattern개발기초/Design Pattern 2020. 2. 24. 12:54
0. Strategy pattern? 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있습니다. 1. Strategy pattern을 구성하는 3대 요소 1) 전략 메서드를 가진 전략 객체 2) 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자) 3) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자) 2. Strategy Pattern 예제 (출처: https://limkydev.tistory.com/84) Strategy.java (전략 인터페이스 정의) public interface Strategy { void runStrategy(); } Star..
-
0. 디자인 패턴에 대해개발기초/Design Pattern 2020. 2. 20. 12:55
1. 디자인 패턴? 훌륭한 객체지향 디자인이라면 재사용성, 확장성, 관리의 용이성을 갖춰야 한다 훌륭햔 객체지향 디자인 품질을 갖추고 있는 시스템을 만드는 방법을 제공해 준다 2. 디자인 원칙 1) 디자인을 잘 하기 위해서 아래와 같은 사항을 고려하는게 좋다. (1) 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다. 즉, 달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화한다. 모든 디자인 패턴의 기반을 이루는 원칙이다. 코드를 변경하는 과정에서 의도하지 않은 일이 일어나는 것을 줄인다. 시스템의 유연성을 향상시킬 수 있다. (2)구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 상위 형식에 맞춰서 프로그래밍을 한다는 것을 뜻한다. 반드시 자바의 인터페이스를 사..
-
웹 캐시개발기초/Web 2019. 4. 23. 20:16
컴퓨터 공학을 전공했거나 개발을 조금 해보신 분이라면 캐시라는 단어는 굉장히 익숙하실겁니다. 그리고 우리는 캐시가 애플리케이션의 처리 속도를 높여준다는 것을 알고 있습니다. 사용률이 높은 데이터를 캐시에 저장해두었다가 필요시에 빠르게 꺼내쓸 수 있도록 해서 처리속도를 높이죠. 과연 캐시는 구체적으로 어떻게 처리속도를 높일까요? 1. 웹캐시, 어디에 쓰나? 구체적으로 웹캐시에 대해 알아보기 전에 웹 캐시를 왜 쓰는지부터 살펴보고자 합니다. 그리고 결론부터 말씀드리자면 일반적으로 사용자가 만드는 데이터 보다는 서비스에서 제공하는 컨텐츠(뉴스,허브,실시간 검색어 등)와 같이 서버에서 반복적으로 제공되는 데이터를 사용자에게 보여주고자 할 때 사용합니다. 그리고 실제로 사용할 땐, 아래의 조건을 만족한다면 캐시 ..