小编The*_*ter的帖子

分组成元素字典

嗨,我有一个类类型class1的元素列表,如下所示.我如何将它们组合成一个

Dictionary<int,List<SampleClass>> 基于groupID

class SampleClass
{
   public int groupID;
   public string someData;
 }                                                                                  
Run Code Online (Sandbox Code Playgroud)

我这样做了:

var t =(from data in datas group data by data.groupID into dataGroups select dataGroups).ToDictionary(gdc => gdc.ToList()[0].groupID, gdc => gdc.ToList());
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点

c# linq group-by

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

Java 8 autoboxing +泛型:变量与方法的不同行为

我找到了一段代码,从Java 7切换到Java 8后停止编译.它没有任何新的Java 8内容,如lambda或流.

我将有问题的代码缩小到以下情况:

GenericData<Double> g = new GenericData<>(1d);
Double d = g == null ? 0 : g.getData(); // type error!!!
Run Code Online (Sandbox Code Playgroud)

您可能猜测GenericData构造函数有一个泛型类型的参数,该getData()方法只返回该泛型类型.(有关完整的源代码,请参阅下文.)

现在困扰我的是,在Java 7中,代码编译得很好,而使用Java 8,我得到以下错误:

CompileMe.java:20: error: incompatible types: bad type in conditional expression
Double d = g == null ? 0 : g.getData();
                       ^
int cannot be converted to Double
Run Code Online (Sandbox Code Playgroud)

似乎Java 7能够从int - > double - > Double进行转换,但Java 8因尝试立即从int - > Double而失败.

我觉得特别有趣的是Java 8 确实接受代码时,我改变它getData()data,即访问GenericData通过变量本身而不是消气方法的价值:

Double …
Run Code Online (Sandbox Code Playgroud)

java generics autoboxing java-8

17
推荐指数
3
解决办法
1107
查看次数

SQL事务隔离级别的问题

我有事务隔离级别的问题.这里涉及两个表,一个被设置为事务隔离级别经常更新SERIALIZABLE时,第二一个有外键的一个.

插入或更新第二个表时出现问题.几个小时后,我收到错误消息:

由于更新冲突,快照隔离事务中止.您不能使用快照隔离直接或间接访问数据库'DB'中的表'dbo.first'来更新,删除或插入已被另一个事务修改或删除的行.重试事务或更改update/delete语句的隔离级别.

插入或更新第二个表时我没有设置事务隔离级别,我也运行命令DBCC USEROPTIONS并返回read_committed

我需要尽快消​​除这个错误,谢谢你

sql sql-server deadlock transaction-isolation

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

Android - 在一个圆圈中显示ExoPlayer

我试图在一个圆圈内显示一个ExoPlayerView,覆盖另一个ExoPlayer(画中画): 在此输入图像描述

我已经尝试将第二个玩家放在一个带圆角的框架内(这个答案这一个)但是玩家将总是逃离父框架并绘制视频的完整矩形.

我发现这个解决方案使用了GLSurfaceView,但是这个解决方案使用的是经典的MediaPlayer而不是ExoPlayer.

android exoplayer

7
推荐指数
1
解决办法
761
查看次数

MyISAM仅在过程内选择锁定插入

我们有哪些行获得插入只有表底部的大MyISAM表.

在做一些基准测试时,我意识到选择不会(总是)将其他插入锁定到同一个表中.但是,当插入来自存储过程/函数时,它们将被select锁定.

这是为什么?

要演示此行为:

CREATE TABLE Foo (
   ID INT NOT NULL AUTO_INCREMENT,
   Bar VARCHAR(200),
   PRIMARY KEY(ID)) ENGINE=MyISAM;

--INSERT into Foo 10M rows


DELIMITER $$

DROP PROCEDURE IF EXISTS InsertProc$$

CREATE PROCEDURE InsertProc(IN vBar VARCHAR(255))
BEGIN
    INSERT Foo(Bar) VALUES (vBar);
END$$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

运行以下查询:

SELECT Count(*) FROM Foo WHERE INSTR(Bar, 'abcdefg') > 0;
Run Code Online (Sandbox Code Playgroud)

当Select正在运行时,打开一个新连接并运行以下插入查询:

INSERT Foo(Bar) VALUES ('xyz1234');
Run Code Online (Sandbox Code Playgroud)

该Insert将立即运行并返回,但是,如果我运行以下查询:

CALL InsertProc('xyz1234');
Run Code Online (Sandbox Code Playgroud)

现在查询将锁定并等待select完成.

在Window Server 2K3上运行的MySql版本:5.0.51

谢谢.

- 更新这是配置文件输出:

直接插入:

(initialization)     0.0000432
checking permissions 0.0000074
Opening tables       0.0000077
System lock          0.0000032 …
Run Code Online (Sandbox Code Playgroud)

mysql select myisam stored-procedures insert

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

从非泛型类的泛型方法派生泛型方法

我有一个非通用的基类,带有泛型方法我希望通过添加一些额外的代码来扩展这个方法,而方法的其余部分应该通过调用base.Method保持不变

这是一个例子

public override List<T> MyMethod<T>()
{

// do some work in here
...
// 

return base.MyMethod<T>(); // **I get an error here saying that T must be a reference type**
}
Run Code Online (Sandbox Code Playgroud)

.net c# generics

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