목록전체 글 (531)
개발놀이터
preserve : 보호하다 / 보존하다 / 지키다 descendant : 자손 / 후예 incur : 초래하다 / 지다 (빚을 지다) represent : 의미하다 / 나타내다 / 대표하다 propagation : 번식, 증식 / 전파 comprise : 포함하다 / 의미하다 / 구성되다 The LinkedHashSet saves the client from the unpredictable ordering provided by HashSet, without incurring the complexity that comes with a TreeSet. HashSet에 의하여 제공된 예측불가능한 순서로부터 클라이언트(개발자)를 보호한다. TreeSet과 같은 복잡성을 초래하지 않으면서 의역 -> TreeSe..
Maps are naturally one of the most widely style of Java collection Map은 기본적으로 Java Collection 중 가장 대중적인 것 중 하나이다. And, importantly. HashMap is not a thread-safe implementation. while Hashtable does provide thread-safety by synchronizing operations. 그리고 중요하다. Hashtable은 synchronizing 동작을 이용해 thread-safety 한 반면에 HashMap은 thread-safe 하지 않은 구현체이다. Even though Hashtables is thread safe. it is not ver..
이번 포스팅에선 스택의 오랜 친구인 Queue (이하 큐)에 대해서 알아보는 시간을 가져보겠습니다. 우선 이번 포스팅에서는 큐에 대한 개념과 핵심 메서드에 대해서 알아보고, 그 이후에는 자바에서 제공하고 있는 구현체에 대해서 알아보고 마지막으로 큐가 thread-safe한지에 대해서 알아보겠습니다. Queue 자바에서 큐는 일반적인 도로와 같은 느낌입니다. 제일 먼저 들어온 것이 제일 먼저 나가는 구조이지요. 이것을 FIFO (First In First Out)라고 부릅니다. 큐의 일반적인 느낌은 위와 같습니다. 핵심 메서드 큐는 인터페이스인데요. 큐를 구현하는 모든 구현체들은 아래의 세가지 핵심 메서드를 포함해야합니다. offer() : 큐의 뒤쪽에 새로운 값을 삽입합니다. poll() : 큐의 앞쪽에..
이번 포스팅에서는 자료구조 중 가장 유명하다고 해도 과언이 아닌 스택에 대해서 알아보도록 하겠습니다. Stack 스택은 가장 전형적인 LIFO (Last In First Out) 구조로서 개발자들에게 사랑받는 자료구조 중 하나입니다. 스택이 사용되는 것은 가장 대표적으로 홈페이지의 뒤로가기 버튼과 ctrl + z인 undo 기능 계산기의 계산알고리즘 등이 있습니다. 하지만 요즘은 스택을 사용하기 보단 Deque (이하 데크)를 사용하는 것을 더 추천하긴 합니다. Deque는 Double Ended Queue의 약자로 상황에따라 해당 컬렉션을 스택으로 쓸 수도 큐로 쓸 수도 있는 인터페이스입니다. 데크는 LIFO 실행에 있어서 더 완벽하고 일관성있기 때문에 최근에는 스택 대신 사용하게 되었습니다. 하지만 ..
우리는 이전 시간 RESTful API에 대해서 알아봤습니다. 그리고 크리티컬한 단점인 유연하지 못하다는 특징에 대해서도 잠깐 알아봤죠. RESTful이 유연하지 못하다는 것은 앞서 설명했듯이 요구사항이 계속 추가될 때마다 새로운 API를 만들어야 한다는 것도 있지만 Over Fetching, Under Fetching 이 두가지 문제도 큰 문제 중 하나입니다. 이번 포스팅에서는 RESTful API가 가진 한계에 대해 자세히 알아보고 그 대안책으로 나온 GraphQL에 대해 자세히 알아보도록 하겠습니다. RESTful API의 한계 REST API의 한계는 너무 명확합니다. 요구사항이 추가될 때마다 새로운 API를 만들어야 하기 때문에 유지보수가 장난아니게 힘들다는 점이 크리티컬했죠. REST API는..
이번 포스팅에서는 애플리케이션을 설계할 때 한번쯤은 들어봤을 법한 단어인 RESTful에 대해서 알아보도록 하겠습니다. RESTful API는 현재 많은 애플리케이션에서 사용하고있는 설계방식으로서 이번 시간에는 왜 RESTful이 이렇게 인기가 좋은지, 단점은 뭐가 있는지에 대해서 알아볼겁니다. RESTful이라는 단어는 직역하면 "REST한" 정도로 해석할 수 있을 것 같네요 즉 REST한 API라고 볼 수 있습니다. 걸리는게 두가지 있네요 REST와 API, 이 두가지에 대해서 설명해야겠죠? 먼저 간단한 API에 대해 알아보고 REST에 대해 자세히 알아보겠습니다. API API란 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것입니다. 위의..
이번 포스팅에서는 자바의 컬렉션 프레임워크 중 하나인 Set에 대해서 알아보는 시간을 가져보도록 하겠습니다. 우선 자료구조 Set은 뭘까요? 음... 깊게 알고싶지 않다면 Set은 중복을 허용하지 않는 자료구조라고만 알고 계셔도 무방할 것 같습니다. 하지만 이번 포스팅에선 좀 더 깊은 내용을 다룰 예정입니다. HashSet을 사용하면 Hash값을 가지고 값을 찾을텐데 어떻게 중복을 방지하는 것인지, TreeSet은 어떤 알고리즘으로 정렬을 지원하는지. 이런 내용에 대해서 다룹니다. 들어가기 전에 말씀드리자면 자료구조 Set에 대한 전반적인 내용을 다루는 포스팅이기 때문에 사용방법에 대해서는 다루지 않습니다. 메서드에 대한 내용은 따로 알아보시는 것을 추천드립니다. Set Set은 데이터를 비순차적으로 저..
이번 시간에는 전 시간에 이어서 컴퓨터 사이언스에서 가장 사랑받는 자료구조 중 하나인 Tree에 대해서 알아보도록 하겠습니다. 이번 포스팅에서는 Tree의 개념, Tree 구조에서 가장 많이 사용하는 구조인 이진 트리, 이진 탐색 트리에 대해서 알아보도록 하겠습니다. Tree 트리의 구조는 위의 사진과 같습니다. 나무가 가지를 뻗듯이 데이터를 저장한다고 하여 붙여진 이름이 바로 트리입니다. 트리의 이러한 구조는 데이터의 저장보다는 저장된 데이터를 효과적으로 탐색하기 위해서 사용합니다. 따라서 Heap Space가 트리로 구현되어 있고, 컴퓨터에서 디렉토리를 분류할 때에도 트리 구조를 사용합니다. 트리의 개념에 대해 알아봤으니 용어를 알아보도록 하겠습니다. 루트 노드 (root node) : 부모가 없는 ..
컴퓨터 사이언스에서 대표적인 자료구조인 Hash는 key-value로 값을 찾는 알고리즘에 있어서 가장 빠른 속도를 보여줍니다. 때문에 많은 언어에서 Hash 자료구조를 구현해서 사용하고 있습니다. 이번 포스팅에서는 Hash는 무엇이고 어떻게 값을 찾는지, 자바에서는 어떻게 활용하고 있는지에 대해서 알아보도록 하겠습니다. Hash Hash란 무엇일까요? Hash는 특정한 숫자 혹은 문자 혹은 둘의 혼합으로 이루어진 key라고 생각하시면 됩니다. 보통 어떤 값은 Hash Function에 의하여 해쉬로 바뀝니다. 그리고 그 Hash를 key로 하는 저장 공간을 만들고 나중에 해당 값을 찾으려면 그 값의 Hash값을 대응해서 찾습니다. Hash Function은 key를 고정된 길이의 해쉬로 변경해주는 역할..
주요 개념은 HashMap으로 HashMap에 관련된 내용은 해당 포스팅 참조 https://coding-review.tistory.com/277 Map 자료구조 오늘은 알고리즘 문제에서도 많이 사용하고 실전에서도 많이 사용한다고 알려져있는 Map에 대해서 알아보도록 하겠습니다. Map 맵은 사전과 비슷합니다. people이란 단어에 "사람", baseball이란 단어 coding-review.tistory.com 전체적인 문제들은 HashMap을 적절히 사용하면 되는 문제였다. 마지막 문제는 Set을 사용하는 문제도 나오지만 Set은 추후 다룰예정 간단하게 설명하자면 Set은 중복을 허용하지 않는 (중복을 제거하는) 자료구조로 많이 사용한다. 그 중 TreeSet은 정렬이 포함된 자료구조 개인적으로 생..