如果用户向左或向右按​​压太多,则应用为FC

我有以下XML: 我的部分Java代码: View.OnTouchListener llTouch = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int x = (int)event.getX(); int y = (int)event.getY(); int action = event.getAction(); int pixel = bitmap.getPixel((int)x,(int) y); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { Log.i(“COORDINATES”,”Touch coordinates : x” + String.valueOf(x) + “y” + String.valueOf(y)); ivTouch.setX(x); ivTouch.setY(y); int redValue […]

在嵌套的Java 8并行流动作中使用信号量可能是DEADLOCK。 这是一个错误吗?

考虑以下情况:我们使用Java 8并行流来执行并行forEach循环,例如, IntStream.range(0,20).parallel().forEach(i -> { /* work done here */}) 并行线程的数量由系统属性“java.util.concurrent.ForkJoinPool.common.parallelism”控制,通常等于处理器的数量。 现在假设我们想限制特定工作的并行执行次数 – 例如,因为该部分是内存密集型的,而内存约束意味着并行执行的限制。 限制并行执行的一种明显而优雅的方法是使用信号量( 此处建议),例如,以下代码片段将并行执行的数量限制为5: final Semaphore concurrentExecutions = new Semaphore(5); IntStream.range(0,20).parallel().forEach(i -> { concurrentExecutions.acquireUninterruptibly(); try { /* WORK DONE HERE */ } finally { concurrentExecutions.release(); } }); 这很好用! 但是:在worker中使用任何其他并行流(在/* WORK DONE HERE */ )可能会导致死锁 。 对我来说,这是一个意外的行为。 说明:由于Java流使用ForkJoin池,因此内部forEach正在分叉,并且连接似乎正在等待。 但是,这种行为仍然出乎意料。 请注意,如果将”java.util.concurrent.ForkJoinPool.common.parallelism”设置为1,并行流甚至可以工作。 另请注意,如果存在内部并行forEach,则它可能不透明。 问题: 这种行为是否符合Java 8规范(在这种情况下,它意味着禁止在并行流工作者中使用信号量)或者这是一个错误? […]

具有多个子项的树的数组中的generics类型

我正在尝试实现一个有多个孩子的树,我需要以某种方式存储这些孩子。 我决定使用LinkedList但我想先尝试使用数组。 (我不想使用任何import货。) class Node<T extends Comparable> { Node arrChildren[] = new Node[size]; } 这不起作用。 class Node<T extends Comparable> { Comparable<Node> arrChildren[] = new Comparable[size]; T element; } 这有效,但我无法将arrChildren[0]与普通的Node ,如果我制作了所有Node的Comparable节点,我无法访问其中的元素。 这是我关于Stack溢出的第一篇文章我希望得到一个好的回应,我不介意批评。 谢谢。

来自Java而不是Firebase控制台的Firebase Cloud Messaging通知

我是Firebase的新用户,当我的Java应用程序尝试使用客户端的Firebase令牌发送通知/消息时,我遇到错误,例如错误的发件人ID和HTTP状态401的身份validation错误。 请注意,使用Firebase控制台,我可以将消息发送到客户端。 对于客户端应用程序,我执行了以下操作: 从这里克隆Firebase messaging快速入门应用程序 – https://github.com/firebase/quickstart-android/tree/master/messaging – 已经设置了Firebase依赖等。 在Android Studio加载了克隆的应用程序。 使用Firebase控制台,创建了一个名为“ My Notification Client的新项目,并使用com.google.firebase.quickstart.fcm添加了一个应用,作为Android应用的包名称。 下载了添加到新创建项目的Android应用的google-services.json文件,并将其复制到messaging/app/文件夹,并与Android Studio成绩文件同步。 创建了一个模拟器并在Android Studio运行应用程序。 当应用程序加载到模拟器中时,单击“ Log Token按钮以在Android Studio的Android Monitor选项卡中捕获客户端的Firebase标记。 使用Firebase控制台,选择新创建的项目“ My Notification Client ,单击左窗格中的“ Notifications链接,并通过粘贴上一步中捕获的Firebase令牌向设备发送通知。 这很棒! 下一步是使用单独的简单Java应用程序(最终将成为通知服务器)将通知发送到客户端,而不是使用Firebase控制台。 为此,我按照此处列出的步骤进行了操作 – https://firebase.google.com/docs/server/setup#prerequisites 。 具体来说,这些是我执行的步骤: 在Firebase Console中创建了一个名为My Notification Server的新项目。 使用Firebase控制台中的Settings > Permissions ,创建新服务帐户并下载serviceAccountCredentials.json文件。 在Eclipse中创建了一个新的maven项目,并在pom.xml中添加了以下依赖项: com.google.gcm gcm-server 1.0.0 com.googlecode.json-simple json-simple 1.1.1 com.google.firebase firebase-server-sdk 3.0.0 […]

使用getServletConfig()时获取NPE .getServletContext()。getAttribute()(Java)

我很长一段时间都在使用Servlets。 而我正在解决这个问题,我无法终止自己。 我正在使用Servlets创建一个小型Web项目,我尝试将我的Service和DAO对象添加到ServletContext。 HTTP Status 500 – Error instantiating servlet class com.taxi.service.controller.LoginController type Exception report message Error instantiating servlet class com.taxi.service.controller.LoginController description The server encountered an internal error that prevented it from fulfilling this request. exception javax.servlet.ServletException: Error instantiating servlet class com.taxi.service.controller.LoginController org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) root cause […]

