inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

Animator오류

해결됨

[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스

안녕하세요 똑같이 다 수정했는데 공격 애니가 실하지않고 사진처럼 저 오류 가나옵니다 뭐가 잘못되고있는건가요 선생님

  • C#
  • unity
  • 게임기획
  • multiplayer
  • game-programming
anhyeokjun 댓글 2 좋아요 0 조회수 215

Selct에 대해서 질문드립니다.

해결됨

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

안녕하세요 강사님 궁금한게 있어서 질문 드립니다. 제가 구현하고 싶은 부분은 리그오브 레전드의 스마트키 기능과 같은 부분입니다. 제가 이해한 것이 맞다면 강의 안에서는 Select로 비동기적 처리를 할 때 추가 입력을 고정된 입력값(마우스 클릭)을 받아서 Select의 비동기적 처리를 구현한것으로 이해했습니다. 만약 제가 롤의 SmartKey 기능과 같은 눌렀다가 키를 뗄때(스킬이 등록된 키마다 받아야할 입력이 달라짐)의 입력으로 비동기적 처리를 구현하고 싶다면 어떤식으로 구현해야 할까요? 제가 고민해본 방법은 다음과 같습니다. Skill에 ReleaseInput()이라는 함수를 만든다. 그리고 TargetSelectionAction에 똑같은 이름의 ReleaseInput() 함수를 만든다. ReleaseInput() 함수는 SkillSlot의 바인딩된 키 값을 기준으로 키를 뗄 때 호출된다. Skill의 RealeseInput()호출되면 Skill -> TargetSearch -> TargetSelectionAction 의 순서로 TargetSelection에 접근하여 TargetSelection의 추가로 만든 releaseInput()함수를 호출한다. TargetSelectionAction에 releaseInputOccur이벤트를 만들고 ReleaseInput()함수로 이 이벤트를 Invoke해준다. "키를 뗌" 액션을 Select의 비동기 방식에서 추가 입력값으로 이용하고 싶다면 releaseInputOccur이벤트에 추가적인 함수를 구독하여 기능을 구현한다. 이런 식으로 생각해봤는데. 제가 아직 이 TargetSearcher 시스템에 이해도가 부족해서, 구현해주신 TargetSearcher 의 흐름을 망치지 않고 추가 기능을 만든 것 인지 아직 헷갈립니다. 그래서 강사님께서 SmartKey방식을 구현하신다면 어떤 방식으로 구현하실지 궁금해서 여쭤봅니다.

  • unity
  • modules
최성호 댓글 2 좋아요 0 조회수 226

closed 사용하는 이유

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

NormalCloseServer 할때 close()가 여러번 호출돼도 예방하는 코드가 있다고 했습니다. 그러면 V6SessionV6에서 closeAll() 하기전에 closed를 확인 안해도 되지 않나요?

  • java
  • 네트워크
  • 객체지향
tjrans303 댓글 2 좋아요 0 조회수 213

강의 자료 그림

미해결

김영한의 실전 자바 - 중급 1편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 ~! 강의 자료에서 처럼 이런 자료들을 draw.io에서 만든다는 정보는 찾았는데요 ! 그 내부에서 어떤 템플릿을 사용하시는지 궁금합니다..! 몇 시간 동안 여러가지 클릭 해봤는데 못 찾아서요 ㅠㅠ 크래파스로 그은듯한 네모와 점선으로 연결된 화살표, dot 네모박스가 궁금합니다 !

  • java
  • 객체지향
강리눅스 댓글 1 좋아요 0 조회수 146

h2 데이터 베이스 버전 오류

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

지금 현재 2가지 문제가 있는데 해결할 수있을까요? 해결방법을 알고 싶습니다 ㅠㅠ

  • java
  • jpa
주현 댓글 2 좋아요 0 조회수 289

강의 완료 시기

미해결

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

강의 완료시기가 언제쯤인지 알 수 있을까요?

  • C#
  • unity
  • MMORPG
ljy2256 댓글 1 좋아요 0 조회수 331

구조체 강의 4:31 질문있습니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

myCar.model[i] = '\0'; 은 세줄 위의 for에 영향을 받는 것 인가요?? 바로 위 } 에서 for문이 종료됐다고 생각했는데 myCar.model[i] = '\0'; 가 [i]에는 어떤 숫자를 넣어야할지 이해가 되지 않습니다

  • python
  • java
  • c
  • 정보처리기사
kku1804 댓글 2 좋아요 1 조회수 174

LettureLockStockFacadeTest에서 오류가 발생합니다.

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

