일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- querydsl
- 낙관적 락
- 스프링 예외처리
- 타임리프
- 예외처리
- LazyInitializationException
- JPA
- 지연로딩
- thymleaf
- thymeleaf
- 타임리프 예외처리
- 공인IP
- 스프링부트
- DATA JPA
- 비관적 락
- 사설IP
- password
- validation
- springboot
- 쉘스크립트
- 쿠키 #세션 #쿠키세션정리
- api 성능최적화
- 좋아요 기능
- jpa hint
- JPA #N+1 #JPA API #API
- HTTP API
- smtp
- 스프링 공통데이터
- spring 예외처리
- jpa 성능최적화
- Today
- Total
목록분류 전체보기 (19)
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로 외부와 통신을 하고, 공유기에 연결된 각각의 기..
th:object 로 커맨드 객체를 지정할 수 있다. 그리고 *{변수명} 으로 th:object에서 선택한 객체에 접근할 수 있다. th:field 는 html 태그의 id,name,value 속성을 자동으로 지정해주는 역할을 한다 렌더링 후 아래와 같다. value는 itemName 변수의 데이터가 저장된다 등록 폼이기 때문에 컨트롤러에서 Model을 사용해 아래처럼 미리 빈 객체인 A를 보내주면, model.addAttribute("item", new Item()); 요청을 보낼 때 파라미터로 A를 바로 받을 수 있다. 출처: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2
객체 리터럴 객체 생성 방식 const member1 = { name: '박진영', getName(){ return this.name; } } const member2 = { name: '김진영', getName(){ return this.name; } } 동일한 구조임에도 항상 {} 를 사용해서 객체를 생성한다. 하지만 생성자 함수에 의한 객체 생성 방식은 다르다. 생성자 함수 방식 function Member(name){ console.log(this); this.name = name; this.getName = function(){ return this.name; } } const member1 = new Member('박진영'); const member2..