自动assembly时,Spring集成测试速度很慢

我正在尝试加速我们环境中的集成测试。 我们所有的课程都是自动assembly的。 在我们的applicationContext.xml文件中,我们定义了以下内容: …additional directories 我注意到Spring正在扫描上面指出的所有目录,然后迭代每个bean并缓存每个bean的属性。 (我从spring开始查看DEBUG消息) 因此,以下测试大约需要14秒才能运行: public class MyTest extends BaseSpringTest { @Test def void myTest(){ println “test” } } 有没有办法延迟加载配置? 我尝试添加default-lazy-init=”true”但这不起作用。 理想情况下,只实例化测试所需的bean。 提前致谢。 更新 :我之前应该说过,我不想为每个测试都有一个上下文文件。 我也不认为只有测试的上下文文件才有效。 (此测试上下文文件最终会包含所有内容)

Java Swing – 将JPanel添加到JOptionpane的键输入

当我运行代码时,添加的Example1类到JOptionPane(在Frame中)应该获得keyInput,然后更改播放器实例的y值(在example1中),但它不起作用。 另外,我如何能够在其轴上旋转船舶,然后朝着其面向的方向移动? 目前它沿着其旋转的方向移动,但它在坐标0,0上旋转。 帧 import javax.swing.*; import java.awt.*; /** * Created by griffin on 12/7/2015. */ public class Frame extends JFrame { public Frame() { initUI(); } private void initUI() { JTabbedPane jtp = new JTabbedPane(); Example1 e1 = new Example1(); Example2 e2 = new Example2(); getContentPane().add(jtp); jtp.add(e1); jtp.add(e2); jtp.addTab(“Example 1”, e1); jtp.addTab(“Example 2”, e2); […]

当总和超过100并仍然预先形成总和和平均值时,如何让此代码停止输入?

我已经在这几个小时!!!! 对赋值的更新声明我们需要在它们的值超过100时停止用户输入。如果不重写整个内容,我该如何“循环”它? 我知道代码很重,但这是分配的要求。 我想我的大脑只是java汤! 任何帮助都是极好的 :) public static void main(String[] args) { //Use Main Method for gathering input float input = 1; // Declare variable for sum float theSum = 0; // Declare variable for average float average = 0; // Declare variable for counting the number of user inputs int counter = 0; /* […]

junit测试类,用于以下代码

如何模拟Phone对象的对象。 代码吼叫, public class Fortest { UserDao userdao = new UserDao(); Phone name = new Phone(); public String handleUser(User user) { String returncode=”failed”; //User usr = new User(“bob”); String username=user.getUsername(); String pass=user.getPass(); System.out.println(“username and password : “+username+” : “+pass); Phone name = new Phone(); String ph = name.getA(); System.out.println(“ph “+ph); if(ph.equalsIgnoreCase(“test”)){ System.out.println(“A “+ph); returncode=”done”; } […]

在Android中运行新线程和UI线程的方法是什么?

据我所知,当我们运行进程时,他们会在主线程中启动它们。 当我们做一些较重的工作时,我们使用一个新线程。 如果我们想修改UI外观,我们使用run on UI。 有人可以向我解释这些线程做了什么以及如何使用它们?