목록분류 전체보기 (6)
jiny
Stream.parallel() 을 사용하여 List 에 값을 추가하고, List를 반환하여 추가 작업을 하려는데 문제가 발생했습니다. 대략 아래와 같은 상황으로 List에 값을 추가하고 List를 그대로 반환하려고 했습니다. @Test public void List_는_멀티스레드에서_안전하지_않다() { List list = new ArrayList(); IntStream stream = IntStream.rangeClosed(0, 499); stream.parallel().forEach(i -> { list.add(i); }); assertThat(list.size()).isEqualTo(500); } 분명 parallel() 은 병렬 처리를 안전하게 쉽게 도와주는 것으로 알고 List 에는 500개..
IP 는 인터넷 프로토콜의 약자로 컴퓨터 자체를 식별하는 번호가 아닌, 네트워크 끝단의 주소입니다. 다시말하면 아래처럼 같은 컴퓨터를 다른 랜선에 연결하면 주소가 바뀌는 것이라고 볼 수 있습니다. 하지만 보통 집에서 사용하는 컴퓨터는 가만히 있어도 아래처럼 주소가 변경되는데요 이것을 알기 전에 IP 주소에 대해 자세히 보겠습니다. IP 주소를 표현하기 위한 규약으로 IPv4가 있는데, 0~255 까지의 숫자 4개 묶음으로 아래처럼 표현할 수 있습니다. ex. 255.255.255.255 즉 256의 4승에 달하기 때문에 대략 46억개의 주소를 가질 수 있는데, 많이 부족합니다. 그래서 공인IP, 사설IP 가 생기게 되었습니다. 아래 사진과 같이 공인 IP로 외부와 통신을 하고, 공유기에 연결된 각각의 기..
spring boot 2.7.7 사용 , java 11 ( 스프링 부트 버전이 3.0 이상일 경우 java 18 선택 )build.gradle 파일에 아래처럼 등록합니다 plugins 영역에 추가id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' dependencies 영역에 추가//querydsl 추가implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"implementation "com.querydsl:querydsl-apt:${queryDslVersion}" 빈부분에 추가buildscript { ext { queryDslVersion = "5.0.0" }}//queryds..
좋아요와 같은 기능은 트랜잭션 2개가 동시에 시작되면 조회후 값을 변경시키는 것이라 트랜잭션 격리수준으로 해결이 불가능하다. (아마 2번의 갱실 분실 문제? 라고 불리는 것 같다) 동시에 값을 변경하는 경우에는 lock 걸어서 해결해야하며, JPA를 사용하는 경우 낙관적락을 추가로 사용할 수 있다. 비관적 락은 데이터 베이스에서 제공하는 select for update 구문을 실행시키는 것과 동일하다 Post 엔티티에서 좋아요 개수를 표시하는 Star 필드를 표시하고 있고 좋아요(star)를 올리기 위해서는 post 조회를 해야한다 그래서 Post를 select 할때 select for update 구문으로 락을 걸 수 있도록 비관적 락을 사용한다 방법1. 비관적 락 결과 방법2. 낙관적 락 엔티티에 v..