본문 바로가기

전체 글46

[디자인패턴] 팩토리 메서드 패턴 안녕하세요. 이번 글에서는 팩토리 메서드 패턴을 정리해보고자 합니다. 저는 현재 NEXTSTEP 플레이그라운드의 과제를 스터디로 진행하고 있습니다. 진행하고 있는 미션에서 팩토리 메서드 패턴을 사용하여 구현하라는 과제가 있어서 디자인 패턴을 구글링 하고, 명확히 이해해 보고자 헤드퍼스트 디자인 패턴이라는 책을 읽게 되었는데 책에서 나오는 코드 예시가 굉장히 이해하기 쉽고 단계별로 코드를 작성하며 디자인패턴을 적용하다 보니 왜 이 디자인패턴을 적용해야 하며, 적용하면서 얻는 장점들을 명확히 이해할 수 있었습니다. 또 이를 오래 기억하고자 블로그에 정리하게 되었습니다. (정리 내용도 단계별로 코드를 수정하며 팩토리 메서드 패턴을 적용하는 방식으로 정리해보고자 합니다.) 팩토리 메서드 패턴을 이해하기 위한 예.. 2023. 10. 22.
[JAVA] PriorityQueue 우선순위 큐 사용법 1. PriorityQueue 란? 일반적인 큐는 먼저 들어간 데이터가 먼저 나가는 구조인 FIFO 형식의 자료구조입니다. 반면에 우선순위 큐의 경우 들어가는 순서와는 상관없이 우선순위가 높은 데이터가 먼저 나가는 자료구조입니다. 우선순위 큐의 경우 힙 자료구조를 통해서 구현될 수 있습니다. ( 또한 다른 자료구조를 통해서 구현될 수 있음 ) 2. PriorityQueue 선언 방법 1 2 3 4 5 // 기본형: 우선순위가 낮은 숫자가 먼저 나옴 (작은 숫자) PriorityQueue pQ = new PriorityQueue(); // 우선순위가 높은 숫자가 먼저 나옴 (큰 숫자) PriorityQueue pQ = new PriorityQueue(Collections.reverseOrder()); 3... 2023. 2. 3.
[BOJ 16945번] 매직 스퀘어로 변경하기 [BOJ 16945번] 매직 스퀘어로 변경하기 https://www.acmicpc.net/problem/16945 16945번: 매직 스퀘어로 변경하기 1부터 N2까지의 수가 하나씩 채워져 있는 크기가 N×N인 배열이 있고, 이 배열의 모든 행, 열, 길이가 N인 대각선의 합이 모두 같을 때, 매직 스퀘어라고 한다. 크기가 3×3인 배열 A가 주어졌을 때, www.acmicpc.net 위의 문제는 3x3 배열 매직 스퀘어의 각 행의 합, 각 열의 합, 대각선의 합이 15라는 사실을 알고 풀어야 하는 문제입니다. 문제에 연결된 매직 스퀘어의 링크(위키백과) 설명을 제대로 읽지 못해 조건을 잘못 걸어 여러 번의 제출에도 해결하지 못하여 쓸데없는 시간을 소요하였습니다. 내가 생각한 풀이 - 1 우선 문제에 주.. 2023. 1. 29.
HTTP vs WebSocket 차이점 HTTP vs WebSocket 차이점 오늘은 HTTP와 WebSocket의 차이점에 대해서 정리해보고자 합니다. 앞으로 진행할 파이널 프로젝트에 채팅 기능을 넣어보고자 공부를 진행함에 있어서 평소에도 사용하고 들어 봤던 용어임에도 정확히 개념 파악도 안 된 상태에서 써왔던 것에 대해서 굉장히 불편한 마음을 느꼈습니다. 이번 기회를 통해서 확실히 알아보겠습니다. 우선 HTTP 와 WebSocket에 대해서 간략하게 그림을 통해서 살펴보겠습니다. 첫 번째로 HTTP(HyperText Transfer Protocol) 에 대해서 알아보겠습니다. 이는 Front, Backend를 공부했다면 지겹게 들어봤을 개념이다. 클라이언트인 웹브라우저와 웹 서버가 서로 간 소통하기 위한 프로토콜이다. 예를 들어 클라이언트.. 2021. 11. 29.
[ Spring ] IOC 수업 정리 - (2) [ Spring ] IOC 수업 정리 - (2) 본 글은 KOSTA에서 교육을 들으면서 배웠던 내용을 복습해보고자 블로그에 올리는 글입니다. 지난 수업 정리 - (1)에 이어서 조금 다른 예제로 IOC에 대한 필요성과 이해를 느껴 보고자 합니다. 추가로 DI에 대해서 맛보기로 예제를 살펴보겠습니다. 우선 IOC를 사용하지 않는 방식에 대해서 먼저 살펴보겠습니다. 1. 기존 제어방식 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package model; class AsianaTicketService { public void asianaTicketing() { System.out.println("아시아나 티케팅하다"); } } class KalT.. 2021. 11. 20.
[Spring] IOC 수업정리 - (1) [ Spring ] IOC 수업 정리 - (1) 본 글은 KOSTA에서 교육을 들으면서 배웠던 내용을 복습해보고자 블로그에 올리는 글입니다. 어느덧 교육을 수강한 지 3개월이 넘어가는데요.. 드디어 웹 개발의 꽃 스프링! 과정까지 오게 되었습니다. 스프링을 잘 배우고 파이널 프로젝트까지 잘 마무리하고 싶다는 생각이 가장 큽니다. 스프링에 대해서 아주 맛보기 정도로 학습을 하였지만 느낀 점은 앞서서 배웠던 JSP, Servlet과는 다르게 구조 자체가 굉장히 어색하고 개발자들이 굉장히 효율적인 방법을 추구하는구나라는 생각이 들었습니다. 개인적인 이야기는 나중에 하고 수업내용을 정리해보도록 하겠습니다. 1. 기존 제어방식 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 2021. 11. 19.
Ajax - 기초 - (2) Ajax - 기초 - (2) 이번 시간에는 JSON을 활용해서 데이터를 변환해서 데이터를 전달해보도록 하겠습니다. Ajax - 기초 (1)에서 까지는 단순히 문자열 데이터 한 개 만을 전달하고 응답했다면 JSON을 활용해서 json object로 변환해서 활용하는 방법을 살펴보겠습니다. json을 활용하면 어떤 것이 가능해지는지 중점적으로 살펴보면 좋을 것 같습니다. ( 참고로 이 블로그에서 사용하는 예제는 KOSTA edu에서 교육을 받으면서 공부했던 예제들입니다. ) JSON 라이브러리 활용 - 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 function startAjax() { let mak.. 2021. 11. 14.
Ajax - 기초 - (1) Ajax 기초 - (1) 최근에 JSP를 사용해서 웹 프로젝트를 진행한 적이 있습니다. Ajax를 사용하면 편할 것을 페이지를 받아오는 방식으로 구현을 하다 보니 비효율적이다라는 생각이 들어 Ajax를 배움과 동시에 배운 것을 활용해보고자 블로그에 정리하려고 합니다. 나아가서 아이디 중복확인과 댓글 작성과 같은 예제를 통해서 어떻게 동작하는지 정리해보려 합니다. 처음 배우는 단계이니 기초적인 개념부터 살펴보겠습니다. Ajax 란 ? Asynchronous JavaScript And XML의 줄임말로 비동기 자바스크립트와 XML이라는 뜻입니다. 즉 Ajax는 자바스크립트와 XML을 사용하여 비동기 통신을 하는 것을 말합니다. 기존의 웹 방식은 웹 페이지 단위로 응답을 하는 방식입니다. 하지만 비동기 통신을.. 2021. 11. 14.
[Python] immutable vs mutable 객체의 차이 객체가 지닌 값의 수정이 불가능한 객체를 immutable 객체라 하고 대표적으로 튜플과 문자열이 있다. 반면에 객체가 지닌 값의 수정이 가능한 객체를 mutable 객체라고 한다. 예로는 리스트와 딕셔너리가 있다. 이를 확인해 볼 수 있는 예제를 살펴보자. immutable 객체 >> r = [1, 2, 3] >> id(r) 1753454201600 >> r += [4, 5, 6] >> id(r) 1753454201600 이처럼 리스트에 다른 값들을 추가시켜도 주소가 바뀌지 않았음을 알 수 있다. 즉 r (리스트) 원본은 유지가 되고 값을 추가시킬 수 있음을 의미한다. 그렇다면 mutable 객체를 살펴보자 mutable 객체 >> t = (1, 2, 3) >> id(t) 1753454302080 >>.. 2021. 10. 19.