小编Bil*_*een的帖子

如何在C#中解析非常庞大的XML文件?

我正在使用dblp XML文件.我实际上想要解析dblp.xml文件,并希望提取有用的信息以供我在某个项目中进一步处理.并且该XML文件非常庞大(1.1 GB),我甚至无法打开此文件.

如果您有dblp.xml的C#解析器,请指导我,或者您可以指导我,或者我们如何解析大型xml文件.

c# xml parsing

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

包'myPackageName'中已存在类'myClassName'

我在使用IntelliJ处理Grails应用程序时突然遇到一个奇怪的问题.我有不同的域类和其他一些类src/groovy.当我打开一个类文件进行一些更改时,我得到一个错误,这个类已经存在于我没有的包中.我尝试使用重构重命名该类,但之后我仍然得到相同的错误.

任何人都可以在这里暗示什么是错的,或者我做错了什么?

grails intellij-idea grails-domain-class

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

如何终止使用ProcessBuilder正常创建的进程

我在Java应用程序中使用ProcessBuilder创建进程.创建的进程执行一些FFMPEG命令,这些命令实际上将RTSP流复制到指定的目标媒体文件中.

ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", RTSP_URL, "-f", fileFormat, destFilePath);
Process processToExecute = builder.start();
Run Code Online (Sandbox Code Playgroud)

我想在完成执行之前关闭该进程.因此,如果我直接在Windows CMD中运行此FFMPEG命令,然后在5秒后按"CTRL + C",则进程get终止,状态为"2".我可以播放到目前为止创建的媒体文件.

所以,如果我在Java应用程序中执行相同的操作:

 process.destroy(); //I call this method after 5 sec
Run Code Online (Sandbox Code Playgroud)

我得到状态代码'1',这意味着异常终止.我通过以下方式获得状态:

 processToExecute.destroy();
 processToExecute.exitValue(); //This return me status '1'
Run Code Online (Sandbox Code Playgroud)

我无法播放媒体文件,我认为这是由于该过程的异常终止.

那么我如何终止使用ProcessBuilder创建的进程,就像我们在CMD中使用(CTRL + C)一样,以便我可以播放创建的媒体文件?

我想在Java应用程序中终止进程(使用ProcessBuilder创建),状态代码为'2',这是我在使用CMD终止进程时获得的.

编辑#01:---分享调查结果

因此,当我尝试在应用终止后删除该文件时,我收到以下错误:

The Action Can't be Performed Because File is Opened in FFMPEG.exe
Run Code Online (Sandbox Code Playgroud)

这意味着该进程不会终止它正在执行的命令.该命令仍然占用了这个文件,这就是为什么我无法播放它.当我打电话时,进程终止:

 processToExecute.destroy();
Run Code Online (Sandbox Code Playgroud)

但是,它正在执行的任务(即执行命令)仍然有效.奇怪!!!!

编辑#02:分享终极理由

实际上如果我在进程运行时直接在cmd中按'CTRL + C'或'q',那么它会成功终止进程,并且此进程在当前正在执行的进程列表中不再可见.

并以编程方式调用方法:

cmd> processToExecute.destroy();
Run Code Online (Sandbox Code Playgroud)

它终止了进程,但当我看到当前正在执行的进程列表时,我仍然可以在那里看到它们.

并存在相同的情况如果我尝试使用另一个CMD中的'taskkill'或'kill'命令终止此过程,方法是指定其进程异常终止的名称或pid.

PS我使用以下命令查看正在运行的进程:

tasklist
Run Code Online (Sandbox Code Playgroud)

因此,它证明了来自Application的destroy()方法和来自另一个CMD的'taskkill或kill'命令通常不会按"CTRL + C"和"q"来终止该过程.

java windows ffmpeg kill-process processbuilder

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

Spring Security 具有不同用户详细信息的多个 HTTPSecurity 服务在 Spring Boot 中不起作用

我有两种类型的用户:应用程序用户和最终用户,我有单独的表。现在,我想对这两个表应用安全性。

我为应用程序用户提供了UserDetailsS​​ervice 的自定义实现:

@Component("applicationUserDetailsService")
public class ApplicationUserDetailsService implements UserDetailsService {}
Run Code Online (Sandbox Code Playgroud)

而且,我为最终用户提供了UserDetailsS​​ervice 的另一个自定义实现:

@Component("endUserDetailsService")
public class EndUserDetailsService implements UserDetailsService {}
Run Code Online (Sandbox Code Playgroud)

现在,在以下代码片段中,我为这两种类型的用户注册了两个端点。我已经分别为应用程序和最终用户注入了UserDetailsS​​ervice 的实现和@Overide configure(AuthenticationManagerBuilder auth)方法注册。

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@Import(SecurityProblemSupport.class)
public class SecurityConfiguration {

// Injected via Constructor Injection
private final EndUserDetailsService endUserDetailsService;

private final ApplicationUserDetailsService applicationUserDetailsService;

@Configuration
@Order(1)
public class ApplicationUserSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring()
            .antMatchers(HttpMethod.OPTIONS, "/**")
            .antMatchers("/swagger-ui/index.html")
            .antMatchers("/test/**");
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-boot

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

结帐后Git丢弃了未提交的更改

据我所知git checkout,在我们提交所有先前的更改之前,我们不允许结帐分支,但我的更改已被丢弃.

我执行了git status命令,它向我显示了修改过的文件列表.然后我执行了git checkout .(点)命令,但它没有提示我先提交我以前的更改并丢弃所有更改并检查我本地计算机上的master分支.

任何人都可以指导我为什么git checkout .这样做?以及如何在本地计算机上移回我之前的代码(使用修改和未提交的更改)?为什么要放弃我的更改?

git git-revert git-checkout git-commit

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

Google Cloud Platform:大型媒体文件的语音到文本转换

我正在尝试从从 youtube 下载的 mp4 媒体文件中提取文本。由于我正在使用谷歌云平台,所以想尝试谷歌云语音。

在所有安装和配置之后,我复制了以下代码片段以开始使用:

with io.open(file_name, 'rb') as audio_file:
    content = audio_file.read()
    audio = types.RecognitionAudio(content=content)

config = types.RecognitionConfig(encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=16000, language_code='en-US')   

response = client.long_running_recognize(config, audio)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下有关文件大小的错误:

InvalidArgument:400 内联音频超出持续时间限制。请使用 GCS URI。

然后我读到我应该对大型媒体文件使用流。所以,我尝试了以下代码片段:

with io.open(file_name, 'rb') as audio_file:
    content = audio_file.read()

#In practice, stream should be a generator yielding chunks of audio data.

stream = [content]
requests = (types.StreamingRecognizeRequest(audio_content=chunk)for chunk in stream)

config = types.RecognitionConfig(encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,sample_rate_hertz=16000,language_code='en-US')

streaming_config = types.StreamingRecognitionConfig(config=config)

responses = client.streaming_recognize(streaming_config, requests)
Run Code Online (Sandbox Code Playgroud)

但我仍然收到以下错误:

InvalidArgument:400 无效的音频内容:太长。

因此,任何人都可以提出一种转录 mp4 文件和提取文本的方法。我对非常大的媒体文件没有任何复杂的要求。媒体文件最长可达 10-15 分钟。谢谢

speech-recognition speech-to-text google-cloud-platform google-speech-api google-cloud-speech

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