我正在尝试用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) 我有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()抛出),因为我假设它们将被抛出,因为我只是返回而不等待其他两个任务完成.此外,我怀疑代码是否会像预期的那样工作.我觉得我接近解决方案但却遗漏了一些东西.
我正在开发一个可以在Android中记录呼叫的应用程序.我已经阅读了很多讨论呼叫录音问题的主题.我知道并非所有Android手机都可以录制通话.但我想知道如何记录Play市场上最受欢迎的应用程序,例如https://play.google.com/store/apps/details?id=com.appstar.callrecorder或https://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) 经过一段时间,我已经开始从今年早些时候开始一个项目.该应用程序是围绕使用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) 我正在尝试在一个模式中创建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) 我正在玩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], …
我有一个与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
任何人都可以解释,为什么这在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中运行了以下程序.
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相比?
因此,我正在尝试为玩家制作一个带有健康栏的游戏,但每当我使用交叉产品或任何其他数学方法应该起作用时,百分比结果是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程序中删除文件并编写此代码.它无法删除文件,我无法理解为什么.文件未使用且未写保护.
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) 嗨,我正在从工作.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 ×12
math ×2
algorithm ×1
android ×1
arraylist ×1
asynchronous ×1
delete-file ×1
eclipse ×1
file ×1
futuretask ×1
inheritance ×1
io ×1
java-8 ×1
jframe ×1
jlabel ×1
lambda ×1
netty ×1
oop ×1
performance ×1
phone-call ×1
swing ×1
tcp ×1
xls ×1