java 43

Java lombok 라이브러리

Q.Java 라이브러리의 lombok은 뭐하는 기능이야? Lombok은 자바에서 반복적인 코드를 줄이기 위해 사용되는 라이브러리입니다. 주로 보일러플레이트 코드(반복적으로 작성해야 하는 코드)를 자동으로 생성해 주기 때문에, 코드의 가독성을 높이고 개발 시간을 단축하는 데 도움을 줍니다. Lombok의 주요 기능은 다음과 같습니다:Getter/Setter 자동 생성: 클래스 필드에 대해 @Getter와 @Setter 애노테이션을 사용하면, 해당 필드에 대한 getter와 setter 메서드가 자동으로 생성됩니다. java@Getter @Setter private String name; toString, equals, hashCode 메서드 자동 생성: @ToString, @EqualsAndHashCode..

강한 의존성과 약한 의존성

Q1.프로그래밍에서 의존성이 강하다와 약하다는 어떤 차이를 말하는거야? 예시를 들어가면서 설명해줄 수 있을까? 프로그래밍에서 의존성이 강하다(strong coupling)와 약하다(loose coupling)의 차이는 모듈 간의 상호 의존도에 관한 개념입니다. 즉, 하나의 모듈이 다른 모듈에 얼마나 깊이 의존하는지를 나타냅니다. 이 개념은 소프트웨어 설계에서 매우 중요한데, 의존성이 강할수록 시스템이 변경에 취약해지고 유지보수가 어려워질 수 있습니다. 반면에, 의존성이 약하면 시스템을 확장하거나 변경할 때 더 유연하게 대응할 수 있습니다.1. 의존성이 강한 경우 (Strong Coupling)의존성이 강할 때는 한 모듈이 다른 모듈의 내부 구현에 강하게 의존하고 있어서, 한 모듈이 변경되면 의존하는 다른..

Base 2024.09.29

Stream 3

Ex03_파일저장, Ex04_파일읽기, Ex05_Helper테스트, Ex06_Helper테스트2 파일들을 통해서 설명받고 싶은게, stream 이란 개념이 뭐야?스트림(Stream)은 데이터의 흐름을 의미하며, 데이터를 읽고 쓰는 데 사용되는 추상화된 개념입니다. 스트림은 연속적인 데이터의 흐름을 처리하는 데 사용되며, 파일, 네트워크 소켓, 메모리 등 다양한 데이터 소스와 목적지에서 데이터를 읽고 쓸 수 있습니다. Java에서 스트림은 크게 두 가지 유형으로 나뉩니다: 바이트 스트림 (Byte Stream): 바이트 단위로 데이터를 처리합니다. 주로 파일 I/O와 같은 바이너리 데이터를 처리할 때 사용됩니다. 문자 스트림 (Character Stream): 문자 단위로 데이터를 처리합니다. 주로 텍스트..

Stream, Java의 byte 타입 데이터와 1Byte

Q1.수업중에, 저장할 내용을 스트림으로 바꾼 배열 이라는 말이 있었는데, 여기서 스트림이 뭐길래 저장할 내용을 바꿨다고 하는건지 설명해줘(참조한 내용 -> 28단원 실습 1~4번 코드)스트림(Stream)은 데이터를 순차적으로 읽거나 쓰는 데 사용되는 추상화된 개념입니다. 스트림은 데이터를 바이트 단위로 처리하며, 파일, 네트워크 소켓, 메모리 등 다양한 입력 및 출력 소스와 목적지에 대해 동일한 방식으로 데이터를 처리할 수 있게 해줍니다. 스트림의 종류 입력 스트림(InputStream): 데이터를 읽어들이는 스트림입니다. 예를 들어, 파일에서 데이터를 읽어오는 FileInputStream이 있습니다. 출력 스트림(OutputStream): 데이터를 쓰는 스트림입니다. 예를 들어, 파일에 데이터를 쓰..

JSON 구조와 Java 클래스 구조

(29단원의 data05 클래스와 05.json 참고)Q.{    "rss": {        "item": [            {                "title": "파일 형식의 데이터",                "description": "가장 기초적인 문자열 형식",                "pubDate": "2014-12-25"            }, {                "title": "JSON 형식의 데이터",                "description": "데이터를 key와 value로 구조화한 형식",                "pubDate": "2014-12-31"            }        ]    }}Json의 바깥부터 안으로 들어..

