전체 글 562

[인텔리제이] finished with non-zero exit value 1

인텔리제이에서 코드를 작성하고 실행을 시키니까 아래와 같은 에러 문구가 뜨면서 실행이 되지 않았다. > Process 'command '/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 맥 기준으로 Intellij IDEA > settings > Build~ > Build Tools > Gradle Build and run using, Run tests using을 Intellij IDEA로 변경 후 적용! 위처럼 하면 해결된다고 했지만 나는 해결되지 않았다 그래서 자바 버전을 살펴보았다 > java -version 버전을 11로 변경해도 (Gradl..

error: non-static method <S>save(S) cannot be referenced from a static context

소셜 로그인 회원가입 (카카오)를 구현하는 도중 MemberService 파일 내에서 save 메소드쪽에 빨간 에러가 떴다.. 실행을 해서 돌려보니 아래와 같은 에러문구가 등장했다. error: non-static method save(S) cannot be referenced from a static context 알고 봤더니 memberRepository.save로 선언해야 하는데 MemberRepository.save로 기재해서 생긴 에러였다. ㅎ 해당 클래스를 new 로 객체화한 후에 non-static 메소드들을 호출할 수 있는데 객체화하지 않고 메소드를 호출하여 생긴 에러였다.

Spring Boot 소셜 로그인 구현 (2) | feat. kakaoTalk

1. 개인정보 가져오는 프로세스 진행 kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code 이전 포스팅에서 만들었던 client_id와 redirect_url를 각각 넣어준다 (이때 대괄호는 모두 삭제함) 그리고 해당 url로 접속하면 아래와 같은 화면이 등장한다 (로그인 후) 동의하고 계속하기를 누르고 Url창을 확인해보면 redirect_url?code=?????와 같은 형태의 주소가 젹혀있다 포스트맨에서 접속여부를 테스트하기 위해 필요한 값은 ????에 해당하는 값이다. 이를 복사한 후 포스트맨으로 넘어간다. 2. 포스트맨으로 access token 발급받기 Acces..

SpringBoot 소셜 로그인 구현 (1) | feat. KakaoTalk

https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 1. Kakao Developers 홈페이지 접속 > 내 어플리케이션 2. 애플리케이션 추가하기 버튼 클릭 3. 앱이름 & 사업자명 입력, 약관 동의 후 저장 버튼 클릭 4. 앱키 정보는 따로 안전한 곳에 저장해두기 5. 카카오 로그인 카테고리 클릭 후 활성화 설정 ON으로 변경 6. Redirect URI 등록하기 -> 최초 등록 후 추후 수정 가능함. 여러개 추가하는 것도 가능함. 7. 카카오 로그인 > 동의항목 설정 -> 닉네임, 프로필사진..

[Java] 예외처리

오류 종류 1. 컴파일 에러 : 컴파일 시 발생하는 에러 컴파일러가 오타나 잘못된 구분, 자료형 체크 등의 기본적인 검사를 수행함 (소스코드의 기본적인 사항 점검) 그러나 실행 중 발생할 수 있는 잠재적인 오류는 잡아내지 못함. 2. 런타임 에러 : 실행 시 발생하는 에러 실행 중 무한 로딩에 걸린다던지, 갑자기 프로그램이 종료된다던지. 3. 논리적 에러 : 실행은 되지만, 의도와는 다르게 동작하는 에러 에러 발생 시, 프로그램의 비정상적인 종료를 막을 길은 없다. 하지만, 예외는 발생하더라도 비정상적인 종료를 막을 수 있다. 에러 : 프로그램 코드에 의해 수습될 수 없는 심각한 오류 예외 : 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류 예외처리하기 - try ~ catch 문 JVM의 예외처..

[Java] 추상클래스 및 인터페이스

1. 추상클래스 : 해당 클래스에는 추상 메서드가 있으니 상속을 통해 구현해주어야한다. 추상클래스는 미완성 설계도여서 인스턴스를 생성할 수 없다. 즉, 추상 클래스는 상속을 통해 자손클래스에 의해서만 완성될 수 있다. 선언부만 작성하고 구현부는 작성하지 않은채로 남겨둔 것이 추상 메서드. abstract class 클래스명{ ... } // 예시 abstract class Player{ abstract void play(int pos); abstract void stop(); } class AudioPlayer extends Player{ void play(int pos) { ... } void stop() {...} } abstract class AbstractPlayer extends Player{ ..

[Java] 패키지 및 import

1. 패키지 : 패키지는 클래스의 묶음이다. 클래스 또는 인터페이스를 포함시킬 수 있고 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 예를 들어 java.lang.String 구문은 java.lang 패키지에 속한 String 클래스라는 의미이다. 정확히는 디렉토리 java의 서브 디렉토리 lang 안에 있는 String.class 파일이다. 2. 패키지 선언 package 패키지명; 3. import 문 : 사용하고자 하는 클래스의 패키지를 미리 명시해주면 패키지명 생략이 가능하다.

[Java] 자바 프로그램 실행 과정 및 동작 원리 (feat. JVM)

1. 컴파일이란? (Compile) : 컴파일은 사람이 이해할 수 있는 언어로 작성된 코드를 컴퓨터가 읽을 수 있는 언어(기계어)로 변환하는 과정을 의미한다. 컴파일의 목적은 코드의 구문과 의미를 확인(ex. 오류코드 확인) 하고 최적화를 수행하며 효율적이고 JVM에서 실행하기에 적합한 바이트코드를 생선한다. 컴파일은 Java 컴파일러(javac) 또는 통합 개발 환경(IDE)에서 수행한다. 2. .java 파일 vs .class 파일 (1) .java 파일 : Java 언어로 작성된 소스 코드 파일이다. 즉 컴파일 되기 전의 소스 파일 (2) .class 파일 : Java 컴파일러에 의해 생성된 컴파일된 바이트코드 파일이다. 자바 가상 머신(JVM)에서 이해하고 실행하는 바이트코드 명령이 포함되어 있다..

[주식 기초] 적정 주가 판단하는 방법

주식을 하기 위해 기업 분석, 산업 분석, 차트 분석을 시도하는 연습을 하고 있다. 그러나, 수익성이 좋고 성장 가능성이 있는 회사를 발견했음에도 불구하고 지금 현재 주가가 적정 주가인지 너무 고점은 아닌지 언제 매수를 해야 하는지에 대한 고민이 생기기 시작했다. 이왕이면 저점일 때 매수를 하는게 평단가를 낮추기에도 좋아서 이 부분에 대해 집중적으로 연구를 해보기로 결심했다. 일단 주가를 판별하기에 앞서 필요한 개념에 대해 짚고 넘어가야 한다. https://youtu.be/bE1iSUYA0KI 위 영상을 보면 나처럼 주린이들도 쉽게 이해할 수 있다. PER (Price Earning Ratio) , 주가수익비율 기업이 벌어들이는 돈 대비 주가의 가격을 어느정도 알 수 있다. 1주의 가격이 수익의 몇 배..

[Oracle] 조인에 대해 알아보자

조인 : 두 개 이상의 테이블을 가로로 연결하여 하나의 테이블처럼 출력할 때 사용하는 방식 참고로 집합 연산자는 SELECT문의 결과값을 세로로 연결한다. SELECT * FROM EMP, DEPT 만약 EMP 테이블에 15개의 행, DEPT 테이블에 4개의 행이 있다면 총 15*4=60개의 행이 조회된다. 하지만 위 출력값에는 문제가 있다. 사원 데이터와 부서 데이터가 정확하게 떨어지지 않는 데이터도 모두 출력되기 때문이다. 조인 할 때, WHERE절이 중요한 역할을 한다. SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO 조인의 종류 1. 등가 조인(=내부조인, 단순조인) : 위에서 EMP, DEPT 테이블을 열 기준으로 조인했는데 이 방식이 바로 등가 조..

[Oracle] 오라클 함수에 대해 알아보자.

1. 내장 함수 - UPPER(문자열) : 모든 문자열을 대문자로 변환 - LOWER(문자열) : 모든 문자열을 소문자로 변환 - INITCAP(문자열) : 첫 글자는 대문자, 그 외 글자는 소문자로 변환 SELECT UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME) FROM EMP * 사원 이름에 YEONY 단어를 포함한 데이터 찾기 SELECT * FROM EMP WHERE UPPER(ENAME) LIKE UPPER('%yeony%') - LENGTH(문자열) : 문자열 길이 반환 SELECT LENGTH('한글') FROM DUAL 이때 DUAL이란? : 최고 권한 관리자 계정인 SYS 소유의 테이블로 SCOTT 계정도 사용할 수 있는 더미테이블이다. 더미테이블을 사용하는..

