ConcurrentModificationException:当不允许此类修改时,检测到并发修改对象的方法可能抛出此异常.
以上是来自javadoc的ConcurrentModificationException定义.
所以我尝试测试下面的代码:
final List<String> tickets = new ArrayList<String>(100000);
for (int i = 0; i < 100000; i++) {
tickets.add("ticket NO," + i);
}
for (int i = 0; i < 10; i++) {
Thread salethread = new Thread() {
public void run() {
while (tickets.size() > 0) {
tickets.remove(0);
System.out.println(Thread.currentThread().getId()+"Remove 0");
}
}
};
salethread.start();
}
Run Code Online (Sandbox Code Playgroud)
代码很简单.10个线程从arraylist对象中删除元素.确保多个线程访问一个对象.但它运行正常.没有异常被抛出.为什么?
我们可以写下面的代码:
Func<string, string> func = x => x + x;
Run Code Online (Sandbox Code Playgroud)
我们也可以写:
Expression<Func<string, string>> exp = x => x + x;
Run Code Online (Sandbox Code Playgroud)
但是当我写道:
Expression<Func<string, string>> exp = func;
Run Code Online (Sandbox Code Playgroud)
编译器抛出一个错误:
无法将类型'System.Func'隐式转换为'System.Linq.Expressions.Expression>'
所以我改变代码如下:
Expression<Func<string, string>> exp = (Expression<Func<string, string>>)func;
Run Code Online (Sandbox Code Playgroud)
和以前一样的错误.
那么什么是真正的类型x => x + x;,Expression和Delegate/Lambda Expression之间的关系是什么?
我正在阅读"Beginning F#"这本书,有一个简短的示例代码列表,用于演示如下的惰性评估:
lazyValue = lazy ( 2 + 2 )
let actualValue = Lazy.force lazyValue
printfn "%i" actualValue
Run Code Online (Sandbox Code Playgroud)
这似乎很容易,但是对我来说有一个错误,比如功能力没有定义???
我很困惑.从msdn搜索,似乎没有答案.
谁能告诉我发生了什么?
对引用类型调用两次 ObjectIDGenerator 方法,id 值相同。
test a = new test();//reference type
bool isFirstTime;
ObjectIDGenerator IDGenerator = new ObjectIDGenerator();
long theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
Run Code Online (Sandbox Code Playgroud)
输出如下:
1
True
1
False
对象“a”只有一个 ID。
但是当在值类型上调用 ObjectIDGenerator 方法时,事情看起来很奇怪。
int a = 100;//value type
bool isFirstTime;
ObjectIDGenerator IDGenerator = new ObjectIDGenerator();
long theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
Run Code Online (Sandbox Code Playgroud)
输出:
1
真
2
假
这就是为什么?
我想创建一个包含多个帧的 gif 文件。我想使用微软支持的方法——Image.SaveAdd
但是我不知道如何设置EncoderParameters Paramater 来组成一个gif 文件。
我找不到可以参考的文件。那么如何创建一个gif文件Image.SaveAdd
Task.WaitAll方法(Task [],Int32)在过期时不释放该线程.
我正在使用.NET framework 4.0.我发现Task.WaitAll方法在它过期时仍占用线程.
我在下面编写代码来测试它.
static void Main(string[] args)
{
printThreadCount("start");
Task[] tasks = new Task[5];
for (int i = 0; i < 5; i++)//create tasks
{
Task t = new Task(() =>
{
Thread.Sleep(30000);
Console.WriteLine(DateTime.Now.ToString() + "task finish");
}
);
tasks[i] = t;
}
for (int i = 0; i < 5; i++)
{
tasks[i].Start();//start 1 task per second
Thread.Sleep(1000);
printThreadCount("start 1 task per second");
}
printThreadCount("before waitall");
Task.WaitAll(tasks, 10000);
printThreadCount("after waitall 10s");
Thread.Sleep(5000);
printThreadCount("sleep 5s");
Thread.Sleep(5000);
printThreadCount("sleep …Run Code Online (Sandbox Code Playgroud) 如果css如下:
input[type="text"]
{
border: 1px solid green;
}
.text
{
border: 1px solid red ;
}
Run Code Online (Sandbox Code Playgroud)
如果html如下:
<div>
<input type="text" class="text"/>
</div>?
Run Code Online (Sandbox Code Playgroud)
该border-color文本框的是绿色的.似乎"元素"具有更高的优先级.
如何使.class有效?是否必须使用!important?
还有其他选择吗?
我测试了下面的CSS代码:
input[type="text"]
{
border: 1px solid green;
}
input[type="text"] .text
{
border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
HTML代码:
<div>
<input type="text" class="text"/>
</div>
Run Code Online (Sandbox Code Playgroud)
猜猜怎么着?
还是绿的.
删除'input [type ="text"] .text'中的空格,它变为输入[type ="text"].text.没关系.边框颜色为红色.
我尝试从Java插入一个日期时间到sqlite数据库,但事情很奇怪.
当我使用代码Calendar.getInstance().getTime()插入时,表中的值是(例如)1359960520718.当我使用字符串2010-01-01插入表时,值是正常的:2010-01-01.
但是当我使用字符串2010-21-51插入表中时,表中的值是2010-21-51.这是一个无效的日期.它出什么问题了?
我在一个项目中使用Zend Framework 1.12。
太奇怪了。我没有使用模块。只是控制器和动作。
我的控制器文件名为MyCCController.php,“ CC”为大写。
我在该控制器文件中的操作是 MyAAAction,'AA'是大写的。
我尝试了url http://localhost:8003/Mycc/myAA。它显示错误-“找不到页面”。我用谷歌搜索,看到有人说动作名称必须是小写。因此,我将“ MyAAAction”更改为“ myaaAction”。.phtml文件是sitll'views \ scripts \ MyCC \ MyAA.phtml'。它不在乎大写或小写。
然后我访问了url http://localhost:8003/MyCC/myaa,它仍然显示“找不到页面”。
我更改了网址http://localhost:8003/Mycc/myaa,``CC''变成了``cc''。
所以我的问题是,是否有任何文章阐述MVC URL区分大小写的规则?
或者谁可以给我有关控制器,操作,*。phtml文件或其他相关名称的规则。
如果我需要动作名称为camelCase,如何实现呢?
在For迭代中,我将一个Task放入其中.每项任务都有自己的工作.代码如下:
List<Task> lst_tsk = new List<Task>();
List<int> lst_item = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (var item in lst_item)
{
Task tsk = new Task(() =>
{
Console.WriteLine(item);
});
lst_tsk.Add(tsk);
tsk.Start();
}
foreach (var t in lst_tsk)
{
if (t.IsCompleted == false)
t.Wait();
}
Run Code Online (Sandbox Code Playgroud)
我希望它打印出1,2,3,4,5,6,7,8,9,10.但它有效并打破了我的想法.结果是10,10,10,10,10,10,10,10,10,10.
那么如何编辑代码以使事情正确呢?
c# ×5
java ×2
arraylist ×1
asynchronous ×1
autoloader ×1
clr ×1
css ×1
delegates ×1
expression ×1
f# ×1
gdi ×1
gdi+ ×1
gif ×1
lambda ×1
php ×1
sqlite ×1
task ×1
threadpool ×1
value-type ×1