묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결백엔드 프레임워크 만들기 (개정판)
이제 막 자바 문법 배웠는데, 이 강의를 수강해도 괜찮을까요?
저는 자바스크립트로 Front, 그리고 간단한 서버(단순 CRUD 수준)를 개발하다가, 이제 막 JAVA 문법을 익혔습니다. 제 프로젝트의 서버 개발을 위해 Spring을 배우려고 하는데요. 스프링부터 배울지 이 강의를 먼저 수강후 스프링을 배울지 고민이 됩니다. 고민이 되는 주된 이유는 난이도 때문에 그렇습니다. 당장 필요한 서버 기능을 위해 스프링을 배울까 하다가도 결국 객체지향을 이해하는게 핵심이겠다 싶어 이 강의를 먼저 듣는게 낫겠다 싶기도 합니다. 그러나 제가 따라 갈 수 있을지 고민이 됩니다. 이미 강의 결제는 했지만, 어떤 과정이 효율적일지 판단이 안됩니다. 혹시 조언을 부탁드려도 될까요?
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
최근에 올린 질문, 코드블럭으로 공유드립니다!
import java.util.*; public class Main { static int N, M, R; static int[] answer; static ArrayList<Integer>[] graph; static boolean[] visited; static int order = 1; public static void dfs(int idx) { visited[idx] = true; answer[order] = idx; order++; for(int i = 0; i < graph[idx].size(); i++) { if(!visited[graph[idx].get(i)]) dfs(graph[idx].get(i)); } } public static void main(String[] args) { Scanner input = new Scanner(System.in); N = input.nextInt(); M = input.nextInt(); R = input.nextInt(); answer = new int[N+1]; visited = new boolean[N+1]; graph = new ArrayList[N+1]; for(int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } for(int i = 0; i < M; i++) { int x = input.nextInt(); int y = input.nextInt(); graph[x].add(y); graph[y].add(x); } for(int i = 1; i < graph.length; i++) { Collections.sort(graph[i], Collections.reverseOrder()); } dfs(R); for(int i = 1; i < answer.length; i++) { System.out.println(answer[i]); } } }이렇게 구현한 경우, 틀렸다고 나오는데,ide로 돌리고 출력해보면14320으로 정상 출력되는데.. 이유를 모르겠습니다ㅠㅠ!선생님이 작성해주신 코드answer[idx] = order; order++; 제가 작성한 코드answer[order] = idx; order++;이렇게해도, 제가 하나씩 디버깅해서 따라가보면, 정답과 맞게 나오는데, 틀렸다고합니다.. !
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2에서 @GeneratedValue(strategy = GenerationType.IDENTITY) 부분이 되지 않습니다.
강사님과 똑같이 했는데 h2에서 member 테이블이 사라지고 결과 값엔 Table "MEMBER" not found; SQL statement라고 나옵니다. 그래서 테이블 생성을 위해 @Table(name = "Member")로 생성을 시도했지만 생성 또한 되지 않습니다.제가 원하는건 강사님과 똑같은 결과 값이 나오게 하려면 어떤 부분을 수정해야할까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의를 보고 연관관계 매핑을 하는데 모르겠습니다...
무신사와 비슷하게 만들고 있는데하나의 옷은 여러개의 카테고리를 가질 수 있잖아요Ex) [상품] 버버리코트 - [카테고리]상의, 코트, 겨울 등등..그런데 하나의 카테고리 또한 여러개의 상품에 등록되는 거 같아요Ex) [상품]아디다스 저지, 빨간색니트, 반팔티 - [카테고리]상의 이래서 N-M으로 연관관계 매핑이 되는 줄 알고 중간테이블로 둬서1:N , N:1로 만들었습니다.그런데 아이템을 넣고 확인해보니 중간테이블과 카테고리의 아이디가 동일하게 올라갈 수 밖에 없는 로직으로 구성되어 있습니다. 왜냐하면 옷 하나를 등록할 때 보통 많은 카테고리를 넣기 때문입니다.Item item = ItemRegisterDto.Request.toItemEntity(itemRegisterDto, findMember); itemRepository.save(item); Set<String> categoryNames = itemRegisterDto.getCategoryNames(); for (String categoryName : categoryNames) { Category category = ItemRegisterDto.Request.toCategoryEntity(categoryName); category.addItemCategories(item, category); categoryRepository.save(category); }public void addItemCategories(Item item, Category category) { this.itemCategories = new ArrayList<>(); this.itemCategories.add(ItemCategory.builder() .category(category) .item(item) .build()); }중간테이블과 카테고리의 아이디가 동일하게 올라가므로굳이 중간테이블을 쓰지 않고 옷과 카테고리를 1:N 양방향 매핑으로 연관관계를 만들면 될 거 같다고 생각했습니다.만약, 옷과 카테고리를 1:N 양방향 매핑이 맞다면 하나의 옷은 여러개의 카테고리를 가질 수 있고 하나의 카테고리 또한 여러개의 옷을 가질 수 있는데 다대다관계가 아닌 이유도 궁금합니다.마지막으로 어떻게 생각해야 연관관계 매핑에 있어서 잘 지을 수 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
수업과는 조금 다른 실무 id취향 질문이 있습니다!
안녕하세요, 테이블 생성중에 id관련된 내용을 보다가 궁금한게 생겨 질문 남깁니다! 개발자에 따라서 유한한 bigint로 이루어진 고유 id를 극혐하고 이론상 거의 무한한 uuid를 사용해야한다 주장하시는 분들이 꽤나 많던데, 태현님께서는 어떻게 생각하시나요? 저는 개인적으로 실무에서도 uuid대신 bigint로 이루어진 id를 사용중에 있고, 유저에게 노출이 필요한 유저 고유번호만 내부에서 사용하는 id값 이외에 uuid칼럼을 따로 만들어서 관리하거든요 🤔🤔만약에 uuid를 사용한다면 조회의 성능이랑.. auto_increment를 사용할 수 없으니 매 번 insert문마다 서비스로직에서 uuid를 만들어서 넘겨야 하는것에 대해서도 그래야만 하는지 좀 의문이 있기도 하구요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA, DB 연동 관련 오류 질문
안녕하세요 영한님 JPA 활용1 강의의 JPA와 DB 설정, 동작확인 파트를 실습하다가 오류가 생겨 질문남겨요3시간 동안 검색해도 해결하지 못했어요.. MemberRepository 테스트 시 아래와 같은 오류가 발생해 해결하고자 합니다. 아마 application.yml 쪽 문제 같은데 강의와 똑같이 따라했는데도 불구하고 오류가 발생하네요..H2는 확실히 켜고 테스트 시도했습니다. 아래는 강의를 보며 따라한 프로젝트입니다.https://drive.google.com/file/d/1BvWBkoHE0fjdIFABmGeiOMDLuG-pKdwP/view?usp=sharing
-
미해결토비의 스프링 6 - 이해와 원리
Test 결과 화면이 다른 거 같은데 설정 문제일까요?
토비님 강의 재밌게 보고 있습니다 그런데 강의 중에 토비님이 테스트를 실행하면 테스트 터미널 창에 > Task 이런 식으로 뭔가 많이 뜨던데저는 문구가 따로 나오지 않네요 정상적인 결과일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 실행 시 다음과 같은 오류가 발생하는데 뭐가 문제일까요?
강의를 보면서 cmd 실행후 helloC:\Users\Desktop\Study\hello-spring\hello-spring> 에서 gradlew build를 실행하면 해당 에러가 계속 뜨네요 검색해봐도 안나오고 너무 답답합니다 ㅠ
-
미해결김영한의 실전 자바 - 기본편
private 접근 제어자
[질문 내용]Speaker 클래스에서 int volume를 private로 지정하였을 때 volume 필드는 외부에서 접근을 못하고 Speaker 내부에서만 접근을 할 수 있다 설명했습니다. 그렇다면, 예를 들어 volume 멤버 변수를 Speaker 클래스 내부에서 10을 대입한다고 했을 때 volume = 10; 라고 초기화를 하려고 하면 volume 변수가 존재하지 않는 오류가 발생합니다. 분명히 Speaker 내부 에서 선언된 volume 필드를 쓰려고 하는데 왜 자기 자신의 클래스에서 생성된 변수를 사용하지 못하는 거죠?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
소스코드가 없습니다 도와주세요
제가 뭘 틀렸는지 잘 모르겠습니다.. src 파일에 들어가면 선생님 강의에선 소스코드들이 주루룩 뜨는데, 전 안 뜨고 'Main' 하나밖에 없습니다. 애초에 java-start 파일 하나만 있고 java-start 압축파일은 안 보입니다. 왜 이러는걸까요??? ㅠㅠㅠㅠㅠㅠ 소스코드들이 왜 없는건지 모르겠습니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Api 관련질문
@GetMapping("hello-api") @ResponseBody public Hello helloApi(@RequestParam("name") String name){ Hello hello = new Hello(); hello.setName(name); return hello; } static class Hello{ private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } 위처럼 APi사용하려는데 이렇게 한국어로 입력 시 문자가 깨지는 현상이 발생합니다 설정은 다음과 같습니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
다운로드 소스코드가 계속 안됩니다 ㅠㅠ 도와주세요..
[질문 내용]그냥 나오는대로 다 예 예 누르고 맞게 한 것 같은데계속 다른 위치에 저장하라고 뜹니다 선생님 ㅠㅠ 프로젝트를 몇 번이나 삭제하고 다시 깔고 실행했는데도 다운로드 소스코드가 실행이 안됩니다 파일 다운로드 위치도 계속 바꿔봤는데 똑같이 뜹니다 이유가 뭘까요? ㅠㅠㅠ...
-
미해결김영한의 실전 자바 - 기본편
기본 생성자 사용자 정의 시 null
[질문 내용]문제 풀이 과정에서 Book 클래스에 기본 생성자를 사용자가 직접 정의해서 만들었는데, 김영한 강사님께서 값을 비워두면 안 된다고 한 말씀이 의아해서 질문 드립니다. 교육 차원으로 문제에서 null값이 아닌 빈 값으로 보여주게 하기 위해서 this("", "", 0);으로 표시한 것인지, 아니면 실무에서도 기본 생성자를 개발자가 정의할 때에도 꼭 값을 비워두면 안 된다는 것인지 궁금합니다.
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
질문이 있습니다. dfs 메서드에 order를 이렇게 구현하면 안되는 이유가 무엇인가요?
이렇게 구현한 경우, 틀렸다고 나오는데,ide로 돌리고 출력해보면14320으로 정상 출력되는데.. 이유를 모르겠습니다ㅠㅠ!
-
미해결김영한의 실전 자바 - 기본편
this 이해가 잘 안돼요..
[질문 내용]김영한 강사님께서는 this가 예를 들어 nameField에서 먼저 지역변수(매개변수(에서 같은 이름이 있는지 찾고 없으면 멤버 변수에서 찾는다고 애기해주셨고 자바가 자동으로 this를 해준다고도 설명해주셨는데, 자바 입문편에서 배웠을 때 자신의 클래스에 변수를 타입지정하여 선언하면 하위 메소드나 앞으로도 타입 없이 변수명만으로 생존가능한 것으로 알고있습니다. 물론 매개변수의 이름과 멤버변수 이름이 동일하면 왜 this를 써야하는지는 알겠으나, 매개변수명과 멤버변수명이 다르다면 자바가 this를 자동으로 설정하는 설명 전에 일단 멤버변수와 매개변수가 구분을 지을 수 있으니 굳이 this를 설명할 이유가 있나 싶습니다. 애초에 멤버변수를 선언을 했으니 멤버변수를 자유롭게 사용할 수 있는데 거기에 this가 없어도 된다는 내용이 아이러니 하다고 생각이 드네요. 좀 디테일하게 알려주실 수 있을까요?
-
해결됨실리콘밸리 엔지니어와 함께하는 Gradle
scondTask관련 질문있습니다!
안녕하세요 강사님 task firstTask { println "Hello World" doFirst(){ println "First action!!" } doLast(){ println "Last action!!" } } task secondTask { doFirst(){ println "First action in secondTask" } doLast(){ println "Last action in secondTask" } }위와 같이 task를 작성하였습니다!secondTask를 작성할 때는 Hello World를 지운 상태로 실행을 했는데도gradle sT를 이용해서 sT를 실행하는 터미널 명령어를 사용했습니다!> Configure project :Hello World가 터미널에 출력되는 이유를 알 수 있을까요??
-
미해결김영한의 실전 자바 - 중급 2편
HashCode override
김영한 선생님의 자료의 경우에는 매개변수가 Object value 였는데 만약 제네릭을 K key 라고 할때에도return Math.abs(Objects.hashCode()) 라고 하는게 맞나요 ? 아니면 Math.abs(key.hashCode()) 가 맞나요?gpt 말로는 Objects 로 해야 NullPointerException 을 방지할 수 있다고 하는데 왜 그런건가요 ?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
gradle 관리 방법에대한 의견이 궁금해 문의남깁니다!
안녕하세요!코프링 대신에 자프링부터 들렀습니다 ㅎㅎ 기존에 maven만 사용해봐서 신규 플젝도 maven으로 생성했는데.. gradle을 이참에 배워보려고 합니다!! gradle이 groovy랑 kotlin 2가지 언어로 나뉜 것 같은데 영상에서 그루비를 선택하신 이유가 있을까요?혹시 기존 프로젝트도 그루비를 사용하시는거라면 이유가 궁금합니다! 많은 부분을 사용하는건 아니더라도 추후 코프링을 사용한다면 그레이들또한 코틀린으로 관리하는게 더 편하지 않을까 싶어서요!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
질문) 실무 재고처리 에서 비관적 vs 낙관적 lock
안녕하세요 강사님 재밌게 잘 보고 있습니다. 실무에서 주문 수 증가와 같은 단순 연산의 경우는 낙관적락 이 일반적인데, 인벤토리 ( 재고처리 ) 와 같은 도메인에서도 낙관적 락이 일반적인지가 궁금하여 문의드립니다.재고는 동시에 여러 사용자가 접근하여 변경할 가능성이 있기 때문에, 충돌이 더 빈번하게 발생할 수 있을것 같아 왠지 강의내용으로만 보아서는 비관적 락을 사용할것 같다는 생각이 들긴하지만 ... 통상적으로 사용하는 락이 궁금하여 질문드립니다 감사합니다
-
미해결김영한의 실전 자바 - 중급 2편
Shuttle에 많이 태우기 위해 코드를 수정한 후 생긴 사이드 이팩트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]```package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class Shuttle<T extends BioUnit> { private BioUnit[] units; private int unitCount; public Shuttle() { units = new BioUnit[10]; } public void in(T unit) { units[unitCount++] = unit; } public T out() { return (T) units[0]; } public void showInfo() { for (int i = 0; i < unitCount; i++) { System.out.println("이름: " + units[i].getName() + " HP: " + units[i].getHp()); } } } package generic.test.ex3; import generic.test.ex3.unit.Marine; import generic.test.ex3.unit.Zealot; import generic.test.ex3.unit.Zergling; public class ShuttleTest { public static void main(String[] args) { Shuttle<Marine> shuttle1 = new Shuttle<>(); shuttle1.in(new Marine("마린", 40)); shuttle1.in(new Marine("마린2", 45)); shuttle1.showInfo(); Shuttle<Zergling> shuttle2 = new Shuttle<>(); shuttle2.in(new Zergling("저글링", 35)); shuttle2.in(new Zergling("저글링2", 35)); shuttle2.in(new Zergling("저글링3", 35)); shuttle2.in(new Zergling("저글링4", 35)); shuttle2.showInfo(); Shuttle<Zealot> shuttle3 = new Shuttle<>(); shuttle3.in(new Zealot("질럿", 100)); shuttle3.in(new Zealot("질럿2", 100)); shuttle3.in(new Zealot("질럿3", 100)); shuttle3.in(new Zealot("질럿4", 100)); shuttle3.showInfo(); UnitPrinter.printV1(shuttle1); UnitPrinter.printV2(shuttle1); } } Shuttle을 생성하고 내부에 많이 태우고 싶어서 코드를 조금 수정해 보았습니다 ! 그런데 코드를 이렇게 수정하니 문제풀이 시간 때 package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class UnitPrinter { public static <T extends BioUnit> void printV1(Shuttle<T> shuttle) { T out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } }이 코드를 출력하기 위해서 Shuttle 클래스에 out메서드에 unit 1명만 출력하기 위해 (T) units[0]을 반환하였는데요, 이렇게 한 덕분에 문제 요구사항 대로 잘 나왔지만,Shuttle 클래스의 out 메서드에 이러한 린트가 발생합니다. Unchecked cast: 'generic. test. ex3.unit. BioUnit' to 'T' 왜 이러한 문제가 발생하는지 파악을 하지 못했고,혹시 코드를 이렇게 작성하게 된다면 어떤 문제점이 발생하는지, 어떻게 리팩터링 하면 좋을지 조언을 구하고 싶습니다 !