小编use*_*188的帖子

如何在 Redux Toolkit 的 createSlice 中使用 Redux-Thunk?

==================== TLDR ==========================

@markerikson(请参阅已接受的答案)亲切地指出了当前的解决方案和未来的解决方案。

编辑:2020 年 11 月 15 日:链接到文档以在 Slice 中使用 Async Thunk

RTK确实支持使用 thunk 中间件的 reducer 中的 thunk(参见答案)。

在 1.3.0 版本(目前 alpha 于 2020 年 2 月)中,有一个辅助方法createAsyncThunk() createAsyncThunk将提供一些有用的功能(即根据 Promise的状态触发 3 个“扩展”reducer)。

ReduxJS/Toolkit NPM 发布

========================原始帖子 2020 年 2 月====================== ====

我对 Redux 很陌生,遇到了 Redux Toolkit (RTK) 并希望实现它提供的更多功能(或者在这种情况下可能没有?)(2020 年 2 月)

我的应用程序分派到通过创建的减速器切片createSlice({})(请参阅createSlice api docs

到目前为止,这非常有效。我可以轻松地使用内置dispatch(action)useSelector(selector)调度动作,并在我的组件中很好地接收/响应状态变化。

我想使用 axios 的异步调用从 API …

redux redux-thunk redux-toolkit

29
推荐指数
3
解决办法
3万
查看次数

python中的字节操作(XOR)

    #!/usr/bin/env python3

import binascii


var=binascii.a2b_qp("hello")
key=binascii.a2b_qp("supersecretkey")[:len(var)]

print(binascii.b2a_qp(var))
print(binascii.b2a_qp(key))


#here i want to do an XOR operation on the bytes in var and key and place them in 'encryption': encryption=var XOR key

print(binascii.b2a_qp(encrypted))
Run Code Online (Sandbox Code Playgroud)

如果有人能够告诉我如何实现这一目标,我将非常高兴.对于整个数据类型的转换来说是非常新的所以是的...通过python wiki阅读并不像我想的那样清晰:(.

python encryption byte operation type-conversion

10
推荐指数
2
解决办法
4万
查看次数

JPA 保存多个实体,在 Spring @Transactional 内部并启用 Exception.class 回滚时不会回滚

我已经研究了好几个小时了,但当我将实体保存在封装事务中时,我找不到一种方法来绕过 JPARepository 自动启动/提交事务的问题。

我总共创建了 3 个实体。前 2 个实体将被创建,以便在创建第三个实体时ClientAdmin,实体可以在持久化之前形成关系。CreditPotInstitution

当抛出异常时,我希望它能够使创建的实体不被提交(即整个过程回滚)。

目前,我可以在日志中看到 JPA Save 方法可能会启动自己的事务(我不完全理解日志),这会导致已repo.save(entity)调用的实体在自己的事务中提交?

任何帮助将不胜感激。

    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void createInstitution(InstitutionSignUpForm form) throws Exception {

    //Create Admin account.
    ClientAdmin clientAdmin = new ClientAdmin();
    clientAdmin.setRole(roleRepo.findOneByRole("SUPER_ADMIN").orElseThrow(() -> new Exception("Can not resolve role SUPER_ADMIN")));
    clientAdmin.setPassword(passwordEncoder.encode(form.getPassword()));
    clientAdmin.setUsername(form.getUsername());
    clientAdmin = clientAdminRepo.save(clientAdmin);

    //Create Credit Pot for institution.
    CreditPot creditPot = new CreditPot();
    creditPot.setIsPrimaryPot(true);
    creditPot.setName("Primary Credit Pot");
    creditPot.setCredits(300L);
    creditPot = creditPotRepo.save(creditPot);

    System.out.println("Throwing Exception.");
    if(1==1) throw new Exception("!!!", new …
Run Code Online (Sandbox Code Playgroud)

java spring transactions spring-data-jpa spring-boot

6
推荐指数
1
解决办法
5796
查看次数

并发请求事务以防止不必要的持久化

我试图弄清楚如何解决最初看起来“简单”的问题。

UserAccounts认为可以有很多Purcahse秒,但商业逻辑使然只能有一个PurchasePurchaseState.IDLE状态(在实体领域)。Apurchase在第一次创建时是空闲的。

我有一个存储库,其中包含一种方法来确定用户是否购买了已存在给定状态的产品:

boolean existsByPurchaseStateInAndUserAccount_Id(List<PurchaseState> purchaseState, long userAccountId);
Run Code Online (Sandbox Code Playgroud)

我注意到一些测试并认为当两个请求非常接近/同时传递时(即并发问题和/或竞争条件),我可以创建多个购买。

这导致用户帐户有两次购买,并且都具有 IDLE 状态。

我绘制了一个快速图表来显示我认为正在发生的事情: TX

现在,有没有办法使用 @Transactional 来导致第二个持久性/事务回滚?我不确定简单地包装服务方法@Transcational(isolation=REPEATED_READ) 是否会缓解这个问题?即有没有办法 SQL 将处理这个事务?

我只能猜测这实际上并没有帮助,因为 SQL 事务没有跟踪existsBy,因此不会回滚?

countBy如果存在 >1 个符合条件的实体,是否是在方法结束时运行第二个查询以回滚事务的唯一真正解决方案?我仍然不觉得这是“完美的”并完全解决了竞争条件/TX 问题......

TX2

因此,该服务将看到有 2 个实体在两个事务中提交(尚未提交),但对于 T2,该服务可以抛出 RuntimeException 以触发回滚?

抱歉,我一直在阅读有关事务隔离的内容,但它似乎只适用于说我是否正在检查实体的字段值/列,而不是使用基于“count(*)”查询返回的逻辑。 ..

谢谢你的任何启示。

java mysql spring transactions spring-boot

6
推荐指数
1
解决办法
124
查看次数

TestContainers SQL连接过多异常

我正在使用 Spring Boot 并定义了 3 个 SQL 数据源。我正在使用 SpringBoot 属性为数据源创建 3 个测试容器。

当我运行测试时,容器变得越来越慢,最终我终于得到了异常 Caused by: java.sql.SQLNonTransientConnectionException: Too many connections

一个测试示例是:


    @Test
    @DisplayName("Require Client Access.")
    @Transactional(transactionManager = "thirdTransactionManager")
    @Sql(
        scripts = "/db/sql/some_test_data_basic.sql",
        config = @SqlConfig(dataSource = "thirdDatasource", transactionManager = "thirdTransactionManager"))
    void requireCustomerAccess() throws CompClientAccessException {

         //Assertions
     }

Run Code Online (Sandbox Code Playgroud)

我正在使用 FlyWay 迁移架构,因此我不确定每个测试类之间 Hikari 或 Flyway 是否在每个方法类导致连接过多后没有关闭其连接池连接?

我有 3 个 TestContainers 通过 Spring 的 props 启动,如下所示。我可以在 docker 中看到它们。

datasource.jdbc.url=jdbc:tc:mysql:8.0.22:///databasename?TC_TEMPFS=/testtempfs:rw
datasource.username=dev
datasource.password=password
Run Code Online (Sandbox Code Playgroud)

DatasourceConf 的片段(三个之一):

datasource.jdbc.url=jdbc:tc:mysql:8.0.22:///databasename?TC_TEMPFS=/testtempfs:rw
datasource.username=dev
datasource.password=password
Run Code Online (Sandbox Code Playgroud)

我猜测 HikariPools 正在为每个测试类重新制作并且不会关闭?

 o.h.e.j.s.SqlExceptionHelper   : HikariPool-45 - …
Run Code Online (Sandbox Code Playgroud)

java spring flyway spring-boot testcontainers

2
推荐指数
2
解决办法
4850
查看次数

IF ==不适用于python中的列表.不知道我做错了什么.数据的print()显示它们是平等的...我错过了什么?

所以,这是我的代码.它旨在从用户那里获得答案.将他们的答案存储在一个列表中(答案列表.将他们的答案与answer.txt文件的行列表进行比较.

问题是,尽管它们是相同的(查看print()输出),但脚本看不到它们如下:

import time
import os

answerlist = []
check = "N"
score=0
real_answerlist=[]
checkanswerlist=[]



name = input("\nWhat is your FIRST name?\n")
surname = input("\nWhat is your SECOND/surname?\n")
classname = input("\nWhat is your class (e.g. \"8A\")\n")
while check != "Y":
    print("Are these detail correct? : "+name + " "+surname+" " + classname+"\n")
    check = input("Enter (Y or N)\n")


#ASK QUESTIONS

for i in range(1, 11):
    answerlist.insert(i,input("The answer to question "+str(i)+" is: \n"))


#show answers
for i in range (1, 5): …
Run Code Online (Sandbox Code Playgroud)

python if-statement compare list

1
推荐指数
1
解决办法
71
查看次数