package com.example.stock.repository; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.time.Duration; @Component public class RedisLockRepository { private RedisTemplate<String, String> redisTemplate; public RedisLockRepository(RedisTemplate<String, String> redisTemplate) { this.redisTemplate = redisTemplate; } public Boolean lock(Long key) { return redisTemplate .opsForValue() .setIfAbsent(generateKey(key), "lock", Duration.ofMillis(3_000)); } public void unlock(Long key) { redisTemplate.delete(generateKey(key)); } private String generateKey(Long key) { return key.toString(); } } package com.example.stock.facade; import com.example.stock.repository.RedisLockRepository; import com.example.stock.service.StockService; import org.springframework.stereotype.Component; @Component public class LettuceLockStockFacade { private final RedisLockRepository redisLockRepository; private final StockService stockService; public LettuceLockStockFacade(RedisLockRepository redisLockRepository, StockService stockService) { this.redisLockRepository = redisLockRepository; this.stockService = stockService; } public void decrease(Long key, Long quantity) throws InterruptedException { while(!redisLockRepository.lock(key)){ Thread.sleep(100); } try{ stockService.decrease(key, quantity); }finally { redisLockRepository.unlock(key); } } } package com.example.stock.facade; import com.example.stock.domain.Stock; import com.example.stock.repository.StockRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class LettuceLockStockFacadeTest { @Autowired private LettuceLockStockFacade lettuceLockStockFacade; @Autowired private StockRepository stockRepository; @BeforeEach public void before(){ stockRepository.saveAndFlush(new Stock(1L, 100L)); } @AfterEach public void after(){ stockRepository.deleteAll(); } @Test public void 동시에_100개의_요청() throws InterruptedException { int threadCount = 100; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for(int i = 0; i < threadCount; i++){ executorService.submit(() -> { try{ lettuceLockStockFacade.decrease(1L, 1L); } catch (InterruptedException e) { throw new RuntimeException(e); } finally { latch.countDown(); } }); } latch.await(); Stock stock = stockRepository.findById(1L).orElseThrow(); assertEquals(0, stock.getQuantity()); } } 이렇게 코딩했고 dockre에 redis를 설치하고 window Shell에서 데이터가 남아 있을까봐 1번 key 값을 삭제해서 돌렸는데도 오류가 발생했습니다. 또한 레디스가 실행이 되지 않은 채 했을까봐 ping을 입력했는데 pong이라는 응답을 받았습니다. Hibernate: drop table if exists stock 2024-11-03T22:08:40.414+09:00 DEBUG 17108 --- [ Test worker] org.hibernate.SQL : create table stock (id bigint not null auto_increment, product_id bigint, quantity bigint, version bigint, primary key (id)) engine=InnoDB Hibernate: create table stock (id bigint not null auto_increment, product_id bigint, quantity bigint, version bigint, primary key (id)) engine=InnoDB 2024-11-03T22:08:40.439+09:00 INFO 17108 --- [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2024-11-03T22:08:41.136+09:00 INFO 17108 --- [ Test worker] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. 2024-11-03T22:08:42.092+09:00 WARN 17108 --- [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2024-11-03T22:08:42.990+09:00 INFO 17108 --- [ Test worker] c.e.s.facade.LettuceLockStockFacadeTest : Started LettuceLockStockFacadeTest in 6.21 seconds (process running for 7.345) 2024-11-03T22:08:43.504+09:00 DEBUG 17108 --- [ Test worker] org.hibernate.SQL : insert into stock (product_id,quantity,version) values (?,?,?) Hibernate: insert into stock (product_id,quantity,version) values (?,?,?) 2024-11-03T22:08:44.203+09:00 DEBUG 17108 --- [ Test worker] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity,s1_0.version from stock s1_0 where s1_0.id=? Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity,s1_0.version from stock s1_0 where s1_0.id=? 2024-11-03T22:08:44.245+09:00 DEBUG 17108 --- [ Test worker] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity,s1_0.version from stock s1_0 Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity,s1_0.version from stock s1_0 2024-11-03T22:08:44.252+09:00 DEBUG 17108 --- [ Test worker] org.hibernate.SQL : delete from stock where id=? and version=? Hibernate: delete from stock where id=? and version=? Expected :0 Actual :100 <Click to see difference> org.opentest4j.AssertionFailedError: expected: <0> but was: <100> at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:639) at com.example.stock.facade.LettuceLockStockFacadeTest.동시에_100개의_요청(LettuceLockStockFacadeTest.java:55) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 어디를 더 수정해야 하는지 모르겠습니다..

  • java
  • spring
  • 동시성
소리쨩 댓글 2 좋아요 1 조회수 298

네트워크 오브젝트 설정

해결됨

[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요 안녕하세요 선생님 Hero에게 network Object 넣었을때 hash값이 저는 0이고 선생님은 다르네요 그래서 Default network Prefabs 에 자동으로 추가되지않아서 플러스 버튼 눌러서 추가하면 정상 작동되긴하나 선생님이랑 방법이 틀려서 찝찝합니다 뭐를 실수하고있는건가요

  • C#
  • unity
  • 게임기획
  • multiplayer
  • game-programming
anhyeokjun 댓글 3 좋아요 0 조회수 187

stack구조관련질문

미해결

김영한의 실전 자바 - 중급 2편

package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } public void pop(){ System.out.println(history.pop()); } } 문제와풀이3 -stack시간 수업에관한 질문입니다 stack구조의 경우 마지막에 넣은 입력이 pop()을 하면 나오는데 이경우는 마지막 전에 입력한것이 나옵니다 이유가뭘까요??

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
DG Y 댓글 2 좋아요 0 조회수 80