[Oracle] SELECT문 WHERE절 활용

1. LIKE : 일부 문자열이 포함되어 있는 단어를 조회할 때 사용함 -- 1. 길이라는 단어가 포함되어 있는 데이터 조회 SELECT * FROM 사원테이블 WHERE 사원명 LIKE '%길%' -- 2. 길이라는 단어가 포함되지 않은 데이터만 조회 SELECT * FROM 사원테이블 WHERE 사원명 NOT LIKE '%길%' 2. 집합 연산자 (UNION) SELECT문 사이에 사용되며 합집합을 의미하는 연산자. 이떄, 각 SELECT 문이 출력하는 열의 개수와 열의 자료형이 순서별로 일치해야 한다. 출력 열의 개수가 다르거나 출력 열의 자료형이 다르면 에러가 뜬다. 만약 출력 열의 개수와 자료형은 같으나 필드명이 다른 경우에는 에러는 나지 않는다. 하지만 최종적으로 출력되는 열의 이름은 가장 처..

Servlet에 대해 알아보자

서블릿은 클라이언트(웹 브라우저)와 서버(웹 어플리케이션 == was) 간의 통신을 처리하고 동적인 웹 페이지 생성, 데이터베이스 연동 등의 기능을 수행함 즉 서블릿이란 자바 웹 어플리케이션에서 동적인 처리를 수행하는 자바 클래스이고 HTTP 요청과 응답 프로토콜을 다루기 위한 API를 제공한다. WAS 내에 서블릿 컨테이너가 있고 서블릿 객체를 자동으로 생성 및 호출, 생명주기까지 관리해준다. 서블릿 컨테이너란 톰캣처럼 서블릿을 지원하는 WAS 를 의미한다. WAS에서 서블릿 컨테이너를 통해 서블릿을 실행시키고 HTTP 요청을 처리한다. 즉 서블릿 컨테이너가 해당 요청을 처리할 서블릿을 찾아서 실행시킨다. 요새는 서블릿 대신 스프림 프레임워크를 사용하는데, 스프링 프레임워크는 서블릿을 기반으로 구현되어..

