일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- thread
- 토비의 스프링 정리
- IntellJ
- 쿠버네티스
- Stream
- 자바 ORM 표준 JPA 프로그래밍
- SpringBoot
- MSA
- JPA
- redis
- 이스티오
- 자바
- Real MySQL
- 스트림
- spring
- GC
- list
- Kotlin
- 보조스트림
- jvm
- OS
- Stack
- 토비의 스프링
- Java
- gradle
- 백준
- K8s
- 스프링
- mysql
- Collection
- Today
- Total
목록Java (35)
인생을 코딩하다.
상수 풀(String Pool)은 GC가 될까요? JVM 내부구조를 다시 보던 중에, 문득 "상수 풀은 GC가 될까?" 라는 생각이 떠올랐습니다. 자바에서 보통 static은 GC가 되지 않는데, 상수풀도 GC가 안되려나? 자바에서 보통 string 객체의 사용량이 가장 큰데 상수풀이 GC가 되지 않는다면 메모리에 큰 이슈가 발생하지 않을까? 큰 이슈가 발생할 수도 있으니, JVM에서 상수풀이 GC가 되도록 최적화하는 옵션을 설정해두지 않았을까? 하는 생각들을 했었습니다. https://www.baeldung.com/java-string-pool에서 답을 얻을 수 있었습니다. Before Java 7, the JVM placed the Java String Pool in the PermGen space,..
이전 글에서는 CIA에 관한 설명과 CIA를 지키기 힘들 수 밖에 없는 이유에 관해 글을 작성했었습니다. 이번 글은 CIA를 지키기 위한 방법 RSA에 관해 글을 작성해보도록 하겠습니다. RSA란? RSA는 공개키 암호시스템의 하나입니다. 암호화 뿐만아니라 전자서명이 가능한 최초의 알고리즘으로 알려져있고,RSA가 갖는 전자서명 기능은 인증이 필요한 전자상거래 등에 광범위하게 사용되고 있습니다. RSA는 public key(공개키), private key(비밀키)가 존재합니다. 이것을 기반으로 이 전글에서 CIA를 지킬 수 없었던 문제에 관해 해결하는 법을 작성해보도록 하겠습니다. 우선 이전 글에서 A에서 B로 정보를 보낼 때, 정보 전달 문제 A에서 B로 정보를 보낼 때, C가 정보를 탈취해가는 것 누가..
안녕하세요. 오늘은 2차 캐시에 관해 정리한 내용을 작성해 보도록 하겠습니다. 그리고 2차 캐시에 관해 글을 작성하기에 앞서 우선 캐시와 JPA의 1차 캐시에 관해 잠시 설명해 보도록 하겠습니다. 🔍 캐시란 무엇이고, 캐시는 왜 사용하는 걸까요? Cache는 간단히 말해서 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것입니다. 위로 갈수록 빠르고 비싸고 밑으로 갈수록 느리고 저렴한 저장소라고 생각하면 됩니다. Secondary Memory를 디스크 영역이라고 보시면 됩니다. 기본적으로 데이터는 컴퓨터가 꺼져도 저장이되어야 하기 떄문에 Secondary Memory(SSD,HDD 등)에 저장이 되는데, 기술이 발달하고 하드웨어들이 커지다보니깐 Main Memory나 Cache Memory, ..
@Transactional fun saveUser(userDto: UserDto) { // 이메일 중복체크 예외처리 로직 if (userRepository.existsByEmail(userDto.email)) { throw EmailDuplicateException() } ... 중간 생략 userMapper.save(user.toUserEntity()) } 위의 코드에서 saveUser메서드는 회원가입을 하는 API다. 이 메서드에는 이메일 중복검사에 관한 기능과 회원 정보를 저장하여 회원가입을 하는 기능이 있다. 또한 위에서 보이는 로직 말고도 추 후 변경이 생겨 다른 로직들이 더 추가 될 수 있다. 서비스에서 회원가입 기능의 흐름상 이메일 중복검사 기능은 어떤식으로든 들어가야 한다. 또 변경이 생겨..
메모리 누수(memory leak)란? CS 의미로 살펴볼 때, 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상이다. 할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비된다. 즉, 더 이상 불필요한 메모리가 해제되지 않으면서 메모리 할당을 잘못 관리할 때 발생한다. 일부 서적에서 메모리 손실이라는 용어로 뜻을 옮기기도 하지만 leak라는 표현은 단순히 잃는 것 이상의 개념이므로 누수라는 표현이 더 정확하다. 자바에서 메모리 누수(memory leak) 더 이상 사용되지 않는 객체들이 가비지 컬렉터에 의해 회수되지 않고 계속 누적이 되는 현상을 말한다. Old 영역에 계속 누적된 객체로 인해 Major GC가 빈번하게 발생하게 되면서, 프로그램 응답속도가 늦어지면서 성..
volatile관련해서 책에서 32비트와 64비트에 효과적이라는 것을 보았는데, 왜 효과적이며 기존 32비트와 64비트에는 어떤 문제가 있는 것일까? 에 관한 고민을 하였다. 그리고 이에 관해 조사해 보았다. oracle docs를 보니, 라고 써있었다. 위 글에 관한 해결 방법이 volatile이고, 아래 내용이 문제점에 관해 조사해본 내용이다. long value = 123L; A,B 두 쓰레드가 있을 때, 위의 value에 값이 할당될 때 완벽히 한 메모리 작업 안에서 완벽히 쓰여지지 않는다. int value = 123; 하지만 int형이라면 완벽히 쓰여진다. 왜 그럴까? int형 보다 더 큰 타입, long이나 객체..그리고 변수 할당 및 연산 시 일어나는 작업에서는 완벽히 원자성을 가지지 않고..
첫 화면에서 로그인을 해야 기능을 사용할 수 있는 어떤 웹 사이트를 가정해보자.일반적으로 첫 화면에서 로그인을 하고, 나머지 기능들을 ui 클릭을 통해 사용할 것이다. 하지만, 어떤 사용자가 로그인을 해야만 하는 어떤 기능의 url을 복사해 뒀다가 로그인 없이 주소창에 그 url을 붙여넣는다면 어떨까? '별도의 처리' 가 없다면 아마 로그인 없이도 기능을 사용하게 되거나, 에러가 발생할 것이다. 그 '별도의 처리'가 포함된 로직은 일반적으로 아래와 같을 것이다. 1. 사용자는 로그인을 한다. 2. 시스템은 로그인한 사용자 정보를 세션에 저장한다. 3. 사용자는 기능을 요청한다. 4. 시스템은 사용자가 요청한 기능을 수행하기 전에 요청한 사용자의 세션을 체크한다. 5. 시스템은 올바른 세션일 경우 기능 승..
Servlet 웹 애플리케이션을 만들 때 필요한 인터페이스 Spring web MVC spring : Spring Framework에 있는 모듈 web : Web Service를 만들때 필요 MVC : MVC 패턴을 사용해서 (Model View Controller) 그리고 이 Spring web MVC가 Servlet를 사용하게 된다. Servlet은 왜 생겼을까? 정적 데이터만 전달하는 Web Server 처음에 웹 프로그래밍인 정적 데이터만 전달할 수 있었다. 어떤 사용자가 들어와도 Hello.html만 줄 수 있었다. 그래서 사용자(요청)에 따라 다른 처리를 해줄 수 없었다. 동적인 처리를 해주는 웹 애플리케이션이 없었다. 그래서 나온게 CGI다. 동적인 데이터를 처리하는 CGI, Web Serv..