char형 변수를 int형으로 변환하고 싶을 때, '5'-'0' 이런 식으로 '0'을 빼준 적 있지 않으신가요?? 그 원리에 대해서 알아봅시다. 산술변환이란? "연산 전에 피연산자의 타입을 일치시키는 것" 만약에 float 타입과 int타입이 있다면 int 타입을 float 타입으로 자동 형변환 해줍니다. int i=10; float f=20.0f; float result=f+(float)i; //float result=f+i; 와 동일함 int -> float의 경우(작은 값 -> 큰 값) //형변환 명시를 안해줘도 자동으로 해줍니다. 또한 int타입보다 작은 타입들은 자동으로 int로 변환이 됩니다. 앞의 char타입인 '5' - '0'의 경우 char 타입이 int로 자동 변환됩니다. 문자 '5'는..
분류 전체보기
자바를 제대로 활용하고 있는지 의문이 들어서 복습을 하고 있습니다. 복습하는 도중에 새롭게 알게 된 사실등을 정리하므로 해당 포스팅에서는 많은 내용을 다루지 않습니다. 변수란? 하나의 값을 저장하기 위한 메모리 공간에 이름 붙인 것입니다. int age = 5; 위의 예제에서는 age가 변수가 됩니다. 메모리에서 int형에 해당하는 byte만큼 자리를 배정하고 거기에 age라는 이름을 붙입니다. 그 공간에 5라는 값을 담아주면 되겠죠. 참고로 int는 변수의 타입이고 5라는 상수 값은 리터럴이라고 부릅니다. 자바의 상수를 int age 앞에 final이라는 키워드를 붙이면 상수가 되며 값을 수정할 수 없는 점 유의바랍니다. 선언 위치에 따른 변수 클래스 변수, 인스턴스 변수, 지역 변수 이 세 종류는 선..
문제 링크 www.acmicpc.net/problem/20115 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 문제 요약 두 에너지 드링크 a, b가 있고, 양이 각각 Xa, Xb라 할 때, 다음 둘 중 하나의 선택을 할 수 있다. a의 양을 Xa + (Xb / 2)로 만들고, b를 버리기 b의 양을 Xb + (Xa / 2)로 만들고, a를 버리기 위의 방식으로 에너지 드링크를 합쳐서 그 양을 최대로 하자. 접근 그리디 문제이고 접근법도 굉장히 쉽습니다. 그냥 가장 양이 많은 드링크에 그다음 양이 많은 드링크..
자꾸 헷갈리게 되는 동기와 비동기에 대해서 정리해보려고 합니다. Blocking vs Non-Blocking 동기, 비동기 처리 방식을 언급할때 같이 언급되는 용어인 blocking과 non-blocking에 대해 알아보겠습니다. 저는 이 두 가지를 일종의 상태를 설명하는 용어라고 이해하고 있습니다. Blocking의 경우에는 우리가 무엇인가를 호출하고 System call이 완료된 후 리턴하기 까지 계속 wait queue에 들어가 있는 상태를 일컫습니다. 한 마디로 정의하자면 작업 중단된 상태입니다. Non-Blocking은 System call과 관계없이 리턴하기에 queue에 들어갈 필요도 없습니다. 동기식 방식 동기식 방식은 순차적으로 작업을 진행합니다. 순차적이라서 앞의 작업이 끝나지 않으면 ..
프로젝트 목표 실시간으로 환율 값을 얻어서 사용자에게 전송해줄 수 있는 봇을 만드려고 합니다.목표가격에 도달했을 경우에는 알림 메시지를 전송할 예정입니다.이번 글에서는 그 첫 단계인 메시지 전송을 해보겠습니다. 봇 토큰 발급받기 여러분에게 텔레그램 계정이 이미 있다는 가정하에 진행하겠습니다. @BotFather 라는 봇과 채팅하면서 토큰을 받아야합니다. 대화 시작하기 -> /newbot 을 입력해주세요. 그 다음에는 차례대로 봇 이름, 봇 닉네임(유일해야함)을 입력하라고 합니다. 여기까지 진행해주시면 간단한 봇 발급은 끝납니다. 봇 토큰을 발급해주는데 따로 메모해두세요. Chat_id 확인 https://api.telegram.org/bot토큰/getUpdates url를 통해서 확인 가능합니다. 본인이..
오류 발생 경위 spring boot gradle에 h2 dependency를 추가하고 웹으로 db 콘솔 접근할 때 오류가 발생했습니다. 사실.. 저는 간단하게 해결했습니다. 오류에서도 JDBC를 언급하고 있는데요. 제가 당장 jdbc를 사용하지 않기에 따로 추가해주지 않았습니다. 저는 implementation 'org.springframework.boot:spring-boot-starter-jdbc' 를 추가하고 오류를 해결했습니다. 다른 해결법 저와는 다른 이유로 고생하시는 분들을 위해서 다른 해결법도 정리해두겠습니다. application.properties 를 확인한다 보통 localhost:8080/h2-console 에 접속하셔서 확인을 해볼텐데요. application.properties ..
이번에는 mapping을 통해서 간단한 html 페이지를 보여주도록 하겠습니다. 처리 과정 일반적으로 사용자의 요청을 처리하는 과정은 다음 그림과 같습니다. 우리는 매핑을 통해 Controller가 특정 View를 사용자에게 반환하도록 만들게요. Client가 웹 서비스에 요청을 보내면 Dispatcher Servlet이 매핑되는 Handler를 찾습니다. Controller가 요청을 처리한 후에 View를 Dispatcher Servlet에게 전달해주고 다시 사용자에게 응답이 되는 흐름입니다. Controller가 View를 반환하기 위해서는 ViewResolver가 사용되며, ViewResolver 설정에 맞게 View를 찾아 렌더링합니다. @Controller 해당 자바 클래스가 Controller..
IDE에서 spring 프로젝트를 생성하는 방식도 있지만 공식 홈페이지에서 생성하는 방법에 대해서 다루려고 합니다. 프로젝트 생성 start.spring.io/ 위의 링크를 따라가시면 이러한 페이지가 나옵니다. Project의 타입부터 언어, 스프링 부트 버전, dependencies 추가 설정들이 가능합니다. Project 타입의 Maven과 Gradle은 이전 포스팅에서 다뤘으니 참고해주세요. Maven vs Gradle Maven과 Gradle은 빌드 도구(Build tool)입니다. 라이프사이클도 관리해주고 관련 라이브러리들을 자동으로 가져오는 등 편리한 기능들을 제공하고 있습니다. 쉽게 표현하면 프로젝트 생성, 테스트 빌 coding-nyan.tistory.com 언어는 사용하시는 언어로 선택해..
Maven과 Gradle은 빌드 도구(Build tool)입니다. 라이프사이클도 관리해주고 관련 라이브러리들을 자동으로 가져오는 등 편리한 기능들을 제공하고 있습니다. 쉽게 표현하면 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 툴이라고 할 수 있습니다. Maven과 Gradle이 어떤 점이 다른 지 살펴보도록 하겠습니다. Maven Maven은 Ant를 사용하던 개발자들의 불편함을 해소하고자 2004년에 출시했습니다. pom.xml을 이용한 정형화된 빌드 시스템을 제공하고 있습니다. Maven은 외부에서 필요한 라이브러리와 플러그인들을 받고 로컬에 저장합니다. 또한 간단한 설정을 통한 배포 관리가 가능합니다. 자세한 특징들은 링크로 대신하겠습니다. maven.apache.org/maven-..
Execution failed for task ':compileJava'. > Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'. IntelliJ에서 자바 8버전을 사용하다가 11로 업그레이드 하려다가 마주친 에러 메시지입니다. IDE에서 11버전이 아닌 8버전을 참조하고 있는 것으로 예상됩니다. 해결 방법 File - Project Structure로 들어가서 설정 확인을 해봅시다. Platform Settings의 SDKs에 11버전을 등록해줍시다. 그 다음 Project Settings의 Project SDK를 11버전으로 변경해주세요. 이럼에도 불구하고 Gradle 환경에서 Spring을 이용하려는 분이 동일한 에러 메..