Controller, Service, ServiceImpl, DAO, VO에 대해 알아보자

Controller -> 클라이언트의 요청을 받아 해당 요청을 처리하는 로직을 작성한다. 클라이언트의 요청에 대한 응답을 반환한다. Service -> 비즈니스 로직을 추상화한 인터페이스. 인터페이스를 사용하면 구현 세부 정보를 숨기고 클라이언트 코드와 분리할 수 있어서 유지보수성과 확장성을 높인다. ServiceImpl -> Service 인터페이스를 구현하는 클래스. Service 인터페이스에서 선언된 모든 메서드를 구현하기 때문에 해당 인터페이스에서 정의된 모든 비즈니스 로직을 구현해야 한다. 따라서 SErvice 인터페이스를 구현하는 공간이 ServiceImpl이다. → Service(인터페이스)와 ServiceImpl(구현체)을 분리해야 하는 이유는 유연성과 확장성 때문이다. → 인터페이스를 사..

[기업분석 이야기] 삼양 - 불닭볶음면, BTS, 서진이네

1. 삼양 식품에 대해 관심을 가지게 된 계기 요새 가장 즐겨보고 있는 "서진이네"를 통해 삼양식품에 대해 관심을 가지게 되었다. 라면을 자주 즐겨먹고 좋아하기 때문에 뭐눈에는 뭐만 보인다고 서진이네를 보면서 유독 불닭볶음면이 눈에 띄었다. 그리고 유독 서진이네를 찾아오는 사람들이 불닭볶음면의 매력에 빠져있는 모습과 함께 BTS 뷔가 출연하기 때문에 아주 기가 막힌 마케팅이 되겠구나라는 생각이 들었다. [월가의 영웅] 책을 읽으며 가치 투자에 대한 관심도가 높아지고 있는 상황이었고 일상 생활에서 접하는 모든 것들에 대해 관심을 가지고 주식과 연관지어 생각하는 연습을 시작하려던 찰나에 발견한 첫 번째 기업, "삼양 식품" 불닭볶음면은 현재 삼양식품의 매출 67%를 차지하는 수준에 이르렀다고 한다. http..

[Oracle] 데이터 모델링 기본 개념 (엔티티, PK, 도메인, 다대다 관계)

