

'IT' 카테고리의 다른 글
대문자, 소문자 변환 (0) | 2024.06.10 |
---|---|
split() 함수로 문자열 자르기 (0) | 2024.06.09 |
Integer.parseInt() (0) | 2024.06.09 |
배열(Array) 정렬하기 (0) | 2024.06.09 |
재귀함수란? (0) | 2024.06.09 |
대문자, 소문자 변환 (0) | 2024.06.10 |
---|---|
split() 함수로 문자열 자르기 (0) | 2024.06.09 |
Integer.parseInt() (0) | 2024.06.09 |
배열(Array) 정렬하기 (0) | 2024.06.09 |
재귀함수란? (0) | 2024.06.09 |
split() 함수로 문자열 자르기 (0) | 2024.06.09 |
---|---|
replace() / replaceAll() 사용법 (0) | 2024.06.09 |
배열(Array) 정렬하기 (0) | 2024.06.09 |
재귀함수란? (0) | 2024.06.09 |
Docker(도커)란? (1) | 2024.06.08 |
replace() / replaceAll() 사용법 (0) | 2024.06.09 |
---|---|
Integer.parseInt() (0) | 2024.06.09 |
재귀함수란? (0) | 2024.06.09 |
Docker(도커)란? (1) | 2024.06.08 |
정적 웹 페이지와 동적 웹 페이지 (0) | 2024.06.08 |
-재귀함수란 자기 자신을 호출하는 함수를 말한다. 종료 조건이 충족될 때까지 반복적으로 스스로를 불러내면서 주어진 작업을 수행하는 것이다.
재귀함수는 호출될 때마다 메모리의 스택에 쌓이게 된다. 한계치 이상으로 호출돼서 스택이 넘처버리면 메모리 부족으로 에러가 발생하게 된다.
속도 면에 있어서도 재귀함수는 jump가 잦아서 반복문에 비해 시간을 더 소모한다.
이런 문제를 해결하기 위해 많은 언어들에서 꼬리 재귀 최적화 (Tail Call Optimization) 라는 기능을 제공한다.
재귀함수를 컴퓨터가 재해석해서 선형 알고리즘으로 만들어 실행한느 것이다.
그럼 아무리 반복이 많아도 스택이 넘치는 일은 일어나지 않는다.
재귀함수가 꼬리 재귀가 되려면 return하는 값이 함수 그 자체만 호출하는 형태이여야 한다. ex) canTailRecurse(arg)
다른 것(들)이 섞여 return: 꼬리재귀 불가 ex) n * canTailRecurse(arg)
하노이의 탑을 재귀함수로 수행하는 코드
function hanoi(num, from, to, other) {
if(num == 0) return;
hanoi(num - 1, from, other, to);
console.log(${from}번에서 ${to}로 옮긴다.);
hanoi(num - 1, other, to, from);
}
인자로는 출발지와 목적지, 그리고 나머지 기둥의 번호를 받는다.
스스로를 호출하는 코드가 두 번있고, 그 사이에 원반을 어디에서 어디로 한 번 옮길지를 출력
첫 번째 호출에서는 받아온 원반 개수보다 하나 적은 원반들을 목적지가 아닌 곳으로 재귀적으로 이동시킨다. 그 다음에는 맨 아래 원반을 목적지로 이동시키고 마지막으로, 다른 곳으로 옮겼던 원반들을 그 위에 얹는 것
Integer.parseInt() (0) | 2024.06.09 |
---|---|
배열(Array) 정렬하기 (0) | 2024.06.09 |
Docker(도커)란? (1) | 2024.06.08 |
정적 웹 페이지와 동적 웹 페이지 (0) | 2024.06.08 |
TCP, UDP (0) | 2024.06.06 |
도커는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다.
도커 이미지들은 DockerHub이라는 곳에 업로드돼서 공유되고 다운받아질 수 있다.
그리고 이렇게 이미지로 저장된 항목들이 함께 연결돼서 동작하도록 설정된 상태를 명령어 텍스트나 문서 형태로 저장할 수도 있다.
- 도커는 컴퓨터에 바로 설치하지 않는다. 각각을 컨테이너라고 불리는, 독립된 가상 공간을 만들어내서 복원한다. 다른 버전의 자바를 돌리는 서비스들도 각각의 컨테이너 안에서, 서로 방해받는 일 없이 돌아갈 수 있는 것이다.
도커는 OS까지 내려가지 않고 실행 환경만 독립적으로 돌리는 거라서 컴퓨터에 직접 요소들을 설치한 거랑 별 차이 없는 성능을 낼 수 있고 가상 컴퓨팅보다 훨씬 가볍고 빠르게 각각을 설치하고 실행하고 켜고 끄고 서로 연동하고 할 수 있다.
서버를 고쳐야하거나 일부를 업그레이드 해야하는 경우에는, 일일이 요소들을 정지하고 지우거나 새로 깔거나 할 필요없이 그냥 컨테이너들을 통째로 교체해서 새로 실행해버리면 된다.
서버를 관리하고 서비스들을 배포하는 일이 전과는 비교를 할 필요없이 쉬워진 것이다.
배열(Array) 정렬하기 (0) | 2024.06.09 |
---|---|
재귀함수란? (0) | 2024.06.09 |
정적 웹 페이지와 동적 웹 페이지 (0) | 2024.06.08 |
TCP, UDP (0) | 2024.06.06 |
테스트 (0) | 2024.06.05 |
접속 시마다 내용이 변할 필요가 없는 사이트들, 예를 들어 어떤 회사나 학교의 소개 페이지라던가 댓글 기능이 없는 블로그 페이지 등에 사용될 수가 있다.
동적 웹 페이지는 주식 가격, 날씨 정보, 뉴스 및 스포츠 업데이트와 같이 정보가 자주 변경되는 곳에 사용된다.
동적 웹 페이지를 만드는 데 사용되는 도구는 CGI (Common Gateway Interface), ASP (Active Server Pages), JSP (Java Server Pages), ASP.NET, AJAX (Asynchronous JavaScript and XML) 등이 있다.
재귀함수란? (0) | 2024.06.09 |
---|---|
Docker(도커)란? (1) | 2024.06.08 |
TCP, UDP (0) | 2024.06.06 |
테스트 (0) | 2024.06.05 |
변수? 객체? 클래스? (1) | 2024.06.04 |
데이터 입출력 구현 - 데이터 저장소 (0) | 2024.06.15 |
---|---|
화면 설계 - UI 설계 (0) | 2024.06.13 |
화면 설계 - UI 요구사항 확인 (0) | 2024.06.13 |
요구사항 확인 - 현행 시스템 분석 (0) | 2024.06.11 |
End point 간 신뢰성 있는 데이터 전송을 담당하는 계층
결과적으로 데이터의 손실이 발생할 것이다.
TCP의 문제점
TCP, UDP의 특성을 파악하고 상황에 따라 적합한 프로토콜을 사용할 수 있다.
TCP, UDP의 헤더에 대해 파악하고 성능 개선에 이용할 수 있다.
Docker(도커)란? (1) | 2024.06.08 |
---|---|
정적 웹 페이지와 동적 웹 페이지 (0) | 2024.06.08 |
테스트 (0) | 2024.06.05 |
변수? 객체? 클래스? (1) | 2024.06.04 |
컴파일 언어 & 인터프리터 언어 (0) | 2024.06.04 |