반응형
환경
AWS t2.micro CentOS (x86_64

 

 

 

 

필수 명령어들 요약
  • ls - 현재 위치의 파일 목록 조회
  • cd - 디렉터리 이동
  • touch - 0바이트 파일 생성, 파일의 날짜와 시간을 수정
  • mkdir - 디렉터리 생성
  • cp - 파일 복사
  • mv - 파일 이동
  • rm -  파일 삭제
  • cat - 파일의 내용을 화면에 출력, 리다이렉션 기호("<")를 사용하여 새로운 파일 생성
  • redirection - 화면의 출력 결과를 파일로 저장
  • alias - 자주 사용하는 명령어들을 별명으로 정의하여 쉽게 사용할 수 있도록 설정

 

명령어 옵션과 설명
        1. ls -  현재 위치의 파일 목록 조회
          • ls -l : 파일의 상세정보
          • ls -a : 숨김 파일 표시
          • ls -t : 파일들을 생선시간순(제일 최신것부터)으로 표시
          • ls -rt : 파일들을 생성시간순(제일 오래된 것부터)으로 표시
          • ls -f : 파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시("/" : 디렉터리, "*": 실행파일, "@": 링크 등등)
        2. cd - 디렉터리 이동
          • cd ~  : 홈 디렉터리로 이동
          • cd / : 최상위 디렉터리로 이동
          • cd . : 현재 디렉터리
          • cd .. : 상위 디렉터리로 이동
          • cd - : 이전 디렉터리로 이동
        3. touch - 0바이트 파일 생성, 파일의 날짜와 시간을 수정
          • touch filename  : filename의 파일을 생성
          • touch -c filename : filename의 시간을 현재시간으로 갱신
          • touch -t 202110291608 filename : filename의 시간을 날짜정보(YYYYMMDDhhmm)로 갱신
          • touch -r oldfile newfile : newfile의 날짜 정보를 oldfile의 날짜 정보와 동일하게 변경
        4. mkdir - 디렉터리 생성
          • mkdir dirname : dirname이라는 디렉터리 생성
          • mkdir dir1 dir2 : 한 번에 여러 개의 디렉터리 생성
          • mkdir -p dirname/sub_dirname : dirname이라는 디렉터리 생성, sub_dirname이라는 하위 디렉터리도 생성
          • mkdir -m 700 dirname : 특정 퍼미션(권한)을 갖는 디렉터리 생성
          <파일의 퍼미션>
          8진수 2진수 권한 의미
          0 000 --- 아무 권한 없음
          1 001 --x 실행 권한만 있음
          2 010 -w- 쓰기 권한만 있음
          3 011 -wx 쓰기, 실행 권한 있음
          4 100 r-- 읽기 권한만 있음
          5 101 r-x 읽기, 실행 권한 있음
          6 110 rw- 읽끼, 쓰기 권한 있음
          7 111 rwx 모든 권한 있음
        5. cp - 파일 복사
          • cp file1 file2 : file1 파일을 file2 이라는 파일로 복사
          • cp -f file1 file2 : 강제 복사(file2라는 파일이 이미 있을 경우 강제로 기존 file2를 지우고 복사 진행)
          • cp -r dir1 dir2 : 디렉터리 복사, 폴더 안의 모든 하위 경로와 파일들을 복사
        6. mv - 파일 이동
          • mv file1 file2 : file1 파일을 file2 이라는 파일로 변경
          • mv file1 /dir : file1 파일을 dir 디렉터리로 이동
          • mv file1 file2 /dir : 여러 개의 파일을 dir 디렉터리로 이동
          • mv /dir1 /dir2 : dir1 디렉터리를 dir2 디렉터리로 이름 변경
        7. rm - 파일 삭제
          • rm file1 : file1을 삭제
          • rm -f file1 : file1을 강제 삭제
          • rm -r dir : 디렉터리 삭제 (디렉터리는 -r 옵션 없이 삭제 불가)
        8. cat - 파일의 내용을 화면에 출력, 리다이렉션 기호 ('>)를 사용하여 새로운 파일 생성 
          • cat file1 : file1의 내용을 출력
          • cat file1 file2 : file1과 file2의 내용을 출력
          • cat file1 file2 | more : file1과 file2의 내용을 페이지별로 출력
          • cat file1 file2 | head : file1과 file2의 내용을 처음부터 10번째 줄까지만 출력
          • cat file1 file2 | tail : file1과 file2의 내용을 끝에서부터 10번째 줄까지만 출력
        9. redirection ('>','>>') : 화면의 출력 결과를 파일로 저장
          • '>' : 기존에 있는 파일 내용을 지우고 저장
          • '>>' : 기존 파일 내용 뒤에 덧붙여서 저장
          • '<' : 파일의 데이터를 명령에 입력
          • cat file1 file2 > file3 : file1, file2의 명령 결과를 합쳐서 file3라는 파일에 저장
          • cat file4 >> file3 : file3에 file4의 내용을 추가
          • cat < file1 : file1의 결과를 출력
          • cat < file1 > file2 : file1의 출력결과를 file2에 저장
        10. alias - 자주 사용하는 명령어들을 별명으로 정의하여 쉽게 사용할 수 있도록 설정
          • alias 별명 = '명령어 정의'  (ex) alias lsa = 'ls -a' : lsa를 실행하면 -a의 옵션을 갖는 ls를 실행합니다.
          • unalias lsa : lsa라는 alias를 해제
        11. find - 파일 찾기
          • find [찾고자 하는 디렉터리] -name "[키워드"] : 이름으로 찾기
          • find [찾고자 하는 디렉터리] -user "[키워드"] : 유저로 찾기
          • find [찾고자 하는 디렉터리] -size "[키워드]" : 사이즈로 찾기
          • (find /home -name ".conf") -exec 명령어{}\;

