小编Fee*_*ard的帖子

如果在macrodef中,则为Ant条件

在蚂蚁中,我有一个macrodef.

假设我必须使用这个macrodef,并且如果属性special.property存在并且为true,我想在所述macrodef中运行一个项目,我该怎么办?

我现在有

<macrodef name="someName">
    <sequential>
        <someMacroDefThatSetsTheProerty  />
        <some:thingHereThatDependsOn if="special.property" />
    <sequential>
</macrodef>
Run Code Online (Sandbox Code Playgroud)

哪个不起作用 - some:thingHereThatDependsOn没有"if"属性,我无法添加一个.

antcontrib不可用.

有了目标,我可以给目标一个"if",我可以用macrodef做什么?

ant

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

类继承:泛型扩展泛型

假设我有简单的课程

public class MyObject {
}
Run Code Online (Sandbox Code Playgroud)

以及处理MyObject子类的处理程序接口

public interface MyObjectHandler<V extends MyObject>{
     List<V> handle(List<V> objects);
}
Run Code Online (Sandbox Code Playgroud)

假设,我有BigObjects和SmallObjects(它们都扩展了MyObject),我想为它们分别设置处理程序.因此,我使用特定的泛型创建MyObjectHandler的两个接口.

class BigObject extends MyObject {}
class SmallObject extends MyObject {}

// Handlers interfaces
interface BigObjectHandler extends MyObjectHandler<BigObject>{}
interface SmallObjectHandler extends MyObjectHandler<SmallObject>{}

// Concrete handlers
class BigHandler1 implements BigObjectHandler {....}
class BigHandler2 implements BigObjectHandler {....}

class SmallHandler1 implements SmallObjectHandler {....}
class SmallHandler2 implements SmallObjectHandler {....}
Run Code Online (Sandbox Code Playgroud)

现在让我们假设我们已经创建了AbstractHandlerChain<...>抽象类.因此,我们可以创建BigHandlerChain类并注入我们的BigHandlers(和SmallHandlerChain一样).

class BigHandlerChain extends AbstractHandlerChain<BigObjectHandler> {
    // Inject only childs of BigObjectHandler. E.g. via spring @Autowired
    public …
Run Code Online (Sandbox Code Playgroud)

java generics inheritance

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

如何在java中使接受的套接字无阻塞

我接受来自客户端的连接,然后将连接的套接字传递给另一个对象,但是,该套接字需要是非阻塞的.我正在尝试使用,getChannel().configureBlocking(false)但似乎没有用.它需要是非阻塞的,因为下面的方法每100ms调用一次.还有其他方法我应该做这个非阻塞?谢谢你的帮助!

public void checkForClients() {
  DataOutputStream out;
  DataInputStream in;
  Socket connection;
  InetAddress tempIP;
  String IP;

  try {
     connection = serverSocket.accept();
     connection.getChannel().configureBlocking(false);

     System.err.println("after connection made");

     in = new DataInputStream(connection.getInputStream());
     out = new DataOutputStream(connection.getOutputStream());
     tempIP = connection.getInetAddress();
     IP = tempIP.toString();

     System.err.println("after ip string");

     // create a new user ex nihilo
     connectedUsers.add(new ConnectedUser(IP, null, connection, in, out));


     System.err.println("after add user");
  } catch (SocketTimeoutException e) {
     System.err.println("accept timeout - continuing execution");
  } catch (IOException e) {
     System.err.println("socket accept failed");
  }
}
Run Code Online (Sandbox Code Playgroud)

java sockets nonblocking

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

分区有限制

我需要通过带有限制元素的谓词将列表拆分为两个列表true.
例如,假设我有这样的列表:A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]我希望通过谓词o -> o % 2 == 0和限制将其拆分3.
我想到达Map<Boolean, List<Integer>>哪里:

true -> [2, 4, 6] // objects by predicate and with limit (actually, order is not important)
false -> [1, 3, 5, 7, 8, 9, 10]  // All other objects
Run Code Online (Sandbox Code Playgroud)

Java 8具有通过谓词拆分流的收集器 - Collectors.partitioningBy(...)但它不支持限制.是否可以使用java 8 streams/guava/apache执行此操作,还是应该创建自己的此函数实现?

