묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
단일 쓰레드에서 성능 차이가 발생하는 이유
성능 테스트를 할 때 멀티쓰레드를 사용하는 것이 아닌 단일 쓰레드(main 쓰레드)만 사용하고 있는데, increment()에 synchronized를 붙인 것과 안 붙인 것의 성능 차이는 왜 발생하는 것인가요? BasicInteger와 VolatileInteger의 경우에는 캐시를 사용하는가, 메인 메모리를 사용하는가의 차이로 성능 문제가 발생했다는 것은 알겠는데, BasicInteger와 SyncInteger 간의 성능 차이가 왜 발생하는 것인지 모르겠습니다..
-
미해결김영한의 실전 자바 - 기본편
강의의 핵심이 기본 객체 생성 vs 배열 객체 생성 의 차이인건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] int[] students = new int[2]; //이건 정수형 배열을 선언하는 것이고Student student1 = new Student(); // 이건 Student클래스의 인스턴스인 student1객체를 생성하는 것이고 Student[] students = new Student[2]; 그리고 이제 이건 Student클래스 객체를 두 개 생성하는 배열을 선언하는 것인가요?
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 강의에서는 사실 처음에 만들어졌던 로직을 하나하나씩 변경해가면서 그 히스토리를 알고 있는 상태니까.. 리팩토링을 하는 과정이나, 하고 난 뒤에도 어느정도 이해가 가지만 만약 처음 들어온 신입 개발자가 리팩토링이 완료된 코드를 보면 오히려 더 복잡해 보이는 경우도 있지 않을까 하는 생각이 들어서 질문드립니다..가독성을 위해 추상화를하고 메소드를 분리하고 했지만, 상세 구현 로직을 확인하려면 다시 내부로 들어가는 과정을 거치면서 오히려 집중력이 분산되는 느낌인데.. 리팩토링이 추구하는 가치와 약간 모순된다는 느낌을 받았습니다.. 혹시 이렇게 느끼는 이유가 아직 코드 작성 경험이 적어서 그러는걸까요? 굳이 추상화해놓은 메소드 내부까지 들어가서 확인할 필요는 없는건가요?제가 느끼기로는 맨 처음 아무런 정리가 안되었던 코드가 제일 이해가 잘갔던 것 같아서 계속 리팩토링을 하면서도 고민이 되어서 질문드립니다..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 입문 메서드 호출과 값 전달2
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 여기서 코드 상으로는 sout 1,4,2,3 순서로 작성하였는데 출력결과에서는 어떻게 1,2,3,4 순서대로 출력되는지 궁금합니다.
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
배열 생성자로 배열 생성시 empty와 undefined
배열 생성자로 배열 선언시, undefined로 출력 되는 것이 아니라 empty로 출력이 되는데, empty와 undefined는 다른 것으로 판단됩니다. 결국 비어있는 배열에 접근할 경우 자바스크립트 엔진에서 undefined로 인식하니까 결국 같은 것으로 생각해야 할까요
-
미해결스프링 핵심 원리 - 기본편
AppConfig의 역할
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]AppConfig의 역할이 여러 서비스를 하나로 조합하는 그런역할인건가요? 마치 application 역할의 facade 랑 비슷한건가요??
-
미해결스프링 핵심 원리 - 기본편
지금 보시는 강의자료 어디서 다운받나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 다운 받은건 객체지향 설계와 스프링 밖에 없는데 이번강의나 지난 강의에서 수업때 보여주시는 피피티는 어디서 다운받나요?
-
미해결김영한의 실전 자바 - 중급 2편
해시 알고리즘 9 - 해시 충돌 구현의 마지막 코드 도식화
안녕하세요! 제가 이해하고 있는 부분이 맞는지 궁금합니다.LinkedList<Integer>[ ] buckets = new LinkedList<>[ ] 를 하면, LinkedList<Integer> 타입을 갖을 수 있는 배열이 생성되고, buckets[0] , buckets[1] .. .. 처럼 인덱스 번호를 이용해서 접근가능합니다. 여기서 궁금한점은 LinkedList<Integer> 타입으로 구성된 각 배열들은 LinkedList<Integer>의 인스턴스가 생성된것이 아니라, 단지 LinkedList<Integer>의 타입을 갖을 수 있는 참조 변수 인건가요?? 그 후에 각 참조변수 안에서 new LinkedList<>의 코드를 사용해서, LinkedList<>의 인스턴스가 생성되어 연결된것인가요??그렇기 때문에, add 메소드에서, buckets[1].add와 같은 문장이 생성될 수 있었는지 여쭤보고싶습니다.
-
미해결김영한의 실전 자바 - 중급 2편
배열에서의 시간복잡도와 Object
안녕하세요 . int 타입의 경우 배열을 생성하였을때 int는 4바이트로 메모리크기가 정해져있고 그에 따라 (배열주소 * int의크기(4)) 로 O(1) 로 찾을 수 있다고 이해했습니다. 그럼 그렇다면 Object [] 배열의 경우에도 동일하게 동작하나여? Object나 다른 참조타입의 경우에도 메모리에서 각각의 인덱스의 참조주소가 동일한 크기를 가지고 배열이 생성될까요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Callble 활용 질문 이요.(코드 이런식으로 만들어도 되는지?)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 어찌저찌 하다가 콜라볼를 이용해서 만들기는 하였는데 이렇게 코드로 만들어도 되는지 궁금해서 질문을 드립니다.콜라볼에 Lsit값을 넣어서 , 심플한 callable 리스트를 만들었는데 이렇게 활용해도 되는지 알고 싶어서 코드를 올립니다. 이렇게 만들어도 되냐요? 답변 부탁드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
IDE에서 equals를 생성하는 방식이 바뀐걸까요?
이전엔 자동 완성을 시키면 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UserV2 user = (UserV2) o; return Objects.equals(id, user.id); }이 코드였던거같은데 현재는 이렇게 생성이 됩니다. @Override public boolean equals(Object object) { if (object == null || getClass() != object.getClass()) return false; UserV2 userV2 = (UserV2) object; return Objects.equals(id, userV2.id); } IDE 작동 방식에 변화가 생긴걸까요? 아니면 제가 설정을 무엇인가 잘못 건드린걸까요
-
미해결김영한의 실전 자바 - 중급 2편
섹션 6 -문제와 풀이 2 구조도 그림
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요!섹션 6 -문제와 풀이 2 에 나온 문제를 간략하게 그림으로 도식화해보았습니다.제가 이해하고 있는게 맞는지 확인 부탁드려도 괜찮을까요?감사합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
count에 volatile을 붙이는 이유
문제가 되는 부분은 main 쓰레드와 work 쓰레드에서 flag 변경/확인 타이밍이 맞지 않아서인데 왜 count에도 volatile 키워드를 붙여주는 것인가요? flag에만 volatile을 붙인 경우에도 정상 동작하긴 합니다..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ProductAdminEx | Switch 사용
package study.array.ex; import java.util.Scanner; public class ProductAdminEx { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] productNames = new String[10]; int[] productPrice = new int[10]; int productCount = 0; while (true) { System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료"); System.out.print("메뉴를 선택하세요 : "); int option = sc.nextInt(); sc.nextLine(); switch(option) { case 1: if(productCount != 10){ System.out.print("상품 이름을 입력하세요 : "); productNames[productCount] = sc.nextLine(); System.out.print("상품 가격을 입력하세요 : "); productPrice[productCount] = sc.nextInt(); productCount++; } else System.out.println("더 이상 상품을 등록할 수 없습니다."); break; case 2: if(productCount != 0) { for (int i = 0; i < productCount; i++) { System.out.print(productNames[i] + " -> " + productPrice[i]); System.out.println(); } } else { System.out.println("등록된 상품이 없습니다."); } break; case 3: System.out.println("프로그램을 종료합니다."); System.exit(0); } } } } 마지막 문제풀이때 for문을 사용하지 않고 switch문을 사용하여서 풀었는데 어떠한 상황에서 FOR문을 사용해야 더 개선된 코드인지 SWITCH문을 사용해야 더 개선된 코드인지 분별이 잘 안갑니다. 이런 문제풀이때는 어떤걸 사용해야 하나요??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayExRef6 코드 질문있습니다.
[질문 내용]여기에 질문 내용을 남겨주세요.package study.array.ex; import java.util.Scanner; public class ArrayExRef6 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int[] numbers = new int[scanner.nextInt()]; System.out.println(numbers.length +"개의 정수를 입력하세요:"); // 입력 for (int i = 0; i < numbers.length; i++) { numbers[i] = scanner.nextInt(); } int min, max; min = max = numbers[0]; // 가장 작은 정수 for (int number : numbers) { if(min > number) min = number; } // 가장 큰 정수 for (int number : numbers) { if(max < number) max = number; } // 출력 System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } } 선생님의 기존 코드와 비교했을때 이런 로직으로 짜는것은 가독성이나 효율성(비효율적인 반복문 사용)이 떨어지는 코드일까요??
-
미해결김영한의 실전 자바 - 기본편
기본형&참조형 변수대입2
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예안녕하세요, 강의 너무 잘 보고 있습니다.Data dataA = new Data(); 부분에서 궁금한 점이 생겨 여쭤보게 되었습니다. dataA 라는 것은 저는 인스턴스가 생성될 때 인스턴스의 이름인 줄 알았는데 이것은 인스턴스의 이름이 아니라 참조 변수의 이름이 맞는지가 궁금합니다. 그리고, 실질적으로 인스턴스가 생성되는 부분은 dataA 부분이 아니라 new Data() 쪽에서 인스턴스가 생기는지와, 그렇게 되면 생성된 인스턴스 자체에는 이름이 없는지가 궁금합니다. 좋은 강의 제공해주셔서 항상 감사드립니다 !
-
미해결김영한의 실전 자바 - 중급 1편
날짜/ 시간 클래스 질문 서포터즈님들 답변좀요 ㅠ
[질문 내용]여기에 질문 내용을 남겨주세요. package time.test; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.util.Scanner; public class TestCalendarPrinter { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] dayOfWeeks = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; System.out.print("년도를 입력하세요: "); int year = scanner.nextInt(); System.out.print("월을 입력하세요: "); int month = scanner.nextInt(); LocalDate ldt = LocalDate.of(year, month, 1); int lastDay = ldt.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth(); System.out.println("lastDay = " + lastDay); String firstDayOfWeek = String.valueOf(ldt.getDayOfWeek()); System.out.println("Su Mo Tu We Th Fr Sa"); int count = 0; for(int day=1; day<=lastDay; day++){ if(day == 1) { for (String dayOfWeek : dayOfWeeks) { if (dayOfWeek.equals(firstDayOfWeek)) { System.out.print(" " + 1); break; } System.out.print(" "); System.out.print(" "); count++; } System.out.print(" "); continue; } if(1<day&&day<10){ if(dayOfWeeks[0].equals(String.valueOf(LocalDate.of(year, month, day).getDayOfWeek()))){ System.out.println(); } System.out.print(" "+day); }else{ if(dayOfWeeks[0].equals(String.valueOf(LocalDate.of(year, month, day).getDayOfWeek()))){ System.out.println(); } System.out.print(day); } System.out.print(" "); //요일마다 한 칸 공백 } } } 달력문제 코드로 직접 구현해봤고, 답은 잘 나오는데 너무 뭔가 코드가 깔끔하지 않고, 지저분한 거 같은데, 별로같나요? 갈길이 먼거 같네요. 이런 상황에서 어떻게 스스로 리팩토링 하나요..? 강의는 날짜/시간 클래스 여기까지 배워서 뭐 스스로 리팩토링 하는 방법도 모르겠는데 그냥 진도 쭉쭉 나가면서 공부하다보면 자연스레 깨닫게 될까요? 뭐 지금 날짜/시간 연습문제 포함, 기초편부터 현재 진도까지 모든 연습문제를 답지 안보고 스스로 1~3문제 빼곤 다 풀었는데, 코드가 지저분하고 시간이 좀 오래 걸린게 마음에 걸리긴 합니다. 서포터즈님들의 답변 궁금합니다..
-
미해결김영한의 실전 자바 - 기본편
교재 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.교재 판매는 없고, pdf파일 직접 프린팅 하는 것만 있는 거죠?
-
미해결김영한의 실전 자바 - 중급 1편
ChronoField질문
[질문 내용]여기에 질문 내용을 남겨주세요.이 사진 보면, LocalDateTime클래스에서 날짜와 시간만 정해준거뿐인데, ChronoField클래스에 언제 정보가 담겨서 저렇게 사용이 가능한건가요? 저런거까지 깊게 파고들기보다는 그냥 어떻게 사용하는지에 초점 잡아 공부하는게 나은거겠죠?
-
해결됨스프링 핵심 원리 - 기본편
configuration, bean 디버그 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.다른 파일들은 괜찮은데 @configuration, @bean을 작성한 파일과 메소드에 한해서 디버깅이 안됩니다...저렇게 재생 표시가 아니라 초록색 금지 표시가 뜨는데 어떻게 해결해야할까요?ㅠㅠ참고로 컴포넌트 스캔 쓰기 전부터 AppConfig 파일이 저래서 자동과 수동 중복 적용은 아닌 듯합니다...