问题列表 - 第44508页

除非方法是最终的,否则为什么Scala编译器不会应用尾调用优化?

除非方法是最终的,否则为什么Scala编译器不会应用尾调用优化?

例如,这个:

class C {
    @tailrec def fact(n: Int, result: Int): Int =
        if(n == 0)
            result
        else
            fact(n - 1, n * result)
}
Run Code Online (Sandbox Code Playgroud)

结果是

错误:无法优化@tailrec带注释的方法:它既不是私有的也不是最终的,因此可以被覆盖

如果编译器在这种情况下应用TCO,究竟会出现什么问题呢?

scala tail-recursion tail-call-optimization

45
推荐指数
3
解决办法
4172
查看次数

可点击的图片 - android

如何使图像可点击?我尝试了一些方法,但没有成功.这是我尝试的最后一个代码(可点击但得到错误):

    ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
    btnNew.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {

            // do stuff
          }

        });      
Run Code Online (Sandbox Code Playgroud)

这是xml中的部分:

    <ImageView 
    android:src="@drawable/tbnewbutton" 
    android:text="@string/hello"
    android:layout_width="wrap_content"
    android:layout_alignParentRight="true"
    android:id="@+id/newbutton"
    android:clickable="true"
    android:onClick="clickImage"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" />
Run Code Online (Sandbox Code Playgroud)

运行此代码,然后单击图像我收到此错误:

01-24 19:14:09.534:ERROR/AndroidRuntime(1461):java.lang.IllegalStateException:在活动中找不到方法clickImage(View)

这是解决方案:

XML:

    <ImageButton
    android:src="@drawable/tbnewbutton" 
    android:text="@string/hello"
    android:layout_width="wrap_content"
    android:layout_alignParentRight="true"
    android:id="@+id/newbutton"
    android:clickable="true"
    android:onClick="clickNew"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@null" />
Run Code Online (Sandbox Code Playgroud)

代码 :

    public void clickNew(View v)
{
    Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)

android image click clickable-image

15
推荐指数
1
解决办法
5万
查看次数

iPhone/iOS Facebook SDK - 您可以在应用程序中登录,并保留登录凭据吗?

是否可以使用Facebook iOS SDK在应用程序内进行身份验证(而不是访问Safari),并为下次启动应用程序保留这些身份验证凭据?

当我尝试在模拟器中使用演示应用程序时,它总是去safari进行身份验证,这看起来有点糟糕.然后,当我进行身份验证时...如果我完全杀死该应用程序,它将要求再次进行身份验证(然后告诉我我已经登录)

有没有办法,只为用户提供一个电子邮件字段和密码字段,然后在应用程序中保留该信息?

iphone authentication facebook oauth ios

10
推荐指数
2
解决办法
1万
查看次数

AlertDialog - 当用户点击"确定"时如何运行检查

对于自定义AlertDialog,我可以覆盖肯定按钮以不关闭对话框吗?相反,我想运行一些编辑检查,并在检查失败时保持对话框打开.

protected Dialog onCreateDialog(int id) {
  Dialog alertDialog = null;
  builder = new AlertDialog.Builder(this);
  switch(id) {
    case LOGIN_USERID_BLANK:
      builder.setMessage((String)getString(R.string.username_not_blank));
      builder.setPositiveButton((String)getString(R.string.ok), new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
      // Can I do something here so that the dialog does not close?
}
});
Run Code Online (Sandbox Code Playgroud)

打破;

android android-alertdialog

4
推荐指数
1
解决办法
2358
查看次数

将应用程序作为服务运行的优点

有时我看到一些应用程序允许自己在Windows上作为服务运行,例如Apache HTTP Server 允许这样做.我总是将它作为常规应用程序运行,从未遇到任何问题或限制.

  • 这有什么好处?
  • 是否有任何应用程序在作为服务运行时可以执行或拥有?
  • 当我编写服务与常规应用程序时,作为开发人员,我有什么优势.

windows service

14
推荐指数
2
解决办法
9055
查看次数

iOS自动释放没有池 - 但我正在创建ARP!

所以,我使用[NSThread detachNewThreadSelector]来生成一个新线程,我在控制台中得到"自动释放,没有池到位"错误.我知道如果你没有创建一个自动发布池,就会发生这种情况,但问题是,我正在创建一个.我在同一个应用程序的其他部分使用类似的代码,并没有得到这些错误.

这是相关代码:

- (void) startThread:(NSString*)strURL
{
    // start new thread to load image
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    [NSThread detachNewThreadSelector:@selector(loadImageFromURL:) toTarget:self withObject:strURL];
    [pool release];
}

