Проблема решена, как показано ниже:
@SpringBootApplication
@Slf4j
class ProRunner implements CommandLineRunner {
@Autowired
AnalyzeManager analyzeManager;
@Autowired
AuthService authService;
@Autowired
WriterService writerService;
static void main(String[] args) {
System.setProperty("spring.config.additional-location","credential from args");
SpringApplication.run(ProRunner.class, args);
}
@Override
void run(String... args) throws Exception {
try {
String token = authService.postEntity("url").token;
Map dataSet = analyzeManager.bulkCreate();
writerService.write(dataSet)
} catch (Exception e) {
e.printStackTrace();
}
}
}
Добавлен новый файл конфигурации, как показано ниже:
@Configuration
public class ConfigProperties {
@Value("${cred.username}")
private String userName;
@Value("${cred.password}")
private String password;
@Value("${date.startDate}")
private String startDate;
@Value("{team.id}")
private String teamId;
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
public String getStartDate() {
return startDate;
}
public String getTeamId() {
return teamId;
}
}
И позже для вызова свойств из другого класса:
@Autowired
private ConfigProperties configProperties;
[ 117] И назовите свойство так:
configProperties.getUserName();
Большое спасибо за вашу помощь @Barath, @Andrew S
Я предложил бы смотреть на источник libc's GNU. Что касается большинства функций, это будет содержать оба, что дженерик оптимизировал версию C функции и оптимизировал версии ассемблера для как можно большего количества поддерживаемой архитектуры, использовав в своих интересах машину определенные приемы.
Версия x86-64 SSE2 комбинирует результаты pcmpeqb
на целой строке кэша данных сразу (четыре 16B векторы), для амортизации издержек раннего выхода pmovmskb
/test
/jcc
.
gcc и лязг в настоящее время неспособны к автовекторизации циклов с if() break
условия раннего выхода, таким образом, они делают наивный byte-at-a-time asm из очевидной реализации C.
Эта реализация memchr от newlib является одним примером чьей-то оптимизации memchr: это читает и тестирует 4 байта за один раз (кроме memchr, другие функции в newlib библиотеке здесь).
Кстати, большая часть исходный код для библиотеки времени выполнения MSVC доступен как дополнительная часть установки MSVC (так, Вы могли посмотреть на это).
Вот (BSD-лицензированный) memchr FreeBSD () от memchr.c. Браузер исходного кода FreeBSD онлайн является хорошей ссылкой для испытанных, BSD-лицензированных примеров кода.
void *
memchr(s, c, n)
const void *s;
unsigned char c;
size_t n;
{
if (n != 0) {
const unsigned char *p = s;
do {
if (*p++ == c)
return ((void *)(p - 1));
} while (--n != 0);
}
return (NULL);
}
memchr как memset и memcpy обычно уменьшают до довольно небольшого количества машинного кода. Вы вряд ли сможете воспроизвести такую скорость, не встраивая подобный ассемблерный код. Одной главной проблемой для рассмотрения в реализации является выравнивание данных.
Одна универсальная техника, которую Вы можете использовать, состоит в том, чтобы вставить сигнальную метку в конце искавшей строки, который гарантирует, что Вы найдете его. Это позволяет Вам перемещать тест для конца строки из цикла, к после цикла.