Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

2
您可以重新平衡大小未知的不平衡分离器吗?
我想使用a Stream来并行处理一组未知数量的远程存储的JSON文件的异类(文件数量事先未知)。文件的大小可以相差很大,从每个文件1个JSON记录到其他文件中的100,000个记录。一个JSON记录在这种情况下是指表示为文件中的一条线的自包含JSON对象。 我真的很想为此使用Streams,所以我实现了这一点Spliterator: public abstract class JsonStreamSpliterator<METADATA, RECORD> extends AbstractSpliterator<RECORD> { abstract protected JsonStreamSupport<METADATA> openInputStream(String path); abstract protected RECORD parse(METADATA metadata, Map<String, Object> json); private static final int ADDITIONAL_CHARACTERISTICS = Spliterator.IMMUTABLE | Spliterator.DISTINCT | Spliterator.NONNULL; private static final int MAX_BUFFER = 100; private final Iterator<String> paths; private JsonStreamSupport<METADATA> reader = …

1
为什么类型参数比方法参数更强大
为什么是 public <R, F extends Function<T, R>> Builder<T> withX(F getter, R returnValue) {...} 然后更严格 public <R> Builder<T> with(Function<T, R> getter, R returnValue) {...} 这是为什么在编译时不检查lambda返回类型的后续操作。我发现使用withX()类似的方法 .withX(MyInterface::getLength, "I am not a Long") 产生所需的编译时错误: 类型BuilderExample.MyInterface中的getLength()类型很长,这与描述符的返回类型不兼容:字符串 而使用该方法with()则没有。 完整的例子: import java.util.function.Function; public class SO58376589 { public static class Builder<T> { public <R, F extends Function<T, …

4
如何提高在MNIST上训练的模型的数字识别能力?
我正在使用进行手印多位数识别Java,使用OpenCV库进行预处理和分割,并使用KerasMNIST训练的模型(精度为0.98)进行识别。 除了一件事之外,这种识别似乎效果很好。网络经常无法识别那些(数字“一”)。我不知道这是否是由于分割的预处理/不正确的实现而发生的,或者是否是在标准MNIST上训练的网络没有看到看起来像我的测试用例的第一名。 这是经过预处理和分割后出现问题的数字的样子: 成为并归类为4。 成为并归类为7。 成为并归类为4。等等... 通过改进细分过程,可以解决此问题吗?还是通过增强培训设置? 编辑:增强训练集(数据扩充)肯定会有所帮助,这已经在我测试中,正确预处理的问题仍然存在。 我的预处理包括调整大小,转换为灰度,二值化,反转和膨胀。这是代码: Mat resized = new Mat(); Imgproc.resize(image, resized, new Size(), 8, 8, Imgproc.INTER_CUBIC); Mat grayscale = new Mat(); Imgproc.cvtColor(resized, grayscale, Imgproc.COLOR_BGR2GRAY); Mat binImg = new Mat(grayscale.size(), CvType.CV_8U); Imgproc.threshold(grayscale, binImg, 0, 255, Imgproc.THRESH_OTSU); Mat inverted = new Mat(); Core.bitwise_not(binImg, inverted); Mat dilated = …

3
将字节参数传递给重载方法
我从一些测验中提取​​了此代码段,使用IDE执行了该代码段,并获得了长久的结果,但是正确的答案是Byte,Byte,为什么我得到不同的结果?这个问题与JDK 11有关 public class Client { static void doCalc(byte... a) { System.out.print("byte..."); } static void doCalc(long a, long b) { System.out.print("long, long"); } static void doCalc(Byte s1, Byte s2) { System.out.print("Byte, Byte"); } public static void main(String[] args) { byte b = 5; doCalc(b, b); } } 编辑: 代码在此处获取:Oracle认证概述和样本问题 (页面:13,问题:5)
12 java 

10
Spring Boot 2.2.0 Spring HateOas启动问题
我将项目从Spring Boot 2.1.9迁移到了2.2.0。在启动项目时,面临以下error消息。 可能造成的原因,也不hateoas在我的pom.xml文件中使用。 Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.plugin.core.PluginRegistry<org.springframework.hateoas.client.LinkDiscoverer, org.springframework.http.MediaType>' available: expected single matching bean but found 17: modelBuilderPluginRegistry,modelPropertyBuilderPluginRegistry,typeNameProviderPluginRegistry,syntheticModelProviderPluginRegistry,documentationPluginRegistry,apiListingBuilderPluginRegistry,operationBuilderPluginRegistry,parameterBuilderPluginRegistry,expandedParameterBuilderPluginRegistry,resourceGroupingStrategyRegistry,operationModelsProviderPluginRegistry,defaultsProviderPluginRegistry,pathDecoratorRegistry,apiListingScannerPluginRegistry,relProviderPluginRegistry,linkDiscovererRegistry,entityLinksPluginRegistry Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'linkDiscoverers' defined in class path resource [org/springframework/hateoas/config/HateoasConfiguration.class]: Unsatisfied dependency expressed through method 'linkDiscoverers' parameter 0; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: …

3
如何在Spring Boot中启用版本为'2.0.0-alpha1'的org.slf4j登录
我已使用SLF4J日志记录来打印所有日志。我正在使用最新版本的org.slf4j。 实现'org.slf4j:slf4j-api:2.0.0-alpha1' 实现'org.slf4j:log4j-over-slf4j:2.0.0-alpha1' 但是我收到以下错误,并且也没有打印日志。 SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details. SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions prior to 1.8. SLF4J: Ignoring binding found at [jar:file:/home/user/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#ignoredBindings for an explanation. 日志在较早版本(1.7.25)上正常工作。是否需要在项目上添加或配置任何内容,以便可以打印这些日志

3
具有多个匹配目标类型的lambda表达式的方法签名选择
我正在回答一个问题,遇到了无法解释的情况。考虑以下代码: interface ConsumerOne<T> { void accept(T a); } interface CustomIterable<T> extends Iterable<T> { void forEach(ConsumerOne<? super T> c); //overload } class A { private static CustomIterable<A> iterable; private static List<A> aList; public static void main(String[] args) { iterable.forEach(a -> aList.add(a)); //ambiguous iterable.forEach(aList::add); //ambiguous iterable.forEach((A a) -> aList.add(a)); //OK } } …
11 java  generics  lambda  javac  ecj 

3
Java 14记录和数组
给出以下代码: public static void main(String[] args) { record Foo(int[] ints){} var ints = new int[]{1, 2}; var foo = new Foo(ints); System.out.println(foo); // Foo[ints=[I@6433a2] System.out.println(new Foo(new int[]{1,2}).equals(new Foo(new int[]{1,2}))); // false System.out.println(new Foo(ints).equals(new Foo(ints))); //true System.out.println(foo.equals(foo)); // true } 看来,很明显,该阵列的toString,equals方法是使用(而不是静态方法,Arrays::equals,Arrays::deepEquals 或Array::toString)。 所以我想Java 14 Records(JEP 359)在数组上不能很好地工作,相应的方法必须由IDE生成(至少在IntelliJ中,默认情况下会生成“有用的”方法,即它们使用静态方法)在Arrays)。 还是有其他解决方案?

3
Java并行流-调用parallel()方法的顺序
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3天前关闭。 AtomicInteger recordNumber = new AtomicInteger(); Files.lines(inputFile.toPath(), StandardCharsets.UTF_8) .map(record -> new Record(recordNumber.incrementAndGet(), record)) .parallel() .filter(record -> doSomeOperation()) .findFirst() 当我写这篇文章时,我假设线程将仅在map调用中产生,因为在map之后放置了parallel。但是文件中的某些行每次执行都会获得不同的记录号。 我阅读了Java流的正式文档和一些网站,以了解流是如何工作的。 几个问题: Java并行流基于SplitIterator进行工作,它由ArrayList,LinkedList等每个集合实现。当我们从这些集合构造并行流时,将使用相应的split迭代器对集合进行拆分和迭代。这解释了为什么并行性发生在原始输入源(文件行)级别而不是映射结果(即Record pojo)。我的理解正确吗? 就我而言,输入是文件IO流。将使用哪个拆分迭代器? 我们放置parallel()在管道中的位置无关紧要。原始输入源将始终被分割,其余的中间操作将被应用。 在这种情况下,Java不应允许用户在管道中除原始源之外的任何地方进行并行操作。因为,它为那些不知道java流内部工作方式的人提供了错误的理解。我知道parallel()操作将为Stream对象类型定义,因此,它是以这种方式工作的。但是,最好提供一些替代解决方案。 在上面的代码片段中,我试图将行号添加到输入文件中的每个记录,因此应该对它进行排序。但是,我想doSomeOperation()并行应用,因为它是繁重的逻辑。一种实现方式是编写自己的自定义拆分迭代器。还有其他办法吗?
11 java  java-stream 

5
在从字符串> 4k创建的谓词中使用Oracle Clob
我正在尝试从> 4000个字符(在file_data绑定变量中提供)的字符串创建一个Clob,以在下面的Oracle SELECT谓词中使用: myQuery= select * from dcr_mols WHERE flexmatch(ctab,:file_data,'MATCH=ALL')=1; 如果我将TO_CLOB()添加到file_data的周围,则它将无法达到臭名昭著的Oracle 4k对varchar的限制(对于<4k的字符串就可以)。错误(在SQL Developer中)为: ORA-01460: unimplemented or unreasonable conversion requested 01460. 00000 - "unimplemented or unreasonable conversion requested" 仅供参考,flexmatch函数用于搜索分子,在此处进行了描述:http : //help.accelrysonline.com/ulm/onelab/1.0/content/ulm_pdfs/direct/developers/direct_2016_developersguide.pdf 函数本身有点复杂,但本质是第二个参数必须是Clob。所以我的问题是如何将超过4000个字符的Java字符串bind_variable转换为sql(或Java)中的clob。 我使用以下方法在Java(Spring boot 2)中尝试了以下方法(在插入Clob时有效): MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("file_data", fileDataStr,Types.CLOB); jdbcNamedParameterTemplate.query(myQuery,parameters,… 此方法应该可以工作,但是会失败,并会产生一个弹性匹配错误,仅供参考: SQL state [99999]; error code [29902]; ORA-29902: …

9
前后循环成一行
我认为这是一个有趣的问题。我们可以以一种方式循环,但可以在同一行中向后循环吗?让我解释一下我的意思。这是一个示例代码: for(int i = 0; i < 5; i++) { // we all know the output will be 0,1,2,3,4 我在寻找是否有任何解决方法,以便可以打印上述声明0,1,2,3,4,3,2,1,0?
11 java 

2
限制Google Vision中的检测区域,文本识别
我整天都在寻找解决方案。我已经检查了几个有关我的问题的主题。 自定义检测器对象 减少条形码跟踪窗口 和更多... 但这对我没有太大帮助。基本上,我希望“摄像机预览”为全屏显示,但只能在绘制矩形的屏幕中央识别文本。 我使用的技术: Google Mobile Vision API的光学字符识别(OCR) 依赖度: play-services-vision 我当前的状态: 我创建了一个BoxDetector类: public class BoxDetector extends Detector { private Detector mDelegate; private int mBoxWidth, mBoxHeight; public BoxDetector(Detector delegate, int boxWidth, int boxHeight) { mDelegate = delegate; mBoxWidth = boxWidth; mBoxHeight = boxHeight; } public SparseArray detect(Frame frame) { …


3
SQS maxNumberOfMessages
使用Java客户端应用程序,我正在SQS队列中查询消息。队列中有12,000条消息作为测试设置。我正在将openJDK与最新的aws-java-sdk(software.amazon.awssdk 2.10.62)一起使用,进一步显示了pom.xml。 我看到的问题是,尽管设置了maxNumberOfMessages(10),但我只得到3。我知道这是最大的保证,不能保证消息的数量,但是返回的消息数量没有任何波动。总是3。 AWS文档: MaxNumberOfMessages要返回的最大消息数。Amazon SQS永远不会返回比该值更多的消息(但是,可能会返回更少的消息)。有效值:1到10。默认值:1。类型:整数必需:否 使用短轮询消耗消息 当您使用短轮询使用队列中的消息时,Amazon SQS会采样其服务器子集(基于加权随机分布),并仅从这些服务器返回消息。因此,特定的ReceiveMessage请求可能不会返回您的所有消息。但是,如果队列中的邮件少于1,000条,则后续请求将返回您的邮件。如果您不停地使用队列,Amazon SQS将对其所有服务器进行采样,并且会收到所有消息。 因此,我们使用较旧的aws sdk和较新的aws sdk在java中测试了两个客户端,结果相同。始终只返回3条消息。 有趣的是,如果您将其作为AWS Lambda运行而不是在外部(在强大的桌面上)运行应用程序,则会收到10条消息。此lambda测试是由同事使用JavaScript进行的。 因此,问题仍然是为什么我们每个请求只能收到3条消息,而在lambda内却只能得到10条消息。 给定每个请求的成本,则是基于亚马逊利润=)的加权随机分布 SQS测试方法: public void SQStart() { AwsBasicCredentials awsCreds = AwsBasicCredentials.create("accessKeyID", "secretKeyID"); AwsCredentialsProvider creds = StaticCredentialsProvider.create(awsCreds); SqsClient sqs = SqsClient.builder().credentialsProvider(creds).region(Region.EU_WEST_1).build(); GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder() .queueName(QUEUE_NAME) .build(); String queueUrl = sqs.getQueueUrl(getQueueRequest).queueUrl(); for (int x =1; x …

8
找不到androidsdk.modules
因此,在运行程序的过程中,build.gradle因此错误而失败。我的意思是,它实际上是在第二秒之前工作的,而不是第二秒之后。我没有做出任何改变。 Could not find androidsdk.modules:shield:unspecified. Required by: project :app > com.facebook.android:facebook-login:5.15.2 project :app > com.facebook.android:facebook-core:5.15.2 project :app > com.facebook.android:facebook-common:5.15.2 Search in build.gradle files 这是我的礼物。 apply plugin: 'com.android.application' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-android' android { compileSdkVersion 28 buildToolsVersion "29.0.2" defaultConfig { multiDexEnabled true applicationId "com.example.casualdatingapp" minSdkVersion 26 targetSdkVersion 28 versionCode …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.