TIL_6

-·2021년 2월 7일
0

TIL

목록 보기
7/15

@SuppressWarning

컴파일러가 정적분석을 진행할 때 오류가 아니라고 마킹해주는 역할을 하고 있다.

따라서 어떤 경고를 제외시킬지 옵션을 줄 수 있음

JDK 1.5 버전부터 지원.

all : 모든 경고를 억제

boxing : boxing/unboxing 오퍼레이션과 관련된 경고를 억제

cast : 캐스트 오퍼레이션과 관련된 경고를 억제

dep-ann : 권장되지 않는 어노테이션과 관련된 경고를 억제

deprecation : 권장되지 않는 기능과 관련된 경고를 억제

fallthrough : switch 문에서 누락된 break 문과 관련된 경고를 억제

finally : 리턴되지 않는 마지막 블록과 관련된 경고를 억제

hiding : 변수를 숨기는 로컬과 관련된 경고를 억제

incomplete-switch : switch 문에서 누락된 항목과 관련된 경고를 억제(enum case)

javadoc : javadoc 경고와 관련된 경고를 억제

nls : 비nls 문자열 리터럴과 관련된 경고를 억제

null : 널(null) 분석과 관련된 경고를 억제

rawtypes : 원시 유형 사용법과 관련된 경고를 억제

resource : 닫기 가능 유형의 자원 사용에 관련된 경고 억제

restriction : 올바르지 않거나 금지된 참조 사용법과 관련된 경고를 억제

serial : 직렬화 가능 클래스에 대한 누락된 serialVersionUID 필드와 관련된 경고를 억제

static-access : 잘못된 정적 액세스와 관련된 경고를 억제

static-method : static으로 선언될 수 있는 메소드와 관련된 경고를 억제

super : 수퍼 호출을 사용하지 않는 메소드 겹쳐쓰기와 관련된 경고를 억제

synthetic-access : 내부 클래스로부터의 최적화되지 않은 액세스와 관련된 경고를 억제

sync-override : 동기화된 메소드를 오버라이드하는 경우 누락된 동기화로 인한 경고 억제

unchecked : 미확인 오퍼레이션과 관련된 경고를 억제

unqualified-field-access : 규정되지 않은 필드 액세스와 관련된 경고를 억제

unused : 사용하지 않은 코드 및 불필요한 코드와 관련된 경고를 억제

CSRF disable 해도되는 경우?

브라우저를 통해 request를 받지 않는다면 사용하지않다도 된다.

SPA(single page application)방식으로 개발된(REST)API서버는 이 기능을 disable 해도된다.

RESTAPI서버는 stateless하게 개발하기 때문에 사용자의 정보를 세션에 저장하지 않는다.

일반적으로 JWT같은 토큰을 사용하여 인증하기 때문에 해당토큰을 Cookie에 저장하지 않는다면 CSRF취약점에 대해서는 어느정도 안전하다고 말할 수 있다.

JWT(JSON Web Token)

두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달해줍니다.

JWT 는 필요한 모든 정보를 자체적으로 지니고 있습니다. JWT 시스템에서 발급된 토큰은, 토큰에 대한 기본정보, 전달 할 정보 그리고 토큰이 검증됐다는것을 증명해주는 signature 를 포함하고있습니다.

Spring Security and() method

spring security 설정파일에 .and() 이런식으로 되있어서 이게 뭘까 싶었다.

and()는 특정 Configurer 에 대한 옵션 구성을 완료 한 후 사용하는 매서드

and()는 builder()가 반환이 됩니다.

따라서 이걸로 서로 다른 configurer를연결해줄수 있습니다.

반환유형이 HttpSecurity면 and() 추가할 필요가 없다.

csrf().disable() : return type HttpSecurity

반환유형이 다를경우 and()로 이어줌

cors() : CorsConfigurer

formLogin() : FormLoginConfigurer

	formLogin()
    .loginPage("/login")
    .permitAll()
.and()
	.logout()
	...

ROW_NUMBER() OVER()

- ORACLE : ROW_NUMBER() OVER (ORDER BY COLUMN) AS ROWNUM

- MSSQL : ROW_NUMBER() OVER (ORDER BY COLUMN) AS ROWNUM

- MYSQL : 지원 하지 않음, SQL 내 변수(@변수명)으로 해결

- ORACLE

SELECT COLUMN_A

​ ,COLUMN_B

​ ,ROW_NUMBER() OVER (ORDER BY COLUMN_C DESC) AS ROWNUM

FROM TABLE_A

- MSSQL

SELECT COLUMN_A

​ ,COLUMN_B

​ ,ROW_NUMBER() OVER (ORDER BY COLUMN_C DESC) AS ROWNUM

FROM TABLE_A

- MYSQL

SELECT COLUMN_A

​ ,COLUMN_B

​ ,@SEQ := @SEQ + 1 AS ROWNUM

FROM TABLE_A

​ ,(SELECT @SEQ := 0) A

ORDER BY COLUMN_C DESC

mysql 8버전 이후부터는 사용가능

System.getProperty

자바를 실행할 때, 실행되는 곳의 정보를 얻어오거나 운영체제의 정보가 필요할 때가 있습니다.
System.getProperty() 사용법은 간단합니다.
괄호 안에 주어진 특정 문자를 적어넣으면 그 값이 String 으로 출력됩니다.

ex) System.getProperty("user.dir")

검색어
java.versionJava 버전
java.vendorJava 공급자
java.vendor.urlJava 공급자 주소
java.homeJava를 설치한 디렉토리
java.class.versionJava 클래스 버전
java.class.pathJava 클래스 경로
java.ext.dir확장기능의 클래스 경로
os.name운영체제 이름
os.arch운영체제 아키텍처
os.version운영체제 버전 정보
file.separator파일 구분 문자
path.separator경로 구분 문자
line.separator행 구분 문자
user.name사용자 계정
user.home사용자 홈 디렉토리
user.dir현재 디렉토리
profile
거북이는 오늘도 걷는다

0개의 댓글