더보기 2023.04.24 - [프로그래밍/JAVA 프로그래밍] - HTTP 요청과 응답에 대해 알아보기: REST API 개념 이해하기 (1/3) 2023.04.25 - [프로그래밍/JAVA 프로그래밍] - HTTP 요청과 응답에 대해 알아보기: REST API 개념 이해하기 (2/3) 이전 글에서는 REST API의 개념과 구성 요소를 살펴보았습니다. 이번 글에서는 RESTful API 디자인에 대한 가이드를 제공하겠습니다. RESTful API 디자인은 특정한 규칙에 따라야 하며, 이를 따르면 클라이언트-서버 간의 통신이 효율적이고 일관성 있게 이루어집니다. RESTful API 디자인 가이드 URI 설계 URI는 RESTful API에서 가장 중요한 구성 요소 중 하나입니다. URI는 리소스의 경..
더보기 2023.04.24 - [프로그래밍/JAVA 프로그래밍] - HTTP 요청과 응답에 대해 알아보기: REST API 개념 이해하기 (1/3) 이전 글에서는 HTTP 요청과 응답에 대한 기본 개념을 다뤘습니다. 이번 글에서는 REST API에 대한 개념을 다루고, REST API의 구성 요소와 예시 소스코드를 살펴보겠습니다. REST API란? REST(API)는 Representational State Transfer (Application Programming Interface)의 약자입니다. REST는 웹 기술의 발전과 함께 등장한 아키텍처 스타일로, 분산 시스템에서 자원을 정의하고 관리하는 방법을 제공합니다. REST API는 HTTP 프로토콜을 기반으로 동작하며, URI와 HTTP 메서드를..
HTTP 요청 HTTP 요청은 클라이언트에서 서버로 데이터를 보내는 과정입니다. HTTP 요청은 메서드, URI, HTTP 버전, 헤더, 본문으로 구성됩니다. 여기서 메서드는 HTTP 요청의 목적을 지정하며, 가장 자주 사용되는 메서드는 GET과 POST입니다. HTTP 메서드 HTTP 요청의 메서드는 클라이언트가 서버에게 원하는 동작을 지정합니다. 가장 자주 사용되는 메서드는 다음과 같습니다. GET: 서버에서 자원을 가져오기 위해 사용됩니다. GET 요청은 URI에 지정된 자원의 표현을 요청합니다. POST: 서버에 데이터를 전송하기 위해 사용됩니다. POST 요청은 요청 본문에 데이터를 포함합니다. PUT: 서버에 자원을 생성 또는 수정하기 위해 사용됩니다. PUT 요청은 URI에 지정된 자원을 요..
더보기 2023.04.19 - [프로그래밍/JAVA 프로그래밍] - 객체지향 프로그래밍의 기본 개념 이해하기 1편 - 객체지향 프로그래밍의 개념과 특징 2023.04.20 - [프로그래밍/JAVA 프로그래밍] - 객체지향 프로그래밍의 기본 개념 이해하기 2편 - 상속과 다형성의 개념 인터페이스와 추상 클래스 인터페이스(Interface)와 추상 클래스(Abstract Class)는 객체지향 프로그래밍에서 추상화를 구현하는 방법 중 하나입니다. 추상화란 객체의 공통적인 속성과 동작을 추출하여 클래스로 정의하는 것을 말합니다. 인터페이스 인터페이스는 일종의 계약서(contract)로, 클래스가 구현해야 할 메서드와 상수만을 정의한 것입니다. 인터페이스는 구현할 메서드의 선언만을 하고 구현부는 작성하지 않습니..
더보기 2023.04.19 - [프로그래밍/JAVA 프로그래밍] - 객체지향 프로그래밍의 기본 개념 이해하기 1편 - 객체지향 프로그래밍의 개념과 특징 안녕하세요, 이번에는 객체지향 프로그래밍의 상속과 다형성 개념에 대해 알아보겠습니다. 상속 상속(Inheritance)은 객체지향 프로그래밍에서 기존 클래스를 기반으로 새로운 클래스를 만드는 개념입니다. 상속을 통해 새로운 클래스는 기존 클래스의 속성과 메서드를 물려받아 사용할 수 있습니다. 이러한 상속을 통해 기존 클래스의 코드를 재사용하고, 중복 코드를 줄일 수 있습니다. 예시를 통해 상속 개념을 살펴보겠습니다. public class Animal { private String name; private int age; public Animal(Stri..
안녕하세요, 이번에는 객체지향 프로그래밍의 개념과 특징에 대해 알아보겠습니다. 객체지향 프로그래밍이란? 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나입니다. 객체지향 프로그래밍에서는 모든 것을 객체(Object)로 취급합니다. 객체는 데이터와 해당 데이터를 처리하는 기능을 가진 프로그램의 단위입니다. 이러한 객체를 이용하여 프로그래밍을 하는 것이 객체지향 프로그래밍입니다. 객체지향 프로그래밍의 특징 1. 캡슐화(Encapsulation) 객체지향 프로그래밍에서는 데이터와 해당 데이터를 처리하는 기능을 하나로 묶어 캡슐화합니다. 캡슐화된 객체는 내부 구현을 숨기고, 외부에서는 객체의 인터페이스만을 통해 객체에 접근할 수 있습니다. 이..
더보기 2023.04.16 - [프로그래밍/JAVA 프로그래밍] - 자바의 컬렉션 프레임워크(Collection Framework) 살펴보기 1편 - 컬렉션 프레임워크 소개 및 List 인터페이스 2023.04.17 - [프로그래밍/JAVA 프로그래밍] - 자바의 컬렉션 프레임워크(Collection Framework) 살펴보기 2편 - Set 인터페이스와 Map 인터페이스 안녕하세요, 이번에는 자바의 컬렉션 프레임워크에서 공통적으로 제공되는 메서드와 자료구조 선택 기준에 대해 알아보도록 하겠습니다. 컬렉션 프레임워크의 공통 메서드 컬렉션 프레임워크의 모든 인터페이스는 공통적으로 다음과 같은 메서드를 제공합니다. add(E e) : 지정된 요소를 컬렉션에 추가합니다. remove(Object o) : 지..
더보기 2023.04.16 - [프로그래밍/JAVA 프로그래밍] - 자바의 컬렉션 프레임워크(Collection Framework) 살펴보기 1편 - 컬렉션 프레임워크 소개 및 List 인터페이스 안녕하세요, 이번에는 자바의 컬렉션 프레임워크 중 Set 인터페이스와 Map 인터페이스에 대해 자세히 알아보도록 하겠습니다. Set 인터페이스 Set 인터페이스는 중복되지 않는 데이터를 다루기 위한 인터페이스입니다. Set은 순서가 없는 데이터의 모음을 다루며, 중복된 데이터를 저장하지 않습니다. Set 인터페이스를 구현하는 대표적인 클래스로는 HashSet, TreeSet 등이 있습니다. HashSet 클래스 HashSet 클래스는 내부적으로 해시 테이블을 사용하여 데이터를 관리하는 Set 인터페이스의 구현 ..
컬렉션 프레임워크 소개 컬렉션 프레임워크(Collection Framework)는 자바에서 자료구조를 구현하고 관리하기 위한 클래스 라이브러리입니다. 이를 사용하면 다양한 자료구조를 쉽게 구현하고 관리할 수 있습니다. 컬렉션 프레임워크는 다음과 같은 특징을 가집니다. 다양한 자료구조 제공: List, Set, Map 등 다양한 자료구조를 제공합니다. 인터페이스와 구현 클래스 분리: 인터페이스와 구현 클래스를 분리함으로써, 자료구조를 사용하는 프로그래머는 구현 내용을 알 필요가 없습니다. 공통 메서드 제공: 모든 컬렉션 클래스에서 공통으로 사용되는 메서드를 제공합니다. 컬렉션 프레임워크는 java.util 패키지에 속해 있으며, 다양한 인터페이스와 클래스로 구성되어 있습니다. List 인터페이스 List ..
스택(Stack) 스택(Stack)이란? 스택(Stack)은 데이터를 넣고 빼는데 있어서 Last-In, First-Out (LIFO) 방식을 따르는 자료구조입니다. 즉, 가장 마지막에 넣은 데이터가 가장 먼저 빠져나가는 것을 말합니다. 스택은 컴퓨터 과학에서 매우 중요한 자료구조 중 하나이며, 다른 자료구조들과의 연계를 통해 다양한 문제를 효과적으로 해결할 수 있습니다. 스택(Stack)의 구현 스택은 배열(Array)을 통해 구현될 수 있습니다. 스택에 데이터를 삽입하는 연산을 push라 하며, 데이터를 삭제하는 연산을 pop이라고 합니다. 또한, 스택의 가장 상단에 위치한 데이터를 top이라고 합니다. public class Stack { private int[] stack; private int ..
앞선 글에서는 Java에서 정규식을 사용하는 방법과 간단한 예시를 살펴보았습니다. 이번 글에서는 Java에서 정규식을 사용하여 입력값의 유효성을 검사하는 방법에 대해 알아보겠습니다. 입력값의 유효성을 검사하기 위해서는 검사할 대상의 형식에 따라 적절한 정규식을 작성해야 합니다. 이메일 주소나 전화번호와 같은 형식이 정해져 있는 경우, 해당 형식에 맞는 정규식을 작성하여 검사할 수 있습니다. 또한, 입력값이 숫자인지, 알파벳인지, 혹은 특수문자인지 등을 검사하는데에도 정규식을 사용할 수 있습니다. 다음은 전화번호 유효성 검사를 위한 정규식 예시입니다. public static boolean isValidEmail(String email) { String regex = "^[A-Za-z0-9+_.-]+@[A..
지난번에는 Java에서 정규식을 사용하는 기본적인 방법을 알아보았습니다. 이번에는 좀 더 복잡한 정규식 패턴과 그것을 활용하는 방법에 대해 알아보겠습니다. 복잡한 패턴 작성하기 복잡한 패턴을 작성할 때는, 여러 패턴을 조합하거나, 반복되는 부분을 간결하게 나타내는 등의 방법을 사용할 수 있습니다. 다음은 이메일 주소를 검증하는 더 복잡한 예시 코드입니다. import java.util.regex.Matcher; import java.util.regex.Pattern; public class EmailValidator2 { private static final String EMAIL_REGEX = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" +"((([0-1..
소개 Java는 문자열에서 특정한 패턴을 찾거나 검증하거나 가공하는 데 사용되는 정규식(regular expression)을 지원합니다. 정규식은 문자열을 다룰 때 매우 유용한 도구이며, Java에서도 많이 사용됩니다. 이번 글에서는 Java에서 정규식을 사용하는 기초적인 방법에 대해 알아보겠습니다. 정규식 패턴 정규식 패턴은 검색하려는 문자열 패턴을 정의하는 표현식입니다. Java에서는 java.util.regex 패키지를 이용하여 정규식을 사용할 수 있습니다. 정규식 패턴을 만드는 방법은 다음과 같습니다. import java.util.regex.Pattern; // 정규식 패턴 만들기 String regexPattern = "정규식 패턴"; Pattern pattern = Pattern.compil..
Java에선 JSON 관련해서 파싱이나, 받을일이 많아진다. 예를들자면 [{"테스트" , "테스트"}, {"22", "22"}] 이런식의 스트링이지만, JSON 배열으로 나오는 경우가 종종있다. 그럼 해당 메서드를 어떻게 빠르게 처리할 수 있을지 고민해봤는데, 우선 import는 다음과 같이 했다. import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; 세가지에 대해서 정리해보았다. JSONArray -> 이 타입은 JSON형의 문자를 배열형식으로 (Array 형태) 되어있을때 사용 가능한 클래스다. JSONObject같은 경우엔 {"key" , "value"}의..
LinkedList 클래스는 ArrayList와 다른 점이 있다. ArrayList는 데이터들이 순서대로 쭉 늘어선 배열의 형식을 가지고 있지만, LinkedList의 경우 순서대로 늘어선 게 아니라 자료의 주소 값으로 서로 연결되는 구조를 하고 있다고 볼 수 있다.(C의 포인터 개념) LinkedList의 장점은 몇 개의 참조자만 바꿈으로 새로운 자료의 삽입이나 기존 자료를 위치에 관계없이 빠르게 수행할 수 있다는 장점이 있다. ArrayList 및 List 관련해서는 아래 글을 참조하면 된다. 2023.02.05 - [프로그래밍/JAVA 프로그래밍] - Java - List 클래스 add add 메서드는 ArrayList와 같이 뒤에 붙여주는 거로 사용된다. 실제로는 위 사진과 같이 마지막 노드 뒤에..
Java 기능 중에 원하는 시간대로 출력하기 위해서 사용하는 클래스가 있다. SimpleDateFormat 실제로 원하는 날짜 규격을 맞추기 위해 사용되곤 한다. 예를 들자면 2022/06/23를 2022-06-23로 바꾸고 싶다던지.. 등등 여러 군데에서 사용된다. SimpleDateFormat에는 지정된 규격의 패턴이 존재하는데 다음과 같이 사용된다. 패턴 뜻 출력값 G 연대 (BC, AD) AD y 연도 2022 M 월(1~12) 6 w 해당 연도의 몇번째 주인가?(1~53) 26 W 해당 월의 몇번째 주 4 D 해당 연도의 몇번째 일 174 d 해당 월의 몇번째 일 23 F 해당 월의 몇번째 요일 4 E 요일 목 a 오전/오후 PM H 시간(24시) 13 h 시간(12시) 1 K 시간(0~11) ..
주로 Java를 공부할 때 String 객체를 많이 사용하게 된다. 하지만, String객체는 설계부터가 불변 객체로 설계되었기 때문에 한번 생성이 되면 내용을 바꿀 수 없는 단점이 있다. (물론 자바에서는 바꾸게 해 주지만,) 예를 들어서 String test = "test"; 라는 코딩을 했다고 가정하자, test라는 문자열 인스턴스를 메모리에 생성하게 된다. test라는 레퍼런스는 "test"라는 값을 가지고 있고, 단지 test는 "test"라는 문자열을 가리키는 레퍼런스가 된다. (C 포인터 개념으로 생각하면 됨.) 하지만, 우리는 코딩할 때 다음과 같이 문자열을 늘리거나 추가를 한다. test += "테스트"; 그럼 출력 결과는 원하는 대로 나오는가? 정답은 yes다 출력 결과를 본다면 다음과..
가끔은 @RequestBody 자체에 날라오는 Json값을 수동으로 받기 위해서, 또는 여러 JSON데이터를 받고 DTO에 직접 넣지않고 내가 제어하기 위해서 사용하고 싶을때가 있다. Controller에서 위와 같은 상황을 제어 할 수 있는 방법이 있다. Controller @RequiredArgsConstructor @RestController public class ApiController{ private final ApiService apiService; @PostMapping (value ="경로", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public..
리스트란? 배열과 비슷하지만, 배열의 한계를 극복하기 위해 만들어진 기능. 배열은 사용하기 위해서 초기에 크기를 입력해야 한다. 예를 들자면, 배열의 크기를 10으로 정했다면, 10개 이상의 값을 담기엔 무리가 있다. 하지만, 리스트의 경우 크기가 정해져 있지 않아서 원하는 만큼의 값을 담을 수 있다. List의 탄생은 프로그래밍 시 항상 크기를 알 수 없는 것인데, 그래서 List 가 생겼다고 볼 수 있다. List 같은 경우, 메모리가 허용하는 한 무제한으로 추가할 수 있다. List의 경우 다음과 같이 사용 가능하다. List & ArrayList /* * @author coderBasic */ public class listTest { public static void main(String[] a..
Java에서는 for문과 다르게 for each구문을 사용할 수 있는 방법이 있다. for each문은 자바에서 J2SE 5.0 부터 사용 가능하며, for each 키워드가 따로 있는것이 아닌, for문에서 사용이 가능하다. 조건식 부분의 문법이 조금 다르다. 기존에 다음과 같은 배열과, for문이 있다고 가정하겠다. String[] temp = {"첫번째", "두번째", "세번째"}; for(int i = 0; i < temp.length; i++) { System.out.println(temp[i]); } 위 구문을 다음과 같이 바꿀수있다. String[] temp = {"첫번째", "두번째", "세번째"}; for (String s: temp) System.out.println(s); for ea..
이번엔 자바에서 Integer 기능을 알아보겠다. 우선적으로 int와 Integer의 차이점이 있다. int int 같은경우엔 자료형이라고 표현한다. 주요 특징으로는 산술연산 가능하며 null 초기화가 불가능하다. 따라서 0으로 초기화하는 방법을 이용하고있다. ex) int temp = 0; Integer 다음으로는 Wrapper 클래스의 객체로 사용되고있는 Integer 이다. 산술연산이 불가능하지만 null 초기화가 가능하다. null 값 처리가 가능하여 나중에 SQL과 연동할 시 처리가 용이해진다. Wrapper 클래스라서 특정 기본형 타입으로 나타내는데, Integer 같은경우엔 int형을 저장할 수 있다. ex) Integer temp = new Integer(10); Integer의 값을 in..
자바 예외 처리 이유? 프로그래밍 실행 시 다양한 오류가 발생할 수 있다. 대표적으로는 파일 읽는 프로그램을 실행했지만 파일을 찾지 못하는 경우 문자열을 숫자로 변환하는 프로그램을 실행했을 때 변환할 수 없는 문자열일 경우 배열 범위를 넘어설 경우 이러한 오류는 컴파일 때 모르고 넘어갈 수 있지만, 실제 운영에서 예외 처리 없이 프로그램을 만들 시 에러코드가 사용자에게 그대로 노출되는 경우가 발생하곤 한다. 자바에선 이런 오류에 대응하기 위해서 예외처리라는 기능을 제공한다. 예외처리 만약 예외처리가 없는 경우 어떻게 되는지 보겠다. public class testException { public static void main(String[] args){ String[] temp = new String[2..