본문 바로가기
728x90

Team92

[CS스터디] Java 8 & Java 9 Java 8 features: Lambda expressions Functional interfaces Default methods in interfaces Stream API Date and Time API Optional class Nashorn JavaScript engine PermGen space removed Parallel array sorting 코드를 단순화하고 가독성을 높이는데 도움 Lambda expressions anonymous function을 만들기 위한 식 함수를 다른 함수에 인자로 전달할 수 있다. 코드가 간결해지고 가독성이 좋아진다. 특히 Collection 을 사용할 때 좋다. List list = new ArrayList(); list.add("Java"); list... 2023. 4. 23.
[CS스터디] REST REST Representational State Transfer 웹 서비스를 구현하는 아키텍처 스타일 중 하나 클라이언트와 서버 사이의 통신 방식을 규정한다. HTTP 프로토콜을 기반으로 하며, 간단하고 확장성이 높은 아키텍처로 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 제공한다. 아파치 HTTP 서버 프로젝트의 공동 설립자인 로이 필딩의 2000년 논문에서 처음 소개되었다. 발표 당시 웹이 HTTP의 설계 상 우수성을 제대로 사용하지 못하고 있어 웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST를 소개했다. HTTP 프로토콜을 의도에 맞게 디자인하도록 유도하고 있다. HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD Operatio.. 2023. 4. 15.
[CS 스터디] 뮤텍스와 세마포어 공유자원과 임계 영역 공유자원 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등의 자원이나 변수를 의미한다. 2개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태 race condition 라고 한다. 임계 영역 (critical section) 여러 프로세스, 스레드가 데이터를 공유하며 수행될 때, 공유 자원에 접근하는 부분 공유 자원에 접근할 때, 순서 등의 이유로 결과가 달라지는 영역 -> 공유 자원을 여러 프로세스, 스레드가 동시에 접근하는 경우, 잘못된 결과가 만들어질 수 있기 때문에 한 프로세스가 임계 구역 내에 있을 때는 다른 프로세스의 접근을 막아야 한다. Busy Waiting 아무것도 하지 않는 빈 반복문을 계속 돌다가 임계 .. 2023. 4. 11.
[CS 스터디] 교착 상태 교착 상태 deadlock 2개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 결과적으로 아무것도 완료되지 못하는 상태 2개 이상의 프로세스가 공유가능한 자원을 사용할 때 발생할 수 있는 것 교착 상태의 조건 상호배제 (Mutual Exclusion) 프로세스들이 필요로 하는 자원에 대해 배타적이다. 즉, 자원은 한 번에 한 프로세스만 사용할 수 있다. 점유대기 (Hold and Wait) 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다. 비선점 (No preemption) 어떤 한 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 다른 프로세스가 뺏을 수 없다. 순환대기 (Circular Wait) 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. 4.. 2023. 3. 19.
[CS 스터디] 멀티 프로세스와 멀티 스레드 프로그램 .exe 파일 같이 컴퓨터에서 실행할 수 있는 파일 하드 디스크 등에 저장되어 있는 실행코드 프로세스 실행 중인 프로그램 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태 프로그램에 사용되는 데이터와 메모리 등의 자원과 스레드로 구성된다. 스레드 프로세스 내에서 실제로 작업을 수행하는 주체 하나의 프로세스에는 반드시 한 개 이상의 스레드가 존재 운영체제가 시스템 자원을 효율적으로 관리하기 위해 스레드를 사용한다. 프로세스와 스레드의 차이 프로세스는 컴퓨터의 자원을 분할해서 각각 고유의 영역을 갖지만 스레드는 프로세스와 달리 주어진 전체 자원을 다른 스레드와 함께 사용한다. 멀티 태스킹 CPU가 동시에 여러 작업(프로그램, 프로세스, 스레드, 태스크)을 수행하는 경우 CPU의.. 2023. 3. 11.
[CS 스터디] TDD TDD Test Driven Development. 테스트 주도 개발 짧은 개발 주기의 반복에 의존하는 개발 프로세스 작은 단위의 테스트케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복해서 구현한다. TDD 개발 순서 먼저 요구사항을 검증하는 자동화된 테스트케이스를 작성한다. 해당 테스트케이스를 통과하기 위한 최소한의 코드를 생성한다. 작성한 코드를 표준에 맞도록 리팩토링한다. TDD의 효과 빠르게 피드백을 받을 수 있다. 이미 완성된 코드를 가지고 테스트해서 발견하는 문제는 정확하게 어떤 것이 문제인지 파악하기 어렵다. 작성한 코드가 가지는 불안정성을 개선할 수 있다. 사용자에게 가기 전에 문제가 없는지 먼저 진단할 수 있다. 프로그래머의 오버 엔지니어링을 방지한다. 테스트를 통과하기 위한 .. 2023. 3. 4.
728x90