Более простой алгоритм деления и покоя работает для случая, когда существует более 1/2 элементов, которые являются одинаковыми, и для некоторого целого k существует n = 2 ^ k элементов.
FindMost(A, startIndex, endIndex)
{ // input array A
if (startIndex == endIndex) // base case
return A[startIndex];
x = FindMost(A, startIndex, (startIndex + endIndex - 1)/2);
y = FindMost(A, (startIndex + endIndex - 1)/2 + 1, endIndex);
if (x == null && y == null)
return null;
else if (x == null && y != null)
return y;
else if (x != null && y == null)
return x;
else if (x != y)
return null;
else return x
}
Этот алгоритм может быть изменен так, что он работает для n, который не является показателем 2, но граничные случаи должны быть тщательно обработаны.
Мы нашли хорошее решение этой проблемы, которое я собираюсь объяснить шаг за шагом: во-первых, если вы хотите использовать пользовательскую страницу входа, у вас есть два варианта: 1. Изменение существующей темы keycloak, такой как login / registration / passwordupdate, который можно найти через каталог / keycloak / themes / * 2. Это может быть немного сложно - этого можно добиться, изменив AuthenticationProvider в Spring Security в вашем проекте.
override fun configure(http: HttpSecurity?) {
http
?.authorizeRequests()
?.antMatchers("/**")?.authenticated()
?.and()
?.authenticationProvider(myAuthenticationProvider)
?.formLogin()
?.loginPage("/login")
?.successHandler { request, response, authentication -> redirectStrategy.sendRedirect(request, response, "/main")}
?.permitAll()
?.usernameParameter("username") //the username parameter in the queryString, default is 'username'
?.passwordParameter("password") //the password parameter in the queryString, default is 'password'
?.and()
?.logout()
?.logoutUrl("/logout") //the URL on which the clients should post if they want to logout
?.invalidateHttpSession(true)
?.and()
?.exceptionHandling()
}
MyAuthenticationProvider Вы должны переопределить этот класс безопасности Spring
Еще одна вещь, которую я задал в предыдущем вопросе, что если я использую rest api для доступа к проекту Spring, в этом случае вам следует реализовать KeycloakWebSecurityConfigurerAdapter вместо WebSecurityConfigurerAdapter
blockquote>