전체 글 678

[Linux] 소프트웨어 관리 명령어 정리(파일 압축, RPM, YUM)

파일 압축과 풀기 tar(Tape ARchiver)tar [파일과 디렉터리들] … : 하나의 파일로 묶기tar tvf [test.tar]: 묶여 있는 파일 미리보기tar xvf [test.tar] -C /tmp : test.tar를 /tmp에 풀기x: 파일 풀어줌, C: 풀릴 위치 지정rm -rf test.tar: tar 파일 제거star 명령어: 복사/이동 시 보안 콘텍스트 유지되게 원래 속성 유지GNU zipgzip [/root/install.log]: 파일 압축gzip -d [/root/install.log.gz]: 압축 파일 풀기gzip -r [/root]: 해당 디렉터리의 모든 파일/디렉터리 각각 압축 bzip2: gzip 보다 압축률 좋음   RPM RedHat Package Manager: ..

DEVOPS/LINUX 2024.07.30

[Linux] 관리자 명령어 - 파일시스템 보안

파일시스템 보안 명령어 정리 chroot: 어느 디렉터리를 가상의 최상위 / 디렉터리로 만들어 cd .. 했을 때 더이상 상위 디렉터리로 이동 못하게chcon: 파일 B의 보안설정이 파일 A의 보안설정과 동일하게 설정되도록chattr: 속성 변경+i : 파일 속성 변경, 추가, 삭제 등 불가lsattr: 속성 보기SetUID: 파일의 소유자 권한으로 파일을 실행chmod 명령어 뒤에 4xxx를 붙이면 설정됨setGID: 파일을 소유한 그룹의 권한으로 파일을 실행sticky bit: 이 비트가 설정된 디렉토리는 공용 디렉토리가 되지만, 파일을 소유한 사용자만 그 파일을 삭제하거나 수정할 수 있음IPC(Inter-Process Communication): 서로 다른 프로세스 간에 데이터를 주고받거나 통신을 ..

DEVOPS/LINUX 2024.07.30

[MySQL] 프로시저, 이벤트 스케줄러 만들기

프로시저란?어떠한 동작을 일괄 처리하기 위한 쿼리문의 집합으로, MySQL에서의 메서드라고 보면 된다. 함수처럼 매개변수를 받고 그에 따라 결과를 나타내는 것이 가능하다.SQL 명령의 묶음으로, 프로시저로 묶인 SQL 문 질의들은 처리될 때 하나의 쿼리로 해석된다.  프로시저 사용법DELIMITER //CREATE PROCEDURE 프로시저명(매개변수)BEGIN SQL 문1; SQL 문2;END//DELIMITER ; "DELIMITER //" 을 선언해서 기존 구분 문자인 ";" 에서 "//"로 바꿔준다.CREATE PROCEDURE로 프로시저를 등록한다.프로시저 등록을 마친 후 "DELIMITER ;"을 통해 다시 구분 문자를 ";"으로 바꿔준다. call 프로시..

DB 2024.06.01

[JAVA] 자바 메모리 구조와 static

자바 메모리 구조 메서드 영역: 클래스 정보 보관스택 영역: 실제 프로그램이 실행되는 영역힙 영역: 객체(인스턴스가 생성되는 영역) (new 키워드) 메서드 영역클래스 정보를 보관하는 영역 클래스 정보 - 클래스, 메서드 등의 실행 코드 static 영역 - static 변수 보관상수 풀 - 상수 관리 스택 영역실제 프로그램이 실행되는 영역 지역 변수, 중간 연산 결과, 메서드 호출 정보 등 힙 영역인스턴스가 생성되는 영역 객체 배열가비지 컬렉션이 이뤄지는 영역  같은 클래스에서 생성된 객체여도 인스턴스 내부 변수 값은 다를 수 있지만 메서드는 공통된 영역을 공유한다.따라서 메서드는 메서드 영역에서 공통으로 관리되고 실행된다. 멤버 변수(필드)의 종류 인스턴스 변수static이 붙지 않은 멤버 변수인스턴..

BACK/JAVA 2024.05.16

[Spring] AOP를 이용한 Request 로깅

