&有&&.|有||.为什么不^有^^?
我知道它不会短路,但会有不同的语义.在C中,true实际上是任何非零值.按位XOR并不总是与逻辑XOR相同:
int a=strcmp(str1,str2);// evaluates to 1, which is "true"
int b=strcmp(str1,str3);// evaluates to 2, which is also "true"
int c=a ^^ b; // this would be false, since true ^ true = false
int d=a ^ b; //oops, this is true again, it is 3 (^ is bitwise)
Run Code Online (Sandbox Code Playgroud)
因为你不能总是依赖于一个真正的价值是1或-1,就不是一个^^运营商有很大的帮助?我经常要做这样的奇怪事情:
if(!!a ^ !!b) // looks strange
Run Code Online (Sandbox Code Playgroud) 假设我有一个列表,其中没有添加或删除新节点.但是,节点可能会被混乱.
保存迭代器,指向列表中的节点并在以后任意时间访问它是否安全?
编辑(后续问题):list :: splice()的文档说它从参数列表中删除了元素.这是否意味着如果我使用与函数的参数相同的列表调用splice,现有的迭代器将被无效?
我需要通过Web将大量数据(~100mb)从sql表导出到用户.这样做的最佳解决方案是什么?一种想法是将数据导出到数据库服务器上的文件夹,压缩它(通过某种方式),然后为用户提供下载链接.这样做的任何其他方法?另外,我们可以从sql server中压缩数据吗?
欢迎任何方法.
是否可以从客户端将委托传递给WCF远程对象并让远程对象执行委托?
我猜不会因为delgate是客户端进程的函数指针.
我的目标是建立一个接口结构,我可以"订阅"从客户端到接口的事件.我会从客户端传递delgate到接口,我希望接口能够执行该事件.
我们的想法是能够将接口加载到程序集或远程加载,并使代码工作相同.
如果我无法传递委托,我该如何实现事件结构?
我正在做的一个项目已经完成,所以我已经被我的雇主转移到了一些新的任务上.以前的工作非常敏捷,团队小,程序进展等.
无论如何,我正在进行的新项目 - 我发现自己对如何处理管理感到困惑.他们对面向对象的编程,当前技术或方法没有真正的理解.他们似乎害怕改变,最近我们搬到了最新的JRE
我们做了这些代码审查,我不得不听"灰胡子",说它在ADA中有多好,或者他们过去常常用C做什么.但是当他们尝试编写审查时 - 他们甚至缺乏最基本的理解OOP设计和开发 他们更关注代码的风格; 间距; 方法名称; 等等
其中一位高级人员说我们应该编写自己的记录器而不是使用log4j,因为在很久以前的学术PDF中对log4j进行了一次负面评论.
我该如何处理?我怎么能向他们解释他们的设计是错误的,或者他们真的落后于时代,而不是作为一个混蛋.我在这个组织工作了大约一年 - 所以我不知道我会有多少信誉.
我有一个网站,吐出第三方网站的链接.现在这些第三方希望我的网站跟踪他们的点击次数.如何在不破坏普通链接的SEO友好性质的情况下这样做?
目前,广告链接只是一个锚点:
<a href="http://adsiteA.com">Come Visit Site A!</a>
Run Code Online (Sandbox Code Playgroud)
我可以轻松地将链接更改为以下内容:
http://mysite.com/clicktracker.aspx?redirect=adsiteA.com
Run Code Online (Sandbox Code Playgroud)
但是,这不会扼杀链接到他们网站的任何搜索引擎的好处吗?如果没有,我会很乐意这样做......我的其他选择是什么?一个onmousedown脚本劫持点击并进行回发然后重定向?
Visual Studio是x86直到2010年版本至少 更新:这仍然是VS2010中的一个问题,没有原生的64位Cassini支持.我的问题是,任何人都可以想到一种方式或知道一个独立的ASP.NET调试服务器,它是2008年或2010年的x64吗?
背景:我们的ASP.NET应用程序作为数据库运行Oracle.由于我们以后会在64位服务器上出现内存问题,因此我们需要使用Oracle的64位驱动程序(Instant Client).
建立:
在IIS中,应用程序池以64位运行,按预期使用Oracle驱动程序,但是由于WebDev.WebServer.exe是32位,因此您将获得BadImageFormatException,因为它试图以32位加载64位驱动程序DLL环境.我们所有的开发人员都希望能够通过Visual Studio 2008使用快速调试服务器,但由于它以32位运行,我们无法做到.我们遇到的一些问题是在应用程序启动期间,因此虽然我们附加到IIS进程有时不足以跟踪问题.
有没有替代方案或解决方法?我们希望尽可能地匹配我们的Dev/Val/Prod层,因此在x64中运行的所有内容都是理想的.
自这个问题首次发布以来,这个问题发生了很多变化,首先VS2010现在已经出现了,它仍然存在相同的问题,但是我所参与的项目没有.我们经历了2次更改来解决这个问题,所以我会发布这些内容,希望它可以拯救别人的悲痛:
第一个解决方案是以32位加载Oracle x86,在64位模式下加载x64,我们通过web.config在64位下运行时替换程序集引用来完成此操作,如下所示:
<configuration>
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" processorArchitecture="amd64" />
<bindingRedirect oldVersion="2.0.0.0-10.9.9.9" newVersion="2.102.3.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这里的关键是processorArchitecture="amd64",这意味着只有在64位下运行时才会发生替换.
请注意,这些版本现在可能已经过时了(如果你正在阅读这篇关于Oracle的内容),这还有一段时间了.除了配置,我们还将32位和64位版本加载Oracle.DataAccess 到GAC中.32位版本适用10.xxx于Oracle 10g,64位版本2.1xxx,因此只需使用<assemblyBinding>作品交换绑定.
第二个更长期的解决方案是完全离开Oracle客户端,我们现在使用dotConnect for Oracle作为我们的Linq-to-SQL提供程序,并且因为它是使用直接TCP连接的完全托管代码,所以我们没有更多/ 64位特定代码在应用程序中,更容易维护.
我希望无论谁发现这一点,也会发现后续行动也很有用.如果您对我最终使用的任何一种解决方案有疑问,请发表评论,我会尝试更详细地解释.
这是一个非常通用的"最佳实践"问题,但这是一个例子.
假设我有一个电影编目应用程序.我想让我的用户有机会为他们的概要/评级信息指定IMDb或Metacritic.
我这样做:
if (preferredSupplier == "imdb"){
getIMDbRating(movieName);
}else{
getMetacriticRating(movieName);
}
Run Code Online (Sandbox Code Playgroud)
或这个:
getRating(movieName, preferredSupplier);
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二个,但这意味着函数必须遵循非常不同的逻辑,具体取决于第二个参数的值(例如,Metacritic可能需要屏幕抓取,其中IMDb可能有一个很好的API).
或者我应该结合它们?在getRating()中充当包装函数,并根据第二个参数的值调用getIMDbRating()或getMetacriticRating().
我想在Oracle 10g中创建一个可延迟的唯一功能索引.
我知道如何创建一个独特的功能索引:
create unique index LIST_ITEM_ENTRY_NO_UNIQ
on LIST_ITEM (case status when 'cancel' then null else LIST_KEY end,
case status when 'cancel' then null else ENTRY_NO end);
Run Code Online (Sandbox Code Playgroud)
我知道如何创建一个可延迟的唯一索引:
alter table LIST_ITEM add constraint LIST_ITEM_ENTRY_NO_UNIQ
unique (LIST_KEY,ENTRY_NO) deferrable initially deferred;
Run Code Online (Sandbox Code Playgroud)
知道这两件事,我试过这个:
alter table LIST_ITEM add constraint LIST_ITEM_ENTRY_NO_UNIQ
unique (case STATUS when 'cancel' then null else LIST_KEY end,
case STATUS when 'cancel' then null else ENTRY_NO end)
deferrable initially deferred;
Run Code Online (Sandbox Code Playgroud)
但是我收到"ORA-00904:无效标识符"错误.要么我的语法错误,要么Oracle不支持可延迟的功能索引?有人可以给我一个解决方案或一个明确的答案吗?
我仍在学习C#3.0的一些功能,并想知道以下内容是否可以简化为lambda表达式.
var SomeObject = Combo.EditValue;
var ObjectProperty = SomeObject.Property;
Run Code Online (Sandbox Code Playgroud)
要从一行中的combo.editvalue获取ObjectProperty?
另外,如果您能为我提供Lambda表达式的任何好的参考,我们将不胜感激.
编辑:好的,发布的答案很棒,看起来该示例不需要Lambda来满足解决方案.我会看一下参考链接...非常感谢那些贡献的人.