- (void) loadImageFromURL:(NSString*)strURL
{
    NSNumber* nn = [NSNumber numberWithInt:self.tag];
    NSLog(@"loadURL: Tag number == %i", [nn intValue]);

   // other code here actually does the work
}
Run Code Online (Sandbox Code Playgroud)

现在,loadImageFromURL中有更多代码实际完成了工作(从远程服务器加载图像) - 但是问题在没有代码的情况下显示出来,所以我删除了它(只是因为你不认为我有一个毫无意义的毫无意义的线程!).我只留下了一行代码来演示这个问题 - 它创建了一个自动释放的NSNumber对象.

当此代码运行时,它会向控制台报告:

__NSAutoreleaseNoPool(): Object 0x535c0e0 of class NSCFNumber autoreleased with no pool in place - just leaking

当然,真实代码会创建许多其他AR对象,并且所有这些对象都会被报告.

将不胜感激任何可能有用的提示或指示!

谢谢!

multithreading objective-c nsautoreleasepool ios

3
推荐指数
1
解决办法
2361
查看次数

为什么ConcurrentBag <T>在.Net(4.0)中这么慢?我做错了吗?

在我开始一个项目之前,我编写了一个简单的测试来比较来自(System.Collections.Concurrent)的ConcurrentBag相对于锁定和列表的性能.我非常惊讶ConcurrentBag比使用简单的List锁定慢10倍.据我所知,当读写器是同一个线程时,ConcurrentBag效果最好.但是,我没想到它的性能会比传统的锁更糟糕.

我已经运行了一个测试,其中有两个Parallel for循环写入和读取列表/包.然而,写入本身显示了巨大的差异:

private static void ConcurrentBagTest()
   {
        int collSize = 10000000;
        Stopwatch stopWatch = new Stopwatch();
        ConcurrentBag<int> bag1 = new ConcurrentBag<int>();

        stopWatch.Start();


        Parallel.For(0, collSize, delegate(int i)
        {
            bag1.Add(i);
        });


        stopWatch.Stop();
        Console.WriteLine("Elapsed Time = {0}", 
                          stopWatch.Elapsed.TotalSeconds);
 }
Run Code Online (Sandbox Code Playgroud)

在我的盒子上,这需要3-4秒才能运行,相比之下这段代码的0.5-0.9秒:

       private static void LockCollTest()
       {
        int collSize = 10000000;
        object list1_lock=new object();
        List<int> lst1 = new List<int>(collSize);

        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();


        Parallel.For(0, collSize, delegate(int i)
            {
                lock(list1_lock)
                {
                    lst1.Add(i);
                }
            });

        stopWatch.Stop();
        Console.WriteLine("Elapsed = {0}", 
                          stopWatch.Elapsed.TotalSeconds);
       }
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,进行并发读写并不能帮助并发包测试.我做错了什么还是这个数据结构真的很慢?

[编辑] - …

.net c# concurrency locking concurrent-collections

42
推荐指数
5
解决办法
3万
查看次数

Java - 随机读取行

我正在编写一个Android应用程序,并希望我的程序读取文件的随机行.我该怎么做呢?

java file-io android

8
推荐指数
2
解决办法
1485
查看次数

如何在CakePHP中使用beforeValidate()?

我有一个带有URL字段的表单.该字段的默认值为:http://.但该领域不是必需的.用户可以跳过它并提交表单.它不应该返回错误,因为它不是必需的,因为它们没有输入URL.但是现在它确实如此,因为http://.

我听说我可以使用beforeValidate()检查它是否为http://,然后清除URL字段,允许我跳过错误消息.

但我不知道如何使用beforeValidate().我搜索了谷歌,但我找不到任何有用的例子.我在哪里放置beforeValidate()的代码?这是一个功能吗?如何从那里访问提交的表单数据?

谢谢.

php cakephp cakephp-1.3 cakephp-model

4
推荐指数
1
解决办法
7484
查看次数

在Java中将十六进制字符串转换为ASCII

我希望这不是一个愚蠢的问题,我已经查看了谷歌搜索结果的5个不同页面,但未能找到任何相关内容.

我需要做的是将包含所有十六进制字符的字符串转换为ASCII

String fileName = 

75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000
Run Code Online (Sandbox Code Playgroud)

我看到的每一种方式都让你觉得必须先将它放入数组中.有没有办法循环每一个并转换它们?

java string hex ascii

32
推荐指数
2
解决办法
10万
查看次数