我正在开发一个新网站,我必须为我们的用户发送私信.我已经在其他项目上做过这个,但那里的设计似乎不对(例如,我不能让两个人参与一个消息).那么"正确"的方法是什么呢?我想为我的用户提供与Facebook相同的功能(同样,我已经完成了这个但感觉很脏:))因此系统应该在对话和类似线程的消息中支持2个或更多用户.
我在想,一个解决方案就是有两个这样的表:
pm_messages:id | pm_messages_id | user_id | 标题| 内容| 约会时间
pm_recipients:id | pm_messages_id | user_id | has_seen | 删除
我会将实际内容存储在"pm_messages"表中,然后将收件人(包括原始发件人)存储在"pm_recipients"表中.
这是正确的方向还是我完全没有这个?让我困扰的是,在所有收件人删除了导致某些尴尬的删除逻辑的邮件之前,邮件才真正被删除.
以下查询之间有什么区别:
SELECT * FROM employee WHERE NOT(start_date > '01-JAN-1970');
Run Code Online (Sandbox Code Playgroud)
而这个查询:
SELECT * FROM employee WHERE start_date < '01-JAN-1970';
Run Code Online (Sandbox Code Playgroud)
有什么区别,如果有的话,如何NOT(x > y)
使用不同(x < y)
.谁能提供一个例子?
谢谢.
无法确定条件表达式的类型,因为'lambda expression'和'lambda expression'之间没有隐式转换
说什么?有人可以向我解释这个编译错误吗?这是产生它的代码:
protected override Func<System.IO.Stream> GetStream()
{
return someBool
? () => EmbeddedResourceExtractor.GetFile("SomeFile1.ext")
: () => EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}
Run Code Online (Sandbox Code Playgroud)
这不是:
protected override Func<System.IO.Stream> GetStream()
{
return () => EmbeddedResourceExtractor.GetFile("SomeFile1.ext");
}
Run Code Online (Sandbox Code Playgroud)
这两个都没有:
protected override Func<System.IO.Stream> GetStream()
{
if(someBool)
return () => EmbeddedResourceExtractor.GetFile("SomeFile1.ext");
return () => EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}
Run Code Online (Sandbox Code Playgroud) 我最近使用了Java Web Start应用程序.我使用我正在查看的页面中的嵌入式jnlp链接从我的Web浏览器启动它.该应用程序已下载,启动并正常工作.它可以访问我的本地文件系统,并在重新启动它之间记住我的偏好.
我想知道的是,为什么Java Web Start应用程序不是Web上复杂应用程序的更流行的交付格式?为什么开发人员经常花费大量时间和精力在html/javascript中复制桌面功能,而使用Java和Java Web Start可以更轻松地提供桌面应用程序的强大功能?
我知道在某些企业环境中,例如银行业,它们是向客户提供复杂交易应用程序的相对流行的方式,但为什么它们不能在整个网络上普及?
(为了便于讨论,让我们假设一个世界:下载源是"可信的"和应用程序是"签名"(即没有安全问题),下载速度快(加载时间快)开发人员知道Java(数量上他们知道html/js/php)).
我正在尝试从变量中实例化一个类,并编写了一些测试代码.但是,不幸的是,它无法正常工作.这是代码:
Object co1 = new CommandDownloadHttp();
Class cc1 = Class.forName("CommandDownloadHttp");
Object co = cc1.newInstance();
Run Code Online (Sandbox Code Playgroud)
不幸的是,在第二线它崩溃了java.lang.ClassNotFoundException
.
你能告诉我我做错了什么吗?
我正在寻找使用lamba表达式来允许事件以强类型方式连接,但是在中间有一个监听器,例如给定以下类
class Producer
{
public event EventHandler MyEvent;
}
class Consumer
{
public void MyHandler(object sender, EventArgs e) { /* ... */ }
}
class Listener
{
public static void WireUp<TProducer, TConsumer>(
Expression<Action<TProducer, TConsumer>> expr) { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)
事件将被连线为:
Listener.WireUp<Producer, Consumer>((p, c) => p.MyEvent += c.MyHandler);
Run Code Online (Sandbox Code Playgroud)
但是这会给编译器错误:
CS0832:表达式树可能不包含赋值运算符
现在起初这似乎是合理的,特别是在阅读了关于为什么表达式树不能包含赋值的解释之后.但是,尽管有C#语法,但+=
它不是赋值,它是对Producer::add_MyEvent
方法的调用,正如我们可以从CIL中看到的那样,如果我们只是正常连接事件:
L_0001: newobj instance void LambdaEvents.Producer::.ctor()
L_0007: newobj instance void LambdaEvents.Consumer::.ctor()
L_000f: ldftn instance void LambdaEvents.Consumer::MyHandler(object, class [mscorlib]System.EventArgs)
L_0015: newobj instance void [mscorlib]System.EventHandler::.ctor(object, …
Run Code Online (Sandbox Code Playgroud) 更新 - 请阅读以下原始问题的更多详细信息
我有一个带有各种url的select表单元素,我想在选择时在新窗口中打开 - 要做到这一点,我在元素的onchange事件中有以下代码:
window.open(this.options[this.selectedIndex].value,'_blank');
Run Code Online (Sandbox Code Playgroud)
这很好用.但是我也想在更改这个选择元素值时提交表单 - 我尝试了各种各样的东西,但我似乎无法让它工作.
我有jquery,所以如果通过它更容易实现那么那很好.
更新 - 我刚刚意识到上面还有另一个问题,因为有些url实际上用于生成和输出pdf,而这些不起作用 - 它们打开然后立即关闭(至少在IE7中).
更新07/05/09 - 我现在已经开启了这个问题的赏金,因为我真的需要提出一个有效的解决方案.我最初通过显示链接而不是表单选择元素来解决问题,但这不再可行.
我需要上述原因的原因是我有大量可能需要查看/打印的文件,太多而无法合理地显示为链接列表.我需要提交表单来记录查看/打印特定文件的事实,然后在表单上显示文件历史记录的日志 - 我很擅长实现这方面的事情,所以不需要那里的帮助,但我认为放置背景会有所帮助.
因此,为了澄清我的要求 - 我需要一个表单选择元素和"查看"按钮,单击它时不仅会在新窗口中启动文件下载(请注意我在这些文件是PDF时遇到的上述问题),还要提交包含select元素的表单.
我有两个SQL查询,第一个是:
select Activity, SUM(Amount) as "Total Amount 2009"
from Activities, Incomes
where Activities.UnitName = ? AND
Incomes.ActivityId = Activities.ActivityID
GROUP BY Activity
ORDER BY Activity;
Run Code Online (Sandbox Code Playgroud)
第二个是:
select Activity, SUM(Amount) as "Total Amount 2008"
from Activities, Incomes2008
where Activities.UnitName = ? AND
Incomes2008.ActivityId = Activities.ActivityID
GROUP BY Activity
ORDER BY Activity;
Run Code Online (Sandbox Code Playgroud)
(不要介意'?',它们代表birt中的参数).我想要实现的目标如下:我想要一个返回与第一个查询相同的SQL查询,但是有一个额外的(第三个)列,看起来与"Total Amount 2008"完全相同(来自第二个查询).
我试图根据表中a
的不同列是否在表的一组结果中更新表中的列b
.目前的变化:
update a
set a.field1 =
case
when exists (
select b.field2
from b
where b.field2 = a.field2
)
then 'FOO'
else 'BAR'
end
Run Code Online (Sandbox Code Playgroud)
没有跑.有关如何为DB2数据库执行此操作的任何想法?
编辑:感谢您的回答,我能做的最好
update a set field1 = 'FOO' where field2 in (select field2 from b);
update a set field1 = 'BAR' where field2 not in (select field2 from b);
Run Code Online (Sandbox Code Playgroud)
但我会保持这个开放,以防有人可以在顶部找到有效的代码版本.
如果我在64位操作系统的64位机器上运行python,我的程序能否访问全部内存?即我可以建立一个包含100亿条目的列表,假设我有足够的RAM吗?如果没有,是否有其他编程语言允许这样做?