小编Ben*_*Ben的帖子

为什么在具体实现方法签名中没有继承最终参数修饰符?

考虑到我们有一个这样的方法签名

public abstract class BaseClass {
    protected abstract void doStuff(final MyArg arg);
}
Run Code Online (Sandbox Code Playgroud)

为什么具体实现不再需要实现final方法签名中的修饰符?

public class ConcreteClass extends BaseClass {

    @Override
    protected void doStuff(MyArg arg) {
        // TODO
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,我知道你仍然可以final在具体签名中提出论点,但你为什么不被迫呢?跳过它的原因是什么,还有一个问题,为什么代码生成器Intellij也默认跳过它?

java intellij-idea

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

Spring Security抛出未经授权的异常而不是重定向到登录

我希望我的 Spring Web 应用程序只返回状态代码,403 UNAUTHORIZED而不是在/login用户尝试在未登录或没有正确权限的情况下访问资源时重定向。

我目前已经通过客户端登录设置了 Spring Security oauth2,但我相信它与基本登录也具有相同的行为。

@Override
protected void configure(HttpSecurity http) throws Exception
{
    http.csrf().disable()
            .authorizeRequests()
            .antMatchers("/allowed").permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .oauth2Login(this::configureOauthLogin) // sets up custom user services
            .exceptionHandling()
            .accessDeniedHandler((request, response, accessDeniedException) -> {
                response.setStatus(HttpStatus.UNAUTHORIZED.value());
            });
}
Run Code Online (Sandbox Code Playgroud)

我尝试过通过提供来处理它,accessDeniedHandler但我没有看到它改变任何东西,因为这个处理程序从未真正被触发。

总长DR

进行弹簧投掷403,而不是根据302未经授权的请求进行投掷。

编辑

这是我的过滤器链的转储

filters = {ArrayList@6668}  size = 14
 0 = {WebAsyncManagerIntegrationFilter@6635} 
 1 = {SecurityContextPersistenceFilter@6634} 
 2 = {HeaderWriterFilter@6633} 
 3 = {LogoutFilter@6632} 
 4 = {OAuth2AuthorizationRequestRedirectFilter@6631} 
 5 = {OAuth2LoginAuthenticationFilter@6630} 
 6 …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot spring-security-oauth2

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

ORDER BY 到另一个值的距离

假设我们有一张这样的桌子

id|value
--------
1 | 50
2 | 19
3 | 100
4 | 21
5 | -10
Run Code Online (Sandbox Code Playgroud)

如何使用ORDER BY运算符按值与另一个值的距离对值进行排序?

SELECT * FROM table ORDER BY nearest(value,30) DESC
Run Code Online (Sandbox Code Playgroud)

要获取此表:

id|value
--------
4 | 21
1 | 50
2 | 19
5 | -10
3 | 100
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server distance sql-order-by

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

Java类命名规则

在JAVA中,类名必须始终与文件名相同,但是有时文件包含多个类。文件中的单个类(或接口)可以是公共的,并且必须与文件具有相同的名称。但是,如果文件名具有多个非公共的类(或接口),那么如何确定文件名呢?

interface Foo {}

class Bar{}
Run Code Online (Sandbox Code Playgroud)

有些人对此问题感到困惑

实际上,我知道无论选择Foo还是Bar作为文件名都可以。但是,我感兴趣的是是否有某种命名类的约定。

我为什么不随便命名呢?因为我实际上是在编写重构代码的应用程序,并且每当它重命名类时,我都需要知道如何以及何时更改文件名。

到目前为止,我认为正确的方法是:

如果class有一个公共节点,则将其名称用作文件名,否则只需选择第一个节点,因此在此示例中Foo将获胜。因此,我简化了一个问题:这是正确的方法,还是还有其他事情?

java naming-conventions

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

有没有办法用Watir突出显示元素?

我一直在犯这样的错误:

puts browser.table(:after? => span(:text => "Asmeniniai duomenys") )[2][2].text
Run Code Online (Sandbox Code Playgroud)

基本上说:

undefined method `span' for main:Object (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

要么

undefined method `table' for main:Object (NoMethodError) etc...
Run Code Online (Sandbox Code Playgroud)

所以我决定找不到桌子.我试过if/else,但这是我第一次使用ruby,我不明白它是否有效.

所以我认为最简单的方法是找出如何突出显示的东西.

任何人都可以建议我如何突出显示元素或如何解决这个问题?

html ruby bots watir

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

指向数组的指针获得大小为C++的指针

int * a;
a = new int[10];
cout << sizeof(a)/sizeof(int);
Run Code Online (Sandbox Code Playgroud)

如果我使用普通数组答案是10,唉,打印的幸运数字是1,因为sizeof(int)是4而iszeof(*int)也是4.我怎么能这个?在我看来,保持内存大小是一个复杂的选择.如何使用代码获得大小?

我最好的猜测是迭代一个数组并搜索它的结束,结束是0,对吗?有什么建议?

- 编辑

好吧,我对矢量的担心是它会在推回时重新分配,你得到了重点,我可以分配内存.但是,我无法改变结构,整个代码是相关的.谢谢你的答案,我看到没有办法,所以生病只是寻找一种方法来存储大小的内存.

我问的问题不是什么样的结构.

c++ arrays int pointers

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