有时将复杂或长表达式分成多个步骤是明智的(例如,第二个版本不是更清楚,但它只是一个例子):
return object1(object2(object3(x)));
Run Code Online (Sandbox Code Playgroud)
可以写成:
object3 a(x);
object2 b(a);
object1 c(b);
return c;
Run Code Online (Sandbox Code Playgroud)
假设所有3个类都实现了以rvalue作为参数的构造函数,第一个版本可能更快,因为临时对象被传递并可以移动.我假设在第二个版本中,局部变量被认为是左值.但是如果以后没有使用变量,那么C++ 11编译器是否会优化代码,因此变量被认为是rvalues,两个版本的工作方式完全相同?我最感兴趣的是Visual Studio 2013的C++编译器,但我也很高兴知道GCC编译器在这个问题上的行为.
谢谢,米哈尔
我正在使我的应用程序线程安全.其中一个步骤是同步访问或消除全局变量的使用.我正在使用Visual Studio.我找不到任何在我的代码库中查找所有全局变量的好方法.创建一个好的文本搜索模式是不可能的,我找不到任何有用的工具.你们知道有什么好办法吗?它可以是源代码分析工具或二进制文件分析器.
此处描述了在没有管理员权限的情况下调用regasm的解决方法:
我正在尝试创建一个COM库,我的用户可以在没有管理员权限的情况下从Excel VBA部署和使用它.我喜欢regasm解决方法,因为似乎人们在使用Excel VBA中的免注册COM对象方面没有太大成功.我也希望早期绑定,以便我的用户可以从语法完成中受益.
但是,上述问题中接受的答案并未描述将汇编dll放在用户计算机上的位置.管理员权限是在GAC中安装程序集所必需的,所以我想知道在哪里可以放置dll文件.我假设应用程序的目录正在搜索任何引用的dll,但我不能将我的dll放在Excel的目录中而没有管理员权限.是否可以使用Excel客户端的变通方法?有没有其他方法从VBA调用COM对象而不需要管理员权限来首先部署它们?
我的页面上有一个表单,用户可以在其中输入信用卡数据.是否有可能在HTML中将表单的操作标记为常量以防止恶意JavaScript更改表单的action属性?我可以想象一个XSS攻击,它改变了表单URL,使用户将他们的秘密数据发布到攻击者的站点.
可能吗?或者,Web浏览器中是否存在防止这类攻击发生的不同功能?
我们想使用App Store对我们的应用程序进行一些封闭式测试.
我们知道ad-hoc方式,但它需要预先收集测试人员的UDID并嵌入到配置文件中,这并不理想,因为我们想避免向100个测试人员询问他们的UDID.
另一种方法是使用不需要收集和存储UDID的企业分发,但让我们谈谈另一种可能性......
用户需要在应用启动时登录.无法从应用程序创建用户帐户,因此我们考虑在服务器上创建一些beta-tester帐户,将应用程序的beta版本提交到Apple Store,然后通过电子邮件将凭据发送给beta测试人员.
唯一的问题是,向Apple Store提交未完成的应用程序是否是推荐的做法.提交后,所有iOS用户都可以下载该应用程序,但只有beta测试人员才能登录.它还有一个额外的优势,就是更早了解Apple的反馈,因此任何问题都可以提前解决.你认为Apple会批准一个未完成的应用吗?
此外,是否可以禁用提交给Apple Store的应用程序的应用程序评论?我们不希望在测试期间收到用户的错误评论......
谢谢,米哈尔
我有一个奇怪的问题(至少对我来说:))与MySQL的锁定工具.
我有一张桌子:
create table `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
有了这些数据:
+ ---- +
| id |
+ ---- +
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 10 |
| 11 |
| 12 |
+ ---- +
现在我有2个客户端在开头执行这些命令:
set autocommit = 0;
设置会话事务隔离级别可序列化;
开始;
现在最有趣的部分.第一个客户端执行此查询:(意图插入id等于9的行)
SELECT*from test where id = 9 FOR UPDATE;
空集(0.00秒)
然后第二个客户端做同样的事情:
SELECT*from test where …
在WPF中我需要一个不规则形状的按钮.我是这样用XAML做的:
<Button Name="toggleButton" Click="toggleButton_Click" Canvas.Left="177" Canvas.Top="0">
<Button.Template>
<ControlTemplate>
<Image Source="ball.png" />
</ControlTemplate>
</Button.Template>
</Button>
Run Code Online (Sandbox Code Playgroud)
我的ball.png图像是一张PNG图像,周围有一个透明区域的球.该按钮显示正确,但即使我克隆图像的透明部分,也会执行Click事件处理程序.
有没有办法使用透明PNG创建不规则按钮?
谢谢,米哈尔
我有一个与C#内存模型和线程有关的问题.如果没有volatile关键字,我不确定以下代码是否正确.
public class A {
private int variableA = 0;
public A() {
variableA = 1;
Thread B = new Thread(new ThreadStart(() => printA())).Start();
}
private void printA() {
System.Console.WriteLine(variableA);
}
}
Run Code Online (Sandbox Code Playgroud)
我担心的是,如果保证线程B在不使用volatile的情况下看到变量A值为1 ?在主线程中,我只在构造函数中为variableA赋值1.之后我没有触及变量A,它只在线程B中使用,因此可能不需要锁定.
但是,是否保证主线程将刷新其缓存并将variableA内容写入主内存,因此第二个线程可以读取新分配的值?
另外,是否保证第二个线程将从主存中读取变量A的内容?可能会发生一些编译器优化,并且线程B可以从缓存而不是主内存中读取变量A内容吗?当指令的顺序改变时,可能会发生这种情况.
当然,将volatile添加到variableA声明将使代码正确.但是,它是否必要?我问,因为我在构造函数中编写了一些非易失性变量初始化的代码,稍后某些Timer线程使用这些变量,我不确定它是否完全正确.
Java中的相同代码怎么样?
谢谢,米哈尔
是否有类似于SabreDAV的CardDAV/CalDAV服务器框架可用于.NET?
我有一个用C#编写的WCF REST服务,我想知道使用CalDAV和CardDAV协议公开我的日历和联系人数据有多难.
到目前为止,我只找到了SabreDAV.它看起来很棒,但它是一个PHP框架,所以我必须维护一个全新的代码库.
是不是有.Net的SabreDAV替代品?
谢谢,米哈尔
我们发布了一个有严重错误的应用程序更新 - 当用户尝试登录时,它基本上崩溃了.我们在2-3小时后将应用从销售中删除,并在3天后发布了热修复更新.用户被Apple通知了新版本,但是当他们更新应用程序时,其中一些仍然有旧版的错误版本.再次卸载和安装应用程序没有帮助.它只发生在一些用户身上.
该修复程序是一个小更新 - 我们没有更改目标iOS版本.
我在互联网上读到,可能需要24小时才能将更新传播到所有服务器,但几天后用户仍在接收旧应用程序.
你们有没有遇到与Apple App Store类似的问题?我们能做些什么吗?我们计划发布一个重大更新,我们希望确保当用户收到有关更新的通知时,他们将获得它而不是旧版本.