전체 글 82

[ DDD & SQL 중심 설계(SQL-DD) ] 정의와 비교

[Index] ✔️ DDD / SQL-DD 간단한 개념 ( 둘 중 하나를 골라쓴다는 개념이 아니다.) 및 차이점 ✔️ DDD 개념 & 예시 ✔️ SQL-DD 개념 & 예시 ✔️ 실제 프로젝트에서 어떻게 사용할 지 예시 ✔️ DDD / SQL-DD 간단한 개념 및 차이점 DDD는 비즈니스 로직과 도메인의 복잡성을 해결하기 위한 설계 방법론이다. SQL-DD는 효과적으로 데이터베이스에 저장하고 관리하는 역할을 한다. (데이터베이스의 구조와 데이터 관리를 위한 설계) 두 설계 방식은 서로 다른 영역에 중점을 둔다. 따라서, 실제 프로젝트에서는 도메인의 복잡성과 데이터의 일관성을 모두 고려해야 하므로, DDD와 SQL-DD를 혼합하여 사용할 수 있다. 시스템의 유연성과 확장성, 유지보수성을 향상시키는데 기여하며..

@RequestParam @PathVariable @RequestBody @ModelAttribute 간단 정리

매번 헷갈리는 저 어노테이션들... 적재적소에 쓰기 위해! 드디어 정리해본다. 4가지 이외에도 여러가지 어노테이션들이 있지만, 내가 여태껏 많이 보았던 것들 기준으로 정리해보았다. @RequestParam, @PathVariable, @RequestBody, @ModelAttribute는 Spring MVC에서 클라이언트가 보낸 HTTP 요청 본문을 Java 객체로 변환하여 컨트롤러 메서드의 매개변수에 바인딩할 때 사용되는 어노테이션이다. [ @RequestParam ] 주로 쿼리 매개변수를 컨트롤러의 메서드 매개변수에 바인딩할 때 사용된다. 쿼리 매개변수는 주로 URL의 끝에 '?key=value' 형식으로 붙는다. 여러개의 쿼리 매개변수는 '&'으로 구분된다. 예시 http://localhost:80..

Spring Bean 등록 방법 (@Component, @Configuration + @Bean)

▶등록 방법1 @Component 활용 @Component public class ProductService { ProductService() { System.out.println("ProductService 객체 생성"); } } ▶등록 방법2 @Configuration + @Bean 활용 (ProductService 클래스에서 @Component는 없앤 상태로) @Configuration public class AppConfig { @Bean public ProductService productService() { return new ProductService(); } } ▶만약 등록 방법을 둘 다 사용하여 프로젝트를 실행시켰을 시, 아래의 에러가 뜬다. 이미 같은 이름을 가진 bean이 존재한다고 ..

[싱글톤 디자인 패턴] 개념, 장점, 예시코드

[index] 1. 개념 2. 장점 3. 예시코드 1. 개념 Singleton 특정 클래스의 인스턴스가 하나만 존재하도록 보장하는 디자인 패턴. 이 패턴은 클래스에 접근할 수 있는 단일 인스턴스를 제공하고, 동일한 리소스에 대한 동시 접근을 방지하기 위해 사용됩니다. ex) 로그 작성기, 데이터베이스 연결, 파일 시스템 등은 하나의 애플리케이션엔서 한 번만 생성되어야하며, 이들을 위해 Singleton패턴을 사용할 수 있습니다. 2. 장점 1) 인스턴스 제어: Singleton 패턴을 사용하면 시스템 전반에 걸쳐 특정 클래스의 인스턴스 개수를 한 개로 제한할 수 있습니다. 이것은 특정 클래스의 인스턴스가 반드시 한 개만 존재해야 하는 경우에 유용합니다. 2) 자원 공유: 여러 다른 객체나 클래스들 사이에..

[보완중] [JAVA 자료구조] Array(배열) / List / Map / Set 개념, 특징, 예제

