Cache Aside 전략이 redis에 원하는 데이터가 있는지 확인 있으면 해당 데이터로 응답 없으면 db에서 조회 후 응답 + 레디스에 해당 데이터 저장 그런데 Write Around 전략에서 쓰기(조회를 제외한) 작업의 경우 redis에 반영하지 않고, DB에만 반영하는데 특정 데이터가 Cache Aside 전략에 따라 db에서 조회되어 응답 후 redis에도 해당 데이터가 저장되어 있는 상태라면, 해당 데이터를 수정하는 작업을 하게 될 경우 redis에는 반영하지 않고 db에만 반영하게 되면 만약 해당 데이터를 조회하려고 할 때 Cache Aside 전략에 의하면 가장 먼저 redis에 해당 데이터가 있는지 확인하는데 여기서 redis에 존재하니까 redis의 데이터로 응답을 해주면 db에 있는 원본 데이터는 수정되어 있으니 데이터 정합성 문제가 생기는 것 아닌가요? 감사합니다!!
선생님 제가 직접 델리게이트 함수를 이용하여 기능을 하나 추가해보려는 과정중에 문제가 하나 발생했습니다. 델리게이트 함수에 적절하게 파리미터값을 준거 같은데 자꾸 언리얼에서 인식을 못하고있습니다. 제가 뭔갈 실수한걸까요? 2틀째 원인을 못찾고있습니다. ㅠㅠ 아래 그림을 보시다시피 public쪽 선언하는 부분에서 인식을 못하고있습니다. 원래라면 델리게이트쪽 에서 FStateTypeChanged가 초록색으로 되면서 밑에도 자동입력목록에 FStateTypeChanged가 없습니다 DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FStateTypeChanged, EStateType, InPrevType, EStateType, InNewType); public: UPROPERTY(BlueprintAssignable) FStateTypeChanged OnStateTypeChanged;
안녕하세요, 1213번(1-K번) 맞왜틀 질문이 있어 질문 올립니다. 마땅한 반례를 제 시간에 떠올리지 못해, 반례에 대한 힌트를 얻을 수 있을까 하여 질문 드립니다. 코드는 아래와 같습니다. http://boj.kr/556e9aa7a033414a80ac86819811d8a7 입력된 string의 각 알파벳을 Key, 각 알파벳 개수를 value로 하는 map을 이용하여 풀어보려 했습니다. 입력된 string의 각 알파벳 및 알파벳 개수를 _nr_char이라는 map에 저장한 후, _nr_char의 value가 홀수인 것(_odd_nr로 count합니다)이 2개 이상이면 I'm Sorry Hansoo를 출력하게 했고, 홀수인 것이 1개라면 29번 라인으로, 홀수인 것이 없다면 56번 라인으로 분기하여 처리합니다. 29번 라인은 _nr_char에 저장된 알파벳을 output2란 string에 차례대로 저장한 후, 홀수 알파벳을 output2에 마지막으로 push_back으로 저장합니다. 이후 output2를 대칭복사한 output를 출력합니다. 56번 라인은 _nr_char에 저장된 알파벳을 output2란 string에 차례대로 저장한 후, output2를 대칭복사한 output를 출력합니다. string을 다루는 부분이 다소 정돈되지 못하여 이해가 어려우실 수 있을 것 같습니다. 양해 부탁드립니다.
실행 단계에서 아래와 같은 오류가 발생했습니다. 어떻게 처리해야 할까요..? ERROR: Connection is broken: "java.net.ConnectException: Connection refused: localhost" [90067-199] Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:179) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:119) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at hellojpa.JpaMain.main(JpaMain.java:9) Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:118) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.addConnections(DriverManagerConnectionProviderImpl.java:363) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:282) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:260) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections$Builder.build(DriverManagerConnectionProviderImpl.java:401) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:112) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:75) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:100) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ... 14 more Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: localhost" [90067-199] at org.h2.message.DbException.getJdbcSQLException(DbException.java:617) at org.h2.message.DbException.getJdbcSQLException(DbException.java:427) at org.h2.message.DbException.get(DbException.java:194) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:435) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:317) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148) at org.h2.Driver.connect(Driver.java:69) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) ... 29 more Caused by: java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.pollConnect(Native Method) at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:554) at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) at java.base/java.net.Socket.connect(Socket.java:633) at org.h2.util.NetUtils.createSocket(NetUtils.java:103) at org.h2.util.NetUtils.createSocket(NetUtils.java:83) at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:115) at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:431) ... 34 more
CPU 스케줄링 개요 20:20초 즈음부터 나오는 내용인데요 윈도우에서 프로그램 / 백그라운드 서비스 중 둘중 하나를 최적화시킬 수 있는 설정이 있고, [IO가 있음 + 클라가 많음]라는 서버특성상 대기하는 상황이 많다고, 그래서 백그라운드 서비스에 최적화하는 게 좋다~ 와 같은 뉘앙스로 말씀해주신 것 같은데요 궁금한점이 있습니다 백그라운드 운영체제라는 게 무엇인가요? 제가 이해한바로는 그냥 우선순위가 낮게 설정된 녀석들로 이해했는데 맞을까요? 그러면 윈도우에서 백그라운드 최적화를 한다는 게 무슨 의미인지도 궁금하네요. 우선순위와 무관하게 그냥 라운드로빈? 같이 좀더 순차적으로 cpu를 할당해주는 그런느낌인가 싶기도하고 ㅎㅎ.. 백그라운드에 무엇인가를 두는 게 이점이 있는건가요? 설명해주신 부분, 그러니까 20분 걸릴 게 어차피 25분 걸린다 그래서 우선순위를 낮춰서(백그라운드에 둬서) 그냥 알아서 되게 하고, 대신 다른 프로세스(예를 들면 gui관련)를 조금 더 잘 동작하게하자~ 라는 부분은 이해했습니다 그런데 서버의 입장에서 보면 , 어차피 서버는 클라의 요청을 처리하는 것이 주목적인만큼 처리하게 되는 대부분의 프로세스가 IO기반의 클라이언트 요청일테고, 그러면 거기서 뭔가 우선순위를 나눠서 백그라운드로 돌리는 것의 의의를 잘 모르겠네요(물론 이건 제가 지식이 부족한 백엔드 웹개발자라.. 그렇게 느끼는 것 같기도 하네요 ㅎㅎ.. ) 양질의 강의 감사합니다
다른 질문 답변에 DAO에 인터페이스를 사용하는 이유 DAO에 인터페이스를 사용하는 이유는 다양한 DAO 구현체를 제공하기 위해서가 아니라 의존성을 끊기 위해서입니다. 이렇게 답변을 하신게 있는데, 그렇다면 DAO에 인터테이스를 사용하는 주된이유는 SOLID원칙 중 DIP원칙을 통해서 의존성을 끊기 위해서라고 이해를 했습니다 그런데 OCP와 DIP가 의미적인 부분에서 일맥상통하는 부분이 있는 것 같기도 하고,, 좀 구별하기가 어려운 것 같습니다 추가적으로 같이 달아주신 블로그 링크도 확인했지만 여전히 모호한 것 같습니다 둘다 인터페이스를 통해서 구현을 할 수 있지만 OCP는 다양한 DAO구현체를 제공하기 위한 것에 초점을 맞춘 것이고, DIP는 의존성을 끊기 위한 것에 초점을 맞춘 것이라고 이해하면 될까요 흠,, 명확하게 이해하진 못한 것 같습니다 어떻게 이해해야될까요..?!
안녕하세요. 강의 영상 화질과 관련해서 문의 드립니다. 강의 영상 중에 섹션2 클라이언트 시스템 구현 근접 공격 영상부터 FHD에서도 강의 영상이 조금 흐리게 보이는 현상이 있습니다. (Render Texture 강의는 괜찮습니다!) 근접 공격 이전 강의인 방치형 레벨업 버튼 강의와 바로 비교가 됩니다. 확인 부탁 드립니다. 감사합니다!
AssetManager 챕터 강의 중, 다음의 두 함수를 추가하게 되는데, FSoftObjectPath GetAssetPathByName(const FName& AssetName); const FAssetSet& GetAssetSetByLabel(const FName& Label); 첫번째 함수인 "FSoftObjectPath GetAssetPathByName(const FName& AssetName);" 경우에는 왜 "const FAssetSet& GetAssetSetByLabel(const FName& Label);" 처럼 "FSoftObjectPath&" Return 타입이 아닌, "FSoftObjectPath" Return 타입으로 작업하셨는지 문의 드려봅니다.