问题列表 - 第36053页

log4net.ThreadContext和log4net.LogicalThreadContext有什么区别?

更新于2014年11月18日 - 在浏览log4net源存储库时,我发现LogicalThreadContext的实现在2011年11月被修改为使用CallContext.LogicalSetData存储其属性(并使用LogicalGetData获取它们).这很重要,因为这意味着LogicalThreadContext现在应该可以正常工作.存储在LogicalThreadContext中的任何数据都应"流向"任何子线程或任务.这与ThreadContext(以及LogicalThreadContext的旧实现)相比较,其中存储在上下文中的数据将保持在当前线程的本地,而不是流向子线程/任务.

如果您有兴趣,可以参考以下内容:

http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net/Util/LogicalThreadContextProperties.cs?r1=1165341&r2=1207948&diff_format=h

希望有人发现这个老问题会发现这些信息很有用.

log4net提供了两个不同的"线程上下文"对象:ThreadContextLogicalThreadContext,每个对象 都有一个属性包.ThreadContext有一个ThreadContextProperties包,而LogicalThreadContext有一个LogicalThreadContextProperties包.

ThreadContext可能更常被称为"MDC".LogicalContext可能更常被称为"LDC".我会在这篇文章的其余部分使用短名称.

MDC.Properties使用System.Threading.Thread.SetData实现,而LDC.Properties使用System.Runtime.Remoting.Messaging.CallContext.SetData实现.

为了进行比较,NLog仅公开"MDC"(现在称为MappedDiagnosticContext)来存储线程本地属性.NLog的实现使用System.Threading.Thread.SetData,因此它的实现与log4net相同.

在log4net和NLog中,"MDC"属性存储在字典中,该字典本身存储在线程本地存储中.

在这样的情况下,将字典存储在用[ThreadStatic]装饰的类成员变量中是否相同?

[ThreadStatic]
private static IDictionary<string, string> threadProperties;
Run Code Online (Sandbox Code Playgroud)

什么是使用.NET 4.0的新ThreadLocal类的等效(或类似)声明?

最终,LDC和MDC之间真正的,实际的差异是什么?即使在阅读了上面链接的MSDN主题之后,我也不清楚.你什么时候真的使用一个而不是另一个?似乎我在log4net和上下文中看到的绝大多数引用/示例都是针对GDC(全局 - 我理解),NDC(嵌套 - 我也理解)和MDC.我在google搜索时可以找到LDC(或LogicalThreadContext)的大多数引用都与登录到log4net源代码库有关,而不是真实世界的用法.最不发达国家几乎从未提出问题或例子.

我确实找到了这个链接,提供了一些关于与log4net开发人员之一Nicko Cadell的差异的非常好的信息,但我仍然不清楚.

一个更大的问题,与log4net没有直接关系的是Thread.SetData和CallContext.SetData之间的实际区别是什么?

根据CallContext MSDN文章,CallContext数据可以传播到另一个AppDomain.要传播,存储在CallContext中的数据项必须公开ILogicalThreadAffinative接口.所以,这似乎是Thread.SetData和CallContext之间的一个区别.

根据Nicko Cadell链接,log4net不实现ILogicalThreadAffinative,因此不会传播LDC属性.

也许这里有足够的东西我应该能够回答我自己的问题,也许不是.我还在努力理解.

如果你使用log4net,你们每个人都使用MDC,LDC吗?如果你使用MDC,是因为大多数"真实世界"的例子似乎都在使用它吗?如果你使用LDC,你有特定的理由使用它吗?如果你同时使用它们,你如何选择何时使用哪个?

请注意,我已经看到一些关于MDC(也许是LDC)的文章可能因为线程切换而无法在ASP.net应用程序中正常工作.我对这个问题不是特别感兴趣,因为我不在ASP.net工作.

实际上,我在SO上发现了一些可能有助于讨论的有用帖子:

在.NET中使用线程本地存储的最佳实践是什么?

.Net:逻辑线程和线程本地存储?

提前致谢!

.net logging log4net nlog thread-local-storage

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

在Django Haystack搜索中没有结果

我已经在网上阅读了入门文档和其他一些示例.这就是我的search_indexes.py看起来像:

from haystack.indexes import *
from haystack import site
from models import Entry

class EntryIndex(SearchIndex):
    text = CharField(document=True)
    headline = CharField(model_attr='headline')
    subheadline = CharField(model_attr='subheadline')
    category = CharField(model_attr='category__name')

    author = CharField(model_attr='get_author')
    email = CharField(model_attr='get_email')

    tags = CharField(model_attr='tags')

    content = CharField(model_attr='content')

    def get_queryset(self):
        return Entry.objects.exclude(dt_published=None).order_by('-is_featured', '-dt_published', '-dt_written', 'headline')

site.register(Entry, EntryIndex)
Run Code Online (Sandbox Code Playgroud)

但是当我搜索时,我没有得到任何结果.奇怪的是,如果我使用搜索短语'a'或任何其他单个字母,我会得到看起来像该死的东西中的每一个条目.

无论如何......在我看来,搜索引擎并没有在任何领域寻找.:/

这条线以下的任何东西都不太相关(它有效,相信我):


我的看法:

from haystack.views import SearchView

class CustomSearchView(SearchView):
    def __name__(self):
        return "CustomSearchView"

    def extra_context(self):
        return common(self.request)

