프로그래밍 언어 74

[ C ] 07. 열거형

[ 열거형 ] 열거형은 정수형 상수에 이름을 붙여 코드를 이해하기 쉽게 해준다. 만약 여러개 정수형 상수를 선언한다면 두세 개까지는 괜찮지만 개수가 많아지면 귀찮아 질 것이다. 열거형을 사용하면 정수형 상수를 좀 더 편하게 정의할 수 있다. enum 열거형이름{ value1 = 초깃값, value2, value3 }; 열거형은 정의로만 사용이 안되고 변수로 선언해서 사용해야 한다. enum 열거형이름 변수이름; #include enum DayOfWeek{ // 열거형 정의 Sunday = 0; // 초깃값 할당 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main(){ enum DayOfWeek week; // 열거형 변수 선언 week ..

[ C ] 06. 포인터연산

[ 포인터연산 ] 포인터로 선언한 변수에는 메모리 주소가 들어있다. 이 포인터 변수에서 연산을 할 수 있다. 마찬가지로 메모리 주소에 일정 숫자를 더하거나 빼면 메모리 주소가 증가,감소 한다. 즉, 포인터 연산을 하면 다른 메모리 주소에 접근할 수 있으며 메모리 주소를 손쉽게 옮겨 다니기 위해서 사용한다. 여기서 메모리 주소가 커지는 상황을 순방향 이동(forward), 메모리 주소가 작아지는 상황을 역방향이동(backward)라 하겠다. 포인터연산으로 메모리 주소 조작하기 #include int main(){ int numArr[5] = { 11, 22, 33, 44, 55 }; int *numPtrA; int *numPtrB; int *numPtrC; numPtrA = numArr; // 배열 첫 번..

[ C ] 05. 메모리와 포인터의 사용

[ 메모리와 포인터의 사용 ] #include #include // malloc, free 함수 int main(){ int *numPtr; // int형 포인터 선언 numPtr = malloc(sizeof(int)); // int의 크기 4바이트만큼 동적 메모리 할당 *numPtr = 10; // ****포인터를 역참조 한뒤 값 할당**** printf("%d\n", *numPtr); // 10 , 포인터를 역참조하여 메모리에 저장된 값 출력 free(numPtr); // 동적 메모리 해제 return 0; } malloc함수에 실제로 값을 저장할 때는 시스템의 한계(RAM, 디스크)이상 저장할 수 없다. 메모리 내용을 한꺼번에 설정하기(memset) memset함수를 사용하면 메모리의 내용을 원하는..

[ C ] 04. 포인터의 형변환

[ 포인터의 형변환 ] #include #incldue // malloc, free 함수가 선언된 헤더파일 int main(){ int *numPtr = malloc(sizeof(int)); // 4바이트만큼 메모리 할당 char *cPtr; *numPtr = 0x12345678; cPtr = (char *)numPtr; // int 포인터 numPtr을 char 포인터로 변환. 메모리 주소만 저장됨 printf("0x%x\n", *cPtr); // 0x78 : 낮은 자릿수 1바이트를 가져오므로 0x78 free(numPtr); // 동적메모리 해제 return 0; } # 실행 결과 0x78 numPtr에 메모리를 할당하고 역참조하여 0x12345678을 저장했다. 그리고 cPtr = (char *)n..

[ C ] 03. 포인터와 역참조 연산자

[ 포인터와 역참조 연산자 ] 포인터 변수에는 메모리 주소가 저장되어 있다. 이 때 메모리 주소가 있는 곳으로 이동해서 값을 가져오고 싶다면 역참조 연산자 *를 이용한다. #include int main(){ int *numPtr; // 포인터 변수 선언 int num1 = 10; // 정수형 변수를 선언하고 10 저장 numPtr = &num1; // num1의 메모리 주소를 포인터 변수에 저장 printf("%d\n", *numPtr); // 10 // 역참조 연산자로 num1의 메모리 주소에 접근하여 값을 가져온다 return 0; } # 실행 결과 10 역참조 연산자 *는 포인터 앞에 붙인다. 다음과 같이 numPtr 앞에 *를 붙이면 numPtr에 저장된 메모리 주소로 가서 값을 가져온다. 여기..

