반응형

전체 글 47

가상화 (Virtualization)

: 시스템의 리소스를 논리적으로 나눠서 사용 or 여러개의 물리적인 시스템 리스소를 하나의 논리적인 리소스로 묶어서 사용하는 것 가상화의 탄생 배경 가상화의 탄생 배경에는 무어의 법칙이라는 개념이 항상 등장합니다. 무슨 관계가 있을까요? 초기 SW의 발전 속도는 HW의 발전속도에 훨씬 미치지 못하여 SW가 올라가있는 서버의 HW의 성능이 압도적으로 좋았습니다. 그래서 HW의 성능을 10~20% 밖에 사용하지 못하는 엄청난 비효율이 발생했습니다. 당시 HW의 가격이 지금보다 훨씬 비쌌기 때문에 유휴 자원에 대한 관리가 필요했었습니다. 그래서 한 개의 서버를 마치 여러 대의 서버처럼 운영하고자 했습니다. 💡 무어의 법칙이란 반도체 칩의 성능 즉, 메모리의 용량이나 CPU의 속도가 약 24개월마다 2배로 증가..

CS/OS 2023.10.18

[Spring] 생성자 주입 방식

📢 의존성 주입할 때 생성자 주입 방식을 써야 합니다! 이전글 Lombok에 대해서 정리한 이유도 스터디를 진행하면서 @RequiredArgsContructor 어노테이션에 대해 조사하다가 Lombok을 정리해 보자! 하면서 시작했었는데요, 이번엔 해당 어노테이션이 쓰인 이유를 조사하다가 생성자 주입방식에 대해서 정리하게 됐습니다 🙂 Spring을 어느 정도 써보셨던 분들은 @Controller와 @Service에서 @Autowired가 없다면 어색하게 느껴지실 텐데요. @Autowired는 클래스와 bean 사이의 의존 관계를 맺어주는 어노테이션입니다. 생성자 주입방식을 들어가기 전에 Spring의 DI/IoC에 대해 간략하게 짚고 넘어가겠습니다. 객체를 사용자가 new 키워드를 통해 생성하고, 소멸시..

Spring/Java,Spring 2023.09.22

Session Storage Strategy

세션 저장소 전략이 필요한 이유 SpringBoot 를 활용하여 웹서비스를 만들 때에 보통 내장 톰캣을 사용합니다. 웹 서비스를 구축 할 때에 세션 저장소를 고려하지 않고 단순히 로그인 기능을 구현 할 경우 애플리케이션을 재실행하면 기존 로그인이 풀립니다. 풀리는 이유는 로그인 정보를 세션에 담고 있는데 세션이 내장 톰캣의 메모리에 저장되기 때문입니다. 기본적으로 세션은 실행되는 WAS(Web Application Server)의 메모리에서 저장되고 호출됩니다. 메모리에 저장되다 보니 내장 톰캣처럼 애플리케이션 실행 시 실행되는 구조에선 항상 초기화가 됩니다. 즉, 배포할 때마다 톰캣이 재시작되는 것! 그리고 한 가지 문제가 더 있습니다. 일반적으로 서비스의 서버는 2대 이상의 서버를 운영하는 경우가 많..

Spring/Java,Spring 2023.09.20

Lombok 이란?