def search(request):
    return CustomSearchView(template='news/search_results.html')(request)
Run Code Online (Sandbox Code Playgroud)

和search_results.html:

{% extends "content.html" %}
{% load tagging_tags %}
{% …
Run Code Online (Sandbox Code Playgroud)

django search-engine whoosh django-haystack

8
推荐指数
1
解决办法
4581
查看次数

从我自己的网站安装(和更新)Android应用程序,而不是市场

我有可能在我自己的网站上发布一个Android应用程序,而不是使用Android市场.该应用程序用于我们的互联网软件服务,因此仅为了我们现有的客户的利益.

第二个问题是,我可以在安装后安装我的应用程序更新,还是必须使用市场来完成该任务?

android

13
推荐指数
1
解决办法
9185
查看次数

使用JQuery将内容写入新窗口

我有一个带有DIV元素的网页.当用户点击"打印"时,我想打印该div的内容.请注意,我只想打印DIV的内容,而不是整个页面.为了尝试这个,我决定使用JavaScript打开一个新窗口.然后我将把DIV的内容写入新窗口.我的问题是,这可能与JQuery有关吗?如果是这样,怎么样?目前,我正在尝试以下方法:

function printClick() {
  var w = window.open();
  var html = $("#divToPrintID").html();

  // how do I write the html to the new window with JQuery?
}
Run Code Online (Sandbox Code Playgroud)

jquery

40
推荐指数
3
解决办法
5万
查看次数

使用SQL Server Business Intelligence Development Studio创建新的Integration Services包时无法加载类型错误

无法从程序集"Microsoft.SqlServer.DTSRuntimeWrap,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91"加载类型"Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackageSigning100"

ssis bids

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

UITextField使文字变粗?

快速提问,有没有人知道如何以编程方式使textField中的文本变为粗体斜体

   @property(nonatomic, retain) IBOutlet UITextField *textField_TOP_01;

   [textField_TOP_01 setTextColor:[UIColor redColor]];
   [textField_TOP_01 setText:@"This text is bold"];
Run Code Online (Sandbox Code Playgroud)

非常感激

加里

iphone cocoa-touch objective-c

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

使用HAML有条件地设置HTML元素ID

我试图用haml编写这个html,以便在项目是当前项目时添加id标记.这是为jquery突出显示设置.

<% if line_item == @current_item %>
<tr class="line_item id="current_item">
<% else %>
<tr class="line_item">
<% end %> 
  <td><%= line_item.quantity %>&times;</td>
  <td><%= line_item.product.title %></td> 
  <td class="item_price"><%= number_to_currency(line_item.total_price) %></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

因为我不想编写辅助方法,所以我将if语句粘贴在标记中:

%tr.line_item{ :id => (line_item == @current_item ? '' : 'current_item') }
%td
    = line_item.quantity
%td 
    \x #{line_item.product.title}
%td.item_price
    = number_to_currency(line_item.total_price)
%td.item_remove
    = button_to 'Remove', line_item, :method => :delete
Run Code Online (Sandbox Code Playgroud)

但是,'current_item'的这个​​id标签包含所有项目而不仅仅是当前项目.这导致javascript突出显示所有或错误的条目.关于如何让haml合作的想法?

haml if-statement ruby-on-rails

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

Android - 相机预览是侧面的

我正在使用预览来显示相机在屏幕上看到的内容.

我可以使一切工作正常,表面创建,表面设置和表面显示.

但是,在纵向模式下,它始终以不正确的90度角显示图像.

如图中所示:

替代文字

我知道使用以下代码将直接设置图片:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

但是我在Activity中有预览,其中包含其他元素,并且我的Activity在横向模式下显示没有意义.(默认禁用)

所以我想知道是否只是改变预览的方向?并在"纵向"模式下正确显示我的其余活动?

或者无论如何旋转预览以便正确显示?

camera android portrait preview orientation

123
推荐指数
3
解决办法
9万
查看次数

GIT:如何在msysgit(windows)上摆脱烦人的CRLF消息?

实际上,每当我播放一个文本文件(大多数是em)时,我都会从git gui(我使用msysgit)获取消息,它用CRLF替换(或即将)行结尾.显然我想要它(并且有一个设置为huraah),但我不希望这些烦人的消息一直出现!

有什么办法保持设置,但关闭/禁用弹出消息?

我不知道如何在命令行上使用GIT,但我喜欢msysgit的暂存过程:)所以我宁愿不改为bash.

git newline git-gui core.autocrlf

6
推荐指数
2
解决办法
4883
查看次数

iOS:在NSUserDefaults中使用布尔值

rootViewController我的应用程序的加载,我希望能够检查用户是否登录凭据已保存到NSUserDefaults.

基本上,当用户加载应用程序并且他/她没有保存她的登录凭证时,modalAlertView将推送,并且用户将能够适当地保存他们的凭证.这会将这些UITextField字符串保存到相应的NSUserDefault对象.但是,有可能,当这个保存完成后,我可以创建NSUserDefault一个布尔值的对象并将值更改为是吗?

这意味着布尔值已经设置为no,并且当用户保存其登录凭据时,它还将布尔值更改为是?

iphone boolean objective-c nsuserdefaults modalviewcontroller

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