编辑:我写了这个函数.如果您对此有任何建议,请随时告诉我.MultiValuedMap是可选的,可以替换为Map.

private <E> MultiValuedMap<Boolean, E> partitioningByWithLimit(Predicate<E> predicate, List<E> …
Run Code Online (Sandbox Code Playgroud)

java collections java-8 java-stream

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

readLine() 在 Kotlin/Native 中不等待用户输入

这是一个简单的脚本

fun main() {
    print("ready> ")
    val input = readLine()
    println("User input: $input")
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,gradle runReleaseExecutableMacos我希望我会看到一个ready>提示,并且有可能输入一些字符。但这个程序User input: null结果立即结束。

我错过了什么吗?

kotlin kotlin-native

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

计算青蛙到达河对岸所需的最少跳跃次数

我处理下面提供的 Codility 问题,

斐波那契数列使用以下递归公式定义:

F(0) = 0
F(1) = 1
F(M) = F(M - 1) + F(M - 2) if M >= 2
Run Code Online (Sandbox Code Playgroud)

一只小青蛙想要到河的另一边。青蛙最初位于河的一侧(位置 ?1),并想到达另一侧(位置 N)。青蛙可以跳过任何距离 F(K),其中 F(K) 是第 K 个斐波那契数。幸运的是,河上有很多树叶,青蛙可以在树叶之间跳跃,但只能在位置 N 的河岸方向跳跃。

河上的树叶用由 N 个整数组成的数组 A 表示。数组 A 的连续元素表示从 0 到 N 的连续位置?1 在河上。数组 A 仅包含 0 和/或 1:

0 代表没有叶子的位置;1表示包含叶子的位置。目标是计算青蛙可以到达河对岸(从位置?1 到位置N)的最少跳跃次数。青蛙可以在位置?1 和N(河岸)之间跳跃,每个位置都包含一片叶子。

例如,考虑数组 A 使得:

A[0] = 0
A[1] = 0
A[2] = 0
A[3] = 1
A[4] = 1
A[5] = 0
A[6] = 1
A[7] = …
Run Code Online (Sandbox Code Playgroud)

java arrays algorithm performance

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

如何在Spring引导分页中返回DTO而不是实体?

我的 DTO 与实体不同。如何在仍然显示所有页面的信息的同时返回 DTO 而不是带有分页的实体?

控制器:

@GetMapping("/{name}")
public Page<Student> getStudent(@PathVariable(value = "name") String name, Pageable pageable){
     Page <Student> page = studentService.getStudent(name, pageable);
     return page;
}
Run Code Online (Sandbox Code Playgroud)

服务:

public Page<Student> getStudent(String name, Pageable pageable){
    Page<Student> students = studentRepository.findAllByName(name, pageable);
    return students;
}
Run Code Online (Sandbox Code Playgroud)

存储库:

@Repository
public interface StudentRepository extends 
    PagingAndSortingRepository<Student, Long> {
    Page<Student> findAllByName(String name, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)

DTO:

@Data
public class StudentDTO extends ResourceSupport {
   Long _id;
   String name;
}
Run Code Online (Sandbox Code Playgroud)

实体:

@Entity
@Data
@NoArgsConstructor(force = true, access = AccessLevel.PUBLIC)
public class Student …
Run Code Online (Sandbox Code Playgroud)

java spring-boot

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

来自java中未分类的arraylist的最小元素

我有一个dto类,它存储了一些特定主题的学生和标记.基本上是这样的.

List<StudentInfoDTO> studentInfoDTO = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

其中StudentInfoDTO如下所示

public class StudentInfoDTO {

    Long studentId;
    Short marks;

}
Run Code Online (Sandbox Code Playgroud)

现在我想要有最小分数的学生ID.

我在下面试过但没有给出预期的结果.

int smallest = 0;
for(int i = 0; i < studentInfoDTO.size(); i++) {
    smallest = studentInfoDTO.get(i).getMarks();
    int x = studentInfoDTO.get(i).getMarks();
    if (x < smallest) {
        smallest = x;
    }                       
}
Run Code Online (Sandbox Code Playgroud)

java list arraylist java-10

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