经过很多Idisposable的文章后,我对它的用法感到困惑.所有文章都解释了它是什么以及如何实现.如果我们没有,我想了解我们会想念的内容.它是一个接口,其中包含一个方法Dispose().让我们举一个例子通常使用dispose显示为处理数据库连接.
代码就像
public class Test : IDisposable
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Dispose()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
尽管配置已实现但是在dispose方法中,databaseconnection的dispose属性用于释放连接(this.databaseConnection.Dispose();)
我的问题是为什么在这种情况下我们需要实现IDisposable? 我们可以直接调用this.databaseConnection.Dispose()并释放连接.为什么在内部实现dispose也调用对象的dispose属性.作为Idisposable方法的替代方案,我们可以实现释放方法以释放内存.
public class Test
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Release()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么不同?我们真的需要Idisposable吗?我期待着一个具体的解释.
我的网站使用PHP邮件功能向用户发送电子邮件.Hotmail和Gmail用户不会收到它们,或者它们最终会进入垃圾邮件文件夹.以下是Gmail标记为垃圾邮件的邮件标题.
该怎么办?
Delivered-To: koopter1982@gmail.com
Received: by 10.216.213.222 with SMTP id a72cs207473wep;
Sat, 2 Oct 2010 04:26:47 -0700 (PDT)
Received: by 10.216.3.19 with SMTP id 19mr3099233weg.108.1286018806068;
Sat, 02 Oct 2010 04:26:46 -0700 (PDT)
Return-Path: <admin@drt01.dco.fusa.be>
Received: from drt01.dco.fusa.be (drt01.dco.fusa.be [193.110.251.55])
by mx.google.com with ESMTP id m29si2837219weq.203.2010.10.02.04.26.45;
Sat, 02 Oct 2010 04:26:46 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of admin@drt01.dco.fusa.be designates 193.110.251.55 as permitted sender) client-ip=193.110.251.55;
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of admin@drt01.dco.fusa.be designates …Run Code Online (Sandbox Code Playgroud) 大家好我正在开发一个MVC应用程序,我想使用Jquery对话框.我有以下场景:我有Telerik树视图,当我点击任何节点时,我希望打开对话框并显示有关此节点的信息.首先,我添加以下脚本来初始化对话框:
$(document).ready(function () {
$("#dialog").dialog("destroy");
$("#dialog-form").dialog({
autoOpen: false,
height: 500,
width: 500,
modal: true,
buttons: {
Cancel: function () {
$(this).dialog('close');
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
然后在OnSelect中编写以下代码(Telerik的客户端事件)
$('#dialog-form').dialog('open');
$('#dialog-form').load('<%= Url.Action("SomeAction", "SomeController") %>');
Run Code Online (Sandbox Code Playgroud)
在我的母版页中,我添加了使模态工作所需的脚本文件,如下所示:
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.dialog.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.core.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.widget.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.button.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.draggable.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.position.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.resizable.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)
当我点击树的节点没有发生任何事情时,chrome开发人员工具显示以下错误:
未捕获的TypeError:对象#没有方法'对话'
似乎脚本注册有错误或类似的东西
对此有任何帮助
我现在已经使用git很长一段时间了,主要是git-svn.现在我想说服我的同事从svn切换到git.但不幸的是,前提条件是svn存储库保持相当长的一段时间.所以我搜索了一个解决方案并提出了这本书:
Jon Loeliger的"使用Git进行版本控制".我买了它,它真的很好,但我不完全理解设置git svn看门人回购的指南.
在第16章中,他描述了一种情况,其中有一个Subversion存储库,至少有几个用户想要使用Git.他提出了一个单独的"看门人"git存储库,它是subversion的唯一接口.在git svn克隆了subversion repo(使用--prefix = svn /)后,所有分支都被推送到裸存储库(git push ../svn-bare.git'refs/remotes/svn/:refs/heads/svn / '和其他git用户被告知要克隆这个repo,它现在包含所有svn遥控器的本地分支.
这部分有效,我想我完全理解它.但我没有得到下一部分:
如果一个克隆裸存储库的开发人员将更改从他的repo推回到裸存储库,然后我在svn的裸存储库中提交这个,那么用户推送的提交由于git-svn创建的被替换的提交而有充分理由丢失.还是我错了?这是如何运作的?
这本书说
然后,要合并回subversion,在网守回购中,你做
git checkout svn/trunk(或其他分支 - 这是检查一个分离的头,因为svn/trunk是一个远程)git merge --no-ff new-feature git svn dcommit
如何在裸存储库中签出分支?我觉得这不行
这导致在分离的头上进行合并提交,然后将修改后的提交(在添加git-svn-id行之后)放在真正的svn/trunk分支上.
什么是真正的svn/trunk?
分离头上的提交"比冗余更糟糕.将其用于其他任何事情最终都会导致冲突.所以,只要忘记提交.如果你没有把它放在分支上,那就更容易了忘了"(Jon Loeliger).
我有点困惑.有人为创建一个git svn网守回购有更好的解释吗?我搜索过网站和这个网站,但我找不到任何适合我的网站.
在与同事合作时,我已经厌倦了浪费这么多时间与svn分支和融合.
可能重复:
C++中struct和class之间有什么区别
http://www.cplusplus.com/reference/std/typeinfo/type_info/
我想我的"老师"并没有告诉我很多关于C++中struct和classes之间的区别.
我在其他一些问题中读到有关继承的问题,结构默认是公共的...我也猜测struct没有构造函数/析构函数...
那么其他的差异呢?他们这么重要吗?
在谈到私有/受保护的属性/方法时,它们在运行时是不可访问的,只是因为编译器在编译时告诉它并报告错误,对吧?然后将这些功能与类进行比较,"信息隐藏"真正为程序员带来了什么?是否在这里,当有人重用该类时,这个人不会滥用该类,因为编译器会报告私有/受保护的东西?
我仍然为信息隐藏的真正目的而苦苦挣扎,它仍然希望在我的脑海中发出声音,因为它为程序带来更多安全性,意味着更少的安全漏洞,但我真的很困惑这种设计在语言中的目标...... (而且我不打算以任何方式反对C++,我只是想了解在什么情况下这个功能可能有趣或不;如果不是,那不是问题,但我只是想知道...).
我试图在我的应用程序中显示联系人图片,但我正在获取那些仅手动添加的图片而不是与facebook同步的图片.如何解决这个问题?这是我的代码如下:
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(PhotoId));
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);
return BitmapFactory.decodeStream(input);
Run Code Online (Sandbox Code Playgroud) 我已经使用了BackgroundWorkers了,但我以前从未遇到过这个问题.我的程序分析逻辑分析仪的输出,产生数据包,其中有数千个.为了防止更新延迟更新我的表单中的ListView(我之前报告了每个发现的,并且表单完全没有响应)我正在收集通用列表(List <Packet>)中的BackgroundWorker内的数据包和然后报告当找到n量(当前为250),或者发生异常时,或者当它完成时.
当我在List <Packet>上进行迭代时,问题发生在我的回调中,我得到一个InvalidOperationException,其中包含"Collection was modified"错误.我没有触及foreach中的集合(我正在添加到另一个集合中,但我认为没有理由可以修改我正在迭代的集合 - 再加上评论它不能解决问题.)我是甚至尝试锁定e.UserState,将e.UserState存储到本地作用域List <Packet>并锁定,似乎没有任何作用.
这是我的回调方法的代码:
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
packetsListView.SuspendLayout();
lock ((List<Packet>)e.UserState)
{
foreach (Packet packet in (List<Packet>)e.UserState)
{
packets.Add(packet);
ListViewItem item = new ListViewItem(string.Format("{0}ns", Math.Round(packet.StartSampleNumber * 41.666667)));
item.Tag = packet;
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, packet.Description));
packetsListView.Items.Add(item);
}
}
packetsListView.ResumeLayout();
statusLabel.Text = string.Format("Analyzing...found {0} {1}", packetsListView.Items.Count, packetsListView.Items.Count == 1 ? "packet" : "packets");
}
Run Code Online (Sandbox Code Playgroud) 码:
# it's an ajax request, so parameters are passed via GET method
def my_view(request):
my_param = request.GET['param'] // should I check for KeyError exception?
Run Code Online (Sandbox Code Playgroud)
在PHP框架中,我通常必须检查存在的参数,如果不存在,则将用户重定向到某个地方.但在Django中,未出现的参数会导致500错误页面并且似乎需要行为.那么按原样保留代码还是有更好的实践可以吗?我应该总是使用像/ myaction/paramvalue /而不是/ myaction传递的标准参数吗?param_name = param_value(为ajax请求构建这样的URL有点困难)?
如果我编写以下程序,则运行代码时不会发出蜂鸣声.
#include <stdio.h>
int main()
{
printf("\a");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何\a使用C程序产生哔声吗?
如何在加载内容后更改body元素的尺寸(宽度,高度)?
限制:
c# ×2
android ×1
c ×1
c++ ×1
class ×1
collections ×1
contacts ×1
django ×1
django-urls ×1
email ×1
facebook ×1
generic-list ×1
git ×1
git-svn ×1
gmail ×1
html ×1
idisposable ×1
image ×1
inheritance ×1
javascript ×1
php ×1
python ×1
spam ×1
struct ×1
svn ×1
sync ×1
webkit ×1