小编Ian*_*edv的帖子

简单Netty Echo服务器/客户端无法接收消息

我正在尝试用Netty编写一个简单的echo服务器.我正在阅读Netty in Action MEAP v8来了解一些理论并学习Netty的核心基础知识.客户端连接成功,但客户端没有消息通过.我能够将一条消息telnet到服务器并收到响应,所以我猜问题是在客户端上,我不知道出了什么问题,因为我是Netty的新手.

这是客户:

public class Client {

    private final String host;
    private final int port;

    public Client(String host, int port) {
        this.host = host;
        this.port = port;
    }

    public void start() throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();
        try {
            Bootstrap b = new Bootstrap();
            b.group(group).channel(NioSocketChannel.class)
                          .remoteAddress(new InetSocketAddress(host, port))
                          .handler(new ChannelInitializer<SocketChannel>() {

                              @Override
                              public void initChannel(SocketChannel ch) throws Exception {
                                  ch.pipeline().addLast(new EchoClientHandler());
                              }
                          });

            ChannelFuture f = b.connect().sync();

            f.channel().closeFuture().sync();
        } finally {
            group.shutdownGracefully().sync();
        } …
Run Code Online (Sandbox Code Playgroud)

java tcp client-server netty

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

当一个未来任务预期结果时继续

我有3个FutureTask<T>物体.我希望它们是异步处理的.但是,只要其中一个FutureTasks get()方法没有返回,null我想继续,即我的方法(包装器)返回,并且不等到处理其他两个FutureTasks.我想到了类似的东西:

private File wrapper(final File file) {
    ExecutorService executors = Executors.newCachedThreadPool();
    File returnFile;
    FutureTask<File> normal= ...
    FutureTask<File> medium=...     
    FutureTask<File> huge=...

    executors.execute(normal);
    executors.execute(medium);
    executors.execute(huge);
    try {
        if((returnFile=normal.get()) != null || 
           (returnFile=medium.get()) != null ||  
           (returnFile=huge.get()) != null)

            return returnFile;

    } catch(ExecutionException | InterruptedException e) { }
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何以正确的方式捕获异常(由get()抛出),因为我假设它们将被抛出,因为我只是返回而不等待其他两个任务完成.此外,我怀疑代码是否会像预期的那样工作.我觉得我接近解决方案但却遗漏了一些东西.

java asynchronous executorservice futuretask

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

如何在Android中录制电话

我正在开发一个可以在Android中记录呼叫的应用程序.我已经阅读了很多讨论呼叫录音问题的主题.我知道并非所有Android手机都可以录制通话.但我想知道如何记录Play市场上最受欢迎的应用程序,例如https://play.google.com/store/apps/details?id=com.appstar.callrecorderhttps://play.google. COM /存储/应用程序/详细信息?ID = polis.app.callrecorder.我认为你不是在MediaRecorder课程上使用它来完成这项工作,而是还有别的东西.因为我已经开发了自己的应用程序,但我只能录制我的声音.但是这两个应用程序正在记录我的声音和我呼唤的男人的声音.他们是怎么做到的?我知道我们无法访问设备扬声器来录制声音.你能给我一些关于如何录制语音电话的想法吗?这是我在我的应用程序中使用的代码:

public class CallRecorderService extends Service {

    private MediaRecorder mRecorder;
    private boolean isRecording = false;

    private PhoneStateListener phoneStateListener = new PhoneStateListener() {

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    stopRecording();
                break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    startRecording(incomingNumber);
                break;
                case TelephonyManager.CALL_STATE_RINGING:
                break;
                default:

                break;
            }
        }
    };

