考虑一下Map[String, Any]:
val m1 = Map(("k1" -> "v1"), ("k2" -> 10))
Run Code Online (Sandbox Code Playgroud)
现在让我们写一个for:
scala> for ((a, b) <- m1) println(a + b)
k1v1
k210
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
现在让我们指定第二个成员的类型:
scala> for ((a, b: String) <- m1) println(a + b)
k1v1
scala> for ((a, b: Integer) <- m1) println(a + b)
k210
Run Code Online (Sandbox Code Playgroud)
在这里,当我指定一个类型时,会发生过滤,这很好.
现在说我想使用数组[Any]代替:
val l1 = Array("a", 2)
Run Code Online (Sandbox Code Playgroud)
事情破裂了:
scala> for (v: String <- l1) println(v)
<console>:7: error: type mismatch;
found : (String) => Unit
required: (Any) => ?
Run Code Online (Sandbox Code Playgroud)
我的双重问题是: …
所以我遇到了一个问题:try:except:机制似乎在python中没有正常工作.
这是我的两个文件的内容.
import pytest2
class MyError( Exception ):
def __init__( self, value ):
self.value = value
def __str__( self ):
return repr( self.value )
def func1():
raise MyError( 'This is an error' )
def func3():
pytest2.func2()
if __name__ == '__main__':
try:
func3()
except MyError, e:
print 'I should catch here.'
except:
print 'Why caught here?'
Run Code Online (Sandbox Code Playgroud)
from pytest1 import func1
def func2():
func1()
Run Code Online (Sandbox Code Playgroud)
执行第一个文件会产生以下输出:
$ python pytest1.py
Why caught here?
Run Code Online (Sandbox Code Playgroud)
基本上,例外没有被抓住.如果我打印出异常类型,它将打印<pytest1.MyError>而不是仅打印<MyError>.我想这是一些奇怪的周期性参考事物,但它似乎仍然应该工作.
我在64位操作系统上安装了Visual Studio 2010,以及包含多个项目的大型解决方案.主要是ASP.NET MVC 3项目.
我正在尝试启用"编辑并继续",但我没有运气.我已按照此处列出的所有步骤操作:
http://hobby.keluargareski.net/2010/05/17/how-to-enable-edit-and-continue-in-visual-studio/
并在我的所有项目中都有针对性的x86.我收到一个对话框,说明:
"如果尚未加载程序集,则不允许更改"
有没有人在类似的设置上取得任何成功?这甚至可能吗?
我正在构建一个具有用户群的应用程序,而我正在确保登录安全.我是编程(和PHP)的新手,但到目前为止我的努力已经指向使用Crypt()和Blowfish哈希盐.
在我走得更远之前,让我指出我此时对phpass不感兴趣.
在crypt()文档中,用户最近发布了以下内容:
<?php
$salt = substr(str_replace('+', '.', base64_encode(pack('N4', mt_rand(), mt_rand(), mt_rand(), mt_rand()))), 0, 22);
?>
Run Code Online (Sandbox Code Playgroud)
它适用于mt_getrandmax()== 2147483647的系统.
创建的salt长度为128位,填充为132位,然后以22 base64字符表示.(CRYPT_BLOWFISH只使用128位的盐,即使22个base64字符有132位.如果检查CRYPT_BLOWFISH输入和输出,你可以看到它忽略输入的最后四位,并在输出时将它们设置为零.)
注意,mt_rand()返回的四个32位双字的高位总是为零(因为mt_getrandmax == 2 ^ 31),所以128位中只有124位是伪随机的.我发现我的申请可以接受.
我测试了我的服务器,确实mt_getrandmax()返回2147483647.我尝试了解文档以了解上面的代码到底是做什么的 - pack()代码N4是针对32位字符串(大端字节顺序??)重复4次...我假设是为什么有4个mt_rand()论点.
我不明白的是为什么他替换+用.和22个的base64字符的目的(不,我完全理解什么是BASE64.)
建议我研究openssl_random_pseudo_bytes()我的随机盐生成,因为我之前看到的方法仅限于自己1234567890abcdefghijklmnopqrstuvwxyz.
据说5.3.4之前有一个错误导致openssl_random_pseudo_bytes()运行缓慢,偶尔导致超时错误.我不确定我是否应该尝试使用openssl_random_pseudo_bytes()和Crypt()类似上述方法使用mt_rand()和pack().
我试图更多地了解所有这些元素是如何工作的,以及它们在概念上做了什么 - 而不是仅仅使用一个而不理解它来实现我的目标; 我正在努力学习:P
有人可以帮助我理解这里工作的不同元素,或者至少将我引导到一个知识库,在那里我可以阅读它吗?我认为最常见的组件是理解不同的格式/术语(base64,ascii,hexdec,bit,byte等),但最后,如何实现与我的密码一起使用的相当安全的盐.
我想在我的Android应用程序中使用本机代码中的cURL库(使用NDK r5b,最新版本).在线研究之后,似乎在android中使用cURL的唯一方法是用curl构建整个android源码树,不知何故,这会为cURL生成必要的配置文件,以便在Android上运行.我没有任何从头开始构建android源代码的经验,并且想知道是否有一种方法可以在Android中使用cURL库而无需从源代码重建android.理想情况下,能够将cURL用作静态或共享库将是完美的.我试着按照这里提到的步骤......
http://curl.haxx.se/mail/lib-2009-12/0071.html
但最终得到文件curlrules.h中的错误 CURL_SIZEOF_LONG definition is missing!
我假设这些错误是由于没有我提到的配置文件,但上面链接中的步骤没有提到任何和报告的成功.有任何想法吗?
我已经制作了一个相当简单的C程序来计算Fibonacci序列的术语,我正在Ubuntu上运行.我做了一些相当笨拙的数据结构,因此它可以做很大的整数,但程序的细节并不是非常重要 - 重要的是程序可能需要很长时间来执行计算.
出于好奇,我决定让程序开始计算,然后允许用户输入一个字符来查看计算的距离.因此,在这种情况下,如果程序正在计算Fibonacci序列的第n个项并且尚未完成,则输入数字"1"将使程序输出它当前正在计算的项k.我尝试使用以下方法来做到这一点.
该程序使用scanf获得一个长整数,表示需要计算的序列的项.然后程序创建一个线程,其中包含我编写的例程,用于计算和打印第n个Fibonacci项,一旦完成,就会退出.之后,程序创建一个整数变量,用于存储输入并将其初始化为一些非零值.然后它继续进入while循环,只要该int非零,并且在循环的每次迭代中它执行scanf("%d",&i).然后它将该值与1进行比较,如果它为1,那么它将打印我设置的计数器的值以跟踪斐波纳契计算的进度.
无论如何,尽管我对线程之类的东西非常深入,但上述所有工作都非常顺利.但是,我遇到的问题是,当我必须计算序列的第一百万个项时,程序需要几分钟才能完成,而在后台运行它会很不错.但是,如果我使用ctrl + z将进程置于后台然后键入bg,则进程启动但会立即再次停止.我猜这是因为它不断要求用户输入,因此它会停止,直到它获得输入.
任何关于如何规避上述问题的建议将不胜感激.我并不特别担心这个特定问题(Fibonacci数的计算),因为这只是我选择用于计算的一个相当随机的问题.我对创建用户向程序输入命令的基本方法的一般问题更感兴趣,然后程序在单独的线程中执行,但仍然允许用户在必要时在后台运行程序.
为这个相当冗长的问题道歉,并提前感谢任何帮助!
菲尔
编辑:根据要求,我在这里添加了(一个非常简化的版本)代码.基本思路是一样的:程序在新线程中启动一个冗长的计算,然后使用scanf循环输入.输入0退出程序,输入1显示一个指示计算进度的计数器.我希望能够在后台运行该程序,但由于它不断要求输入,它会立即停止该过程.忽略计数器上的算术溢出; 我的实际程序有数据结构来处理这种东西,但我尽可能地简化我的代码以便于阅读.
//Simple program to test threading and input.
#include <stdio.h>
#include <pthread.h>
#define NUM_THREADS 2
void *stuff();
int counter; //keeps track of the progress of the computation
int main(){
counter=1;
pthread_t threads[NUM_THREADS];
pthread_create(&threads[0], NULL, stuff, NULL);
//loop while the input is non-zero so that the program can
//accept commands
int input=10;
while(input){
input=10;
printf("Enter 0 to exit or 1 to display progress: ");
scanf("%d", &input);
if(input==1){
printf("Currently iterating …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在隐藏控制台的情况下运行C#控制台应用程序.
通过类库如何在后台运行控制台应用程序来执行任务,然后告诉我的方法完成处理?
我有一些我想在.bashrc中执行的东西,我宁愿存在于系统上的另一个文件中.如何将此文件包含在.bashrc中?
我正在寻找一种使用PHP从服务器删除文件的方法.基本上我以这种方式在页面上列出了我的文件:
<ul>
<li><a href="delete_file.php?file=uploads/file_01.jpg">Delete File 01</a></li>
<li><a href="delete_file.php?file=uploads/file_02.jpg">Delete File 02</a></li>
<li><a href="delete_file.php?file=uploads/file_03.jpg">Delete File 03</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何让我的delete_file.php文件工作.我认为它需要是这样的:
<?php
$path="uploads/file_01.jpg";
if(unlink($path)) echo "File Deleted";
?>
Run Code Online (Sandbox Code Playgroud)
...但我不知道如何让$ path更改为我点击删除的文件.
我正在进行一项自动化作业的查询.它需要查找最后一天晚上8点到晚上8点之间的所有交易.我在考虑做这样的事情
DECLARE @start_date DATETIME
DECLARE @end_date DATETIME
SET @start_date = DATEADD(DAY, -2, GETDATE())
SET @end_date = DATEADD(DAY, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)
对于自动查询,这很适合计算日期部分.但变量的TIME部分是查询执行的当前时间.是否有一种快速简单的方法可以将两个变量的时间部分硬编码为晚上8点?
php ×2
algorithm ×1
android ×1
android-ndk ×1
background ×1
bash ×1
c ×1
c# ×1
class ×1
command-line ×1
console ×1
curl ×1
datetime ×1
delete-file ×1
exception ×1
file ×1
input ×1
libcurl ×1
linux ×1
pthreads ×1
python ×1
random ×1
salt ×1
scala ×1
shell ×1
sql ×1
sql-server ×1
t-sql ×1
ubuntu ×1