在我的大学,我目前有一个关于 Haskell 的讲座。现在我找到了一份制作程序的工作。我们得到了这个示例文件: https ://pastebin.com/6wPdEgHZ
从那时起,我们必须围绕它开发程序。这些函数模拟数据库访问。
由于我不喜欢在 WinHugs 中编程,因此我使用 GHC 设置了 Visual Studio Code。我添加了一个 main-Function 来打印 Function-Outputs。它看起来像这样:
module Main where
main :: IO ()
main = print artikel
Run Code Online (Sandbox Code Playgroud)
我将其添加到顶部。就是这样。起初我想输出文章。这是 runghc 输出:
[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\restaurant.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]
[Done] exited with code=0 in 24.527 seconds
[Running] runghc "c:\Users\5CG949285X\Documents\DHBW\5_Semester\Funktionale Programmierung\restaurant.hs"
[(1,"Hamburger","Hauptgericht",8.0,6.0),(2,"Cheeseburger","Hauptgericht",9.0,6.5),(3,"Chickenburger","Hauptgericht",8.5,6.5),(4,"Pommes frites","Beilage",3.0,2.0),(5,"Wedges","Beilage",3.5,2.0),(6,"Cola","Getraenk",2.5,1.0),(7,"Eistee","Getraenk",2.0,1.0),(8,"Wasser","Getraenk",1.5,0.5)]
[Done] exited with code=0 in 30.182 seconds
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这需要很长时间。仅仅是因为文件中有太多代码吗?还是我设置时做错了什么?
JLayer我的音乐播放器项目有一个非常具体的问题。我想加入一些调节音量的东西,但似乎不太容易实现。
这是因为JLayer它本身不支持它。我Player从我的项目中排除了该类并更改了一些方法,并且它可以很好地播放mp3。为了调整音量,我向Player类中添加了以下方法:
public boolean setGain(float newGain) {
if (audio instanceof JavaSoundAudioDevice) {
System.out.println("InstanceOf");
JavaSoundAudioDevice jsAudio = (JavaSoundAudioDevice) audio;
try {
jsAudio.write(null, 0, 0);
} catch (JavaLayerException ex) {
ex.printStackTrace();
}
return jsAudio.setLineGain(newGain);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
然后我提取JavaSoundAudioDevice、反编译并更改它:
public boolean setLineGain(float gain)
{
System.out.println("Vor Source");
if (source != null)
{
System.out.println("Nach Source");
FloatControl volControl = (FloatControl) source.getControl(FloatControl.Type.MASTER_GAIN);
float newGain = Math.min(Math.max(gain, volControl.getMinimum()), volControl.getMaximum());
volControl.setValue(newGain);
return true;
}
return false;
} …Run Code Online (Sandbox Code Playgroud) 我的问题如下:
我试图实现 Docker-Container 的控制台离子 IntelliJ 使用正确的编码。现在看起来如下:

如果我在 IntelliJ 中运行一个简单的 main 输出如下:

我将 IntelliJ 中找到的每个选项都更改为 UTF-8,但仍然没有任何变化。奇怪的是,它确实可以在 Docker 和普通控制台中工作,但不能在 IntelliJ 中的 Docker-Console 中工作。Dockerfile 是这样的:
FROM fabric8/java-alpine-openjdk11-jre:latest
ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV AB_ENABLED=jmx_exporter
#ENV JAVA_TOOL_OPTIONS = "-Dfile.encoding=UTF8"
# Be prepared for running in OpenShift too
RUN adduser -G root --no-create-home --disabled-password 1001 \
&& chown -R 1001 /deployments \
&& chmod -R "g+rwX" /deployments \
&& chown -R 1001:root /deployments
COPY target/lib/* /deployments/lib/
COPY target/*-runner.jar /deployments/app.jar
EXPOSE 8080
# run with …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用连接对 HANA 数据库进行更新。在线 SQL 检查器显示有效语法,在我发现以下内容后: https: //answers.sap.com/questions/11364926/sql-update-join-error.html我也更改了更新的顺序。它仍然给出这个错误:
sql语法错误:“LEFT”附近的语法不正确:第3行第1行(第119位)
更新看起来像这样(经过审查,因为它包含来自我公司的一些数据):
UPDATE TABX AS a
SET b.att1 = 'XXX', b.att2 = 'ZZZ'
LEFT JOIN TABZ AS b ON a.att3 = b.att3
WHERE a.att4 LIKE 'YYY'
AND att5 = 'PPP'
AND is_valid = 'TRUE'
Run Code Online (Sandbox Code Playgroud)
根据 SAP Answers 上的帖子,它应该可以工作。我知道我在以前的 SQL 数据库上这样做过,但 HANA 现在是第一次。
我该如何解决这个问题?