<find 예시>

## /etc 내 .conf로 끝나는 모든것 찾기
find /etc -name "*.conf"

## /home 디렉터리에서 특정 유저의 파일들 보기 (user 이름이 centos 가정)
find /home -user centos

## usr/bin 디렉터리에서 사이즈가 10k byte이상, 100k byte 이하인 파일 찾기
find /usr/bin -size +10K -size -100K

## usr/bin 디렉터리에서 사이즈가 10k byte이상, 100k byte 이하인 파일 찾고 ls -l 실행
find /usr/bin -size +10K -size -100K -exec ls -l {} \;

 

 

출처

https://cocoon1787.tistory.com/717 

 

[Linux] 리눅스 기본 명령어 정리

🚀 프로젝트를 진행하다 보면 서버를 띄우면서 혹은 다른 작업들을 하면서 리눅스 명령어를 써야 할 일이 많이 생기는 것 같습니다. 그럴 때마다 명령어를 검색해보면서 정보를 찾는데 매번 찾

cocoon1787.tistory.com

 

https://ansan-survivor.tistory.com/429 

 

[CentOS 7] 리눅스 파일 찾기 활용법, 파일 검색 find 명령어

사용법 이름으로 찾기 : find [찾고자 하는 디렉터리] -name "[키워드]" 유저로 찾기 : find [찾고자 하는 디렉터리] -user "[키워드]" 사이즈로 찾기 :find [찾고자 하는 디렉터리] -size "[키워드]" 찾고 다

ansan-survivor.tistory.com

 

 

감사합니다.

 

반응형

'Linux > 명령어' 카테고리의 다른 글

tar 압축하기, 압출풀기 명령어  (0) 2023.01.15
Linux : User관리, 권한 명령어 정리  (0) 2022.04.09
반응형
JPA(Java Persistence API) 란?

자바 진영의 ORM 기술표준으로, 인터페이스의 모음이다.  ※ 출처참조

 

 

환경
IntelliJ IDEA Ultimate 2021. 3. 2
Gradle 7.4.1
MySQL 5.7

 

 

 

 

Build.gradle 의존성 추가
dependencies {
      implementation 'mysql:mysql-connector-java'
      implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
 }

 

 

application.properties에 DB 정보 입력
# MySQL 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# DB Source URL
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/Schema?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul

#DB Username
spring.datasource.username=<username>

#DB Password
spring.datasource.password=<password>

#true 설정시 JPA 쿼리문 확인 가능
spring.jpa.show-sql=true

