静态分析工具不断告诉我,我的C#代码中有资源泄漏.
这是一个例子:
StringReader reader = new StringReader(...);
// do something with reader
...
} // static analysis tool cries that I've leaked **reader**
Run Code Online (Sandbox Code Playgroud)
我的工具是否正确?如果是这样,为什么?
编辑(回复评论) - 我的静态分析工具说我有一堆资源泄漏.我从这个论坛知道需要显式释放某些Java AWT对象,否则会发生泄漏.是否需要明确释放C#对象?
该文章谈到Java的"同步"的关键字.
...
private int foo;
public synchronized int getFoo() { return foo; }
public synchronized void setFoo(int f) { foo = f; }
Run Code Online (Sandbox Code Playgroud)
如果调用者想要增加foo属性,则执行此操作的以下代码不是线程安全的:
...
setFoo(getFoo() + 1);
Run Code Online (Sandbox Code Playgroud)
如果两个线程同时尝试递增foo,结果可能是foo的值增加了一个或两个,具体取决于时间.
现在,我的问题:
为什么setFoo()上没有"同步"会阻止上面的粗体线?
如何在 Maven 构建时强制执行代码样式检查?
特别是,我想配置两个 Maven 构建以使用这两个:
如何配置我的 Maven 构建以在代码样式违规时失败?
<table id='t'>
<tr>
<td id='foo' class='a b c'>blah</td>
<td id='bar' class='a c'>bloo</td>
<td id='zip' class='a b c'>blop</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
使用jQuery,为什么以下children调用返回0
$('#t').children('tr').length
Run Code Online (Sandbox Code Playgroud)
但find返回1?
$('#t').find('tr').length
Run Code Online (Sandbox Code Playgroud)
使用Scala 2.11.8,我可以key - value通过以下方式将一对附加到Map:
scala> Map( (1 -> 1) ) + (2 -> 2)
res8: scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 2)
Run Code Online (Sandbox Code Playgroud)
但是,如何使用元组作为+的参数?
scala> Map( (1 -> 1) ) + (2, 2)
<console>:12: error: type mismatch;
found : Int(2)
required: (Int, ?)
Map( (1 -> 1) ) + (2, 2)
^
Run Code Online (Sandbox Code Playgroud)
也不起作用:
scala> Map( (1, 1) ) + (2, 2)
<console>:12: error: type mismatch;
found : Int(2)
required: (Int, ?)
Map( (1, 1) ) + …Run Code Online (Sandbox Code Playgroud) 当我试图DBObject通过插入批量加载一个列表时,我得到了no implicit view available.
collection.insert(listObjects) // listObjects is a List[DBObject]
[error]Test.scala:139: No implicit view available from List[com.mongodb.casba
h.Imports.DBObject] => com.mongodb.casbah.Imports.DBObject.
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思?我怎么解决?
参考:
def insert [A] (docs: List[A])(implicit arg0: (A) ? DBObject) : WriteResult
当然数据类型并不精确,但这是(或多或少)Monoid Bool实现的方式?
import Data.Monoid
data Bool' = T | F deriving (Show)
instance Monoid (Bool') where
mempty = T
mappend T _ = T
mappend _ T = T
mappend _ _ = F
Run Code Online (Sandbox Code Playgroud)
如果是/不是,什么是做推理Bool的mappend一OR对AND?
应用程序编程与效果,McBride和Paterson的论文,提到sequence功能:
sequence :: [IO a ] -> IO [a ]
sequence [] = return []
sequence (c : cs) = return (:) `ap` c `ap` sequence cs
Run Code Online (Sandbox Code Playgroud)
其ap类型是:
ap :: Monad m => m (a -> b) -> m a -> m b
我试图了解最后一行右侧的类型.
这些类型如何统一(我认为这是正确的措辞)return (:) 'ap' c 'ap' sequence cs?
我不清楚return (:)比赛ap的第一个论点m (a -> b).
ghci> :t return (:)
return (:) :: Monad m => m …Run Code Online (Sandbox Code Playgroud) Typeclassopedia提出了这个练习:
为(( - >)e)实现Monad实例.
这是MyMonad班级.
class (MyMonad m) where
ret :: a -> m a
flatMap :: m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)
然后,我开始尝试实现Monad实例((->) e).
instance (MyMonad (-> e)) where
ret x = ...
flatMap m f = ...
Run Code Online (Sandbox Code Playgroud)
但是,我没有直觉((->) e)意味着什么.
请帮助我理解它,并给我一个解决方案的暗示ret.
纵观国家单子的维基,我试图了解runState和put功能.
据我所知runState,它需要第一个参数State,它有一个"宇宙" s,和一个值,a.它需要宇宙的第二个参数.最后,它返回一个(a, s)地方a是新的价值,s是新的宇宙?
ghci> :t runState
runState :: State s a -> s -> (a, s)
Run Code Online (Sandbox Code Playgroud)
例:
ghci> let s = return "X" :: State Int String
ghci> runState s 100
("X",100)
Run Code Online (Sandbox Code Playgroud)
但是,我不明白put结果:
ghci> runState (put 5) 1
((),5)
Run Code Online (Sandbox Code Playgroud)
既然runState返回了(a, s),为什么是a类型()?
我对上面的尝试解释没有信心.请纠正我,并回答我的问题put.