我需要一些关于JProgressBar组件的帮助.我的程序副本从一个地方到另一个文件使用java.nio FileChannels.实际的复制方法是transferFrom().
我现在有两个问题.
如何监控FileChannel的传输进度?我发现的所有教程都使用传统的java.io InputStreams,并在循环输入流时增加进度int.
我的复制方法(FileChannel方法)封装在一个单独的方法中,该方法由其他方法调用,这些方法迭代源文件夹和目标文件夹,然后为每个文件调用FileChannel方法.
如何为完整的复制机制实现ProgressBar?
好吧,我应该早一点阅读常见问题解答,所以我想我必须编辑我的初始帖子,而不是评论答案,对吧?
好的,这是我到目前为止所做的.正如jambjo建议的那样(感谢方式),该transferFrom()方法现在已经循环.顺便说一句:是否有一个更好的块大小,或者它取决于我的进度条的粒度,就像EJP所说的那样?
这是我的代码片段:
while (position < size) {
position += destination.transferFrom(source, position, chunkSize);
current = (position/size)*100;
System.out.println(current);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,'当前'值在循环内保持为0,我不知道为什么.我错过了什么吗?
再次感谢jambjo!我真的很感激你的意见!现在单个文件的进度监控工作,让我们解决我的第二个问题.
我不想,我不仅要监控一个文件的进度,而是监视一堆文件的进度.我的主要复制方法遍历各种目录并通过调用实际的传输方法复制适当的文件.因此复制方法不传输文件,它们只是选择实际传输方法的文件.
我有一个mysql表列作为计数器(int).每次我更新该列时,我希望字段值加1.
所以,如果它是45,我希望它是46.
我怎么能用SQL做到这一点?
我正在攻读JavaScript考试.我也对C和Perl有一点了解,所以我熟悉所有三种语言中的前缀和后缀表示法.
我做了一次在线练习考试,我犯的一个错误是评估以下代码:
var x = 10;
x += x--;
Run Code Online (Sandbox Code Playgroud)
现在,我认为它将评估为19,因为它将是10 + 10,然后减去1来制作9.但我得到的反馈是它错了,它实际上评估为20.我认为这听起来有点可疑所以我在HTML文档中测试了它,它再次出现了20.然后我尝试了C和Perl中的等价物,并且都评估为19.
任何人都可以向我解释为什么当其他语言将其评估为19时,JavaScript会将答案评估为20?我从测试中得到的答案对我来说不太清楚:
增量++和减量运算符可以放在操作数之前或之后.如果增量或减量运算符放在操作数之前,则操作立即发生.如果在操作数之后放置递增或递减运算符,则直到下次在程序中访问操作数时,操作数值的更改才会显现.因此,表达式x + = x--等于x = x + 10,其值为20.
我实际上已经找出了导致这个错误的原因,但谷歌搜索却没有成功,所以我想我会把它写下来帮助其他人.当您# -*- coding: undecided -*-在其中一个文件的顶部收到评论时,会弹出此错误.Emacs为我自动添加了这个,但重新保存文件导致它被更改为正确# -*- coding: utf-8 -*-.
我现在面临这个问题几周了.我不知道为什么如果我对我的css文件进行任何更改它没有显示.没有在任何浏览器中显示.请告诉我如何解决这个问题.
假设我有一些T带有一些非空字段的表A.有一个聚集索引A.请考虑以下两个选项:
A了主键.A.差异在哪里?我知道什么是主键,我知道数据库理论存在概念上的差异.但是SQL Server 的实际区别是什么?SQL Server数据库引擎的行为有何不同?在这两种情况下,表的聚簇索引都是打开的A; 在这两种情况下我都可以A通过外键来引用.
(启发了这个问题的相关问题:Microsoft SQL Server 2008主键的含义)
任何人都有一个想法,为什么在我的浏览器中有一个带有"@"的链接,但是当我在我的HttpWebRequest代码中获得这个特定链接时,我得到405错误?
远程服务器返回错误:(405)方法不允许.
有问题的示例链接:
http://internal_link/@api/deki/site/logo.png
Run Code Online (Sandbox Code Playgroud)
谢谢
对不起,我找不到这个问题的正确标题.我使用for循环生成了以下内容,并使用以下模式连接了提交按钮的名称:submit_edit_category_1 submit_edit_category_2 submit_edit_category_3
echo "<input type='submit' value = 'Edit' name='submit_edit_category_" .
$obj_categories_admin->categories[$i]['category_id'] . "'/>";
Run Code Online (Sandbox Code Playgroud)
我想循环遍历这些值,以便我可以按钮动作whichis edit_category和类别ID 1,2或3.我想这样的事情:
if(isset($_POST) == 'edit_category'))
{
//code here
}
Run Code Online (Sandbox Code Playgroud)
有人建议我这样做:
name="submit[which_action][which_category]"
a1 = $_POST['submit'];
$which_action = reset(array_keys($a1));
$which_category = reset(array_keys($a1[$which_action]));
Run Code Online (Sandbox Code Playgroud)
这似乎没有用.任何人都可以给我一个不同的方式来做到这一点?谢谢!
我想使用Lucene.NET在两个应用程序之间共享全文搜索:一个是ASP.NET MVC应用程序,另一个是控制台应用程序.两个应用程序都应该搜索和更新索引.如何处理并发?
我在ifdefined.com上找到了一个教程,其中讨论了类似的用例.我担心锁定将是一个很大的瓶颈.
PS:我还注意到IndexSearcher使用了索引的快照,在上面提到的教程中,只有在索引更新时才会创建搜索器.这是一个好方法吗?我可以在每次搜索时创建一个常规搜索器对象,如果是,那么开销是多少?
我找到了一个相关的问题 Lucene.Net是否管理多个访问同一索引的线程,一个索引而另一个正在搜索?什么声称进程间并发是安全的.这是否意味着它不是指数的竞争条件?
也是一个非常重要的方面.如果让10-15个线程试图通过获取此解决方案中提供的共享锁来更新Lucene索引,那么所涉及的性能损失是多少?
使用它几个月之后,我必须补充一点,搜索的开放索引通常可以在高CPU和内存加载下创建OutOfMemory异常,如果查询使用排序.指数开仓操作的成本很小(根据我的经验),但GC的成本可能相当高.
c# ×2
database ×2
mysql ×2
.net ×1
box2d ×1
css ×1
encoding ×1
http ×1
java ×1
javascript ×1
jprogressbar ×1
lucene ×1
lucene.net ×1
nio ×1
php ×1
primary-key ×1
ruby ×1
ruby-1.9 ×1
sql-server ×1
swing ×1
url ×1
xna ×1