
👏 || 시험 계기프로젝트 하나를 진행하면서 나에게 한 번 이런 일이 들어왔었다. "웹포탈에서 속도가 너무 느린데 속도 개선이 필요할 것 같습니다." 찾아보니 데이터베이스 프로시저에서 호출하는 값들이 너무 많고 조인도 많이 일어나서 느린 것을 확인할 수 있었다. 하루종일 구글 검색을 하며 해결하려 했지만 속도 개선은 되지 않았고, 결국 다른 분께서 인덱싱처리 등을 해주셔서 속도가 개선 되었었다. 그 때 DB에 대한 전반적인 걸 알고 튜닝할 수 있었다면 좋았을텐데,, 하는 후회가 생각보다 깊게 남았다. 그래서 데이터 베이스 공부를 하려는데 목표가 없으니 집중이 안되었다. 찾아보니 시험이 얼마안남아서 바로 접수하고 공부 시작 👏 || 시험 준비시험 준비는 DB기본서와 구글검색을 통해 개념을 익히고 소위 말하..

😃 || 정리 주어진 숫자의 각 자릿수를 2 제곱해서 더한 수가 최종적으로 1이 되면 happy number로 true를 반환하고, 그렇지 않으면 false를 반환하게 된다. 어떤 규칙이 있을까 2~10까지 숫자를 직접 해본 결과 happy number가 아니면 같은 수가 반복되어 나오는 것을 알게 되었다. 그래서 배열에 합계들을 넣고 , 중복이 되면 안되므로 Set 컬렉션을 쓰기로 했다. 그리고 만약 중복되는 숫자가 들어오면 false를 반환하도록 만들기로 했다. 😃 || 풀이 방법 import java.util.*; class Solution { public boolean isHappy(int n) { String num = n + ""; HashSet unHappySet = new HashSet()..

😃 || 정리 완전탐색(Brute-Force Search) 알고리즘이란 이름 그대로 처음부터 끝까지 하나하나 탐색해보는 방법이다. 예를 들어 핸드폰 4자리숫자를 풀 때 0000부터 9999까지 직접 쳐보는 것을 생각하면 된다. 시간이 걸리기 때문에 탐색할 것이 적은 곳에 사용하는 것이 좋다. 그리고 시작과 끝을 고려하는 것이 메모리와 시간을 줄이는 것 모두에 좋다. 😃 || 풀이 방법class Solution { public int[] solution(int brown, int yellow) { int[] answer = {}; int carpetLen = brown + yellow; for(int i=1; i= cRow){ answer = new int[]{cCol , cRow}; break; } } ..

10진법(decimal number) 다른 진법 왔다갔다 하는 문제 풀이방법 😃 || 정리하는 이유 오랜만에 푸는 문제라 처음에 방황하고 차근차근 나눗셈부터 시작해서 패턴을 찾고 풀었다. 그랬더니 생각보다 시간이 너무 걸렸다. 진법 왔다갔다 하는 문제를 은근 많이 접하기 때문에 생각나는 김에 블로그에 정리! 😃 || 10진법을 2진법으로 만들기우선 7을 예로 들어보자 7을 2로 나누면 몫은 3이 되고 나머지는 1이된다. 이제 3을 2로 나누면 몫은 1이되고 나머지는 1이된다. 더이상 나누어 지지 않으므로 여기서 계산을 끝내고 남은 몫과 나머지들을 거꾸로 써주면 된다. 글로 쓰면 이해가 안가니 그림으로 설명해보면 다음과 같다. 따라서 7을 2진법으로 나타내면 111(2)가 되는 것이다. 😃 || 이번엔 2..

"나는 항상 마음속으로 외치는 버릇이 있다. '나는 미친놈이다.' , ''나는 대단하다.', '나는 똑똑하다.'와 같은 긍정적인 말을 항상 반복해서 외친다." YES24의 북클럽에는 거의 매일 신규 책들이 올라온다. 나는 출근길에 항상 북클럽을 켜며 오늘은 어떤 새로운 책이 나왔는지를 확인한다. 그렇게 찾은 게 이 책이다. 처음에 내가 개발을 시작할 때 흥미를 가졌던 분야가 바로 빅데이터였다. 학부생 시절 막학기에 R프로그래밍을 써서 분석을 하는 게 생각보다 재미있었고 그 흐름을 타서 ADSP 자격증까지 취득했었다. 그 후론 자바 , 씨샵을 배우느라 흐지부지 되었지만 빅데이터를 다루고 싶다는 생각을 항상 품고 있었다. 이 책을 보니 다시 그때가 생각났다. 내가 이거 하고 싶었지, 하는 생각 이 책은 아는..

자바스크립트상에서 엔터키를 누를 때 실행되는 경우 ( 예 : 로그인 , 검색창 등 ) 를 구현하기 위해 또는 , 특정키의 작동을 막기위해 Keycode를 종종 사용하는 경우가 있어서 정리하기로 해본다 특정 키보드를 눌렀을 때 이벤트를 처리하고 싶다면 keycode를 이용하면된다. 키보드를 눌렀을 때의 이벤트가 각 키보드의 정보를 포함하고 있기 때문이다. 오늘 사용하게 될 엔터키는 ASCII Keycode '13'의 값을 가진다. Keycode 목록 key code key code tab 9 enter 13 shift 16 ctrl 17 alt 18 caps lock 20 space 32 page up 33 page down 34 end 35 home 36 ← 37 → 39 ↑ 38 ↓ 40 delete ..

C# 이용시 DB연결과 관련된 메소드를 쓸 때 헷갈리지 않기 위해 ExecuteScalar() / ExecuteReader() / ExecuteNonQuery() 를 정리해보기로 한다. 1. public override int ExecuteNonQuery (); SQL문을 실행한 후 어떤 결과값이 돌아오지 않을 때 사용하는 메서드이다. 즉 , 데이터베이스에 데이터값을 넣거나, 데이터를 바꾸고 싶을 때 사용한다. 그래서 UPDATE , DELETE , INSERT 등을 이용할 때 사용된다. 리턴값은 정수형식(INT32)로 반환되며 그 값은 SQL문을 실행했을 때 영향을 받은 행들의 수이다. 그 이외에는 -1 이 반환된다. 반환값은 선택적으로 활용하면 된다. 2. public System.Data.SqlCl..
이전 글에서 HTTP 프로토콜은 요청을 보내고 응답을 받을 때 Message를 보낸다고 했다. 좀 더 세부적으로 정리해보려고 한다. HTTP Request Message 1) Request Line Request Line(요청줄)은 Method , URI , HTTP version으로 구성되어있다. GET / HTTP/1.1 위에 나오는 것 처럼 메서드와 URI , HTTP 버전은 스페이스바로 구분된다. 검색해보면 Method URI HTTP Version CRLF라고 나와있는 것이 있다. 여기서 CRLF는 ASCII 코드에 나오는 Carriage Return(커서를 앞으로 보내주는 것)과 LIne Feed(다음 줄로 이동시키는 것 )를 합친 것을 말한다. 즉 , 엔터키의 역할을 한다. HTTP Meth..

HTTP , 인터넷을 사용해 봤다면 단어를 보르는 사람이 없을 것이다. 어떤 곳에 들어가기위해서는 주소가 필요하고 그 주소앞에 붙어있는 것을 보았을 것이기 때문이다. 그렇다면 HTTP란 무엇일까? Hypertext transfer Protocol, 줄여서 HTTP는 어플리케이션 레벨의 프로토콜로 인터넷상에서 데이터를 주고받기 위한 것이다. 서버/클라이언트 모델을 따르며 클라이언트가 서버에게 HTTP 요청을 보내면 서버는 요청된 데이터를 HTTP 응답으로 돌려준다. HTTP 프로토콜의 특징 1. 비연결성 (Connectionless) 클라이언트의 요청에 따른 응답이 이뤄진 후에는 연결이 끊기게 된다. 이 덕에 서버는 트래픽을 많이 잡지 않아도 되고, 여러 클라이언트가 접근할 수 있게된다. 2. 무상태성 (..

Spring Security란? 인증등을 쉽게 처리해주는 프레임워크이다. 이전에 원래는 LoginCheckFilter라고 따로 필터를 만들어서 로그인을 여부를 확인하거나 Controller에 직접 login , logout 을 구현했는데 이것을 쓰면 쉽게 구현이 가능하다고 해서 직접 적용해 보기로 했다. 참고 개발환경 Spring FrameWork 3.2.3 - Spring Security Maven 적용하기 Spring Security Maven을 검색하면 Maven을 가져올 수 있다. Spring Security Maven 처음에 들어가면 버전이 많아서 당황할 수 있다. Spring Security는 Spring FrameWork의 버전과 연관성이 있으므로 자신이 가지고 있는 버전에 따라 Maven을..