경주란 빨리 달리는 사람들의 것이 아니라
       계속 뛰어가는 사람들의 것이다.
LinkTree🌲

Development/Java 16

[Java] Hashcode

면접 질문에서, Hashcode의 대한 질문을 받았다.👨🏻‍🏫 HashCode는 무엇이고, 어떤 기능을 하나요? HashCode란객체를 식별하는 하나의 정수값을 말한다. Object의 HashCode() 메소드는 객체의 메모리 번지를 이용해서 해시코드를 만들어서 리턴하기 때문에 객체마다 다른 값을 가지고 있다. 또한, 동등성 비교 시 컬렉션 프레임워크 중 HashSet, HashMap, HashTable 들은 hashCode를 통해서 동등한지 비교한다. 👨🏻‍🏫 그렇다면, 동등성 비교할 때, Equals로도 충분히 가능하지 않을까요?그렇다, equals의 기능으로도 동등성 비교는 충분히 가능하다. HashCode는 같은 객체 인지 판별하는 기능만 있는게 아니다. hashCode()를 ..

Development/Java 2025.04.16

[Library] 오렐리 COS 라이브러리 이미지 다중 업로드

문제저장은 모두 저장되지만, 한 개 파일만 순차적으로 읽을 수 있음.파일이름을 while (files.hasMoreElements()) {}  을 통해서 모두 읽을 수 없음 .파일이름을 통해 DB에 파일이름을 저장해야 했기 때문에 모든 파일의 정보가 필요했다.   소개서블릿에서 이미지 업로드를 검색하면 가장 많이 나오는 라이브러리 중 하나가 오렐리의 COS 라이브러리이다.  엄청 오래되어 보이는 냄새..  이미지 업로드 구현을 위해서 다중 업로드 기능을 만들던 중 위에 처럼 다중 선택이 가능하도록 만들려고 코드에 multiple을 추가했다. 이렇게 추가하면 file에 대한 값이 여러개 입력할 수 있도록 값이 전달된다. -----------------------------123456789012345678..

Development/Java 2024.05.04

[Java, 환경] Mac JavaFx 설치법

안녕하세요, 오늘은 JavaFX 설치법을 알아볼게요! 맥(mac) 환경에서 JavaFX는 흔치 않은 라이브러리 입니다. 그래서 여러가지 IDE에 대한 설명이 부족합니다. 주로 JavaFX는 Eclipse IDE를 통해서 설치하곤 하는데 저는 Spring boot를 inteliJ 로 구동하고 Eclipse 오류가 자주 발생하여 저는 inteliJ IDE를 통해서 JavaFX 실행 환경을 만들어 보도록 하겠습니다! 기본적으로 Java는 다운로드 했다고 생각하고 진행하겠습니다. JavaSDK 설치는 인터넷 검색 하셔서 쉽게 설치 가능합니다! InteliJ 설치 먼저, inteliJ IDE를 설치해줍니다. https://www.jetbrains.com/idea/ IntelliJ IDEA: The Capable ..

Development/Java 2022.09.21

[Java, 개념] 이너 클래스와 이너 인터페이스

