String String 클래스는 String Constant Pool에 저장되고, 불변객체로 변경되지 않는 특징을 가지고 있습니다. 이렇게 사용하면, 문자열을 Constant화 하여 다른 변수 혹은 객체들과 공유하게 되는데 이 과정에서 데이터 캐싱이 일어나고 그 만큼 성능적 이득을 취할 수 있기 때문입니다. 두번째는 데이터가 불변(immutable) 하다면 Multi-Thread 환경에서 동기화 문제가 발생하지 않기 때문에 더욱 안전한 결과를 낼 수 있기 때문입니다. 세번째는 보안(Security) 측면으로, 데이터베이스 사용자 이름, 암호는 데이터베이스 연결을 수신하기 위해 문자열로 전달되는데, 만일 번지수의 문자열 값이 변경이 가능하다면 해커가 참조 값을 변경하여 애플리케이션에 보안 문제를 일으킬 ..
기술 스텍
Record는 Java14 부터 도입되고 16부터 class처럼 타입으로 사용이 가능해졌습니다. final로 구성되기에 VO로 많이 사용되는 방식입니다. 정의 방법 불변 데이터 객체로 Person을 정의하면 아래와 같이 정의 해야합니다. public class Person { private final String name; private final String address; public Person(String name, String address) { this.name = name; this.address = address; } @Override public int hashCode() { return Objects.hash(name, address); } @Override public boolean ..
멀티테스킹 OS에서는 멀티 테스킹을 지원합니다. Linux, Windows 등이 모두 이에 해당되죠. 즉, 한 컴퓨터에서 인터넷 검색, 노래 듣기, 게임을 동시에 할 수 있는 것이죠 그럼 어떻게 많은 작업을 동시에 처리할 수 있을까요? cpu 성능이 좋지 않으면 동시에 처리하는 기능이 떨어지는 걸까요? 게임과 같이 처리량이 많은 업무를 할때, 다른 업무를 많이 처리하게 한다면 동시에 처리되지 않고 버벅이거나 게임할 때 자막이 잘 나오지 않는 것 그런것들 모두 이것과 관련이 있습니다. 실제로 동시에 처리될 수 있는 프로세스의 개수는 CPU 코어의 개수와 동일합니다. 이보다 많은 개수의 프로세스가 존재하기 때문에 모두 함께 동시에 처리할 수는 없습니다. 각 코어들은 아주 짧은 시간에 여러 프로세스를 번갈아가..

Java를 하는 개발자로써 개발 환경마다 java의 버전이 다르다면, 이에 대해서 정확하게 구분할 줄 알아야합니다. 그래서 java 버전에 따라 어떤 차이점이 있는지 구분해 보았습니다. 어떤 서비스를 많이 사용하는가? jetbrain에서 조사한 바에 따르면 java8이 아직 많은 개발에 사용되고 있지만 21년 기준 java 17의 사용이 월등히 많이 늘었다는 것을 비교해 볼 수 있습니다. (참고 : jetbrain 분석 ) 그리고 java의 서비스 종료 기간도 확인해보면 8은 2030까지 지원하고, 17이 8과 비슷한 것을 알 수 있습니다. 아마 서비스 기간때문에 더 8과 17을 많이 사용하지 않을까 생각합니다. 그리고 최근 17을 많이 사용하게 된 이유는 2022년에 출시된 Spring Boot 3.0..