본문 바로가기

개발기술/설계|디자인패턴

(9)
JavaScript, Node JS, Event-Driven Programming 그리고 Java, Spring, MultiThreading - java와 javascript의 스타일 차이. 태생이다르다- node js의 등장- epoll과 같은 os method의 발전- java의 발전 프로그래밍 스타일 비교 Java Style: Sequential and ConditionalIn Java, you call a function, wait for the result, and then use if statements to control logic: @RestControllerpublic class UserController { private final UserService userService; public UserController(UserService userService) { this.userService = use..
Code Structuring Technique Early Return Patternused to exit a function as early as possible when a condition is not met, preventing unnecessary computations.Why Use It?Improves readability by handling edge cases first.Avoids unnecessary processing when conditions are not met.Reduces the depth of nested logic.Example Without Early Return (Deep Nesting)public void processUser(UserDto dto) { if (dto != null) { if (..
비동기 프로그래밍 패턴과 처리 방식 동기처리(Synchoronous Programming)  여러작업을 순차적으로 실행하도록 개발하는 방법. 동기 처리는 한 작업이 끝나야 다음 작업을 시작할 수 있는 방식입니다. 순차적인 작업을 위해서 현재 진행중인 작업의 완료를 기다리며 대기하는 구조입니다.비동기처리(ASynchoronous Programming)  여러 작업을 동시에 실행하는 프로그래밍 방법론. 비동기 처리는 한 작업이 끝나기를 기다리지 않고, 다른 작업을 수행할 수 있는 방식입니다.  비동기처리방식은 두가지 종류가 존재하며 멀티스레드 방식과 Non-Blocking I/O 방식이 있다. 멀티스레드 방식은 작업의 세트를 여러 스레드별로 나누어 가지어 동시에 실행하는 방식. 논블럭킹 방식은 하나의 스레드가 여러가지 작업을 담당하는데, I/..
클래스 다이어그램 Intellij를 활용한 클래스다이어그램 생성  클래스다이어그램으로 만들고 싶은 클래스에서 오른쪽 마우스 클릭 - Diagram - Show Diagram을 누르면 다이어그램이 자동적으로 생성된다. 해당 클래스와 관계를 확인해보고 싶은 클래스들을 Drag&Drop으로 추가하여 Diagram 내용을 추가해줄 수 있다.   *아래내용은 사바라다님의 블로그 내용입니다. https://sabarada.tistory.com/72클래스 다이어그램의 기본 요소클래스 다이어그램을 그리기 위한 기본요소에 대해서 알아보도록 하겠습니다. 클래스에는 클래스의 이름, 속성, 그리고 메서드가 존재합니다. 이런 요소들은 어떻게 클래스 다이어그램에 표현할 수 있을 까요?접근제어자 리스트+ : public- : private# : p..
프로젝트 설계 및 문서화 IT비즈니스 프로세스  비즈니스 프로세스는 구체화정도에 따라서 사업 - 기획- 개발의 순서로 이루어진다. 회사의 주요 의사결정자들이 사업을 결정한다. (의사결정이 존재하기때문에 이에 따른 위계질서가 존재함) 사업방향이 결정되면 기획자들과 사업자들이 해당 시장에 대한 데이터를 모으고 논의를 하면서 사업의 구체화가 이루어진다. 사업이 충분히 구체화되면 기획단계로 넘어가고, 서비스의 객체와 기능, 범위, 프로세스 등을 정의한다. 기획단계가 마무리되면 개발자단계로 넘어가고 사업기획의 기술적 관점에서 가능여부를 검토하여 기획의 세부내용을 수정한다. 개발명세서검토 (은행계좌생성 예제)1.  기술스택 결정  개발자는 내부 개발자원을 감안하여 개발언어, 기술스택, DB종류, DBdrive 등을 결정한다. 2. 각 기능..
디자인패턴 디자인패턴 싱글톤패턴하나의 인스턴스만 사용되는 경우. 하나의 인스턴스가 사용되지 않는 경우에는 인스턴스의 멤버변수에 저장/입력된 값들이 다른 인스턴스에 공유되지 않는다.  이로인해서 예상한 데이터를 찾을 수 없어서 문제가 발생하기도 함.빌더패턴장점1 : Setter대신 빌더패턴을 사용하면, 한번 생성된 instance의 값은 변경되지 못하게 하여 thread safe를 확보할 수 있음장점2 : 순차적으로 field를 하나씩 설정할 수 있어서 readbility가 증진됨. 필요한 데이터만 설정할 수 있어서 유연성이 증가됨장점3 : 필요한 데이터만 설정할 수 있어서 유연성이 증가됨스태틱팩토리패턴  프록시패턴프록시 패턴의 핵심은 바로 인터페이스의 동일성을 유지함으로써, 클라이언트가 실제로 대리 객체를 사용하고..
성능 최적화 전략 성능 최적화의 관점최적화 전략에 왕도는 없다. 코드의 가독성과 기능구현이 우선이지, 성능은 문제가 되기전까지는 문제가 아니다. 성능문제는 환경에 종속적인 것이지 일반적인 원칙이라는 것은 존재하지 않기때문이다.    성능저하의 원인프로그램이 어떤 자원을 많이 쓰는지에 따라 CPU바운드, I/O바운드 작업으로 나뉜다. I/O 바운드 작업은 디스크, 네트워크, 파일 시스템 등과 같은 입출력(I/O) 작업을 많이 요구하는 작업을 의미한다. CPU-바운드 작업은 CPU의 연산 능력을 많이 요구하는 작업을 의미한다. 주로, 실무에서는 CPU-바운드 작업 보다는 I/O-바운드 작업이 많다. 메모리 계층구조에 따른 소요시간계층구조에 따른 소요시간이 다르다. 외부 데이터 접근을 최소화하는 것이 백엔드 입장에서 가장 중요..
Java programming OOP 연습케이스(1) 리팩터링을 통해서 객체지향적 사고관을 기르는 연습을 해보자.import org.w3c.dom.ls.LSOutput;import java.time.LocalDate;import java.time.DayOfWeek;import java.lang.reflect.Array;import java.util.Scanner;public class Calendar { public static void main(String[] args) { // receive user input and set default value Scanner input = new Scanner(System.in); System.out.println("달력의 년도를 입력해 주세요. (y..