在蚂蚁中,我有一个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做什么?
假设我有简单的课程
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) 我接受来自客户端的连接,然后将连接的套接字传递给另一个对象,但是,该套接字需要是非阻塞的.我正在尝试使用,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) 我需要通过带有限制元素的谓词将列表拆分为两个列表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) 这是一个简单的脚本
fun main() {
print("ready> ")
val input = readLine()
println("User input: $input")
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,gradle runReleaseExecutableMacos我希望我会看到一个ready>提示,并且有可能输入一些字符。但这个程序User input: null结果立即结束。
我错过了什么吗?
我处理下面提供的 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) 我的 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) 我有一个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 ×6
algorithm ×1
ant ×1
arraylist ×1
arrays ×1
collections ×1
generics ×1
inheritance ×1
java-10 ×1
java-8 ×1
java-stream ×1
kotlin ×1
list ×1
nonblocking ×1
performance ×1
sockets ×1
spring-boot ×1