묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
testMember() 테스트 실행 시 entityManagerFactory 생성하는데 에러 발생했다고 나옵니다.
h2 설치하고 설정 후 테스트 코드 작성 부분에서 다음과 같은 문제가 발생합니다.애플리케이션을 실행해도 똑같은 에러가 발생합니다.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=jpabook.jpashop.Member]build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.1.3' id 'io.spring.dependency-management' version '1.1.3' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } } tasks.named('test') { useJUnitPlatform() } h2 접속 화면application.yml 파일spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: true logging.level: org.hibernate.orm.jdbc.bind: traceMember 클래스package jpabook.jpashop; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Getter @Setter @Entity public class Member { @Id @GeneratedValue private Long id; private String username; }
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
NoneType Error
F5번 실행시 터미널에 아래와 같은 에러가 뜹니다..클래스명 앞에 '.'을 붙이고 시도해도 같은 에러가 납니다 선생님 ㅠㅠAttributeError: 'NoneType' object has no attribute 'text' + print(word.text)에서 text 타입을 지우고print(word) 입력시 타입에러는 더이상 뜨지 않지만 값이 None으로 찍힙니다..ㅜㅜ ++ 광역시 홈페이지를 크롤링 해본 결과 광역시 홈페이지의 a 태그 안에 span 태그의 텍스트는값이 잘 나옵니다.네이버 구조가 값을 못받아오게 처리되어서크롤링이 안되는 걸까요? 파이썬 3.11.~ 버전입니다.
-
해결됨[Lv.1] iOS 17 앱 개발 기초 - SwiftUI로 시작하기
NavigationView를 NavigationStack 으로 변경관련입니다.
강의 잘 들었습니다.만드신 앱에서 NavigationView를 NavigationStack 으로 변경하는 방법을 알고 싶습니다.감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
코드자료 어디있나요? 매번 없네요.
이 강의에 불만이 한두개가 아닌 사람입니다.훈훈한 javaScript 타이머 만드는 부분 듣고있는데 제가 코드를 잘못 썼는지 작동이 안되는데요.코드를 비교해 보고싶어도 코드만 따로 올린게 없는 건지, 제가 못찾는건지 모르곘네요.만약 코드만 따로 올려놓은게 없다면 인강 처음부터 돌려보면서 하나하나 비교해야 하는건가요?심지어 html 코드자료 올려놓은거 복사해서 붙여넣었더니 class 이름이 강의랑 달라서 어이가 없었네요.자료좀 똑바로 올려주세요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Annotation Processors 설정
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]프로젝트를 새로 생성한 다음에 매번 Annotaion Processors를 체크 해주는걸로 알고있는데, 체크를 안해줘도 lombok 사용이나 코드가 실행되는데 문제가 없었던것 같습니다. 혹시 어떤 이유로 해당 기능을 체크해주는 건가요?
-
해결됨ElasticSearch Essential
로드밸런스 endpoint
검색 요청시 노드에 대해 직접적인 접근을 하지 않고강의 내용대로 로드밸러스를 통해 통신 할 수 있도록 하려 합니다. 한가지 궁금한점은 문석 색인/검색 요청시 로드밸러스의 endpoint에 대해 궁금합니다.<문서 색인>시에는 로드밸러스를 '데이터 노드'로만 접근하도록 하고<검색 요청>시에는 로드밸런서의 endpoint를 '코디네이팅 노드'에 접근하도록 설정하면 될까요?또,'데이터노드'도 색인 및 검색요청을 처리하는데,<검색 요청>시 로드밸런스를 통해 '데이터 노드, 코디네이팅 노드' 둘다에 접근하도록 해도 상관 없을까요?
-
미해결
유튜브 핀치 줌
유튜브 처럼 화면핀치 줌 인 아웃가능하게 안되나요핸드폰으로 강좌 시청 하고 싶습니다
-
해결됨파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
2.6 reindex 관련 예제 질문
아래의 에러가 발생했을 때 어떻게 진행해야 할지 모르겠습니다.df1과 df2의 실행이 안됩니다.--------------------------------------------------------------------------- KeyError Traceback (most recent call last) File ~\anaconda3\Lib\site-packages\pandas\core\computation\scope.py:198, in Scope.resolve(self, key, is_local) 197 if self.has_resolvers: --> 198 return self.resolvers[key] 200 # if we're here that means that we have no locals and we also have 201 # no resolvers File ~\anaconda3\Lib\collections\__init__.py:1004, in ChainMap.__getitem__(self, key) 1003 pass -> 1004 return self.__missing__(key) File ~\anaconda3\Lib\collections\__init__.py:996, in ChainMap.__missing__(self, key) 995 def __missing__(self, key): --> 996 raise KeyError(key) KeyError: 'Timestamp' During handling of the above exception, another exception occurred: KeyError Traceback (most recent call last) File ~\anaconda3\Lib\site-packages\pandas\core\computation\scope.py:209, in Scope.resolve(self, key, is_local) 205 try: 206 # last ditch effort we look in temporaries 207 # these are created when parsing indexing expressions 208 # e.g., df[df > 0] --> 209 return self.temps[key] 210 except KeyError as err: KeyError: 'Timestamp' The above exception was the direct cause of the following exception: UndefinedVariableError Traceback (most recent call last) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:666, in BaseExprVisitor.visit_Call(self, node, side, **kwargs) 665 try: --> 666 res = self.visit(node.func) 667 except UndefinedVariableError: 668 # Check if this is a supported function name File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:549, in BaseExprVisitor.visit_Name(self, node, **kwargs) 548 def visit_Name(self, node, **kwargs): --> 549 return self.term_type(node.id, self.env, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\ops.py:85, in Term.__init__(self, name, env, side, encoding) 84 self.is_local = tname.startswith(LOCAL_TAG) or tname in DEFAULT_GLOBALS ---> 85 self._value = self._resolve_name() 86 self.encoding = encoding File ~\anaconda3\Lib\site-packages\pandas\core\computation\ops.py:109, in Term._resolve_name(self) 107 is_local = False --> 109 res = self.env.resolve(local_name, is_local=is_local) 110 self.update(res) File ~\anaconda3\Lib\site-packages\pandas\core\computation\scope.py:211, in Scope.resolve(self, key, is_local) 210 except KeyError as err: --> 211 raise UndefinedVariableError(key, is_local) from err UndefinedVariableError: name 'Timestamp' is not defined During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) Cell In[2], line 2 1 # 삼성전자 ----> 2 df1 = fdr.DataReader("005930", '2018-01-02', '2018-10-30') 4 # KODEX 200 (ETF) 5 df2 = fdr.DataReader("069500", '2018-01-03', '2018-10-30') File ~\anaconda3\Lib\site-packages\FinanceDataReader\data.py:19, in DataReader(symbol, start, end, exchange, kind) 16 start, end = _validate_dates(start, end) 17 if (symbol.isdigit() and len(symbol)==6 and exchange==None) or \ 18 (symbol.isdigit() and exchange and exchange.upper() in ['KRX', '한국거래소']): ---> 19 return NaverDailyReader(symbol, start, end, exchange, kind).read() 21 if (symbol.isdigit() and exchange and exchange.upper() in ['KRX-DELISTING']): 22 return KrxDelistingReader(symbol, start, end, exchange, kind).read() File ~\anaconda3\Lib\site-packages\FinanceDataReader\naver\data.py:29, in NaverDailyReader.read(self) 26 df.sort_index(inplace=True) 27 df['Change'] = df['Close'].pct_change() ---> 29 return df.query('index>=%r and index<=%r' % (self.start, self.end)) File ~\anaconda3\Lib\site-packages\pandas\util\_decorators.py:331, in deprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper(*args, **kwargs) 325 if len(args) > num_allow_args: 326 warnings.warn( 327 msg.format(arguments=_format_argument_list(allow_args)), 328 FutureWarning, 329 stacklevel=find_stack_level(), 330 ) --> 331 return func(*args, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\frame.py:4474, in DataFrame.query(self, expr, inplace, **kwargs) 4472 kwargs["level"] = kwargs.pop("level", 0) + 2 4473 kwargs["target"] = None -> 4474 res = self.eval(expr, **kwargs) 4476 try: 4477 result = self.loc[res] File ~\anaconda3\Lib\site-packages\pandas\util\_decorators.py:331, in deprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper(*args, **kwargs) 325 if len(args) > num_allow_args: 326 warnings.warn( 327 msg.format(arguments=_format_argument_list(allow_args)), 328 FutureWarning, 329 stacklevel=find_stack_level(), 330 ) --> 331 return func(*args, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\frame.py:4612, in DataFrame.eval(self, expr, inplace, **kwargs) 4609 kwargs["target"] = self 4610 kwargs["resolvers"] = tuple(kwargs.get("resolvers", ())) + resolvers -> 4612 return _eval(expr, inplace=inplace, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\eval.py:353, in eval(expr, parser, engine, truediv, local_dict, global_dict, resolvers, level, target, inplace) 344 # get our (possibly passed-in) scope 345 env = ensure_scope( 346 level + 1, 347 global_dict=global_dict, (...) 350 target=target, 351 ) --> 353 parsed_expr = Expr(expr, engine=engine, parser=parser, env=env) 355 # construct the engine and evaluate the parsed expression 356 eng = ENGINES[engine] File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:813, in Expr.__init__(self, expr, engine, parser, env, level) 811 self.parser = parser 812 self._visitor = PARSERS[parser](self.env, self.engine, self.parser) --> 813 self.terms = self.parse() File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:832, in Expr.parse(self) 828 def parse(self): 829 """ 830 Parse an expression. 831 """ --> 832 return self._visitor.visit(self.expr) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 413 method = "visit_" + type(node).__name__ 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:421, in BaseExprVisitor.visit_Module(self, node, **kwargs) 419 raise SyntaxError("only a single expression is allowed") 420 expr = node.body[0] --> 421 return self.visit(expr, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 413 method = "visit_" + type(node).__name__ 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:424, in BaseExprVisitor.visit_Expr(self, node, **kwargs) 423 def visit_Expr(self, node, **kwargs): --> 424 return self.visit(node.value, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 413 method = "visit_" + type(node).__name__ 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:750, in BaseExprVisitor.visit_BoolOp(self, node, **kwargs) 747 return self._maybe_evaluate_binop(op, node.op, lhs, rhs) 749 operands = node.values --> 750 return reduce(visitor, operands) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:743, in BaseExprVisitor.visit_BoolOp.<locals>.visitor(x, y) 742 def visitor(x, y): --> 743 lhs = self._try_visit_binop(x) 744 rhs = self._try_visit_binop(y) 746 op, op_class, lhs, rhs = self._maybe_transform_eq_ne(node, lhs, rhs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:739, in BaseExprVisitor._try_visit_binop(self, bop) 737 if isinstance(bop, (Op, Term)): 738 return bop --> 739 return self.visit(bop) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 413 method = "visit_" + type(node).__name__ 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:723, in BaseExprVisitor.visit_Compare(self, node, **kwargs) 721 op = self.translate_In(ops[0]) 722 binop = ast.BinOp(op=op, left=node.left, right=comps[0]) --> 723 return self.visit(binop) 725 # recursive case: we have a chained comparison, a CMP b CMP c, etc. 726 left = node.left File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 413 method = "visit_" + type(node).__name__ 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:536, in BaseExprVisitor.visit_BinOp(self, node, **kwargs) 535 def visit_BinOp(self, node, **kwargs): --> 536 op, op_class, left, right = self._maybe_transform_eq_ne(node) 537 left, right = self._maybe_downcast_constants(left, right) 538 return self._maybe_evaluate_binop(op, op_class, left, right) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:458, in BaseExprVisitor._maybe_transform_eq_ne(self, node, left, right) 456 left = self.visit(node.left, side="left") 457 if right is None: --> 458 right = self.visit(node.right, side="right") 459 op, op_class, left, right = self._rewrite_membership_op(node, left, right) 460 return op, op_class, left, right File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:415, in BaseExprVisitor.visit(self, node, **kwargs) 413 method = "visit_" + type(node).__name__ 414 visitor = getattr(self, method) --> 415 return visitor(node, **kwargs) File ~\anaconda3\Lib\site-packages\pandas\core\computation\expr.py:670, in BaseExprVisitor.visit_Call(self, node, side, **kwargs) 667 except UndefinedVariableError: 668 # Check if this is a supported function name 669 try: --> 670 res = FuncNode(node.func.id) 671 except ValueError: 672 # Raise original error 673 raise File ~\anaconda3\Lib\site-packages\pandas\core\computation\ops.py:614, in FuncNode.__init__(self, name) 612 def __init__(self, name: str) -> None: 613 if name not in MATHOPS: --> 614 raise ValueError(f'"{name}" is not a supported function') 615 self.name = name 616 self.func = getattr(np, name) ValueError: "Timestamp" is not a supported function
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
%d 정수 표현
print('{:4d}' .format(42))왼쪽에 공백 채워지고 뒤에 정수 42가 표시되는데 print('{:10}'.format('nice'))문자열의 경우에는 오른쪽에 공백이 채워지잖아요? 정수의 경우에는 부등호 생략하면 왼쪽에 공백 채워지는건가요?
-
미해결
M2 Ventura / Doker 실행 오류 문의드립니다
안녕하세요 이번에 M2 air 를 구매 후 열심히 교육 듣고있는데 처음엔 됬는데 다시 실행하려 보니까 안되서요몇번 노트북을 초기화 후에 재설치를 해도 똑같네요ㅠㅠ이유를 모르겟는데 .. 혹시 해결방법 아는 방법이 있을까요 docker login 진행 현재 구글 Authernicator 로 2차 인증까지 해놓은 상태이고 pc에 docker 모두 실행시켜서 로그인도 완료 된 상태입니다.docker 앱 종료 후 동일하게 진행 하더라도 저렇게 나오더라구요해당 토큰관련 오류도 확인해봤으나 이상이 없는데 무엇이 문제일까요ㅠㅠ
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
xml2json 모듈이 찾을수 없다고 합니다 !
안녕하세요 큰돌님! 간단한 예제지만 이해가 안되서 여쭤봅니다!해당 부분에서 "node a.js" 를 실행하게 되면라는 메세지와 함께 xml상의 데이터가 불러오지 않습니다.. "node_modules"-"@types"-"xml2json" 이라는 곳에 모듈이 있습니다... 왜 실행이 되지 않는걸까요 ㅠ_ㅠ?처음해보는거라서.. 모듈이 문제인지.. 운영체제가 문제인지 전혀 감이 안잡히네요
-
미해결Data Engineering Course (1) : 빅데이터 하둡 직접 설치하기
하둡 명령어 실행시 오류 문의
~/hadoop$ hadoop fs -ls2023-08-29 12:55:53,700 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable이 에러로 문의드렸습니다. 네 가지 설정파일 캡처 첨부해 재문의드립니다.참고로 저는 계정명을 hadoop으로 설정하여 neuavenue를 hadoop으로 바꿔서 입력하였습니다.제발 답변 부탁드려요.. 같은 부분에서 막혀 지우고 재설치만 세번째입니다 ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
보안에 관련한 한가지 의문점이 생기네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다른 방식도 물론이겠지만GET방식으로 데이터를 전송하다 보면간단한 해킹 공격으로도 해킹당하기 매우 쉬울거같은데이런 부분은 Spring Security를 배우면 알수있는건가요? 아니면 네트워크 보안쪽으로 따로 배우는 무언가가 있는건가요 ?
-
미해결UX/UI 시작하기 : Figma 입문 (Inflearn Original)
예제는 어디서 받아볼수 있나요?
예제는 어디서 받아볼수 있나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session 객체를 thymeleaf 에서 어떻게 꺼낼 수 있죠?
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... }위 컨트롤러 작성하는 부분입니다.관련된 html 파일은 basic-objects 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요.이게 가물가물한데 컨트롤러 메서드에서 파라미터로 호출하면 자동으로 모델에 넣어주기 때문에 thymeleaf 에서 ${session} 을 꺼낼 수 있는거죠?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
새 일기 추가가 안되요
onCreate시 localStorage에 데이터가 추가는 되는데, 화면에 작성한 글이 나오지 않아요 ㅠㅠ https://codesandbox.io/s/infallible-artem-sdzknh
-
미해결Data Engineering Course (1) : 빅데이터 하둡 직접 설치하기
하둡 명령어 실행시 오류
~/hadoop$ hadoop fs -ls2023-08-29 12:55:53,700 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable fs 명령어를 실행하면 native-hadoop library를 load할 수 없다는 경고가 뜨면서 명령이 실행되지 않습니다. 하둡 설치 및 설정 과정은 제공해주신 문서 두세번씩 훑으면서 제대로 설정했는데, 어떻게 해야 고칠 수 있을까요 ㅠㅠ? 혹시 우분투를 22.04.3 LTS로 설치하였는데 버전이 달라서 생기는 문제인가요..?참고로 하둡 설치할 때 강의에 나온 링크는 존재하지 않는다고 나와서 $wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz여기서 설치하였습니다. 자바는 동일한 버전인 8u271을 설치하였는데, 강의와 다르게 Linux ARM 64 Compressed Archive로 설치했어요.
-
미해결인터랙티브 개발 실무 끝장내기 [역량 강화편]
레퍼런스 사이트
안녕하세요. 부분부분 듣다보니, 혹시 말씀하셨을 수도 있겠는데.. 질문 남깁니다. 보여주신 레퍼런스 사이트들이 취합된 곳이나 링크를 공유해주실 수 있을까요? 재밌는 강의 감사합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
lettuce 클라이언트는 락 획득
안녕하세요 강사님. 강의 잘 듣고 있습니다. 궁금한 부분이 있는데요.lettuce 클라이언트는 락 획득을 스핀락을 돌면서 자체적으로 얻어온다고했는데 그렇다면 어떻게 애플리케이션의 비니지스 코드까지 락을 얻지못했다는 값을 넘겨주나요?while(!redisLockRepository.lock(id)) 구문이 어떻게 실행될 수 있는지 모르겠습니다.왜냐하면 위에서 말한것처럼 lettuce 클라이언트에서 락을 얻기 위해 내부적으로 계속 스핀락을 돌다가 결국 얻어내서 true 를 리턴할것으로 예상되기 때문인데요.답변 부탁드리겠습니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
메뉴얼 강의자료는 어디서 다운받을수 있나요?
메뉴얼 강의자료는 어디서 다운받을수 있나요?강의들으면서 간단한 코드들부터 계속 손으로 치고 스샷으로 남겨놓으면서 공부하고있는데 메뉴얼 자료를 받을 수 있나요?