AOP 개념에 관한 이전 포스팅https://yeoncoding.tistory.com/732 [Spring] AOP란Spring AOP 관점 지향 프로그래밍(AOP-Aspect Oriented Programming) AOP는 관점을 기준으로 묶어 개발하는 방식을 말한다. 관점(aspect)이란, 어떤 기능을 구현할 때 그 기능을 핵심 기능과 부가 기능으로 구분yeoncoding.tistory.com  AOP(Aspect-Oriented Programming)를 이용하여 HTTP 요청과 응답을 로깅했습니다. package contest.collectingbox.global.config;import jakarta.servlet.http.HttpServletRequest;import lombok.extern...

BACK/SPRING 2024.05.05

[Spring] @ExceptionHandler를 사용해 예외 처리하기

스프링은 API 예외 처리 문제를 해결하기 위해 @ExceptionHandler를 사용한 편리한 예외 처리 기능을 제공한다. 다음은 진행하고 있는 프로젝트에 @ExceptionHandler를 적용한 코드이다. @Getter @AllArgsConstructor public enum ErrorCode { // 400 NOT_SELECTED_TAG(BAD_REQUEST, "수거함 태그는 반드시 한 개 이상 설정해야 합니다."); // 404 // 409 // 500 private final HttpStatus httpStatus; private final String message; } enum 클래스를 만들어 상태 코드와 메세지를 담은 열거형을 정의한다. @Getter public class Collecti..

BACK/SPRING 2024.04.18

[JPA] 객체지향 쿼리 언어 JPQL 기본 문법

기본 문법과 쿼리 API TypedQuery, QueryMember member = new Member();member.setUsername("member1");member.setAge(10);em.persist(member);TypedQuery query1 = em.createQuery("select m from Member m", Member.class);TypedQuery query2 = em.createQuery("select m.username from Member m", String.class);Query query3 = em.createQuery("select m.username, m.age from Member m"); // 타입 정보를 받을 수 없을 때  결과 조회 APIMember si..

BACK/JPA 2024.04.08

[JPA] JPQL -중급 문법 (경로 표현식, 패치 조인, Named 쿼리, 벌크 연산)

경로 표현식 .을 찍어 객체 그래프를 탐색하는 것  상태 필드: 경로 탐색의 끝, 탐색 XString query = "select m.username from Member m"; // m.username까지가 탐색의 끝 단일 값 연관 경로: 묵시적 내부 조인(inner join) 발생, 탐색 OString query = "select m.team.name from Member m"; m.team을 했을 때 join 쿼리가 나간다.실제 실무에서는 묵시적 내부 조인을 쓰면 안된다.  컬렉션 값 연관 경로: 묵시적 내부 조인 발생, 탐색 XString query = "select t.members from Team t"; // members 이후에 탐색 불가능하다.컬렉션 자체를 가리키기 때문이다.size정도..

BACK/JPA 2024.04.07

[JPA] TIL 9일차 - JPA 의 다양한 쿼리 방법(JPQL, JPA Criteria, QueryDSL 등)

JPA는 다양한 쿼리 방법(JPQL, JPA Criteria, QueryDSL...)을 지원한다.대부분 jpql로 해결이 되지만, 어쩌다 안될 경우에는 네이티브 SQL이나 MyBatis, SpringJdbcTemplate를 쓰면 된다.  JPQL 소개 JPA를 사용하면 엔티티 객체를 중심으로 개발하게 되고, 검색할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색한다.이 때 모든 데이터베이스를 메모리에 올려 객체로 변환해 검색하는것은 말이 안된다. 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 있는 SQL이 필요하다.이런 문제를 해결하기 위해 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다. SQL은 DB 테이블을 대상으로 쿼리하는 반면, JPQL은 엔티티 객..

BACK/JPA 2024.04.05

[JPA] TIL 8일차 : JPA 고급 매핑 - 상속 관계 매핑

관계형 데이터베이스는 상속 관계가 없다. 대신 슈퍼타입 서브타입이라는 모델링 기법이 객체 상속과 유사하다. 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑해 상속관계를 매핑한다. 슈퍼 타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 - 각각 테이블로 변환 : 조인 전략 - 통합 테이블로 변환 : 단일 테이블 전략 - 서브타입 테이블로 변환: 구현 클래스마다 테이블 전략 조인 전략 필요한 테이블을 조인해 가져옴 @Inheritance(strategy = InheritanceType.JOINED) @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn // dtype 컬럼이 생기고 기본 값으로는 엔티티 명..

BACK/JPA 2024.04.04