1. 개발환경
1) 개발환경 구축
- 정의: 응용 소프트웨어의 개발 편의성과 성능 향상을 위해 하드웨어 및 소프트웨어 환경을 구축하는 과정
- 도구의 분류
- 빌드 도구: 코드 빌드 및 배포 (ex: Ant)
- 구현 도구: 코드 작성, 디버깅, 수정 (ex: Eclipse, Spring, VS Studio)
- 테스트 도구: 기능 검증 및 품질 향상 (ex: xUnit)
- 형상 관리 도구: 코드 및 문서의 버전 관리 (ex: Git)
2) 개발환경 구성요소
(1) 서버 하드웨어
- 웹 서버(정적) → 클라이언트 요청을 받아 HTML 문서 전송 (ex: Apache)
- WAS(동적) → 웹 서버와 DB 서버 사이에서 데이터 처리 (ex: Tomcat)
- DB 서버 → 데이터 저장 및 관리 (ex: MySQL Server)
- 파일 서버 → 파일 저장 및 전송 (ex: AWS S3)
(2) 클라이언트 하드웨어
- 클라이언트 프로그램 → 설치형 프로그램 (ex: Visual Basic)
- 웹 브라우저 → 서버와 웹 통신 (ex: Chrome)
- 모바일 앱 → 앱스토어에서 다운로드 가능한 앱
- 모바일 웹 → 모바일 브라우저에서 웹 서비스 제공
(3) 소프트웨어 개발환경
- 운영체제 (OS) → 하드웨어와 소프트웨어를 연결 (ex: Windows, Linux)
- 미들웨어 → 다양한 환경에서 실행 가능하게 함 (ex: JVM, Tomcat)
- DBMS → 데이터 관리 시스템
3) 서버 개발 프레임워크
- 프레임워크: 재사용 가능한 소프트웨어 개발 틀
- 특징: 모듈화, 재사용성, 확장성, 제어의 역행
2. 프로그래밍
1) 데이터 타입
- 정수형: int, long
- 실수형: float, double
- 문자형: char, string
- 논리형: boolean
2) 변수
- 정의: 데이터를 저장하는 공간
- 규칙: 숫자로 시작 금지, 공백 금지, 예약어 사용 금지
3) 출력
(1) C언어
#include <stdio.h>
int main() {
printf("Hello");
return 0;
}
(2) Java
class Example {
public static void main(String[] args) {
System.out.println("Hello");
}
}
- System.out.print() → 개행 없음
- System.out.println() → 개행 있음
- System.out.printf() → 포맷 지정 가능
(3) Python
print("Hello")
print("Hello", end="")
4) 배열
- C언어: int arr[5] = {1, 2, 3};
- Java: int[] arr = {1, 2, 3};
5) 포인터 (C언어)
int a = 10;
int *b = &a;
6) 파이썬 자료형
- 리스트: [1, 2, 3]
- 튜플 (수정 불가): (1, 2, 3)
- 세트 (중복 제거): {1, 2, 3}
3. 운영체제
1) 기본 명령어
- ls → 현재 디렉토리 파일 목록 확인
- cat → 파일 내용 출력
- fork → 새로운 프로세스 생성
- chmod → 퍼미션 수정
- uname → 시스템 정보 확인
- pwd → 현재 경로 확인
2) 프로세스와 스레드
- 프로세스: 실행 중인 프로그램
- 스레드: 프로세스 내에서 CPU를 할당받아 실행되는 단위
3) 페이징 기법
- 페이지 크기가 작아질수록 페이지 개수 증가, 페이지 테이블 크기 증가, 내부 단편화 감소
4. 네트워크
1) 전송 매체 및 MAC
- CSMA/CD: 충돌 감지 후 재전송 (사용 안 함)
- CSMA/CA: 충돌 방지 후 전송
2) IP 주소
- IPv4: 32비트 (20 Octet)
- IPv6: 128비트 (16진수, 40 Octet)
3) 라우팅 프로토콜
- IGP (내부 라우팅) → RIP, OSPF
- EGP (외부 라우팅) → BGP
4) TCP/IP
- TCP 헤더 크기: 20~60 바이트
- IP 헤더 크기: IPv4 (20 Octet), IPv6 (40 Octet)