小编Max*_*axG的帖子

REST服务:返回异常的正确方法

我使用Jersey API作为我的REST服务.我的问题是:是否有更优雅的方式以JSON形式返回异常?关心自己创建一个json对象并将其直接附加到响应是否更好?

这是服务中某个方法的简化示例.如您所见,我只使用HashMap,因为该方法可能会抛出异常,在这种情况下,我需要返回有关It的信息.

@Path("/admin")
public class AdminService {

    @Context
    HttpServletRequest request;

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public Map<Integer, String> createCompany(Company company){

        Map<Integer, String> map = new HashMap<>();
        try{
            AdminFacade adminFacade = (AdminFacade)Utility.getFacade(request);
            adminFacade.createCompany(company);
            map.put(1,"success");
        } catch (ExceptionREST e) {
            map.put(e.getErrorNumber(), e.getMessage());
        } finally {
            return map;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java rest exception

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

对Kotlin和arrow-kt库的理解

我用箭头KT库,我想聘请EitherIO在同理解力。

说我有下一段代码:

IO.monad().binding {
    val ans: Either<Error, Data> = someFunctionThatReturnsEitherWrappedInIO().bind()
}
Run Code Online (Sandbox Code Playgroud)

现在,我想在上使用绑定ans

val data: Data = ans.bind() // My intent
Run Code Online (Sandbox Code Playgroud)

在第一段代码的范围内是否可以执行此操作?

当前,我正在尝试将Either绑定嵌套在IO绑定的范围内,但是我不确定这是一个好习惯:

IO.monad().binding {
    val ans: Either<Error, Data> = someFunctionThatReturnsEitherWrappedInIO().bind()
    val ansB: Either<Error, OtherData> = someOtherFunctionThatReturnsEitherWrappedInIO().bind()

    val newData: Either<Any, NewData> = Either.monad<Any>().binding {
        val data: Data = ans.bind()
        val otherData: OtherData = ansB.bind()
        NewData(data.a, otherData.lala)
    }.fix()
}
Run Code Online (Sandbox Code Playgroud)

io functional-programming either kotlin arrow-kt

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

Kotlin arrow-kt Flatten nested Aither

我正在使用函数库arrow-kt(以前称为kategory)进行编程.我正在使用Eithermonad来聚合api调用的错误或成功信息.我让自己进入一个状态(这不应该首先发生)我有一个nestet Eithermonad.我试图压扁结构以获得内部单子.文档非常有限,我找不到办法.

这是我想要展平的嵌套Either monad的示例:

Either.right(Either.right(Either.left("error")))
Run Code Online (Sandbox Code Playgroud)

functional-programming kotlin

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

堆排序与插入排序JMH基准:为什么我的插入impl.花更少的时间?

我已经实现了Insertion排序和堆排序.理论上,Heap排序具有nlogn时间复杂度,插入具有n ^ 2.为什么,然后我的Insertion实现需要大约6倍的时间来排序100,000个长阵列?

我使用JMH来对每种排序算法的平均时间进行基准测试.这是我的基准代码:

import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

public class MyBenchmark {

// setup the benchmark - create a new array for each iteration
    @State(Scope.Thread)
    public static class MyState {
        int[] array = null;

        @Setup(Level.Iteration)
        public void doSetup() {
            array = createArray(100000, 0, 100);
        }
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    @OutputTimeUnit(TimeUnit.SECONDS)
    public void insertionSort(MyState state) {
        int[] array = state.array;

        for (int i = …
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm insertion-sort heapsort

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

如何按 HashMap&lt;String,Int&gt; 在 Kotlin 中的值对它们的顺序进行排序?

这是我的例子,我如何在 Kotlin 中做到这一点?

var hashMapForTry = HashMap<String,Int>()

hashMapForTry.put("Hi",5)
hashMapForTry.put("What",7)
hashMapForTry.put("How",2)
hashMapForTry.put("Go",1)
hashMapForTry.put("Ford",9)
Run Code Online (Sandbox Code Playgroud)

sorting list hashmap treemap kotlin

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