[ C ] 02. 문자열 관련 자주 쓰이는 함수

[ atoi, atof, atol ] 1. atoi, atof, atol 함수의 기원 atoi 함수를 살펴보면 a - to - i 이렇게 나눌 수 있다. a=char(AScII), i = int atoi (char to int) = 문자열을 정수 타입으로 atof (char to double) = 문자열을 실수 타입으로 atol (char to long int) = 문자열을 long 정수 타입으로 중요한 것은 여기서 char는 char[N], char*로 표현이 되는 문자열을 말한다. // ( char * to int )가 더 정확한 표현같음? C++에서는 string클래스에 의해서 문자열을 string으로 표현할 수 있는데, C언어에서는 string클래스가 존재하지 않기 때문에 char배열을 이용하여 ..

[ C ] 01. 동적할당이란?

[ 동적할당 ] 동적할당이라는 것은 프로그램 실행중에 동적으로 메모리를 할당하는 것을 말한다. 여기서 중요한것은 동적으로 메모리를 할당할때 Heap(힙)영역에 할당한다는 것이다. # 함수원형 void* malloc(size_t size) 해당함수를 사용하기 위해서는 헤더파일을 include해야한다. 함수 동작은 매개변수에 해당하는 size_t 만큼의 크기만큼 메모리를 할당하고 성공하면 : 할당한 메모리의 첫 번째 주소 리턴 실패하면 : NULL 리턴 제일 중요한점 !! 할당한 메모리는 꼭 해제해주어야한다.!! 그렇지 않으면 메모리 릭, 메모리 누수가 발생한다. 함수 원형 메모리 할당 void *malloc(size_t size); - 할당받을 메모리 크기를 인자로 받는다 - ex) int * arr = ..

[ C ] 00. 함수 호출방식

[ 함수 호출방식 ] Call-by-value 값에 의한 호출 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.(c++의 경우 stack frame) => 함수가 종료되면 해당 공간은 사라진다. 스택 프레임(Stack Frame) : 함수 호출시 할당되는 메모리 블록(지역변수의 선언으로 인해 할당되는 메모리 블록) call-by-value 값에 의한 호출방식은 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가진다. 따라서 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다.!! 장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존이 된다. 단..

[ DB ] 01. SQL

1. SQL 저장된 데이터(정형화)를 사용하는 언어가 SQL이다. (몇개 테이블을 쓸 것인가) - 조인 어떤 것을 조회할 것인가? = 무엇을 추출할 것인지 어떤 조건이 있는가? 1. 초기 환경설정 server - setwork - admin - ( listerner.ora , tnsnameora ) - 모두 영문 내용이어야함 오류 발생시 시스템관리도구 - 서비스 - OracleTNSListener 다시시작 scott 계정생성과 권한부여하기 set linesize 300; -> 접속할때마다 해줘야함 2. 기본문법 1. SQL 개요 1. DDL(데이터 정의 언어) CREATE : 데이터베이스나 테이블 등을 작성한다. DROP : 데이터베이스나 테이블 등을 삭제한다. ALTER : 데이터베이스나 테이블 등의 ..

[ DB ] 00. 데이터베이스란?

0. 데이터 베이스란? 대량의 정보를 컴퓨터가 효율적으로 접근할 수 있도록 가공 및 저장한 것을 '데이터베이스'라고 한다. 계층형 데이터 베이스(HDBMS) 관계형 데이터베이스(RDBMS) 열과 행으로 이루어진 2차원 표형식으로 데이터를 관리 가장 많이사용 객체지향 데이터베이스(OODB) XML 데이터베이스(XMLDB) 키-밸류형 데이터스토어(KVS) 정형화 데이터 처리 프로그램 DB Oracle 대부분의 기업들이 사용(일반적) 데이터 저장, 대량처리 가능 MySQL 보통 중소기업 MSSQL 보통 중소기업 티베로 1. 데이터베이스 정규화 관계형 데이터베이스 설계시 중복을 최소화하도록 데이터를 구조화 하는 작업 1. 함수 종속성 관계형 데이터베이스의 설계에서 중복된 데이터가 최소화되도록 데이..

