Java

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

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

    [Spring] 스프링 프로젝트 환경설정

    스프링(Spring) 공부는 이렇게 해야 한다 스프링 프로젝트 생성 스프링 부트로 웹 서버 실행 회원 도메인 개발 웹 MVC 개발 DB 연동- JDBC, JPA, 스프링 데이터 JPA 테스트 케이스 작성 프로젝트 생성 윈도우(Windows)에서 인텔리제이(IntelliJ) 설치 JetBrains 계열의 IntelliJ는 이곳에서 무료인 Community 버전으로 설치한다. Spring에 체크가 되어 있지 않지만, Spring 라이브러리가 장착되어 있지 않다는 의미일 뿐 개발하는 데에는 문제없다. 스프링 이니셜라이즈(spring initializr)로 프로젝트 생성 스프링 부트 기반으로 프로젝트를 만들어주는 사이트(https://start.spring.io/) maven? gradle이란? 필요한 라이브러..

    [Spring] 스프링 Security 한글 깨짐 해결 방법

    문제 상황 게시판에서 POST 요청으로 글 작성 시 한글이 깨지는 현상이 나타났다. 아니 어제까지도 잘 됐는데 갑자기..? 전체 페이지가 그런 것은 아니었다. 작성되어 있던 글은 잘만 나오는데 새롭게 작성하는 글은 모두 저런 형태로 출력되었다. 자, 그럼 어디서부터 잘못된 건지 찾아보도록 하자. 먼저 데이터베이스 쪽을 살펴보았다 출력만 그런 게 아니라 애초에 DB에 들어갈 때 이렇게 되는구나? 어디서 깨지는 거야 도대체 Controller에서 로그를 찍어보니 이미 한글이 깨진 채로 전송이 된다는 걸 알 수 있었다. 해결 방법 1. 데이터를 가장 먼저 마주하는 Controller의 문제일까? RequestMapping 부분을 다음과 같이 수정했다. → 실패 @RequestMapping(value = "/p..

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

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

    [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로..

    [TIL] JSP, 톰캣, 서블릿

    ✍ Today I Learned JSP란(Java Server Pages)란? Java 언어를 기반으로 하는 Server Side 스크립트 언어를 의미한다. HTML 코드에 Java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 애플리케이션 도구이다. JSP를 실행시키기 위한 Servlet 엔진이 필요하다. 서블릿(Servlet)이란? 클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 Java 인터페이스이다. 간단한 메서드 호출만으로 웹 요청과 응답의 흐름을 체계적으로 다룰 수 있는 기술이다. 톰캣(Tomcat)이란? JSP와 Servlet을 구동하기 위한 서블릿 컨테이너이자 웹 서버이다. Java EE 기반으로 만들어졌다. (Port:8080 → 8088) 브라우저와 자바 애플리케이..

    [TIL] Java 주소록, 상품관리, 호텔관리 시스템

    ✍ Today I Learned [주소록 관리 시스템] SelectOne mysql> select * from address where name = ‘이름’; pk(=primary key 빈 값이 없고 중복되지 않는 키)로 검색하지 않는 경우 출력 형태가 단일 객체 아님을 주의하자. where은 조건절로 테이블 내에 해당하는 이름을 검색한다. 입력받은 이름을 데이터베이스로 넘겨서 해당하는 데이터를 리턴 받는다. list는 여러 개의 데이터를 리턴 받고, detail은 한 개의 데이터만 리턴 받는다. Delete mysql> delete from address where name = ‘이름’; 입력받은 이름을 데이터베이스로 넘겨서 해당 데이터를 삭제한 후, 결과를 true or false로 리턴 받는다. ..

    [TIL] Java Enum, MySQL 개발 환경 설정, JDBC

    ✍ Today I Learned [Enum] 열거형(enum)이란? 관련 있는 상수들의 집합이다. class나 interface 대신 enum 키워드를 사용하여 정의하고, 콤마로 상수를 구분한다. 이때 상수는 대문자를 사용한다. public enum Directions { EAST, WEST, SOUTH, NORTH } 정의된 enum은 다음과 같은 방법으로 사용한다. Directions east = Directions.EAST; enum의 상수값은 기본적으로 0부터 시작하고, 불규칙한 값을 상수값으로 설정하고 싶으면 상수의 이름 옆에 괄호(())를 추가한 뒤, 그 안에 원하는 상수값을 적으면 된다. 이때 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 별도로 추가해야만 한다. values(..