분류 전체보기 67

팝업창 해상도 상관없이 컨텐츠 너비/높이

팝업창 띄울시, 부모창에서 width, height를 지정하지 않고 자식창의 너비/높이에 따라 자동 조정되도록 함 요소 너비/높이 속성 (모두 Margin 요소 미포함)offsetWidth : 요소의 전체 너비 사용 ( Boarder 까지 요소의 너비/높이 + 스크롤바 )clientWidth : 스크롤바를 제외한, 요소의 내부 너비 ( Padding 까지의 요소의 너비/높이 - 스크롤바 제외 )scrollWidth : 스크롤바를 포함한 요소 내부 너비 ( Padding 까지의 요소의 너비/높이 + 스크롤바 포함 )width : 요소의 순수한 크기 (content width)innerWidth : width + paddingouterWidth : width + padding + border부모창 : wid..

HTML, CSS, JS 2025.02.10

UBUNTU lightsail에 war 파일 배포하는 방법(+MySQL 원격설정 +서비스 항상실행)

※ apt 저장소 다운로드 및 서버 업데이트 1. apt 저장소 업데이트$ sudo apt update2. 우분투 서버 업데이트$ sudo apt-get update (1) JDK-21 다운로드 □ apt 저장소에서 받는 방법apt install openjdk-21-jre-headless -y □ 아카이브에서 받는 방법 아카이브에서 원하는 버전의 다운로드 링크 가져온 후 다운로드 - tar xvfz 등으로 압축풀기 필요  - https://jdk.java.net/archive/sudo wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz   (2) 톰..

서버 2025.02.04

AOP (작성중)

정의□ AOP aspect oriented(관점지향) 프로그래밍, "어떤 로직"을 기준으로 핵심적인 관점(비즈니스 로직) 부가적인 관점(실행시간 측정, 트랜잭션, 로깅)을 기준으로 각각 모듈화 하겠다 □  흩어진 관심사 각 클래스에서 반복되는 기능 흩어진 관심사를 Aspect로 모듈화 하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 목적      출처 : https://steady-coding.tistory.com/608#AOP%EB%9E%80? [Spring] AOP와 JDK Dynamic Proxy, CGLIBspring-study에서 스터디를 진행하고 있습니다. AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 뜻한다. 관점 ..

SPRING 2025.01.31

Entity·DTO·VO와 사용범위, 변환방법

- EntityEntity 클래스는 실제 DB 테이블과 매핑되는 클래스데이터베이스 영속성의 목적으로 사용되는 객체이며, 때문에 요청(Request)이나 응답(Response) 값을 전달하는 클래스로 사용하는 것은 좋지 않다.서비스 클래스와 비즈니스 로직들이 Entity 클래스를 기준으로 동작하기 때문에 Entity 클래스가 변경되면 여러 클래스에 영향을 줄 수 있다   영속성이 있는 특징으로 Constructor(생성자) 또는 Builder를 사용한다      - 생성자(Constructor)를 이용해서 초기화하는 경우 불변 객체로 활용      -  Builder를 사용하면 멤버 변수가 많아지더라도 어떤 값을 어떤 필드에 넣는지 코드를 통해 확인할 수 있고        , 필요한 값만 넣는 것이 가능하..

SPRING 2025.01.11

Map.Entry와 Map.getKey 차이

일반적인 Map 사용char[] input = "bbbaa".toUpperCase().toCharArray();Map map = new HashMap();for (Character c : input) { int cnt = 0; for (char i : input) { if(c == i) cnt++; } map.put(c, cnt);} map.entry 를 사용하지 않을 때 keySet을 반복하고, Map.get으로 해당 값을 얻는다.for (Character c : map.keySet()) { System.out.println("c = " + c + "=" + map.get(c));} 결과c = A=3 c = B=2map.entry 를 사용하였을 때 key-valu..

JAVA 2024.12.29

Spring Bean과 빈 조회하기

ApplicationContext① 스프링 컨테이너(ApplicationContext, 객체를 담아두는 컨테이너) 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);(※ AnnotationConfig ApplicationContext : 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너 생성.     ApplicationContext의 구현체이다) ② 스프링 빈 등록(1) @Configuration 으로 클래스를 구성 정보 지정(2) (1)에 @Bean 등록 (3) (1)의 구성정보를 활용하여 스프링 컨테이너 안, 스프링 빈 저장소에 스프링 빈 ((2)의 "빈 이름"과 "빈 객..

SPRING 2024.12.25

중첩 클래스

중첩 클래스 종류정적 중첩 클래스 : 정적 중첩 클래스는 바깥 클래스의 안에 있지만 바깥 클래스와 관계 없는 전혀 다른 클래스내부 클래스 : 바깥 클래스의 내부에 있으면서 바깥 클래스의 인스턴스에 소속되는 클래스내부 클래스 : 바깥 클래스의 인스턴스 멤버에 접근지역 클래스 : 내부 클래스 특징 + 지역 변수에 접근익명 클래스 : 지역 클래스 특징 + 클래스 이름이 없음 사용하는 이유논리적 그룹화 : 특정 클래스가 다른 클래스 안에서만 사용되는 경우(다른 곳에서 사용될 필요가 없을 때)캡슐화 : 중첩 클래스는 바깥 클래스의 private 멤버에 접근이 가능, 바깥 클래스와의 긴밀하게 연결하고 불필요한 public 삭제 정적 중첩 클래스public class NestedOuter { private st..

JAVA 2024.12.22

ApplicationContext(스프링 컨테이너)가 작동하는 과정

(1) 스프링 컨테이너는 @Configuration이 붙은 클래스를 설정(구성) 정보로 사용한다.외부 @Configuration으로 등록된 클래스에서 @Bean 으로 객체정보를 스프링 컨테이너에 등록.이렇게 등록된 객체를 스프링 빈이라고 한다.※ 스프링 빈은 @Bean 이 붙은 메서드의 이름을 스프링 빈의 이름으로 사용한다. (아래는 getDiscountPolicy가 스프링 빈 이름이 된다) @Bean(name="abc") 와 같이 셋팅할 수 있지만, 관례상 디폴트 네임을 사용한다.@Configuration // 구성 정보(설정 정보)public class AppConfig { @Bean // 스프링컨테이너에 등록 public static DiscountPolicy getDiscountPol..

SPRING 2024.12.22

IoC, DI와 컨테이너

IoC(Inversion of Control)프로그램의 제어 흐름을 사용자가 직접 제어하는 것이 아니라외부(프레임워크)에서 관리하는 것을 제어의 역전이라고 한다. DI를 가능하게 하는 기반 기술 『스프링이 제어의 역전을 구현하는 방법』스프링 프레임워크에서는 ApplicaionContext가 이 역할을 담당하며, @ComponentScan annotation은 지정된 패키지 내의 @Component annotation이 붙은 클래스를 자동으로 스캔하고 빈으로 등록한다. ※ 프레임워크 vs 라이브러리  " 프레임워크는 "프레임"이라는 말처럼 틀을 만들어두고 개발자로 하여금 사용 방법을 강제하는 것에 반해, 라이브러리는 개발자가 좀 더 자유롭게 사용할 수 있는 코드 조각 모음이다." -  프레임워크가 내가 작..

SPRING 2024.12.22