전체 글

CS

[Java] Runnable, Thread

참고: Thread와 Runnable에 대한 이해 및 사용법 프로그램의 실행 속도를 개선하기 위해 Thread 클래스와 Runnable 인터페이스로 여러 개 스레드를 생성할 수 있다. Runnable 인터페이스 Java에서 스레드를 생성하기 위한 인터페이스 run() 메서드를 반드시 구현해야 한다. start() 메서드가 없기 때문에 새로운 스레드 생성을 위해선 , Thread 객체에 전달해서 start()를 호출해야 한다. class foo implements Runnable { @Override public void run() { // 쓰레드에서 실행할 내용 } } Thread 클래스 Runnable 인터페이스를 구현한 스레드를 생성하는 클래스로, Runnable 보다 많은 기능을 제공한다. 새로운 ..

CS

[CS 스터디] Blocking & Non-Blocking I/O

참고: Blocking I/O & Non-Blocking I/O 참고: blocking, non-blocking IO, 동기, 비동기 개념 정리 I/O는 Kernel Level에서 만 수행할 수 있다. 따라서 Process(thread)는 I/O를 수행하기 위해서 Kernel을 호출해야 한다. Sync Blocking I/O Process(Thread)가 Kernel에게 I/O를 요청한다. Process는 작업을 중단한 채 대기한다. (Kernel에게 응답을 받기 전까지 다른 작업 못한다) Kernel이 I/O 작업을 완료하면 결과를 반환한다. 특징 I/O 작업이 진행되는 동안 User Process는 자신의 작업을 중단한 채 대기 리소스 낭비가 심하다 (I/O 작업이 CPU 자원을 거의 쓰지 않기 때문..

CS

[CS 스터디] Blocking, Non-blocking & Synchronous, Asynchronous

참고:Blocking, Non-blocking & Synchronous,Asynchronous 참고: blocking, non-blocking IO, 동기, 비동기 개념 정리 Blocking/Non-blocking 호출된 함수에서 바로 제어권을 리턴하는지, 할 일을 마치고 리턴하는지 따라 Blocking과 Non-blocking으로 나누어진다. Blocking : 작업을 요청하면, 요청한 쪽은 해당 작업이 끝날 때까지 응답을 받지 못하고 대기한다. Non-Blocking : 작업을 요청하면, 즉시 응답을 받는 경우 💡 상황: 함수 A 안에서 함수 B를 호출했다. - Blocking : 함수 B가 할 일을 마칠 때까지 함수 B에게 제어권이 있는 상황. A는 B가 다 마칠 때까지 기다려야 한다. - Non-..

CS

[CS 스터디] 대칭키, 공개키(비대칭키)

참고: 대칭키 & 공개키 참고: Symmetric Argorithm, Asymmetric Argorithm 대칭키 (Private Key, Symmetric Key) 암호화와 복호화에 같은 키를 사용하는 알고리즘 매우 빠르다 > 대량의 데이터를 효율적으로 암호화하는 데 사용 키 배포 문제 ex) AES : 전자 데이터의 암호화를 위해 2001년 미국 국립 표준 기술 연구소에서 설정한 표준 이 방식은 통신 장치 간에 대칭키 전달 과정에서 해킹 위험이 있다. 따라서 대칭키의 수명 주기를 적절하게 관리해야 한다. 공개키 (Public Key, Asymmetric Key) 암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 대칭키에 비해 속도가 느리다. Use case: 디지털 서명 암호화된 이메일 SSL/TL..

CS

[CS 스터디] HTTP, HTTPS

참고: HTTP와 HTTPS의 차이점 참고: HTTP & HTTPS | teck-interview-for-developer HTTP vs HTTPS 차이점 HTTP HTTPS Hypertext Transfer Protocol Hypertext Transfer Protocol Secure 기본 프로토콜 HTTP/1과 HTTP/2는 TCP/IP를 사용합니다. HTTP/3은 QUIC 프로토콜을 사용합니다. HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 사용 포트 기본 포트 80 기본 포트 443 용도 이전 텍스트 기반 웹 사이트 모든 최신 웹 사이트 보안 추가 보안 기능 없음 퍼블릭 키 암호화에 SSL 인증서 사용 장점 인터넷을 통한 통신 지원 웹 사이트에 대한 권위, 신뢰..

CS/Backend

[Spring] @Valid와 @Validated를 이용한 유효성 검증

참고: @Valid와 @Validated를 이용한 유효성 검증의 동작 원리 및 사용법 예시 Validation 올바르지 않은 데이터를 걸러내고, 보안을 유지하기 위해 데이터 검증은 여러 계층에 걸쳐서 적용된다. 클라이언트의 데이터는 조작이 쉽고 모든 데이터가 정상적인 방식으로 들어오는 것이 아니기 때문에 클라이언트 측 뿐만 아니라 서버 측에서도 데이터 유효성을 검사할 필요가 있다. ✅ @Valid 와 @Validated 차이 @Valid @Validated JSR-303 자바 표준 검증 어노테이션 스프링 프레임워크에서 제공하는 어노테이션 적용 계층 컨트롤러 컨트롤러 + 다른 계층도 가능 유효성 검증 실패 시 발생하는 예외 MethodArgumentNotValidException ConstraintViol..

CS/Backend

[Spring] 서블릿, HTTP request & response

인프런의 스프링 MVC 김영한님 강의를 정리 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 원래는 웹 애플리케이션(톰캣)을 직접 설치하고 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음 톰캣 서버를 실행해야 한다. 1️⃣ 서블릿으로 HTTP 요청, 응답 보내기 웹 브라우저가 url로 요청 WAS 가 HTTP 요청에 맞춰서 request, response 객체 생성 > servlet 실행 servlet 이 요청을 처리하고 response 객체 반환 WAS 가 response 객체 정보로 HTTP 응답 생성 > 웹 브라우저에 전달 2️⃣ 서블릿 등록하기 서블릿을 직접 등록해서 사용하기 위해. Application 클래스에@ServletComponentScan을 적어주면 된다...

CS/Backend

[Spring] Pagiantion, Pageable 인터페이스

참고: Pageable을 이용한 Pagination을 처리하는 다양한 방법 Pagination 조회할 데이터 개수가 많을 때, 한 번에 조회되는 데이터의 개수를 한정시켜 페이지 단위로 나누는 기법 정렬 방식, 페이지 크기, 불러올 페이지 번호 등 지정할 수 있다. 조회할 데이터 개수가 적어진다 > 성능 향상 사용자가 데이터를 확인하는 과정에서 확인해야 하는 데이터가 줄어든다 > UX 향상 Pagination 방법 JpaRepository 사용repository.findTop20ByIdLessThanOrderByIdDesc(Long id) repository.findTop20ByOrderByIdDesc() Pageable 객체 이용 Pageable 인터페이스 JPA에서 제공하는 Pageable 객체를 이용..

CS

[Java] Stream API

자바 컬렉션이나 배열의 원소를 가공할 때 for, foreach로 가공해서 사용 > 귀찮음 자바 8부터 Stream을 사용해서 람다함수 형식으로 간결하게 요소를 처리할 수 있다. Stream API로 요소를 가공 후 collect 함수를 사용해 결과를 리턴 받는다. [배열 원소 가공 방법] map : 스트림 내 요소들에 대해 함수를 적용 > 결과 반환 (새로운 값으로 매핑) filter : 스트림 내 요소들을 조건에 따라 필터링 sorted : 스트림 내 요소들을 정렬 map() List humanNames = humans.stream().map(h -> h.getName()) .collect(Collectors.toList()); // 매핑 결과 > 리스트로 반환 // 결과 출력 for (String ..

CS

[Java] 문자 -> 문자열 변환하기, 문자열 내 특정 문자 제거하기 replaceAll()

문자 → 문자열 변환 방법 String.valueOf(char) 사용 Character.toString(char) 사용 문자열 연결 + "" package backjoon; public class Test { public static void main(String[] args) { char a = 'A'; System.out.println(String.valueOf(a)); // A System.out.println(Character.toString(a)); // A System.out.println(a + ""); // A } } 문자열 내 특정 문자 제거하기 replaceAll() replaceAll()과 regrex 패턴을 활용해서 특정 문자를 제외하거나, 남길 수 있음 영문 빼고 전부 제거 Str..

yooja_tea
Yoo 스터디