[ JAVA ] 03. Spring에서 JDBC를 활용하여 DB사용하기

1. JDBC JDBC(Java Database Connectivity)는 자바에서 데이터베이스를 접속하기 위한 기술 19-12-23 월 드라이버로딩 드라이버를 로딩한다는 것은 JVM이 어 떤 DBMS를 사용하는지 인식시키는 작업으로 java에서 오라클을 연동할 수 있도록 오라클에서 제공해준 드라이버 파일을 JVM의 메모리에 로딩시키는 작업을 하는 단계 커넥션설정하기 우리가 프린트기를 설치하고 케이블로 연결하는 것처럼. 혹은 네트워크에서 공유된 프린트기를 찾아 연결하는 것과 같이 DBMS에 저장된 데이터에 접근하기 위해서는 DBMS에 접속을 해야 합니다. getConnection Statement객체 생성하기 SQL문실행하기 결과처리 자원반납 statament의 주된 역할 => dbms의 sql을 실행 ..

[ JAVA ] 02. Spring Framework를 이용해 WEB만들기

20-01-21 화 Spring Framework 내부에서 객체를 관리 객체생성에 관여하는 기능 : 컨테이너 가 객체를 관리하는 방식 : IOC(Inversion of Control) 컨테이너 => 스프링의 컨셉을 이해하는데 가장 중요 WEB , DB연동, 로그, 트랜잭션 스프링에서는 객체를 Bean이라고 불러요 스프링은 우리가 일반적으로 만드는 방식대로 클래스를 만들고 어떻게 개발하는지 방식이 정해져있다. 클래스를 만드는 방식과 운영방식이 정해져있는 것. 20-01-22 수 스프링의 개요 1. 프레임 워크 완성된 소프트웨어가 아니라 어떤 문제를 해결하기 위해서 잘 설계된 미완의 모듈로 spring같은 경우 자바 개발자들이 공통으로 사용할만한 기능을 미리 정의해 놓은 모듈이다. ..

[ JAVA ] 01. 자바를 이용해 WEB 만들기

WEB 19-12-30 월 우리가 말하는 웹서버는 : IIS , apache 등등(웹서버 역할을 하는 소프트웨어) 이런 소프트웨어가 설치된 PC가 웹서버 client에 보여주기 위한 기본 기술(프론트엔드) : html, css, javascript, jQuery WAS(Web Application Server) Web logic, JEUS, Tomcat(Test Server) => 내부적으론 웹서버의 기능도 가지고 있으면서 자바를 실행할 수 있는 컨테이너의 기능을 갖고 있다. 결과를 조회해서 -> Servlet & JSP (서버기술 Application) Client Page + Web application/Server + DBMS(Oracle...SQL...) + Servlet&JSP => Spring..

[ JAVA ] 00. 자바의 기본 문법

0. basicJAVA 단순 코더가 아니라 구조를 바꿀 수 있어야 한다. R&D에서 개발할 거면 전체적인 흐름을 파악할 수 있어야 한다. 0. 초기 환경설정 jdk 다운로드 실행 환경설정 JAVA_HOME PATH 에디터 다운로드 eclipse edieplus 1. 자바 application 0. 실행환경 java "인터프리터"로 실행 start point -> public static void main(String [agrs]){} jar파일 - java아카이브. (rt.jar) => API 라이브러리 jar을 JVM에 올려놓으면 알아서 실행 output -> 자동으로 bin폴더에 저장 소스파일 -> src 폴더에 저장 1. 메모리 static / stack / heap ​ / -실행될 파일이 올라온다..