컬렉션프레임워크 Stack 관련질문

미해결

김영한의 실전 자바 - 중급 2편

package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } } ////////////////////// package collection.deque.test.stack; public class BrowserHistoryTest { public static void main(String[] args) { BrowserHistory browser = new BrowserHistory(); // 사용자가 웹페이지를 방문하는 시나리오 browser.visitPage("youtube.com"); browser.visitPage("google.com"); browser.visitPage("facebook.com"); // 뒤로 가기 기능을 사용하는 시나리오 String currentPage1 = browser.goBack(); System.out.println("currentPage1 = " + currentPage1); String currentPage2 = browser.goBack(); System.out.println("currentPage2 = " + currentPage2); System.out.println(browser); } } 위의 goBack 메서드 실행코드가 Pop()인데 currentPage1 에서 facebook이 출력이되지않고 google이 출력되는 이유가 궁금합니다 스택구조는 마지막에 입력한것이 나오게 되어있는데 그 전에 입력한것이 왜 나오는 이유가 궁금합니다

  • java
  • 객체지향
  • 코딩-테스트
DG Y 댓글 1 좋아요 0 조회수 56

NoSQL의 PlatformTransactionManager adapter 는 없는건가요?

미해결

토비의 스프링 6 - 이해와 원리

안녕하세요. 우선 토비님의 강의 너무 잘 듣고 있습니다. 강의 제작해주셔서 무한 감사드려요. Transaction manager 추상화 부분 강의를 들으면서 NoSQL의 트랜잭션을 지원하는 어댑터는 없는건가 궁금해서 질문드립니다. 감사합니다.

  • java
  • spring
gslee100 댓글 2 좋아요 0 조회수 246

BlockingQueue의 offer, poll 질문 드립니다.

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

안녕하세요! 너무 알찬강의 잘 듣고 있습니다! 강의에서 BlockingQueue의 offer와 poll은 일정시간만큼 대기하신다고 하셨는데요, 이때 이들이 기다리는 영역은 어디가 되는건가요..? ReentrantLock을 획득하기 위한 대기 wait()을 위한 대기 아니면 그 어느것도 상관없이 항상 대기 Queue가 된 후 2초인걸까요?! 그리고 만약 어떤 상황이든 2초만을 기다리고 종료시키는 방법이라면, Lock을 획득하고, 생산자나 소비자가 무언가 데이터를 처리하는 과정에서 2초가 지났을 때 이 작업을 강제 종료해 버리면 동일하게 동시성 문제가 발생할 수 있지 않을까요? (실제 처리하지 않았지만 실패로 결과가 나타난다던가..)

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
FWoody 댓글 2 좋아요 0 조회수 195

싱글턴 적용된 클래스가 현재 씬을 재로드하면 이상해요

해결됨

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

싱글턴이 적용된 클래스는 사라지지 않고 또 한 개만 존재해야 할 텐데 가끔식 씬을 재로드시 한 개가 더 생깁니다

  • C#
  • unity
  • 객체지향
moonfgg 댓글 2 좋아요 0 조회수 186

Executor 스레드 풀 관리 - 분석 에서 BlockingQueue

해결됨

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 쓰레드 풀 core사이즈와 max사이즈가 어떻게 관리 되는지는 어느정도 이해한 것 같은데, 이 예제에서 BlockingQueue안에서 쓰레드들이 스레드 대기 집합, 락 대기 집합에 어떻게 관리되는 것 까지 이해해보려고 하니 매우 어렵네요.. ai야 도와줘~!

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
ssshhh 댓글 1 좋아요 0 조회수 187

플레이에는 문제가 없는데 빌드에서 문제가 계속해서 발생하네요.

미해결

유니티 2D 로그라이크 게임 만들기 [한글자막]

