Backend

    [Linux] 리눅스 필수 명령어

    1. pwd(Print Work Directory)작업중인 디렉토리 경로 조회​2. ls(List Segments)현재 디렉토리의 파일과 폴더를 표시​3. cd(Change Directory)현재 디렉토리를 변경​4. mkdir(Make Directory)폴더 생성​5. cp(Copy)파일 또는 폴더를 복사할 때 사용​6. mv(Move)파일 또는 폴더의 위치를 옮길 때 사용, 이름 변경시 사용​7. rm(Remove)파일 또는 폴더를 삭제할 때 사용​8. cat(Catenate)파일의 내용을 확인할 때 사용​9. touch빈 파일을 생성, 파일의 날짜 및 시간 수정시 사용​10. echo문자열을 화면에 보여줄 때 사용, 리다이렉션을 사용해 파일 생성 및 추가 작업시 사용​11. ip addr / ifc..

    [Curl] 기본 쉘로 API 테스트하기

    Curl(Client URL)특정 URL로 데이터 전송 테스트를 할 수 있는 명령줄 도구 및 라이브러리GUI 환경에서 URL 테스트를 Postman에서 한다면 CLI 환경에서는 Curl을 사용하면 쉽게 REST API 테스트 가능Linux 및 Unix, 심지어 Windows에서도 사용 가능​ Curl 설치​리눅스# 우분투$ sudo apt update$ sudo apt install curl# CentOS$ sudo yum install curl Curl 버전 확인$ curl -VGET 요청# 프로토콜 미지정시, 기본 HTTP 설정# 별도 옵션 미지정시, GET 방식 동작$ curl www.naver.com$ curl -X GET www.naver.com# 위 2개의 명령문은 동일 POST 요청# -d ..

    [Java] VO와 DTO의 차이점

    VO(Value Object)값 자체를 표현하는 객체변조가능성 메서드 존재 X ex) Setter, DTO와 달리 별도 메서드 추가 가능-> 필드 값이 같다면 두 객체는 같은 객체로 처리-> 실제 인스턴스 비교시 객체 주소값이 서로 다르므로, hashcode() 및 equals()를 재정의(오버라이딩) 필요​​DTO(Data Transfer Object)단순하게 데이터만 담아 계층 간 전달하는 객체클래스가 갖고 있는 메서드는 getter / setter 만 존재-> 오직 데이터 전달에만 초점​​​VO와 DTO의 차이점 VODTO목적값 자체를 표현계층간 데이터 전달동등성필드값 동일시 같은 객체 취급필드값이 같아도 같은 객체 X가변성불변(수정 불가)Setter 존재시 가변Setter 존재 안할시 불가변로직G..

    [Spring] Bean 순환 참조

    [Spring] Bean 순환 참조

    먼저 순환 참조의 정의에 대해 알아보자. 위키 백과에서의 순환 참조 정의는 다음과 같다.- 참조하는 대상이 서로 물려 있어서 참조할 수 없게 되는 현상  위에서 설명한 순환 참조라는 것이 스프링에서도 일어날 수 있을까?: 물론이다.  두 개 이상의 자바 클래스가 서로의 Bean을 주입 받을 때 순환 참조 문제가 발생할 수 있다.  클래스 A -> 클래스 B, 클래스 B -> 클래스 C, 클래스 C -> 클래스 A 순으로 참조할 경우,클래스 A에 대한 Bean을 만들 때, 클래스 A는 클래스 B를 참조하므로, 클래스 B의 Bean을 먼저 생성하고,클래스 B는 클래스 C를 참조하기에, 클래스 C의 Bean을 먼저 생성하고, 클래스 C의 Bean을 생성하기 전에,클래스 C는 클래스 A를 생성하므로 먼저 클래스..

    npm build가 안될 때 해결 방법(node, node-sass 버전 호환 문제)

    잘 쓰고 있는 npm을 최신 버전으로 업그레이드 하라는 문구가 계속 떠서 node 20 버전을 설치했다 여기서 계속 리액트 프로젝트가 빌드가 안되는 현상이 발생.. 로그를 보니 node-sass라는 라이브러리가 window에서는 8.0 이상은 지원이 안되는 것 같다 그래서 node-sass는 7.0 버전을 설치하고 node는 17버전으로 다운그레이드 했더니 빌드가 잘됐다 node-sass는 node 환경에서 sass -> css 코드로 변환해주는 스타일 전처리기라고 한다. 아무튼 그렇다 https://www.npmjs.com/package/node-sass node-sass Wrapper around libsass. Latest version: 9.0.0, last published: 8 months a..

    스프링에서 로그 찍는 법

    스프링에서 로그 찍는 법은 총 두 가지가 있다. Log4j or Logback 와 같은 로깅 프레임워크를 이용하거나 System.out.println() 을 이용하여 로그를 찍을 수 있다. 1. 로깅 프레임워크 이용하기(Log4j) 이클립스에서 스프링 레거시 프로젝트를 생성할 경우, 자동으로 src/main/resources 경로에 log4j.xml 파일이 생성된다. log4j.xml 파일 내용은 아래와 같다. : XML 버전 및 인코딩 정보 : log4j.dtd 파일 위치 지정 : log4j 설정 정보가 포함된 XML 파일 : appender - 로그를 출력할 대상 및 출력 방식 ㄴ ConsoleAppender - 콘솔에다가 로그 출력 : 출력 대상 지정. value가 System.out이므로 콘솔 출..

    데이터 전송 어노테이션 - @PathVariable, @ResponseBody, @RequestParam

    @PathVariable - 한번에 하나의 요청만 가능 - value : 파라미터 값 - 템플릿 변수를 이용하여 값을 받을 수 있음 ex) "/admin/700"으로 주소를 보냈을 경우, 컨트롤러에서 매핑이 "/admin/{size}"이고 (@PathVariable(value="size") int size) 라고 지정하면 size라는 매개변수는 700이라는 값을 가지게 된다. @RequestParam - defaultValue : 기본값 지정(전달받은 값이 없을때 사용) - name : 파라미터 이름 - value : 파라미터 값 - required : true일 경우, 필수값(값이 안 넘어올 경우, 에러 발생) : false일 경우(기본 설정), 필수값 아님 @RequestBody - @RequestB..

    리스트 관련 메서드

    append() - 리스트에 원소를 하나 삽입할 때 사용 - 시간 복잡도 : O(1) sort() - 리스트를 오름차순으로 정렬 - 내림차순으로 정렬할려면 sort(reverse = True) - 시간 복잡도 : O(NlogN) reverse() - 리스트 안에 있는 모든 원소들의 순서를 뒤집는다 - 시간 복잡도 : O(N) insert() insert(삽입할 인덱스 번호, 삽입할 값) - 해당 인덱스에 원소 삽입시 사용 - 시간 복잡도 : O(N) count() count(특정 값) - 리스트 안에서 특정 값을 가지고 있는 데이터의 갯수 카운트 - 시간 복잡도 : O(N) remove() remove(특정 값) - 리스트 안에서 특정 값 갖는 원소 제거 (특정 값 가진 원소가 여러개일 경우, 하나만 제..