묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨C개발자를 위한 최소한의 C++
문자열 필터 실습 코드 중 질문 드립니다.
안녕하세요. 강의 잘 보고 있습니다.실습 중 궁금한 것이 있어서 질문 남깁니다.CMyStringEx::onSetData 함수 내용입니다.void CMyStringEx::onSetData(const char*& param) { CMyString::onSetData(param); // 생략 if (param != nullptr) { if (strcmp(param, "멍멍이아들") == 0) { // delete [] param; param = "우리귀요미"; } } }param이 가리키고 있는 곳의 데이터가 "멍멍이아들" 문자열이면 "우리귀요미"라는 새 문자열이 담긴 주소로 바꿔주기 전에 기존 param이 가리키고 있는 곳을 delete 해줘야 메모리 누수가 발생하지 않을 것 같은데 맞나요? 만약 1번이 맞아서 delete를 한다면 CMyString::~CMyString() 소멸자가 호출될 때 문제가 발생할 것 같은데 이를 어떻게 해결하면 될까요?
-
해결됨김영한의 실전 자바 - 기본편
접근제어자
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]접근제어자를 공부하던 도중 Speaker 클래스 예제를 통해 변수에 privet를써러 외부 호출을 막는 경우를 보았습니다. 근데생성자에서 볼륨이 100보다 크게 만들어도사진과 같이 볼륨이 200이 되었습니다.이러한 경우 생성자 클래스안에이렇게 바꿔도 되는지? 아니면 다른 방법이 있는지 궁금합니다.
-
해결됨김영한의 실전 자바 - 기본편
코드위에 뜨는 글씨 없앨 수 있는 방법
강의에서 설명해주시는 영한쌤 화면에는 저기 보이는 '4 usages'글자가 안보이던데, 저는 코드를 작성할때 계속 뜨더라구요. 저걸 숨길려면 어떻게 설정해야할까요??
-
해결됨김영한의 실전 자바 - 기본편
this 코딩 스타일? 메서드 기능이 변경되는경우?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]void initMember(String nameParameter){ nameField = nameParameter;}이렇게 된 메서드가 기능의 오류가 있거나, 상급자의 명령으로 고치라고 해서 변경을 하였습니다. 근데 void initMember(String nameField){ this.nameField = nameField;}이런식으로 바꿔야 하는 상황이 생겼습니다.그럴 경우 어떻게 처리해야하는지 궁금합니다.this 라는 코딩스타일이 있다고 하였고 ide가 발달해서 안쓴다고 하였는데 메서드의 내에서 오류가 발생하거나 고치는 경우 흔하지는 않겠지만 이런식으로 바뀔수가 있을수도 있을것 같아서 질문을 드립니다.이런 경우로 바뀌는 경우가 있는지 만약에 이렇게 한다면 코드를 재수정해야는지 아니면 오래된 this.코딩 스타일이 나은지 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
인스턴스 생성에 대한 질문
User 클래스를 만들었고 ShoppingCart2에서 User클래스를 활용하기 위해서 user1이라는 인스턴스를 생성하였습니다. 그리고 User클래스에 있는 메서드를 활용하기 위해서 user1.을 하니 메서드가 나타나지 않았습니다.그 이유가 무엇때문인지 알 수 있을까요?(메인 메서드에서는 정상적으로 나타났습니다)
-
해결됨스프링 핵심 원리 - 기본편
@Configuration과 바이트코드 조작의 마법에 대해서 궁금한점이 있습니다.
현재 스프링 심화편을 다듣고나서 기본편 재복습을 하고있는데 @Test void configurationDeep() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); //AppConfig도 스프링 빈으로 등록된다. AppConfig bean = ac.getBean(AppConfig.class); System.out.println("bean = " + bean.getClass()); //출력: bean = class hello.core.AppConfig$$EnhancerBySpringCGLIB$$bd479d70 }CGLIB객체로 호출이 된다고하셨는데 그러면 스프링 빈으로 등록되는 객체들은 무조곤 프록시 객체로 생성된다는 말씀이실까요?
-
미해결스프링 핵심 원리 - 기본편
BeanDefinition에 대해서 궁금한점이 있습니다.
AnnotationConfigApplicationContext의 경우 생성자로 들어온 파라미터의 값을AnnotatedBeanDefinitionReader로 읽은뒤 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);AnnotationConfigApplicationContext은BeanDefinition에 대한 구현체를 주입받아서 사용한다라고 이해하면될까요?
-
미해결스프링 핵심 원리 - 기본편
결론적으로 DI를 관리하는 것은 AppConfig에서 하나요?
@Component 애노테이션을 사용하여 스프링 빈에 자동으로 클래스를 등록하고, 각 스프링 빈 간의 의존관계를 주입하는 방법에 대해 이해했습니다.의존관계 주입의 목적이, SOLID원칙에서 특히 DIP원칙을 위반하지 않기 위함이라고 생각됩니다. 추상화에 의존하고, 클라이언트 코드의 변경을 줄이기 위함입니다.그렇다면 실제 런타임에서 인스턴스(구현체)간의 의존 관계를 주입해주는 로직은 AppConfig에서 진행되는 건가요?@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new FixDiscountPolicy(); } }위 코드는 기존에 사용하던 AppConfig클래스입니다. 여기서는 @Bean을 사용하여 수동으로 빈 등록을 해주므로 충돌이 존재할 것이라 무언가 수정이 필요하다고 생각되고 @Bean만 제거한 코드를 사용하면 되나요?생성자 주입을 통해 DI를 하는 것은 이해가 되었으나, AppConfig처럼 하나의 파일에서 런타임에 사용 될 의존관계를 정하는 코드가 궁금합니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanner 파트에서 ScannerWhileEx3 변수 할당 관련
안녕하세요. 처음에int input = 0;여기서 변수를 선언하고 0으로 할당까지 했는데왜 input = scanner.nextInt(); 으로 다시 할당하는지 궁금합니다. 다시 할당하는 이유가 따로 있는 건가요?할당을 두 번씩 해도 괜찮은 건가요? 이미 비어있던 공간에 0이 들어가 있는데.. 코드가 잘 돌아가는거 보면 괜찮은거 같긴 한데 이해가 잘 안됩니다. int input = 0;을 지우고int input = scanner.nextInt(); 로 코드를 수정한 것도 잘 돌아가긴 하구요. java로 코딩 처음 배우는 왕왕초보입니다.왕초보 기준으로 설명해 주실 수 있을까요??ㅜㅜ
-
해결됨스프링 핵심 원리 - 기본편
@Autowired 필드명 매칭과 DIP
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]기존에 조회 빈이 두 개 이상일 때 구체 타입을 명시해서 주입받는 것으로 해결하는 것은 DIP를 위반해서 좋은 방법이 아니라고 설명해주셨는데 필드명 매칭도 결국 구체 타입에 의존(필드명=구체타입 이므로)하기 때문에 결국 DIP를 위반한 것으로 볼 수 있지 않을까요?
-
미해결김영한의 실전 자바 - 기본편
static method의 저장 위치에 관한 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]자바 메모리 구조에 관한 질문입니다!static method는 method 영역의 static 영역에서 static 변수와 함께 관리되나요?그게 아니라면, class 영역에서 instance method와 함께 관리되는 것인지 궁금합니다.
-
해결됨C개발자를 위한 최소한의 C++
접근제어와 관련한 질문입니다.
안녕하세요! 새해 복많이 받으십시오. 접근제어와 관련하여 강의내용 복습하며 생각해보다가 궁금한 점이 있어서 질문 남깁니다. C언어 클래스에서 private영역에 대해 접근제어에 대해직접 부르는 것만 막는 것인지클래스에 대한 포인터를 통해 접근제어까지 막는 것인지또는 메모리상의 주소를 알아내서 포인터로 변수로 직접 접근하는 경우(...)이 다음 디스포인터영상에서 였나 2번까지는 막고 있는 것을 보여주셨던 것이 기억나는데,3번은 과연 뚫리지 않을까... 생각이 들어서 그렇습니다. 진짜로 묻고 싶은 이유는,사실은 접근제어 라는 게 C++ 프로그래밍 문법상의 규칙으로 컴파일 타임에서 관리할 뿐, '런타임에서는 (C++에서 정해졌었던 문법이고 뭐고;)이걸 죄다 걸러내고 남은 기계어로만 돌아간다' 라고 이해해도 되는가 입니다.(CS지식이 일천한 상태에서 드리는 뇌피셜이라...^^;) 감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
단축키 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]선생님께서 알려주신 단축키들이 모두 유용해서 잘 사용하고 있습니다만 잘 되던 단축키가 안 될 때가 있습니다 ㅠ_ㅠCtrl + Shift + F10 누르면 실행이 되어야 하는데잘~ 되다가 갑자기 안 되고 윈도우 관련 치트키가 눌리는 것 같습니다.잘 되다가도 뭐가 꼬이는 건지 한 번 안 되기 시작하면 계속 안 되는데 잘 쓰던 단축키가 안 되니 좀 답답합니다ㅠㅠ제가 뭔가를 잘 못 누르는 걸까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바란? 7분 컴파일, 디컴파일 질문있습니다
강사님께서 out 폴더에서 디컴파일된 결과를 보여주시고 그 다음에 컴파일 결과인(?) bytecode를 보여주셨는데 이 bytecode는 어디서 확인할 수 있는지 알 수 있을까요 ???
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션2 변수초기화 질문드립니다 (7분경)
변수를 초기화할 때, int a; 라고 하면 a가 메모리상 어딘가에 할당이 되어야하고, 여기에 어떤 값이 들어가있을지 모른다고 하셨는데... 그러면 모든 메모리는 꽉차있는 상태에서(?) 작업을 할 때 덮어 씌워지는 형태로 할당이 진행되나요 ?? 메모리에 올라가있는 값을 왜 안빼는지도 궁금합니다. 값을 삭제해주지 않으면 더 많은 메모리를 사용해야할 때 빈공간이 어딘지 몰라서 어렵지 않을까요 ??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
productAdminEx문제를 if문 대신 switch로 풀어보았습니다.
작동은 잘 되는것 같은데 틀린부분이 있으면 피드백 부탁드려도 될까요?개인적으로 break나 continue사용에 부족한 부분이 있을 것 같습니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx7 문제를 풀었는데 정답과 코드가 다릅니다.
이렇게 풀었는데 결과는 똑같이 나옵니다! 비교해보니 국어,영어,수학 열 부분을 또 하나의 배열로 만들어서 반복문 처리한 것에 차이점이 있는 것 같은데 정답코드가 더 간결하다는 것만 차이가 있는 것 이겠죠??
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
protected, private 필드들의 getter...
선생님, 안녕하세요 10강 코틀린 상속 편 보다가 질문 드립니다.예제로 아래 JavaAnimail 클래스를 주셨고,public abstract class JavaAnimal { protected final String species; protected final int legCount; public JavaAnimal(String species, int legCount) { this.species = species; this.legCount = legCount; } abstract public void move(); public String getSpecies() { return species; } public int getLegCount() { return legCount; } }이와 동일한 코드로 아래 코틀린으로 변환했는데요,package com.lannstark.lec10; abstract class Animal( protected val species: String, protected val legCount: Int, ) { abstract fun move() } 위의 자바 코드는 getter들이 public 으로 열려있어서 외부에서 인스턴스 생성 시 cat.getSpecies(), cat.getLegCount()등이 호출되나, 아래 코틀린에서 자동생성되는 getter의 경우 protected로 cat.species, cat.legCount 에 대해 가시성이 없습니다. 그러면...클래스의 필드를 public으로 다 열고 a. val 는 더 이상 해줄 수 있는 것이 없음(어차피 생성자 초기화만 가능)class Animal2(val species: String, val legCount: Int)b. var는 private setter을 둔다.class Animal3(species: String, legCount: Int) { var species = species private set var legCount = legCount private set } 필드를 protected, private 으로 두고 별도의 public getter를 내부에 다시 만든다..(getter만 열 수도 없고, public으로 override도 안 되는 것 같습니다..!)class Animal4(species: String, legCount: Int) { private val species = species public get // ❌Getter visibilty 는 필드와 일치해야 함 override public get // ❌'override' is not applicable to 'getter' private val legCount = legCount fun getSpecies() = this.species; fun getLegCount() = this.legCount; } 😔...흠 어떻게 하는게 맞을까요.jpa 엔티티에서의 사용까지 생각하면 1-b가 가장 나을까요? 엔티티 필드들은 거의 var이기도 할테고요...자바에서 사용하는 스타일로 마음이 가장 안심(?)인 건 2번인데, 이렇게 하면 코틀린의 코드 간결성과 편리함을 엔티티 내부에서는 거의 사용하지 못하는 것 같아서 그나마 코틀린스럽게 코드를 사용할 수 있는 옵션이 1-b 인 것 같다고 생각했는데요...더 좋은 방법이 있는지... 어떻게 하는 것이 best practice인지, 또 선생님은 실무에서 어떻게 하시는지 궁금합니다!!
-
해결됨김영한의 실전 자바 - 기본편
추상 클래스 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]추상 클래스 1편 강의를 듣다가 배열과 for문을 이용했던게 생각나서 한 번 해봤는데 오류가 나지 않고 실행이 잘 되더라고요근데 추상클래스는 생성하면 안 된다고 말씀하셨는데 여기서 오류가 일어나지 않는 이유는 무엇인가요?? 궁금합니다
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
클로저 스코프와 블록 스코프 질문드립니다.
const test1 = () => { let count = 0; const inner = () => { console.log(count); // closure }; inner(); }; test1(); const test2 = (initialValue = 0) => { let count = initialValue; const inner = () => { console.log(count); // block }; inner(); }; test2();test1의 inner에서는 count가 클로저 스코프를 갖는데, test2의 inner에서는 블록 스코프를 갖는 이유가 뭔가요?