자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
orphanRemoval 을 걸지 않았을 경우 책6을 삭제했으나, userLoanHistories를 조회해보면 여전히 책6이 존재한다. orphanRemoval = true 을 걸었을 경우 클린 코드를 삭제했더니 조회시 사라졌다 어째서 orphanRemoval 을 걸어주지 않으면 데이터베이스에 반영이 되지 않는건가요? @Transactional 어노테이션으로 인해 트랜잭션이 시작될 때, 영속성 컨텍스트가 시작되고, 영속성 컨텍스트의 4대 특징 중 하나인 생성/수정 감지로 인해 user 객체의 userLoanHistories 의 값에 변경사항( removeOneHistory )이 발생하여 자동저장이 될거라고 생각했는데 말이죠.. 실제 데이터베이스상에선 userLoanHistories 는 user테이블의 필드가 아니기 때문에, 영속성 컨텍스트가 관리하는 field 에 포함이 되지않는데 orphanRemoval = true 를 걸어주면 비로소 자신이 관리하는 field로 인식하는걸까요? 원리가 너무 궁금해요.. 내용추가1) 바로 다음 강의인 책 대출 리팩토링에선 orphanRemoval 같은 옵션을 주지 않고도 new userLoanHistory 를 add한 내용대로 저장이 되는데, 어째서 userLoanHistory 를 remove하는것은 orphanRemoval 옵션이 없으면 데이터의 변경이 일어나지않는지 궁금합니다.. 제 생각에는 User 에서 userLoanHistories.add 를 하든 userLoanHistories.remove 를 하든 둘 다 User 와 UserLoanHistory 와의 연관관계를 이용한 데이터를 변경하기위한 접근같은데 .. add는 되는데 remove는 안되는게 살짝 이해하기 어렵습니다 ㅠ 내용추가2) returnBook 과 loanBook , removeOneHistory 의 차이점이 뭘까 고민해봤는데 returnBook 과 loanBook 은 UserLoanHistory 라는 Entity에 접근하는 과정 (loanBook은 Entity객체생성, returnBook은 Entity의 property 수정)이 존재하고, removeOneHistory 는 Entity에 직접 접근하는게 아니라 단순히 List에 대한 변경일뿐이고, Entity에 대한 직접적인 수정이나 생성이 이뤄진것이 아니므로 데이터베이스의 변경이 일어나지 않았다. 이렇게 이해했는데 제가 이해한 내용이 맞을까요? 생각을 정리하다보니 질문이 길어진 점 죄송합니다 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] id 'java' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' java { sourceCompatibility = '17' } 현재 쓰는 버전입니다. 애플리케이션 실행에는 문제가 없지만 테스트시에 아래와 같이 오류가 뜹니다. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Workspace/jpa_%EA%B0%95%EC%9D%98/jpashop/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 1s 4 actionable tasks: 1 executed, 3 up-to-date 이에 대한 해결 방법을 찾아 보던 중 파일 - 설정 - 빌드,실행,배포 - gradle - 다음을 사용하여 테스트 실행 - IntelliJ IDEA 로 변경을 하여 해결하였습니다. 해결은 했지만 왜 이와같은 오류가 일어났었는지 IntelliJ IDEA 로 테스트를 실행하도록 했을 때 왜 동작하는지 앞으로 다른 문제가 발생하지는 않을지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 처음에 db delete 안 해주고 실행했을 때도 체크 표시가 떴고 delete 해주고 실행, db에서 회원 목록 조회하니 목록에 아무도 없습니다. test가 db에 연결이 안된 걸까요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
HTTP 메서드에 처음 공부할 때 수정의 경우에는 PUT과 PATCH를 사용한다고 배웠는데요. PUT의 경우에는 통째로 갈아끼우는 방식의 갱신이고 PATCH의 경우에는 부분 수정이 가능하다고 배웠습니다. 이 강의에서는 USER의 정보중에 이름만받고 있어서(PUT은 전체 필드를 명시해주어야 한다고 배웠습니다.) PATCH가 더 적당한 방식이 아닌가라는 생각이 들었습니다. PATCH가 아닌 PUTMapping을 사용하신 이유가 있으실까요? 그리고 이와 관련된 블로그 글들이 많은데 저마다 내리는 결론이 달라서 조금 혼란스럽습니다. 강사님의 생각을 듣고 싶습니다. 좋은 강의 만들어주신 태현님을 존중하고 존경하며 이만 글 줄이겠습니다!
안녕하세요, stream의 key.format, value.format 관련 질문있습니다. 이 두 옵션이 직렬화에 대한 옵션이라고 하셨는데, select 시에는 consumer가 동작하고 insert에는 producer가 동작한다고 하셨던 것과 조금 혼동이 되어서 질문드립니다. insert 시에 stream옵션으로 직렬화가 되면 producer의 직렬화 옵션은 어떻게 되는건가요? 그리고 select시 에는 topic 메시지를 consumer가 역직렬화해서 가져온 것을 다시 직렬화 하는건가요? stream의 직렬화 시점에 대해 조금 이해가 되지 않습니다. 감사합니다.
안녕하세요. 제가 최초 학습/실습했을 때도, 겪었던 문제인데, 계속 해결을 하지 못해 해당 문제를 여쭙습니다. [현재 문제상황] 먼저 문제는, Oozie를 강제 실행했을 때, managed_smartcar_status_info 테이블은 생성되지만, 빈 테이블로, 내부에 아무 데이터가 조회되지 않는 것 입니다. 제가 오타가 있을까 싶어, 테이블 삭제에 여러 날을 데이터 생성부터 재시도를 4..5번 정도 했는데, 모두 동일하게 데이터가 조회되지 않았습니다. 우선, 제가 세팅한 값과 생성되어 cat-batch-log 에 저장된 데이터의 이미지를 보여드리겠습니다. 제가 작업을 실행한 것은 금일(2024-02-08)이고, 데이터 생성 시, 입력한 일자는 2022-03-22입니다. 따라서, 강의에서 말씀하신 용어를 기준으로, working_date와 biz_date는 각각, 20240208, 20220322입니다. Oozie에 task를 할당할 때는, download한 쿼리를 그대로 복사해서 붙여서 task를 정의했습니다. 이는 오타가 발생할 수 없고, 여러번 시도했었던 부분이기 때문에 해당 부분에는 에러가 없을 것으로 기대하고 있습니다. task에 대한 scheduling은 아래와 같이 구성하였습니다. Oozie를 강제 실행하였을 때, working_date에는 오늘 일자인 20240208을 입력하고, [저장] - [실행]을 했습니다. 실행 과정에서 에러는 발생하지 않았고, 로그에도 별다른 특이사항은 없었습니다. 이 후, 새로운 테이블 managed_smartcar_status_info이 생성되었음을 refresh를 통해 확인하였으나, 해당 테이블을 조회하면, 데이터가 조회되지 않는 것이 ... 일주일동안 해결하지 못하는 트러블 ...입니다. 테이블을 조건절(where) 없이 조회했을 때도, 조회된 데이터가 마찬가지로 없었기 때문에 이 또한, 조건절 오타로 인해 조회되지 않는 것은 아닌 것으로 추측됩니다. [현재 확인된 부분] hdfs 쿼리를 통해 정상적으로 파일이 생성되었음을 확인했습니다. redis에서 데이터가 저장되어있음을 확인했습니다. hue를 통한 hbase 브라우저에 DriveCarInfo 내 key값을 이용하여 데이터를 조회했을 때, 조회되는 부분을 확인하였습니다. [개인적인 의견] HiveQL/그림-6.71.hql 내 작성된 쿼리를 통해 현재 제가 겪고 있는 문제를 생각해보았는데, 현재 아래 두 쿼리는 조회 값이 NULL이 아니고, 충분히 많은 데이터가 조회됩니다. 그런데, select distinct car_number from smartCar_master_over18; select distinct car_number from SmartCar_Status_Info where wrk_date = '20240208'; 그런데, insert 내 select 부분만 추출하여 실행하면, select t1.car_number, t1.sex, t1.age, t1.marriage, t1.region, t1.job, t1.car_capacity, t1.car_year, t1.car_model, t2.tire_fl, t2.tire_fr, t2.tire_bl, t2.tire_br, t2.light_fl, t2.light_fr, t2.light_bl, t2.light_br, t2.engine, t2.break, t2.battery, t2.reg_date, substring(t2.reg_date, 0, 8) as biz_date from SmartCar_Master_Over18 t1 join SmartCar_Status_Info t2 on t1.car_number = t2.car_number and t2.wrk_date = '20240208'; 조회가 되지 않는다는 것을 알게 되었습니다. 위 쿼리를 조금 더 간략히 하면, select distinct t.car _number from smartcar_master_over18 t join smartcar_status_info s on t.car _number = s.car _number where s.wrk_date = '20240208'; 가 되고, 이 또한 조회된 값이 없습니다. 현재 제가 학습을 하면서 이해를 하기론, smartcar_status_info 데이터는 flume에 의해 입수된 로그 데이터이고, smartcar_master_over18는 특정 조건에 의해 redis에 저장된 일부 데이터로 알고 있는데, 이렇게 되면, smartcar_master_over18 이 smartcar_status_info 에 포함되는 관계가 필연적으로 되어야하는게 아닌가하는게 제 생각입니다. 만약 제 생각이 맞다면, 로그가 잘못 생성되었다는 뜻인데, 혹시 강사님께선 제가 생각하는 것 외에 확인해야할 부분이 있다고 생각하신다면, 조언해주시길 부탁드립니다. 항상 친절한 가르침 감사합니다. 즐거운 연휴 보내시고, 새해 복 많이 받으시길 바랍니다. 감사합니다. """(마음의 소리)많이 바쁘시겠지만, 가능하다면 오늘 해결 방법 및 조언을 듣고, 긴 연휴.. 프로젝트를 마무리 및 정리를 하고 싶습니다... !! ㅠㅠ """
안녕하세요, 실시간 분석 시스템 아키텍처에 ksqlDB 사용 명분(?)을 좀 더 확실히 하고 싶어서 질문드립니다. 제가 이해한 것은 전통적 분석 시스템은 운영 DB 부하로 분석 시스템을 직접 붙일 수 없고, DW/Batch을 분석용으로 따로 두는 것으로 이해했습니다. 운영계에서 DW로 데이터를 전송하는 주기가 하루 주기인 것도 마찬가지로 운영계 I/O 부하 문제인걸까요? 또한 실시간 분석 시스템의 경우 CDC를 통해 일단위 데이터 전송에서 실시간으로 전송이 가능한 것으로 보이는데 이것은 redo dump file 전송은 DB에 직접적인 부하를 주지 않기 때문에 가능한 것인가요? 마지막으로 CDC 기반으로 실시간 데이터 전송을 했을 때 타겟 DBMS가 좋은 퍼포먼스를 가져야 함은 실시간 데이터에 대한 부하를 견딜 수 있어야 하기 때문인건가요? 질문이 많네요.. 늘 좋은 강의 감사드립니다.
안녕하세요 개발자님 에러를 해결 하지 못해 도움을 받고 싶습니다. ksqldb 마지막 강의를 마치고 실습을 하던중 mysql 테이블을 topic으로 connector(avro)를 한후 ksqldb에서 table을 만드는 과정에서 타입 변환 문제가 발생 하였습니다. avro를 통해 register에 스키마를 저장 하고 사용 하고자 하였습니다. 강의 해주신 .properties 설정은 하였구요. topic에 데이터 들어온느거 확인 스키마 확인 sqldb 테이블 생성은 되지만 검색시 밑에와 같은 에러가 발생합니다. source, sink connector 실습은 잘 되었으며, ksqldb 거치지 않고 ELK에 데이터도 잘 보내 집니다. ksqldb에서 table 생성 과정에서 PRIMARY KEY설정을 하고 생성이 됩니다. 하지만 검색을 하면 밑에와 같은 에러가 납니다. PRIMARY KEY없이 table을 생성하면 key값이 보내면 Json형태의 키로 배출됩니다. {CUSTOMER_ID=1} key 타입을 INTEGER, bigint, int 타입 해보았습니다. mysql table도 다른걸로 만들어보고 했습니다. 혹시 네가 노친것이 무엇인가요? 어떻게 해야 할까여? register 실행 로그를 보니 WARNING: A provider io.confluent.kafka.schemaregistry.rest.resources.SchemasResource regi stered in SERVER runtime does not implement any provider interfaces applicable in the SER VER runtime. Due to constraint configuration problems the provider io.confluent.kafka.sch emaregistry.rest.resources.SchemasResource will be ignored. Feb. 08, 2024 5:59:52 A.M. org.glassfish.jersey.internal.inject.Providers checkProviderRu ntime 있습니다. 어떻게 해야 하나요? [2024-02-08 00:47:43,983] ERROR {"type":0,"deserializationError":{"target":"key","errorMessage":"Error deserializing message from topic: mysqlavro022.oc.customers","recordB64":null,"cause":["Cannot deserialize type struct as type int32 for path: "],"topic":"mysqlavro022.oc.customers"},"recordProcessingError":null,"productionError":null,"serializationError":null,"kafkaStreamsThreadError":null} (processing.transient_OC_CUSTOMER_3798951142359913405.KsqlTopic.Source.deserializer:44) [2024-02-08 00:47:43,988] WARN stream-thread [_confluent-ksql-default_transient_transient_OC_CUSTOMER_3798951142359913405_1707320860130-b2b59a3e-3875-4eab-ad2a-185533cf65bc-StreamThread-1] task [0_0] Skipping record due to deserialization error. topic=[mysqlavro022.oc.customers] partition=[0] offset=[0] (org.apache.kafka.streams.processor.internals.RecordDeserializer:89) org.apache.kafka.common.errors.SerializationException: Error deserializing message from topic: mysqlavro022.oc.customers at io.confluent.ksql.serde.connect.KsqlConnectDeserializer.deserialize(KsqlConnectDeserializer.java:55) at io.confluent.ksql.serde.tls.ThreadLocalDeserializer.deserialize(ThreadLocalDeserializer.java:37) at io.confluent.ksql.serde.unwrapped.UnwrappedDeserializer.deserialize(UnwrappedDeserializer.java:47) at io.confluent.ksql.serde.unwrapped.UnwrappedDeserializer.deserialize(UnwrappedDeserializer.java:26) at io.confluent.ksql.serde.GenericDeserializer.deserialize(GenericDeserializer.java:59) at io.confluent.ksql.logging.processing.LoggingDeserializer.tryDeserialize(LoggingDeserializer.java:61) at io.confluent.ksql.logging.processing.LoggingDeserializer.deserialize(LoggingDeserializer.java:48) at org.apache.kafka.common.serialization.Deserializer.deserialize(Deserializer.java:60) at org.apache.kafka.streams.processor.internals.SourceNode.deserializeKey(SourceNode.java:54) at org.apache.kafka.streams.processor.internals.RecordDeserializer.deserialize(RecordDeserializer.java:65) at org.apache.kafka.streams.processor.internals.RecordQueue.updateHead(RecordQueue.java:178) at org.apache.kafka.streams.processor.internals.RecordQueue.addRawRecords(RecordQueue.java:112) at org.apache.kafka.streams.processor.internals.PartitionGroup.addRawRecords(PartitionGroup.java:304) at org.apache.kafka.streams.processor.internals.StreamTask.addRecords(StreamTask.java:968) at org.apache.kafka.streams.processor.internals.TaskManager.addRecordsToTasks(TaskManager.java:1068) at org.apache.kafka.streams.processor.internals.StreamThread.pollPhase(StreamThread.java:962) at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:751) at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:604) at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:576) Caused by: org.apache.kafka.connect.errors.DataException: Cannot deserialize type struct as type int32 for path: at io.confluent.ksql.serde.connect.ConnectDataTranslator.throwTypeMismatchException(ConnectDataTranslator.java:71) at io.confluent.ksql.serde.connect.ConnectDataTranslator.validateType(ConnectDataTranslator.java:90) at io.confluent.ksql.serde.connect.ConnectDataTranslator.validateSchema(ConnectDataTranslator.java:154) at io.confluent.ksql.serde.connect.ConnectDataTranslator.toKsqlValue(ConnectDataTranslator.java:200) at io.confluent.ksql.serde.connect.ConnectDataTranslator.toKsqlRow(ConnectDataTranslator.java:54) at io.confluent.ksql.serde.avro.AvroDataTranslator.toKsqlRow(AvroDataTranslator.java:67) at io.confluent.ksql.serde.connect.KsqlConnectDeserializer.deserialize(KsqlConnectDeserializer.java:51) ... 18 more user01@ubuntu-20:~/kafka/connector_configs/cdc_source_mysql$ register_connector cdc_source_mysql/mysql_cdc_ops_source_avro_01.json HTTP/1.1 201 Created Content-Length: 1007 Content-Type: application/json Date: Wed, 07 Feb 2024 15:42:52 GMT Location: http://localhost:8083/connectors/mysql_cdc_ops_source_avro_03 Server: Jetty(9.4.44.v20210927) { "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "database.connectionTimezone": "Asia/Seoul", "database.history.kafka.bootstrap.servers": "localhost:9092", "database.history.kafka.topic": "schema-changes.mysql.oc", "database.hostname": "192.168.0.26", "database.include.list": "oc", "database.password": "1234", "database.port": "3306", "database.server.id": "31002", "database.server.name": "mysqlavro022", "database.user": "cnt_dev", "key.converter": "io.confluent.connect.avro.AvroConverter", "key.converter.schema.registry.url": "http://localhost:8081", "name": "mysql_cdc_ops_source_avro_03", "table.include.list": "oc.customers", "tasks.max": "1", "time.precision.mode": "connect", "transforms": "unwrap", "transforms.unwrap.drop.tombstones": "false", "transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState", "value.converter": "io.confluent.connect.avro.AvroConverter", "value.converter.schema.registry.url": "http://localhost:8081" }, "name": "mysql_cdc_ops_source_avro_03", "tasks": [], "type": "source" } user01@ubuntu-20:~/kafka/data/kafka-logs$ show_topic_messages avro mysqlavro022.oc.customers { "customer_id": 1 } { "customer_id": 1, "email_address": "test", "full_name": "test" } user01@ubuntu-20:~/kafka$ http GET http://localhost:8081/schemas { "id": 23, "schema": "{\"type\":\"record\",\"name\":\"Key\",\"namespace\":\"mysqlavro022.oc.customers\",\"fields\":[{\"name\":\"customer_id\",\"type\":\"int\"}],\"connect.name\":\"mysqlavro022.oc.customers.Key\"}", "subject": "mysqlavro022.oc.customers-key", "version": 1 }, { "id": 24, "schema": "{\"type\":\"record\",\"name\":\"Value\",\"namespace\":\"mysqlavro022.oc.customers\",\"fields\":[{\"name\":\"customer_id\",\"type\":\"int\"},{\"name\":\"email_address\",\"type\":\"string\"},{\"name\":\"full_name\",\"type\":\"string\"}],\"connect.name\":\"mysqlavro022.oc.customers.Value\"}", "subject": "mysqlavro022.oc.customers-value", "version": 1 }, CREATE TABLE oc_customer ( customer_id int PRIMARY KEY, email_address varchar, full_name varchar ) WITH ( KAFKA_TOPIC = 'mysqlavro022.oc.customers', KEY_FORMAT = 'AVRO', VALUE_FORMAT = 'AVRO' ); ksql> describe oc_customer extended; Name : OC_CUSTOMER Type : TABLE Timestamp field : Not set - using <ROWTIME> Key format : AVRO Value format : AVRO Kafka topic : mysqlavro022.oc.customers (partitions: 1, replication: 1) Statement : CREATE TABLE OC_CUSTOMER (CUSTOMER_ID INTEGER PRIMARY KEY, EMAIL_ADDRESS STRING, FULL_NAME STRING) WITH (KAFKA_TOPIC='mysqlavro022.oc.customers', KEY_FORMAT='AVRO', VALUE_FORMAT='AVRO'); Field | Type ------------------------------------------------ CUSTOMER_ID | INTEGER (primary key) EMAIL_ADDRESS | VARCHAR(STRING) FULL_NAME | VARCHAR(STRING) ------------------------------------------------ Local runtime statistics ------------------------
게시글과 댓글을 매핑 하려고 하는데 게시글에 어떤 댓글이 달렸는지 조회 하기 위해 게시글 -> 댓글 OneToMany 단방향 매핑을 하려고 했더니, @OneToMany는 지양하라고 해서 댓글에 @ManyToOne 매핑을 하려고 했는데요. 이러면 댓글->게시글 단방향이 되는 것 아닌가요? 게시글에 어떤 댓글이 있는지 확인을 하고 싶을 뿐인데 ManyToOne을 지양하는 이럴 땐 어떻게 해야하는지 궁금합니다 .. 매핑이 아니라 차라리 int communitySeq 를 멤버 변수로 갖도록 하고 jpql에서 join문을 통해 데이터를 가져오는 것이 맞을까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) A. 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) A. 아니요 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) A. 네 [질문 내용] 테스트 코드 실행을 하면 OpenJDK 64-bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 이 경고가 계속 뜹니다. https://www.inflearn.com/questions/917150/openjdk-64-bit-server-vm-warning 찾아보면서 이 답변을 따라해도 로그가 뜨지 않고 경고가 뜨는데 어떻게 해야하나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 문제 풀이를 다음 날 새로 만들어서 풀어보니까 조금 다른 부분이 생겼는데 1. 본인 2. 강의 각 배열의 총 가격 값만 더하는 거라면 1번처럼 하는 게 좋아 보이는데 Item item = items[i];를 추가하신 이유와 어떤 차이점이 있는지 궁금해요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의 잘 듣고 있습니다. 재밌게 강의를 듣던 중 궁금증이 생겨 이렇게 질문 드리게 되었습니다. 7분40초~7분50초 쯤 설명에 의하면 "우리가 웹에서 입력한 name값이 MemberForm의 name 필드로 전달이 된다"라는 식으로 말씀을 하셨는데, 어떻게 Member 클래스가 아닌 MemberForm 클래스의 name을 찾아가게 되는 건가요?? 제가 워낙에 초보라서 그런지, 코드 상에서 "Member의 name이 아닌 MemberForm의 name을 찾아가도록 하는" 코드도 발견을 못하겠습니다.. 또한 다른 분들의 말씀에 의해서 질문을 드리고 싶은데, MemberForm 클래스에서 setName() 메서드가 사용이 안되는 것 같은데, 7분55초~ 8분 쯤의 설명으로는 setName() 메서드를 사용하시는 것처럼 말씀하시더라구요. 이 역시도 제가 잘 몰라서 그러는데 실제로 setName() 메서드가 사용되는 건가요?? 자세한 설명 부탁드리겠습니다. 감사합니다:-)
안녕하세요. 강의 수강 중 궁금한점이 있어 문의드립니다. [구성] 파티션 - 5개 컨슈머 - 5개 [문의] 1. 컨슈머 offset과 lag 관련 문의 프로듀서에서 메시지를 생성해서 Kafka로 전송하면 Offset값이 2씩 증가합니다. CURRENT-OFFSET - 2증가 (7 -> 9) LOG-END-OFFSET - 2증가 (8 -> 10) 메시지가 소비되고 나면 LAG은 항상 1이 유지되고 있는데 어떤 부분을 체크해 봐야할까요? (추가확인 : LAG이 항상 1이 유지되는데 kafka-console.consumer.sh 로 확인해보면 메시지는 없는데 LAG이 0으로 변경됩니다.) 2. 소비된 메시지가 다시 소비되는 현상 프로듀서로 메시지 생성 후 컨슈머에서 메시지를 소비하였는데 한참 시간이 지난 후 새벽시간(12시간 이후)에 이미 처리된 메시지가 컨슈머에서 다시 처리되는 현상이 발생하는데 설정값에 따라 발생할 수 있는 현상일까요? 3. 이중화 (Active-Active) 구성일 경우 컨슈머 설정 이중화 구성이 되어 있는 경우 컨슈머를 @KafkaListener( concurrency = "2")로 설정하면 컨슈머는 총 4개로 운영되는 구조가 맞는지 궁금합니다. 감사합니다.