小编use*_*ser的帖子

Intellij - 可以用方法参考替换

总是在我使用这样的lambda表达式时:

.map(obj -> foo.makeSomething(obj))
Run Code Online (Sandbox Code Playgroud)

IntelliJ建议:"可以用方法参考替换......".当我尝试的时候:

.map(Foo::makeSomething)
Run Code Online (Sandbox Code Playgroud)

我得到以下声明:"无法从静态上下文引用非静态方法".

为什么Idea会告诉我如果它不正确我应该使用方法参考?

java intellij-idea

64
推荐指数
1
解决办法
4万
查看次数

git错误:RPC失败; 卷曲56 GnuTLS

我使用的是Ubuntu 16.04.当我想git push origin master我得到:错误:RPC失败; curl 56 GnuTLS recv error(-12):收到TLS致命警报.致命:远程端意外致命地致命:远程端意外地挂断了所有最新的东西

git ubuntu

45
推荐指数
10
解决办法
5万
查看次数

Spring分页 - 请求参数

我的REST控制器:

    @GetMapping("/test")
    public Page<MyObject> pathParamTest(Pageable pageable) {
        return myService.getPage(pageable);
    }
Run Code Online (Sandbox Code Playgroud)

我发送如下请求:

localhost:8091/endpoint/test?page=0&size=3&sort=id&direction=DESC
Run Code Online (Sandbox Code Playgroud)

这是我对服务器的回应:

{
    "content": [
        {
            "id": 1
        },
        {
            "id": 2
        },
        {
            "id": 3
        }
    ],
    "last": true,
    "totalPages": 1,
    "totalElements": 3,
    "first": true,
    "sort": [
        {
            "direction": "ASC",
            "property": "id",
            "ignoreCase": false,
            "nullHandling": "NATIVE",
            "descending": false,
            "ascending": true
        }
    ],
    "numberOfElements": 3,
    "size": 3,
    "number": 0
}
Run Code Online (Sandbox Code Playgroud)

但请求仍然是方向= ASC.

如何发送到服务器方向= DESC?

为什么响应有一个字段"last"= true,因为下一页有一个元素更多?

rest spring spring-mvc

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

Prolog - 无限循环

我想检查元素是否在列表中间.我搜索中间元素然后我检查是否是列表的成员,但我得到无限循环.

我的谓词:

remove_first([_,H1|T], [H1|T]).

remove_last([_],[]).
remove_last([H|T], [H|T2]) :- remove_last(T, T2).

remove_first_and_last([X],[X]).
remove_first_and_last(In, Out) :- 
    remove_first(In, Out1),
    remove_last(Out1, Out).

middle([X], [X]).
middle(In, X) :-
    remove_first_and_last(In, Out),
    middle(Out, X).

member(X, [X|_]).
member(X, [_|T]) :- member(X, T).

is_middle(X, In) :-
    middle(In, Out),
    member(X, Out), !.
Run Code Online (Sandbox Code Playgroud)

当我打电话is_middle(1,[2,1,3])然后我就变成了现实.但是当我打电话给is_middle(1,[2,2,3])我时,我没有得到结果.解释器不会中断处理.

prolog failure-slice

7
推荐指数
3
解决办法
738
查看次数

Spring是否在休息控制器中为每个请求创建新线程?

我想学习非阻塞REST,但首先我写了阻塞控制器进行比较.令我惊讶的是,Spring并没有阻止传入的请求.

简单的阻止服务:

@Service
public class BlockingService {

    public String blocking() {
        try {
            Thread.sleep(10000L);
        } catch (InterruptedException ign) {}
        return "Blocking response";
    }
}
Run Code Online (Sandbox Code Playgroud)

简单的REST控制器:

@Slf4j
@RestController
public class BlockingRestController {

    private final BlockingService blockingService;

    @Autowired
    public BlockingRestController(BlockingService blockingService) {
        this.blockingService = blockingService;
    }

