我从事过Java和新的.Net技术
是否可以在C#中声明一个接受变量输入参数的函数
是否有类似于以下Java语法的C#语法?
void f1(String... a)
Run Code Online (Sandbox Code Playgroud) 大家都知道.Net框架中的String对象直接存储在堆内存中
我只是想了解.Net框架中是否有任何保留内存用于字符串.在java中,有一个名为SCMP(字符串常量内存池)的字符串保留内存,其中字符串初始化和垃圾收集就像堆内存中的其他对象一样.
我正在使用下面的正则表达式来验证电子邮件地址。
/^\w+([\.-]?\w+)*@\w+([\.-]?w+)*(\.\w{2,3})+$/
Run Code Online (Sandbox Code Playgroud)
JavaScript代码:
var email = 'myname@company.com';
var pattern = /^\w+([\.-]?\w+)*@\w+([\.-]?w+)*(\.\w{2,3})+$/;
if(pattern.test(email)){
return true;
}
Run Code Online (Sandbox Code Playgroud)
当我提供以下无效电子邮件时,正则表达式会很快进行评估:
aseflj#$kajsdfklasjdfklasjdfklasdfjklasdjfaklsdfjaklsdjfaklsfaksdjfkasdasdklfjaskldfjjdkfaklsdfjlak@company.com
Run Code Online (Sandbox Code Playgroud)
(我#$在名称中间添加了)
但是,当我尝试评估此电子邮件时,它花费了太多时间,并且浏览器挂起。
asefljkajsdfklasjdfklasjdfklasdfjklasdjfaklsdfjaklsdjfaklsfaksdjfkasdasdklfjaskldfjjdkfaklsdfjlak@company.com1
Run Code Online (Sandbox Code Playgroud)
(我最后补充com1)
我确定正则表达式是正确的,但不确定为什么要花这么多时间来评估第二个示例。如果我提供较短的电子邮件,它将很快得到评估。请参阅以下示例
dfjjdkfaklsdfjlak@company.com1
Run Code Online (Sandbox Code Playgroud)
请帮助我解决性能问题
我有以下代码
class Multi extends Thread{
public void run(){
for(int i=1;i<=3;i++){
System.out.println(i + ": "+Thread.currentThread().getName());
}
}
public static void main(String args[]){
Multi t1=new Multi();
t1.setName("First Thread");
Multi t2=new Multi();
t2.setName("Second Thread");
Multi t3=new Multi();
t3.setName("Third Thread");
t1.start();
t2.start();
try{
t1.join();
t2.join();
}catch(Exception e){System.out.println(e);}
t3.start();
}
}
Run Code Online (Sandbox Code Playgroud)
**
每次运行时输出都会有所不同:
1st time Output
1: Second Thread
2: Second Thread
3: Second Thread
1: First Thread
2: First Thread
3: First Thread
1: Third Thread
2: Third Thread
3: Third Thread
=============================================
2nd …Run Code Online (Sandbox Code Playgroud)