묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
isEqualTo()질문
isEqualTo()가 대상의 내용자체를 비교한다라고 알고 있었는데 수업시간에 isEqualTo() 내부에 equals()를 포함한다고 배웠습니다.그럼 만약 Object.equals()라면 isEqualTo()가 객체의 주소를 비교하고 , String.equals()라면 isEqualTo()가 객체의 값을 비교하나요??
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
배운내용 정리 질문
안녕하세요 코드팩토리님 배웠던 내용들이 너무 많아 강의를 돌려보면서 보기가 조금 어려운데 출처를 밝히고 블로그에 내용을 기록해도 될까요
-
해결됨확률과 통계 기초
6.1 MGF가 같을때 "같은 distribution"의 의미가 같은 기댓값, 분산인가요?
MGF가 함수 모양이라 생각하여 MGF가 같으면 모양이 비슷하다고 생각했습니다그래서 MGF가 같아서 distribution이 같다고 한다면 기댓값과 분산도 같을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Item 추상화 질문 드립니다.
안녕하세요. 도메인에 있는 Item 엔티티에서 궁금한 점이 있습니다. Moive, Book, Album 클래스가 Item 클래스를 상속받고 있는데요. 그렇다면, Item에 있는 id, name, price, stockQuantity 객체를 Movie, Book, Album 클래스에서도 인스턴스 변수로 활용할 수 있는건가요? 항상 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
질문있습니다.
라벨 인코더 실행할 때나, 스케일러 실행할 때,X_train 에서는 fit_transform 함수를 사용하고X_test 에서는 transform 함수를 사용하는데,무슨 차이가 있는지 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
busrefresh 요청 시 rabbitmq 큐 처리
안녕하세요테스트를 하면서 찾아봐도 해당 부분에 대한 의문이 해결되지 않아서 문의 드립니다.예를 들어 3대의 서버에 spring event bus를 구성한 후1번 서버에서 busrefresh를 요청하면 3대 서버에서 refresh가 정상적으로 처리가 되는건 확인했는데rabbitmq에서 큐를 확인해보면 busrefresh를 요청한 1번 큐에는 메시지가 없고2번, 3번 서버에서는 큐 메시지가 들어오는데..1번에서는 busrefresh 요청을 받기 때문에 큐 메시지 없이 처리가 가능하기 때문에 큐에서 제외되는건가요?제가 확인한 내용이 맞다면 rabbmit exchange에서 topic으로 패턴 매칭되서 모든 큐에 메시지를 넣을 거 같은데..어떻게 자신의 큐만 제외시키는지 궁금합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
08-05 강의에서 DB 접근이 안되는 현상이 발생합니다.
위와 같은 연결 오류가 발생하고이때 host는 'localhost' 로 입력을 한 상태입니다.app.module.ts 파일 내의 host를 127.0.0.1 로 변경하면 또 정상 작동 합니다.인터넷을 보니까socketPath: '/tmp/mysql.sock' 를 마지막에 넣어주면 또 정상 작동 하는 것 같습니다.도서관과 같은 특수한 네트워크 환경에서 진행해서 그런걸까요?https://cloer.tistory.com/56 자료를 참고했습니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 7 10번 미로탐색 반복 깊이 초과 에러
#my sol def DFS(x,y): global cnt if x>7 or y>7: return if x==7 and y==7: cnt+=1 else: for i in range(4): nx=x+dx[i] ny=y+dy[i] if maze[nx][ny]==0: maze[nx][nx]=1 DFS(nx,ny) maze[nx][nx]=0 if __name__=='__main__': maze = [list(map(int, input().split())) for _ in range(7)] maze.insert(0,[1]*7) maze.append([1]*7) for row in maze: row.insert(0,1) row.append(1) cnt=0 dx=[-1,0,1,0] dy=[0,1,0,-1] maze[1][1]=1 DFS(1,1) print(cnt) #solution dx=[-1,0,1,0] dy=[0,1,0,-1] def DFS(x,y): global cnt if x==6 and y==6: cnt+=1 else: for i in range(4): nx=x+dx[i] ny=y+dy[i] if 0<=nx<=6 and 0<=ny<=6 and maze[nx][ny]==0: maze[nx][nx]=1 DFS(nx,ny) maze[nx][nx]=0 if __name__=='__main__': maze = [list(map(int, input().split())) for _ in range(7)] cnt=0 maze[0][0]=1 DFS(0,0) print(cnt)위의 코드는 강의 듣기 전에 혼자 작성한 코드이고, 아래는 강의에서 알려주신 코드입니다. 두 코드가 접근 방식이 같은 것은 알고 있습니다. 그런데 제 컴퓨터에서 두 코드 모두 채점 프로그램을 돌렸을 때 결과 계산을 하지 못 합니다.(5초짜리로 해도 같고, 코드에 setrecursionlimit 추가해도 같음)import sys sys.setrecursionlimit(10**6)그리고 pdf 예제조차도 RecursionError: maximum recursion depth exceeded in comparison 에러가 납니다.(예제는 setrecursionlimit 추가 시 파이썬이 응답을 멈춰서 강제 종료됨) 혹시 제가 발견하지 못 한 코드 상의 문제가 있는 것인지、 제 컴퓨터 사양 때문인지 궁금합니다。
-
해결됨곰책으로 쉽게 배우는 최소한의 운영체제론
cpu 예측 문제점 15:30 질문
cpu 예측 문제점 15:30 내용이 이해가 안되서 질문입니다.기존 웹서버가 1~5번까지 동작하는건 이해했습니다.근데 15:30에서 하는 말씀을 모르겠습니다.게스트가 요청을 하던 안하던 웹서버의 자주쓰는 내용은 L3에 캐시될거고 그게 게스트가 요청 많이하면 웹서버를 해킹하는것이랑 어떻게 이어지는 것인가요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷이 라우터를 통해 인터넷 세계로 나온 다음 remote host로 전달되는 과정
패킷이 인터넷 세계로 나온 다음 remote host로 전달되기 까지 정말 수 많은 라우터들을 만나게 될텐데, 거미줄처럼 엮여있는 수많은 라우터를 헤치고 어떻게 remote 까지 도착하게 될까요??라우터는 L3이고 그 다음 라우터로 도착할때까지 오직 IP 주소만으로 식별하여 해당 라우터에 패킷을 보낼 수 있는 건가요?? 이 라우터들은 서로 물리적으로 연결되어 있지 않을 텐데 그렇다면 어떻게 상대방의 라우터의 위치를 식별할 수 있는 것인가요??L2 수준에서 ARP를 사용해 mac 주소를 파악했던것과 같은 이치일까요??
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷이 라우터를 통해 인터넷으로 나간 후에 다른 라우터로 스위칭되는 과정을 모르겠습니다.
지금까지 제가 이해한 네트워크 흐름은 이렇습니다.로컬 프로세스에서 Socket에 IO를 통해 Stream data 생성 (브라우저라면 HTTP Request를 Stream으로 TCP에 전달하겠군요)OS 수준인 TCP에서 일련의 Stream data를 Segment들로 분할하며, 이때 TCP 헤더에 Remote Endpoint의 Port 번호가 추가TCP에서 받은 Segment를 Packet에 캡슐화. 이때 Source IP와 Remote IP가 Packet 헤더에 추가L4에서 Packet을 Frame으로 캡슐화. 이때 자신이 속한 사설망의 L2 Switch의 mac 주소가 Frame 헤더에 추가Frame이 pc의 NIC를 출발하여 L2 access에 도착L2 access에서 L2 Distribution으로 Frame 전달 (없을 수도 있겠네요)L2 Distribution에서는 Frame을 디캡슐화하여 패킷을 확인하고 해당 패킷의 Source IP를 자신의 public IP로 변환 후 인터넷 세계로 패킷을 전송... 8번 과정부터 머릿속에 잘 그려지지 않는데, 인터넷 세계에서 해당 패킷이 가고자 하는 remote host로 가기 위해서는 어떤 과정을 거치게 되나요??? 이 세상에는 ipv4 갯수만큼 엄청나게 많은 라우터들이 존재할텐데 말입니다... ARP가 그러했듯 라우터들끼리 미리미리 주변 라우터가 어디에 있는지 broadcast로 파악을 해두고 있는 것일까요?? 그리고 인터넷에서는 remote host가 속한 사설망에 패킷이 도착할때 까지는 L3 끼리만 스위칭을 하게될까요?? 각 라우터들도 자신만의 사설망에 속해 있을 것이고 그렇다면 자신이 관리하는 L2 스위치도 있을 것인데, 패킷이 remote host로 전달되느 ㄴ과정에서 L2, L3, L2, L3 로 번갈아가면서 전달되지 않을까라는 생각이 듭니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
redirect: authStateProvider._redirectLogic 빨간줄
아래와 같은 코드인데 redirect부분에서 빨간줄이 나는데 뭐가 문제일까요 import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:gorouter_practice/model/user_model.dart'; import 'package:gorouter_practice/screen/login_screen.dart'; import 'package:riverpod/riverpod.dart'; import '../screen/1_screen.dart'; import '../screen/2_screen.dart'; import '../screen/3_screen.dart'; import '../screen/error_screen.dart'; import '../screen/home_screen.dart'; final routerProvider = Provider<GoRouter>((ref){ final authStateProvider = AuthNotifier( ref: ref ); return GoRouter( initialLocation: '/', errorBuilder: (context,state){ return ErrorScreen( error: state.error.toString()); }, // redirect 주소가 잘못됐을때 올바른 주소로 연결 redirect: authStateProvider._redirectLogic, // refresh 새로고침, 상태가 변경할 때마다 redirect실행 refreshListenable: authStateProvider, routes: authStateProvider._routes ); }); class AuthNotifier extends ChangeNotifier{ final Ref ref; AuthNotifier({ required this.ref, }){ ref.listen<UserModel?>( userProvider, (previous, next) { if(previous!=next){ notifyListeners(); } } ); } String? _redirectLogic(GoRouterState state){ //UserModel의 인스턴스 or null final user = ref.read(userProvider); //로그인을 하려는 상태인지(location은 현재 위치를 가져옴) final logginIn = state.location == '/login'; //유저 정보가 없다 - 로그인한 상태가 아니다 // //유저 정보가 없고 //로그인하려는 중이 아니라면 //로그인 페이지로 이동한다. if(user == null){ //로그인을 시도하려는 상태면 null 반환 로그인페이지 위에 로그인페이지가 쌓이는걸 방지하기 위해 return logginIn ? null : '/login'; } //유저 정보가 있는데 //로그인 페이지라면 //홈으로 이동 if(logginIn){ return '/'; } //가려는 페이지로 보내줌 위의 로직은 일종의 필터 역할 return null; } List<GoRoute> get _routes => [ GoRoute( path: '/', builder: (_,state) => HomeScreen(), routes: [ GoRoute( //라우트안에 라우트를 넣으면 슬래시를 안넣어도됨 path: 'one', builder:(_,state) => OneScreen(), routes: [ GoRoute( //http://....../one/two 위의 페이지들이 다 깔림 //라우트안에 라우트를 넣으면 슬래시를 안넣어도됨 path: 'two', builder:(_,state) => TwoScreen(), routes: [ GoRoute( //http://....../one/two/three 위의 페이지들이 다 깔림 //라우트안에 라우트를 넣으면 슬래시를 안넣어도됨 //name으로 이름으로 이동 가능 중복x name: ThreeScreen.routename, path: 'three', builder:(_,state) => ThreeScreen(), ) ] ) ] ), GoRoute(path: '/login',builder: (_,state)=>LoginScreen()) ] ), //http://...../three -> 깔리지 않고 독립적으로 존재 GoRoute( path: '/three', builder:(_,state) => ThreeScreen(), ) ]; } final userProvider = StateNotifierProvider<UserStateNotifier,UserModel?>( (ref) => UserStateNotifier() ); //로그인한 상태면 UserModel 인스턴스 상태로 넣어주기 //로그아웃 상태면 null 상태로 넣어주기 class UserStateNotifier extends StateNotifier<UserModel?>{ UserStateNotifier(): super(null); login({ required String name }){ state = UserModel(name: name); } logout(){ state = null; } }
-
미해결C++20 훑어보기
게임 업계에서 C++20을 많이 쓰나요?
성능 상의 이유로 일부러 과거의 표준만 사용하는 곳도 많다고 어디서 봤는데 게임업계에서는 어떤가요
-
미해결따라하면서 배우는 고박사의 유니티 기초
총알이 player 뒤로 나가게하려면 따로 설정이 필요한가요?
안녕하세요 고박사님!활용예제 마지막예제인 총알 발사하는 부분 질문입니다!위의 사진을 보시면 player위로 총알이 나오게되는데 고박사님 영상으로 보면 player 뒤로 총알이 생성되더라구요.. 하이라키창도 고박사님과 같은데 혹시 어떤 부분을 확인해보면 될까요?
-
미해결따라하면서 배우는 고박사의 유니티 기초
총알이 player 뒤로 생성되게 따로 설정이 필요한가요?
강의해주신 내용대로 작성한 것 같은데.. 계속 돌려봐도 어떤게 다른지 모르겠어서 질문드립니다..!고박사님과 하이라키창이 같게 총알이 생성이 되는데, 저는 총알이 player 위에 생성이되어서... 혹시 어떤부분을 확인하면 될까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
API 응답
await을 두 번 쓰는 이유가 fetch의 리턴 값인 Response (Promise 객체 타입)가 언제 올지 기다리기 위함인가요?위 질문에서 Response 객체는 Promise 객체와 같다고 생각해도 되나요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
혹시 말안듣고 장고 최신버전(4.2)으로 하시는 분들 parse_header() 문제
drf와 django버전이 안맞아서 그렇습니다parse_header()는 django 4.2에서는 없어졋는데drf 최신버전에서는 여전히 사용합니다.django 4.1 로 재설치하면 해결됩니다!
-
미해결
JPA 사용시 hibernate 오류 문의
[질문 내용]안녕하세요. JPA 를 활용하여 개발 중 해결이 안되서 문의 남깁니다.상황복수개의 DB 에서 데이터를 읽어와 Main DB 에 넣는 상황특이사항으로는 Main 에서 @ID 로 사용할 값이 원본 DB에서는 복수개의 데이터가 있는 상황ex) Main DB 에서는 IP 를 PK 로 사용하려고 Entity 를 만들었고, 각 원본 DB(이기종으로 Cubrid, MS-SQL, Postrgre 등)에서는 IP 가 PK 가 아님10.10.10.10 데이터가 2~5개 있음Main DB 에서는 10.10.10.10 을 PK 로 만들어서 1개 row 만 있기를 희망함질문(개발환경)H2 사용문제없이 JPA 에서 자동으로 마지막 것으로 업데이트 후 1개의 ROW 만 INSERT 됨NULL인 경우는 자동으로 제거됨(운영환경)MySQL 사용개발환경에서 문제없던 코드가 javax.persistence.OptimisticLockException 예외 발생됨에러부분 전체2023-05-24 16:16:53.311 ERROR 33726 --- [ main] o.s.batch.core.step.AbstractStep : Encountered an error executing step powerpackBatchStep in job chunkProcessingJobjavax.persistence.OptimisticLockException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update tba_powerpack_agent set agent_version=?, ccyn=?, ccyndt=?, creation_time=?, dept_name=?, drdt=?, dridno=?, last_scan_time=?, last_update_time=?, updrdt=?, updridno=?, user_id=? where CRDT=? and IP=? at org.hibernate.internal.ExceptionConverterImpl.wrapStaleStateException(ExceptionConverterImpl.java:238) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:93) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1411) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1394) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.springframework.batch.item.database.JpaItemWriter.write(JpaItemWriter.java:94) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:193) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:159) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:294) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:217) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:77) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:407) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:331) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.3.26.jar:5.3.26] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:273) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:375) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:145) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:258) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:208) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:152) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:413) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:136) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:320) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:149) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) ~[spring-core-5.3.26.jar:5.3.26] at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:140) ~[spring-batch-core-4.3.8.jar:4.3.8] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration$PassthruAdvice.invoke(SimpleBatchConfiguration.java:128) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.26.jar:5.3.26] at jdk.proxy2/jdk.proxy2.$Proxy119.run(Unknown Source) ~[na:na] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.execute(JobLauncherApplicationRunner.java:199) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.executeLocalJobs(JobLauncherApplicationRunner.java:173) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.launchJobFromProperties(JobLauncherApplicationRunner.java:160) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.run(JobLauncherApplicationRunner.java:155) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.run(JobLauncherApplicationRunner.java:150) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:759) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:749) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.10.jar:2.7.10] at io.kabang.excavator.ExcavatorApplication.main(ExcavatorApplication.java:12) ~[classes/:na]Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update tba_powerpack_agent set agent_version=?, ccyn=?, ccyndt=?, creation_time=?, dept_name=?, drdt=?, dridno=?, last_scan_time=?, last_update_time=?, updrdt=?, updridno=?, user_id=? where CRDT=? and IP=? at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:67) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:54) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:47) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3571) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3438) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3870) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:202) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) ~[na:na] at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:344) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1407) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] … 46 common frames omitted
-
해결됨스프링 시큐리티
5.7 이후로 Deprecated 되었습니다.
이제, 'SecurityFilterChain'의 각 요청에 대해 별도의 'SecurityContext'에 인스턴스가 존재한다고 합니다.이를 통해 'Spring Security'는 'SecurityContext'의 생명주기를 'HTTP Request'와 동일하게 관리할 수 있게 되었다고 합니다.즉, 이전 방식처럼 'SecurityContextPersistenceFilter'와 같이 'SecurityContext'를 세션에 저장하고 불러오는 별도의 필터가 불필요해져서 지금은 Deprecated 되었고, SecurityContext'의 저장 위치를 'SecurityContextRepository' 인터페이스 구현체인 'HttpSessionSecurityContextRepository'가 담당하게 되면서 더욱 유연해졌다고 하는데 맞을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nestjs에서 DB에 데이터를 주입한 이후에 다시 서버를 작동시키고자 할때 발생하는 에러에 대한 문의점
ORM으로 API 구현중에 서버 작동을 위해 yarn start:dev로 진행하던중에DB에 데이터를 주입한 이후에 서버를 다시 작동하게 되는 경우에 위 이미지와 같은 에러들이 발생하게됩니다.DB에서 어떠한 변화가 일어나고 난 다음에 새롭게 서버를 작동시키게 되면 기존과 다른 상태(?)에서 서버가 작동되는것때문에 오류가 발생하는게 아닐까 라는 추측을 하게되는데요이는 어떠한 문제가 있어서 그런것이고 이걸 해결하기 위해서는 어떠한 방향성을 갖고 DB연결 이후에 데이터를 주입한 이후에도 정상적으로 서버를 연결할 수 있을까요?! 아직 강의가 다 끝나지는 않았지만 다음 강의에 설명들이 나와있는지도 궁금합니다 !