전체 글 111

Spring + java 이론 :) 의존성 주입의 의미와 개선 코드

goal 의존성 주입 (Dependency Injection)을 이해한다. 1 ] 의존성의 의미 1. 개발을 하다보면 의존성이 생겨나기 마련이다. class Programmer { private Coffee coffee; public Programmer() { this.coffee = new Coffee(); } public startProgramming() { this.coffee.drink(); } } 위 코드와 같이 Programmer 클래스에서 startProgramming 함수가 호출되기 위해서는 Coffee 클래스를 필요로 한다. 이것을 Programmer 클래스는 Coffee 클래스의 의존성을 가진다. 라고 말한다. 2. 위의 코드의 문제점 - 위의 코드처럼 설계할 경우, 코드의 재활용성이 ..

자료구조 (java) :) LinkedList 구현하기

goal LinkedList의 구현 내용을 이해한다. 데이터 삽입구현 데이터 삭제구현 데이터 불러오기 package structure; public class SinglyLinkedList { public static void main(String[] args) { LinkedList linked = new LinkedList(); linked.unshipt("데이터1"); linked.unshipt("데이터2"); linked.unshipt("데이터3"); linked.unshipt("데이터4"); linked.push("push데이터1"); linked.insert(2, "--insert 데이터1--"); linked.getLinkedList(); } } // Node 정보를 담는 클래스 class ..

java Design Pattern :) Design Pattern의 유형과 종류 알아보기.. 객체지향 설계의 출발점

goal 디자인 패턴의 개념을 이해한다. 이자인 패턴의 유형안다. 디자인 패턴의 유형의 종류를 이해한다. Reference ※ 이번 포스팅은 https://coding-factory.tistory.com/708를 100퍼센트 참고하여 적었습니다. ※ 혼자 공부하며 이해한 내용을 적은 글입니다. 잘못된 정보가 있으면 적극 지적해주시면 감사하겠습니다. 애플리케이션은 매우 복잡한 설계로 이루어져 있다. ※ 그림은 이해할 필요 없다. 다만, 하나의 프로그램은 엄청 복잡한 관계하에 이루어져있음만 확인한다. 이미지 Reference : https://infinitejava.tistory.com/61 위의 그림은 하나의 애플리케이션 프로젝트의 UML로 보여진다. 아마 소규모 프로젝트일 것으로 추측된다. 우리가 위의 ..

Java/Design Pattern 2022.03.28

자료구조 (java) :) 삽입정렬... 입력받은 값을 버블정렬로 출력하기

goal 삽입정렬의 로직 설계 및 내용을 이해한다. package algorithm; import java.util.Scanner; public class InsertionSort { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String line = sc.nextLine(); String[] strArray = line.split(","); Integer[] num = new Integer[strArray.length]; // Integer instance의 참조변수 num에 입력값 저장 for (int i = 0; i < num.length; i++) { num[i] = Integer.parseInt(str..

자료구조 (java) :) 버블정렬... 입력받은 값을 버블정렬로 출력하기

package algorithm; import java.util.Scanner; public class BubbleSort { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String line = sc.nextLine(); String[] str = line.split(","); Integer[] num = new Integer[str.length]; // Integer instance의 변수 num에 입력값 저장 for(int i = 0; i < num.length; i++) { num[i] = Integer.parseInt(str[i].trim()); } // BubbleSort 알고리즘 for (int i..

자료구조 (java) :) 선택정렬.. 입력받은 값을 선택정렬로 정리하기

goal 사용자에게 입력받은 값을 선택정렬 로직을 사용하여 오름차순으로 정리한다. package algorithm; import java.util.Scanner; public class SelectionSort { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String line = sc.nextLine(); String[] str = line.split(","); Integer[] num = new Integer[str.length]; // num의 instance에 입력 받은 값을 순차적으로 넣어준다. for (int i = 0; i < num.length; i++){ num[i] = Integer.parse..

자료구조 이론 :) 선택정렬, 버블정렬, 삽입정렬을 알아보자

