책은 방어적 복사의 중요성에 대해 이야기한다. 방어적 복사에 앞서 깊은 복사와 얕은 복사를 알고 가야한다. 깊은 복사 객체 복사 시, 해당 객체와 인스턴스 변수까지 복사한다. 전부 복사해서 새 주소에 담는 ( 주소값은 달라진다) 즉 원본과 복사 객체는 독립적인 별개의 객체이되, 내부 정보는 동일한 상태로 초기화 하는 것. @Override public Object clone() throws CloneNotSupportedException{ return super.clone(); } 보통 위의 clone 메소드로 복사 하게된다. public static void main(String[] args) { try { // 원본 객체 생성 Person originalPerson = new Person("Alice..
앞서 만든 1편 참고. 결과물 : [Intellij plugin] intellij plugin 만들기 왜? 인텔리제이 플러그인 개발하니 쿼리 테스트 해야는데 자꾸 맞는 문법인지 찾으러 인터넷사이트 돌아다녀서 하나하나 붙여서 테스트 하는게, 보안적으로 걱정도 되고 귀찮기도 해서 직접 만 girinprogram93.tistory.com 2편이다. 첫번째 플러그인은 많이 부족했다. 세팅도 얼탱이없는 걸로 했었고 그렇기 때문에 젯브레인 마켓플레이스 담당자와 메일을 주고 받았었따. 쨌든 두번째 플러그인이다. 이번엔 아이콘도 달았다. https://plugins.jetbrains.com/plugin/22309-recommend-variable 시작한다. 1. 플러그인 만들기 소개 : 영어 변수가 생각 안나면 한글로..
플러그인 프로젝트 설정 및 개발 단계는 다음 글에서 확인가능합니다. [Intellij plugin] intellij plugin 만들기 왜? 인텔리제이 플러그인 개발하니 쿼리 테스트 해야는데 자꾸 맞는 문법인지 찾으러 인터넷사이트 돌아다녀서 하나하나 붙여서 테스트 하는게, 보안적으로 걱정도 되고 귀찮기도 해서 직접 만 girinprogram93.tistory.com 플러그인 배포 1. 빌드 및 로컬 적용 빌드를 한다면, 다음과 같은 파일이 생성됩니다. 현재쓰고있는 IDE에 우선 적용 빌드한 압축파일을 선택합니다. 현재 IDE에 적용 되었음을 확인합니다. 2. plugin 배포 정확한 테스트를 위해 실제 플러그인으로 배포를 해봅니다. https://plugins.jetbrains.com/plugin/add..
왜? 인텔리제이 플러그인 개발하니 쿼리 테스트 해야는데 자꾸 맞는 문법인지 찾으러 인터넷사이트 돌아다녀서 하나하나 붙여서 테스트 하는게, 보안적으로 걱정도 되고 귀찮기도 해서 직접 만듦. Intellij version : 프로젝트 생성 : preference settings : build.gradle.kts 설정 : plugins { id("java") id("org.jetbrains.intellij") version "1.12.0" } group = "com.org" version = "1.0-SNAPSHOT" repositories { mavenCentral() } // Configure Gradle IntelliJ Plugin // Read more: intellij { version.set("20..
미리 보기 페이지를 테스트 하는 도중 의문이 생겼다. @Valid 로 DTO 객체의 유효성 검증을 하고 BindingResult 를 통해 에러를 리턴하는 이유는 뭘까? 우선 선언은 각각 다음과 같다. import org.springframework.validation.BindingResult; import javax.validation.Valid; Spring에서 제공하는 BindingResult 와 달리 Valid는 자바에서 제공한다. BindingResult : 스프링 공식문서의 설명에 따르면, 바인딩 결과를 나타내는 것으로, Errors 오류 등록인터페이스를 확장하고, @validator 를 적용할 수 있도록 한다고 한다. * 즉 오류를 확장하는 목적이다. @Valid : ( spring boot ..
[가장 큰 수] 라는 정렬 알고리즘 문제를 풀다가 접했다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 직접 정렬을 하는 방식으로 풀려고 했지만 시간 초과가 계속 발생했다. 문제의 해결책은 compareTo 라는 함수를 사용하는 방식. + 이어진 두 수의 크기를 비교하는 방법이 핵심아이디어이다. 🍺 java.util.Comparator 클래스에 있는 하위 메서드 compareTo 이다. // 문자형(대소문자구분) StrA.compareTo(StrB); A != B -> return 다른 문자 개수; 동일한 문자로 시작 하지 않을 경우 + 중간은 같은 문..
logi Options+ 메모리 겁나 잡아먹는다.. 처음에는 뭔가 잘못나왔나? 버그인가 싶었는데 맥에서는 메모리 누수가 있나보다. https://www.reddit.com/r/logitech/comments/qov2lr/how_come_the_logi_options_takes_so_much_ram_in/ r/logitech on Reddit: How come the Logi options + takes so much RAM in the background? Posted by u/lkl2050 - 31 votes and 91 comments www.reddit.com 패치가 되었다고 하는데.. 알 수 없으니 종료하고 안써야겠다.
java.lang.IllegalArgumentException: Invalid character found in the request target [/v1/user/students/contracts/list?type=normal&date_type=range&from_date=2023-04-19&to_date=2023-05-19&user_type=&grade=all&searchType=all&keyword=&service_status[]=S1&service_status[]=3&page_size=10&page_count=1&flag=manager ]. The valid characters are defined in RFC 7230 and RFC 3986 service_status 를 배열로 보냈기 때문에 발..