Android 플랫폼에서 빌드하려고 하는데 아무리 해도 해결이 안되는 오류가 발생하네요. Building Library/Bee/artifacts/Android/d8kzr/ libil2cpp.so failed with output: ld.lld: error: undefined symbol: JS_FileSystem_Sync >>> referenced by Assembly-CSharp.cpp:14373 (Library/Bee/artifacts/Android/il2cppOutput/cpp/Assembly-CSharp.cpp:14373) >>> Library/Bee/artifacts/Android/d8kzr/gqh0me0k2d9s.o:(GameManager_JS_FileSystem_Sync_m246A574BB47ADA18D3D17EE297B47F03B281F5C3) >>> referenced by Assembly-CSharp.cpp:16220 (Library/Bee/artifacts/Android/il2cppOutput/cpp/Assembly-CSharp.cpp:16220) >>> Library/Bee/artifacts/Android/d8kzr/gqh0me0k2d9s.o:(MainMenu_JS_FileSystem_Sync_m6882592881D0992397C77FED445CBB536B836232) clang++: error: linker command failed with exit code 1 (use -v to see invocation) UnityEditor.BuildPlayerWindow:BuildPlayerAndRun () (at /Users/bokken/build/output/unity/unity/Editor/Mono/BuildPlayerWindow.cs:200) Chatgpt 한테 물어보고 제시한 해결책 전부 다 해봤는데도 안됩니다. 부탁드립니다 - 빈 프로젝트에 파일 추가하면서 해봤는데 그 곳에서는 빌드가 잘됌 - WebGL 관련 함수 사용 안함 - Library 지우고 다시 해봤음 - Android SDK & NDK Tools 있음

  • unity
이경구 댓글 1 좋아요 0 조회수 425

LocalDateTime.now() 관련해서 질문있습니다

해결됨

김영한의 실전 자바 - 중급 1편

LocalDateTime.now()로 현재 시간을 출력하면 소수점 아래 단위는 9자리(ns)까지 출력이 됐습니다. 근데 Windows에서 시스템 시계(?) 클럭(?)의 정밀도는 ms까지 보장한다고 알고 있는데 LocalDateTime.now()의 정밀도는 ns(소수점 아래 9자리)까지 보장하나요 ms(소수점 아래 3자리)까지 보장하나요??

  • java
  • 객체지향
댓글 1 좋아요 1 조회수 250

[오류 검토 요청]

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 1 : 절차적 프로그래밍

변수와 주석문 - 3. 주석문 04:57 Ctrl + /

  • java
한백년 댓글 2 좋아요 0 조회수 260

스택 영역과 힙 영역 강의 내용 중 질문이 있습니다~

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. package memory; public class JavaMemoryMain2 { public static void main(String[] args) { System. out .println("main start"); method1 (); System. out .println("main end"); } static void method1() { System. out .println("method1 start"); Data data1 = new Data(10); method2 (data1); System. out .println("method1 end"); } static void method2(Data data2) { System. out .println("method2 start"); System. out .println("data.value=" + data2.getValue()); System. out .println("method2 end"); } } 다음과 같은 코드로 자바 프로그램을 1번 실행했다가 종료하면, 강의 내용에선 x001(예를 들어서) 참조값을 가진 Data 인스턴스를 참조하는 곳이 더이상 없기에 GC의 제거 대상이 된다고 하셨는데요, 그렇다면 어떤 자바 프로그램이든 한 번 실행했다가 종료된 직후에는 자바 메모리 힙 영역에 한 번 실행될 때 사용했던 객체들이 남아있게 되고 전부 참조하는 곳이 더 이상 없기에 전부 GC의 제거 대상이 된다고 생각하면 될까요? 마치 콘서트 한 번 진행하고 나서 발생한 쓰레기들을 청소한다고 생각하면 될지 궁금해서 여쭤봅니다~

  • java
  • 객체지향
ajdsasld 댓글 1 좋아요 0 조회수 174

비즈니스 로직 담당 서비스

해결됨

서버개발자 과제전형 완벽가이드 - 1편

비즈니스 로직만을 담당하는 BookApplicationService 를 두는게 새롭고 좋은 구조 아닐까 생각이 들어서 제 생각이 맞는지 궁금해서 여쭙습니다. Query 이름의 서비스는 조회만을 Command 는 등록, 수정, 삭제 담당하는 것이고 또한 이런 서비스 구조가 순환참조 발생 가능성도 줄일 수 있겠죠? p.s 강의 잘 듣고 있습니다. 처음 겪어보는 내용들이 많아서 재밌고 배울게 많네요. 강의 빨리 더 내주십시오.

  • java
  • spring
  • spring-boot
  • database
아라레 댓글 2 좋아요 0 조회수 238

인기 태그

인프런 TOP Writers

주간 인기글