분류 전체보기

카테고리 없음

SWT 참고

http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/CatalogSWT-JFace-Eclipse.htm

트러블슈팅

[Spring] Redis 캐시 적용하기 (2/2)

이제 Redis를 이용해 캐시를 적용해보자. 스프링이 제공하는 캐시 추상화 스프링은 AOP 방식으로 메소드에 캐시를 적용하는 기능을 제공하고 있다. 캐시는 @Transactional 어노테이션을 통해 트랜잭션을 제공하는 것과 마찬가지로 AOP를 이용해 메서드 실행 과정에 투명하게 적용된다. 또한 스프링은 특정 기술을 추상화 계층으로 가져가고 개발자에게는 인터페이스를 동일한 형태로 제공한다. 캐시도 마찬가지인데 EhCacheManager, RedisCacheManager등의 다양한 기술들이 모두 CacheManager 인터페이스를 구현하고 있기 때문에 서버의 환경에 맞추어 다양한 캐시 기술들을 선택적으로 적용할 수 있다.. 이렇게 특정 기술에 종속되지 않게 하는 방식을 PSA(Portable Service..

트러블슈팅

[Spring] Redis 캐시 적용하기 (1/2)

프로젝트 개선 중 nGrinder로 부하테스트를 거치며 성능 개선을 위해 캐시를 적용하기로 했다. 캐시 캐시는 데이터를 임시로 저장해준 뒤, 동일한 데이터 요청이 오면 DB에 접근하지 않고 저장된 캐시 데이터를 반환해주는 방식이다. DB 접근 없이 요청을 처리할 수 있기 때문에 성능 개선 측면에서 많은 이점이 있다. 캐시 적용을 위해 고려해야할 사항 1. 어떤 데이터에 캐시를 적용할 것인가 캐시를 적용하는 것이 무조건 성능 개선을 가져오는 것이 아니다. 캐시는 생성, 수정, 삭제 연산보다는 조회 연산이 많은 데이터에 적합하다. 자주 변경되는 데이터에 캐시를 적용하면 데이터 정합성 문제가 발생한다. 💡 데이터 정합성 : 같은 데이터인데 캐시와 DB에 있는 정보가 서로 다른 경우 - 변경이 많은 데이터일수록..

알고리즘/DP

[프로그래머스] 경주로 건설 (BFS, DP) - Java

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 [카카오 인턴] 경주로 건설 더보기 문제 설명 건설회사의 설계사인 죠르디는 고객사로부터 자동차 경주로 건설에 필요한 견적을 의뢰받았습니다. 제공된 경주로 설계 도면에 따르면 경주로 부지는 N x N 크기의 정사각형 격자 형태이며 각 격자는 1 x 1 크기입니다. 설계 도면에는 각 격자의 칸은 0 또는 1 로 채워져 있으며, 0은 칸이 비어 있음을 1은 해당 칸이 벽으로 채워져 있음을 나타냅니다. 경주로의 출발점은 (0, 0) 칸(좌측 상단)이며, 도착점은 (N-1, N-1) 칸(우측 하단)입니다. 죠르디..

트러블슈팅

[Spring] Redis를 통한 세션 불일치 문제 해결 (2/2)

실제 프로젝트에 Redis를 적용해보자 1. 의존성 추가 및 환경 설정 //레디스 implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.session:spring-session-core' implementation 'org.springframework.session:spring-session-data-redis' spring: data: redis: host: 127.0.0.1 port: 6379 build.gradle에 의존성을 추가해주고 applicaiton.yml 파일에 redis 정보를 추가한다. 2. RedisConfig.java @Configuration..

CS

[네트워크] OSI 7계층, TCP/IP, HTTP

OSI 7계층 OSI 7계층은 국제 표준화 기구에서 네트워크 통신이 이루어지는 과정을 7단계로 나눈 네트워크 표준 모델이다. 데이터를 송신할 때는 높은 계층에서 낮은 계층으로 / 수신부에서는 낮은 계층에서 높은 계층으로 데이터를 전달한다. 데이터 캡슐화 : 데이터를 송신할 때 각 계층에서 필요한 정보를 추가해 데이터를 가공하는데 이 때 제어 정보를 담은 헤더나 트레일러를 붙이는 것 헤더는 데이터 앞에 붙고 트레일러는 데이터 뒤에 붙는다 프로토콜 : 통신 규약. 데이터를 송수신하기 위해 정한 규칙 7계층(응용 계층) : 사용자에게 통신을 위한 서비스 제공. 인터페이스 역할 6계층(표현 계층) : 데이터의 형식(Format)을 정의하는 계층 (코드 간의 번역을 담당) 5계층(세션 계층) : 컴퓨터끼리 통신을..

CS

[네트워크] 쿠키, 세션, REST

쿠키와 세션 쿠키 클라이언트의 상태 정보를 클라이언트에 PC에 저장했다가 필요시 정보를 참조하거나 재사용 가능 저장 위치 : 클라이언트 만료 시점 : 쿠키 저장시 설정 세션 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지시키는 기술 저장 위치 : 웹 서버 만료 시점 : 브라우저 종료시 삭제 (기간 지정 가능) 속도 : 쿠키 > 세션 (쿠키는 파일을 읽고, 세션은 요청마다 서버에서 처리를 해야함) 보안 : 쿠키 < 세션 (쿠키는 탈취와 변조가 가능하시만, 세션은 ID값만 가지고 있으므로 상대적으로 안전) REST API REST REST는 HTTP 통신을 활용하기 위해 고안된 아키텍쳐이다. 클라이언트는 URI로 표현된 자원을 HTTP 메서드를 이용해 CRUD 연산..

CS

[운영체제] 기본개념, 커널, 시스템

운영체제 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할 수행 악성 프로그램에 대한 사용자와 운영체제 자신을 보호 운영체제의 목적 처리 능력(throughput) 향상: OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킨다. 반환 시간(turnaround time) 단축: OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킨다. 사용 가능도(availability) 향상: 사용 가능도는 시스템 자원을 얼마나 빨리 제공할 수 있는가를 의미한다. OS는 사용자가 컴퓨터를 사용해야 할 때 자원을 즉시 사용할 수 있게 한다. 신뢰도(..

CS

[운영체제] 메모리 관리, 가상메모리

연속 메모리 할당 멀티 프로세스 환경에서 여러 프로세스를 메모리에 연속적으로 로드하는 방법 고정 분할 방식 고정 분할은 메모리 영역을 분할한 뒤 각 영역에 프로세스를 할당하는 방식이다. 분할된 영역의 크기는 서로 다를 수 있으며, 분할된 크기는 고정된다, 메모리에 올릴 수 있는 프로세스의 수와 각 프로세스의 크기가 제한된다는 단점이 있다. 단편화 문제가 발생할 수 있다. 외부 단편화 : 프로세스를 할당하기 어려울만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상 내부 단편화 : 분할된 크기보다 작은 프로세스가 할당되어 메모리 공간이 남는 경우 가변 분할 방식 할당할 프로세스의 크기에 따라 메모리 공간을 분할하는 방식 메모리 할당 알고리즘을 이용해 가용 메모리 공간에서 프로세스가 로드될 수 있는 메모리..

트러블슈팅

[Spring] Redis를 통한 세션 불일치 문제 해결 (1/2)

세션 불일치 문제 Scale-out을 통해 분산 서버 환경을 구축했을 때 발생할 수 있는 가장 큰 문제점은 역시 세션 불일치 문제이다. 분산 서버 환경에서는 로드밸런서를 통해 트래픽을 분산하여 운영하고, 여러대의 서버는 세션 저장소를 독립적으로 가지고 있다. 만약 클라이언트가 로그인 요청을 하고 로드밸런서를 통해 요청이 A서버로 전달되면 클라이언트의 세션 정보는 A서버에 저장된다. 이후에 클라이언트의 작업 요청이 A서버가 아닌 다른 서버로 전달된다면 해당 서버에는 세션 정보가 존재하지 않기 때문에 문제가 발생한다. 이를 세션 불일치 문제라고 한다. 세션 불일치 문제를 해결하기 위해서 크게 3가지 방법을 적용해볼 수 있다. 1. Sticky Session 방식 해당 클라이언트의 요청과 응답을 처리할 서버를..

jny0
'분류 전체보기' 카테고리의 글 목록