분류 전체보기

·백준
아무 생각없이 int를 사용했다가 런타임 에러가 떠서 당황했다. 문제를 잘 보면 [입력 : 첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 10¹²)이 공백을 사이에 두고 주어진다.] 에서 범위가 1 ~ 10의 12승이다. 하지만 int의 4바이트로 양의 범위는 최대 2,147,483,647(2의 31승 ) < 10의 10승 이기 때문에 런타임 에러가 뜬다. 따라서 8바이트 자료형(double,long long등)을 써줘야 런타임 에러가 발생하지 않는다. import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); long a,b,c; a ..
·CS
일단 추상클래스와 인터페이스는 추상메서드 없이는 설명이 불가능하기 때문에 추상메서드 먼저 살펴보자. 추상메서드란? 메서드는 선언부와 구현부로 나뉘는데 , 메서드들 중에서 선언부까지만 작성하고 구현부는 작성하지 않은 메소드를 추상메서드라고 한다. abstract를 메서드 앞에 붙여서 (정확히는 접근 제어자 앞이나 뒤에 붙여서) 추상메서드임을 명시한다. 추상메서드를 가진 클래스는 반드시 추상클래스여야 한다. 추상메서드는 구현부 즉 실행 코드가 없어서 추상메서드를 가진 클래스(추상클래스)는 인스턴스를 만들 수 없다. 추상클래스란? 구조적으로는 일반 클래스와 큰 차이는 없다. 똑같이 일반 필드 , 일반 메서드를 가질 수 있다. 차이점은 추상메서드를 가지고 있다는 것이다. abstract를 class 앞에 붙여서..
·CS
함수형 프로그래밍(Functional Programming)이란? 자료를 찾아보면서 이해하기 가장 좋았던 예시는 파이프라인이었다. 아래는 설명 전 이해를 돕기 위해한 자료로 , 내가 생각하는 함수형 프로그래밍의 기본 틀을 그림으로 표현한 것과 이미지이다. 개념 설명 파이프라인( 코딩에서는 함수 )은 input을 넣으면 input에 고정된 output을 내보낸다. 그림에서 보이다시피 외부에서는 파이프라인 안에 접근할 수도 볼 수도 없다. 마찬가지로 파이프라인 안에서도 외부에 접근하거나 볼 수 없다. 함수형 프로그래밍은 이런 파이프라인들( 함수들 )을 묶고 연결해서 프로그램을 만들어가는 프로그래밍 패러다임을 말한다. 함수형 프로그래밍의 특징 순수함수 = 함수에서 외부의 상태값을 참조하거나 외부의 상태를 변경..
·에러
데스크 탑에서 작업한 spring boot 프로젝트를 github에 올린뒤 노트북에서 pull해서 실행했는데 에러가 발생했다. 구글링을 해보니 chrome에서 보안상 https를 자동으로 붙여서 그런거다 , 서버 ip설정 문제다 .. 등등 많은 해결책이 있었지만 좀 생각해 보니 간단한 문제였다. 나는 mariadb에서 데스크탑과 노트북에서 사용하는 DB를 구분하려고 서로 사용하는 DB명을 다르게 했다. 근데 github올린 건 application.properties파일의 데이터베이스 설정에 데스트 탑 DB명으로 올려져 있기 때문에 생긴 문제였다. // application.properties 파일 ..... spring.datasource.url=jdbc:mariadb://localhost:3306/사..
·CS
DI 방법들을 알아보기에 앞서 먼저 @Autowired 어노테이션이 무엇인지 알아볼 필요가 있다. @Autowired는 사용된 위치의 변수 및 메서드에 필요한(의존하는) bean(스프링 빈)의 인스턴스를 IoC container에서 찾아 주입하는 역할을 한다. 쉽게 말해 스프링에서 의존관계 주입(DI)을 할 때 사용되는 어노테이션(Annotation)이다. 주의사항 : @Autowired는 의존 객체의 타입에 해당하는 bean을 찾아 주입한다. 그렇기 때문에 해당 타입의 bean이 없는 경우 작동하지 않는다. 또한 같은 이름의 bean이 여러 개일 경우도 있다.그럴 때는 @Primary 나 @ Qualifier(bean id) 등을 이용해서 해결할 수 있다. @Autowired 어노테이션은 기본적으로 생..
·CS
비교에 앞서 간단한 개념 설명 DTO : 순수하게 데이터 전달만을 위한 개체 getter/setter 메소드 말고 다른 로직은 없다. 가변성이 있지만 setter 메소드를 제거하고 대신 생성자로 필드에 데이터를 넣으면 불변성을 갖는다. ( 개인적으로 setter 메소드를 제거한 DTO는 반쪽짜리 VO라고 해도 무방한 것 같다. 딱 VO에서 euals(),hashCode() 만 오버라이드만 안한 상태? ) 보통 변화에 민감하지 않는 , 값을 비교할 필요 없는 데이터를 이동시킬 때 사용한다. VO : 값 그 자체를 나타내는 객체 데이터의 변화가 없는 불변성을 갖는다.( setter 메소드 사용하지 않는다. ) 서로 다른 VO여도 갖고 있는 데이터가 같으면 같은 객체라고 정의한다.(그림2 참고) , 이를 위해..
·CS
URI(Uniform Resource Identifier)란? 직역하면 "통합 자원 식별자" 라고 하는데 처음에는 이해하기 어렵다. 좀 더 쉽게 표현하면 인턴넷 어딘가에 있는 자원을 찾아 식별하는 문자열 형식이다. 그럼 URL(Uniform Resource Locator)란? 흔히 웹 주소라고도 하는데 , 인터넷 어딘가에 있는 자원의 위치를 표현하는 문자열 형식이다. 읽어보면서 느낄 수 있듯이 URL은 URI의 서브셋(부분집합)이다. 따라서 모든 URL은 URI 이다. 그럼 두 개념을 구분하는 건 무엇이냐? 그건 URI는 식별하고 , URL은 위치를 가르킨다는 것이다. 즉 URL은 식별자가 필요 없는 좀 더 작은 개념인 셈이다. 예시를 보면 좀더 이해하기 쉽다. https://forrest-code-13..
·CS
REST API 전에 REST란 무엇인지에 대해 먼저 알아볼 필요가 있다. 만들어진 계기 REST(REpresentational State Transfer)는 HTTP(웹)의 주요 저자 중 한 사람인 로이 필딩이라는 사람이 만들었는데 자기가 봐도 너무 잘 만든 HTTP를 사라들이 사용을 안하니까 제발 좀 사용하라고 보조기구?처럼 만든 HTTP 의 장점을 최대로 활용할 수 있는 아키텍처다. 정의 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태/정보를 주고받는 모든 것을 의미한다. 즉 자원(resource)의 표현(representation)을 기반으로 한 상태(정보)전달을 의미한다. 구체적으로는 HTTP URI를 통해 자원을 명시하고 , HTTP Method를 통해 해당 자원에 대한 CRUD를 적..
forrest13
'분류 전체보기' 카테고리의 글 목록 (4 Page)