전체 글 175

MSSQL 헷갈리는 자료형 정리(char, varchar, nchar, nvarchar)

1. 개요 MSSQL을 배우던 도중, 대용량 서비스에서 자료형이 미치는 영향을 보았다. 선배께서는 자료형의 고려없이 무조건 대용량의 자료형을 설정한 데이터베이스와, 자료형을 고려하여 효율적으로 설계한 데이터베이스의 차이를 보여주셨다. 조금더 자세하게 말하자면, 만약 사람의 이름을 저장할 때, 데이터 형식을 nvarchar(255)로 설정한 데이터베이스와 nvarchar(15)으로 설정한 데이터베이스의 차이를 볼 수 있었다. 데이터가 조금 들어갔다면 차이가 없었겠지만, 선배는 실제 회사에서 사용하는 데이터베이스를 예로 보여주셨다. 즉 데이터가 대용량이라는 뜻이다. 데이터가 많아지면 많이질수록 전자와 후자의 경우는 차이가 많이 났다. 'SELECT * FROME [TABLE]'과 같이 단순하지만 많은 양의 ..

MSSQL 설치와 네트워크 세팅

1. 개요 MSSQL을 사용할 이유가 생겼다. 따라서 처음부터 차근 차근 설치 내용을 정리해보고자 한다. 2. 본문 - MSSQL이란? 가장 먼저 배운것은 MSSQL이다. MSSQL은 말 그대로 Microsoft에서 만든 데이터베이스로 아직 MSSQL을 사용하는 회사나 사람들이 꽤 있다. 사실 많이 사용한다고는 할 수 없지만 꾸준이 사용하자가 존재하고 나아가 사용자가 늘어나는 분야임에는 틀림없다. Oracel, MySQL 다음으로 많이 사용하는 데이터베이스 서버이기에 사용자가 적다고는 할 수 없을 것 같다. 오늘은 이 MSSQL을 설치해보고 네트워크 설정, 로그인 방법에 대해 올려보고자 한다. - MSSQL 설치 방법 일단 Installer를 다운받아야 한다. 다음 URL에 접속하여 Express버전을 ..

[백준 알고리즘] 1744번 - 수 묶기 (그리디 알고리즘)

1. 문제 및 예시 실행결과 그리디와 정렬을 사용하는 문제이다. 문제의 핵심만을 파악하면 구현은 어렵지 않은 문제이지만, 핵심을 파악하고 알고리즘을 정의하는 과정이 조금 어려웠다. 출처: https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 수열에서 두 수를 묶어 최대한 큰 수를 만드는 과정은 그렇게 어렵지 않다. 정렬한 후 뒤에서부터 두개의 수를 묶어 곱하면 된다. 가장 큰 수 두개를 곱하는 것이 가장 큰 수를 만드는 방법이기 때문이다. 이 과정..

[C++, 코딩테스트] '인덱스'로 특정 문자 제거하기

