📝 TIL

    [TIL] 알고리즘의 시간 복잡도(Java)

    ✍ Today I Learned 시간 복잡도 표기법 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수 일반적으로 1억 번의 연산 = 1초의 시간으로 간주하여 예측 시간 복잡도를 정의하는 3가지 유형 빅-오메가 : 최선일 때(best case)의 연산 횟수를 나타낸 표기법 (1번) 빅-세타 : 보통일 때(average case)의 연산 횟수를 나타낸 표기법 (2/n번) 빅-오 : 최악 일 때(worst case)의 연산 횟수를 나타낸 표기법 (n번) 코딩 테스트에서는 빅-오 표기법을 기준으로 수행 시간을 계산하는 것이 좋다. 왜? 모든 테스트 케이스를 통과해야 하기 때문 시간 복잡도 활용 알고리즘 선택의 기준으로 사용하기 문제에서 주어진 시간제한과 데이터 크기를 바탕으로 어떤 정렬 알고리즘..

    [TIL] AWS 서버에 도메인 연결하기(feat.가비아)

    ✍ Today I Learned 도메인을 구매한다는 것은? 네임서버를 운영해주는 업체에 IP와 도메인 매칭 유지비를 내는 것이다. AWS EC2 프리티어 서버에서 열심히 돌아가고 있는 프로젝트에 도메인을 달아주자! 다양한 업체가 있지만, 가비아에서 도메인을 구입할 것이다. 도메인 구입 먼저 원하는 도메인이 이미 등록되어 있는 도메인인지 확인한다. 최대한 프로젝트 이름과 같은 것으로 구매하는 것이 좋겠쥬? .shop이 붙은 도메인은 현재 1년에 500원으로 할인 중이다! 도메인 설정 My가비아 > 해당 도메인의 관리 버튼 클릭 DNS 정보 > 도메인 연결 설정 클릭 해당 도메인의 DNS 설정에서 레코드 수정 클릭 호스트에 @, 값/위치에 IP주소를 입력 확인 > 저장 버튼 클릭 도메인 연결 완료 이제 해당..

    [TIL] JSP 미니 프로젝트 기획

    ✍ Today I Learned Spring을 학습하기 전, jsp에서 최대한 Spring의 구조를 흉내내어 CRUD, 로그인/로그아웃, DB연결, 비동기 통신, 파일첨부 등을 구현해보았다. 배운 것들을 이용하여 간단한 프로젝트를 만들어보자! [JSP 프로젝트 기획] 어떤 서비스를 만들어볼까? 펜션 예약 사이트, 개인 쇼핑몰, 오토 주문 시스템, 커뮤니티 게시판 등 많은 후보가 있었지만, 나의 관심도가 높고 꾸준히 이용중인 서비스를 직접 만들어보는 것도 재밌겠다는 생각이 들었다. 내가 애정하는 인테리어 플랫폼 오늘의집을 벤치마킹한 쇼핑몰 + 커뮤니티로 결정! [기능 명세서] 어떤 기능들이 필요할까? 구현해야하는 기능들을 구체화하여 한 눈에 보기 위해 기능 명세서를 작성하였다. 1. 회원 회원가입 회원 종..

    [TIL] JSP 댓글 기능 구현 (Comment)

    ✍ Today I Learned 댓글을 달 때마다 페이지가 리로딩된다면? 트래픽 양을 감당하기 힘들 것이다. 페이지를 이동하지 않고 자바스크립트 비동기 통신을 이용하여 댓글 기능을 구현해보자. 순서는 VO → mapper → DAO → Service → Controller → 화면단(view) 먼저 프로젝트를 분리하고 톰캣에 올라가 있는 프로젝트를 remove 해준다. [CommentVO.java] comment 테이블의 pk인 cno와 board 테이블의 pk인 bno는 long 타입으로 선언한다. 비동기 통신에서는 register 대신 post라는 단어를 주로 사용한다. post, list, modify 상황별 생성자를 만들고 getter, setter를 생성한다. (list의 상황에서는 전체 컬럼을..

    [TIL] JSP 웹페이지 만들기2 (Board)

    ✍ Today I Learned Member에 관한 기능을 모두 구현했으니 Board 기능을 구현할 차례! 여태까지는 프로세스 순서대로 구현했다면 이번엔 다음과 같이 백단부터 작성해보았다. DB → VO → Mapper → DAO → Service → Controller → JSP 뷰단을 가장 마지막에 출력하기 때문에 내가 어떤 파라미터를 던지고 어떤 결괏값을 받는지 잘 생각해야 한다. [BoardVO.java] register, list, modify, detail 상황별 생성자를 만들고 getter, setter를 생성한다. board 테이블의 pk인 bno는 long 타입으로 선언한다. [boardMapper.xml] mapper 패키지에 boardMapper.xml 파일을 생성하고, 먼저 dtd를..

    [TIL] JSP 웹페이지 만들기(MyBatis, Member)

    ✍ Today I Learned 지금까지 JSP의 기능에 대해 공부했다면, 이번엔 제대로 웹페이지를 만들어보자. 기본 게시판 기능, 로그인/로그아웃 기능, 파일 업로드 기능, 댓글 기능 등이 포함될 예정이다. MyBatis 프레임워크를 사용할 것이다. [환경 설정] New → Dynamic Web Project로 새로운 프로젝트를 생성한다. (Generate web.xml deplyment descriptor 체크 필수) 기본으로 생성되던 주석을 삭제한다. Window → Prefernces → Java → Code Style → Code Templates에서 Code에 있는 주석 부분을 전부 지워준다. [web.xml 설정] WEB-INF 폴더에 web.xml 파일을 만들고 다음과 같이 작성한다. 이번..

    [TIL] JSP 세션(session)으로 로그인/로그아웃 구현

    ✍ Today I Learned 톰캣 서버에 올라가 있는 프로젝트를 remove 하고, 02 프로젝트를 복사한 session 버전 프로젝트를 톰캣 서버에 add 한다. 충돌 방지를 위해 web.xml에 있는 display-name을 프로젝트와 같은 이름으로 바꿔준다. [세션 Session] 세션(session)이란? 서버와 클라이언트의 연결을 유지시켜주는 방법이다. 쿠키는 클라이언트 브라우저에 생성되고 저장이 된다면, 세션은 웹서버 쪽 웹 컨테이너에 생성되고 저장이 된다. http 프로토콜은 브라우저에 어떤 요청을 하고 서버에서 응답을 하고 나면 해당 연결을 해제하는데, 쿠키와 세션을 이용해 해당 정보를 저장하면 연결을 유지시킬 수 있다. 세션은 웹 브라우저를 종료하거나, 프로그래밍적으로 세션을 종료하기..

    [TIL] JSP로 CRUD 구현2

    ✍ Today I Learned [Detail(SelectOne)] List에서 ename을 클릭하면 Detail을 볼 수 있도록 a 태그를 이용해 "detail.em"으로 쿼리 스트링에 empno를 실어 요청한다. 이때 EL태그를 이용하면 훨씬 효율적이다. ${evo.ename} 클릭한 데이터의 empno 정보를 가지고 다음과 같은 순서로 요청한다. Controller → Action(여기까진 request객체) → Service → DAO → 데이터베이스에서 empno로 Select 후 EmpVO 객체를 다시 detail.jsp까지 전달한다. list와 마찬가지로 JSTL을 이용하여 datail.jsp를 작성한다. Action에서 setAttribute를 evo로 설정했기 때문에 jsp에서도 evo로..