goal 선택정렬, 버블정렬, 삽입정렬을 이해한다. 1 ] 선택정렬(Selection Sort) 선택 정렬은 해당 자리를 이미 선택하고 그 자리에 오는 값을 찾는 것이다. ※ 선택정렬은 제자리 정렬(in-place sorting) 알고리즘의 하나이다. 제자리 정렬이란, 입력 배열(정렬되지 않은 값들)이회에 다른 추가 메모리를 요구하지 않는 정렬 방법이며 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘 1. 선택정렬의 과정 해당 과정은 선택정렬을 이용하여 배열을 오름차순으로 표현하는 과정을 나타낸다. 1. 선택정렬을 이용하여 배열을 오름차순으로 표현하는 과정 말로 표현하기 N번째 인덱스를 고정시킨다. ....(1) N번째 인덱스와 이후의 인덱스들과의 값을 비교한다...

algorithm(java) :) 달팽이 알고리즘 배열로 풀어보기 (2차원 배열풀이)

goal Java로 구현한 달팽이 알고리즘을 이해한다. 1 ] 달팽이 알고리즘 1. 문제설명 사용자가 입력값 n을 입력했을 때, n * n의 배열을 위와 같은 규칙으로 출력하는 문제 2. 알고리즘 순서도 및 코드풀이 알고리즘 순서도 코드풀이 package algorithm; import java.util.Scanner; public class TwoArraySpiral { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.printf("숫자를 입력하세요 : "); int size = sc.nextInt(); int[][] arr = new int[size+1][size+1]; // 2차원배열 in..

Spring 이론 :) Spring Data JPA를 시작하기 전에 간단한 데이터베이스 개념 - 데이터의 무결성

Goal RDBMS의 무결성(Integrity)에 대해서 이해한다. 1 ] 데이터의 무결성 데이터의 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 말한다. 데이터의 무결성은 DBMS에서 관리하며 중요한 기능이다. 1. 데이터 무결성의 종류 종류 내용 개체 무결성 (Entity integrity) 모든 테이블은 primary key로 선택된 필드(column)를 가져야한다. - primary key로 선택된 필드는 고유한 값을 가져야한다. - primary key는 null값을 허용하지 않는다. 참조 무결성 (Referential integrity) 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것을 말한다. - 참조되는 테이블의 행을 참조하는 참조키가 존재하는 한 ..

Spring 이론 :) Spring Data JPA를 시작하기 전에 간단한 데이터베이스 개념 - DDL, DML, DCL을 이해한다.

Goal DDL, DML, DCL를 이해한다. Spring JPA인데 갑자기 DBMS 관련 내용을 학습하는 이유 Spring의 JPA를 공부하다보면 application.properties를 설정하는 부분이 나온다. 이곳에 기입하는 부분에 있어서 spring.jpa.hibernate.ddl-auto를 설정하게 되는 경우가 생기는데 알아본 결과 Spring JPA에서 Hibernate를 이용해서 DDL을 생성하여 Data Table을 자동으로 생성하는 것을 돕는다고 한다. 뒷부분에서 기록하겠지만 DDL은 Data Defination Language의 약자로써 데이터베이스의 테이블의 생성, 변경, 삭제를 담당하는 명령어이다. 이외에 DML, DCL이 존재하는데 JPA를 다루는데 있어서 중요한 부분임을 직감하..

네트워크 :) TCP / IP란? OSI 7계층과 TCP / IP 4계층

goal 1. TCP/IP에 대해서 이해한다. 2. OSI 7계층과 TCP / IP 4계층을 이해한다. 1 ] TCP/IP (Transmission Control Protocol / Internet Protocal) TCP/IP는 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약이다. TCP/IP의 이름에서 알 수 있듯이 TCP / IP에는 두가지 프로토콜로 이루어져 있으며 인터넷으로 디바이스를 연결하는 네트워크 프로토콜 집합이며 개별적인 네트워크 프로토콜로 사용될 수 있다. TCP / IP는 인터넷의 기본 통신 언어이다. TCP / IP를 사용하면 한 컴퓨터가 데이터 패킷을 컴파일하고 올바른위치로 전송하여 인터넷을 통해 다른 컴퓨터와 통신할 수 있다. 1. TCP란? 최상위 계층인 TCP는..

Java SE? Java EE? Java ME? :) Java 플랫폼의 이해