    @GetMapping("blocking")
    public String blocking() {
        log.info("Starting blocking request processing...");
        return blockingService.blocking();
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我在想,当我使用来自4个分离的罪犯的curl发送4个请求时,我得到:

1. Starting blocking request processing... (console where spring is running)
2. (4 terminals waiting)
3. "Blocking response" (in 1st terminal)
4. Starting …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc

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

我无法在@Transactional 注释的方法中捕获异常

我无法在方法 annotated 中捕获异常@Transactional。如果save操作成功,我想向创建的用户发送邮件。

当用户名已被使用时,PostgreSQL 抛出异常PSQLException,其扩展SQLExcpetion名为Exception. 我无法捕捉ExceptionPSQLException然后我尝试捕捉Throwable,这是有效的,但没有解决我的问题,并且发现捕捉Throwable是新问题的原因。

  1. 当我得到 DataIntegrityViolationException(这是 Spring 的一个异常)时,我想传播它,因为我的控制器有处理程序,它返回为这个具体异常指定的语句和状态。当我捕获 Throwable 时,我必须始终抛出 RuntimeException。

  2. 很奇怪的是,emailSender.sendEmail()即使抛出了一些异常,它也会被调用。但是如果userRepository抛出异常,则不应调用任何方法,并且应在catch语句中捕获异常,然后应回滚事务。我是否正确理解交易?

我的服务的实施:

@Transactional
public UserEntity createUser(UserEntity user) {
    try {
        final UserEntity saved = userRepository.save(user);
        emailSender.sendEmail(saved);
        return saved;
    } catch (Throwable t) {
        throw new RuntimeException();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 IDEA 调试此方法时,调试器不会输入 catch 语句,但我注释@RestControllerAdvice的处理程序正在捕获此异常。

知道出了什么问题,或者你知道类似的问题吗?

spring transactions rollback

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

如果存在@Primary bean,为什么还要创建另一个bean?

我不明白什么问题@Primary可以解决。

该文件说:

[@Primary]指示当多个候选者有资格自动装配单值依赖项时,应优先考虑Bean。如果候选对象中仅存在一个“主” bean,它将是自动装配的值。

示例代码:

@Configuration
class Configuration {
   @Bean
   @Primary
   MyType bean1() {
       return new MyType(1);
   }

   @Bean
   MyType bean2() {
       return new MyType(2);
   }
}
Run Code Online (Sandbox Code Playgroud)

范例

我有2个bean,bean1并且bean2都带有type MyTypebean1具有@Primary注释,因此当我将类型的对象自动装配MyType到某些构造函数时,bean1将被选择。

如果总是选择主bean,为什么有两个相同类型的bean有用吗?我何时以及如何使用bean2未标注为主要的?该示例显示了bean2冗余且未使用。

java spring spring-boot

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

Prolog - 将列表分成 n 个元素部分

我有一个预测,它获得前 N 个元素:

nfirst(N, _, Lnew) :- N =< 0, Lnew = [].
nfirst(_, [], []).
nfirst(N, [X|Y], [X|Y1]) :- N1 is N - 1, nfirst(N1, Y, Y1).
Run Code Online (Sandbox Code Playgroud)

它有效:% nfirst(3,[1,2,3,4,5,6],X)。% X = [1, 2, 3]

我需要一个像下面这样的划分列表的预测:

% divide([a,b,c,d,e,f,g,h],[3,2,1,2],X).
% X = [[a,b,c],[d,e],[f],[g,h]]
Run Code Online (Sandbox Code Playgroud)

最好的方法是使用 nfirst。

prolog

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

Spring - 无法捕获 ConstraintViolationException

我的服务中有一个方法:

@Transactional
    public MyResponse create(UserCredentials cred) {
        User user = new User(cred);
        try {
            final User created = userRepository.save(user);
            return new MyResponse(user, "Created");
        } catch (TransactionSystemException e) {
            return new MyResponse(null, "Cannot create");
        } catch (ConstraintViolationException e) {
            return new MyResponse(null, "Cannot create");
        }
    }
Run Code Online (Sandbox Code Playgroud)

用户类:

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(
            name = "id",
            updatable = false,
            nullable = false
    )
    private Long id;

    @NotBlank
    @Column(
            nullable = false,
            unique = true …
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa

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

Redux - 将 ownProps 参数传递给选择器

我不能传递变量ownPropsmapStateToProps到选择。我的选择器:

export const nameSelector = createSelector(
    [
        state => state.element.get('name')
    ],
    (name) => !name.trim()
);

const mapStateToProps = (state, ownProps) => ({
    disabledAfterSave: nameSelector(state)
});
Run Code Online (Sandbox Code Playgroud)

我需要一个选择器:

export const nameSelector = createSelector(
        [
            state => state.element.get('name')
        ],
        (name, ownProps) => !name.trim() && ownProps.showMessage
    );

const mapStateToProps = (state, ownProps) => ({
    disabledAfterSave: nameSelector(state, ownProps)
});
Run Code Online (Sandbox Code Playgroud)

但现在我收到一个错误:ReferenceError: ownProps is not defined.

当我尝试像下面这样传递它时:

export const nameSelector = (ownProps) => createSelector(
        [
            state => state.element.get('name')
        ],
        (name) => …
Run Code Online (Sandbox Code Playgroud)

redux react-redux reselect

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