전체 글 26

자바 시큐어 코딩(CWE-495) 그리고 캡슐화

시작은 시큐어 코딩 가이드에 나와있는 public한 메소드를 통하여 반환된 private한 배열(CWE-495)을 보고 시작되었다. https://cwe.mitre.org/data/definitions/495.html CWE - CWE-495: Private Data Structure Returned From A Public Method (4.12) div.collapseblock { display:inline} CWE-495: Private Data Structure Returned From A Public MethodWeakness ID: 495Abstraction: VariantStructure: Simple The product has a method that is declared public, ..

개발일지 2023.07.11

JAVA에 Call by refernce는 없다.

메소드 호출 시 파라미터의 값을 불러오는데는 Call by Reference와 Call By Value 두가지 방법이 있다. Call by Reference와 Call By Value란? Call By Reference (참조에 의한 호출) 메소드 호출 시 파라미터로 변수를 직접 전달한다. 메소드 내부에서 파라미터에 대한 수정이 발생할 경우 원본에도 동일하게 적용된다. 자바에서는 이 방식으로 동작하지 않는다. Call By Value (값에 의한 호출) 메소드 호출 시 파라미터로 변수의 값을 복사하여 전달한다. 메소드 내부에서 파라미터에 대한 수정이 발생할 경우 원본에는 반영되지 않는다. 자바에서의 파라미터 전달 방식은 Call By Value이다. 자바는 파라미터 전달 시 Call By Value 방식..

BackEnd/Java 2023.07.03

JAVA equals, hashCode 메소드

자바에서 모든 객체들이 기본적으로 상속받는 Object 클래스에 기본적으로 equals와 hashCode 메소드가 존재한다. equals 메소드 기본적으로 두 개의 객체가 동일한지 비교하는데 쓰이는 메소드이다. 두 객체의 주소값이 동일할 경우 true를 return한다. hashCode 메소드 객체가 저장되어 있는 주소값을 기준으로 hashCode를 생성하여 return 한다. 어플리케이션이 실행되는 동안 하나의 객체는 항상 동일한 hashCode값을 return한다. hashCode native 메소드로 경우 자바가 아닌 C, C++ 같은 네이티브 언어로 작성된 메소드이다. 자바 프로그램에서는 JNI(Java Native Interface)를 통해 호출하여 사용한다. 오버라이딩 우리는 객체를 비교할 때..

BackEnd/Java 2023.05.18

gradle 프로젝트가 build 안될 때 - java.lang.IllegalStateException: Module entity with name

윈도우 11에서 기존 프로젝트를 Git에서 checkout 하였으나 아래와 같은 에러로 정상적으로 build하지 못하고 있었다. 해결방법 실제 프로젝트명과 setting.gradle의 rootProject.name을 일치시켜 주었더니 바로 해결되었다. 반드시 대/소문자를 맞춰주자 + 윈도우 10에서 동일한 상황을 재현하려하였으나 대/소문자가 일치하지 않음에도 해당 문제가 발생하지 않았다. 출처 : https://youtrack.jetbrains.com/issue/IDEA-317606

BackEnd/Spring 2023.05.16

JAVA finalize() 소멸자 메소드에 대해

주의 - finalize 메소드는 JAVA 9부터 Deprecated되었으며 사용하는 것을 지양하자          try-finally, try-with-resources를 이용하여 처리해주자 글 다시 작성했습니다. 아래 글 참고해주세요https://potwings.tistory.com/63 X바(자바) finalize 메소드 쓰지마세요Java9부터는 Deprecate 되었어요 쓰지 마세요. 과거 필자는 특정 객체 동작하면서 남긴 임시 파일을 해당 객체가 소멸될 때 제거되도록 하기 위해finalize 메소드를 사용하여 처리하려 했던 적이 있었potwings.tistory.com  finalize 메소드는 자바에서 객체가 더 이상 참조되지 않을 때 Garbage Collector가 불필요한 메모리를 회수..

BackEnd/Java 2023.05.14

IntelliJ 대/소문자 구분 없이 자동완성 (lombok 안될때(?).....)

