본문 바로가기

반응형

전체 글

(133)
운영체제 정리! -2 HTML 삽입 미리보기할 수 없는 소스 운영체제 메모리의 커널 영역에 적재되는 특별한 프로그램 자원들을 분배/관리하여 다른 프로그램들이 올바르게 실행되도록 운영하는 응용프로그램을 위한 프로그램 하드웨어 ↔️ 운영체제 ↔️ 응용프로그램s 커널 운영체제의 핵심 운영체제가 제공하는 기능들 중 가장 핵심적인 기능 커널이 제공하는 가장 핵심적인 기능? 자원에 접근/조작 하는 기능 응용 프로그램들이 자원에 직접 접근할 경우, 자원을 동시에 사용해 충돌이 일어날 수 있다. A 프로그램과 B프로그램이 동시에, CPU를 사용해 충돌하는 상황 A프로그램이 데이터를 저장하고 있는데, B프로그램이 같은 장소에 데이터를 덮어 쓰는 상황 따라서, 응용 프로그램들이 자원에 접근할 때, 반드시 운영체제를 통해 접근하도록하여, 자원을..
자료 구조 - 트리 구조 정리 Tree Tree = Node + Edge Tree의 특성 사이클이 없다. 사이클이 있으면, 그래프 모든 노드는 자료형으로 표현이 가능 루트에서 한 노드로 가는 경로는 유일한 경로 유일한 경로 : 간선이 중복해서 존재하지 않는 경로. 즉, 가는 길이 하나만 존재. 간선의 개수 = 노드의 개수 - 1 그래프 VS 트리 사이클이 있으면 그래프, 없으면 트리 ! 트리의 순회 방식 4가지 트리의 순회 방식은 우선순위로 따라가면 쉽다. 전위 순회 pre-order 루트부터 항상 왼쪽을 먼저 순회! 🔥우선 순위 : Root ➡️ 왼쪽 자식 ➡️ 오른쪽 자식 1➡️2➡️4➡️8➡️5➡️9➡️3➡️6➡️10➡️11➡️7 중위 순회 in-order 🔥우선 순위 : 왼쪽 서브트리 ➡️ 현재 서브트리의 Root ➡️ 오른쪽..
운영체제 - 기초 HTML 삽입 미리보기할 수 없는 소스 운영체제? 사용자가 컴퓨터를 편리하고, 효율적이게 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 운영체제 역할 프로세스 관리 프로세스, 스레드 스케줄링 동기화 IPC 통신 운영체제에서 작동하는 응용 프로그램을 관리. 현재 CPU를 점유해야 할 프로세스를 결정 및 할당. 프로세스 간 공유 자원 접근과 통신 관리. 저장장치 관리 메모리 관리 가상 메모리 파일 시스템 메인 메모리(1차 저장장치)와 서브메모리(2차 저장장치), NAND를 관리 💡 메인 메모리(1차 저장장치, 주기억장치) 1. 프로세스에 할당하는 메모리 영역의 할당과 해제 2. 각 메모리 영역 간 침범 방지 3. 메인 메모리의 효율적 활용을 위한 가상 메모리 기능 💡 서브메모리(2차 저장장치, 보조기억..
JPA 매핑 애너테이션들! 객체와 테이블 매핑 @Entity JPA가 관리하는 Entity 객체 주의사항 **기본 생성자 필수!** final class, enum, interface, inner class 에서는 사용 불가 저장할 필드에 final 사용 ❌ @Table Entity와 매핑할 테이블 지정 @Entity //name: 매핑할 테이블 이름 @Table(name = "") public class className() { ... } @Entity //catalog: DB catalog 매핑 @Table(catalog = "") public class className() { ... } @Entity //schema: DB Schema 매핑 @Table(schema = "") public class className() {..
스프링 - WebSocket SockJS(스프링) WebSocket Stomp WebSocket을 지원하지 않는 경우를 위해 SockJS라는 소켓 에뮬레이터를 이용해 Http의 다른 기술을 사용한다. SockJS는 스프링을 지원한다. -> 스프링 사용시 SockJS 이용 Stomp는 이들과는 별개로, Pub/Sub 구조의 소켓 통신을 위해 사용한다. TextWebSocketHandler (인터페이스) 텍스트 기반 웹 소켓 핸들러. (이미지나 영상 기반 웹 소켓 핸들러 => BinaryWebSocketHandler) afterConnectionEstablished : 커넥션이 연결될 때, 실행하는 부분 handleTextMessage : 소켓 서버가 메시지를 받았을 때, 실행 afterConnectionClosed : 커넥션이 끊겼을..
[WAS] 쓰레드 풀 요청이 오면, 서블릿 컨테이너에서 요청에 맞는 서블릿을 연결시켜줘야 한다. 이때, 연결은 쓰레드 단위로 수행한다. 즉, WAS는 요청마다 쓰레드를 생성 해, 요청에 맞는 서블릿은 연결시켜준다. 이떄의 장단점은 아래와 같다. 장점 요청마다 쓰레드를 생성해 연결하니까, 동시 요청 처리 가능 자원의 한계까지 처리 가능 하나의 쓰레드가 지연되도, 나머지 쓰레드들은 정상 수행 단점 쓰레드 생성 비용은 매우 비싸고, 큰 문맥 교환 비용이 발생 ➡️ 응답 속도 성능 🔽 쓰레드의 생성에는 제한이 없다 ➡️ 많은 요청이 들어오면, 쓰레드를 계속 생성하다, 과부하로 서버가 죽는다. 쓰레드 풀 WAS에서 일정 수만큼의 쓰레드를 미리 만들어서(톰캣의 Default는 200개), 쓰레드 풀에 넣어놓고 사용한다. 즉, 쓰레드를 ..
[Query DSL] Query DSL 왜 쓸까? Query DSL을 배우기 전, '왜 쓸까?'에 대해 정리 JPA에서 JPQL을 작성할 때 많은 불편함이 있었다. em.createQuery( "select new Project.repository.itemQueryDto(i.id, x.name, ..)" + " from Item i" + " join i.xx x" + ... , ItemQueryDto.class) 컴파일 단계에서 에러를 못 찾음 위 처럼, 문자열을 하나하나 이어 만들어 쿼리문을 짜야하기 때문에 잘못 작성할 경우, 컴파일러 단계에서 에러를 발견할 수 없다. 가독성이 안좋다. 한눈에 보기에도 코드가 잘 안읽힌다. (위 예시는 짧지만, 쿼리문이 더 길어질 경우 정말 보기 힘들다.) 특히, 저 "new Project...()"와 같은 부분이 많..
동시 요청 문제 - ConcurrentHashMap 참고 출처: https://www.youtube.com/watch?v=Ejw0GQLI9z8 Concurrent 클래스 - Concurrent 예시 : ConcurrentHashMap, ConcurrentMap, ConcurrentLinkedQueue 등 - 멀티 쓰레드 환경에서, 쓰레드로 부터 안전하게 관리. (쓰레드 안전한 객체 보장) ➡️ 멀티 쓰레드 환경에선 Concurrent를 자주 사용하는 경우가 많음. - 보통 Concurrent 뒤에 붙은 자료구조 Interface의 구현체. (ConcurrentHashMap ➡️ Map 인터페이스의 구현체 / ConcurrentLinkedQueue ➡️ Queue 인터페이스의 구현체) - 성능이 좋다. - Update 작업에 해당되는 Segment만 잠기고..