공부 STUDY
JAVA 2회독 시작 기록
스프링을 공부하면서 JAVA에 대한 재공부의 필요성을 깨닫고 구멍난 나의 지식을 공부하려 한다. 나는 전공자이고, 기본 베이스가 있으므로 목표는 7일만에 자바 프로그래밍 입문 강의를 완강하는 것이다! 이번 방학 화탱
[SQL 에러] "You have an error in your SQL syntax; check the manual thatcorresponds to your MYSQL server version for the right syntax to use near ~" 원인/해결
[You have an error in your SQL syntax; check the manual thatcorresponds to your MYSQL server version for the right syntax to use near ~] 이 에러의 의미는 다음과 같다. 테이블에서 key 라는 칼럼의 값이 #key#인 것을 모두 가져와라. 즉, key에서 문제가 발생한 것이다. 칼럼의 이름은 예약어를 피해서 작성해야하는데, 이것이 지켜지지 않은 것! 뭐 ...그래서 찾아온SQL 예약어다. ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHA..
[JAVA] 스프링 시작 전, 생활코딩 JAVA + 수업 완강 회고록(2)
https://changel.tistory.com/141 스프링 시작 전, 생활코딩 JAVA 입문 수업 완강 방학이 시작되었다. 컴퓨터 공학 전공과정을 밟고 있는 나는 다음 학기에 3학년 1학기를 시작하게 된다. 한 학기 휴학을했었기에 정규적으로 세 개의 학기가 남은셈이다. 내 상태를 정리해보자 changel.tistory.com 이틀전, 자바 입문 수업을 빠르게 완강했다. 그리고 오늘은 자바 입문 수업 외 추가 수업인 제어문, 메소드, 객체 지향 프로그래밍, 상속까지 자바의 모든 수업과정을 완강했다. 방학 시작 후 첫 번째 목표였던 '자바 공부 하기/ 생활코딩 완강하기'를 달성한 셈이다. 나는 전공자이기도하고 프로그래밍에대한 베이스가 있는편이었기에 빠른 시간 회독할 수 있었다. 물론 완벽한 것은 아님!..
[JAVA] 문자의 비교 : == 와 equals의 차이
원시 데이터 타입(primitive) 7가지 --> boolean, int, double, short, long, float, char 원시 데이터 타입이 아닌 것: String,. Array, Date, File, ... 기본적으로 원시 데이터 타입들은 같은 데이터라면 heap 안에서 같은 메모리 공간을 가리키게 된다. int p1 = 1 ---> 같은 매모리 공간을 가리킴 (p1 == p2 는 true) int p2 = 1 이렇게 되면 == 연사자를 사용하면 p1과 p2는 같다고 인식하게 됨. p1 == p2 ---> true 하지만 String은 특혜를 받고있어서, primitive가 아님에도 같은 데이터면 같은 메모리 공간을 가리킨다. (원시 데이터 타입처럼 동작한다) String o3 = "ja..
스프링 시작 전, 생활코딩 JAVA 입문 수업 완강
방학이 시작되었다. 컴퓨터 공학 전공과정을 밟고 있는 나는 다음 학기에 3학년 1학기를 시작하게 된다. 한 학기 휴학을했었기에 정규적으로 세 개의 학기가 남은셈이다. 내 상태를 정리해보자면 비전공자가 아니며, 프로그래밍 경험이 어느정도 있고 베이스가 있는 상태이다. 그렇지만 무언가 프로젝트를 하거나 본격적으로 개발을 하기에는 부족한 상태? 그래서 전문적으로 프로젝트를 협업 진행하는 교내 동아리에 가입했고, 백엔드/서버 파트에 투입될 예정이다. 하지만 준비가 덜 되었다고 생각해서 공부를 하면서 투입하기로...! 했다 물론 나의 상황은 동아리장님과 동아리원들이 알고 있음ㅎ 아무튼 스프링 프레임워크부터 차근차근 공부해야하는데, C 나 파이썬은 다루어봤어도 자바는 예전에 찍먹한게 다라 우선 자바부터 빠르게 짚고..
[C] fgetc() 함수의 반환값은 int
전공 공부하는데 fget() 함수의 반환값이 왜 정수형인지 이해가 되지 않아서 찾아봤고! 그 이유를 알게되었다. 기록해둬야지. 우선, fgetc 함수의 원형은 다음과 같다. int fgetc(FILE * fp); fgetc는 문자 하나를 읽어들이는 함수인데, 왜...? - > char로 반환하면 문제가 생길 수 있기 때문이다. 다음 예를 보자. char ch; while( (ch=fgetc(fp)) != EOF ) { //something to do } fgetc 함수가 반환하는 값을 char형의 ch 변수에 대입한 후 이 변수와 EOF를 비교하는 반복문이다. 일반적으로는 파일의 끝을 만나기 전까지 while문을 돌 것이라고 예측할 것이다. 이제 여기서 발생할 수 있는 문제점을 살펴보자. 1. fgetc..
[C] 동적 메모리 | memset() 함수
전공 수업을 공부하던 중 안교수님이 따로 가르쳐두신 memset() 함수에 대해 정리해보고자 한다! 메모리를 초기화 해줄 수 있는 memset() 함수 1. C언어, C++에서의 memset 함수 memset 함수는 메모리의 내용(값)을 원하는 크기만큼 특정 값으로 세팅할 수 있는 함수 이다. 그냥 직관적으로 "memory + setting 메모리를 (특정 값으로) 세팅한다." 이렇게 생각하면 편할 것 같다. 함수 원형 void* memset(void* ptr, int value, size_t num); 첫번째 인자 void* ptr은 세팅하고자 하는 메모리의 시작 주소 즉, 그 주소를 가리키고 있는 포인터가 위치하는 자리이다. 두번째 인자 value는 메모리에 세팅하고자 하는 값이다. int 타입으로 ..
[C] 동적 메모리 | malloc(), calloc(), realloc() 함수를 이용한 동적 메모리 할당
메모리의 구조에 대해 이해해 보았으니 이제 동적 메모리 할당에 대해 정리하고자 한다. C 언어가 급격하게 어려워지고 이씀 ㅠ 기말이 좀 무서워지려해 malloc 함수 - 동적으로 메모리를 할당하는 함수 (힙 영역에 메모리를 할당) #include void* malloc(size_t size)// malloc 함수의 원형 함수 호출시 할당하고자 하는 메모리의 크기를 바이트 단위로 전달하면 그 크기만큼 메모리를 할당하게 된다. 그리고 할당한 메모리의 주소(첫 번째 바이트의 주소)를 리턴한다. 메모리 할당에 실패하면 NULL이 리턴된다. 리턴형이 void*(void 포인터) ?? malloc은 단순히 메모리만 할당하는 함수이기 때문에 개발자가 어떠한 데이터 형을 저장하는지 예측할 수 없다. 예를들어 4바이트를..
[C] 메모리 구조 | 스택, 힙, 데이터영역 | stack, Heap, Data
전공 수업 내용을 복습하던 중 동적 메모리와 관련된 함수들이 대거 나와서 정리의 필요성을 느꼈다. 안교수님 너무 꼼꼼하시다 하 하 하 하 우선 동적 할당을 이해하려면 메모리 구조를 이해할 필요가 있다. 그래서 이번 글에서는 메모리 구조를 먼저 정리하려 한다. C언어의 메모리 구조 프로그램을 실행시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당해준다. 할당되는 메모리 공간은 크게 스택(Stack), 힙(Heap), 데이터(Data)영역으로 나뉘어진다. 이러한 메모리 공간이 어떠한 용도로 언제, 어디서 할당되는지 알아보도록 하자. 할당 시기 : 프로그램이 실행될 때마다 할당 장소 : 메인 메모리(RAM) 할당 용도 : 프로그램 실행 시 필요한 메모리 공간(지역변수, 전역변수 선언을 위해)..
[C언어] 헷갈리는 getchar() 함수 이해하기
전공수업 C 언어 문자열 단원을 공부하던 중 getchar() 함수의 버퍼 개념에 대해 확실히 알고자 글을 정리한다. getchar() 버퍼에 데이터가 있을 때 = > 버퍼 가장 앞의 데이터를 반환한다 버퍼에 데이터가 없을 때 = > 엔터(‘\n’)가 올 때까지 사용자로부터 문자를 받아서 버퍼에 저장하고 가장 앞의 데이터를 반환한다 이때, 버퍼는 라고 생각하면 된다. getchar()함수를 연속으로 썼을 때 오류가 생긴다면 버퍼의 데이터 문제일 가능성이 크다. int main(void) { char s1; getchar(); s1=getchar(); } 처음 getchar()에서 ‘h’입력 => 버퍼에 ‘\n’이 남..