Lombok을 왜 쓰냐? Getter, Setter, Contructor 등을 자동으로 생성해줘서 귀찮은 일을 줄여 준다. 단, 무한 루프에 빠지거나 무분별하게 setter를 남발할 수 있으니 조심! Annotaion 정리 @NonNull : 자동으로 null 체크를 진행하며 null인 경우 NullpointException 을 발생 시킨다. @Cleanup : 자동으로 자원을 관리한다. close() 메소드를 호출하여 자원을 종료시긴다. @Getter getter 를 생성해준다. lazy : Getter 를 캐시하며, Getter가 CPU가 많이 필요하거나 메모리가 많이 필요한 표현식의 경우 유용 (private final 변수에만 사용 가능, 롬복에서 잠금 처리하여 Thread-safe 일 필요 없다..

Spring/Java,Spring 2023.09.18

Java 8 표준 API의 함수형 인터페이스

1. 함수형 인터페이스는 java.util.fuction 표준 API 패키지로 제공하며 크게 5가지 종류가 있다. : Consumer, Supplier, Function, Operator, Predicate 2. 매개타입으로 사용되어 람다식을 매개값으로 대입할 수 있도록 해준다. 각 인터페이스는 또 여러개의 인터페이스로 나뉜다 두개의 매개 변수를 받는 인터페이스라면 bi 라는 접두사, 정수 타입을 매개변수로 전달받는 인터페이스라면 int 라는 접두사가 혹은 실수 타입을 반환하는 인터페이스라면 AsDouble과 같은 접미사가 달려있는 등 일정한 네이밍 규칙이 존재한다. Consumer 계열 : 매개 값은 있고, 반환 값은 없다. 매개 값을 전달받아 사용하고 아무것도 반환하지 않을 때 사용된다. 이를 소비 ..

Spring/Java,Spring 2023.09.17

System.nanoTime & System.currentTimeMillis (feat. Intstant.now())

System.currentTimeMillis 시스템의 시간을 사용하기 위해서 or 현재 시간을 알아내기 위해서 주로 사용 밀리초 단위 사용 (ms) - 1초 = 1000ms System.currentTimeMills는 1970 -01 -01 (협정 세계시) 기점으로 흐른 시간을 ms 로 표현해주어 현재 시간으로 변환이 가능 System.nanoTime 기준 시점에서 경과 시간을 측정하는데 주로 사용 나노초 단위 사용 (ns) 1초 = 1e+9 시스템 시간, 현재 시간과 무관 JVM의 정밀한 시간 소스의 현재 값은 long타입으로, 나노 세컨트 (1/10^-9)로하게 정밀한 시간 표현 가능 다른 서버간 통신 시간 측정시 사용하면 안됨 결론 정교한 시간 성능을 측정하기 위해서는 nanoTime()을 추천 시..

Spring/Java,Spring 2023.09.16

Oracle JDK & Open JDK

JDK 란 JDK 는 Java Development Kit 의 줄임말로 Java 플랫폼에 사용되는 소프트웨어 개발 환경 이라고 이해 하면된다. Java Application 을 실행하기 위해서 JVM이 필요하고 컴파일 하기 위해서 JDK가 필요하다. JDK를 설치하면 JVM도 함께 설치된다. 독립형 JRE 보다 더 많은 도구와 Java 애플리케이션 개발에 필요한 다른 구성 요소가 포함되어 있다. JDK는 2개 버전으로 나뉜다. 폐쇄적인 상업 코드 기반의 Oracle JDK, 오픈 소스 기반의 OpenJDK Oracle이 2010년에 Sun Microsystems을 인수하여 Oracle JDK 가 됨 Oracle JDK과 Open JDK 논쟁 LTS(Long term support) 릴리즈 : Java8 ..

Spring/Java,Spring 2023.09.15

[MAC] zsh : command not found : conda

MAC에 아나콘다를 설치하고 설치 여부 확인을 하기 위해 명령어를 작성하였으나 zsh : command not found : conda라는 문구를 출력하였다. 해결하기 위한 방법으로 환경 변수에 추가해주는 방법이 있어 찾아 추가해봤다. # 1. 환경 변수에 추가 vi ~/.zshrc # 2. 환경변수 추가 하고 저장 export PATH ="opt/anaconda3/bin:$PATH" # 3. 설정파일 빌드하여 반영 source ~/.zshrc # 4. conda 설치 확인 conda # 대부분 해결되지만, 본인은 동일한 에러 문구가 노출되었고 환경 변수 문제가 맞다고 판단되어 경로 확인해보니 # 위에 환경변수 추가하는 2번에서 경로를 아래와 같이 설정하여 해결 export PATH ="/Users/{사..

ETC/MAC 2022.07.13

[Web] XSS 란? (feat. SQL Injection)

XSS (Cross-Site-Scripting) XSS 란 ? → Cross-Site-Scripting 의 약어로 사이트 간 스크립팅을 의미함 웹 APP 에서 많이 나타나는 취약점으로 웹사이트 관리자가 아니어도 악성 스크립트를 삽입 할 수 있습니다. 예를들어, form 안에 를 작성하면 alert 가 노출된다면 XSS가 뚫려있는 상태 XSS의 주요 목적 사이트 변조 보다는 사용자의 세션 탈취 취약한 사이트의 경우 관리자 계정을 훔쳐서 로그인을 할 수도 있음. XSS 해킹 시나리오 악성 스크립트를 담은 게시물 등록 사용자들이 게시물에 접근 열람자 들의 쿠키 값을 가로챔 가로챈 쿠키 값을 프록시 툴을 이용하여 재전송 열람자의 정보로 로그인 *만약에 열람자가 관리자라면 관리자로 로그인 XSS와 SQL Inje..

반응형