我正在解析一个包含如下节点的XML文档:
<objects>
<dog>
<data1>...</data1>
<data2>...</data2>
<data3>...</data3>
</dog>
<cat>
<data1>...</data1>
<data2>...</data2>
<data3>...</data3>
</cat>
</objects>
Run Code Online (Sandbox Code Playgroud)
元素data1,data2,data3始终是一致的.只有父标签有所不同.在我的对象模型中,我有一个Object,它代表所有这些情况.如何在不事先知道元素名称的情况下让JAXB处理这种情况?
@XMLAnyElement匹配所有对象,但不创建适当类型的对象; 我得到一个Node对象列表而不是我的对象.我的对象目前看起来像:
public class MyObject {
protected String otherData;
@XmlAnyElement
@XmlElementWrapper(name = "objects")
protected List<MyChildObject> childObjects;
}
public class MyChildObject {
protected String data1;
protected String data2;
protected String data3;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何处理这种情况不会改变传入的XML格式使用<object type="dog">元素?
它看起来像返回的列表keys()和values()字典的方法总是一对一的映射(假设字典在调用2方法之间没有改变).
例如:
>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
print d[k[i]] == v[i]
True
True
True
Run Code Online (Sandbox Code Playgroud)
如果你不改变调用keys()和调用之间的字典values(),假设上面的for循环总是打印True是错误的吗?我找不到任何证明这一点的文件.
我有一些库"自定义控件".基本上我们有自己的按钮,圆角板和一些带有一些定制油漆的组合箱.尽管OnPaint方法中存在"数学",但控件非常标准.大多数情况下,我们所做的只是绘制圆角并为背景添加渐变.我们使用GDI +来实现这一切.
这些控件都可以(根据我们的客户非常好看),但是尽管有DoubleBuffer,你可以看到一些重绘,特别是当同一个表格上有20个++按钮时(例如).在表单加载时,您会看到绘制的按钮...这很烦人.
我很确定我们的按钮不是地球上最快的东西,但我的问题是:如果双缓冲区"打开",那么不应该在后台进行所有重绘,而Windows子系统应该"立即"显示结果吗?
另一方面,如果存在将创建标签的"复杂"foreach循环,则将它们添加到面板(双缓冲)并更改其属性,如果我们在循环之前挂起面板并在循环时恢复面板布局结束,不应该所有这些控件(标签和按钮)"几乎立即"出现?这不会发生这种情况,您可以看到面板被填充.
知道为什么不发生这种情况吗?我知道很难在没有示例代码的情况下进行评估,但这也难以复制.我可以用相机制作一个视频,但相信我这个,它不是很快:)
我们当前的项目不使用Hibernate(出于各种原因),我们使用Spring的SimpleJdbc支持来执行所有数据库操作.我们有一个实用程序类,它抽象所有CRUD操作,但使用自定义SQL查询执行复杂操作.
目前,我们的查询作为字符串常量存储在服务类本身中,并被提供给由SimpleJdbcTemplate执行的实用程序.我们陷入僵局,可读性必须与可维护性相平衡.类本身内部的SQL代码更易于维护,因为它驻留在使用它的代码中.另一方面,如果我们将这些查询存储在外部文件(平面或XML)中,与转义的java字符串语法相比,SQL本身将更具可读性.
有谁遇到过类似的问题?什么是良好的平衡?您在哪里将自定义SQL保留在项目中?
示例查询如下:
private static final String FIND_ALL_BY_CHEAPEST_AND_PRODUCT_IDS =
" FROM PRODUCT_SKU T \n" +
" JOIN \n" +
" ( \n" +
" SELECT S.PRODUCT_ID, \n" +
" MIN(S.ID) as minimum_id_for_price \n" +
" FROM PRODUCT_SKU S \n" +
" WHERE S.PRODUCT_ID IN (:productIds) \n" +
" GROUP BY S.PRODUCT_ID, S.SALE_PRICE \n" +
" ) FI ON (FI.PRODUCT_ID = T.PRODUCT_ID AND FI.minimum_id_for_price = T.ID) \n" +
" JOIN \n" +
" ( \n" +
" SELECT S.PRODUCT_ID, \n" …Run Code Online (Sandbox Code Playgroud) 如果WCF服务在其响应消息中返回字节数组,则数据可能会超过默认长度16384字节.当发生这种情况时,异常将是这样的
读取XML数据时已超出最大数组长度配额(16384).通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxArrayLength属性,可以增加此配额.
我在网上看到的所有建议只是为了将<readerQuotas>元素中的设置增加到最大值,所以就像这样
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
Run Code Online (Sandbox Code Playgroud)
在服务器上,在客户端上类似.
我想知道这种方法的任何缺点,特别是如果字节数组的大小可能只是偶尔变得非常大.上面的设置是否只是让WCF为每个请求声明一个巨大的数组?您是否必须限制返回的数据的最大大小,或者您是否只需指定一个合理大小的缓冲区并让WCF继续运行直到读取所有数据?
谢谢!
我正在构建一个ASP.NET 3.5(C#)应用程序,我计划使用成员资格和角色安全性.
我想在我的SQL Server 2008标准版上进行设置,而不是默认的快速设置.
我该怎么做?
这个问题的一个分拆/进化这个问题.(那个问题被标记为已经解决了,因为我对它提出了一个赏金并且它自动解决了,但它从未得到过真正的回答.)
摘要是这样的:我们有一个ASP.NET站点.有时候,当客户要求奇怪的网址时,我们会收到错误.根据客户端要求的资源,看起来html源中缺少4k块文本.
一个简单的例子......如果我们有一个看起来像这样的页面:
<a href="myValidLink.aspx">Here's some text</a>
a bunch more stuff
...(a large block of text)...
AND NOW MORE STUFF LATER
Run Code Online (Sandbox Code Playgroud)
客户可能会要求提供网址:"myValidLiORE%20STUFF%20LATER".
它就好像html源的一部分不在那里......而那个缺失的部分似乎正好是4KB(4096字节)长(或根据某些人,有时是1KB?).
不幸的是,我们无法按需复制此错误,但我们每天都会看到它多次来自客户端.
起初我们认为这是Webresource.axd的一个问题,因为我们碰巧在那里看到了很多......但现在我认为这主要是因为我们将类似的错误归为一类,并且当发生损坏时这些错误往往会发生在那个特定的地区.现在我正在研究更广泛的问题,我看到的地方我们得到了非常不同的错误,看起来它们是由同样的辍学问题造成的.
我们已经在IE 8中看到了很多,并且随着IE 8变得越来越流行,它变得越来越频繁.我们偶尔会看到它自称为IE 7的浏览器......如果IE 8进入"兼容模式",IE 8将会这样做.
我的理论,在这一点上(我试图找到一种测试方法)是Web服务器正确地发送字节流中的所有数据......并且浏览器IE 8有问题,并在某些条件下删除它的内存页(4k).
然而,我有点担心这个理论,因为显然有些人报告说这种"偶尔"使用IE 6或FF 3 ......这些往往是异常值,可能只是具有类似症状的不同问题,但如果这些浏览器真的是一样的东西,这会让我的理论脱离水面.不过,我现在还没有更好的主意.
我所拥有的另一个想法可能是服务器上相对较新的服务包导致向客户端提供的数据出现问题,偶尔会丢失4KB.这个理论的问题在于它没有解释IE8上错误的优势,以及其他客户端浏览器上的错误.
所以这些问题最终会得到答案:
我一直在看一些代码,看到我的同事正在使用"标记类"来控制程序逻辑(参见下面的设计示例).它似乎工作得很好,代码读起来非常好,但有一些东西闻起来......
namespace ConsoleApplication4983
{
public class MyClass
{
static void Main()
{
var c = new MyClass();
c.DoSomething(new Sequential());
c.DoSomething(new Random());
}
public void DoSomething(ProcessingMethod method)
{
if (method is Sequential)
{
// do something sequential
}
else if (method is Random)
{
// do something random
}
}
}
public class ProcessingMethod {}
public class Sequential : ProcessingMethod {}
public class Random : ProcessingMethod {}
}
Run Code Online (Sandbox Code Playgroud)
什么是达到同样效果的更好方法?枚举?属性?
假设我有以下基本if语句:
if (A ~= 0)
% do something like divide your favorite number by A
else
% do something like return NaN or infinity
end
Run Code Online (Sandbox Code Playgroud)
问题是A不是简单的数字而是矢量.如果A中没有元素为0,则Matlab返回true.我要找的是向量化的吗?对A中每个元素执行上述if语句的方法
实际上,我只想尽快做到这一点.
这出现在一个真实世界的情况,我想我会分享它,因为它可能会导致一些有趣的解决方案.本质上,算法需要区分两个列表,但是让我给出一个更严格的问题定义.
假设你有两个列表,L并且R每一个都含有一些潜在字母元素S.而且,这些列表具有它们按顺序出现的共同元素的属性:也就是说,if L[i] = R[i*]和L[j] = R[j*],然后i< jthen i*< j*.列表根本不需要任何共同元素,并且一个或两个可以是空的.[ 澄清:你可以假设没有重复的元素.]
问题是产生一种列表,这可以被看作是有序对新列表的"差异"的(x,y)地方x,距离L和y距离R,具有以下特性:
x出现在两个列表中,则会(x,x)显示在结果中.x出现在L但未出现R,则会(x,NULL)出现在结果中.y出现在R但未出现L,则会(NULL,y)出现在结果中.最后
L = (d)
R = (a,b,c)
Result = ((NULL,d), (a,NULL), (b,NULL), (c,NULL))
L = (a,b,c,d,e)
R …Run Code Online (Sandbox Code Playgroud)