    @Override
    public void onCreate() {
        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

        super.onCreate();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    } …
Run Code Online (Sandbox Code Playgroud)

java android phone-call

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

Eclipse Mars在使用Windowbuilder时崩溃

经过一段时间,我已经开始从今年早些时候开始一个项目.该应用程序是围绕使用Eclipse ADT Windowbuilder构建的GUI构建的.现在,当我想再次使用窗口构建器查看我的GUI类时,Eclipse开始解析并简单地在"刷新"时崩溃.这是我在终端中收到的崩溃消息:

Exception in thread "Thread-16" org.eclipse.swt.SWTException: Invalid thread access
    at org.eclipse.swt.SWT.error(SWT.java:4397)
    at org.eclipse.swt.SWT.error(SWT.java:4312)
    at org.eclipse.swt.SWT.error(SWT.java:4283)
    at org.eclipse.swt.widgets.Widget.error(Widget.java:481)
    at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:419)
    at org.eclipse.swt.widgets.Control.isVisible(Control.java:3620)
    at org.eclipse.swt.widgets.ProgressBar.timerProc(ProgressBar.java:283)
    at org.eclipse.swt.widgets.Display.windowTimerProc(Display.java:4587)
[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
java: ../../src/xcb_io.c:274: poll_for_event: Zusicherung »!xcb_xlib_threads_sequence_lost« nicht erfüllt.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我不知道如何解决这个问题.Windowbuilder已经使用这个应用程序在几个月前工作了.

编辑:

这是GUI的类.

public class DBDatabaseSystem implements Serializable {

    public static JFrame mainGui;
    public static Config config;
    private static final …
Run Code Online (Sandbox Code Playgroud)

java eclipse windowbuilder

5
推荐指数
0
解决办法
1516
查看次数

在模式中动态添加JLabel但最后一个不能正常工作

我正在尝试在一个模式中创建40个动态JLabel,这工作得非常好但是最后一个JLabel没有根据模式放置.谁能告诉我我做错了什么?

这是我到目前为止所做的:

public class Booking2 {

    public static void main(String[] args) {
        JFrame jf = new JFrame();
        jf.setVisible(true);
        jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);

        jf.setSize(700, 400);
        jf.setLocationRelativeTo(null);
        int c1 = 40;
        int count = 0, count2 = 0, count3 = 0, count4 = 0, x;
        JLabel[] jl = new JLabel[c1];

        for (int i = 0; i <= c1 - 1; i++) {
            jl[i] = new JLabel();

            if (i <= 9) {
                x = 25 * count;
                jl[i].setBounds(x, 50, 20, …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel jframe

4
推荐指数
1
解决办法
70
查看次数

Java - lambda推断类型

我正在玩a的用法FunctionalInterface.我到处都看到了以下代码的多种变体:

int i = str != null ? Integer.parseInt() : null;
Run Code Online (Sandbox Code Playgroud)

我正在寻找以下行为:

int i = Optional.of(str).ifPresent(Integer::parseInt);
Run Code Online (Sandbox Code Playgroud)

ifPresent只接受一个Supplier,Optional不能扩展.

我创建了以下内容FunctionalInterface:

@FunctionalInterface
interface Do<A, B> {

    default B ifNotNull(A a) {
        return Optional.of(a).isPresent() ? perform(a) : null;
    }

    B perform(A a);
}
Run Code Online (Sandbox Code Playgroud)

这允许我这样做:

Integer i = ((Do<String, Integer>) Integer::parseInt).ifNotNull(str);
Run Code Online (Sandbox Code Playgroud)

可以添加更多默认方法来执行诸如此类操作

LocalDateTime date = (Do<String, LocalDateTime> MyDateUtils::toDate).ifValidDate(dateStr);
Run Code Online (Sandbox Code Playgroud)

它读得很好Do [my function] and return [function return value] if [my condition] holds true for [my input], …

java lambda functional-interface

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

在背包中获取对象列表

我有一个与0-1背包类似的问题。

我试图做的修改是获取所选对象的列表,而不是成本。我尝试使用以下代码:

public static int fillPackage(double weight,ArrayList<Item> item, int n) {
    //base case
    if(n == 0 || weight == 0)
        return 0;

    if(item.get(n - 1).getWeight() > weight)
        return fillPackage(weight, item, n - 1);    

    else {
        int include_cost = item.get(n - 1).getCost() + fillPackage((weight - item.get(n - 1).getWeight()), item, n - 1);
        int exclude_cost = fillPackage(weight, item, n - 1);
        if(include_cost > exclude_cost) {
            my_pack.add(item.get(n - 1));
            return include_cost;
        }
        else {
            return exclude_cost;
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

my_pack …

java algorithm arraylist knapsack-problem dynamic-programming

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

java中的继承行为

任何人都可以解释,为什么这在eclipse中显示错误,但运行成功没有任何错误.我已粘贴下面的代码.

家长班:

public class Parent {
    /*Parent class method*/
    public void show() { 
        System.out.println("Parent class show called");
    }
}
Run Code Online (Sandbox Code Playgroud)

儿童班:

public class Child extends Parent {
    /* Child class overridden method*/  
    private void show() { 
        // this line show error in eclipse
        System.out.println("Child class show called ");
    }

    public static void main(String[] args) {
        Parent p = new Child();
        p.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

OutPut是:父类显示调用

java oop inheritance

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

Java 8中的Math.pow性能与Java 7相比

我在不同版本的Java中运行了以下程序.

final double[] values = new double[10000];
final long start = System.currentTimeMillis();
double sum = 0;

for (int i = 0; i < values.length; i++)
    sum += Math.pow(values[i], 2);

final long elapsed = System.currentTimeMillis() - start;
System.out.println("Time elapse :: " + elapsed);
Run Code Online (Sandbox Code Playgroud)

Java 7:输出

时间流逝:: 1

Java 8:输出

时间流逝:: 7

为什么Java 8中的性能问题与7相比?

java math performance java-8

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

你如何计算Java中的百分比?

因此,我正在尝试为玩家制作一个带有健康栏的游戏,但每当我使用交叉产品或任何其他数学方法应该起作用时,百分比结果是0.0......这是处理此问题的.java文件:

package com.game.graphics;

import com.game.entity.mob.Mob;

public class HUD {
    Mob target;
    Sprite healthbar;
    Sprite bgBar;

    double percent_normal;

    public HUD(Mob target) {
        this.target = target;
        bgBar = new Sprite(0xff777777, 104, 8);
        healthbar = new Sprite(0xffFF0000, 100, 6);
    }

    public void update() {
        percent_normal = target.getHealth() / 100;
        percent_normal *= target.getMaxHealth();
    }

    public void printData() {
        System.out.println("Normal(" + percent_normal + ")");
    // if the targets's health is any lower than the max health then this seems to always return 0 …
Run Code Online (Sandbox Code Playgroud)

java math

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

Java文件删除失败

我需要从java程序中删除文件并编写此代码.它无法删除文件,我无法理解为什么.文件未使用且未写保护.

public static void delfile(String filetodel) {
    try {
        File file = new File("filetodel");

        if (file.delete()) {
            System.out.println(file.getName() + " is deleted!");
        } else {
            System.out.println("Delete operation is failed." + filetodel);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

java io file delete-file

0
推荐指数
1
解决办法
3868
查看次数

线程"main"中的异常java.lang.OutOfMemoryError:eclipse中的Java堆空间

嗨,我正在从工作.xls表中读取包含8500数据行的数据,我正在尝试将其存储double[][]但我收到错误

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

public static double[][] getData_DoubleArray(String path, int sheetNo, int rowIndex1, int rowIndex2) {
    double[][] doubleArray=null;
    try {
        HSSFSheet sheet = PS_ExcelReader.getWorkSheet(path,sheetNo);
        System.out.println("sheet" + sheet);
        List<Object> data1 =  PS_ExcelReader.getFullColumnByIndex(sheet, rowIndex1);

        List<Object> data2 =  PS_ExcelReader.getFullColumnByIndex(sheet, rowIndex2);
        doubleArray = new double[data1.size()][data2.size()];
        for(int i = 0; i < data1.size(); i++) {
            for(int j = 0; j < data2.size(); j++) {
                doubleArray[i][0] = (Double)data1.get(i);
                doubleArray[i][1] = (Double)data2.get(j);
            }               
        }
        System.out.println("array …
Run Code Online (Sandbox Code Playgroud)

java xls

0
推荐指数
1
解决办法
1352
查看次数