분류 전체보기 189

📑 백준_공유기설치_이분탐색_2110

오늘은 이분탐색 문제를 풀이하려 한다. 이 문제는 백준 단계별로 풀어보기에서 이분탐색 카테고리에 있는 골드 5문제이다. 문제를 읽는 순간 이게 무슨말이지? 하는 내용으로 생각이 되어 문제를 이해하는데만 오랜 시간이 걸렸다. 기본적으로 이분탐색 알고리즘을 푸는 순서를 한 번 정리하고자 한다. 이분탐색이란 어떠한 대상을 두 부분으로 쪼개면서 탐색하는 방법론이다. 분할 정복은 어떤 전체문제를 해결하기 위해 부분적으로 나눠들어가면서 부분 문제를 해결하는 방식이라면, 이분탐색은 위 메커니즘과 유사하게 두 부분으로 나누어 들어가긴 하지만, 특정 값 또는 구간을 찾는 탐색이라는 것이다. 이분 탐색의 가장 쉬운 예시로는 UP&Down 게임이 있다. 기본적으로 업다운 게임을 진행할 때 무조건 전체 범위에 대해서 중간값만..

📑 백준_9663_N-Queen

한동안 jdbc부터 시작해서 웹 쪽 언어를 공부하다 보니 시간이 부족해서 알고리즘을 풀이만 하고, 따로 정리를 하지 못했다. 살살 귀찮을 뻔 했는데, 다시 마음을 잡고 시작해보려 한다. 이번 문제는 백준 단계별로 문제 풀기 중 백트레킹 카테고리에 있는 골드5 문제로, 완전탐색과 백트레킹을 응용하는 문제이다. 필자는 처음 완전탐색으로 풀어보려다가 애매하게 재귀를 섞어서 백트레킹을 쓰다보니 문제가 풀리지 않아서 한 참을 헤맸다. 이후에는 재귀를 사용해서 백트레킹으로 풀었는데 메모리 초과가 나서 마음이 흔들렸지만,,,, 멘탈을 잡고 다시 수정해서 결국에 성공했다. 문제를 풀기 위해 생각한 의사코드는 다음과 같다. 퀸의 이동 가능한 위치를 일일히 방문처리를 미리 해야 하나? 사실 이 방법으로 처음에 완전탐색을 ..

📑 AJAX_국비DAY64

웹 브라우저에 내장된 ajax객체가 서버에서 오는 상태정보를 지속적으로 callback함수에게 전달한다. 404 : 페이지를 찾을 수 없을 때 나타나는 오류 500 : 서버 내부 문법 오류 1 2 3 4 5 6 7 8 9 10 11 12 $.ajax({ type:'GET', url :'calc.do', data:{'su1':su1, 'su2':su2, 'op':op},/* 전달인자(param -> JSON형식으로 작성) */ success:function(result_data){ $("#result").val(result_data); }, error: function(err){ alert(err.status); } }); Colored by Color Scripter cs type, url, data =..

📑 웹DB_비번, 줄바꿈처리,AJAX_DAY63

웹 DB 실습 [방명록 만들기] 더보기 전체적인 흐름은 위의 이미지와 같다. 새로 배운 기술에 대해서만 주해를 하고, 나머지는 여기에 전체 소스를 첨부하겠다. 다른 파일 없이 실제 소스코드만 저장해두었으니, DBPC 라이브러리 등 서버등록은 직접 해야 한다. 1. [visit_list.jsp] -> 비밀번호 체크 코드 상에서는 수업 목적상 비밀번호를 기억하기 위해서 비밀번호가 표시되도록 되어 있지만, 평상시에는 비밀번호를 표시하지 않고, 자신의 게시글만 수정&삭제가 가능하도록 해야한다. 비밀번호가 일치하는 경우에만 수정&삭제하는 권한이 주어지는데 비밀번호는 JS를 사용하여 다음과 같은 방법으로 검사한다. "삭제"버튼을 누르면 form에 있는 정보를 전송하는 JS함수를 정의한다. 전송하고자 하는 폼의 id..

