일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 브릿지 메소드
- 바운디드 타입
- junit 5
- 상속
- 함수형 인터페이스
- 자바스터디
- yield
- System.out
- 접근지시자
- 항해99
- 로컬 클래스
- 람다식
- 정렬
- 제네릭 와일드 카드
- throwable
- System.in
- 자바할래
- github api
- System.err
- raw 타입
- 익명 클래스
- auto.create.topics.enable
- 합병 정렬
- docker
- Study Halle
- Switch Expressions
- 제네릭 타입
- 프리미티브 타입
- annotation processor
- 스파르타코딩클럽
- Today
- Total
목록Diary (125)
코딩하는 털보
성능 튜닝 결과 기준 사용자 수 약 10000명 테스트용 사용자의 완료 습관 수 10000개 테스트용 사용자의 현재 습관 수 10000개 테스트용 사용자의 몬스터 도감 수 3개 10개 스레드에서 동시에 모든 GET 요청에 대해 50회 씩 테스트 수행 전체 튜닝 시작 전 성능 튜닝 이후 5개 스레드에서 모든 GET 요청에 대해 100회씩 수행
성능 개선 몬스터 컬렉션 조회 HIBERNATE: SELECT user0_.id AS id1_14_, user0_.created_at AS created_2_14_, user0_.disabled AS disabled3_14_, user0_.email AS email4_14_, user0_.monster_id AS monster_9_14_, user0_.monster_code AS monster_5_14_, user0_.provider_type AS provider6_14_, user0_.social_id AS social_i7_14_, user0_.username AS username8_14_ FROM USER user0_ WHERE user0_.social_id = ? HIBERNATE: SELECT ..
성능 개선 특정 사용자 정보 조회 HIBERNATE: SELECT user0_.id AS id1_14_, user0_.created_at AS created_2_14_, user0_.disabled AS disabled3_14_, user0_.email AS email4_14_, user0_.monster_id AS monster_9_14_, user0_.monster_code AS monster_5_14_, user0_.provider_type AS provider6_14_, user0_.social_id AS social_i7_14_, user0_.username AS username8_14_ FROM USER user0_ WHERE user0_.monster_code = ? HIBERNATE: SE..
오늘의 삽질 org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list QueryDSL 쿼리 프로젝션을 사용해서 Entity가 아닌 특정 클래스에 SQL로 조회한 데이터를 담으면서 발생한 에러이다. @Override public List searchByNumber(User login, int number) { return queryFactory .select(new QRecommendationVo(recommendation.type, new QFollowVo( user.username, monsterDatabase.id,..
Jmeter 부하 테스트 Jmeter로 HTTP 테스트를 하면서 두 가지 리스너를 통해서 성능 정보를 추출했다. 참고 : https://kamang-it.tistory.com/398 Mac에서 Jmeter 설치 > brew install jmeter 실행 > jmeter Thread Group 모든 요청은 아래와 같은 Thread 설정을 통해 실행된다. Number of Threads : 쓰레드를 동시에 몇개 생성할지이다. 즉 동시에 몇개의 트랜잭션을 실행시킬지이다. 이는 사람이 동시에 접속하는 효과를 낸다. 10명이서 동시에 접속하는 상황을 만들고 싶다면 10을 사용하면 된다. Ramp-Up Period : 쓰레드를 Ramp-Up Period시간동안 실행해라는 의미이다. 단 균등하게 시간을 나눠서 실행..
오늘의 삽질 QueryDsl 사용하기. QueryDsl 관련 의존성을 추가하고 기존 리포지토리가 상속할 QueryDsl 인터페이스와 그 구현체 추가. public interface RecommendationRepositoryCustom { List searchByNumber(int number); } @re public class RecommendationRepositoryImpl implements RecommendationRepositoryCustom { private final JPAQueryFactory queryFactory; public RecommendationRepositoryImpl(EntityManager em) { this.queryFactory = new JPAQueryFactory..
오늘의 삽질 SQL 로그 파일만들기 스케줄러가 잘 동작했는지 검증할 수 있는 로그 파일을 만들기 위해서 발생한 SQL을 파일로 저장하려고 한다. logback-spring.xml ${home}/scheduler-%d{yyyy-MM-dd}.%i.log 10MB 30 utf8 ${FILE_LOG_PATTERN} 위의 설정을 간단하게 설명하자면 hibernate가 기본적으로 제공하는 로깅 'org.hibernate.SQL' 중에서 DEBUG 이상의 로그들은 SCHEDULER_FILE_APPENDER에 의해서 파일로 써지도록 하는 것이다. (TRACE-DEBUG-INFO-WARN-ERROR) hibernate.SQL은 기본적으로 DEBUG인데, application.properties에서 레벨을 ..
오늘의 삽질 No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call; private void deleteUser(User user) { followRepository.deleteByFollower(user); followRepository.deleteByFollowing(user); userRepository.delete(user); } followRepository.deleteByFollowing(user); 에서 에러가 발생했다. EntityManager가 없다니... 예상에는 @Transactional이 안걸려있어서 인 것 같은데, 검색해보니 d..
공격 확인 요상한 주소에서 스프링으로 POST요청을 보내는 것을 확인했다. 8080 포트를 바꿔야 할 듯 하다. 오늘 한 일 아래 6 개 API 응답에 categoryId 추가 습관 생성 POST /habits 습관 상세 정보 요청 GET /habits/{habitId} 습관 변경 Patch /habits/{habitId} 습관 체크 GET /habits/check/{habitId} 사용자 습관 목록 조회 GET /user/habits 특정 유저 정보 조회 GET /user/{monsterCode}/info 마이페이지 조회용 GET /user/detail API 추가 사용자 상세 페이지, 마이페이지 요청 응답에 totalHabitCount 추가 유저 상세 페이지 습관 최근 생성순으로 정렬 추천 사용자 테..