보완중..Map, Set 배열이 리스트고 리스트가 배열인냥 생각한 적이 있었다... 헷갈리게 느껴지는 이 친구들을 정확히 개념만 정리해보았다. ▶Stack 나무쌓기 / Queue 줄서기 ( cf) Heap 옷더미 ) Stack은 보통 Array와 List로 구현한다. Queue는 보통 List 중에서도 LinkedList로 구현한다. cf) Set과 Map은 Stack이나 Queue와는 다른 종류의 컬렉션이다. Stack과 Queue는 선형 자료구조로서, 아이템들의 추가와 제거에 대한 특정 규칙(예:후입선출 또는 선입선출)을 따르는 구조이다. 반면, Set과 Map은 아이템들의 유일성 또는 키-값 관계를 강조하는 구조이다. ==> Stack :후입선출 - Array: 배열을 사용하여 스택을 구현하는 경우..

[헷갈림] isEmpty / null / != / .equals

추후 글 보완 예정 NullPointerException 이 그렇게나 중요하다고 하는데. 정작 나는 그래.. null 빈값... 빈값이 나오는거면 찾아주면 되지. 라는 생각만 하고 있다. null값을 꼭 확인해줘야한다는 중요성은 알지만 != null 이렇게 노골적으로 주는건 또 아니라고 어디서 들었다... 실제로는 일단 isEmpty / null / != / .equals 이 네가지를 생각나는대로 대입해보고 intelligent한 인텔리제이가 빨간줄로 잘 알려주면 가능한것만 써본 적이 있다. 근데 제대로 공부하기로 했으니!!! 좀 정확히 알고싶어졌다. 대체 어떻게 다른거며 어떤 상황에서 정확히 쓰는걸까?

[헷갈림] 왜 생성자가 필요하지?

공부하다보니 한 클래스에서 다른 클래스 자체를 타입으로 필드를 생성한 경우를 보았다. 근데 그 한 클래스에서 생성자를 만들 때 다른 클래스의 객체를 생성하는 것이었다. 대체 왜? 그런거지 생각을 하면서 갑자기 생성자가 뭐지 ...싶었다. 나 너무 교수님처럼 이론만 생각하는건가. 근데 이런게 이해가 안되니까 시작을 못하겠다. 그래서 모르는 걸 그냥 적는 카테고리를 만들고 내 방식대로 이해한 걸 글로 자연스럽게 적어본다. 생성자를 사용해서 객체를 생성한다. Person person = new Person(); 이렇게 만들면 기본생성자를 사용하여 객체를 생성한 것이다. 객체를 만들고 끝나는 것이 아니다. 객체를 생성한다는 말은 사람을 만들어서 특정 위치에 두는 것 까지를 말하는 것이다. 객체는 heap영역에 ..

[헷갈림] 새로 만들어진 클래스의 타입이나 객체 생성 값이 오는 경우

1) 메서드의 매개변수 자리에 기본자료형이나 String 등의 타입이 아닌 직접 만든 클래스의 타입이 자리할 경우 (위 처럼 클래스의 타입이라고 하는게 맞나? 메서드의 매개변수 자리에 객체가 왔다고 하는게 맞나? 뭐가 맞지?) resize 메서드에서 Rectangle r 은 Rectangle r = new Square(5,6); 이라는 뜻이다. 2) 메서드의 반환타입으로 직접 만든 클래스의 타입이 자리할 경우 User createUser(String name) { //이렇게 User 클래스의 타입으로 반환타입이 정해진 경우 return new User(name); } 3) 메서드의 반환값 자체가 객체 생성한 값일 경우 User createUser(String name) { return new User(n..

[JAVA] Array로 Stack 자료구조 구현 기본예제

예시를 공부하다가 Stack과 Queue를 Array나 List로 구현하는 이유는 대체 무엇일까? 모두가 같은 자료구조인데 다른 자료구조를 활용해서 구하니까 왜그런건지 의문이 생겼다. 찾아보니 유연성과 편의성 때문이라고 한다. 자바에서는 Stack과 Queue를 직접적으로 구현하는 클래스인 Stack과 Queue를 제공하지만, 이들 클래스는 일부 기능이나 확장성에 제약이 있을 수 있다. 유연성과 다중 구현 지원, 기능 확장 및 성능, 코드 재사용 및 호환성, 표준화를 할 수 있기에 Array나 List로 구현한다고 한다. 자세한 부분은 ChatGPT에게 설명을 들었다ㅎ Array(배열)로 Stack 구현 예시코드 이걸 그대로 타이핑하면서 실행시켜보면 이해하기 수월하다. package prc; //Arra..

[JAVA] 알고리즘을 위한 자료구조 (알고리즘, 자료구조 무엇인가?)

[Index] ▶ 알고리즘 ▶ 자료구조 ▶ 알고리즘과 자료구조의 관계 알고리즘! 이 단어는 일상생활에서 많이 쓰는 단어이고 설명은 못하더라도 느낌상으로 알고리즘~ 음~ 알 수 있다. 다만 설명하라고 하면.. 그 유튜브에서 알고리즘으로 나한테 적절한 컨텐츠를 보여주잖아~ 그게 알고리즘이지! 라고 할 것이다. 알고리즘에 대해서 쉽게 알고 가자. 컴퓨터가 따라 할 수 있도록 문제를 해결하는 절차나 방법을 자세히 설명하는 과정. 더 풀어서 설명하자면, 인간은 컴퓨터에게 일을 시킨다. 그 일을 시키려면 인간이 먼저 어떻게 풀지 알고 있어야한다. 그럼 인간이 어떻게 문제를 풀 것인지 절차나 방법을 설명하는 과정이 알고리즘인것이다. +추가정보) 알고리즘 중 가장 기본 알고리즘은 무엇일까? '정렬 알고리즘' : 자료구..