PC를 바꿔서 인텔리제이를 새로 설치 후 프로젝트를 생성하는데 자동 완성에 lombok이 안보여서 안잡힌다고 생각하고 있었다.... 별의 별 설정을 다 해도 getter setter 자동완성이 안되어서 정신이 나가버렸는데 어노테이션 자동완성을 보니 lombok에 포함된 친구들이 보이더라... 하도 예전에 설정해서 까먹고 있었는데 인텔리제이에서는 대/소문자가 다를 경우 기본값으로 자동완성을 해주지 않는다. 따라서 아래와 같이 설정해주면 된다. 1. 상단바의 File > Setting (단축키 ctrl + alt + s)를 통하여 설정 페이지 접근 2. Editor > Code Completion 에서 Match case 체크 박스를 해제 후 저장해준다. 이제 정상적으로 getter를 찾아올 수 있었다...

카테고리 없음 2023.05.14

Spring AntPathMatcher URL 체크 시 OR 조건 매핑

/api/{spring:[원하는 URI||원하는 URI2]+} 위와 같은 형식으로 넣어주면된다 spring: 후 원하는 정규표현식을 넣어주고 +를 써주면 정상적으로 처리가 된다. 패턴은 매칭 진행 시 아래와 같은 조건문이 존재하므로 검사하려는 path와 pattern의 시작 값의 형식을 맞춰주자(pathSeparator의 default값은 "/"이다) https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html

BackEnd/Spring 2023.03.02

Window 자바 버전 변경

윈도우에 자바 17을 설치하였는데 더 낮은 버전이 필요해졌다. 너무 오랜만에 하려니 방법을 까먹어서 기록해둔다... 윈도우에서 자바 버전을 변경할 때는 시스템 환경 변수의 변경이 필요하다. 1. 시스템 속성 창에 접근 시스템 속성 창은 시작 > 설정 > 시스템 > 정보 > 고급 시스템 설정 또는 window키 + R (실행) 에서 sysdm.cpl을 입력하여 접근할 수 있다. 위의 방법을 진행하면 아래와 같은 시스템 속성 창이 나오는데 고급 탭으로 이동 시 환경 변수라는 항목이 보일 것이다. 환경 변수 중 시스템 변수에 JAVA_HOME을 원하는 자바 JDK의 경로에 맞추어 편집(없다면 새로 만들기) 이후 시스템 변수 중 Path라는 항목을 찾아서 편집을 누른 후 새로만들기로 %JAVA_HOME%\bin..

Server 2023.01.08

Linux root 계정으로 SSH 접근이 안될 때 / 접근 막을 때

한 줄 요약 허용 - /etc/ssh/sshd_config의 40번째 라인에 있는 PermitRootLogin을 주석 해제 후 yes로 변경해준다. 차단 - 설정 값을 no로 변경해준다. 로키 리눅스 네트워크 세팅 후 ssh client로 연결하려는데 root 계정으로 로그인이 안되었다. 확인해보니 Rocky 설치 시 root로 ssh 접근을 체크하지 않아 발생하였다. 이를 해결하기 위해선 ssh 설정값 수정이 필요했다. vi /etc/ssh/sshd_config 를 통하여 설정 파일 접근 후 PermitRootLogin 값을 변경해준다. PermitRootLogin 값을 yes로 값 수정해준다. ( PermitRootLogin 값에 따른 설명 prohibit-password - 비밀번호를 통한 로그인 ..

Server 2023.01.08

Rocky Linux 고정 아이피 설정

Rocky Linux 는 Centos와 달리 NetworkManager를 통하여 설정해주어야 한다. 방법은 총 두가지가 존재한다. nmtui를 이용한 설정법 1. nmtui 명령어 실행 2. Edit Connection에서 네트워크 인터페이스 수정 3. Activate a connection에서 해당 네트워크 인터페이스 활성화(비활성화 후 활성화) 1. 콘솔에서 nmtui 입력 시 아래와 같은 화면이 나온다. 만일 아래와 같은 화면이 나오지 않을 경우 NetworkManager를 우선 설치해주자 ( yum install NetworkManager ) Edit a connection을 누르면 사용 가능한 네트워크 인터페이스 목록이 나온다. Edit 버튼을 통하여 편집을 진행할 수있다. IPv4 CONFIG..

Server 2023.01.04