전체 글 132

[Spring] IoC, SpringContainer, DI

IoC (Inversion of Control) 제어의 역전, 의존성 역전 이라고도 한다.new 키워드를 통해 객체를 생성하지 않고, Spring이 객체의 생명주기를 관리하는 것을 의미한다객체의 제어권한을 Spring 으로 넘겨 개발자는 애플리케이션의 핵심 비즈니스 로직에 집중할 수 있게 한다.IoC를 사용함으로써 결합도 감소 및 응집도를 증가시킴으로써 더욱 유연한 코드작성을 가능하게 해준다.SpringContainer(Bean, DI)를 통하여 구현한다. SpringContainerBean의 생성, 관리, 의존성 주입(DI)등을 담당하여 IoC를 실현하기 위한 도구Bean: 스프링 컨테이너에서 생성하고 관리되는 객체Bean은 스프링 컨테이너에 의해 관리되므로 필요한 곳에서 주입(DI; Dependen..

CS 2023.06.28

Java - DB 연결2: ORM

ORM이란 객체와 관계형DB(RDBMS)의 데이터를 자동 매핑(연결)해주는 도구이다. Java에서는 JPA, Hibernate이 있다. RDBMS는 테이블 형태로 데이터를 저장하고 java는 객체라는 개념으로 데이터를 표현한다. - JPA(Java Persistence API) JPA는 인터페이스와 어노테이션을 정의하고, 이를 사용하여 객체와 테이블 간의 매핑 규칙을 정의한다. 이를 구현한 프레임워크(예: Hibernate)와 연결하여 사용한다 - Hibernate: 자바 프로그래밍 언어를 기반으로 한 오픈 소스 ORM(Object-Relational Mapping) 프레임워크 - JPA에서 구현한 인터페이스와 어노테이션을 사용하여 ORM을 구현 - 객체 지향적인 방식으로 DB(데이터)를 다룰 수 있다...

DB 2023.06.26

Java - DB 연결1: JDBC

DB 데이터 접속이란 코드와 DB의 데이터를 연결하는 것을 의미한다. SQL Mapping과 ORM 방법 두가지가 존재하며, 이 글에서는 SQL Mapping 방식인 JDBC에 대해 알아볼 것이다. 우선 SQL Mapping이란, 코드 내에 SQL을 직접 입력하여 DBMS에 접속하는 방법이다. ORM에 비해 사용하기 복잡하며, Java에선 JDBC이 SQL Mapping 방식을 통하여 연결시킨다. JDBC란? JDBC는 "Java Database Connectivity"의 약자로, 자바의 표준 API이다. 자바 프로그램에서 데이터베이스와 연결하고 상호 작용하기 위한 API(응용 프로그램 인터페이스)이다. JDBC를 사용하면 자바 환경으로 관계형 데이터베이스에 액세스하여 데이터를 검색, 삽입, 업데이트, ..

DB 2023.06.26

[Springboot] @PathVariable vs @RequestParam

최근에 자주 헷갈렸던 @PathVariable과 @RequestParam의 차이점을 정리했다. 🔹 @PathVariableURL 경로 자체에 값을 포함시켜 전달하는 방식.RESTful한 웹 서비스에서 자주 쓰이며, 리소스를 식별하는 데 적합하다. @GetMapping("/hello/{name}/{age}")public String helloRequestPath(@PathVariable String name, @PathVariable int age) { return String.format("Hello, @PathVariable. name = %s, age = %d", name, age);}예를 들어 /hello/robbie/30 요청 시:name = robbieage = 30👉 특정 리소스에 직..

Springboot 2023.06.23

프로그래머스 : 양옆앞뒤 큰 수 찾기

오늘은 알고리즘 테스트 시험을 봤다. 난이도 상, 중, 하 이렇게 세문제가 나왔으나 중, 하는 쉬웠다. 하지만 난이도가 상인 문제는 어려웠다. 상하좌우의 값을 비교해 가장 큰 값이라면 별을 출력하게 해야 하는 문제였다 처음에는 배열초과가 일어나지 않게 하기 위해 총 세부분으로 나누어 작업했다 1. 두 부분의 값만 비교하면 되는 꼭짓점 2. 세 부분의 값만 비교하면 되는 모서리 3. 상하좌우 모두 비교하여야 하는 안쪽 부분 public class Test_3 { public void Solution(int[][] checkin){ String [][] answer = new String[checkin.length][checkin[0].length]; // 1 꼭짓점 부분 구현 // 1-1. [0, 0] a..

Algorithm 2023.06.22

프로그래머스: 포켓몬

알고리즘 문제를 풀면서 Stream을 이용하여 문제를 너무 풀어보고 싶었다. 그래서 시간이 날 때 틈틈이 Stream에 대해 알아봤다 처음 볼 땐, 무슨말인지도 모르겠고 걱정이 앞섰지만 코드들이 어떤 역할을 하는지 눈에 익기 시작했다. Stream을 사용하여 풀었던 첫번째 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여러 종류의 포켓몬이 주어진다. 포켓몬의 종류는 중복될 수 있다. 포켓몬은 주어진 포켓몬의 절반만큼 가져갈 수 있다. 이때, 다른 종류의 포켓몬은 몇 마리인가? 가 문제이다. 손쉽게 풀 수 있었던 문제였다. 이번에는 Stream을..

Algorithm 2023.06.21

[Java] Stream

스트림(Stream)은 데이터를 작은 조각으로 나누어 순차적으로 처리하는 방식이다.예를 들어, 유튜브를 생각해보자.우리가 영상을 볼 때, 처음부터 끝까지 파일을 한 번에 받아오는 게 아니라, 작은 단위(조각)로 조금씩 받아오면서 영상이 재생된다.만약 중간에 분 단위로 스킵하면 영상이 잠깐 멈추는(버퍼링) 이유는, 해당 구간의 조각 데이터를 아직 못 받았기 때문이다.이처럼 스트리밍은 전체 데이터를 한꺼번에 가져오지 않아도 실시간으로 처리할 수 있어서, 메모리도 효율적으로 사용할 수 있다. ⚙️ 스트림의 특징 원본 데이터를 변경하지 않는다스트림은 원본 데이터를 건드리지 않고, 복사된 데이터를 기준으로 작업한다.휘발성이다스트림은 한 번 사용하면 다시 사용할 수 없다.(재사용하려면 새 스트림을 만들어야 함)..

Java 2023.06.21

오버로딩(Overloading)과 오버라이딩(Overriding)

🔁 오버로딩 (Overloading)같은 이름의 메서드나 생성자를 매개변수만 다르게 여러 개 정의하는 것같은 이름의 메서드를 여러 개 정의할 수 있다.단, 매개변수의 개수, 타입, 순서 중 하나 이상이 달라야 한다.호출 시 컴파일러가 전달된 인자를 바탕으로 어떤 메서드를 호출할지 판단한다.가독성과 일관성을 높일 수 있어 매우 유용하다//오버로딩 예제 public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; }같은 ad..

Java 2023.06.09

Python mongoDB Join 사용 코드

mongoDB는 NoSql DB로, Join문을 사용할 수 없다. 하지만 $lookup을 사용하여 MongoDB에서 여러 개의 컬렉션 간 조인을 수행할 수 있다. $lookup은 RDBMS의 조인 기능과 유사한 기능을 제공하는 파이프라인 연산자이다. 코드 작성 예시 import pymongo my_client = pymongo.MongoClient('mongodb://localhost:27017/') my_db = my_client['Orders'] my_collection = my_db['buy_orders'] result = my_collection.aggregate([{ '$lookup' : { 'from': 'sell_orders', 'localField': 'id_transaction', 'fo..

DB 2023.06.09

AWS를 이용한 배포

우선, AWS에 회원가입을 하여야 한다. 회원가입이 완료되었다면 아래와 같은 창이 뜰 것이다. 그림과 같이 1번 클릭 후 2번(보안 자격 증명)을 클릭한다. 이후 아래와 같은 창이 뜰 것이다. 스크롤을 내리다 보면 엑세스 키가 보일 것이다. 이미 엑세스 키를 생성한 뒤라 조금 다르겠지만 액세스 키 만들기를 눌러, 액세스 키를 생성한다 생성된 엑세스 키 ID와 보안 엑세스 키를 따로 복사하여 저장해둔다. 이후 배포를 원하는 python으로 가서 터미널을 킨다. 터미널 준비하기 - 아래의 순서대로 입력 mkdir deploy cp app.py deploy/application.py cp -r templates deploy/templates pip freeze > deploy/requirements.txt c..

웹 개발 종합 2023.06.05