问题列表 - 第27949页

CopyOnWriteArrayList如何是线程安全的?

我已经看了一下OpenJDK的源代码,CopyOnWriteArrayList似乎所有的写操作都受到同一个锁的保护,读操作根本就没有受到保护.据我所知,在JMM下,所有对变量(读取和写入)的访问都应该受到锁定或重新排序的影响.

例如,set(int, E)方法包含这些行(在锁定下):

/* 1 */ int len = elements.length;
/* 2 */ Object[] newElements = Arrays.copyOf(elements, len);
/* 3 */ newElements[index] = element;
/* 4 */ setArray(newElements);
Run Code Online (Sandbox Code Playgroud)

get(int)另一方面,该方法仅适用return get(getArray(), index);.

在我对JMM的理解中,这意味着get如果语句1-4被重新排序,如1-2(新)-4-2(copyOf)-3 ,则可能会观察到数组处于不一致状态.

我是否理解JMM不正确或是否有任何其他解释为什么CopyOnWriteArrayList线程安全?

java concurrency java-memory-model data-structures

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

UIWebView内存管理

我的内存管理有问题.

我正在开发一个大量使用UIWebView的应用程序.这个应用程序在从我的服务器加载内容时动态生成大量的UIWebViews.其中一些UIWebView非常大,并且有很多图片.

如果我使用仪器检测泄漏,我没有检测到任何泄漏.但是,分配了很多对象,我怀疑这与UIWebViews有关.

当webviews因不再需要而发布时,似乎并非所有内存都被释放.我的意思是,在向我的服务器发出请求后,该应用程序创建了一个UITableView和许多webview(仪器说大约8Mb).当用户点击时,所有这些都被释放但内存使用量仅下降约2-3 Mb,使用该应用程序5-10分钟后它崩溃.

我错过了什么吗?有谁知道会发生什么?

谢谢!

iphone cocoa memory-leaks memory-management uiwebview

18
推荐指数
3
解决办法
1万
查看次数

如何确定Service Pack应用于SQL Server实例的日期?

对于SQL Server 2005/2008的实例,如何确定将Service Pack应用于实例的日期和时间?是否有存储该信息的系统表或视图?

sql-server

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

对于C编程时的vs.

有三个环在C: ,for,whiledo-while.他们之间有什么区别?

例如,似乎几乎所有while语句都可以被for语句替换,对吧?那么,使用的优势是什么while

c loops for-loop while-loop

74
推荐指数
6
解决办法
13万
查看次数

对如何在C#中使用JSON感到困惑

关于使用C#和JSON的每一个问题的答案似乎是"使用JSON.NET",但这不是我正在寻找的答案.

我说的原因是,从我在文档中可以阅读的所有内容来看,JSON.NET基本上只是构建在.NET框架中的DataContractSerializer的更好表现版本......

这意味着如果我想反序列化一个JSON字符串,我必须为我可能拥有的每个请求定义完整的强类型类.因此,如果我需要获取类别,帖子,作者,标签等,我必须为这些内容中的每一个定义一个新类.

如果我构建了客户端并确切知道字段是什么,这很好,但是我正在使用别人的API,所以我不知道合同是什么,除非我下载一个示例响应字符串并从JSON字符串手动创建类.

这是唯一的方法吗?有没有办法让它创建一种可以用json ["propertyname"]读取的哈希表?

最后,如果我自己必须自己构建类,那么当API发生变化而他们没有告诉我(因为Twitter似乎因为这样做而臭名昭着)时会发生什么?我猜我的整个项目都会破坏,直到我进入并更新对象属性...

那么使用JSON时的一般工作流程到底是什么?一般来说,我的意思是与图书馆无关.我想知道它是如何完成的,而不是专门针对目标库......

.net c# serialization json datacontract

9
推荐指数
1
解决办法
3738
查看次数

如何强制跟踪器重新索引文件夹?

我正在使用跟踪器索引工具来搜索我的Ubuntu 10.10 amd64系统上的文件.最近我将一些文件添加到一个文件夹中,我想知道如何强制跟踪器重新索引此文件夹,以便我能够对这些文件执行搜索查询.

有任何想法吗?终端命令就足够了.

linux indexing ubuntu tracker

6
推荐指数
0
解决办法
4266
查看次数

ConcurrentBag <MyType> Vs List <MyType>

使用ConcurrentBag(Of MyType)对使用List(Of MyType)有什么好处? CB上的MSDN页面说明了这一点

ConcurrentBag(Of T)是一个线程安全的包实现,针对同一个线程生成和使用存储在包中的数据的场景进行了优化

那有什么好处呢?我可以理解Concurrency命名空间中其他集合类型的优点,但是这个让我很困惑.

.net c# vb.net multithreading

21
推荐指数
3
解决办法
1万
查看次数

Ruby中的可选parens用于带大写起始字母的方法?

我刚开始使用IronRuby(但是当我在普通Ruby中测试它时,行为似乎是一致的)我的.NET应用程序中的DSL - 作为其中的一部分,我定义了通过define_method从DSL调用的方法.

但是,在调用以大写字母开头的方法时,我遇到了关于可选parens的问题.

鉴于以下计划:

class DemoClass
    define_method :test do puts "output from test" end
    define_method :Test do puts "output from Test" end

    def run
        puts "Calling 'test'"
        test()
        puts "Calling 'test'"
        test
        puts "Calling 'Test()'"
        Test()
        puts "Calling 'Test'"
        Test
    end
end

demo = DemoClass.new
demo.run
Run Code Online (Sandbox Code Playgroud)

在控制台中运行此代码(使用普通红宝石)会产生以下输出:

ruby .\test.rb
Calling 'test'
output from test
Calling 'test'
output from test
Calling 'Test()'
output from Test
Calling 'Test'
./test.rb:13:in `run': uninitialized constant DemoClass::Test (NameError)
    from ./test.rb:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我意识到Ruby约定是常量以大写字母开头,并且Ruby中方法的一般命名约定是小写的.但是parens目前正在杀死我的DSL语法.

有没有解决这个问题的方法?

ruby ironruby

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

有条件加入LINQ?

我正在尝试编写一个查询,从一个数据库中获取信息并将其连接到另一个数据库中的信息.

TableA
idA
valueA
idB

TableB
idB
valueB
Run Code Online (Sandbox Code Playgroud)

棘手的部分是在TableA中,idB并不总是被定义,所以当我进行普通连接时,我只得到TableA具有idB值的结果.我想要的是能够从TableA中获取所有信息,即使它没有相应的idB值.

c# linq join

4
推荐指数
1
解决办法
2874
查看次数

是否有使用base-2数字编码唯一选项列表的技术名称?

对这个问题相当模糊的性质表示道歉,我从来没有正式教过编程,谷歌对于像我这样的自助人来说是无用的,因为关键词很模糊.

我正在编写一些函数,将一个选项列表编码并解码为Long,以便它们可以轻松地在应用程序中传递,你知道这样的事情:

1 - Apple
2 - Orange
4 - Banana
8 - Plum

在这种情况下,数字11代表Apple,Orange和Plum.

我已经有了它的工作,但我看到这一直在使用,所以假设这个技术有一个共同的名称,毫无疑问,目前我所能达到的各种最佳实践和聪明的算法.

编辑:谢谢大家,我知道答案很快就会来:)

algorithm options bitmask bitflags

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