📑 DBCP_웹DB_국비_DAY59

DBCP(Database Connection Pool) ㄴ> 데이터베이스 커넥션들을 미리 준비하고 사용자의 요청이 들어오면 연결된 커넥션 객체를 바로 전달하는 구조. ㄴ> 자바프로그램에서 사용하던 DBService는 요청이 들어올 때마다 커넥션을 연결해서 전달한다. (예: 전화를 하기 위해 번호를 누르는 시간, 연결하는 시간, 통화하는 시간, 끊는 시간 -> 통화를 위해 소요되는 서비스 지연시간이 너무 길다.) ㄴ> 웹에서 사용하는 DB는 불특정다수가 동시에 많이 들어오기 때문에 위처럼 요청이 들어올 때마다 연결 시도, 연결, 커넥션 전달 이런식으로 진행하면 많은 사용자의 트래픽을 감당할 수 없을 정도로 서비스의 지연시간이 발생한다. 웹 서비스는 사용자의 요청이 발생하면 바로바로 요청을 해줘야 하기 때문..

📑 국비_DAY58

Servlet or JSP 페이지 이동 방법 1. Redirect 방식 (insert, update, delete명령은 무조건 redirect방식으로 응답한다.) a.jsp내에서 response.sendRedirect("b.jsp);를 입력한다. 이는 사용자의 요청 정보를 a.jsp가 받고 재요청 정보를 사용자에게 응답해주고 최종적으로 요청된(b.jsp)페이지 정보를 클라이언트 측에서 변경된 URL을 통해서 확인할 수 있다. 예를 들어 게시판을 게시글을 등록, 수정, 삭제 등의 작업을 a.jsp에 요청을 하면 전달받은 사용자의 요청정보를 통해 DB에 접근하여 수정하고 사용자에게 수정된 정보를 확인하도록 게시글 작성하기(a.jsp)에서 게시글 목록보기(b.jsp)로 재요청(redirect) 정보를 응답한다..

📑 JSTL_국비_DAY57

EL : 데이터를 화면 상에 간결하게 표현할 때 사용 JSTL : 조건이나 반복의 기술을 문법을 태그 형식으로 사용한다. 모든 값의 표현은 EL로 구현한다. (Tag형식의 명령어 라이브러리) JSTL로 반복문 사용하기 을 사용하여 JSP파일이 실행되어 서블릿으로 변환될 때, _jspService영역에 들어가도록 변수 및 자료구조를 선언한다. 변수 및 자료구조에 데이터를 넣는다. 4가지 영역(pageContext, request, session, application) 중 한 곳에 데이터를 (setAttribute)저장한다. [속성 정보] JSTL문법의 모든 값의 표현법은 반드시 EL로 사용한다고 했다. EL을 사용하기 위해서는 상수를 제외한 모든 변수는 반드시 네가지 스코프영역 중 한 곳에 값을 저장해야..

📑 EL_국비_DAY56

JSP파일은 컴파일 시 서블릿으로 변환된다고 했다. 이때 주석문을 어떤것으로 쓰느냐에 따라서 차이가 있는데 그 차이점을 살펴보자. 주석문의 차이점 : JSP파일에서 HTML주석문을 사용하면 컴파일시 변환될 때, 주석문이라서 실행이 안되지만 주석문은 넘어간다. : JSP파일에서 JSP 주석문을 사용하면 컴파일시 변환될 때, 위와는 달리 주석문 자체가 변환되어 넘어가지 않는다. 아래의 이미지를 확인하면 HTML주석문은 넘어가고, JSP주석문은 넘어가지 않은 것을 확인할 수 있다. 더보기 위의 주석문을 사용할 때 주의해야 하는 이유는 EL 표현식을 사용할 때이다. EL표현식은 말그대로 표현식인데 HTML이 아닌 JSP파일에서만 사용할 수 있는 표현식이다. 이때 EL표현식에 대한 주석문을 html로 작성하게 되..

📑 백준[자바]_15649_N과M_백트레킹

백트레킹이란 어떤 노드의 유망성을 판단한 뒤, 해당 노드가 유망하지 않다면 부모 노드(나를 호출한 지점)로 돌아가 다른 자식 노드를 찾는 방법이다. 모든 경우의수를 찾아보지만, 그 중에서도 가능성이 있는 경우의 수만 찾는다. 재귀를 통해 구현한다. 브루트포스와 백트레킹, DFS를 혼동한 경우가 많아서 한 번 정리하고 가겠다. 예를 들어 다음과 같은 문제가 있다고 가정하겠다. "a + b + c = 20을 만족하는 수를 모두 찾으시오.(0

📑 JSP_국비_DAY55

Buisness Logic : 사용자의 요청과 함께 전달된 정보를 가공및 산출하는 부분 Presentation Logic : 가공되어 산출된 정보를 디자인하여 사용자에게 표출하는 부분 Model 1 -> 비즈니스 로직과, 프레젠테이션 로직을 한 문서에 저장하는 웹 개발 패턴 Model 2 -> 비즈니스 로직은 개발자가 Servlet으로 프레젠테이션 로직은 JSP가 담당하며, 각각의 역할을 분할하여 수행한다. MVC(Model View Controller) -> 위의 두 모델의 단점을 보완하고자 등장한 디자인 패턴. 컨트롤러가 사용자의 요청을 받고, 모델과 통신하면서 모델이 가공한 데이터를 받으면 뷰에게 전달하여 뷰가 출력하면서 사용자의 요청에 응답한다. JSP(Java Server Page) ㄴ> jsp..

📑 소스트리와 깃을 사용한 협업

여러 개의 저장소를 서로 연결시켜 상호간의 동기화 가능 서로 다른 사람들이 각각의 저장소에서 작업을 하고 이것을 모아서 하나의 프로젝트를 할 수 있는 즉, 협업의 도구로 깃을 사용할 수 있다. 내부적으로는 브랜치라는 개념이 사용된다. 1. 혼자 작업하기 별도의 작업을 진행할 로컬 디렉토리를 생성한다. 필자는 a라는 폴더를 생성했다. 로컬 저장소로 설정하고자 하는 위에서 생성한 로컬 디렉토리를 소스트리에서 생성하여 git init을 해줘야 한다. 소스트리 실행 -> create -> 탐색을 통해 위에서 생성한 로컬 디렉토리의 경로를 설정하고 생성을 누른다. 생성한 폴더에 테스트 파일로 work.txt를 생성한다. 그러면 소스트리 상에서 변경사항을 감지하고 커밋을 할 수 있는 상황이 되는데 커밋 메시지와 함..

📑 서블릿_국비_DAY54

라이프 사이클 사용자로부터 요청이 들어온다. Tomcat이 이를 인지한다. 요청을 인식하면 컨테이너에 사용자가 요청한 url-mapping이 존재하는지 확인한다. 있으면 호출하고, 없으면 새로 만든다. 특정 서블릿에 대한 첫 요청시에는 컨테이너에 아직 로딩되지 않았다. [Tomcat이 진행] -> 서비스를 실행하는 객체를 만들어서 연결해준다. 생성(new) 초기화(init) 컨테이너 적재 별도의 스레드를 생성하여 할당한다. 이 스레드가 실질적으로 사용자의 요청에 응답한다. 사용자가 요청한 방식에 따라 분기가 일어나는데 이는 선택사항이다. 더보기 자바 (서블릿)파일은 실행되어 WEB-INF폴더 하위에 classes폴더에 생성된다. html파일은 webapp폴더 하위의 생성된다. 실행파일(war)만드는 법 ..