분류 전체보기 50

IOC/DI

IOC(제어의 역전)객체의 생성과 관리 권한을 개발자가 아닌 스프링 컨테이너가 담당하는 것을 말한다.기본적으로는 개발자가 객체를 직접 생성하고 관리했지만, 스프링에서는 컨테이너가 객체 생성,주입, 소멸을 관리한다. IOC의 장점은 다음과 같다.객체간의 낮은 결합도코드의 재사용성 증가유지보수의 용이성테스트 용이성 향상 DI(의존성 주입)스프링이 객체 간의 의존성을 자동으로 주입해주는 것을 의미한다.한 객체가 다른 객체를 사용할 떄, 해당 객체를 직접 생성하지 않고스프링이 주입해주는 방식이다.IOC를 구현하는 방식 중 하나 의존성 주입 방법 1. 생성자 주입(권장)객체 생성 시점에 의존성을 주입불변성 보장과 필수 의존성 명시 가능 2. 세터 주입선택적 의존성을 주입할 때 사용런타임에 의존성 변경 가능 3. ..

TIL 2025.02.06

SOLID 원칙

SOLID 원칙은 객체 지향 설계의 5가지 기본 원칙이자 소프트웨어 설계에서 유지보수성, 확장성, 유연성을 높이기 위한 지침이다. SOLID에는 단일 책임 원칙, 개방 폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존관계 역전 원칙이 있으며각 원칙의 영문 첫 글자를 조합하여 만든 단어이다, Single Responsibility Principle (S), Open-Closed Principle (O), Liskov Substitution Principle (L), Interface Segregation Principle (I), Dependency Inversion Principle (D) 단일 책임 원칙하나의 객체는 하나의 책임만 가져야 한다. 개방 폐쇄 원칙소프트웨어 엔티티(클래스, 모듈..

TIL 2025.02.05

오늘 한 것과 알고리즘

오늘은 schadule project를 마무리하고 schadule project에 대한 과제 해설을 들었다.과제를 진행하며 강의를 듣고 과제를 진행해야 하는데 강의의 내용을 이해하기에 어려움이 있었고또한 설이라는 명절이 있어 공부에 있어 집중하지 못한 것 같다. 오늘부터 다시 마음을 다잡고 공부를 해야 겠다.필수 과제는 진행하였으나 아쉬운 점이 많았다. 오늘 푼 알고리즘은 이다. 두 정수 a,b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 반환하게된다. 처음에는 a와 b를 비교하여 큰 수를 찾아 for문을 돌려 해결하려 하였으나더 간결한 방법을 찾아 내었다.등차 수열의 ..

TIL 2025.02.04

오늘의 코딩 테스트

문자열 s를 숫자로 변환하는 함수, solution을 완성하세요.class Solution { public int solution(String s) { int num = 0; num = Integer.valueOf(s); return num; }} Integer.valueOf(s)를 통해 10진수 문자열을 Integer 객체로 변환하였다.  임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.class Solution { public long solution(long n) { ..

자연수 뒤집어 배열로 만들기

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. class Solution {     public int[] solution(long n) {         String str = String.valueOf(n);         int len = str.length();                  int[] answer = new int[len];                  for (int i = 0; i         answer[i] = (int)(n % 10);         n /= 10;         }                  return answer;     } } 입력받은 숫자의 길..

TIL 2025.01.24

SQL NULL 처리하기

입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.SELECT ANIMAL_TYPE, IF(NAME IS NULL, 'No name', NAME) NAME, SEX_UPON_INTAKEFROM ANIMAL_INSORDER BY ANIMAL_ID 문제를 풀며 SQL에도 조건문이 있다는 것을 알게 되었다.SQL의 조건문은 IF와 CASE가 있다.  IF문IF(조건, 조건이 참일 때, 조건이 거짓일 때) 삼항연산자와 비슷하다.예시는 위를 참고하면 된다.  CASE문IF문은 한개의 조건이었..

TIL 2025.01.23

스프링 프레임워크 기본 개념

Spring Framework의 등장Spring Framework는 애플리케이션 개발의 복잡성을 해결하기 위해 등장했다.개발자가 개발할 때 비즈니스 로직 외에도 서버의 성능, 신뢰성, 보안 등 다햔한 기술적 문제를 신경 써야 했다. 이런 매우 중요한 요소들을 모두 고려하면서 개발을 진행하는 것은 쉽지 않기에 개발 환경을 제공해주고 개발자는 비즈니스 로직에만 집중할 수 있게 도와준다. Spring Framework 특징 애플리케이션의 다양한 구성 요소를 유연하게 연결하고 관리할 수 있게 해준다.Spring Framework는 누구나 사용할 수 있는 오픈소스이다.모듈화되어 필요에 따라 특정 기능만 선택적으로 사용할 수 있다.Java언어의 가장 큰 특징인 객체 지향 언어의 특징을 살려낸 프레임워크이다. Spr..

TIL 2025.01.22

오늘 배운 것

네트워크인터넷과 인터넷 프로토콜(IP), IP 방식의 문제점과 그 대안이 되는 TCP, UDP에 대해 배웠습니다.또한 웹의 기초라고 할 수 있는 DNS, URI, URL, JSON과  서버의 성능 향상을 위한 Scale Up, Scale Out에 대해서 배웠습니다. 아주 중요한 HTTP에 대해서도 구조와 함께 Web Application을 배울 수 있었습니다. 학습량이 많고 처음 듣는 개념이 많았지만 오늘 하루고 알차게 보낸 것 같아 보람찼습니다.

TIL 2025.01.21

[키오스크 만들기] 키오스크 만들기 4일차

오늘은 Enum과 람다 & 스트림을 활용하여 키오스크를 개선하였습니다. Mainpackage com.example.kiosk7;import java.util.Arrays;import java.util.List;public class Main { public static void main(String[] args) { Menu burgermenu = new Menu("Burgers"); Menu drinkmenu = new Menu("Drinks"); Menu dessertmenu = new Menu("Desserts"); // add 함수를 통해 new shakeMenu(이름, 가격, 설명) List에 삽입 burgermenu.addMe..

TIL 2025.01.20

[키오스크 만들기] 키오스크 만들기 3일차

장바구니 기능을 고도화하여 다음과 같은 핵심 기능들을 추가 구현하였습니다. 사용자 편의성 개선상품 추가 전 확인 절차 기능 추가다중 상품 담기 기능 구현상품별 수량 지정 기능 추가주문 프로세스 강화장바구니 내 총 주문 금액 계산 기능 추가최종 주문 프로세스 구현 및 주문시 주문 받은 리스트를 초기화 try-catch를 활용한 예외 처리를 구현하면서 예외 처리 메커니즘에 대한 이해도를 높일 수 있었습니다.  package com.example.kiosk6;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Kiosk { private final List carts; private final L..

TIL 2025.01.17