我正在迭代一大堆字符串,它们迭代一小组字符串.由于大小,这种方法需要一段时间才能完成,所以为了加快速度,我试图从较小的集合中删除字符串,这些字符串不再需要随之使用.以下是我目前的代码:
Ms::Fasta.foreach(@database) do |entry|
all.each do |set|
if entry.header[1..40].include? set[1] + "|"
startVal = entry.sequence.scan_i(set[0])[0]
if startVal != nil
@locations << [set[0], set[1], startVal, startVal + set[1].length]
all.delete(set)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,简单的方法是array.delete(string),有效地向内部循环添加一个break语句,这会使结果变得混乱.我知道如何解决这个问题的唯一方法是这样做:
Ms::Fasta.foreach(@database) do |entry|
i = 0
while i < all.length
set = all[i]
if entry.header[1..40].include? set[1] + "|"
startVal = entry.sequence.scan_i(set[0])[0]
if startVal != nil
@locations << [set[0], set[1], startVal, startVal + set[1].length]
all.delete_at(i)
i -= 1
end
end
i += 1
end
end
Run Code Online (Sandbox Code Playgroud)
这对我来说有些邋.. …
我试图在我的程序中加快速度,并且我被告知Ruby Fibers比线程更快并且可以利用多个核心.我环顾四周,但我找不到如何实际同时运行不同的纤维.使用线程,您可以执行此操作:
threads = []
threads << Thread.new {Do something}
threads << Thread.new {Do something}
threads.each {|thread| thread.join}
Run Code Online (Sandbox Code Playgroud)
我看不出如何用纤维做这样的事情.所有我能找到的是yield和resume这似乎是只是一堆开始与纤维之间停止.有没有办法用光纤实现真正的并发?
我有一个Ruby程序,它加载了两个非常大的yaml文件,因此我可以通过分离一些进程来利用多个核心来获得一些加速.我试过看,但我无法确定如何,或者即使我可以在不同的进程中共享变量.
以下代码是我目前拥有的代码:
@proteins = ""
@decoyProteins = ""
fork do
@proteins = YAML.load_file(database)
exit
end
fork do
@decoyProteins = YAML.load_file(database)
exit
end
p @proteins["LVDK"]
Run Code Online (Sandbox Code Playgroud)
P 因为分叉而显示为零.
那么分叉进程是否可以共享变量?如果是这样,怎么样?
我有两个可以测试游戏的设备:美国Celluar手机(SCH-R880)和Kindle Fire,Kindle Fire比手机更强大.
我有几个短(小于或约1秒)的声音效果.为了节省内存,我加载,播放和释放其中一些声音效果.在电话中,他们(大多数)按预期播放.然而,在Kindle Fire上,它们被缩短了.真正短暂的声音被切断得如此之快,我听不到任何声音.然而,在设置时加载并保持的那些播放正常.
任何人都知道这里发生了什么?我是否会以某种方式过早发布我的媒体?以下是这方面的一个例子.在电话里,我听到"二级!" 但是在Kindle上我听到了类似"Lev tw"的内容.
mpNum = null;
try
{
switch (level)
{
case 2:
mpNum = MediaPlayer.create(contxt, R.raw.l2); break;
case 3:
mpNum = MediaPlayer.create(contxt, R.raw.l3); break;
case 4:
mpNum = MediaPlayer.create(contxt, R.raw.l4); break;
case 5:
mpNum = MediaPlayer.create(contxt, R.raw.l5); break;
case 6:
mpNum = MediaPlayer.create(contxt, R.raw.l6); break;
case 7:
mpNum = MediaPlayer.create(contxt, R.raw.l7); break;
case 8:
mpNum = MediaPlayer.create(contxt, R.raw.l8); break;
default:
return;
}
MediaPlayer vLevel = MediaPlayer.create(contxt, R.raw.level);
vLevel.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
public void onPrepared(MediaPlayer mp) …Run Code Online (Sandbox Code Playgroud) 我是PHP的新手,我无法弄清楚这个基本问题.PHP有某种set或list对象吗?类似于数组的东西,但能够动态添加或删除任意数量的对象.
在调查崩溃时,我遇到了这段代码:
FILE * RejectFile = fopen("filename", "a+");
// other code happens
delete RejectFile;
Run Code Online (Sandbox Code Playgroud)
我的理解是你只调用delete由它创建的对象new.虽然这些旧代码中的一些非常糟糕,但这可能是错误的,但我不确定.这是有效的代码吗?
在我正在开发的游戏中,当按下菜单按钮时,我会弹出一个游戏菜单.但是,我最近发现Android的新版本没有菜单按钮,而是一个动作栏.
需要注意的是,我没有使用实际的Android菜单.我正在做的就是检测到按下菜单按钮,然后在游戏中处理事件.这意味着我需要的是用户可以按下并检测到它被按下的内容.
所以我的问题是,我如何支持菜单按钮和更新的操作栏?我希望我的应用程序支持7级电流API级别.
UPDATE
好的,在阅读那篇文章之后,我想重新提一下我的问题.它说它"添加了系统导航旁边的动作溢出按钮".我的清单有android:minSdkVersion ="7"android:targetSdkVersion ="13"但我的模拟器上没有出现溢出按钮.模拟器是带有皮肤WSVGA的API 14
我正在制作一款游戏,因为我是Android新手,所以我的设计基于示例LunarLander代码.在它的设计中,GameThread.doStart()调用from GameActivity,然后线程从其GameThread.run()循环运行所有内容,如下所示(为清楚起见,大部分代码已被删除):
public class GameActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
gameView = new GameView(this);
fl = new FrameLayout(this);
fl.addView(gameView);
setContentView(fl);
gameThread = gameView.getThread();
gameThread.doStart();
}
}
Run Code Online (Sandbox Code Playgroud)
.
class GameThread extends Thread
{
public void doStart()
{
}
public void run()
{
while (running)
{
Canvas c = null;
try
{
c = mSurfaceHolder.lockCanvas();
// Use canvas
}
finally
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了解决我遇到的一些问题,我试图将更多控制权交给GameActivity,如下所示:
public class GameActivity extends Activity
{ …Run Code Online (Sandbox Code Playgroud) 我在市场上有一款安卓游戏,在尝试使用画布时,我一直在收到NullPointers的崩溃报告.我可以假设它是因为SurfaceHolder.lockCanvas()返回null,但是它在游戏中期执行,因为它基于崩溃的位置,SurfaceHolder.lockCanvas()至少返回一次有效的画布.
这很难调试,因为我无法在自己的设备上重新创建它,这让我想知道它是否与特定设备有关.我唯一的暗示是它发生的一个设备是Nexus 7.
注意:这与我提出的类似命名问题不同.另一个问题是由于尝试在可用之前使用画布,而在这里它是可用的.
以下是我的代码示例:
public class GameView extends SurfaceView implements SurfaceHolder.Callback
{
class GameThread extends Thread
{
@Override
public void run()
{
while (running)
{
Canvas c = null;
try
{
c = mSurfaceHolder.lockCanvas();
synchronized (mSurfaceHolder)
{
long start = System.currentTimeMillis();
doDraw(c);
long diff = System.currentTimeMillis() - start;
if (diff < frameRate)
Thread.sleep(frameRate - diff);
}
} catch (InterruptedException e)
{
}
finally
{
if (c != null)
{
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
} …Run Code Online (Sandbox Code Playgroud) 我在Web服务器上使用Java和hibernate来保存到Oracle SQL数据库.我创建了一个Java Date对象,但由于某种原因它到达数据库时,它只有日期而不是时间.例如,Date对象将说"2012年12月10日下午1:23:45",但在数据库中它只显示"10-DEC-12"
知道为什么会这样吗?以下是如何创建和保存日期的示例.
service.java
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Nos nos = new Nos();
nos.setTimeReceived( new Date() );
session.save( nos );
tx.commit();
Run Code Online (Sandbox Code Playgroud)
Nos.java
@Entity
@Table(name = "nos")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Nos
{
@Id
@GeneratedValue
private Long id;
@Basic(optional=false)
@Temporal(TemporalType.DATE)
@Column(name="timereceived")
private java.util.Date timeReceived;
// getters and setters
Run Code Online (Sandbox Code Playgroud) 我给的数据可以是字符串或数组.我需要做不同的操作,具体取决于它是哪一个,所以我的问题是,如何判断对象是Python中的数组还是字符串?
conn = boto.connect_sdb(AWSKey, AWSSecret)
item = conn.get_domain(dName).get_item(imagekey)
tags = item['tag']
tags == array or string?
Run Code Online (Sandbox Code Playgroud) 所以我设置了我的清单以使应用程序保持纵向模式,因为这就是游戏的播放方式.然而,尽管做了我见过别人做的事情,但是当你倾斜手机时它仍会切换模式.以下是我对清单所做的事情:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
android:screenOrientation="portrait">
...
<activity android:name=".GameActivity"
...
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="nosensor">
Run Code Online (Sandbox Code Playgroud) 我正在使用json简单来创建和解析一些json.然而,在创建它之后,我会ParseException在我做的时候得到它parser.parse(jStr);.以下是价值jStr
{"score":12,"balls":[[PURPLE_V,134.33325,331.11713,2.0,10.750022,-115,11.0,0],[PURPLE_SPLAT,59.209473,169.87143,0.0,6.2909174,16,11.0,1],[GREEN_V,119.00015,73.71671,-12.0,6.7500067,-35,11.0,0],[ORANGE_V,229.66664,7.4416676,8.0,5.250001,-5,11.0,0]]}
Run Code Online (Sandbox Code Playgroud)
这有什么问题?我可以不做数组数组吗?