小编ska*_*ral的帖子

Haskell:具有类类型参数的类实例

美好的一天.我是Haskell的新手.关于声明和实例化一些自定义类,有一点我不清楚.

  1. Integralhaskell 有一个标准类.根据hackage,Integral声明强制方法quot :: a -> a -> a.所以这意味着该类的每个实例都应该有这个方法实现,对吗?

  2. 我们可以使用Integral作为参数来声明一些函数,例如:

proba :: (Integral a) => a -> a -> a
proba x y = x `quot` y
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好

  1. 现在让我们声明我们自己的类Proba:
class Proba a where
    proba :: a -> a -> a
Run Code Online (Sandbox Code Playgroud)

我可以实现这样的Int或Integer(或其他数据类型)实例:

instance Proba Integer where
    proba x y = x `quot` y

instance Proba Int where
    proba x y = x `quot` y
Run Code Online (Sandbox Code Playgroud)

但我不想.我希望每个Integral都有一个实例.但是当我尝试这样做时,我收到一个错误:

instance (Integral a) => Proba a where
    proba x …
Run Code Online (Sandbox Code Playgroud)

haskell

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

Spring boot + Spring Security:如何压制基本的auth表单

美好的一天.

我在Spring启动自动配置应用程序的上下文中使用Spring安全性.我的目标是设置基本身份验证,以便标准浏览器的基本身份验证表单不会显示在401上.从Google我发现要实现它,我需要将默认的"WWW-Authenticate"标题更改为不同于"基本xxxxx".

为此,我宣布了一个过滤器:

@Bean
@Order(Integer.MAX_VALUE)
public Filter customAuthFilter() {
    return new Filter() {

        @Override
        public void init(FilterConfig fc) throws ServletException {
        }

        @Override
        public void doFilter(ServletRequest sreq, ServletResponse sresp, FilterChain fc) throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) sreq;
            HttpServletResponse resp = (HttpServletResponse) sresp;

            fc.doFilter(req, resp);
            log.info("filter");
            log.info("status " + resp.getStatus());
            if(resp.getStatus() == 401) {
                resp.setHeader("WWW-Authenticate", "Client-driven");
            }
        }

        @Override
        public void destroy() {
        }
    };
Run Code Online (Sandbox Code Playgroud)

从日志中我看到我的过滤器已成功识别应用程序并参与处理响应(我看到来自doFilter的日志消息).但是,浏览器收到的实际响应仍然包含标准的"WWW-Authenticate"标题.似乎有人凌挑我的标题,我不知道究竟是谁.

有人可以给个建议吗?

java spring spring-security spring-boot

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

Java字节码:局部变量表与堆栈计算

假设我们有以下课程:

final class Impl implements Gateway3 {
    private final Sensor sensor1;
    private final Sensor sensor2;
    private final Sensor sensor3;

    private final Alarm alarm;

    public Impl(Sensor sensor1, Sensor sensor2, Sensor sensor3, Alarm alarm) {
        this.sensor1 = sensor1;
        this.sensor2 = sensor2;
        this.sensor3 = sensor3;
        this.alarm = alarm;
    }

    @Override
    public Temperature averageTemp() {
        final Temperature temp1 = sensor1.temperature();
        final Temperature temp2 = sensor2.temperature();
        final Temperature temp3 = sensor3.temperature();

        final Average tempAvg = new Average.Impl(temp1, temp2, temp3);
        final Temperature result = tempAvg.result();
        return …
Run Code Online (Sandbox Code Playgroud)

java jvm jvm-bytecode

3
推荐指数
2
解决办法
1219
查看次数