분류 전체보기
[기본] 스프링 핵심 원리 이해1 - 예제 만들기
메모 ~~Impl : 구현체가 하나일 때 관례상 사용 alt + insert : generate file -> setting -> keymap 검색 -> 찾고싶은 단축키 검색 F2: 오류난 곳으로 커서 이동 enum은 비교 시 ==이 맞음 객체 출력하면 기본적으로 객체 내부의 toString()이 출력됨 primative type (long 등) 은 null을 할당할 수 없음 Long은 가능 psvm 치고 엔터 : public static void main(String[] args) {} soutv 치고 엔터: System.out.println("변수: " + 변수) // 위 코드의 변수 중 선택할 수 있음 프로젝트 생성 순수 자바로만 프로젝트를 만들어보고 SOLID 원칙을 만족하는지 확인해보자 비즈니스..
[기본] 객체 지향 설계와 스프링
스프링의 역사 스프링 이전에 Enterprise Java Beans 줄여서 EJB라는 기술이 사용되었다. 그러나 서버 비용도 크고, 설계도 잘못되어 이에 불만을 느낀 Rod Johnson이 EJB 컨테이너를 대체하는 기술을 출시하고, Gavin King이 엔티티빈을 대체하는 Hibernate를 만들었다. Hibernate는 자바 표준화 되어 JPA(Java Persistence API)가 된다. 로드 존슨은 EJB의 문제점을 지적하며 스프링의 핵심 기반 코드(BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입)가 포함된 책을 출간한다. 후에 유겐 휠러, 얀카로프와 함께 오픈소스 프로젝트를 시작하며 이게 스프링이 된다. 스프링 프레임워크는 DI 컨테이너, AO..
[프로그래머스] 힙 3. 이중우선순위큐
문제 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이 힙 카테고리에 있어서 힙으로 만들어 풀어야겠다고 생각했다. 힙은 최소, 최대 힙 중 하나로 만들어져야 하는데 문제에서는 최대와 최소를 모두 삭제할 수 있어야 했다. 그래서 최대 힙, 최소 힙 총 2개를 만들고 만약 최대값 삭제 시 최대 힙의 값을 최소 힙에서 검색해서 삭제하는 방식으로 풀어야하나? 싶었는데 로직이 깔끔하지 못한 느낌이고 비효율적일 것 같았다. 이런저런 고민을 해보다가 그냥 힙 버리고 냅다 풀어보기로 했다. def solution(operations): q = [] for o in operations: op = o..
[입문] AOP
모든 메소드의 호출 시간을 측정하고싶다면? 모든 메소드에 시간 관련 코드를 집어넣어야 한다. 이와 같이 공통으로 적용하는 사항을 '공통 관심 사항'이라고 하고 비즈니스 로직을 '핵심 관심 사항'이라고 한다. AOP (Aspect Oriented Programming, 관점 지향 프로그래밍) 을 활용하여 공통 관심 사항과 핵심 관심 사항 로직을 분리하고 편리하게 적용한다. package hello.hellospring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework...
[입문] spring DB 접근 기술
생성자가 하나일 땐 Autowired 생략 가능 solid 원칙 - SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)을 말하며, 앞자를 따서 SOILD 원칙이라고 부른다. (https://dev-momo.tistory.com/entry/SOLID-원칙 ) stream? RowMapper? jpquery - 테이블 대상으로 쿼리 날리는 대신 객체를 대상으로 쿼리 날림 마지막 실행 재실행: ctrl + R 인라인 리턴: ctrl + alt + n refactor: ctrl + t 파일 찾기: ctrl + shift + n H2 데이터베이스 설치 H2 데이터베이스 - 교육, 테스트용으로 좋은 가벼운 DB jdbc:h2:..
[입문] 회원 관리 예제_웹 MVC 개발
파일이름변경: shift + F6 최근 파일 보기: ctrl + e 자동 리턴값 만들기: ctrl + alt + v 회원 웹 기능 - 홈 화면 추가 HomeController 와 home.html 파일을 추가하여 홈화면을 만든다. controller가 정적 파일보다 우선순위가 높으므로 교체되어 보여진다. 테그로 url 연결 회원 웹 기능 - 등록 위에서 연결한 url로 접속 시 MemberController에서 GetMapping을 통해 createForm.html을 반환(?)시킨다. 이름 등록
[프로그래머스] 깊이/너비 우선 탐색 3. 단어 변환
문제 https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 풀이 처음엔 dfs나 bfs나 상관 없겠거니 싶었는데 dfs로하면 hit -> hat 대신 hit -> jit -> jat -> hat 같이 최소 단계가 아닌 개수를 반환하게 되어 bfs로 변환했다. 반복문을 돌며 begin에서 1개만 바꿔 만들 수 있는 단어를 스택에 넣음 몇번째 단..
[입문] 스프링 빈과 의존관계
컴포넌트 스캔과 자동 의존관계 설정 MemberService 는 별 기능 없음 여러개 생성할 필요 없이 공유해서 쓰면 된다. -> 스프링 컨테이너에 등록하고 사용하자 딱 하나만 등록된다 @Autowired를 생성자에 붙이면 스프링의 멤버서비스를 자동으로 연결해줌 오류! MemberService를 찾을 수 없음 왜냐하면 지금 MemberService는 순수 자바 클래스이기 때문 스프링컨테이너에 등록하기 위해 MemberService에 @Service를 붙여주자 MemoryMemberRepository에도 @Repository 위와 같은 방식이 스프링 빈을 등록하는 컴포넌트 스캔 방식 @SpringBootApplication 을 포함하는 패키지를 뒤져서 스프링 빈에 등록함 스프링 빈은 스프링 컨테이너에 싱글..