1. 엔티티 : 개체로 인식할 수 있는 데이터의 집합 엔티티 == 테이블 인스턴스 == 행 속성 == 열 엔티티는 다수의 인스턴스를 가질 수 있다. (1) 엔티티 -< 인스턴스 (M) 인스턴스는 다수의 속성을 가질 수 있다. (1) 인스턴스 -< 속성 (M) 속성은 하나의 속성값만 가질 수 있다. (1) 속성 - 속성값 (1) 2. PK (기본 식별자 , Primary identifier) : 엔티티에서 인스턴스를 고유하게 식별할 수 있는 속성이다. (= 테이블에서 행을 고유하게 식별할 수 있는 속성이다) 단일 식별자 : 하나의 속성으로 구성된 식별자 복합 식별자 : 2개 이상의 속성으로 구성된 식별자 PK는 NOT NULL이어야 하고 중복되어서도 안된다 (Unique) 간단한 정보로 지정해야 빠르게 식..

[14500] 테트로미노 in Java

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 백트래킹을 사용하여 폴리오미노 모양을 만들어주었던 문제 이때 방문했던 지점에서 깊이가 4가 되기전까지는 무조건 상하좌우 방향을 계속해서 탐색해줘야한다. 그래서 dfs 내에서는 3중 for문을 돌려야함. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 package week5; import java.io.BufferedReader; import java.io.IOExc..

[3124] 최소 스패닝 트리 in Java

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV_mSnmKUckDFAWb SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 요약 - 최소 스패닝 트리의 가중치를 출력- c는 음수일 수도 있고, 절대값이 1,000,000을 넘지 않는다.(long 타입으로 선언) 문제 접근 방식 최소 신장 트리 (MST = 최소 스패닝 트리) : n개의 정점을 모두 연결하기 위해 n-1개의 간선을 선택하여 만든 트리(무향 그래프에서 n개의 정점과 n-1개의 간선으로 이루어진 트리) 최소 스패닝 트리를 계산하는 알고리즘으로 Kruska..

카테고리 없음 2022.08.23

[DFS/BFS] 마름모 모양 만들기

https://eboong.tistory.com/610 [*5644*] 무선 충전 in Java (Feat. SWEA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.. eboong.tistory.com 위 문제를 dfs로 풀다가 막혀서 이번 기회에 DFS와 BFS로 모두 구현해보기로 결정! 격자 크기 : 10 X 10 길이가 4인 마름모 그리기! 1. DFS (1) visited 위치가 nx, ny 기준으로 변경될 때 HTML 삽입 미리보기할 수 없..

[15787] 기차가 어둠을 헤치고 은하수를 in Java

https://www.acmicpc.net/problem/15787 15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net 문제 요약 기차 개수 : N개 좌석 수 :20개 명령 개수 : M개 명령 종류 4가지 1. i번째 기차, x번째 좌석에 사람 태우기 (이미 사람 있으면 x) 2. i번째 기차, x번째 좌석에 앉은 사람 하차 (사람이 없으면 x) 3. i번째 기차, k번째 앉은 사람 -> k+1번째로 고객 모두 이동, 단 20번째 자리에 사람이 앉아 있었다면 이 사람은 하차한다. 4. i번째 기차, k..

[*3109*] 빵집 in Java ( + Backtracking, DFS )

https://www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 문제 요약 격자 크기 :R X C map[r][0] = 근처 빵집의 가스관 map[r][c-1]= 원웅이 빵집 건물에는 파이프를 놓을 수 없다. . : 빈칸, x :건물 파이프라인 시작위치 : 첫째 열에서 시작 파이프라인 도착위치 : 마지막 열 연결 가능 위치 :↗, →, ↘ 파이프라인의 경로는 겹칠 수 없고, 서로 접할수도 없다. == 각 칸을 지나는 파이프는 하나여야한다. 가스를 되도록 많이 훔치려고 한다. ..

[*1992*] 쿼드트리 in Java

https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 문제 접근 방식 -> 왼쪽 상단, 오른쪽 상단, 왼쪽 하단, 오른쪽 하단이 모두 0이면 : 0으로 압축 -> 왼쪽 상단, 오른쪽 상단, 왼쪽 하단, 오른쪽 하단이 모두 1이면 : 1으로 압축 -> 왼쪽 상단(0), 오른쪽 상단(1), 왼쪽 하단(0), 오른쪽 하단(1), 즉 0과 1이 섞여 있는 경우면: 0101로 출력 시행 착오 -> 재귀함수를 사용해야 한다는 건 파악했으나 재귀함수..