[JAVA] 추상클래스는 왜 쓰나요?

추상클래스 추상(부모)클래스는 다른(자식)클래스들의 공통적인 특징을 변수나 메서드로 정의만 해놓은 것. 그래서 왜 쓰나요??? 추상클래스는 부모 클래스로서의 역할은 하지만, 구체적인 사용은 상속받은 자식 클래스에서 오버라이드(재정의)하여 사용해야한다. 즉, 강제성을 나타내기 위해서 사용한다!!! 추상클래스를 상속받은 자식클래스에게 강제로 해당 기능을 넣어줘야할 때 쓰이는 것이다. 자식클래스에서 해당 추상메서드를 구현 안하면 컴파일 오류가 발생한다. 부모를 상속받아서 만들어지는 자식들은 꼭 그 부모가 가진 추상메서드를 구현하라는 강제성이 있는 것이다. + 참고로 추상클래스에서 일반 메서드도 사용가능하다. 만약, 일반 메서드로 구현하면 누군가는 해당 메서드를 구현 안할수도 있다. 상속받은 자식 클래스 입장에..

[JAVA] 메서드 return 을 왜 사용할까?

꼬리에 꼬리에 꼬리에 꼬리를 무는 궁금증. 당연하게 return을 사용하다가 문뜩 궁금해졌다. 간단한 예시를 만들어보면서 왜 return이 필요한거지? 그냥 구현하는 곳에 다 표현해도 되는데...? 라는 생각이 들었다. public class SimpleExample { // 두 정수를 더하여 결과를 반환하는 메서드 public static int add(int a, int b) { int sum = a + b; return sum; // 합을 반환 } public static void main(String[] args) { int num1 = 5; int num2 = 10; // add 메서드 호출하고 반환 값을 변수 result에 저장 int result = add(num1, num2); System..

[디자인 패턴] 위임 패턴, 클래스 상속, 객체 합성 정의 & 예시

[Index] ▷위임패턴, 클래스 상속, 객체 합성 관계 ▷위임 패턴 정의 ▷클래스 상속 정의 ▷객체 합성 정의 ▷위임 패턴 예시 코드 ▷ [위임패턴,클래스 상속, 객체 합성 관계] 객제지향은 재사용이 목적이다!!! 재사용을 함으로 코드 중복을 제거하여 확장을 용이하게 만든다!!! 그래서 나는 재사용을 위해 나온 위임 패턴을 공부해 볼 것이다! 이 위임 패턴을 설명하기 위해서는 클래스 상속과 객체 합성을 알아야하고, 클래스 상속과 객체 합성은 객체 지향 프로그래밍에서 기능의 재사용을 위해 가장 널리 사용되는 코드 재사용 기법이다. 클래스 상속은 의존성 해결 시점이 컴파일단계에서! 객체 합성은 런타임에서! 클래스 상속은 결합도가 높고! 객체 합성은 결합도가 낮다! ▷ [위임 패턴 정의] 위임 패턴(dele..

[JAVA] 다형성은 무엇인가? 객체의 타입 변환 필요성?

[미리보기 Index] ✔️ 객체의 타입 변환의 필요성 (객체는 그냥 하나의 타입으로 계속 사용되면 안될까?!) ✔️ 다형성이란?? ✔️ 다형성이라는 특성은 오버로딩, 상속, 오버라이딩, 추상화, 형(타입) 변환 모두에서 나타난다. ✔️ 우리가 타입 변환을 어디에 사용할 수 있을지? ✔️ 타입 변환을 사용하면 좋은 점이 무엇인지? ✔️ 객체의 타입 변환의 필요성 (객체는 그냥 하나의 타입으로 계속 사용되면 안될까?!)왜 부모 자식 관계가 있고.. 자식 객체는 부모 타입으로 업캐스팅이 가능하고.. 부모 객체는 자식타입으로 불가능하고.. 다만 부모타입으로 된 자식객체를 다시 자식타입으로 내리는 다운캐스팅은 가능한걸까????... @-@ 이런 타입 변환은 왜 필요한 것일까? 혼란스럽도다......... 흠 생..

[JAVA] 접근 제어자 4가지 특징(개념), 예시

자바에서 접근제어자는 클래스, 메서드, 인스턴스 및 클래스 변수를 선언할 때 사용한다. 총 4가지 종류가 있다. 접근 제어자 의미 public 누구나 접근 가능 protected 같은 패키지 내에 있거나 상속받은 경우에만 접근 가능 (default) = 접근제어자 없음 같은 패키지 내에 있을 때만 접근 가능 (아무런 접근 제어자를 적어주지 않을 때.) private 해당 클래스 내에서만 접근 가능 이렇게 4가지가 있다는 것을 간단히 알았고, 예제를 통해 이해해보았다. public, private은 많이 봐왔고 익히 알고 있었지만 protected, (default)의 접근 제어자를 써본 적도, 많이 본 적도 없기 때문에 참고한 블로그를 통해 직접 코드를 쳐보며 이해해보았다. 그리고 이번 기회에 코드를 치..

클래스다이어그램을 활용한 설계

UML로 설계하는 방법 중 정말 유용한 방법이 클래스다이어그램을 그리는 것이라고 한다. 오늘은 클래스 하나를 가지고 필드와 메서드를 계획하는 클래스다이어그램을 만들어보았다. 나는 관광, 호텔, 여행쪽에 관심이 많아서 스스로 가장 그려보고 싶었던 설계이다. 그래서 제일 먼저 생각나는 관광객이라는 클래스를 그려보았다. 내가 추후에 이 클래스를 활용하여 객체를 만든다는 생각을 하며 만들었는데 음... 사실 수정하고 싶은 부분이 계속 생긴다ㅋㅋ 설계도는 프로젝트하면서 계속 고쳐나가는 것이라고! 절대 예쁜 액자에 보관하는 것이 아니라고! 배웠으니ㅎㅎ 수정하면서 나아가는 걸로 하겠다!!!!! 관광객을 생각하며 이것저것 넣었는데 접근제한자는 어떻게 설정하는 게 좋을지, 어떤 값을 리턴을 해야할지, 매개변수는 뭐를 넣..

JAVA 기본 자료형 - 정수형 char, 예시

Java 언어에서 변수의 타입을 정하는 것은 크게 두 분류로 나뉜다. 기본 자료형 / 참조 자료형 기본 자료형은 다양하게 있지만 자주 쓰는 것들은 int, char, double, boolean이 아닐까싶다. 그 중 char는 캐릭터라고 읽고... 홑따옴표(' ')를 사용한다... 이렇게만 알고 있어서 char에 대해 조금 더 찾아보았다. 문자를 저장하는 기본 자료형 char 는 정체가 뭘까? 기본 자료형은 숫자와 boolean으로 나뉘고, 숫자는 정수형과 소수형으로 나뉜다. 기본자료형 숫자 정수형 소수형 boolean 그리고 문자를 저장하는 char가 정수형에 해당한다고 한다. 엥 그럼 숫자를 저장하는 것인가?!?!!? 그렇다고한다! char의 값을 지정하는 방법은 크게 세가지이다. 1) 홑따옴표 안에..

3) 자바, html 기초 2022.03.02

