일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 깃허브 프로필
- 프라이탁 알림봇
- 깃허브
- 프라이탁
- 분산락
- 동등성
- 신규 프로젝트 생성후 빌드시 오류
- Redisson
- 깃허브 리드미 꾸미기
- 깃허브 방문자
- 깃허브 뱃지
- 레디스
- 파이썬 설치하기
- 파이썬 pip
- visual studio code
- maven 오류
- 리드미 꾸미기
- Visual Studio Code 파이썬
- spring-boot-starter-parent
- 알고리즘 입력받는 값
- 깃허브 리드미
- pip업그레이드
- Sanner와 BufferedReader의 차이점
- hashcode
- Redis
- 윈도우10에 파이썬 설치
- setting.xml
- 프라이탁 파이썬
- GitHub profile
- 파이썬 설치
- Today
- Total
목록Study/Java (15)
yeo72.devlog
querydsl 을 프로젝트에 적용하려고 이전 프로젝트 설정을 참조하여 셋팅buildscript { dependencies { classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10") } ext { querydslVersion = "5.0.0" querydslDir = "$buildDir/generated/querydsl" }}plugins { ... id "com.ewerk.gradle.plugins.querydsl" version '1.0.10' ...}querydsl { library = "com.querydsl:querydsl-apt" jpa ..
발단enum class 로 request요청 시 enum의 code로 매핑하고 싶으나, code 가 아닌 name으로 매핑됨→ 따라서 400 에러 발생기존 코드 @GetMapping("/year-carbon") public ApiResponse getYearsCarbon(@ModelAttribute DashboardRequest request) { //type 에 따라 서비스 구분 if (request.getType().equals(FeatureType.road)) { }else { buildingService.getYearsBuildingCarbon(request.getScenario(), request.getDong()); }..
Array(배열)와 ArrayList는 프로그래밍에서 자주 사용되는 데이터 구조로, 각각 고유한 특성을 가지고 있습니다. Array(배열) 배열은 고정된 크기를 가지며, 한 번 생성되면 그 크기를 변경할 수 없습니다. 예를 들어, 5개의 요소를 저장할 수 있는 배열을 생성하면, 그 배열은 항상 5개의 요소만 저장할 수 있습니다. 배열에 더 많은 요소를 추가하려고 하면, 배열의 크기가 고정되어 있기 때문에 오류가 발생합니다. ArrayList Java에서 ArrayList는 배열을 기반으로 하지만, 그 크기가 동적으로 변할 수 있습니다. 즉, ArrayList에 요소를 추가하거나 제거하면, 내부적으로 배열의 크기가 자동으로 조절됩니다. 이는 프로그래머가 배열의 크기 관리에 신경 쓸 필요 없이 요소를 추가하..
String은 불변 객체이기 때문에 문자열 연산이 필요할 경우 StringBuilder와 StringBuffer를 사용한다는 것을 이전에 포스팅을 통해 알 수 있었습니다. https://yoozzang.tistory.com/entry/%EB%B0%98%EB%B3%B5%EB%AC%B8loop-%EC%95%88%EC%97%90%EC%84%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1%EA%B3%BC-%EC%84%B1%EB%8A%A5-%EB%B9%84%EA%B5%90 반복문(loop) 안에서 객체 생성과 성능 비교 프로그램 성능 최적화를 고려할 때, 객체의 생성과 메모리 관리는 핵심적인 주제입니다. 특히 반복 작업에서 빈번한 객체 생성은 메모리 할당과 관리에 부담을 주며, 가비지 컬..
반복문 안에서 컬렉션의 요소를 변경하는 것은 좋지 않다고 한다. 프로젝트 중에 컬렉션의 요소를 삭제하려고 하다가 원하는 결과가 나오지 않아서 코드를 수정했는데, 어떤 일인지 한번 확인을 해봐야 겠다는 생각이 들었다. ArrayList를 통해서 반복문 안에서 요소를 삭제할 경우 어떤 문제가 있는지 알아보도록 하자. 우선 발생한 문제를 두가지로 구분하자면 아래와 같다. 인덱스를 기반으로 삭제할 경우 발생하는 문제 ArrayList list = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); for (int i = 0; i < list.size(); i++) { list.remove(i); // 현재 인덱스의 요소를 삭제 } System.out.println(list); 반복문..

두 객체를 비교할 때 두 객체가 동일한지 아니면 동등한지에 대해서 비교 할 수있습니다. 그렇다면 동일성과 동등성이 무엇일까요? 두개의 이름이 같아서 헷갈리기 쉬운 개념이니 꼭 한번 정리하길 바랍니다. 동등성 두 객체가 동등하다는 것은 내용적으로 두 객체가 일치한다는 것을 의미합니다. 동일성 두 객체가 동일하다는 것은 객체의 메모리 주소가 동일하다는 것을 의미합니다. 자바에서 객체의 인스턴스를 생성할 경우 heap영역에 동적으로 메모리가 할당됩니다. 일반적으로 우리가 == 연산자로 객체를 비교할 경우에는 객체의 메모리 주소값을 비교하게 됩니다 따라서 객체의 값이 같아도 false가 나오게 됩니다. 그렇다면 euqals() 메서드는 어떨까요? 아래의 코드를 보고 확인해보겠습니다. String testEqua..
메서드 디스패치 메서드 호출 시 실제로 실행될 메서드를 결정하는 과정을 메서드 디스패치라고 합니다. 자바에서는 정적 디스패치(Static Dispatch)와 동적 디스패치(Dynamic Dispatch)의 두 가지 방법으로 메서드 디스패치를 구현할 수 있습니다. 메서드 디스패치가 왜 필요한가? 메서드 디스패치는 다형성을 구현하기 위한 기능으로, 여러 클래스가 동일한 메서드 이름을 가지고 있지만 객체의 실제 타입에 따라 다르게 동작할 수 있도록 합니다. 정적 디스패치 정적 디스패치는 컴파일 시간에 어떤 메서드를 호출할지 결정됩니다. 컴파일러는 호출할 메서드를 정확하게 알고 있는 경우에 정적 디스패치를 사용합니다. 컴파일 시점에 어떤 메서드를 호출할지 결정되기 때문에 런타임에는 메서드 디스패치가 필요하지 않..
자바에서 데이터를 담는 자료구조는 크게 네가지로 구분할 수 있습니다. List : 순서가 있는 목록 Set : 순서가 중요하지 않은 목록 Queue : 선입선출 Map : key-value 형태 오늘은 순서가 있는 목록인 List 인터페이스를 구현한 ArrayList와 LinkedList를 자세히 비교해 보겠습니다. 우선 List 자료형에 ArrayList와 LinkedList는 어떤 상황에서 쓰기 좋을지 생각을 해봅시다 ArrayList는 내부가 배열로 구현되어 있고, LinkedList는 연결리스트로 구현되어 있습니다. ArrayList ArrayList를 생성하는 코드를 살펴보겠습니다. public class ArrayList extends AbstractList implements List, Ra..

프로그램 성능 최적화를 고려할 때, 객체의 생성과 메모리 관리는 핵심적인 주제입니다. 특히 반복 작업에서 빈번한 객체 생성은 메모리 할당과 관리에 부담을 주며, 가비지 컬렉션의 작동으로 프로그램의 성능을 저해할 수 있습니다. 루프 내에서 객체가 생성되면 이들은 힙(heap) 영역에 저장됩니다. 그러나 더 이상 참조되지 않는 객체는 가비지 컬렉션의 대상이 됩니다. 가비지 컬렉션은 불필요한 객체들을 자동으로 정리하는 과정입니다. 가비지 컬렉션이 발생하면 "stop the world"가 발생하게 되는데 이는 프로그램 성능 하락을 초래합니다. 따라서 어떻게 객체를 생성하고 활용하는지는 프로그램의 성능과 안정성에 직접적으로 영향을 미칩니다. 테스트를 통해 루프 안에서 빈 문자열 객체를 생성하고 사용하는것에서 어떤..
객체지향프로그래밍(OOP) 의 특징 중 상속에 대해서 알아보고, 포함관계와 어떤 차이가 있는지 비교해 보겠습니다. 상속 상속이란 부모클래스로의 멤버를 자식클래스에서 사용 할 수 있는 것을 의미합니다. 자식클래스는 부모클래스의 멤버를 포함하여 더 많은 멤버를 가질수 있어 클래스를 확장 할 수있습니다. 이렇게 상속을 받으면 얻게 되는 장점은 무엇일까요? 바로 코드의 재사용성을 높일 수 있다는 것입니다. Tv라는 클래스와 SmartTv라는 클래스가 있습니다. class Tv { int channel; int volumn; void on() { System.out.println("Tv를 켭니다"); } void off() { System.out.println("Tv를 끕니다"); } } class SmartTv..