多对多根据结构的不同设置不同的方式。如果类 A 具有 B 实体的集合,您可以将其直接绑定到 DataSource 属性,如下所示:
<asp:Repeater ... DataSource="<% Eval("Bs") %>">
因此,这取决于对象模型中实体的引用方式,这又取决于多对多设置。看看这个:http://thedatafarm.com/blog/data-access/inserting-many-to-many-relationships-in-ef-with-or-without-a-join-entity/
为了让客户端排序工作,我需要在加载网格后调用 reloadGrid
:
loadComplete: function() {
jQuery("#myGridID").trigger("reloadGrid"); // Call to fix client-side sorting
}
我不必在应用程序中的另一个网格上执行此操作,因为它被配置为使用通过另一个网格检索的数据AJAX 调用,而不是直接由网格检索数据:
editurl: "clientArray"
datatype: "local"
对于这种情况,一种更简单、更方便的解决方案是将包含 .h 文件的目录(在本例中为 /lib/irrlicht-1.6/include)拖到项目文件中,而不是显式地将包含路径添加到项目设置中窗格。当然,这会将标头添加到您的项目中,并且可以轻松浏览它们并搜索符号等,并且还将目录路径添加到 gcc 编译中,以便您不必显式管理包含路径。
您也可以将这一解决方案用于 WebView
。调用 findAllAsync
webview.findAllAsync(((EditText) findViewById(R.id.edit)).getText().toString());
并将 FindListener
添加到 WebView
webview.setFindListener(new FindListener() {
@Override
public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, boolean isDoneCounting) {
Toast.makeText(getApplicationContext(), "Matches: " + numberOfMatches, Toast.LENGTH_LONG).show();
}
});
使用 webview.findNext(false);
迭代结果,其中 false/true显示方向。
但这个解决方案是在 API level 16
中添加的!!!您可以设置 JavaScript 来进行高亮显示 - http://www.nsftools.com/misc/SearchAndHighlight。嗯
听起来您实际上还没有分配数组
。通常,您会在初始化程序中执行此操作。 (也不要忘记将 release
添加到您的 dealloc
方法中。)@synthesize
创建 getter 和 setter,但您仍然拥有自己处理对象的分配/解除分配。
您是否将其回显到 HTML 页面中?因为代码会被解析成实际的链接。
查看输出页面的来源。
插入->节目列表功能效果很好。我只是想补充一点,如果你在Mac上,并尝试直接使用命令+V或右键单击+粘贴将一段代码粘贴到程序列表中,空格将不会被保留,你必须手动通过键入制表符、回车符等插入空格。
解决此问题的一个非常简单的方法是使用 shift+command+V 进行粘贴。这会保留原始源代码的所有空白。
任何有兴趣将 Preon 移植到 .NET 的人,请随时与我联系。我是 Java Preon 的开发者:flotsam dot nl 的 wilfred
我就是这样做的。
我认为这已经是合理范围内尽可能有效的了。它优化了单字符大小写,并避免为每个删除的子序列创建多个子字符串。
请注意,处理了将空字符串传递给修剪的极端情况(其他一些答案将进入无限循环)。
/** Trim all occurrences of the string <code>rmvval</code> from the left and right of <code>src</code>. Note that <code>rmvval</code> constitutes an entire string which must match using <code>String.startsWith</code> and <code>String.endsWith</code>. */
static public String trim(String src, String rmvval) {
return trim(src,rmvval,rmvval,true);
}
/** Trim all occurrences of the string <code>lftval</code> from the left and <code>rgtval</code> from the right of <code>src</code>. Note that the values to remove constitute strings which must match using <code>String.startsWith</code> and <code>String.endsWith</code>. */
static public String trim(String src, String lftval, String rgtval, boolean igncas) {
int str=0,end=src.length();
if(lftval.length()==1) { // optimize for common use - trimming a single character from left
char chr=lftval.charAt(0);
while(str<end && src.charAt(str)==chr) { str++; }
}
else if(lftval.length()>1) { // handle repeated removal of a specific character sequence from left
int vallen=lftval.length(),newstr;
while((newstr=(str+vallen))<=end && src.regionMatches(igncas,str,lftval,0,vallen)) { str=newstr; }
}
if(rgtval.length()==1) { // optimize for common use - trimming a single character from right
char chr=rgtval.charAt(0);
while(str<end && src.charAt(end-1)==chr) { end--; }
}
else if(rgtval.length()>1) { // handle repeated removal of a specific character sequence from right
int vallen=rgtval.length(),newend;
while(str<=(newend=(end-vallen)) && src.regionMatches(igncas,newend,rgtval,0,vallen)) { end=newend; }
}
if(str!=0 || end!=src.length()) {
if(str<end) { src=src.substring(str,end); } // str is inclusive, end is exclusive
else { src=""; }
}
return src;
}
也许 jvmtop 值得一看。
它是一个命令行工具,可为多个指标提供实时视图。
您可以使用其 STDOUT 作为进一步处理的输入。
输出示例:
JvmTop 0.4.1 amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
嗯,基于网格的答案很好,但有时您无论如何都需要对接近的点进行分组,即使它们不在同一个网格单元中。我的方法是通过分组来实现这一点:如果两个点靠近或者有一系列靠近点连接它们,则它们位于同一组中。此语义无法使用适当的 IEqualityComparer 来完成,因为它需要在生成组之前提前了解所有项目。所以我做了一个简单的LINQ风格的运算符GroupByCluster
,它基本上实现了这一点。
代码位于:http://ideone.com/8l0LH。它可以在我的 VS 2010 上编译,但无法在 Mono 上编译,因为 HashSet<>
无法隐式转换为 IEnumerable<>
(为什么?)。
该方法是通用的,因此效率不高:它是输入大小的二次方。对于具体类型,它可以变得更高效:例如,对于 T = double,我们只需对输入数组进行排序即可获得 O(n log n) 性能。类似但更复杂的技巧也适用于 2D 点。
注意:您最初的主张不可能用 IEqualityComparer
实现,因为您的“近似相等”不是传递性的(但 IEqualityComparer
中的相等必须如此)。
我不会使用程序集作为许可证文件 - 正如其他人指出的那样,破坏它相对微不足道。
我会使用一个文件(xml 或其他文件),然后将其锁定到用户计算机。这可以通过多种方式实现:
1)使用 System.Cryptography.ProtectedData - 这只是包装 Windows DPAPI 并使用 Windows 密钥存储(每个用户或每个本地计算机)。这是一种简单的方法,但您必须使用 Encoding.UTF8.GetString (或任何您的编码)从字节数组转换回来。这很简单,但不是工业强度,因为有人仍然可以挖出密钥库等。
2) 使用机器唯一 ID(例如具有对称算法(例如 Rijndael 或 Blowfish)的 SID,并提供未加密许可证文件的 SHA-256 哈希值作为 IV。这实现起来有点复杂,因为您需要使用 WMI 来查找 SID,然后使用 System.Security.Cryptography.RijndaelManaged 等来进行加密/解密。
I wouldn't go with using an assembly as a license file - as others have pointed out it's relatively trivial to break.
I would use a file ( xml or whatever ) then lock it to the users machine. This can be achieved in several ways :
1) Use System.Cryptography.ProtectedData - this just wraps the Windows DPAPI and uses the windows key store ( either per user or per local machine ). This a simple(ish) approach but you will have to using Encoding.UTF8.GetString ( or whatever your encoding is ) to convert back from a byte array. This is simple but not industrial strength as someone could still dig out the key store etc.
2) Use a machine unique ID such as the SID with a symmetric algorithm such as Rijndael or Blowfish and provide the SHA-256 hash of the unencrypted license file as the IV. This is a bit more complex to implement as you'd need to use WMI to find the SID and then use System.Security.Cryptography.RijndaelManaged etc to do the encryption/decryption.
使用程序集作为许可证文件的优点/缺点?