전체 글 200

[공부/디자인 패턴] Prototype 패턴

Prototype Pattern 객체를 생성하는 데 비용(시간과 자원)이 많이 사용되고, 비슷한 객체가 이미 있는 경우에 사용되는 패턴입니다. Original 객체를 새로운 객체에 복사하여 우리의 필요에 따라 수정하는 메커니즘을 제공합니다. 이 패턴은 복사를 위해 #clone() 을 사용합니다. #clone()에서는 옅은 복사 혹은 깊은 복사, 이 둘을 개발자가 정의가능합니다. Prototype Pattern Structure public class Minion implements Cloneable { private String name; private String job; public Minion(String name) { this.name = name; } public Minion(String nam..

[공부/디자인 패턴] Singleton 패턴

Singleton Pattern 인스턴스를 하나만 생성하는 패턴으로 메모리 측면에서 낭비를 방지하고, 이미 생성된 인스턴스를 활용하기에 속도 측면에서 이점이 있습니다. 또, 데이터 공유가 쉽습니다. 물론, 여러 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시에 접근할 경우, 동시성 문제가 발생할 수 있습니다. Singleton Pattern Structure public class Singleton { public static Singleton instance = new Singleton(); private Singleton() { // 외부 생성자 차단 } public static Singleton getInstance() { return instance; } public void say() { ..

[공부/서버] 앞으로 공부해야할 것들

현재 Spring 백엔드를 공부하면서 취업에 나가기 위해 공부해야할 것들 그리고 개인 혹은 협업 프로젝트를 보다 효율적으로 개발하기 위해 공부해야할 것들 이렇게 2가지 정도를 목표로 하여 앞으로 공부해야할 것들 한 번 더 작성하고자합니다. 본 글은 여기서 가져왔습니다. 1. 📡NETWORK 쿠키, 세션, JWT 토큰 Cookie / Session 세션 기반 인증 / 토큰 기반 인증 JWT (Json Web Token) 네트워크 시스템의 Layered Architecture 웹의 동작 방식 TCP/IP 5 계층 OSI 7 계층 TCP, UDP, IP, PORT HTTP, HTTPS HTTP / HTTPS HTTP 2.0 로드 밸런서 (Load Balancer) 로드 밸런싱 Scale out, Scale u..

공부/서버 2022.03.18

[학교/자바] 첫 수업

수업일자: 2022.03.16 먼저 첫 수업에는 이클립스를 다운받아 기본적인 에디터 및 환경을 조성하였습니다. 하지만 저는 이클립스를 예전에는 자주 사용을 하였지만, 인텔리제이가 이미 세팅이 완료되었고, 손이 인텔리제이에 적응하였기에 생각을 하였기에 인텔리제이로 진행하였습니다. (JDK 언급은 선생님께서 따로 말씀하지않으셨기에 1.8를 사용하였습니다.) Java, 혹은 그 외 언어에 대한 짤막한 얘기 역시 듣게 되었습니다. 인터프리터 언어, 컴파일러 언어, 그리고 java의 수명, java의 작동원리, java가 많이 사용되는 이유 등등... java의 작동원리와 많이 사용되는 이유를 간단하게 설명하자면 .java -Complie-> .class -JRE-> interpreter 방식으로 코드 수행 즉,..

[웹 프로그래밍] 두 번째 수업

수업 날짜: 2022.03.10 웹프 과제로 해당 사진처럼 만드는 것을 하였습니다. 404 고양이는 아무 사진이나 상관없다고 하셨기에 404 고양이로 하였습니다. 전체코드는 다음과 같습니다. 첫 번째 블록 안녕하세요. 2217 내 이름 버튼 버튼2 구글로 이동 두 번째 블록 1 2 3 A B C 테이블 이름 이름 나이 지역 철수 12 서울 영희 14 부산 세 번째 블록 체크박스 아메리카노 카페라떼 에스프레소 완료 이상입니다.

[공부/디자인 패턴] Strategy 패턴

Strategy Pattern 알고리즘의 인터페이스를 정의하고, 각각의 인터페이스를 캡슐화하여 동적으로 교체 사용 가능하도록 구현하는 디자인 패턴입니다. 클라이언트와는 독립적으로 구현되기에 새로운 알고리즘을 추가하거나 기존의 알고리즘을 쉽게 변경할 수 있습니다. Strategy Pattern Structure Context: 실제 각각의 알고리즘에 대한 인스턴스를 가진다. Interface: 각각의 알고리즘을 가져야할 공통적인 인터페이스 Algorithm1, Algorithm2: 실제 인터페이스 구현. 각각의 알고리즘을 구현 예제 코드 public interface PersonInterface { void action(); } PersonInterface로 공통 인터페이스인 #action을 가집니다. p..

[소프트웨어 공학] V 모델

※ 본 글은 소프트웨어 공학 수업 중 발표 준비를 위해 다시 한번 더 핵심을 이해하고자 작성합니다. ※ 당시에 자료 조사, 준비 등을 했던 순서대로 글을 작성합니다. 순서가 뒤죽박죽이 될 수 있습니다. V 모델이란? 소프트웨어 개발 모델 중 하나로 폭포수 모델(선형 순차적 모델)의 변형인 모델로서 테스트 단계가 추가 확장된 모델입니다. 폭포수 모델 Vs V 모델 폭포수 모델 문서 중심의 모델 (문서와 결과물에 중점을 둠) V 모델 각 개발 단계를 검증하는 모델 (작업과 결과의 검증에 초점을 둠) 테스트 단계 종류 단위 (unit, module) 테스트 개별 module 검증 시스템을 구성하는 모듈(함수, 서브루틴, 컴포넌트 등)이 기능을 올바르게 수행하는지 판별 내부에 존재하는 논리적인 오류를 검출 상세..

[Spring] AOP 예제

※ 본 글은 AOP에 대해 어느 정도 이해를 하고 있다는 가정 하에 작성된 글입니다. AOP에 대해 자세히 모르시는 분들은 이 글을 참고해주세요. ※ [Spring] Spring AOP/PSA 설명 이전 포스트에서 POJO를 간단하게나마 설명하였습니다. 그중에서 IOC와 DI는 짧게라도 설명한 적이 있으나, AOP와 PSA는 없었기에 이번 기회에 포스트하고자 합니다. AOP란? Aspect Oriented Programming의 약 workshop-6349.tistory.com 일단, 간단한 REST API를 만들어 해당 API가 소요되는 시간, 그리고 리소스 요청 횟수를 제한, 이 2가지를 간단하게 하는 포스트를 하고자 합니다. 가상의 시나리오 클로버 도서관은 현재 코로나가 더 심해진 결과, 온라인에서..

Spring 2022.03.14

[웹 프로그래밍] 첫 수업

수업 날짜: 2022.03.08 웹 프로그레밍 수업에서는 SpringBoot를 진행을 합니다. 수업은 java → jsp → spring → springboot → CSS...(FE) 순으로.. (결론은 SpringBoot를 배운다는 것 같습니다.) 첫 수업인 만큼 JSP, java 11, Tomcat 9 설치, 그리고 이클립스 설치.. (저 같은 경우에는 java, kotlin을 자주 하다보니 인텔리제이가 이미 설치되어 있고, 왠만한 JDK들도 다 있기에 굳이 따로 설치는 하지 않았습니다.) 계속 오류가 발생하여 의도치 않게 삽질을 하여 결국 작동시켰습니다. 다른 친구들도 저와 같이 인텔리제이로 시도하려다가 결국 선생님께 Help 쳐서 이클립스로 끌려갔습니다. 그리고 가장 기본적인 JSP로 Hello,..

일상이에요

요즘 JPA를 공부를 하다보니 머리가 어질어질합니다. JPA가 어느정도 익숙해질 때 쯤 되니, 튜닝, 그리고 더 세세한 사항들까지 알아보다보니, 끝도 없는 것 같습니다. Batch Size, IN 쿼리, 즉시 로딩, 지연 로딩, fetch & 조인 등등 ... 위와 같은 내용들을 보고 나니 현타가 찾아왔습니다.. 그제서야 Spring을 왜 다들 어려워하는 지 알 것 같더라고요... 그리고 현재 프로젝트를 실행했을 때 발생하는 쿼리들을 보니... Hibernate: select member0_.id as id1_2_, member0_.email as email2_2_, member0_.name as name3_2_, member0_.nickname as nickname4_2_, member0_.passwo..

일상 2022.03.05