我正在阅读MCTS Self-Paced Training Kit(考试70-536):Microsoft .NET Framework-应用程序开发基础,第二版电子书.
现在我完成了线程章节(第7节).在第2课结束时的问题中,有一个问题(第2条)询问:"您正在编写一个可以由多个线程运行的方法.确保在任何线程正在读取时没有线程写入该文件从文件开始.但是你必须尽可能有效地完成多线程读取."
然后有两个答案是答案的答案:A.
lock(file)
{
// Read
}
Run Code Online (Sandbox Code Playgroud)
和
D.
ReaderWriterLock rwl = new ReaderWriterLock();
rwl.AcquireReaderLock(10000);
// Read
rwl.ReleaseReaderLock();
Run Code Online (Sandbox Code Playgroud)
问题中的微妙提示"它必须对多次读取有效"当然意味着他们希望你使用它ReaderWriterLock,但后来我想:"创建一个ReaderWriterLock你要锁定的方法内部的新实例应该不起作用,每次调用该方法都会锁定一个不同的实例ReaderWriterLock."
然而在答案中它说:D.
所以恕我直言,这是书中的一个错误.它们可能在代码示例中意味着新实例将在其他地方创建.如果我在考试中得到这个问题,我会错的(我会选择A).
我有一个关于指针解除引用速度的问题.我有这样的结构:
typedef struct _TD_RECT TD_RECT;
struct _TD_RECT {
double left;
double top;
double right;
double bottom;
};
Run Code Online (Sandbox Code Playgroud)
我的问题是,哪一个更快,为什么?
情况1:
TD_RECT *pRect;
...
for(i = 0; i < m; i++)
{
if(p[i].x < pRect->left) ...
if(p[i].x > pRect->right) ...
if(p[i].y < pRect->top) ...
if(p[i].y > pRect->bottom) ...
}
Run Code Online (Sandbox Code Playgroud)
案例2:
TD_RECT *pRect;
double left = pRect->left;
double top = pRect->top;
double right = pRect->right;
double bottom = pRect->bottom;
...
for(i = 0; i < m; i++)
{
if(p[i].x < left) ...
if(p[i].x …Run Code Online (Sandbox Code Playgroud) 我知道我的问题标题听起来一定很模糊。但让我在这里澄清一下。
假设我在中间件堆栈上有一个 android 应用程序。在我的活动的 onCreate() 中,我初始化了我的中间件模块。
在它的 onDestroy() 中,我必须取消初始化中间件。现在我的中间件调用可能需要相当长的时间来处理。所以我想知道 onDestroy() 函数有多少时间,看看我的取消初始化是否可以在这段时间内发生。
将我的 de-init 保留在 onDestroy() 中是否合理?
另外,假设我在活动 A1 的 onCreate() 中初始化中间件。单击按钮时,活动 A1 会切换到活动 A2。在内存不足的情况下,LMK 会终止一段时间未使用的活动。在这种情况下,活动 A1 不会被杀死吗?当活动 A1 被终止时,我在 A1 中创建的所有实例也会被销毁吗?
问候,琪琪
有些东西我只是不了解guice:根据我到目前为止所读到的内容,我应该只在我的bootstrapping类中使用Injector(在独立的应用程序中,这通常是在main()方法中) ,如下例所示(取自guice文档):
public static void main(String[] args) {
/*
* Guice.createInjector() takes your Modules, and returns a new Injector
* instance. Most applications will call this method exactly once, in their
* main() method.
*/
Injector injector = Guice.createInjector(new BillingModule());
/*
* Now that we've got the injector, we can build objects.
*/
RealBillingService billingService = injector.getInstance(RealBillingService.class);
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果不是所有我需要的对象都可以在启动期间创建?也许我想在应用程序运行时响应一些用户交互?我不是必须将我的注入器放在某处(例如作为静态变量),然后在需要创建新对象时调用injector.getInstance(SomeInterface.class)吗?
当然,在整个地方传播对Injector.getInstance()的调用似乎并不可取.
我在这里弄错了什么?
我正在使用Apache2和mod_rewrite来隐藏我的查询字符串.这些是有问题的规则.
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule (.*) /search/%1 [R=301,L]
RewriteRule ^search\/?$ /search/?query=test [R=301,L]
Run Code Online (Sandbox Code Playgroud)
当我访问/search(或/search/)时,我被正确地重定向到/search/?query=test(根据最后的规则)
从那里,RewriteCond而RewriteRule应该踢在和重定向我/search/test,对不对?据我了解了%1我的第一个RewriteRule对应于(.*)在RewriteCond其中应该包含test.
然而,实际发生的是我被重定向到/search/test/?query=test.因此,该规则有效,但由于某种原因附加了查询字符串.QSA选项是以某种方式/某处自动添加的吗?
然后我陷入了一个无限循环的重定向,/search/test?query=test因为第一个RewriteCond又RewriteRule重新启动,再一次又一次......
我究竟做错了什么?!
谢谢!
我在表格中有传感器数据:
Time Value
10 100
20 200
36 330
46 440
Run Code Online (Sandbox Code Playgroud)
我想提取每个时间段的值的变化.理想情况下,我想得到:
Starttime Endtime Change
10 20 100
20 36 130
36 46 110
Run Code Online (Sandbox Code Playgroud)
我的SQL技能非常简陋,所以我倾向于将所有数据都输出到处理它的脚本然后将其推回到新表中,但我想我会问是否有一种灵活的方式来完成这一切在数据库中.
我在我的Web应用程序中有servlet提供图像,当我访问那些带有浏览器图像的URL时,服务器是正确的.然后我有另一个调整图像大小的servlet,想法是在resize servlet中通过url访问get图像,然后调整图像大小.但由于某种原因,以下所有方法都返回null,但是当我使用浏览器访问给定的URL时,图像显示正确.
URL imageURL = new URL(fullUrl);
// Case 1
RenderedImage img = ImageIO.read(imageURL);
// Case 2
BufferedImage img = JAI.create("url", imageURL).getAsBufferedImage();
// Case 3
Image img = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(imageURL);
Run Code Online (Sandbox Code Playgroud) 现在我试图在Windows 7下的计算机上安装eclipse.问题是如何同时安装eclipse for java,c/c ++,php,javascript?
将下载四个zip文件,然后将它们全部解压缩成一个直接说d:\eclipse有效吗?
有没有关于eclipse安装/配置的好教程?
我认为这一定是显而易见的,但我无法弄清楚.
假设有一个tblData带有列ID的表和一个_tvf带有IDas参数的table-valued-function().我需要所有ID的结果tblData.
但:
SELECT * FROM tblData data
INNER JOIN dbo._tvf(data.ID) AS tvfData
ON data.ID = tvfData.ID
Run Code Online (Sandbox Code Playgroud)
给我一个错误: The multi-part identifier "data.ID" could not be bound
将所有ID传递给此TVF并将结果连接起来的正确方法是什么?
谢谢
我已经QTreeWidgetItem设置了QTreeWidget2列.两个单元都有一个CheckBox设置setCheckState(...).
当用户在我的第一列中取消选中CheckBox时,我取消选中第2列中的第二个CheckBox.
现在,我想阻止用户再次检查第二个CheckBox.是否可以在第2列中删除此CheckBox或仅禁用此单元格?到目前为止,我刚刚看到所有标志都在整个项目上工作,并且一组CheckBox不会消失.
顺便说一句.这些项目不可编辑,我不想使用QTableWidget/ -Item.
当我为项目调用setCheckState时,Qt将自动插入CheckBox:
QTreeWidgetItem *item = new QTreeWidgetItem(ui.TreeWidget);
item->setCheckState(0, Qt::Checked);
Run Code Online (Sandbox Code Playgroud)
在之后new的项目并不拥有一个复选框(由Qt的默认值).调用setCheckState(...)我自动插入一个CheckBox(在第0列)和Qt::CheckState我想要的.
但是在我完成之后,就没有办法删除CheckBox - 所以看起来如此.
也许有人有一个解决方案,我怎么能在以后摆脱这个CheckBox?任何帮助深表感谢!
c++ ×2
java ×2
.net ×1
android ×1
apache2 ×1
c ×1
c# ×1
dereference ×1
destroy ×1
eclipse ×1
guice ×1
image ×1
javascript ×1
local ×1
mod-rewrite ×1
php ×1
pointers ×1
postgresql ×1
qt ×1
query-string ×1
sql ×1
sql-server ×1
time-series ×1