오전 자바 VariExam01 VariExam02 Practice Practice02 지역변수 : 해당되는 곳에서만 사용하는 변수. 반드시 초기화해야함 변수의 타입 = 그릇의 종류 Int a = 3 변수타입 변수 값 값 => 문자 ('3', 'a'), 숫자(실수,정수) 기본형 : 실제 값data을 저장 boolean(논리형) 1byte : true,false char(문자형) 2byte 정수형(byte 1byte , short 2byte ,int 4byte ,long 8byte) 실수형(float 4byte 정밀도7자리 , double 8byte 정밀도15자리.기본형) * Int랑 double은 기본형이라 안붙여도 이상 없고, Float은 뒤에 f붙여야하고, Long은 뒤에 L붙여야해 참조형 : 객체의 ..

2) 자바 기초, 2022.02.28

오전 자바 오후 HTML Hello.java -> javac.exe 자바 컴파일러(번역과정) -> 바이트코드 파일(Hello.class) 번역된걸 모아둔 곳이 클래스-> java.exe(jvm이 기계어 번역 후 실행) 이 단계가 영어를 각각의 언어로 번역해주는거 (모든 운영체제에 실행할 수 있게) ; - 문장의 끝에 표시 \n 줄바꿈 sysout ctrl+space 하면 완성됌 Ctrl alt 하고 위 아래키로 문장들 복사할 수 있다. Ctrl D 한줄 날라간다. System.out.println('3'+7); 결과값 58 System.out.println("3"+7); 결과값 37 '3' 문자 (한 글자) a 변수 "a" 문자열 result 변수 "result" 문자열 고정값은 상수! 변수명 변수 - ..