1. 개요 구현 문제단원을 풀어보는 과적엥서 문자를 찾아 지우는 erase()함수는 있어도, 인덱스를 기준으로 삭제해주는 함수가 없기에 만들어보면 유용할 것 같다는 생각이 들었다. 인덱스를 기준으로 문자 하나를 입력했을 때 해당 자리의 문자를 제거해주는 함수를 만들어 보았다. 2. 이론 구현 이론은 간단하다. 해당 인덱스까지의 문자열을 자르고 그 뒤의 인덱스를 다시 잘라 기존 전자의 인덱스와 더해주면 된다. 3. 코드 - 인덱스 기준의 문자 제거 코드 string erase_char(string str, int index) { string buff; buff = str.substr(0, index); buff += str.substr(index + 1, str.size() - (index + 1)); r..

[C++, 코딩 테스트] 문자열을 입력 받고 문자로 추출, 공백으로 구분하기 - (getline() 함수 사용시 주의할 점)

1. 개요 최근 알고리즘 테스트에 현타란 현타를 강하게 맞아서 '나동빈'님의 책인 '이것이 취업을 위한 코딩테스트다.' 라는 책을 통해 체계적으로 공부중이다. 그중 구현 단원에서 문자열에 관한 C++문법을 정리해봐야 겠다는 생각이 들어 글을 쓰게 되었다. 예제 4-1의 상하좌우 문제이다. 2. 이론 String자료형은 매번 문자형의 배열을 사용하던 나에게는 신세계이자 구원자였다. 그러나 C++도 결국 C계열인지 메모리와 같은 부분을 신경써야 한다는 것을 뼈저리게 느끼는 중이다. 그래도 C에 비하면 심각하게 어려운 것이 아니니 관련 자료를 찾으며 공부하였다. 이번 글에서는 C++에서 문자열을 입력받고 이를 문자로 추출할때, 그리고 버퍼를 비우는 방법에 대해 작성할 것이다. 3. 예시 코드 - 문자열에서 문..

[C++] 문자열에서 정수, 실수, 문자 추출하기 - (stringstream)

1. 개요 백준 알고리즘 문제를 풀다가 문자열에서 정수들을 추출해야 하는 경우가 발생했다. 문자열은 질리도록 나를 괴롭혔고 날이 날인지라 정말 극강의 하기 싫음을 느끼고 혹시나 하는 마음에 구글링을 시작했다. 'string 토큰 분리'라는 키워드로 구글링을 해보니 'stringstream' 이라는 클래스가 나오고 나는 바로 이 클래스를 공부하기 시작하였다. 2. 이론 stringstream은 문자열에 자신이 원하는 자료를 찾고자 할 때 유용한 클래스이다. 예를 들어 "76 65.7"이라는 문자열이 있을 때 76이라는 정수만 뽑고 싶을 때 stringstream클래스를 사용하면 훨씬 간편하게 구용할 수 있다. 다음 코드들을 보자. 3. 예시 코드 - 문자열에서 정수 추출하기 백문이 불여일견! 다음 코드를 ..

[spring] Interceptor와 Session의 개념과 구현, Clone Coding

1. 개요 Clone Coding프로젝트를 마무리 한지 꽤 오랜 시간이 지났다. 프로젝트 도중 인턴에 합격한 팀원도 있고 다른 교육 프로그램에 합격한 팀원도 있다. 기쁜소식을 들어면서 프로젝트를 진행하니 나도 동기부여가 되는 것 같다. 중간고사가 끝나고 드디어 시간이 조금 나니, 조금씩 꾸준하게 블로그에 글을 올릴 생각이다. 2. 이론 내 역활중 하나는 바로 admin페이지의 로그인을 구현하는 것. 사실 관리자 로그인은 데이터베이스에 아이디와 패스워드 한 세트만을 생성하고 그것을 쓰면 되기 때문에, 아이디와 비밀번호의 CRUD는 그렇게 어렵지 않았다. 중요한 것은 매 페이지마다 섹션에 있는 값을 확인하는 기능을 구현하는 것이다. 설명하자만 매번 검사하는 것은 Interceptor로 그리고 관리자가 로그인..

[알고리즘] C++을 활용한 후위 표기법의 계산

1. 이론 이 알고리즘은 중위 표기법에서 후위 표기법으로 전환한 후에 후위표기법을 실질적으로 계산하는 알고리즘이다. 이 부분은 전에 포스팅한 중위 표기법의 후위 표기법 변환 알고리즘보다는 훨씬 간단하다. 예외와 구현이 나름 쉬웠다. 이 부분은 학교 수업으로 공부하였다. - 후위표기식의 계산 알고리즘 후위표기식의 계산 알고리즘은 다음과 같다. 숫자가 나오면 무조건 스택에 Push 연산자가 나오면 스택에서 두개의 피연산자를 꺼내 계산한다. 연산자가 뺄셈 혹은 나눗셈인 경우 순서를 생각해야 한다. 이런 경우를 대비해 스택에서 나중에 꺼내진 연산자로부터 먼저 꺼내진 연산자에 대한 연산을 실행한다 계산된 연산자는 다시 스택에 넣어준다. 후위 표기식이 다 끝났다면 스택에 남아있는 피연산자가 식의 답이다. 이전 포스..

[spring] 로컬 파일에 이미지 저장과 예외처리 - (SimpleDateFormat), Clone Coding

1. 개요 바로 직전 포스팅이 바로 Spring에서 이미지를 저장하는 방법이다. 이 방법에서 심각한 문제를 발견하였다. 우리가 웹 사이트를 만들면 다양한 사람이 사이트를 사용한다. 이런 경우를 생각해서 예외처리에 철저해야 한다는 것일 이번에 깨닫게 되었다. 이 포스팅은 내가 전에 올린 포스팅과 이어지는 내용이기에 꼭 전 포스팅을 보고왔으면 좋겠다. 이전 포스팅: apape1225.tistory.com/66 [spring] 로컬 파일에 Img 저장하기! - (ServletContext) 1. 개요 Django를 공부하다가 동기에게 실속있게 도움되는 프로젝트를 해보자는 제안이 왔다. 프로젝트에 목말라있던 나에게는 아주 좋은 기회였다. 바로 승낙했지만 정말 충격이었다...... Clone apape1225.t..