#DDL(Create, Alter, Drop) 정의시 DB의 고유 기능을 사용할 수 있다.
spring.jpa.hibernate.ddl-auto=update

# JPA의 구현체인 Hibernate가 동작하면서 발생한 SQL의 가독성을 높여준다.
spring.jpa.properties.hibernate.format_sql=true

spring.jpa.hibernate.ddl-auto=[]

  • create : 기존 테이블을 삭제하고 새로 생성 [ Drop + Create ]
  • create-drop : Create 속성에 추가로 어플리케이션을 종료할 때 생성한 DDL을 제거 [ Drop + Create + Drop]
  • update : DB 테이블과 엔티티 매핑 정보를 비교해서 변경 사항만 수정 [ 테이블이 없을 경우 Create ]
  • validate : DB 테이블과 엔티티 매핑정보를 비교해서 차이가 있으면 경고를 남기고 어플리케이션을 실행하지 않음
  • none : 자동 생성 기능을 사용하지 않음

 

 

JPA Entity 생성?
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table (name ="tbl_memo") // 클래스명과 테이블명이 다를때 매핑시켜주기위해 사용
@Entity
public class Memo {
    @Id
    @GeveratedValue(strategy = GenerationType.IDENTITY) //MySQL의 Auto_INCREMENT를 사용
    private Long id;

    @Column(length =200, nullable =false)
    private String memoText;
}

 