1) 국비 OT (java, jsp, servlet, spring / DB, HTML/CSS, javaScript, cloud, github)2022.02.25.금

큰 틀 자바 JSP- 쇼핑몰 만들기 서블릿 - 쇼핑몰 만들기 스프링 – 게시판 만들기 수업 진도 HTML / CSS 기초 데이터베이스(MYSQL / MARI DB) 자바스크립트 기초 클라우드 git hub 수업 오전 : 1) 자바 2) JSP 자바서버페이지 3) 서블릿 4) 스프링 오후 : 1) html/css 기본이다. 2) 자바스크립트 기본이다. (배울 거 많음,최신버전으로함) 3) 데이터베이스 / 깃허브3일 1차는 자바와 DB연동해서 만드는 프로젝트 2차는 html/css와 자바스크립트해서 만드는 프로젝트 3차는 다 사용한 프로젝트 자바는 버전 낮은거 11로쓸예정 - 구글링으로 에러를 찾기가 쉬워서 이클립스 버전 낮은거 쓸 예정 - 구글링으로 에러를 찾기가 쉬워서 비주얼스튜디오코드 : 마이크로소프트..

비전공자 국비 6개월 후

나는 아무것도 모른 채 국비지원으로 IT공부를 시작했다. 자바(JAVA)기반 클라우드 융합 개발자 양성 과정이었다. 2월~8월동안 학원을 열심히 다녔다. 6개월 동안 이해하려 노력하며 수업을 들었지만, 막상 끝나고나니 공부에 대한 아쉬움이 매우 크다. 공부 방법도 몰랐던 것 같고 이해를 하는 것도 힘들었다. 비전공자라면 국비를 시작하기전에 기초적인 지식은 유튜브로라도 습득하고 가는 것을 추천한다. 많이들 보시는 생활코딩같은... 나는 주변에 많이 물어보고 열정적으로 공부했지만, 6개월이 지나서의 내 모습은 스스로 기대했던 것보다 너무 초라했다. 그래도 6개월을 이수함으로 흥미가 생긴다는 것을 알았고! 앞으로 내가 어떻게 공부해나가야하고 취업을 준비해야하는지 알게되었다. 최종 프로젝트를 전공자 분들과 함께..

공부일기 2022.09.13