전체 글 41

배열 (Array)

동일한 데이터 타입의 여러 데이터를 하나의 변수에 저장하며 각 요소는 인덱스를 통해 접근 장점 고정된 크기: 배열은 선언할 때 크기를 정해야 하므로 메모리 관리가 용이하며 크기가 변경되지 않기 때문에 오버헤드가 적음 빠른 접근: 메모리 공간이 연속적이고 물리주소와 논리주소가 동일하므로 인덱스를 사용하여 요소에 직접 접근하기 때문에 빠름 (인덱스를 사용할 수 있어 시간복잡도(Time Complexity)가 O(1) 임) 단점 고정된 크기: 크기를 변경하기 어렵고 요소를 추가하거나 제거하려면 새로운 배열을 생성하고 기존 데이터를 복사해야 하므로 새로운 배열을 이동시키는데에는 O(n)의 시간복잡도가 소요됨 메모리 낭비: 배열은 크기를 미리 정해야 하므로 필요한 메모리보다 많은 메모리를 할당할 수 있음 인덱스 ..

자료구조 (Data Structure)

데이터 값의 모임으로, 데이터를 효율적으로 저장하고 조직화하며, 데이터에 대한 접근과 수정을 효율적으로 수행하기 위한 방법이나 구조 단순구조 (Primative Struecture) 정수(Integer) 실수(Float) 문자(Character) 문자열(Pointer) Boolean 비단순구조 (Non-Primative Struecture) 선형 구조(Linear Structure): 순차리스트(ArrayList), 연결리스트(Linked List)(단순 연결리스트, 이중 연결 리스트, 원형 연결 리스트), 스택, 큐, 덱 비선형 구조(Non-Linear Structure) 파일 구조(File Structure) 비단순구조 (Non-Primative Struecture) 선형 구조(Linear Struc..

ORM (Object-Relational Mapping)

객체와 관계형 데이터베이스 간의 매핑을 자동화하는 프로그래밍 기법 개발자가 직접 SQL 쿼리를 작성하지 않고도 객체 지향 코드에서 관계형 데이터베이스에 접근 객체-관계 매핑: ORM은 개체와 테이블 간의 매핑을 제공합니다. 클래스를 테이블로, 객체를 레코드로, 속성을 열로 매핑하여 개체 모델과 데이터베이스 스키마 간의 일치를 달성 CRUD 작업: ORM은 생성(Create), 조회(Read), 갱신(Update), 삭제(Delete) 작업에 대한 추상화 계층을 제공하여 개발자가 데이터베이스와 상호작용할 때 객체 지향적인 인터페이스를 사용할 수 있도록 함 지연 로딩 및 즉시 로딩: ORM은 연관된 객체들을 필요한 시점에 로드하는 지연 로딩(Lazy Loading)과 한 번에 모든 연관된 객체들을 즉시 로드..

learn/framework 2023.09.22

Spring

Java 기반의 오픈 소스 애플리케이션 프레임워크로, 엔터프라이즈급 애플리케이션을 빌드하기 위한 다양한 모듈과 기능을 제공 IoC 컨테이너 (Inversion of Control Container) IoC 컨테이너는 객체의 생성, 의존성 주입 및 라이프사이클 관리를 담당 @Component, @Service, @Repository 등의 어노테이션을 사용하여 클래스를 Bean으로 등록하고, 의존성 주입(Dependency Injection)을 통해 객체 간의 관계를 설정 @Component public class MyService { private final MyRepository repository; @Autowired public MyService(MyRepository repository) { thi..

learn/framework 2023.09.22

REST API (Representational State Transfer API)

HTTP 프로토콜을 기반으로 자원을 표현하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 상호 작용을 수행 REST API의 핵심은 자원(데이터 또는 서비스)을 고유하게 식별하는 이며 각 자원은 고유한 URI(Uniform Resource Identifier)를 가짐 GET: 자원을 조회하거나 가져올 때 사용 POST: 새로운 자원을 생성하거나 데이터를 제출할 때 사용 PUT: 자원을 업데이트 또는 수정할 때 사용 DELETE: 자원을 삭제할 때 사용 REST API는 상태 정보를 전달하지 않으며, 각 요청은 모든 필요한 정보를 포함해야 함 서버와 클라이언트 간의 상태를 공유하지 않고 통신할 수 있음 JAX-RS(Java API for RESTful Web Se..

learn/web services 2023.09.22

Java Web Service AP

웹 서비스를 개발하기 위한 Java 플랫폼의 API(응용 프로그래밍 인터페이스) 모음. 다른 응용 프로그램과 통신하고 데이터를 교환하는 데 사용 JAX-RPC(Java API for XML-based RPC) Java 언어를 사용하여 원격 프로시저 호출(RPC)을 위한 웹 서비스를 개발하는 데 사용되는 API import javax.jws.WebMethod; import javax.jws.WebService; @WebService public interface HelloWorld { @WebMethod String sayHello(String name); } import javax.jws.WebService; @WebService(endpointInterface = "com.example.HelloWor..

learn/web services 2023.09.22

SOAP (Simple Object Access Protocol)

SOAP (Simple Object Access Protocol) 웹 서비스 간의 통신을 위한 프로토콜 SOAP는 플랫폼 및 언어에 독립적이며, XML을 사용하여 데이터를 교환하는 기술 주로 웹 서비스에서 사용되며, 클라이언트와 서버 간의 표준화된 메시지 전달 방식을 제공 ... ... ... Envelope: 모든 SOAP 메시지의 최상위 요소로, 메시지를 감싸는 역할 Header: 선택적 요소로, 메시지의 부가적인 정보를 포함 Body: 메시지의 실제 데이터를 포함 Fault: 오류 발생 시 오류 정보를 포함 import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBodyElement;..

learn/web services 2023.09.22

Struts

Java 웹 애플리케이션을 개발하기 위한 MVC (Model-View-Controller) 아키텍처를 기반으로 하는 웹 프레임워크 자바 웹 애플리케이션의 개발과 유지 보수를 더 쉽게 만들어주며 웹 애플리케이션의 구조화와 확장성을 향상 Model: 데이터 처리를 담당하는 부분으로 비즈니스 로직 View: 사용자에게 정보를 표시하는 부분으로 주로 JSP (JavaServer Pages)를 사용 Controller: 사용자 요청을 처리하고 Model과 View 간의 흐름을 제어하는 부분 액션(Action) 클래스를 사용하여 클라이언트 요청을 처리하고, 액션 폼(Action Form) 클래스를 통해 사용자 입력을 처리 Struts의 핵심 아이디어는 요청에 따라 액션 클래스가 실행되고 결과를 특정 JSP 페이지에..

learn/framework 2023.09.22

빌더 (Builder)

빌더 패턴은 객체를 생성할 때 복잡한 초기화 과정을 단순화하고 가독성을 향상 객체의 생성과 객체의 구성을 분리하여 객체를 생성하는 과정을 보다 유연하게 만들어줌 객체에 많은 속성이 존재하고 이를 설정하는 것이 복잡한 경우에 사용 복잡한 객체의 생성을 단계적으로 진행 클라이언트 코드에서는 객체의 구성 단계를 명확하게 파악하고 원하는 속성만 설정 // Person 클래스 public class Person { private String firstName; private String lastName; private int age; private String address; private Person() {} // 생성자는 private로 숨겨둠 public static class Builder { privat..

팩토리 (Factory)

객체 생성을 처리하기 위한 디자인 패턴 중 하나로, 객체를 생성하는 코드를 캡슐화하고 클라이언트 코드로부터 객체 생성 로직을 분리하는데 사용 객체 생성을 추상화하며, 클라이언트는 어떤 구체적인 클래스의 인스턴스를 생성하는지에 대한 세부 정보를 알 필요가 없음 Factory (공장) 인터페이스 또는 추상 클래스: 객체를 생성하기 위한 메서드를 정의 Concrete Factories (구체적인 공장 클래스): Factory 인터페이스를 구현하여 객체를 실제로 생성하는 클래스 Product (제품) 인터페이스 또는 추상 클래스: 공장이 생성할 객체의 유형을 정의 Concrete Products (구체적인 제품 클래스): Product 인터페이스를 구현하여 실제 객체를 나타냄 // 1. Product 인터페이스..