2021/01(30)
-
Languague/C , C++ , C#
2021.01.15
[C언어/C++] 구조체 사용법 & 예제 총정리
구조체란? 구조체란 하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형입니다. 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이며 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있습니다. 구조체는 똑같은 변수를 여러번 사용해야 하는 경우에 효과적으로 사용할 수 있습니다. 예를 들어, C언어를 이용해서 콘솔로 간단한 성적 시스템을 만든다고 가정해봅시다. 이 주소록에는 학생의 국어, 수학, 영어 점수를 저장해야 합니다. 만약 구조체를 사용하지 않는다면 여러명의 학생의 성적을 구해야 할 경우 일일이 변수를 계속해서 선언해주어야 할 것입니다. 하지만 구조체를 사용하면 여러개의 변수를 하나로 묶어서 관리할 수 있게 됩니다. 그룹화할 때 같은 자료형을 가진 변수들을 ..
-
Languague/C , C++ , C#
2021.01.14
2
[C언어/C++] 함수 포인터 사용법 & 예제 총정리
함수의 주소 변수를 선언하면 메모리 공간이 할당되고 그 공간의 위치가 주소로 존재하듯이 함수를 선언해도 변수와 마찬가지로 메모리에 공간이 할당되며 그 위치를 표현하는 주소가 생겨납니다. C언어 코드는 컴파일이 되면 기계어로 변경되고 프로그램이 실행되면 코드 세그먼트라는 메모리 영역에 위치하게 됩니다. 즉, 함수의 형태는 변경되겠지만 결국 메모리에 저장되기 때문에 주소를 가지게 된다는 의미입니다. #include void print_hello() { printf("Hello, world!\n"); } int main() { // 메모리 상에 저장된 함수의 주소값 printf("함수의 주소값 : %p\n", print_hello); return 0; } 위의 코드의 실행 값과 같이 함수도 주소 값을 가진다는..
-
Languague/C , C++ , C#
2021.01.13
[C언어/C++] 함수(Function) 사용법 & 예제
함수(Function)란? 함수는 특정 작업을 수행하는 코드의 집합이라고 정의할 수 있습니다. 반복적으로 수행되는 코드들을 함수로 만들어 사용하면 코드의 재활용성이 높아집니다. 기능들을 분류하여 다양한 각각의 함수로 만들어 사용할 수도 있고 함수 내부에서 또 다른 함수를 호출 할 수도 있는 등의 다양한 이유로 인해 함수를 사용하면 복잡한 기능도 비교적 쉽게 구현할 수 있으며, 구조화 프로그램에 있어 매우 중요한 개념입니다. 함수(Function)의 종류 함수의 종류에는 사용자 정의 함수와 라이브러리 함수가 있습니다. 먼저 사용자 정의 함수는 사용자가 구현하고 싶은 기능을 구현하는 것이며 라이브러리 함수는 우리가 흔히 써오던 printf(), scanf() 같은 함수인데 헤더파일안에 정의되어 있어 원하는 ..
-
Languague/C , C++ , C#
2021.01.12
2
[C언어/C++] 포인터(Pointer) 사용법 & 예제 총정리
포인터란(Pointer)? 포인터는 주소를 저장하는 변수입니다. 기존의 변수는 데이터를 저장하는데 반하여 포인터는 메모리 공간의 주소를 저장합니다. 포인터 변수가 주소를 저장하려면 변수의 주소를 알아야 하는데 변수 이름 앞에 & 연산자를 붙이면 해당 변수의 시작 주소를 반환합니다. 더 나아가서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조하려면 * 연산자를 사용합니다. 포인터(Pointer) 변수의 선언 및 사용 포인터 변수도 변수이므로 사용하려면 먼저 선언을 해야합니다. 다음은 포인터 변수의 선언 형식을 나타내고 있습니다. 포인터 변수의 선언은 자료형 다음에 *연산자를 붙이고 포인터 변수의 이름을 쓰게 됩니다. #include int main() { int* p = NULL; int i = 1..
-
Languague/C , C++ , C#
2021.01.11
[C언어/C++] 연산자 우선순위에 대하여
연산자 우선순위란? 연산자 우선순위란 수학 및 컴퓨터 프로그래밍에서 연산의 우선순위는 모호하게 해석가능한 수식에서 어느 연산을 먼저 계산할 것인가를 결정하는 규칙입니다. 예를 들어 수학의 사칙연산을 보면 2+3*2 라는 식이 있을때 *가 +보다 우선순위가 높기때문에 먼저 3*2 = 6이 되고 그다음에 2를 더해 최종 결과값이 8이됩니다. 이처럼 프로그래밍 언어에도 연산자에 대한 우선순위가 존재합니다. 이러한 우선순위를 모르고 개발을 하다보면 전혀 엉뚱한 결과가 도출되기도 하죠. 연산자 우선순위를 모르고 코딩을 하다보면 연산자 우선순위로 인하여 내가 원하는 동작이 하지 않고 엉뚱하게 동작하는 경우가 있습니다. 특히 포인터를 사용할때 많이 발생하는데요, char arr[6] = { "hello" }; cha..
-
ETC./Spring
2021.01.05
[Spring] 스프링 부트 게시판 만들기-4 계층형 댓글 만들기
실행화면 (계층형 댓글) 테이블 생성 CREATE TABLE `tb_reply` ( `idx` INT NOT NULL AUTO_INCREMENT, `board_idx` INT, `reply_idx` INT, `contents` TEXT NULL, PRIMARY KEY (`idx`)); 댓글 테이블 tb_reply를 추가해줍니다. idx(댓글 번호), board_idx(글 번호), reply_idx(상위 댓글번호), contents(댓글 내용)입니다. 가장 위에 있는 Root 댓글은 reply_idx가 0이고 하위 댓글들은 reply_idx로 상위댓글의 idx를 참조하도록 설계하였습니다. 소스코드 function 추가 (view.jsp) function drawReply(replys) { $("#cnt")..
-
ETC./Spring
2021.01.04
[Spring] 스프링 부트 게시판 만들기-3 글 상세보기 페이지 만들기
실행 화면 (글 상세보기) 소스코드 글 상세보기 (view.jsp) 과제 홈 게시판 본문 이미지와 제목, 글 내용이 적절하게 보여질 수 있도록 컨트롤을 적절히 배치하고 boardView URL로 Controller에 요청을 보내 image와 title, contents에 조회한 내용들을 삽입하여 보여줍니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardService s; @RequestMapping(value="/view", method=RequestMethod.GET) public String view() { return "view"; } @RequestMapping(value..
-
ETC./Spring
2021.01.03
[Spring] 스프링 부트 게시판 만들기-2 게시판 글 등록 (이미지 첨부)
실행 화면 (글 등록) 소스 코드 글 등록 화면 (write.jsp) 과제 홈 게시판 글쓰기 제목: 내용: 글쓰기 화면은 위와 같이 제목, 내용, 그리고 이미지 첨부를 할 수 있게끔 만들었습니다. 해당 화면에서 글을 작성하고 글쓰기 버튼을 누르면 writeAction이라는 url로 controller에 요청이 가게 됩니다. 파일 첨부 기능 구현 시 form의 메서드를 post / enctype을 multipart/form-data로, input type="file"로 해주고 컨트롤러에서는 MultipartFile 받아주면 됩니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardSe..
-
ETC./Spring
2021.01.02
9
[Spring] 스프링 부트 게시판 만들기-1 게시판 리스트 출력
SpringBoot를 활용하여 간단한 게시판을 만들어야 할 일이 있어 급하게 만든 초간단 게시판을 공유합니다. 총 4개의 포스팅으로 작성할 예정이며 전체 소스는 마지막 게시글에서 GitHub링크를 남겨드리도록 하겠습니다. 최소한의 게시판이 돌아가게끔 기본적인 틀만 정해서 구현하였기에 이 게시판을 기초로 살을 붙여나가며 사용하시면 좋을 듯합니다. SpringBoot와 데이터베이스는 MySql을 사용하였고 SpringBoot에서 데이터 베이스 접근은 마이바티스 라이브러리를 사용해 접근했습니다. 주요 기능 1. 게시판 리스트 출력 2. 게시판 글 등록 (이미지 첨부) 3. 게시판 상세보기 4. 댓글과 대댓글 (계층형 댓글) 실행 화면 (게시판 리스트 출력) 테이블 생성 CREATE TABLE `tb_board..
-
일상/블로그
2021.01.01
17
[블로그] 2020년 블로그 결산 (누적 방문자 수 1천만명 돌파)
안녕하세요 코딩팩토리입니다. 코로나와 함께한 2020년도가 끝이 나고 새해가 밝았습니다. 작년에도 제 블로그에 방문해주신 모든 분들께 진심으로 감사드립니다. 개인적으로 작년에 많은 일들이 생겨 블로그를 많이 소홀히 했다는 생각이 듭니다. 블로그 권태기가 와서 일정기간 포스팅을 쉰 적도 있습니다. 또 재미가 아닌 의무감으로 억지로 글을 쓰다 보니 제가 발행하는 포스팅에 점점 영양가가 떨어지고 있다는 생각이 듭니다. 이 부분에 대해서는 진심으로 사과의 말씀을 드립니다. 블로그를 다소 소홀히 했음에도 불구하고 의미 있는 성과가 많이 있었습니다. 이번 포스팅에서는 작년 한 해의 제 블로그의 기록들을 글로 남기고자 합니다. 2020년도 블로그 결산 2020년도 제 블로그를 구글 애널리틱스로 분석한 자료입니다. 사..
-
Languague/C , C++ , C# 2021.01.15[C언어/C++] 구조체 사용법 & 예제 총정리 구조체란? 구조체란 하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형입니다. 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이며 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있습니다. 구조체는 똑같은 변수를 여러번 사용해야 하는 경우에 효과적으로 사용할 수 있습니다. 예를 들어, C언어를 이용해서 콘솔로 간단한 성적 시스템을 만든다고 가정해봅시다. 이 주소록에는 학생의 국어, 수학, 영어 점수를 저장해야 합니다. 만약 구조체를 사용하지 않는다면 여러명의 학생의 성적을 구해야 할 경우 일일이 변수를 계속해서 선언해주어야 할 것입니다. 하지만 구조체를 사용하면 여러개의 변수를 하나로 묶어서 관리할 수 있게 됩니다. 그룹화할 때 같은 자료형을 가진 변수들을 ..
-
Languague/C , C++ , C# 2021.01.14 2[C언어/C++] 함수 포인터 사용법 & 예제 총정리 함수의 주소 변수를 선언하면 메모리 공간이 할당되고 그 공간의 위치가 주소로 존재하듯이 함수를 선언해도 변수와 마찬가지로 메모리에 공간이 할당되며 그 위치를 표현하는 주소가 생겨납니다. C언어 코드는 컴파일이 되면 기계어로 변경되고 프로그램이 실행되면 코드 세그먼트라는 메모리 영역에 위치하게 됩니다. 즉, 함수의 형태는 변경되겠지만 결국 메모리에 저장되기 때문에 주소를 가지게 된다는 의미입니다. #include void print_hello() { printf("Hello, world!\n"); } int main() { // 메모리 상에 저장된 함수의 주소값 printf("함수의 주소값 : %p\n", print_hello); return 0; } 위의 코드의 실행 값과 같이 함수도 주소 값을 가진다는..
-
Languague/C , C++ , C# 2021.01.13[C언어/C++] 함수(Function) 사용법 & 예제 함수(Function)란? 함수는 특정 작업을 수행하는 코드의 집합이라고 정의할 수 있습니다. 반복적으로 수행되는 코드들을 함수로 만들어 사용하면 코드의 재활용성이 높아집니다. 기능들을 분류하여 다양한 각각의 함수로 만들어 사용할 수도 있고 함수 내부에서 또 다른 함수를 호출 할 수도 있는 등의 다양한 이유로 인해 함수를 사용하면 복잡한 기능도 비교적 쉽게 구현할 수 있으며, 구조화 프로그램에 있어 매우 중요한 개념입니다. 함수(Function)의 종류 함수의 종류에는 사용자 정의 함수와 라이브러리 함수가 있습니다. 먼저 사용자 정의 함수는 사용자가 구현하고 싶은 기능을 구현하는 것이며 라이브러리 함수는 우리가 흔히 써오던 printf(), scanf() 같은 함수인데 헤더파일안에 정의되어 있어 원하는 ..
-
Languague/C , C++ , C# 2021.01.12 2[C언어/C++] 포인터(Pointer) 사용법 & 예제 총정리 포인터란(Pointer)? 포인터는 주소를 저장하는 변수입니다. 기존의 변수는 데이터를 저장하는데 반하여 포인터는 메모리 공간의 주소를 저장합니다. 포인터 변수가 주소를 저장하려면 변수의 주소를 알아야 하는데 변수 이름 앞에 & 연산자를 붙이면 해당 변수의 시작 주소를 반환합니다. 더 나아가서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조하려면 * 연산자를 사용합니다. 포인터(Pointer) 변수의 선언 및 사용 포인터 변수도 변수이므로 사용하려면 먼저 선언을 해야합니다. 다음은 포인터 변수의 선언 형식을 나타내고 있습니다. 포인터 변수의 선언은 자료형 다음에 *연산자를 붙이고 포인터 변수의 이름을 쓰게 됩니다. #include int main() { int* p = NULL; int i = 1..
-
Languague/C , C++ , C# 2021.01.11[C언어/C++] 연산자 우선순위에 대하여 연산자 우선순위란? 연산자 우선순위란 수학 및 컴퓨터 프로그래밍에서 연산의 우선순위는 모호하게 해석가능한 수식에서 어느 연산을 먼저 계산할 것인가를 결정하는 규칙입니다. 예를 들어 수학의 사칙연산을 보면 2+3*2 라는 식이 있을때 *가 +보다 우선순위가 높기때문에 먼저 3*2 = 6이 되고 그다음에 2를 더해 최종 결과값이 8이됩니다. 이처럼 프로그래밍 언어에도 연산자에 대한 우선순위가 존재합니다. 이러한 우선순위를 모르고 개발을 하다보면 전혀 엉뚱한 결과가 도출되기도 하죠. 연산자 우선순위를 모르고 코딩을 하다보면 연산자 우선순위로 인하여 내가 원하는 동작이 하지 않고 엉뚱하게 동작하는 경우가 있습니다. 특히 포인터를 사용할때 많이 발생하는데요, char arr[6] = { "hello" }; cha..
-
ETC./Spring 2021.01.05[Spring] 스프링 부트 게시판 만들기-4 계층형 댓글 만들기 실행화면 (계층형 댓글) 테이블 생성 CREATE TABLE `tb_reply` ( `idx` INT NOT NULL AUTO_INCREMENT, `board_idx` INT, `reply_idx` INT, `contents` TEXT NULL, PRIMARY KEY (`idx`)); 댓글 테이블 tb_reply를 추가해줍니다. idx(댓글 번호), board_idx(글 번호), reply_idx(상위 댓글번호), contents(댓글 내용)입니다. 가장 위에 있는 Root 댓글은 reply_idx가 0이고 하위 댓글들은 reply_idx로 상위댓글의 idx를 참조하도록 설계하였습니다. 소스코드 function 추가 (view.jsp) function drawReply(replys) { $("#cnt")..
-
ETC./Spring 2021.01.04[Spring] 스프링 부트 게시판 만들기-3 글 상세보기 페이지 만들기 실행 화면 (글 상세보기) 소스코드 글 상세보기 (view.jsp) 과제 홈 게시판 본문 이미지와 제목, 글 내용이 적절하게 보여질 수 있도록 컨트롤을 적절히 배치하고 boardView URL로 Controller에 요청을 보내 image와 title, contents에 조회한 내용들을 삽입하여 보여줍니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardService s; @RequestMapping(value="/view", method=RequestMethod.GET) public String view() { return "view"; } @RequestMapping(value..
-
ETC./Spring 2021.01.03[Spring] 스프링 부트 게시판 만들기-2 게시판 글 등록 (이미지 첨부) 실행 화면 (글 등록) 소스 코드 글 등록 화면 (write.jsp) 과제 홈 게시판 글쓰기 제목: 내용: 글쓰기 화면은 위와 같이 제목, 내용, 그리고 이미지 첨부를 할 수 있게끔 만들었습니다. 해당 화면에서 글을 작성하고 글쓰기 버튼을 누르면 writeAction이라는 url로 controller에 요청이 가게 됩니다. 파일 첨부 기능 구현 시 form의 메서드를 post / enctype을 multipart/form-data로, input type="file"로 해주고 컨트롤러에서는 MultipartFile 받아주면 됩니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardSe..
-
ETC./Spring 2021.01.02 9[Spring] 스프링 부트 게시판 만들기-1 게시판 리스트 출력 SpringBoot를 활용하여 간단한 게시판을 만들어야 할 일이 있어 급하게 만든 초간단 게시판을 공유합니다. 총 4개의 포스팅으로 작성할 예정이며 전체 소스는 마지막 게시글에서 GitHub링크를 남겨드리도록 하겠습니다. 최소한의 게시판이 돌아가게끔 기본적인 틀만 정해서 구현하였기에 이 게시판을 기초로 살을 붙여나가며 사용하시면 좋을 듯합니다. SpringBoot와 데이터베이스는 MySql을 사용하였고 SpringBoot에서 데이터 베이스 접근은 마이바티스 라이브러리를 사용해 접근했습니다. 주요 기능 1. 게시판 리스트 출력 2. 게시판 글 등록 (이미지 첨부) 3. 게시판 상세보기 4. 댓글과 대댓글 (계층형 댓글) 실행 화면 (게시판 리스트 출력) 테이블 생성 CREATE TABLE `tb_board..
-
일상/블로그 2021.01.01 17[블로그] 2020년 블로그 결산 (누적 방문자 수 1천만명 돌파) 안녕하세요 코딩팩토리입니다. 코로나와 함께한 2020년도가 끝이 나고 새해가 밝았습니다. 작년에도 제 블로그에 방문해주신 모든 분들께 진심으로 감사드립니다. 개인적으로 작년에 많은 일들이 생겨 블로그를 많이 소홀히 했다는 생각이 듭니다. 블로그 권태기가 와서 일정기간 포스팅을 쉰 적도 있습니다. 또 재미가 아닌 의무감으로 억지로 글을 쓰다 보니 제가 발행하는 포스팅에 점점 영양가가 떨어지고 있다는 생각이 듭니다. 이 부분에 대해서는 진심으로 사과의 말씀을 드립니다. 블로그를 다소 소홀히 했음에도 불구하고 의미 있는 성과가 많이 있었습니다. 이번 포스팅에서는 작년 한 해의 제 블로그의 기록들을 글로 남기고자 합니다. 2020년도 블로그 결산 2020년도 제 블로그를 구글 애널리틱스로 분석한 자료입니다. 사..