总是在我使用这样的lambda表达式时:
.map(obj -> foo.makeSomething(obj))
Run Code Online (Sandbox Code Playgroud)
IntelliJ建议:"可以用方法参考替换......".当我尝试的时候:
.map(Foo::makeSomething)
Run Code Online (Sandbox Code Playgroud)
我得到以下声明:"无法从静态上下文引用非静态方法".
为什么Idea会告诉我如果它不正确我应该使用方法参考?
我使用的是Ubuntu 16.04.当我想git push origin master我得到:错误:RPC失败; curl 56 GnuTLS recv error(-12):收到TLS致命警报.致命:远程端意外致命地致命:远程端意外地挂断了所有最新的东西
我的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,因为下一页有一个元素更多?
我想检查元素是否在列表中间.我搜索中间元素然后我检查是否是列表的成员,但我得到无限循环.
我的谓词:
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])我时,我没有得到结果.解释器不会中断处理.
我想学习非阻塞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) 我无法在方法 annotated 中捕获异常@Transactional。如果save操作成功,我想向创建的用户发送邮件。
当用户名已被使用时,PostgreSQL 抛出异常PSQLException,其扩展SQLExcpetion名为Exception. 我无法捕捉Exception,PSQLException然后我尝试捕捉Throwable,这是有效的,但没有解决我的问题,并且发现捕捉Throwable是新问题的原因。
当我得到 DataIntegrityViolationException(这是 Spring 的一个异常)时,我想传播它,因为我的控制器有处理程序,它返回为这个具体异常指定的语句和状态。当我捕获 Throwable 时,我必须始终抛出 RuntimeException。
很奇怪的是,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的处理程序正在捕获此异常。
知道出了什么问题,或者你知道类似的问题吗?
我不明白什么问题@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 MyType。bean1具有@Primary注释,因此当我将类型的对象自动装配MyType到某些构造函数时,bean1将被选择。
如果总是选择主bean,为什么有两个相同类型的bean有用吗?我何时以及如何使用bean2未标注为主要的?该示例显示了bean2冗余且未使用。
我有一个预测,它获得前 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。
我的服务中有一个方法:
@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) 我不能传递变量ownProps从mapStateToProps到选择。我的选择器:
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) spring ×5
java ×2
prolog ×2
spring-mvc ×2
git ×1
react-redux ×1
redux ×1
reselect ×1
rest ×1
rollback ×1
spring-boot ×1
spring-data ×1
transactions ×1
ubuntu ×1