Maven을 이용한 Java 프로젝트 경로상의 대문자 사용

Q.maven을 이용해서 java 프로젝트를 만들 때, 경로상에 대문자를 쓸 수 있어?Maven을 이용해서 Java 프로젝트를 만들 때, 경로상에 대문자를 사용할 수 있습니다. 그러나 Maven의 표준 디렉토리 구조와 관례를 따르는 것이 좋습니다. Maven 프로젝트의 표준 디렉토리 구조는 다음과 같습니다:my-project|-- pom.xml`-- src    `-- main        `-- java            `-- com                `-- example                    `-- App.java    `-- test        `-- java            `-- com                `-- example                  ..

Java에서 Wrapper Class를 쓰는 이유

Java에서, Wrapper class를 쓰는 이유가 뭐야? ChatGPT의 말: Java에서 Wrapper class를 사용하는 이유는 원시 타입(primitive type) 데이터를 객체로 다룰 수 있도록 하기 위함입니다. Java는 두 가지 종류의 데이터 타입을 제공합니다: 원시 타입(primitive types)과 참조 타입(reference types). 원시 타입은 int, char, boolean, float 등과 같은 기본 데이터 타입을 의미하고, 참조 타입은 객체를 의미합니다. 아래에서 Wrapper class를 사용하는 몇 가지 주요 이유를 설명할게요.1. 컬렉션 프레임워크 사용Java의 컬렉션 프레임워크(List, Set, Map 등)에서는 객체만 저장할 수 있습니다. 따라서, int..

Java에서 HOUR 과 HOUR_OF_DAY의 차이

Q1.(소스코드는 kr.SteveK.helpers.DatePrinter; 파일과 실습 27-03 날짜 연산)여기서,  cal.add(Calendar.HOUR_OF_DAY, 9); 부분에서 HOUR_OF_DAY를 HOUR로 해도 차이가 없는건가? 네, cal.add() 메서드를 사용할 때 Calendar.HOUR_OF_DAY 대신 Calendar.HOUR를 사용해도 결과에는 큰 차이가 없습니다. 두 필드는 모두 시간 구성 요소를 나타내며, 시간을 추가할 때 Calendar 클래스가 날짜와 시간을 적절히 조정하여 처리합니다.이유는 다음과 같습니다:Calendar.HOUR_OF_DAY (0-23): 24시간 형식의 시간을 나타냅니다.Calendar.HOUR (0-11): 12시간 형식의 시간을 나타내며, Ca..

super()있어야 하나? 2

Q1.public class 싱글톤패턴 { private static 싱글톤패턴 current; public static 싱글톤패턴 getInstace(){ if(current == null){ current = new 싱글톤패턴(); } return current; } private 싱글톤패턴(){ super(); } /** 이하 이 클래스의 객체가 포함해야 할 일반 메서드들 */ } (Java 21단원 싱글톤패턴)이게 자바에서 싱글톤 패턴을 만드는 서식이라고 하는데, 여기에 왜 생성자에 굳이 super();를 넣어주는거야?자바에서 super();는 부모 클래스의 생성자를 명시적으로 호출하는 역할을 합니다. 그러나 기본적으로 자바에서 생성자는 명시적으로 super();를 호출하지 않더라도, 자동으로 부..

컴파일 언어의 배열 사이즈

Q1.컴파일언어는 배열 사이즈 정해지면 바꿀 수 없는거야?   네, 대부분의 컴파일 언어에서는 배열의 크기를 고정적으로 설정하면 그 크기는 변경할 수 없습니다. 예를 들어, C나 C++ 같은 언어에서 배열은 고정 크기를 가지며, 한 번 선언된 크기는 실행 중에 바꿀 수 없습니다. 예를 들어:cint arr[5];  // 크기가 5인 정적 배열 선언 이 배열의 크기를 실행 중에 변경하는 것은 불가능합니다. 배열의 크기를 동적으로 변경하려면 동적 할당을 해야 하는데, 이는 malloc, calloc, 또는 realloc과 같은 함수를 사용하는 방식입니다.예시: 동적 할당C에서 배열의 크기를 동적으로 할당하고, 필요에 따라 크기를 조정할 수 있는 방법은 다음과 같습니다.c #include  #include  ..

Base 2024.09.24