java 22

대규모 AI 시스템 설계 프로젝트

프로젝트 목적이번 프로젝트는 물류 관리 및 배송 시스템을 개발하는 것이 목표이다.MSA기반의 시스템을 설계하고 구현하면서 다양한 기술과 방법론을 적용해 볼 예정이다.이번 프로젝트를 통해 MSA의 복잡성을 이해하고 실무에서 발생할 수 있는 문제를 간접적으로 경험하고 해결하는 것이 목표이다.프로젝트 개요이번 프로젝트는 B2B 물류 관리 및 배송 시스템 이다. B2B는 Business to Business의 약자로, 기업 간 거래를 의미한다.물류는 각 지역에 허브센터를 가지고 있으며 각 허브 센터는 여러 업체의 물건을 보관한다.업체의 상품은 허브에서 필요한 경우 바로 허브로 전달된다.해당 상품의 배송 요청이 들어오면 목적지 허브로 물품을 이동시켜 목적지에 배송한다.API 명세서테이블 명세서ERD 명세서인프라 ..

AI 검증 비즈니스 프로젝트

프로젝트 개요이번 프로젝트는 스파르타코딩클럽에서 진행하는 첫번째 팀 프로젝트로 OO의 민족과 같은 주문 관리 플랫폼을개발해보는 팀 프로젝트를 진행하게 되었다. 개발을 진행하기에 앞서 어떻게 진행할 것이지 간단하게 정리할 예정이다. 1. API 명세서2. 데이터베이스 테이블 3. ERD 다이어그램ERD 다이어그램 자세히 보기!!4. 인프라 아키텍쳐

Spring Boot 2024.08.23

Spring Cloud

1. Spring CloudSpring Cloud란?  ● Spring Cloud는 마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이다.  ● 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다.주요기능  ● 서비스 등록 및 디스커버리 : Eureka, Consul, Zookeeper  ● 로드밸런싱 : Ribbon, Spring Cloud LoadBalancer  ● 서킷 브레이커 : Hystrix, Resilience4j  ● API 게이트웨이 : Zuul, Spring Cloud Gateway  ● 구성 관리 : Spring Cloud Config  ● 분산 추적 : Spring Cloud Sleuth, Zipkin  ● 메시징 : Spring Cl..

MSA 개요

1. MSA란?Microservices Architecture  ● MSA는 하나의 애플리케이션을 여러 개의  독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는      소프트웨어 아키텍처 스타일이다.  ● 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장될 수 있다.  ● 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어 진다.주요특징  ● 독립적인 배포 가능성 : 각 서비스는 독립적으로 배포할 수 있고 다른 서비스에 영향을 주지 않고 업데이트 할 수 있다.  ● 작은 팀 구성 : 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있다.  ● 기술 스택의 다양성 : 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있다.1.2 모놀..

문시해알, 맞왜틀 TIL - 20230622

📌 트랜잭션, @Transactional 어노테이션 우선 프로그래밍 공부를 진행하면서 문제점이 없던 날에는 TIL을 작성하지 않았지만 오늘부터는 문시해알이 아닌 공부했던 내용을 작성할 예정이다. 오늘 작성할 내용은 트랜잭션과 Spring의 @Transactional 어노테이션에 대해 작성하겠다. 📖 트랜잭션이란? 트랜잭션은 데이터통신 시스템에서 관리의 대상이 되는 기본적인 정보를 기록한 기본파일에 대해서 추가, 삭제 및 갱신을 가져오도록 하는 행위(거래)를 트랜잭션이라 한다. 쉽게 말하면 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 하는 일련의 연산들을 의미한다. 📖 트랜잭션의 특징 ● 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복..

TIL, WIL/TIL 2023.06.22

HTTP 요청 데이터 - POST HTML Form

HTTP 요청 데이터 - 개요 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보겠다. 주로 3가지 방법을 사용한다. ● GET - 쿼리 파라미터 - /url?username=hello&age=20 - 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 - 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 ● POST - HTML Form - content-type: application/x-www-form-urlencoded - 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 - 예) 회원 가입, 상품 주문, HTML Form 사용 ● HTTP message body에 데이터를 직접 담아서 요청 - HTTP API에서 주..

HTTP 요청 데이터 - GET 방식

HTTP 요청 데이터 - 개요 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보겠다. 주로 3가지 방법을 사용한다. ● GET - 쿼리 파라미터 - /url?username=hello&age=20 - 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 - 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 ● POST - HTML Form - content-type: application/x-www-form-urlencoded - 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 - 예) 회원 가입, 상품 주문, HTML Form 사용 ● HTTP message body에 데이터를 직접 담아서 요청 - HTTP API에서 주..

HttpServletRequest

●HttpServletRequest 역할 HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편하다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 "HttpServletRequest" 객체에 담아서 제공한다. HttpServletRequest를 사용하면 다음과 같은 HTTP 요청 메시지를 편리하게 조회할 수 있다. HTTP 요청 메시지 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=kim&age=20 ● START LINE - HTTP 메소드 - URL - 쿼리 스트링 ..

정렬 알고리즘(java)

3번 정렬 알고리즘 평균 수행 시간이 O(n^2)인 알고리즘 ● 버블 정렬, 삽입 정렬, 선택 정렬 ● 각 요소가 다른 요소와 평균 한번 이상씩 비교를 하여 정렬 됨 Insertion Sort (삽입정렬)구현 ● Insertion Sort의 기본 개념은 이미 정렬된 상태의 요소에 새로운 요소를 추가할 때 정렬하여 추가하는 개념이다. ● 두 번째 요소 부터 이전 요소들과 비교하면서 insert될 위치를 찾아가며 정렬하는 알고리즘 package ch03; public class InsertionSort { public static void insertionSort(int[] arr, int count) { int i = 0, j = 0; int temp = 0; for(i = 1; i < count; i++..

코딩테스트 2023.04.26

정렬된 수에서 하나의 수의 위치 찾기(java)

문제 정의 ● 여러 개의 수가 정렬된 수서로 있을 때 특정한 수를 찾는 방법 ● 단순 반복문을 이용하면 수의 개수에 따라 비교 횟수가 증가하는 O(n)의 수행이 이루어짐 ● 수가 정렬된 상태에서는 이진 탐색을 활용하면 매번 비교되는 요소의 수가 절반으로 감소될 수 있으므로 O(logN)의 수행으로 원하는 수를 찾을 수 있음 ● 수의 예 : [12, 25. 31, 48, 54, 66, 70, 83, 95, 108] ● 83의 위치 찾기 ● 88의 위치 찾기 문제 해결방법 ● 수가 정렬된 상태이므로 중간의 값을 하나 선택한다. 찾으려는 값이 그보다 크면 범위를 오른쪽으로 그보다 작으면 범위를 왼쪽으로 좁힐 수 있다. ● 한번 비교 할때 마다 1/2씩 범위가 좁혀진다. 배열애 포함된 숫자를 입력했을 때의 코드..

코딩테스트 2023.04.26