사용 어노테이션 정리

 

  • @Entity : DB의 테이블을 뜻함 [ Spring Data JPA 에서는 반드시 @Entity 어노테이션을 추가해야함]
  • @Table : DB 테이블의 이름을 명시 [ 테이블 명과 클래스 명이 동일한 경우 생략가능 ]
  • @Getter : Lombok의 Getter를 이용해 Getter 메소드를 생성하고 @Builder를 이용해서 객체를 생성할 수 있게처리한다.
  • @Builder를 이용하기 위해 @AllArgsContructor@NoArgsContructor를 같이 처리해야 컴파일 에러가 발생하지 않음
  • @Id : Privary Key를 뜻함
  • @HeneratedValue : Primary Key의 키 생성 전략(Strategy)을 설정하고자 할 때 사용
  1. GenerationType.IDENTITY : MySQL의 AUTO_INCREMENT 방식을 이용
  2. GenerationType.AUTO(default: JPA구현체(Hibernate)가 생성 방식을 결정
  3. GenerationType.SEQUENCE: DB의 SEQUENCE를 이용해서 키를 생성 . @SequenceGenerator와 같이 사용
  4. GenerationType.TABLE: 키 생성 전용 테이블을 생성해서 키 생성. @TableGenerator와 함께 사용
  • @Column : DB Column을 명시
  • @Transient : @Column과 반대로 테이블에 컬럼으로 생성되지 않은 필드의 경우에 사용한다.

 

 

JPA Repository 생성

Spring Data JPA는 JPA의 구현체인 Hibernate를 이용하기 위한 여러 API를 제공합니다.

그 중에서 가장 많이 사용되는 것이 JPA Repository라는 인터페이스입니다.

 

public interface MemoReporisotry extends JpaRepository<Memo, Long> {

}

작성된 MemoRepository는 JpaRepository를 상속하는 것만으로 모든작업이 끝납니다.

  • MemoRepository를 이용해서 작성된 테이블에 SQL문 없이 CRUD 작업을 할 수 있게 됩니다.
  • JpaRepository의 제네릭 타입으로는 <Entity, PK의 타입>을 지정해주면 Spring Data JPA는 자동으로 스프링의 빈(bean)으로 등록됩니다.
  • Spring이 내부적으로 인터페이스 타입에 맞는 객체를 생성해서 bean으로 등록

 

테스트를 통한 CURD 기능 확인

1.1 Create 테스트

 

Insert를 할 때 Repository 객체의 save()메소드를 사용합니다.

 

@SpringBootTest
pulbic class MemoRepositoryTest{
    @Autowired
    MemoRepository memoRepository;

    @Test
    public void InsertDummies() {
        IntStream.rangeClosed(1, 10).forEach( i -> {
            Memo memo = Memo.builder()
                                          .memoText("Sample...." + i)
                                          .build();
            //Create!
            memoRepository.save(memo);
        });
    }
}

 

1.2 Read 테스트

 

Select를 할 때 Repository 객체의 findById() 메소드를 사용합니다.

findById()를 통해 기본키를 넣어주면, 해당하는 객체를 Optional 타입으로 반환해줍니다.

@SpringBootTest
pulbic class MemoRepositoryTest{
    @Autowired
    MemoRepository memoRepository;

    @Test
    public void SelectDummies() {
        Long id = 10L;

        Optionam<Memo> result = memoRepository.findById(id);

        System.out.println("------------------------------------------";
          if(result.isPresned()){
               Memo memo = result.get();
               System.out.println(memo);
        }
    }
}

 

1.3 Update 테스트

 

수정 작업과 등록작업은 동일하게 save()를 이용해서 처리합니다.

내부적으로 해당 엔티티의 @Id값이 일치하는지를 확인해서 Insert 혹은  Update작업을 처리합니다.

 

@SpringBootTest
pulbic class MemoRepositoryTest{
    @Autowired
    MemoRepository memoRepository;

 @Test
    public void UpdateDummies() {
        Memo memo = Memo.builder()
                                      .id(10L)
                                      .memoText("Update Text")
                                      .build();
        memoRepository.save(memo);
    }
}

 

 

1.4 Delete 테스트

 

삭제 작업도 수정 작업과 동일한 개념으로 삭제하려는 엔티티 객체가 있는지 먼저 확인하고, 삭제합니다

@SpringBootTest
pulbic class MemoRepositoryTest{
    @Autowired
    MemoRepository memoRepository;

    @Test
    public void DeleteDummies() {
        Long id = 10L;
        
        memoRepository.deleteById(id);
    }
}

 

 

출처

https://dev-coco.tistory.com/85

 

[Spring Boot] MySQL & JPA 연동 및 테스트 (Gradle 프로젝트)

SpringBoot에서 MySQL 그리고 Spring Data JPA를 연동하는 방법에 대해 알아보도록 하겠습니다. 1. 프로젝트에 의존성 추가하기 build.gradle에 의존성을 아래와 같이 추가해줍니다. dependencies { implementatio..

dev-coco.tistory.com

 

 

감사합니다.

 

반응형
반응형
Lombok이란?

Lombok은 자바 Domain(DTO, VO) 에서 반복적으로 작성되는 getter/setter나 toString, 생성사 코드 등의 소스들을, 어노테이션(Annotaion)을 사용하여 생략할 수 있도록 컴파일 시점에 자동으로 생성해주는 라이브러리이다.

 

환경
IntelliJ IDEA Ultimate 2021. 3. 2
Gradle 7.4.1

※IntelliJ 2020.03 이후 버전에서는 기본Plugin으로 Lombok이 설치되어 있습니다.

 

설치방법

파일 -> 설정 -> 플러그인 -> Lombok 검색 후 설치

 

Dependency 설정하기

Lombok Plugin을 사용하기 위해서는 dependency에 추가되어야만 사용이 가능하다.

 

Gradle 7.4.1

//build.gradle
...
dependencies {
     //lombok plugin
     implementation 'org.projectlombok:lombok'
     annotationProcessor 'org.projectlombok:lombok'

     //default
     implementation 'org.springframework.boot:spring-boot-starter-web'
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

Annotation Processing 설정하기

어노테이션 프로세싱 활성화를 해주어야 어노테이션 기반인 lombok을 사용할 수 있습니다.

파일 -> 설정 -> 빌드,실행,배포 -> 컴파일러 -> 어노테이션프로세서 에서 어노테이션 처리 활성화를 체크해준다

 

 

Lombok의 Annotation

@Getter/@Setter

  • 어노테이션을 붙인 클래스 멤버 변수들 혹은 특정 변수의 getXXX(), setXXX() 메소드를 생성한다.
  • 기본적으로 public method로 선언된다.
  • @Setter(AccessLevel.PRIVATE)처럼 AccessLevel을 통하여 접근권한을 설정할 수 있다. (PRIVATE, PROTECTED 등)
  • @Setter 같은 경우는 무결성이 보장되어야 하는 클래스나 변수에는 사용을 지양해야 한다.

 

@ToString

  • 어노테이션을 붙인 클래스의 toString() 메소드를 생성한다.
  • @ToString(callSuper = true)를 사용하면 상속받은 클래스의 정보까지 출력된다. (default값은 false)
  • @ToString을 붙인 클래스에 순환 참조를 하는 객체 타입 필드가 있다면, 무한 루프가 발생한다.
  • ex1) 클래스 A에 어노테이션을 붙였는데, A의 멤버 변수에 클래스 B타입이 있고 B의 멤버 변수에 클래스 A타입이 있을 경우 무한루프 발생
  • solution) @Tostring(exclude = "A")와 같이 명시적으로 해당 필드를 제외시켜줘야 한다.

 

@NonNull

  • 어노테이션을 붙인 변수는 반드시 값이 있어야 한다.
  • Setter에 null 값이 들어오게 되면 NulPointerException이 발생하게된다.
  • @NonNull은 불필요하게 branch coverage를 증가시키므로 사용이 권장되지는 않는다.

@NoArgsConstructor

  • 어노테이션이 붙은 클래스의 기본 생성자를 생성한다.
  • AcessLevel 을 통하여 접근권한을 설정할 수 있다.
  • 기본값은 Public 이지만, Protected 를 사용하여 안전성을 보장해주는 것을 권장한다.

@RequiredArgsConstructor

  • 어노테이션이 붙은 클래스의 final 혹은 @NonNull인 필드만을 포함한 생성자를 생성한다.
  • AccessLevel을 통하여 접근권한을 설정할 수 있다.
  • 필드에 잘못된 값이 들어가도 에러를 뱉이 않을수도 있기에 사용에 주의가 필요하다.

@AllArgsConstructor

  • 어노테이션이 붙은 클래스의 모든 필드를 포함한 생성자를 생선한다.
  • AccessLevel을 통하여 접근권한을 설정할 수 있다.
  • 필드에 잘못된 값이 들어가도 에러를 뱉지 않을수도 있기에 사용에 주의가 필요하다.

@EqualsAndHashCode

  • 어노테이션이 붙은 클래스에 equals()hashCode() 메소드를 생성한다.
  • exclude를 통하여 특정 필드를 제외시킬 수 있다.
  • equals() - 두 객체의 내용이 같은지 비교하는 메소드이다.
  • hashCode() - 해당 객체의 해시값을 반환하는 메소드이다.

@Data

  • @Getter, @Setter, @EqualsAndHashCode, @RequiredArgsConstructor, @ToString 을 포함한다.
  • @Data(staticConstructor = "foo") 와 같이 foo라는 static factory method를 생성 할 수도 있다.

@Value

  • 어노테이션이 붙은 클래스를 불변(Immutable) 클래스로 선언한다.
  • 모든 필드와 클래스를 기본적으로 private 및 final로 선언하고, setter 메소드를 생성하지 않는 점을 제외하곤 @Data와 비슷하다.

@Cleanup

  • close() 메소드를 자동으로 호출해주어, close()관련 코드 작성을 최소화 할 수 있다.

 

@Synchronized

  • synchronized 키워드를 사용할 때 데드락이 발생하는 경우를 방지하기 위해 어노테이션이 붙은 메소드가 실행되기 전에 잠금 $lock이라는 개인 잠금 필드를 생성한다
  • lock 오브젝트를 자동으로  생성하므로, Synchronized를 손쉽게 사용할 수 있게 해준다.

@Builder

  • 빌더 패턴을 사용할 수 있도록 빌더API를 제공한다
  • private 이긴 하지만, @AllArgsConstructor를 기본적으로 적용한다.
  • 클래스보다는 사용자 정의 생성자 혹은 static 객체 생성 메소드에 사용하는 것을 권장한다.
  • @Singular : Collection 타입에 서넝ㄴ하게 되면 파라미터를 하나씩 추가할 수 있다.

@Log, @Slf4j

  • 로그를 남기기 위한 어노테이션이다.
  • 어노테이션을 클래스에 선언하면, log관련 static 메소드를 선언하지 않아도 된다.
정리
보통 @Getter, @Setter, @ToString, @Builder, @Log 정도만 많이 사용한다고 합니다.
@Data 보다는 코드가 길어지더라도 필요한 어노테이션만 선언하는 것을 권장합니다

 

 

출처
http://gre-eny.tistory.com/303
반응형

'BackEnd > Java' 카테고리의 다른 글

[Spring] Spring Security + jwt 사용  (0) 2022.07.23
[Thymeleaf] layout-dialect 사용하기  (0) 2022.07.22
SpringBoot MySQL & JPA 연동  (0) 2022.03.31
JAVA 버전이 변경 안될때 체크사항  (0) 2022.03.16
IntelliJ 설치  (0) 2022.03.15
반응형

JAVA설치 후 커맨드 창을 열어 해당 명령어를 입력하면, 자바 버전이 나오는데 본인이 설치한 버전과 다를 경우

해결 방법에 대해 안내합니다.

//명령어 입력
java -version

 

환경변수 설정
  1. 키보드 [Win+R] 단축키를 이용해 실행창을 연다. 
  2. [sysdm.cpl] 을 입력하고 [고급 탭]으로 이동한다.
  3. 환경변수 버튼을 클릭한다.
  4. 시스템 변수에 JAVA_HOME 의 경로가 정상적으로 잡혀 있는지 확인한다.
  5. 경로가 정상적이지 않다면 경로를 재설정 해준다.
  6. 시스템변수 -> Path의 경로를 추가한다 [ %JAVA_HOME%\bin ] ※bin까지 꼭 입력해야한다.
  7. 커맨드창을 열어 java -version으로 자바버전이 바뀌었는지 확인한다.
  8. 7번까지 진행하여도 자바 버전이 바뀌지 않았으면, 시스템변수 -> Path에 자바 경로가 다른것이 있는지 체크한다. 윈도우에서 java통합 설치를 진행하면 자동으로  C:\Program Files (x86)\Common Files\Oracle\Java|javapath 가 잡혀서 삭제 해주었다

감사합니다.

 

 

반응형

'BackEnd > Java' 카테고리의 다른 글

[Spring] Spring Security + jwt 사용  (0) 2022.07.23
[Thymeleaf] layout-dialect 사용하기  (0) 2022.07.22
SpringBoot MySQL & JPA 연동  (0) 2022.03.31
[IntelliJ] Lombok 설치 및 Lombok Annotation 정리  (0) 2022.03.16
IntelliJ 설치  (0) 2022.03.15
반응형
환경
  • 개발 Window11
  • Git
  • Github
  • Jenkins
  • RabbitMQ 3.9.12
  • Erlang 24.2
  • MySQL
설치

1. https://www.jetbrains.com/ko-kr/idea/download/#section=windows 링크로 이동하여 다운로드 합니다.

  1. Ultimate (라이센스 구독) 과 Community버전이 있으며 자신에게 맞는 버전을 이요하면 된다. (Ultimate버전은 30일 무료이다).

 

IntelliJ 설치화면

 

 

2. 설치경로 지정 후 [Next] 클릭

 

3. 설치 옵션 체크 후 [Next] 클릭

 

  1. Create Deskto Shortcut - 바로가기 생성
  2. Update Context Menu - 프로젝트로 폴더 열기 메뉴 추가
  3. Create Associations - 사용할 언어 확장자 선택
  4. Update PATH Variable - 윈도우 환경변수 자동 추가

[Next]로 넘기면 IntelliJ 설치가 완료 됩니다.

 

감사합니다.

 

 

 

 

반응형
반응형

var

  • 컴파일 시 해석
  • 선언 시 자료형을 선언해줘야함.

 

 

 

 

dynamic

  • 런타임 시 해석
  • object 형 과 비슷하여 선언 시 자료형을 선언해주지 않아도됌.
  • 런타임 시 에러가 발생하므로 try catch문을 잘 사용해야함
반응형

'BackEnd > C#' 카테고리의 다른 글

DataTable 데이터 중복 제거  (0) 2018.09.04
Newtonsoft.Json Nuget Console 설치  (3) 2017.03.31

+ Recent posts