일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 전략패턴
- 시스템설계면접
- awss3
- git commit 협업
- 헤드퍼스트전략패턴
- git squash
- cypressBDD
- 리액트구글애널리틱스
- FirebaseAnalytics
- react
- 시스템설계방법
- 디자인패턴
- 가상면접으로대규모시스템
- 시스템설계면접팁
- file not found Error
- gitsquash
- Git commit 합치기
- 리팩터링2판테스트
- 리팩토링2판4장
- 가상면접3장
- 시스템설계
- 테스트코드책
- git commit merge
- s3이미지다운로드됨
- 시스템설계면접예시
- 가상면접2장
- formik submitting not working
- formik react-query submitting not working
- cypress React
- react-ga
- Today
- Total
목록전체 글 (276)
mingg IT
우선 우리가 아는 @transactional annotation은 붙여주게되면 해당 메소드 시작부터 메소드 끝까지 하나의 transaction으로 관리하게 됨을 의미한다. 조금 자세히 공부해보니 해당 개념을 정확히 알지못하면 유지보수나 이슈 해결에 어려움을 겪을것 같아 정리해 두려고 한다. 우선 격리수준, 전파속성 두가지에 대해 알아보려고 한다. 격리수준 Read uncommitted transaction이 아직 끝나지 않은 경우에 다른 transaction이 데이터를 읽을 수 있는 상황 Transaction lock 발생 가능성 있음. 만약 commit을 하지않고 rollback을 하게된다면? Update 된 값을 보여줌. Dirty data를 보여줌(rollback 이 안먹음) -> 해결법은 enti..
영속성 컨텍스트란? 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. Entity Manager를 통해 엔티티를 저장하거나 조회하면 Entity Manager는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. Transactional 사용하면 영속성 캐싱 기능을 사용한다. 1차 캐시는 map의 형태로 key는 id value는 해당 entity id로 존재하면 1차로 entity에 존재하는지 검사하고 존재하지 않으면 실제쿼리로 DB에 보내고 조회한다. 예시를 확인해보자. @Test void cacheFindTest() { // System.out.println(userRepository.findByEmail("m..
1. deleteAll() userRepository.deleteAll(userRepository.findAllById(Lists.newArrayList(1L,3L))); userRepository.findAll().forEach(System.out::println); 우선 첫번째 Select문같은 경우에는 findAllById로 인해 in 절로 select를 해온 이후 1번, 3번이 존재하는지 확인 한다. (deleteAll에서 argument를 주지않았을 경우에도 동일함. ) 이후 delete로 해당 id를 하나하나 있는지 검사하면서 지운다. 이로인해 deleteAll()은 성능이슈로 인해 거의 사용하지 않는다. 대용량의 데이터가 있을경우 for문을 하나하나 돌면서 사용하기 때문에 보통 천만건이 넘는..
1. spring initializr 에서 프로젝트 하나 만듬 2. application.yml 작성 server: port: 8070 spring: h2: console: enabled: true 포트번호를 8070으로 바꾸었음. 3. Run 을 수행한 이후 http://localhost:8070/h2-console 로 접속 4. URL을 vs code에서 스프링을 실행시켰을때 떴던 url을 복사해서 넣어준다. 5. 연결 성공! show databases를 입력해본다. 이제 본격적으로 JPA공부할 환경 세팅 완료.
react, spring 사이드 프로젝트를 진행하면서 스프링으로 보낸 axios.post에러에서 CORS policy 에러가 발생했다. 물론 크롬을 방법 1) google-chrome --disable-web-security --user-data-dir="C:\rome" 명령어를 이용하여 띄우면 CORS에러가 발생하지 않지만 이번에 공부해보고 근본적인 해결책을 알아보려 한다. 우선 CORS 에러는 보안상의 이유로 HTTP헤더를 사용해서 실행 중인 웹 애플리케이션의 접근 권한을 부여하도록 브라우저에게 알려주는 체제이다. react 서버는 3000, spring은 9091 포트를 사용하고 있어서 발생했다. 즉 CORS는 서로 다른 출처간에 리소스를 전달 방식을 제어하는 체제이며, 이를 해결하기 위해선 서버에..
리덕스를 좀 더 편하게 사용하는 방법이다. redux-actions를 사용하면 액션 생성 함수를 훨씬 짧고 가독성 좋은 함수로 만들수 있다. 1. yarn add redux-actions typeScript를 사용할 경우에는 (npm i --save-dev @types/redux-actions) 2. 사용전 코드 export const changeInput = (input: String) => ({ type: CHANGE_INPUT, input, }); function search(state = initialState, action: any) { switch (action.type) { case CHANGE_INPUT: return { ...state, input: action.input, }; defa..
우선 그리디를 이용해서 풀어야 하는데 테스트 케이스는 전부 맞았으나 자꾸 시간초과가 났다. 처음 실패한 코드를 알아보자. 시간초과난 코드 import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; ArrayList list = new ArrayList(); for(int i = 0; i < people.length; i++) { list.add(people[i]); } Collections.sort(list, Collections.reverseOrder()); while(!list.isEmpty()) { int top = list.remove(0); int diff = limit - t..
git push하려는데 No anonymous write access. 에러가 발생했다. git config --list에서 username, useremail모두 이상이 없는데 왜이러나 싶어서 구글해보다가 해결법을 찾았다. 우선 토큰 방법에 대해서는 Git Hub 홈페이지 -> Settings-> Developer settings -> Personal access tokens 를 선택. 이후 Generate new token을 클릭해서 토큰을 생성한다. 난 이미 만들어 놓은게 있기 때문에 그대로 사용하도록 하겠음. 1. git remote set-url origin https://{토큰}@github.com/{깃허브이름}/{repost이름}.git ex) https://토큰토큰토큰@github.com/..