묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
컴파일과 빌드에 대해 질문있습니다.
안녕하세요. 앞에 있는 컴파일러 강좌를 다시 듣고와도 잘 모르겠는 부분이 있어서 질문 드립니다. 소스파일 하나당 obj파일이 하나 만들어지니까 함수의 본체를 없앤 소스코드를 빌드 할 때도 obj파일이 하나, 함수의 본체가 제대로 있는 소스 코드를 빌드 할 때도 obj 파일이 하나 만들어지잖아요. 이 때 본체를 없앤 소스코드를 빌드할 때 링킹 단계에서 오류가 난다는 건 obj 파일에 본체가 없다는 걸 링킹 단계에서 안다는 걸로 이해하는 게 맞을까요? 그러니까 링킹 단계에서 쓰여진 함수들의 참조를 가져오려고 라이브러리 파일도 가져오고 하는데 여기서는 print_multiple_chars라는 함수의 참조를 가져올 수 없어서 오류가 발생한다고 이해하는 게 맞을까요? 그러면 컴파일 할 때는 로직만 보고 신경안쓰고 obj파일을 만들었더라도 함수의 본체가 제대로 있는 소스코드를 빌드할 때 본체가 다른 obj파일에 있는 게 아니라 컴파일 할 때 만들어진 obj파일에 있는 게 맞는 거죠? 읽어주셔서 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@ManyToOne 어노테이션이 정확히 어떤 의미인지 알려주세요!
안녕하세요! 항상 좋은 답변 감사드립니다. 강의를 복습하다가, 헷갈리는 부분이 있어 여쭤보고자 글을 작성했습니다. @Entitypublic class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USER_NAME") private String userName; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; 위와 같은 코드가 있습니다. 위 코드에서 @ManyToOne의 역할이 너무너무 헷갈려서 문의드리게 되었습니다. @ManyToOne은 아래 내용 중 어떤 것에 해당하는 것인지 알려주실 수 있으실까요? 1. DB 테이블에서 MEMBER와 TEAM의 관계가 다대일인 것을 명시해준 것이다. 2. MEMBER 객체와 TEAM 객체가 MEMBER 기준으로 다대일 관계인 것을 명시해준 것이다. 제 개인적인 생각으로는 1번일 가능성이 더 높은 것 같습니다만... 정확한 내용이 찾아봐도 잘 나오지 않아... 알려주시면 너무 감사드리겠습니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 관련 질문이 있습니다.
안녕하세요. 항상 좋은 답변해주셔서 감사합니다! 오늘 또 질문이 있어 이렇게 글을 작성하게 되었습니다. 영한님 강의에서 프록시 엔티티 관련 궁금한 것이 있습니다! 프록시 엔티티를 em.getReference()로 가져온다면, 이 프록시 인스턴스도 영속화되었다고 보면 될까요? 초기화되면, 실제 엔티티도 영속화 되는데 영속화 된 프록시 엔티티 안에 있는 필드 참조에 실제 영속화된 엔티티가 연결되는 형태로... 이해를 하면 될까요?! 항상 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Test(expected = IllegalStateException.class)가 제대로 동작하지 않는 경우에 대한 질문입니다
@Test(expected = IllegalStateException.class)public void 중복_회원_예외() throws Exception { Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); memberService.join(member1); memberService.join(member2); fail("예외가 발생해야 한다.");} 위와 같이 작성하고 테스트 케이스를 실행시킨 경우에, pass 표시가 떠야하지만 java.lang.Exception: Unexpected exception, expected<java.lang.IllegalStateException> but was<org.springframework.dao.InvalidDataAccessApiUsageException> at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:30) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: 이미 존재하는 ID입니다.; nested exception is java.lang.IllegalStateException: 이미 존재하는 ID입니다. at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at icpbl2.module2.service.CustomerService$$EnhancerBySpringCGLIB$$582d39c5.join(<generated>) at icpbl2.module2.service.CustomerServiceTest.중복_회원_예외(CustomerServiceTest.java:44) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) ... 21 more Caused by: java.lang.IllegalStateException: 이미 존재하는 ID입니다. at icpbl2.module2.service.CustomerService.validateDuplicateCustomer(CustomerService.java:38) at icpbl2.module2.service.CustomerService.join(CustomerService.java:25) at icpbl2.module2.service.CustomerService$$FastClassBySpringCGLIB$$c9e25da.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 42 more 와 같은 오류메세지가 나오며 fail처리가 됩니다. 예외는 정상적으로 작동하는 것 같은데, (expected = IllegalStateException.class) 문구 및 직접 try catch 문구를 작성해도 저렇게 예외가 터집니다. 뭐가 문제일까요?
-
미해결청와대 청원 데이터 시각화
크롤링 질문입니다
국민청원 안에 각각의 페이지에 들어가 내용, 제목, 청원수 등을 가져오고 싶은데 이건 어떻게 코드를 짜야하나요
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
DaemonThread 문의
안녕하세요. 우선 좋은강의 감사드립니다. Multithreading - Thread(2)의 DaemonThread 관련, 제가 이해하기로는 parent thread가 끝나면, child thread도 바로 끝나버리는, 이 child thread를 DaemonThread로 이해했습니다. 그런데 코드를 아래처럼 작성하면, parent thread가 끝나도 (main thread all done 프린트됨), child thread가 살아있습니다. 왜그런건가요??? 제가 editor로 비주얼스튜디오가아니라 주피터를 쓰고있는데... 혹시 이것때문일까요??? 미리 답변 감사드립니다. [실행코드@주피터 셀] import threading def thread_func(d): for i in d: print(i) if __name__ == '__main__': x = threading.Thread(target=thread_func, args=(range(10),), daemon=True) x.start() print('main thread all done') [출력] 0 1 2 3 4 5 6 main thread all done7 8 9
-
미해결PHP 7+ 프로그래밍: 객체지향
getter setter 는 private proerty에만 적용되나요?
getter , setter, unset, isset magic method들은 property에 대해서만 작동하는데 private프로퍼티들에만 작동하나요? public으로했을떄 호출이 안되요
-
미해결스프링 핵심 원리 - 기본편
싱글톤 빈 요청에 대한 질문입니다.
안녕하세요 팀장님. 저는 신입 개발자입니다. 싱글톤 스코프 타입을 스프링컨테이너에 요청했을 때 컨테이너가 관리하는 빈을 반환한다고 들었습니다. 그렇다면 많은 요청이 왔을 때 빈을 쉬지 않고 계속 반환할 수 있나요? 또한, 빈을 반환하는일도 쓰레드가 하는 일인지 궁금합니다. 정말 감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
이런 방식으로 풀어도 괜찮을까요? function solution(c, arr){ let answer=Number.MIN_SAFE_INTEGER; let ch = Array.from({length:arr.length+1}, ()=>0); function dfs(v) { if(v === arr.length) { let arr1 = [] for(let i = 0; i < arr.length; i++) { if(ch[i]) arr1.push(arr[i]); } if(arr1.length > 0) { let arr1_sum = arr1.reduce((a,b)=>a+b); if(arr1_sum <= c) answer = Math.max(answer, arr1_sum); else return; } } else { ch[v] = 1; dfs(v+1); ch[v] = 0; dfs(v+1); } } dfs(0); return answer; } let arr=[81, 58, 42, 33, 61]; console.log(solution(259, arr));
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 XToOne관계 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요 강의 잘 듣고 있습니다. 수업 듣고 조금 더 변형해서 공부하고 있는데요, 하다가 궁금한 것이 생겨서 질문드립니다. 만약 현재 조회하려는 엔티티와 그 엔티티의 연관관계가 toOne관계라면 어떻게 조회해야 최적화가 될 수 있을까요? 그러니까 예로 Product라는 엔티티와 Seller라는 엔티티가 ManyToOne관계를 가지고 있는 경우(한명의 Seller가 여러 개의 Product를 쇼핑몰에 등록할 수 있다는 비즈니스 로직인 경우) 에도 패치 조인을 사용해야 하나요? 물론 김영한 님의 강의에도 이러한 연관관계를 조회하는 로직이 있었지만 그때는 ( 현재 제가 변형한 예시에서는) 모든 Product들을 조회하는 경우였고, 저는 하나의 findById()로 하나의 Product만을 조회하고 싶습니다. 하여 생각해 본 것이 아래와 같은 쿼리입니다. 그런데 위와 같은 쿼리를 사용하면 DBMS 내에서 Join이 먼저 되서 하나의 Product 조회를 위해 너무 지나치게 많은 join이 실행되는 것으로 아는데.. 쿼리는 한번 나가겠지만 너무 비효율적인 것이 아닌가 싶어서 잘 모르겠습니다. 긴 질문 읽어 주셔어 감사합니다!!!
-
미해결Klaytn 클레이튼 블록체인 어플리케이션 만들기 - 이론과 실습
NFT & Defi 강의?
메일 받고 댓글 남깁니다. NFT & Defi 강의 개설 희망합니다. 감사합니다
-
미해결스프링 시큐리티
sessionManagement()에 대해서 질문이 있습니다.
안녕하세요. 선생님 좋은 강의 만들어 주셔서 정말 잘듣고 있습니다. 제가 궁금한점은 하나의 브라우저에서 여러개의 계정으로 로그인 하고 싶어서 http.sessionManagement().maximumSessions(-1); 위와 같이 하였을때 하나의 브라우저에서 여러 계정에 접속을 했을 경우 접속은 가능하나 만들어 놓은 메뉴를 클릭하면 마지막으로 접속한 계정으로 변경되는데 각자 유지하기 위해 설정해줘야 하는 부분이 있을까요?
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
말한 대로 해도 동일한 에러 발생합니다.
MainMenu.vue에 axios.defaults.xsrfCookieName = "csrftoken"; axios.defaults.xsrfHeaderName = "X-CSRFToken"; api/views.py from django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import ensure_csrf_cookie ...@method_decorator(ensure_csrf_cookie, name='dispatch')class ApiLoginView(LoginView): 이와 같이 넣어도 로그인하면 Forbidden (CSRF cookie not set.)이라는 메시지와 함께 안되네요. 혹시 다른 방법은 없나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의와 별개로 질문 드립니다.
롤이나 배그 등등 온라인게임을 다운받을 때, 제가 설정한 경로에 다운로드 설치를 하고 폴더안에서 코드 편집기로 파일을 열면 똑같이 코드가 작성되있는것을 볼 수 잇나요?(열린다는 가정하에)
-
미해결Klaytn 클레이튼 블록체인 어플리케이션 만들기 - NFT
수강의사 있습니다.
메일받고 작성합니다. 폴리곤 상급자코스 수강 의사 있습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그인 시 DB token 정보 업데이트 관련 질문
안녕하세요. 학습중 궁금한 점이 생겨서 질문 남깁니다. /api/users/login에 POST 요청을 보내면 해당 로그인 요청 정보와 일치하는 정보가 DB 내에 있는지 여부를 판독해 로그인 성공/실패가 이루어지는 것까지는 알겠습니다. 그런데 login 요청을 보내기만 해도 DB 내에 token 정보가 업데이트되는 점이 이해가 되지 않습니다. 분명 /api/users/auth에 GET 요청을 보내야 DB 내의 token 정보를 업데이트하는 것으로 코드를 작성한 것 같은데 말이죠... login시 client의 cookie에 token을 저장하긴 했으나, DB에 token 정보를 업데이트하는 것은 /api/users/auth에 GET 요청을 보내야 이루어지는 것 같은데, 도대체 왜 login 요청을 보내기만 해도 DB 내의 token 정보가 업데이트되는 것인지 궁금합니다. 답변 부탁드립니다. 항상 좋은 강의 감사드립니다.
-
미해결(신규 강의로 재오픈 예정) 스스로 구축하는 AWS 클라우드 네트워크 - 기본편
route tables 관련문의
vpc>subnets>서브넷 선택 후 하단 Route table vpc>Route Tables>서브넷 선택 후 하단 Routes 의 차이는 무엇인가요? 혼동이 됩니다.
-
미해결Vue로 Nodebird SNS 만들기
질문드립니다
store action에서 다른 action들은 return 처리를 안해주시고loadFollowers, loadFollowings는 return 처리를 해주셨는데 이유가 궁금합니다. loadFollowers({ commit, state }, payload) { if (!(payload && payload.offset === 0) && !state.hasMoreFollower) { return; } let offset = state.followerList.length; if (payload && payload.offset === 0) { offset = 0; } return this.$axios.get(`/user/${state.me.id}/followers?limit=3&offset=${offset}`, { withCredentials: true, }) .then((res) => { commit('loadFollowers', { data: res.data, offset, }); }) .catch((err) => { console.error(err); }); }, loadFollowings({ commit, state }, payload) { if (!(payload && payload.offset === 0) && !state.hasMoreFollowing) { return; } let offset = state.followingList.length; if (payload && payload.offset === 0) { offset = 0; } return this.$axios.get(`/user/${state.me.id}/followings?limit=3&offset=${offset}`, { withCredentials: true, }) .then((res) => { commit('loadFollowings', { data: res.data, offset, }); }) .catch((err) => { console.error(err); }); }, 그리고 this.$axios 호출을 통해 응답받은 데이터를 vue component 단에 넘겨주고 싶을 때 vuex 에 저장해서vue component 단에서 store값을 가져와서 쓰는게 좋은 방법인가요??아님 그냥 응답 데이터를 return 해서 vue component 단에서 받아서 써도 상관없는건가요??답변기다리겠습니다! ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 11:00까지 이해한부분(조금 길어용)
현재 [Serializable] 필드 두개로 StatData, Stat을 Json파일과 형식을 똑같이 맞춰주는 부분이고 StatData는 ILoader<int, Stat>을 상속받는 아이여야 한다. 라는 부분이다. 현재 ILoader인터페이스를 상속받고있으니 Dictionary<Key, Value> MakeDict() 이부분을 반드시 구현해야한다. 그래서 StatData에서 public List<Stat> stats = new List<Stat>();으로 빈 List를 만들고 public Dictionary<int, Stat> MakeDict() 인터페이스를 구현을 하는 부분인데 { // 안에서 Dictionary<int ,Stat> dict = new Dictionary<int, Stat>(); int를 Key, Stat을 Value로 가지는 Dict 만들어주고 foreach를 통해서 dict의 Key값에는 stat.level을 value에는 stat을 dict.Add로 추가를 해주는 것을 구현을 하였다 } 그리고 DataManager class에서는 public Dictionary<int, Stat> StatDict { get; private set; } = new Dictionary<int, Stat>(); int를 Key로 Stat을 Value로 받는 Dict를 StatDict라고 선언을 했다 (근데 왜 얘만 { get; private set; }으로 한것인지?) 그리고 Loader타입을 반환하는 LoadJson함수를 만들었는데 LoadJson함수는 타입을<Loader, Key, Value>를 받고 인자로 string path 경로를 받게하였다. 근데 Loader라는 타입은 ILoader를 무조건 상속받는데 ILoader가 타입이 <Key, Value>인것 아무거나라도 괜찮은 Loader를 받는 다는 의미이다!! 이까지 코드분석은 된거같고 !!문제!!는 init()함수에서 int를 Key, Stat을 Value로 받는 StatDict인데 StatDict는 LoadJson에 타입을<StatData, int , Stat>을 받고 인자로는 "StatData"(경로)를 넣어주었다. 그러면 StatData LoadJson<StatData, int, Stat>("StatData") where StatData : ILoader<int, Stat> 함수를 호출하고 .MakeDict();를 한것이 StatDict에 할당이 된다는 뜻까지는 Okay! 그러면 호출 순서가 TextAsset textAsset = Managers.Resource.Load<TextAsset>("Data/StatData"); 먼저실행 textAsset에 경로를 넣어준 파일 할당 JsonUtility.FromJson<StatData>(textAsset.text);를 통해 StatData타입으로 textAsset.text를 파싱한것을 return 해준다. 그러면 LoadJson<StatData, int, Stat>("StatData")이부분까지는 위의 호출 순서대로 return을 해준것은 StatData 클래스 타입으로 textAsset.text를 파싱한것인데, StatData클래스는 ILodaer<int, Stat>을 상속받았기 때문에 MakeDict()라는 함수를 가지고있어서 StatDict = LoadJson<StatData, int, Stat>("StatData").MakeDict(); 가 가능한것이고 StatData의 MakeDict함수를 써주었기 때문에 결국에는 dict가 반환이 되는데 이것이 dict를 DataManager 39번째 줄에 선언을 해주었던 StatDict 딕셔너리에 할당을 해주는것이 된다. 1. 이렇게 정리하면서 공부했는데 위에 제가 혼자 정리한것이, 제가 이해한것이 맞나요?? 2. 이런식으로 코딩을 정리하는 습관이 유니티,씨샵을 공부하면서 효과적인 정리일까요?? 3. DataManager클래스 안에서 public Dictionary<int, Stat> StatDict { get; private set; } = new Dictionary<int, Stat>(); 이부분만 왜 { get; private set; }으로 만든것인가요? public Dictionary<int, Stat> StatDict = new Dictionary<int, Stat>(); 이렇게 선언한것이랑 차이가 무엇인가요?? 4. 함수나 딕셔너리에서 < > 안에 타입을 넣어주시는데 이것이 int, string 같은 변수의 진짜 타입을 넣어 줄 수도 있는것이고class형식이다라는 것도< > 안에 넣어 주어서 public void init() { StatDict = LoadJson<StatData, int, Stat>("StatData").MakeDict(); } 처럼 LoadJson<StatData, int, Stat>을 넣어 주었기때문에 StatData를 < > 안에 "class형식이다" 라고 넣어줘서 StatData안에 MakeDict함수를 .MakeDict()로 사용이 가능한것인가요?
-
해결됨코어 자바스크립트
메모리 주소에 대한 궁금증 & 값의 주소를 저장에 대한 궁금증
안녕하세요, 코어자바스크립트 책이랑 강의를 함께 잘 보고 있습니다. 감사합니다. 1. 메모리 주소에 관한 궁금증이 생겨 질문드립니다. (강의 1:48 초) 책에서 비트는 하나의 메모리 조각이고, 각 비트는 고유한 식별자를 통해서 위치를 확인 할 수 있다고 말씀해주셨습니다. 그렇다면 강의에서 메모리 주소를 1001, 1002 이렇게 표현하셨지만 실제 메모리의 주소는 각 비트가 갖고 있는 식별자가 주소인 건가요? 2. 값의 주소를 저장에 관한 질문입니다. (강의 14:12 초) 값의 주소를 저장 시 "데이터 할당시에는 느리다"는 의미가 값을 직접 저장하는 경우와 비교했을 때 값의 주소를 저장하는 방식이 1)데이터를 넣을 빈 공간을 찾고, 2)그 주소를 다시 변수의 값으로 넣는 과정이 더 필요하듯이 값을 직접 저장하는 것보다 더 많은 단계가 필요하기 때문에 느리다는 의미인걸까요?친절한 책과 강의 잘 보고 있습니다. 감사합니다 ;)