본문 바로가기

분류 전체보기

(285)
Array, LinkedList에 대해 설명해주시고 각각 어떻게 사용하는지 말씀해주세요. Array (배열): 배열은 동일한 자료형의 요소들을 순서대로 저장하는 자료 구조입니다. 각 요소는 인덱스를 통해 접근 가능하며, 메모리 상에서 연속적으로 할당됩니다. 배열의 크기는 생성할 때 고정되며, 크기를 동적으로 변경하기 어렵습니다. 사용 방법: # Python에서의 배열 사용 예시 my_array = [1, 2, 3, 4, 5] print(my_array[2]) # 인덱스를 사용하여 배열 요소에 접근 배열의 장점: 빠른 임의 접근(Random Access): 인덱스를 통한 직접적인 접근으로 요소에 빠르게 접근할 수 있습니다. 고정된 크기: 배열은 고정된 크기를 가지므로 메모리 사용이 효율적입니다. 배열의 단점: 크기 변경 어려움: 배열의 크기를 동적으로 변경하기 어렵기 때문에 필요 이상의 메모리..
테스트코드에 대해서 아는대로 설명해주시고 활용 경험에 대해서 답변해주세요. 테스트 코드(Test Code)에 대한 설명: 테스트 코드는 소프트웨어 개발에서 작성된 코드의 동작을 확인하고 검증하기 위한 코드입니다. 주로 단위 테스트(Unit Test), 통합 테스트(Integration Test), 시스템 테스트(System Test) 등의 다양한 수준에서 작성됩니다. 테스트 코드는 소프트웨어의 안정성, 신뢰성, 유지보수성을 높이고, 코드 변경에 따른 부작용을 방지하는 데 도움이 됩니다. 테스트 코드의 주요 특징 및 장점: 신속한 버그 탐지: 테스트 코드를 사용하면 코드 변경 사항에 대한 영향을 빠르게 파악할 수 있으며, 버그를 더 신속하게 발견할 수 있습니다. 자동화된 테스트 실행: 테스트 코드를 자동으로 실행하여 수작업으로 테스트하는 시간과 비용을 절감할 수 있습니다. 문서화..
product 내가한 부분은 아니지만 코드를 보면서 공부해보기로 했다. productController @RestController @RequiredArgsConstructor @RequestMapping("/api/v2/products") public class ProductController { private final ProductService productService; // 상품 생성 엔드포인트 @PostMapping public ResponseEntity createProduct( @AuthenticationPrincipal UserDetailsImpl userDetails, @RequestPart("req") ProductCreateReq req, @RequestParam("upload") List fil..
쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요. 쿼리 최적화는 데이터베이스에서 쿼리의 실행 속도를 최대한 빠르게 만들기 위한 프로세스입니다. 쿼리 최적화를 통해 데이터베이스 성능을 향상시키고 응답 시간을 최소화할 수 있습니다. 아래는 쿼리 최적화를 위한 주요 방법과 설명입니다: 인덱스 사용: 데이터베이스에서 적절한 인덱스를 생성하면 쿼리의 검색 성능을 향상시킬 수 있습니다. WHERE 절이나 JOIN 절에서 사용되는 열에 인덱스를 생성하여 검색 속도를 최적화하세요. 쿼리 튜닝: 쿼리의 성능을 향상시키기 위해 쿼리 튜닝을 수행하세요. 불필요한 조인, 서브쿼리, 비효율적인 조건 등을 최적화하여 쿼리 실행 계획을 개선하세요. 통계 정보 갱신: 데이터베이스 엔진이 쿼리 실행 계획을 수립하는 데 사용하는 통계 정보는 정확해야 합니다. 주기적으로 통계 정보를 갱..
멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요. 멀티프로세스와 멀티쓰레드는 병렬 프로그래밍을 구현하는 데 사용되는 두 가지 기본적인 접근 방법입니다. 각각의 특징은 다음과 같습니다: 멀티프로세스: 독립성: 각 프로세스는 독립적인 메모리 공간을 가지고 실행되기 때문에 하나의 프로세스가 다른 프로세스에게 영향을 미치지 않습니다. 신뢰성: 하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스는 계속 실행될 수 있습니다. 자원 소모: 각 프로세스는 독립적인 메모리 공간을 사용하므로 메모리 소모가 크다. 프로세스 간 통신이 필요한 경우에는 별도의 IPC (Inter-Process Communication) 메커니즘이 필요하다. 생성 및 관리의 오버헤드: 프로세스 간 전환 및 생성에는 오버헤드가 발생하며, 자원을 할당하고 해제하는 것도 비용이 크다. 멀티쓰레..
image파일 업로드 할때 리사이징 적용하기 이미지 리사이징을 도입한 이유는 S3 프리티어 저장 공간이 90% 이상 차면서 이미지 관리의 필요성을 느꼈습니다. 서버에 저장된 이미지의 용량을 최적화하면 저장 공간을 효율적으로 활용할 수 있습니다. 효율적인 용량 관리는 비용 절감에 도움이 될 수 있습니다. 그리고 사용자들은 다양한 디바이스에서 중고거래 사이트를 이용합니다. 이미지를 리사이징하여 다양한 디바이스에서도 적절한 크기로 보여줄 수 있습니다. 단순하게 용량을 제한 하는것 만으로도 무지막지한 용량의 이미지를 차단할 수 있는 장점이 있었다. java.awt.Graphics2D, Imgscalr, Marvin 등 이미지 리사이징 라이브러리 사용 시 ,이미지IO와 변환과정에서 3mb이상의 이미지는 리사이징하는데 상당히 오랜 시간이 소요된다. 아래와 같..
프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요. 프로세스(Process)와 쓰레드(Thread)는 운영체제와 소프트웨어 개발에서 중요한 개념으로, 여러 작업을 동시에 수행하도록 하는 데 사용됩니다. 프로세스(Process): 정의: 프로세스는 실행 중인 프로그램을 의미하며, 메모리 공간, 코드, 데이터, 파일 등을 포함한 실행 환경을 갖추고 있는 독립적인 단위입니다. 특징: 각 프로세스는 독립된 메모리 공간을 가지고 있어 다른 프로세스의 영향을 받지 않습니다. 프로세스 간 통신이나 데이터 공유를 위해서는 별도의 메커니즘이 필요합니다. 프로세스 간 전환 시간이 존재하며, 이는 컨텍스트 스위칭(Context Switching)이라 불립니다. 프로세스는 각각 자신의 리소스를 관리하며, 프로세스 간 충돌이 발생해도 다른 프로세스에 영향을 미치지 않습니다. 쓰..
TDD에 대해서 설명해주세요. TDD, 또는 Test-Driven Development(테스트 주도 개발)는 소프트웨어 개발 방법론 중 하나로, 테스트가 코드 작성 전에 작성되는 개발 방식입니다. TDD는 간단한 반복 주기를 가지고 있으며, 주로 다음의 세 가지 단계로 구성됩니다: "Red(빨강)", "Green(초록)", "Refactor(리팩터)". Red(빨강): 개발자는 새로운 기능을 추가하거나 기존 코드를 수정할 때, 해당 기능을 테스트하는 테스트 케이스를 작성합니다. 이 테스트는 아직 통과하지 못할 것이므로 '빨강'이라는 표현을 사용합니다. Green(초록): 개발자는 테스트가 실패하는 코드를 작성하여 테스트를 통과시킵니다. 이 때 필요한 최소한의 코드만을 작성하여 테스트를 통과시키도록 노력합니다. 목표는 최소한의 코드로 ..