본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

[팀 프로젝트] SQL 교육 사이트 - 20220712 안내 사항 1. 팀장 코멘트 - Git 협업 환경에 대한 실습 플랜은 세우고 있는데, 명령어를 조금만 더 이해하고 실습을 해야 좋을 것 같다는 생각이 듬 - 간단한 질의응답 과제물로 기본기좀 만들고 실시간 실습은 추후에 진행하겠음. 애매한 개념으로 넘어가면 협업에 상당히 치명적이라는 이유임 - 오늘 저녁 8시에 하기로 했던 회의/실습은 없고, 2. 실습 환경 준비와 3. 질의 응답 과제만 진행하면 됨! - 7월 14일 목요일까지 수행할 것 2. 실습 환경 준비 1) IntelliJ와 Git 연동하기 - 아래 블로그에서 [2. IntelliJ에 Git/Git 설정]부터 VCS 메뉴를 Git으로 바꾸는 내용까지 수행할 것 https://brunch.co.kr/@mystoryg/168 IntelliJ GitHub 연동 .. 2022. 7. 12.
[Spring] @Transactional의 속성 @Transactional은 Fallback 정책을 통해서 특정 트랜잭션 속성을 적용할 대상을 매우 유연하게 선정할 수 있도록 하는 어노테이션이다. Fallback 정책은 @Transactional 어노테이션의 작성 위치에 따른 설정의 우선순위를 다르게 적용하는 것이다. 타깃 메소드 > 타깃 클래스 > 선언 메소드 > 선언 타입 ※ 여기에서 선언은 인터페이스처럼 선언만 하고 구현하지 않은 대상을 뜻한다. 트랜잭션의 구조 및 속성은 다음과 같다. @Target({ElementType.TYPE, ElementType.METHOD}) // 어노테이션 사용대상 지정 @Retention(RetentionPolicy.RUNTIME) // 어노테이션의 정보유지 기간 @Inherited @Documented publi.. 2022. 7. 9.
[팀 프로젝트] SQL 교육 사이트 - 20220708 안내 사항 1. 어제 회의 결과 주제는 SQL 교육 사이트로 선정 DB 연동 방식은 JPA를 사용 프로젝트 초심자도 있음을 고려하여 스터디 그룹 위주로 진행하고, 학습의 결과물을 프로젝트 진행으로 나타내기로 결정 프로젝트에 대한 설문, 실력 테스트 진행 2. 설문 결과 취합 - 원하는 프로젝트 기간 : 가급적 올해 안에 했으면 하는 의견이 많아서 그렇게 하기로 함 - 원하는 프로젝트 요일 : 각자의 일정이 많이 다른 관계로, 요일을 따로 정해서 코딩하기보다는 일정 기간 내에 주어진 할당량을 완수하는 것을 목표로 하는 방식으로 진행하기로 함 - 회의 내용 외에 추가하고 싶은 기술 스택 : 회의 때 충분히 결정 했고, 그 외에는 프로젝트를 진행하면서 결정하기로 함 - 스프링 경험 : 진행이 불가능할 정도의 실력을 가지.. 2022. 7. 8.
[Spring] Hibernate 1. Hibernate란? - Hibernate는 JPA를 구현한 ORM 라이브러리들 중 하나다. - Spring과 Hibernate는 비슷한 시기에 POJO 프로그래밍을 바탕으로 자바 엔터프라이즈 개발의 혁신을 가져온 대표적인 기술이다. 2. SessionFactory 1) SessionFactory란? - Hibernate의 핵심 엔진 역할을 하는 인터페이스다. - SessionFactory는 bean으로 등록된 DataSource를 이용하여 spring이 제공하는 트랜잭션 매니저와 연동할 수 있도록 설정되어 있다. - Spring에서는 SessionFactory bean을 생성해주는 LocalSessionFactoryBean과 AnnotationSessionFactoryBean을 제공한다. 2) S.. 2022. 7. 6.
[스택/큐] 캐시 - 2018 KAKAO BLIND RECRUITMENT 이 문제는 LRU(Least Recently Used) 알고리즘을 구현하는 문제다. 해결 방법 LRU 알고리즘은 가장 오랫동안 사용되지 않은 요소를 제거하는 교체 알고리즘이며, 필자가 구현한 방법은 다음과 같다. 먼저, 큐에 있는 요소들을 pop해가며, cache hit이 발생한 요소를 제외하고 모두 임시 큐로 옮겨놨다가 다시 기존 큐로 옮긴다. cache hit이 발생했다면 cache hit이 발생한 요소는 큐의 맨 뒤에 push한다. 만약 cache hit이 발생하지 않았다면 새로운 요소를 큐에 넣어야 하는데, 그 전에 cacheSize를 따져서 큐가 모두 찼다면 가장 오래된 요소를 제거해두면 된다. 마지막으로 cache hit의 여부에 따라 cache hit이 발생했다면 answer에 1을 더하고,.. 2022. 7. 5.
[시뮬레이션] 파일명 정렬 - 2018 KAKAO BLIND RECRUITMENT 해결 방법 문자열 파싱 부분은 NUMBER은 첫 연속 숫자열만 반영해야 한다는 사실만 잘 고려하면 어렵지 않을 것이다. 파일의 TAIL 부분은 파일 정렬에 고려하지 않기 때문에 TAIL 부분은 신경쓰지 않아도 되지만, 두 파일의 HEAD 부분과 NUMBER 부분이 모두 같을 때는 입력 벡터의 인덱스 순으로 정렬해야 하기 때문에 입력 인덱스까지는 고려해줘야 한다. 그래서 파일의 인덱스, HEAD 부분, NUMBER 부분에 해당하는 파일 구조체를 만들어두면 문제를 쉽게 해결할 수 있다. 또, 문자의 대소문자를 판별할 때나, 정수 여부를 판별하는 경우에는 아스키 코드를 이용하면 편리하고, 정수 문자열을 정수로 바꿀 때는 stoi 함수를 이용하면 편리하다. stoi 함수는 앞 부분에 0이 여러 개 붙더라도 이를.. 2022. 7. 5.
[Spring] Spring이 제공하는 JPA 이 포스팅을 읽고 이해하려면 EntityManager, EntityManagerFactory 그리고 persistence.xml에 대한 어느 정도 기초 지식이 필요하다. 이전에 필자가 정리한 포스팅을 참고하길 바란다. https://kimcoder.tistory.com/355 [JPA] EntityManager / 트랜잭션 간단 예제 이번 포스팅에서는 실제로 JPA를 이용하여 간단한 트랜잭션 체계를 만들어볼 것이다. 1. EntityManager와 EntityManagerFactory 예제에 들어가기 전에 알아둬야 할 클래스들이다. 1) EntityManager (1) 특징 - Ent.. kimcoder.tistory.com 1. LocalContainerEntityManagerFactoryBean - .. 2022. 7. 2.
[Spring] 더 편리해진 Spring JDBC 1. Spring JDBC란? - Spring JDBC는 DriverManager에 드라이버를 로드하고, Connection, Statement, ResultSet 관련 작업, 자원 해제 작업과 트랜잭션 작업을 모두 담당 해주기 때문에 상당한 소스코드를 줄일 수 있게 된다. - Spring JDBC는 JDBC 작업 중에 발생하는 모든 예외를 처리해준다. DB별 에러 코드를 참고해서 SQLException 예외를 DataAccessException 타입의 계층구조 내의 예외로 변환해준다. - Spring JDBC는 멀티 쓰레드 환경에 안전하다. - Spring JDBC의 접근 방법 중에서 JdbcTemplate이 가장 대표적인데, JdbcTemplate 기능을 모두 갖고 있으면서 더 발전되고 편리한 사용 .. 2022. 6. 29.
[Spring] .gitignore 적용하기 Spring의 프로퍼티 파일에는 중요한 기밀 정보가 담겨있을 가능성이 높기 때문에 프로젝트를 git에 올릴 때 실제 프로퍼티 파일은 반영하지 않아야 한다. git에 반영하지 않을 파일은 .gitignore이 위치한 경로를 기준으로 작성해주면 된다. 예를 들어, 프로젝트 최상위에 .gitignore 파일을 두었다고 하자. 그리고 commit 하고 싶지 않은 파일인 application.properties는 다음과 같은 경로에 저장되어 있다. 이 때에는 .gitignore 파일을 열어서 application.properties의 경로를 .gitignore의 상대 경로를 기준으로 추가해주면 된다. 중간 경로를 모두 작성해줘도 되고, **를 이용해서 중간 경로를 생략해줘도 된다. 그리고 git의 캐시 문제로 인.. 2022. 6. 29.