분류 전체보기

· 리눅스
Cgroup 기본 개념 Cgroup은 Control Group의 약자로 다수의 Process가 포함되어 있는 Process Group 단위로 컴퓨팅 자원의 사용량을 제한하고 격리시키는 Linux의 기능입니다. 여기서 컴퓨팅 자원은 CPU, Memory, Disk, Network를 의미합니다. Cgroup은 주로 Container의 Resource 제어를 위해서 많이 사용됩니다. 위 그림은 Container와 Cgroup의 관계를 나타내고 있습니다. Container가 생성되면 Container의 Process들을 담당하는 Container Cgroup이 생성됩니다. Container의 모든 Process들은 해당 Container Cgroup에 소속됩니다. Container 내부 Process들이 For..
· 리눅스
기본 개념 유닉스 운영체제에서 chroot는 현재 실행 중인 프로세스와 차일드 프로세스 그룹에서 루트 디렉터리를 변경하는 작업입니다. 이렇게 수정된 환경에서 실행되는 프로세스는 지정된 루트 디렉터리 밖의 파일들에 접근할 수 없으므로 (즉, 일반적으로는 접근이 불가능하므로) chroot 감옥이라고 부릅니다. 사용 목적 chroot는 다음의 목적에 유용하게 쓰일 수 있습니다. 테스트 및 개발 의존성 제어 호환성 복구 권한 분리 예시로 bash를 사용하는 어떤 프로세스를 chroot로 격리하고자 합니다. 격리된 환경에서는 밖의 파일들에 접근할 수 없으므로 해당 격리 환경에 bash를 사용하기 위한 의존성을 주입해주어야 합니다. 먼저 ldd 명령어를 사용하여 /bin/bash의 의존성을 확인합니다. $ ldd ..
· Spring
이 글은 실시간 알림 기능을 구현하기 위해 풀링, 웹소켓, SSE 중에 어떤 방법이 가장 적절한지 비교하는 포스팅입니다. 요구사항은 서버에서 클라이언트에게 실시간 알림을 전송할 수 있으면 됩니다. 웹소켓은 하나의 TCP 접속에 전이중 통신(양방향 통신) 채널을 제공하는 컴퓨터 통신 프로토콜입니다. 웹소켓은 HTTP 포트 80과 443 위에 동작하도록 설계되었으며 HTTP 프록시 및 중간 층을 지원하도록 설계되었으므로 HTTP 프로토콜과 호환이 됩니다. 또한 HTTP 폴링과 같은 반이중방식에 비해 더 낮은 부하를 사용하고 서버와 클라이언트 간의 실시간 데이터 전송을 가능하게 합니다. 웹소켓 프로토콜을 사용하기 위해 웹소켓 핸드셰이크에서 HTTP 업그레이드 헤더를 사용하여 HTTP 프로토콜에서 웹소켓 프로토..
· JAVA
Java NIO(New I/O)의 ServerSocketChannel과 SocketChannel은 블로킹과 논블로킹 방식을 지원합니다. 논블로킹 방식의 특징은 "제어권을 넘기지 않는다"라고 표현할 수 있겠습니다. 논블로킹 방식은 제어권을 넘기지 않기 때문에 함수 실행 흐름이 그대로 유지됩니다. ServerSocketChannel의 accept() 메소드를 예시로 살펴보겠습니다. serverSocketChannel의 accept() 메소드를 실행해도 논블로킹 방식이기 때문에 결과가 바로 리턴됩니다. 따라서 언젠가는 연결 요청이 올 것을 대비해서 무한 루프 내부에서 연결을 기다려야합니다. while(true) { SocketChannel socketChannel = serverSocketChannel.acc..
· JAVA
버퍼는 읽고 쓰기가 가능한 메모리 배열로 NIO에서는 데이터를 입출력하기 위해 항상 사용합니다. NIO의 버퍼는 저장되는 데이터 타입에 따라서 분류할 수 있고, 어떤 메모리를 사용하느냐에 따라서 다이렉트와 넌다이렉트로 분류할 수 있습니다. 데이터 타입에 따른 버퍼 ByteBuffer: byte 데이터가 저장되는 버퍼입니다. MappedByteBuffer: 파일 내용에 랜덤하게 접근하기 위해서 파일의 내용을 메모리와 맵핑시킨 버퍼입니다. CharBuffer ~ DoubleBuffer: 각 데이터 타입이 저장되는 버퍼입니다. 넌다이렉트와 다이렉트 버퍼 버퍼가 사용하는 메모리의 위치에 따라서 넌다이렉트 버퍼와 다이렉트 버퍼로 분류됩니다. 넌다이렉트 버퍼는 JVM이 관리하는 힙 메모리 공간을 이용하고 다이렉트 ..
총평: 별로입니다. 일단 과제 테스트를 시작하면 건드릴 건 핸들러, 서비스, 레포지토리 정도입니다. ArgumentResolver를 구현하기도 합니다. 이미 구현되어 있는 코드를 보고 스타일을 맞춰가면서 코딩하면 편합니다. 개인적으로 apache - commons-lang3 라이브러리 사용은 처음이었는데 편하고 좋았습니다. getter나 setter를 구현하고 constructor를 구현할 때에는 vscode의 [소스 작업..] 을 잘 활용하는게 좋습니다. Lombok이 없기 때문에 시간을 아껴야 하기 때문이죠.... 혹시나 테스트 코드에서 Order가 에러를 뿜으면 import 문제입니다. junit order를 명확하게 import 해주면 해결됩니다. JdbcTemplate을 사용할 때 JPA만 썼어..
@xftg77g
'분류 전체보기' 카테고리의 글 목록 (3 Page)