我需要在视图中启动活动,比如碎片.不幸的是,我无法使用碎片.
从哪儿开始?
我有一个到服务器的TCP连接,由socket和流实现.在会话期间,服务器可以发送任意数量的消息 - 我必须阅读并处理它们.
我创建了一个线程,它以无限循环检查和读取数据:
in = socket.getInputStream();
ByteArrayOutputStream baos = null;
byte[] buf = new byte[4096];
while(!isInterrupted()) {
baos = new ByteArrayOutputStream();
for(int s; ( s = in.read(buf)) != -1; ) {
baos.write(buf, 0, s);
if(in.available() <= 0 ) {
readChunk(baos.toByteArray());
}
}
}
Run Code Online (Sandbox Code Playgroud)
但实际上,它效率不高 - 它使CPU处于高负荷状态,并且某些字节与前一个答案结合在一起.
解决这种情况最有效,最优雅的方法是什么?
我有一项上传文件的特殊服务。上传完成后,我从服务发送了一个广播-包含一个特殊的序列化对象。该对象可能是许多类的实例。为了识别此对象类,我使用了自定义的意图类型。
外观:
// Sending broadcast
Intent intent = new Intent(UploaderService.ACTION_UPLOAD_SUCCESSFULLY);
intent.setType(UploaderService.TYPE_DOC);
intent.putExtra(UploaderService.FIELD_RESULT, object);
context.sendBroadcast(intent);
// Registering receiver
IntentFilter filter = new IntentFilter(UploaderService.ACTION_UPLOAD_SUCCESSFULLY);
filter.addDataType(UploaderService.TYPE_DOC);
registerReceiver(receiver, filter);
Run Code Online (Sandbox Code Playgroud)
在注册接收方时,我抓住了IntentFilter.MalformedMimeTypeException
。
TYPE_DOC
不变的样子"vnd.com.my.package.doc"
。
因此,我想,我的mime类型必须在系统中注册。我如何在代码中做到这一点?
我想使用Java Play Framework编写RESTful后端.我之前只使用过PHP语言和Android开发.
所以我想知道Play Framework可能是典型的PHP SQL注入吗?如果是,如何防御他们?
我需要根据一些标准从表中删除一些行.SQL查询应该是这样的:
DELETE FROM tablename WHERE cond1 = 1 AND cond2 = 2
Run Code Online (Sandbox Code Playgroud)
但我发现没有这样的方法.我可以删除一个模型:
model.delete();
Run Code Online (Sandbox Code Playgroud)
或者我可以获得符合给定标准的模型列表:
Model.FINDER.where().eq("cond1", 1).eq("cond2", 2).findList();
Run Code Online (Sandbox Code Playgroud)
当然,我可以获得模型列表并在循环中删除它们,但这是非常糟糕的解决方案.我没有获得一个SQL请求,而是获得了无限的SQL请求.我也不想执行原始SQL代码,因为它可以破坏SQL跨平台兼容性.
这经常是一项任务.Play Framework是否无法使用它?
例如,我有一组字符串:
"Abc zcf",
"Abcd zcf",
"Zcf Abc",
"Zcf Abcd",
"Test ez",
"Rabc Jabc"
Run Code Online (Sandbox Code Playgroud)
如何在这个设置字符串中找到任何单词以"abc"字符开头?在我的例子中,它将是字符串
"Abc zcf",
"Zcf Abc",
"Abcd zcf",
"Zcf Abcd"
Run Code Online (Sandbox Code Playgroud)