我想有一个直接的C#函数来获得最近点(从点P)到线段AB.抽象函数可能如下所示.我搜索了SO,但没有找到可用的(由我)解决方案.
public Point getClosestPointFromLine(Point A, Point B, Point P);
Run Code Online (Sandbox Code Playgroud) 示例输出
1. test,test,test,test,test,
2. test,test,test,,
3. test,test,,,
4. test,,,,,
Run Code Online (Sandbox Code Playgroud)
我试过根据我之前的问题使用implode,但它只修剪了最后一个逗号.
如何删除任何最后一个逗号?
我试图制作一个Android应用程序,每当用户连接到一个wifi时,应用程序发送一个http请求到我的服务器,稍后通过使用推送通知服务器发送一些消息给用户.但在这里我有一个问题:如何使这个应用程序在后台运行,它也理解手机是否连接到wifi,意味着即使applcation关闭,它仍然知道,每当手机连接到wifi,它发送http请求.谢谢
在我们的库存数据库(SQL Server 2008标准版)中,我们有一个表(称为库存结果),它按库存期存储每个库存项目的结果,如下所示:
<< StockResults >>
PK StockPeriodID int
PK StockItemID int
OStockCost money
OStockQty real
DeliveriesQty real
CreditsQty real
TransfersInQty real
TransfersOutQty real
CStockQty real
OStockAmt money
DeliveriesAmt money
CreditsAmt money
TransfersInAmt money
TransfersOutAmt money
CStockAmt money
... except that it has about 40 columns
Run Code Online (Sandbox Code Playgroud)
我们正在考虑规范化该表,以便我们有一个用于字段的表和另一个用于数据的表.像这样:
create table StockResults_Fields
(FieldID int, FieldName varchar(20), FieldDataType varchar(10))
create table StockResults_Values
(StockPeriodID int, StockItemID int, FieldID int, FieldName varchar(20), FieldDataType varchar(10))
Run Code Online (Sandbox Code Playgroud)
我们考虑这样做的原因是为了提高表的性能并防止死锁(我们目前正在获得).关于规范化以减少死锁的建议来自本文:减少SQL Server死锁.
我担心的是结果表(已经很大)会变得更大.并且大多数报告在与当前结构类似的结构中显示数据 …
我知道EventInfo.AddEventHandler(...)可以用来将处理程序附加到事件的方法.但是,如果我甚至无法定义事件处理程序的正确签名,应该怎么做,因为我甚至没有引用处理程序所期望的事件args?
我将用正确的代码解释问题.
//当我在我的解决方案中提供所有可用的场景时,Zero Reflection Scenario.
internal class SendCommentsManager
{
public void Customize(IRFQWindowManager rfqWindowManager)
{
rfqWindowManager.SendComment += HandleRfqSendComment;
}
private void HandleRfqSendComment(object sender, SendCommentEventArgs args)
{
args.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望通过使用反射来实现相同的目标.我已经能够找出大部分内容,但是当我将一个委托附加到事件(使用AddEventHandler)时,它会抛出"Error binding to target method."异常.
我理解这个异常背后的原因,将一个错误的委托附加到一个事件.但必须有一些方法来实现这一目标.
internal class SendCommentsManagerUsingReflection
{
public void Customize(IRFQWindowManager rfqWindowManager)
{
EventInfo eventInfo = rfqWindowManager.GetType().GetEvent("SendComment");
eventInfo.AddEventHandler(rfqWindowManager,
Delegate.CreateDelegate(eventInfo.EventHandlerType, this, "HandleRfqSendComment"));
//<<<<<<<<<<ABOVE LINE IS WHERE I AM GOING WRONG>>>>>>>>>>>>>>
}
private void HandleRfqSendComment(object sender, object args)
{
Type sendCommentArgsType = args.GetType();
PropertyInfo …Run Code Online (Sandbox Code Playgroud) 我有两个表players和scores.
我想生成一个类似于下面的报告:
player first score points
foo 2010-05-20 19
bar 2010-04-15 29
baz 2010-02-04 13
Run Code Online (Sandbox Code Playgroud)
现在,我的查询看起来像这样:
select p.name player,
min(s.date) first_score,
s.points points
from players p
join scores s on s.player_id = p.id
group by p.name, s.points
Run Code Online (Sandbox Code Playgroud)
我需要s.points与min(s.date)返回的行相关联的那个.这个查询会发生这种情况吗?也就是说,我怎么能确定我正在s.points为连接的行获得正确的值?
旁注:我认为这与MySQL缺乏密集排名有某种关系.这里最好的解决方法是什么?
在设计派生类时,如果不需要更改方法,那么在ctorvs中覆盖OnEventName()方法并添加一些行为(以及调用基本方法)的基类事件中添加处理程序是否有优势?基本方法并不关心事情发生的顺序,但只想要一个具有一点额外行为的可重用组件?
public abstract class BaseClass
{
public event EventHandler SomeEvent;
protected void OnSomeEvent(object sender, EventArgs e)
{
// do some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
public class DerivedA
{
protected override void OnSomeEvent(object sender, EventArgs e)
{
// do some other stuff
base.OnSomeEvent(sender, e);
}
}
Run Code Online (Sandbox Code Playgroud)
public class DerivedB
{
public DerivedB()
{
SomeEvent += (o,e) => { // do some other stuff };
}
}
Run Code Online (Sandbox Code Playgroud) 假设我有几个POJO都扩展了一个常见的超类型,BaseObject.
我有一个GenericDao声明为public interface GenericDao<T>.
对于每个特定于类型的DAO,我有一个扩展泛型类型的接口,并将其限制为具体类型(public interface UserDao extends GenericDao<User>),然后是特定于类型的DAO的实现.
在尝试使用大量GenericDao实现的类中,我有一个看起来像的方法
public <T extends BaseObject> long create(T object) {
return getDao(object.getClass()).save(object);
}
Run Code Online (Sandbox Code Playgroud)
如果我实现getDao()它的参数是一个Class对象,例如
private <T extends BaseObject> GenericDao<T> getDao(Class<T> clazz) { ... }
Run Code Online (Sandbox Code Playgroud)
然后调用getDao(object.getClass()的create()方法无法编译-编译器似乎解释的返回类型getDao()为
GenericDao<? extends BaseContractObject>
Run Code Online (Sandbox Code Playgroud)
而不是认识到这getDao(Class<T>)将使我返回GenericDao相同的类型T.
有人可以解释为什么会这样吗?据我所知,相同类型绑定或通配符的重复出现不一定是指同一类型; 然而,似乎编译器应该从签名中识别出getDao(Class<T>)传入的T应该与返回的T相同(但显然它不能识别这个,为什么我无法理解的部分).
如果我改为定义getDao签名
private <T extends BaseContractObject> GenericDao<T> getDao(T obj) { …Run Code Online (Sandbox Code Playgroud) 有谁知道如何获取字符串的枚举值?
例:
private static void PullReviews(string action, HttpContext context)
{
switch (action)
{
case ProductReviewType.Good.ToString():
PullGoodReviews(context);
break;
case ProductReviewType.Bad.ToString():
PullBadReviews(context);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
当试图使用ToString(); 编译器抱怨因为case语句期望一个常量.我也知道ToString()是用intellisense中的一行打出来的
我想使用命名参数将词法文件句柄传递给子例程,但以下内容不能编译:
#!/usr/bin/perl -w
use strict;
my $log_fh;
my $logname = "my.log";
sub primitive {
my ($fh, $m) = @_;
print $fh $m;
}
sub sophisticated {
my ($args) = @_;
print $args->{m};
print $args->{fh} $args->{m} ;
}
open $log_fh, ">", $logname;
print $log_fh "Today I learned ...\n";
primitive($log_fh,"... the old way works ...\n");
sophisticated({
fh=>$log_fh,
m=>"... and the new way requires an intervention by SO.",
});
close $log_fh;
Run Code Online (Sandbox Code Playgroud)
投诉是:
Scalar found where operator expected at ./lexical.file.handle.pl line 15, near
} …Run Code Online (Sandbox Code Playgroud) c# ×4
events ×2
.net ×1
android ×1
background ×1
delegates ×1
dense-rank ×1
generics ×1
geometry ×1
inheritance ×1
java ×1
join ×1
math ×1
mysql ×1
perl ×1
php ×1
ranking ×1
reflection ×1
subroutine ×1
trim ×1
type-bounds ×1