본문 바로가기

분류 전체보기837

PSA(Portable Service Abstraction) PSA란? PSA는 Portable Service Abstraction의 약자이다. 서로 다른 기술과 환경에서 일관된 방식으로 서비스를 구성할 수 있도록 도와주는 개념이다. PSA의 등장 배경 서로 다른 기술과 환경에서 소프트웨어를 개발하거나 관리할 때, 각각의 기술마다 다양한 설정, API 등 다루어야 하는 게 많아 코드가 복잡해지고 유지보수가 어려워진다. PSA는 이런 문제를 해결하기 위해 등장 했고, PSA를 통해 일관된 방식으로 다양한 기술과 환경을 다룰 수 있으며, 이를 통해 코드의 가독성과 유지보수성을 향상시켰다. Spring에서 PSA가 적용된 곳 데이터 액세스 : JDBC, JPA, Hibernate 등 데이터 액세스 기술을 일관된 방식으로 사용할 수 있도록 PSA를 제공한다. DataSo.. 2023. 8. 30.
IoC/DI IoC란? IoC란 Inversion of Control의 약자로, 제어의 역전의 의미를 가진다. 일반적으로 컴퓨터 프로그램의 제어 흐름을 개발자가 제어하지만, IoC 패턴을 적용하면 프레임워크가 프로그램의 제어 흐름을 제어합니다. 이를 IoC라고 합니다. IoC의 장단점 컨테이너가 직접 객체를 생성/관리 하기 때문에 코드에 객체를 선언하지 않아도 주입만 시켜주면 된다. → 클래스간 결합도가 줄어든다. DI를 통한 IoC라면, 해당 서비스 객체를 여러 곳에서 재사용할 수 있게 된다. DI란? DI는 Dependency Injection의 약자로, 의존성 주입이라는 의미를 가진다. Di는 객체가 자신이 사용하는 의존성을 직접 생성하거나 결정하지 않고 외부에서 주입받도록 하는 패턴이다. DI의 장단점 의존성.. 2023. 8. 30.
백준 2309 2309번: 일곱 난쟁이 문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. 입력 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. 출력 일곱 난쟁이의 키를 오름차순으로 출력.. 2023. 8. 26.
백준 2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 제한 시간 제한 : 2초 메모리 제한 : 192MB 문제 풀이 과정 N의.. 2023. 8. 25.
JDBC JDBC란? JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속하고 관리하기 위한 API이다. JDBC를 사용하면 다양한 데이터베이스 시스템에 대해 일관된 방식으로 데이터베이스에 접속하고 데이터의 CRUD 작업을 수행할 수 있습니다. 자바 CRUD 예제 import java.sql.*; public class JDBCCrudExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb"; String username = "username"; String password = "password"; try { // 1. 데이터베이스에 연결 Connection c.. 2023. 8. 24.
가상 머신(스택 기반, 레지스터 기반) 가성 머신 가상 머신(VM : Virtual Machine)은 물리적인 CPU에 의해 처리되는 동작을 흉내낼 수 있어야 한다. 실제 하드웨어와 유사한 환경을 소프트웨어로 구현한 것이다. 이를 통해 여러 운영체제나 응용 프로그램등을 물리적 하드웨어상에서 실행하는 것처럼 실행할 수 있다. 가상 머신은 호스트 머신(실제 물리적 하드웨어) 위에서 동작하며, 각 가상 머신은 독립적으로 실행되는 것 처럼 보이지만, 실제로는 호스트 머신의 자원을 공유한다. 가상 머신은 아래의 개념을 구현해야 한다. 소스 코드를 VM이 실행할 수 있는 바이트코드로 변환 명령어와 피연산자를 포함하는 데이터 구조 함수를 실행하기 위한 콜스택 다음 실행할 명령어를 가리키는 IP(Instruction Pointer) 가상 CPU Fetch .. 2023. 8. 24.