goal Java SE / EE / ME에 대해서 이해한다. 우리는 왜 Java를 배우는가? 우리가 Java를 배우는 이유는 개발이라는 공통적인 목적이 있다. "Java로 모바일 앱을 개발해볼까? 웹 사이트를 개발해볼까?" 우리가 지우개로 지울 수 있는 펜으로 글을 작성한다고 가정하자. 위 상황에서 볼펜으로 글을 쓰는 게 바람직할까? 그렇지 않다. 위의 조건을 만족하기 위해서는 연필이나 샤프를 사용하는 것이 바람직할 것이다. 개발을 할 때도 목적성에 맞는 것을 만들기 위해서는 적절한 도구를 필요로 한다. 그래서 Java SE와 EE 그리고 ME가 뭔데? 앞서 말했던 것처럼 개발을 위한 도구를 의미한다. 간략한 내용은 아래 표와 같다. 개발환경 (플랫폼) 설명 Java SE (Standard Edition..

자료구조 이론 :) Stack이해하기

goal Stack을 이해한다. Stack 및 Queue 다시 정리 1] Stack 1. Stack 이해하기 Stack은 블럭 쌓기 이다. 누군가 Stack에 대해서 묻는다면 한 문장으로 stack은 블럭 쌓기라고 이야기해주고 싶다. 현실 세계의 (예)로 이해하기 현실에서 같은 모양의 4개의 블럭을 하나의 상자에 쌓는다고 가정한다. 쌓기를 시작하면 첫 번째 블럭, 두 번째 블럭, 세 번째 블럭, 네 번째 블럭으로 쌓이게 될 것이다. 반대로 이 블럭들을 빼면 가장 먼저 나오는 순서대로 네 번째 블럭, 세 번째 블럭, 두 번째 블럭, 첫 번째 블럭이 될 것이다. 이 개념 자체가 Stack이다. Stack의 자료구조 관점 자료구조 관점에서 Stack은 첫 번째 들어간 블럭이 가장 늦게 나온다는 것을 이유로 L..

java :) generic class의 이해

goal Generic class를 이해한다. 1. Generic class generic은 data type을 일반화할 때 사용한다. generic은 class나 method에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 컴파일시에 미리 타입 검사(type check)를 수행하면 아래와 같은 이점을 가진다. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. class MyArray { T element; void setElement(T element){ this.element = element; } T getElement() { return this.element; } } T를 Type ..

Java/java 2022.03.13

java :) clone()메소드( + interface Cloneable)

goal clone() 메서드에 대해서 이해한다. 1] clone() 메소드 clone()메소드는 해당 인스턴스를 복제하여, 새로운 인스턴스를 생성해 반환한다. 하지만, Object클래스의 clone()메소드는 단지 필드의 값만을 복사하므로, 필드의 값이 배열이나 인스턴스면 제대로 복제할 수 없다. 따라서 이러한 경우에는 해당 클래스에서 clone() 메소드를 오버 라이딩하여, 복제가 제대로 이루어지도록 재정의한다. 1. 예제 코드 출처 : http://www.tcpschool.com/java/java_api_object package first_package; import java.lang.Cloneable; import java.util.ArrayList; class Car implements Clo..

Java/java 2022.03.13

java :) interface

goal interface에 대해서 이해한다. 1] interface 접근제어자 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메소드이름(매개변수목록); } interface의 모든 필드와 메소드는 형식이 지정되어있다. 모든 필드 : public static final 메소드 이름 : public abstract 형식의 생략도 가능한데 생략이 될 경우 컴파일 시 자바 컴파일러가 자동으로 추가한다. interface도 abstract class처럼 직접 instance를 생성할 수 없다. interface는 abstract와 달리 다중상속이 가능하지만 일반적인 경우 사용하지 않는다. interface는 모호성의 대한 문제를 해결하..

Java/java 2022.03.13

Spring 이론 :) Spring Data JPA를 시작하기 전에 간단한 데이터베이스 개념 - Entity, Attribute, Domain

goal Database의 간단한 용어를 이해한다 a) Entity, Attribute, Domain 1 ] Database의 Entity, Attribute, Domain Database 간단 개념 내 용 Entity 테이블 그 자체를 의미한다. - 테잉블은 업무에 필요, 데이터를 저장 및 관리한다. Attribute 테이블의 column을 의미한다. - column은 데이터의 속성을 가진다. Domain Attribuute의 값, 타입, 제약사항등에 대한 값의 범위

Spring :) RestController, RequestMapping, GetMapping, RequestParam

Goal RestController, RequestMapping, GetMapping, RequestParam의 기본 사용법을 숙지한다. Spring의 기본 구동 방식에 대해서 이해한다. package org.zerock.ex1.controller; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; import or..

Spring/Spring 2022.03.11