안녕하세요, 오늘은 이너 클래스와 이너 인터페이스에 대해서 알아보겠습니다. 이너 클래스 (inner class)는 단어 그대로 클래스 내부에 포함되는 이너 클래스입니다. 👉🏻이너 클래스 클래스 내부에 포함되는 이너 클래스 👉🏻종류 멤버 이너 클래스 지역 이너 클래스 인스턴스 맴버 이너 클래스 클래스에 멤버의 형태로 존재하는 클래스 클래스 맴버의 역할을 그대로 수행하기 때문에 겉 클래스 (아우터 클래스)의 모든 접근 지정자의 맴버 접근 가능 인스턴스 이너 클래스 객체 생성 class A{ //아우터 클래스 class B{ //이너 클래스 } } A a = new A(); A.B b = a.new B(); 위에서 클래스 맴버의 역할을 그대로 해서 아우터 클래스의 모든 멤버에 접근 가능하다고 했습니다. 그렇다..

Development/Java 2022.07.26

[Java, 개념] 추상 클래스와 인터페이스

추상 클래스와 인터페이스에 대해서 알아보겠습니다. 추상 클래스는 말 그대로 추상적인 클래스입니다. 완성하지 않고 개념적으로 존재하는 클래스를 말합니다. 인터페이스는 틀을 말합니다. 추상 클래스의 일부이며 형식을 어느 정도 일치시키도록 고안된 요소입니다. 추상 클래스 가끔씩 보고서를 작성할 때 목차부터 작성하곤 합니다. 1. 인사 2. 글의 목적 3. 글의 결과 4. 마무리 목차를 작성한 후 해당 부분을 채워서 보고서를 마무리합니다. 추상 클래스도 이와 비슷합니다. 미리 목차를 만들어 놓고 그다음 상속을 받아서 완성하여 사용합니다. 추상 클래스는 추상 메서드를 1개 이상 포함하고 있습니다. 즉, 추상 메서드가 1개 있는 클래스는 무조건 abstract를 붙여야 하고 이를 추상 클래스라고 부릅니다. abst..

Development/Java 2022.07.24

[Java, 개념] 부모 생성자가 먼저 생성되는 이유

자식 클래스에서 생성자를 호출하면 부모 생성자를 먼저 호출하는 이유는 무엇일까? 분명 자식클래스를 만들면 자식 클래스의 생성자가 먼저 호출되어야하는 것이 아닌가? 이는 Super() 메서드 때문이다. Super()는 부모의 생성자를 호출해주는 메서드가 된다. 자동적으로 자식 클래스에 생성자에서는 첫줄에 this(), super()가 선언되어 있지 않으면 자동적으로 Super()를 첫 줄에 추가한다. 그래서 부모 생성자가 먼저 호출되는 것이다.

Development/Java 2022.07.22

[Java, 개념] 객체의 다운캐스팅

지난번에 업 캐스팅과 다운 캐스팅에 대해서 공부해봤다. 쉽게 말하면 업캐스팅은 큰쪽의 맞추는 것이고 다운 캐스팅은 작은 쪽에 맞추는 것이다. 업캐스팅은 문제(오류가 발생)가 되지 않는다. 왜냐하면 비유적으로 물고기가 어떤 어항이든 크기만 하면 모두 잘 들어가기 때문이다. 문제는 물고기보다 작은 어항일 때 즉 Downcasting 에서 오류가 발생할 수 있다. 메모리 구조로 확인해보자 타입 다운캐스팅 만약 상황이 A -> B -> C 로 상속을 받는다고 가정하자 C의 부모는 B이고 B의 부모는 A이다. 가정 1 A a = new B(); 에서 앞 A는 참조하는 객체를 가르키는 것을 의미한다. 따라서 a가 가르키는 것은 A class를 가르킨다. 따라서 이 문장은 가능하다. 가정 2 A a = new B()..

Development/Java 2022.07.22

[Java, 개념] this() 메서드

자바에는 This의 개념이 있다. 동일한 이름의 호출 충돌을 막기 위해서 This가 있으며 this는 자신의 객체를 의마하고 This()는 클래스 내 자신의 생성자를 의미한다. 즉 this 는 인스턴스 맴버의 필드나 메서드를 의미한다. This 와 This()에는 다른 메서드이다. 여기서는 This() 메서드에 대해서 설명하겠다. This() 메서드 This() 메서드는 클래스 내 해당 생성자를 호출하는 메서드이다. 클래스에는 오버로딩을 통해서 여러가지 생성자가 존재하는데 모두 이름은 동일하다 어떤 생성자를 불러올 것이며, 어떻게 불러올 것인가 이를 해결하기 위해서 This() 메서드가 필요할 것이다. class A{ A(){ System.out.println("첫번째 생성자"); } A(int a){ ..

Development/Java 2022.07.21

[Java, 개념] 가변 길이 배열 입력 매개변수

가변 길이 배열 입력 매개변수 가변 길이 배열 입력 매개변수란 우리가 매개변수를 여러개를 입력 받고 싶을 때가 있다. 그렇다면 매개변수 안에 모두 적어야할까? public static void print(int a, int b ,int c, int d ,,,,) 그렇다면 매우 비효율적이고 더욱 간단하게 해결할 수 있는 방법이 있다. public static void print(int... a) 자료형뒤에 '...' 을 붙이면 매개변수를 전달할 때 여러개를 전달해도 상관 없다. print(1,2,3); print(1); print(1,2,3,4,5); //모두 가능! 이 여러개의 값들은 배열 형태로 저장되어 사용할 수 있다.

Development/Java 2022.07.21

[Java, 개념] 자료형, 반복문, String class 자잘한 정보

기본 자료형과 참조 자료형의 초기값은 다르다. 참조 자료형은 변수를 초기화 하지 않을 경우 자동으로 Null의 값으로 초기화하며 기본 자료형은 0의 초기값을 가지며 만약 변수를 초기화 하지 않을 경우 자동으로 초기화 하지 않아서 오류가 발생한다. For each문 배열 같은 순서적으로 정리 되어 있는 값 (이터러블)을 For each 문을 통해서 간단하게 표현할 수 있습니다. Int a = new int[100]; a[0]= 1 , a[1] = 2, .... a[99] = 100; for(int k:a) { System.out.println(k); } String Class 특징 String class의 특징은 2가지가 있는 데 첫번째로 파이썬처럼 문자열값은 변경할 수 없다는 특징을 가지고 있습니다. 값..

Development/Java 2022.07.21