JAR(Java ARchive), WAR(Web Application Archive)의 개념과 차이
·
프로그래밍/Java
JAR(Java ARchive)와 WAR(Web Application Archive)는 Java 애플리케이션 배포에 사용되는 파일 형식으로, 각각의 개념과 차이점은 다음과 같습니다.1. JAR (Java ARchive)개념: JAR 파일은 일반적으로 Java 애플리케이션의 실행 파일로 사용됩니다. Java 애플리케이션의 클래스 파일과 리소스 파일(이미지, 프로퍼티 등)을 하나의 아카이브 파일로 묶어 배포할 수 있도록 합니다.사용 용도: JAR 파일은 독립 실행형 Java 애플리케이션에서 주로 사용됩니다. java -jar 명령어를 통해 독립적으로 실행될 수 있습니다.구조:META-INF/MANIFEST.MF: JAR 파일의 메타데이터를 포함한 매니페스트 파일로, 실행할 메인 클래스 정보를 포함할 수 있습..
Map 인터페이스의 사용
·
프로그래밍/Java
Map이란?Map 인터페이스는 Java의 컬렉션 프레임워크에서 키-값 쌍(key-value pair)을 저장하기 위한 구조를 제공합니다. Map 인터페이스의 주요 구현체로는 HashMap, TreeMap, LinkedHashMap 등이 있으며, 이들은 각기 다른 특성을 가지고 데이터를 저장하고 관리합니다.주요 메서드put(K key, V value): Map에 키와 값을 추가합니다. 동일한 키가 있으면 값을 덮어씁니다.get(Object key): 지정한 키의 값을 반환합니다.remove(Object key): 지정한 키에 대한 키-값 쌍을 제거합니다.containsKey(Object key): 지정한 키가 존재하는지 확인합니다.containsValue(Object value): 지정한 값이 존재하는지 ..
간단한 IDE 툴 만들기(Python)
·
프로그래밍/Python
IntelliJ나 vscode와 같은 개발IDE 툴 또한 프로그래밍 언어를 통해 개발되었기에흥미가 생겨 ChatGPT를 이용해 간단하게 IDE툴을 만들어보았다.실제 사용은 어렵기도 하고 할 필요도 없고 그냥 이런것도 가능하다 정도만 알면 될거같다.  simple_ide.pyimport tkinter as tkfrom tkinter import filedialog, messageboximport subprocessclass SimpleIDE: def __init__(self, root): self.root = root self.root.title("Simple IDE") self.root.geometry("800x600") # 코드 입력..
List와 ArrayList의 개념과 차이
·
프로그래밍/Java
1. List - 인터페이스List는 인터페이스로, 여러 종류의 리스트형 클래스들이 구현해야 할 메서드의 집합입니다.List 인터페이스는 순서를 유지하며, 중복 요소를 허용하는 컬렉션입니다.ArrayList, LinkedList, Vector 등이 List 인터페이스를 구현합니다.변수나 메서드의 다형성을 지원하기 위해 List를 사용하는 것이 일반적입니다. 예를 들어, ArrayList로 생성된 객체를 List 타입 변수에 할당할 수 있습니다.List myList = new ArrayList();이렇게 List 타입을 사용하면, 나중에 LinkedList나 다른 List 구현체로 쉽게 바꿀 수 있습니다.여기서 선언타입은 List인데 생성은 ArrayList로 하는 이유는 List가 인터페이스이기 때문에 ..
Dependency injection(DI)란?
·
프로그래밍/Java
DI(Dependency Injection)는 객체 지향 프로그래밍에서 객체 간의 의존성을 줄이고 결합도를 낮추기 위한 디자인 패턴입니다. Java에서는 주로 프레임워크(Spring 등)를 사용하여 DI를 구현하는데, 이는 객체 간의 의존 관계를 코드에서 명시적으로 만들지 않고 프레임워크가 자동으로 주입해 주는 방식입니다.DI의 개념DI는 객체 A가 객체 B를 직접 생성하지 않고, 외부에서 객체 B를 주입(inject)받는 방식입니다. 이렇게 하면 객체 간의 결합도가 낮아져 코드의 유연성과 재사용성이 높아집니다. DI의 주요 방식은 다음과 같습니다.Constructor Injection: 생성자를 통해 의존성을 주입Setter Injection: setter 메서드를 통해 의존성을 주입Field Inje..
@Controller와 @RestController의 차이
·
프로그래밍/Java
@Controller와 @RestController는 Spring MVC에서 사용되는 어노테이션이며, 주로 클라이언트로부터의 HTTP 요청을 처리하는 역할을 합니다. 이 둘의 차이는 데이터 응답 방식과 용도에서 나타납니다.1. @Controller주 목적: @Controller는 주로 **뷰(View)**를 반환하기 위해 사용됩니다. JSP, Thymeleaf 같은 템플릿을 이용하여 HTML 페이지를 생성하고 이를 클라이언트에게 반환할 때 사용됩니다.작동 방식: 메서드에서 반환된 값은 ViewResolver를 통해 해당 뷰 템플릿을 찾아 렌더링합니다. 그 후, 뷰를 클라이언트에게 반환합니다.주 용도: 서버 측 렌더링을 이용해 HTML 페이지를 클라이언트에게 제공할 때 유용합니다.@Controllerpub..
Portable Service Abstraction개념 활용 테스트 코드 작성
·
프로그래밍/Java
"Portable Service Abstraction"는 코드의 의존성을 낮추고, 테스트하기 어려운 부분을 모의(mock)할 수 있게 하여 테스트 가능성을 높이는 개념입니다. 특히 외부 시스템에 의존하는 코드를 테스트할 때 유용합니다.Portable Service Abstraction을 사용하면, 외부 서비스에 의존하는 코드가 인터페이스를 통해 추상화되어 의존성을 분리할 수 있습니다. 이는 실제 서비스 구현을 대신하여 가짜(mock) 구현을 사용하여 단위 테스트가 가능하게 합니다.1. 예시 시나리오: 외부 API 호출 코드의 추상화아래는 외부 날씨 API를 호출하는 서비스가 있을 때, 이를 Portable Service Abstraction으로 추상화하고, 테스트할 수 있게 하는 예시입니다.2. 예시 코..
PostgresSQL 관련 명령어
·
DB
Postgres DB접속psql -U username 현재 접속한 DB의 테이블리스트\dt 특정 테이블의 스키마\d your_table 현재DB의 스키마\dn  함수 목록\df 뷰 목록\dv 인덱스 목록\di 쿼리 출력 형식 변경\x기존확장 쿼리 실행 시간 출력\timing 사용자 및 권한 관련 명령어현재 데이터베이스의 사용자(roles) 리스트\du DB 리스트\l 특정 DB로 변경\c DB명
BeanFactory와ApplicationContext의 개념과 차이(스프링IOC)
·
프로그래밍/Java
1. BeanFactory와 ApplicationContext의 개념BeanFactory개념: BeanFactory는 Spring 프레임워크에서 기본적으로 제공하는 IoC (Inversion of Control) 컨테이너로, 빈의 생명주기(생성, 관리, 소멸)를 관리하고 의존성을 주입하는 역할을 합니다. BeanFactory는 필요할 때 빈을 생성하는 지연 로딩(lazy loading) 방식을 사용합니다.사용처: 메모리 사용을 최소화해야 하는 상황이나 경량 애플리케이션에서 사용되며, 부가적인 기능이 필요하지 않은 경우 적합합니다.ApplicationContext개념: ApplicationContext는 BeanFactory를 확장한 인터페이스로, BeanFactory의 모든 기능을 포함하면서 더 많은 부..
Python을 이용하여 youtube 크롤링(Google Cloud API활용)
·
프로그래밍/Python
필수 라이브러리 설치pip install google-api-python-client Google Cloud Platform에서 API 키 받기Google Cloud Console에 접속하여 프로젝트를 생성합니다.API 및 서비스 > 라이브러리로 이동한 후, YouTube Data API v3를 검색하여 활성화합니다.API 및 서비스 > 사용자 인증 정보로 이동하여 새 API 키를 생성합니다.발급받은 API키를 코드의 api_key에 넣어 실행from googleapiclient.discovery import buildimport pandas as pd# API 키 설정api_key = 'YOUR_API_KEY'# YouTube API 클라이언트 생성youtube = build('youtube', 'v3..
dinggul94
딩굴딩굴개발