小编Pau*_*lor的帖子

Files.exists(path)和path.toFile().exists()为同一文件提供不同的结果

我得到不同的结果为Files.exists(path),以path.toFile().exists()在Windows本地文件.我可以在Windows资源管理器中看到这个文件,虽然我有(随机)修改过的权限,也许权限没有意义.

但是,这并不能解释为什么旧方法返回true并且新方法返回false.该文件确定存在但可能对运行Java代码的用户不可见,因此我不确定应该是什么样的正确答案.我也无法看到如何查看哪个用户正在运行代码,计算机上只有一个真正的用户Paul,但我想知道是否以管理员身份运行或不影响事情.

System.out.println("Path Exists(1):"+Files.exists(path));
System.out.println("Path Exist(2) :"+path.toFile().exists());
Run Code Online (Sandbox Code Playgroud)

Path Exists(1):false
Path Exist(2) :true
Run Code Online (Sandbox Code Playgroud)

System.out.println("Path readable(3) :"+Files.isReadable(path));
System.out.println("Path readable(4):"+path.toFile().canRead());
Run Code Online (Sandbox Code Playgroud)

以同样的方式给予

Path readable(3) :false
Path readable(4):true
Run Code Online (Sandbox Code Playgroud)

权限输出

File C:\Code\jthink\opensrc\jaudiotagger\testdata\test157.dsf permissions
owner:PCLAPTOP\Paul
NT AUTHORITY\SYSTEM:READ_DATA/WRITE_DATA/APPEND_DATA/READ_NAMED_ATTRS/WRITE_NAMED_ATTRS/EXECUTE/DELETE_CHILD/READ_ATTRIBUTES/WRITE_ATTRIBUTES/DELETE/READ_ACL/WRITE_ACL/WRITE_OWNER/SYNCHRONIZE:DENY
BUILTIN\Administrators:READ_DATA/WRITE_DATA/APPEND_DATA/READ_NAMED_ATTRS/WRITE_NAMED_ATTRS/EXECUTE/DELETE_CHILD/READ_ATTRIBUTES/WRITE_ATTRIBUTES/DELETE/READ_ACL/WRITE_ACL/WRITE_OWNER/SYNCHRONIZE:DENY
BUILTIN\Administrators:READ_DATA/WRITE_DATA/APPEND_DATA/READ_NAMED_ATTRS/WRITE_NAMED_ATTRS/EXECUTE/DELETE_CHILD/READ_ATTRIBUTES/WRITE_ATTRIBUTES/DELETE/READ_ACL/WRITE_ACL/WRITE_OWNER/SYNCHRONIZE:ALLOW
NT AUTHORITY\SYSTEM:READ_DATA/WRITE_DATA/APPEND_DATA/READ_NAMED_ATTRS/WRITE_NAMED_ATTRS/EXECUTE/DELETE_CHILD/READ_ATTRIBUTES/WRITE_ATTRIBUTES/DELETE/READ_ACL/WRITE_ACL/WRITE_OWNER/SYNCHRONIZE:ALLOW
BUILTIN\Users:READ_DATA/READ_NAMED_ATTRS/EXECUTE/READ_ATTRIBUTES/READ_ACL/SYNCHRONIZE:ALLOW
NT AUTHORITY\Authenticated Users:READ_DATA/WRITE_DATA/APPEND_DATA/READ_NAMED_ATTRS/WRITE_NAMED_ATTRS/EXECUTE/READ_ATTRIBUTES/WRITE_ATTRIBUTES/DELETE/READ_ACL/SYNCHRONIZE:ALLOW


c:\Code\jthink\opensrc\jaudiotagger>attrib C:\Code\jthink\opensrc\jaudiotagger\testdata\test157.dsf
A    R       C:\Code\jthink\opensrc\jaudiotagger\testdata\test157.dsf
Run Code Online (Sandbox Code Playgroud)

更新 我没有得出结论,但认为这些信息可能有用.

我在IntelliJ IDE中运行代码而没有启用IDE Run选项的IDE Run程序,启用此功能后,Java应用程序也获得了管理员权限.

感兴趣的是另一个文件我没有添加任何DENY权限,我只是禁用了继承权限并从所有组中删除了READ权限.然后,当我作为用户运行而没有运行管理员启用它无法读取文件,此代码也无法输出任何信息

AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
if (view != null)
{
    sb.append("Owner:"+view.getOwner().getName()+"**");
    for (AclEntry acl : view.getAcl())
    {
        sb.append(acl.principal()+"**");
        for(AclEntryPermission aep:acl.permissions()) …
Run Code Online (Sandbox Code Playgroud)

java security nio

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

无法使Bootstrap 4 Horizo​​ntal Form按要求工作

如何在手机,平板电脑和计算机上制作一个看起来正确的简单Bootstrap Horizo​​ntal Form.即我希望组合如示例中所示对齐,但我不希望组合大于必要,我只想要标签和组合之间的小间隙.然后当屏幕尺寸太小而不适合标签和组合时,我希望它们堆叠.

特别是Boostrap示例耗尽了我不想要的整个100%宽度,我不希望组合更宽,然后必要,我不希望标签和组合之间有很大的差距.

我尝试添加col-auto,但随后组合不再相互水平对齐.

我现在尝试为https://getbootstrap.com/docs/4.1/components/forms/#column-sizing中描述的标签和组合添加col- [1-12]值但是当它转到小时它没有正确堆叠电话.

然后我尝试使用col-md,因此总数小于12,但它在主屏幕上看起来并不正确,因为现在标签和组合占用相同的空间,因此它们各有一半的屏幕,并且彼此不相距.

 <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<div>
    	<div class="form-row">
    	    <label for="discogsGenreOverwriteOption" id="discogsGenreOverwriteOptionlabel" class="col-form-label col-xs-12 col-sm-6 col-md-5">
    	        Genre
    	    </label>
    	    <div class="col-xs-12 col-sm-3 col-md-2">
    	        <select aria-describedby="discogsGenreOverwriteOptionhelp" class="custom-select" name="discogsGenreOverwriteOption" id="discogsGenreOverwriteOption">
    	            
    	                <option value="0">
    	                    Always replace values
    	                </option>
    	                <option value="1">
    	                    Always add values
    	                </option>
    	                <option value="2">
    	                    Replace if empty
    	                </option>
    	                <option selected="selected" value="3">
    	                    Never Replace
    	                </option>
    	            
    	        </select>
    	    </div>
    	</div>
    	<div class="form-row">
    	    <label for="discogsGenreFromOption" id="discogsGenreFromOptionlabel" class="col-form-label col-xs-12 col-sm-6 col-md-5">
    	        From
    	    </label>
    	    <div class="col-xs-12 col-sm-3 …
Run Code Online (Sandbox Code Playgroud)

css twitter-bootstrap bootstrap-4

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

在拉丁文脚本中匹配包含少于10个单词的两个字符串的最佳算法是什么

我比较歌曲名称,用拉丁文字(但并不总是),我的目标是一种算法,给出了一个高分,如果两页首歌的标题似乎是相同的同题和非常低的分数,如果他们没有任何共同之处.

现在我已经不得不使用Lucene和RAMDirectory来编写代码(Java) - 但是使用Lucene只是为了比较两个字符串太重,因此太慢了.我现在转向使用https://github.com/nickmancol/simmetrics,它有许多很好的算法来比较两个字符串:

https://github.com/nickmancol/simmetrics/tree/master/src/main/java/uk/ac/shef/wit/simmetrics/similaritymetrics

BlockDistance
ChapmanLengthDeviation
ChapmanMatchingSoundex
ChapmanMeanLength
ChapmanOrderedNameCompoundSimilarity
CosineSimilarity
DiceSimilarity
EuclideanDistance
InterfaceStringMetric
JaccardSimilarity
Jaro
JaroWinkler
Levenshtein
MatchingCoefficient
MongeElkan
NeedlemanWunch
OverlapCoefficient
QGramsDistance
SmithWaterman
SmithWatermanGotoh
SmithWatermanGotohWindowedAffine
Soundex
Run Code Online (Sandbox Code Playgroud)

但是我不熟悉这些算法,那将是一个不错的选择?

我认为Lucene以某种形式使用CosineSimilarity,所以这是我的出发点,但我认为可能有更好的东西.

具体来说,算法应该在短字符串上工作,并且应该理解单词的概念,即应该特别对待空格.拉丁文字的良好匹配是最重要的,但是韩文和中文等其他文字的良好匹配也是相关的,但我希望因为它们对待空间的方式需要不同的算法.

java lucene similarity string-matching

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

在 MacOS M1 机器上为 java 构建通用 Appbunder 版本

多年来我一直在 Intel MacMini 上构建 MacOs Java 应用程序,本质上是

现在在 MacOS M1 上构建它并且构建得很好。当我在 Mac M1 上运行时,它可以工作,但当我尝试在 Intel Macmini 上运行时,它会失败,并显示无法加载 JRE 环境

这是有道理的,因为当我构建它时,我只是提供一个基于 Adoptium Terium 17 的 M1 版本的单个 jre。但是我不明白如果这是我需要做的,我如何提供两个 JRE

下面我展示了主要的构建脚本

#!/bin/bash
#set -x
cd $HOME/code/jthink/songkong/src/main/scripts
hiutil -C  -fapplehelpbook/SongKongHelp/SongKongHelp.helpindex applehelpbook/SongKongHelp/
cd $HOME/code/jthink/songkong
sudo rm -fr /Applications/SongKong.app
mvn -f pommacos.xml clean
mvn -f pommacos.xml -DskipTests=true install
rm -fr target/songkong-8.2
unzip target/songkong-8.2-distribution.zip -d target
ant
while read line; do
  echo …
Run Code Online (Sandbox Code Playgroud)

java macos app-bundle apple-m1

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

Hibernate使用悲观或乐观锁定吗?

我所有的课都有

@版

注释,所以我假设他们使用乐观锁定.

但我在日志中的以下异常似乎表明我使用了悲观锁定.那是哪个呢?(我想使用乐观锁定)

update Song set acoustidFingerprint=?, acoustidId=?, album=?, albumArtist=?, albumArtistSort=?, albumSort=?, amazonId=?, arranger=?, artist=?, artistSort=?, artists=?, barcode=?, bpm=?, catalogNo=?, comment=?, composer=?, composerSort=?, conductor=?, country=?, custom1=?, custom2=?, custom3=?, custom4=?, custom5=?, discNo=?, discSubtitle=?, discTotal=?, djmixer=?, duration=?, encoder=?, engineer=?, fbpm=?, filename=?, genre=?, grouping=?, isCompilation=?, isrc=?, keyOfSong=?, language=?, lastModified=?, lyricist=?, lyrics=?, media=?, mixer=?, mood=?, musicbrainzArtistId=?, musicbrainzDiscId=?, musicbrainzOriginalReleaseId=?, musicbrainzRecordingId=?, musicbrainzReleaseArtistId=?, musicbrainzReleaseCountry=?, musicbrainzReleaseGroupId=?, musicbrainzReleaseId=?, musicbrainzReleaseStatus=?, musicbrainzReleaseType=?, musicbrainzWorkId=?, musicipId=?, occasion=?, originalAlbum=?, originalArtist=?, originalLyricist=?, originalYear=?, producer=?, quality=?, rating=?, recordLabel=?, releaseYear=?, remixer=?, script=?, subtitle=?, tags=?, tempo=?, title=?, …
Run Code Online (Sandbox Code Playgroud)

java database hibernate locking transactions

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

Docker错误standard_init_linux.go:185:exec用户进程导致Qnap TS131P出现“ exec格式错误”

我的Docker文件是song / songkong,位于https://hub.docker.com/r/songkong/songkong/~/dockerfile/

FROM openjdk:8-jre-alpine

RUN apk --no-cache add \
      ca-certificates \
      curl \
      fontconfig \
      msttcorefonts-installer \
      tini \
 && update-ms-fonts \
 && fc-cache -f

RUN mkdir -p /opt \
 && curl http://www.jthink.net/songkong/downloads/current/songkong-linux-headless-novm.tgz?val=77 | tar -C /opt -xzf - \
&& find /opt/songkong -perm /u+x -type f -print0 | xargs -0 chmod a+x

RUN addgroup -S songkong \
 && adduser -S -G songkong songkong

USER songkong:songkong

EXPOSE 4567

ENTRYPOINT ["/sbin/tini"]

# Config, License, Logs, Reports and Internal Database …
Run Code Online (Sandbox Code Playgroud)

arm qnap docker

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

Java,自从在 Linux 上迁移到 Java 14 后,无法执行 spawn helper 错误

刚刚从Java 11迁移到Java 14

以下代码现在在 linux 机器上失败:

String linux_exe  = System.getProperty("user.dir") + '/' + "fpcalc_arm32";
List<String> params = new ArrayList();
params.add(linux_exe);
params.add("-plain");
params.add("-length");
params.add(submittedSongLength);
params.add(file.getPath());
Process p = Runtime.getRuntime().exec(params.toArray(new String[1]));                    
Run Code Online (Sandbox Code Playgroud)

带堆栈跟踪

Cannot run program "/mnt/system/config/Apps/SongKong/songkong/fpcalc_arm32": error=0, Failed to exec spawn helper: pid: 13998, exit value: 127
java.io.IOException: Cannot run program "/mnt/system/config/Apps/SongKong/songkong/fpcalc_arm32": error=0, Failed to exec spawn helper: pid: 13998, exit value: 127
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at java.base/java.lang.Runtime.exec(Runtime.java:590)
at java.base/java.lang.Runtime.exec(Runtime.java:449)
at com.jthink.songkong.analyse.acoustid.AcoustId.generateFingerprint(AcoustId.java:217)
at com.jthink.songkong.analyse.acoustid.AcoustId.createAcoustIdFingerprint(AcoustId.java:106)
Run Code Online (Sandbox Code Playgroud)

Java 14 发生了什么变化会导致这种情况?

我使用 …

java java-11 java-14

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

在Windows XP兼容模式下,Java应用程序包装在Windows 7上运行得更快

根据我的一些客户,Java应用程序在Windows 7兼容模式下运行速度更快,但为什么呢?

我自己似乎没有问题,但他们发现应用程序似乎消耗100%的CPU而无所事事,只需设置exe或调用java到Windows XP兼容模式的批处理文件的属性修复它,如何可能是吗?

java windows-7-x64

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

我可以将unix权限存储在zip文件中(使用apache ant构建)吗?

我正在为Java应用程序构建一个linux安装程序,最后我得到了一个install.jar和一个setup.sh,我把它放在一个使用ant的zip文件中.

想法是用户解压缩zip文件,然后运行setup.sh,但问题是他们总是需要chmod setup.sh首先给自己执行权限.

我想删除此步骤,我不确定问题部分是否:

  1. 我在Windows上构建
  2. 我正在构建与ant zip任务
  3. 或者说,拉链不能提供权限,并且在没有x权限的情况下总是解压缩.

java linux zip

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

为什么 Java 即时编译器会继续重新编译相同的方法并使方法不可租用

我在 Windows 上使用 AdoptJDk 11.0.7 Java 并启用了-XX:+PrintCompilation标志,所以我可以看到正在编译哪些方法而不只是解释

我在我的应用程序中调用了一些功能(它处理音频文件并创建一个关于文件的 html 报告)。我启动应用程序一次(GUI 有限),然后在同一组文件上多次运行相同的任务。第二次调用它时,它的运行速度明显比第一次快,第三次比第二次略快,然后在后续运行之间没有太大区别。但是我注意到在每次运行时它仍在编译许多方法,并且许多方法变得不可重入。

它是分层编译,所以我理解相同的方法可以重新编译到更高级别,但编译的方法数量似乎没有太大变化。

我不明白为什么这么多方法变成不可重入(然后变成僵尸),我还没有做详细分析,但似乎相同的方法正在一遍又一遍地编译,为什么会这样?

我添加了-XX:-BackgroundCompilation强制方法按顺序编译的选项,并使代码等待编译版本而不是在编译时使用解释版本。这似乎减少了可重入方法的数量,所以也许这是因为它减少了多个线程尝试访问正在(重新)编译的方法的机会?

但仍有许多方法似乎被重新编译

例如,在这里我可以看到它被编译到第 3 级,然后它被编译到第 4 级,因此第 3 级编译成为非进入和僵尸。但是随后第 4 级变得不可重入,它又回到第 4 级编译,依此类推。

在此处输入图片说明

java jit

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