Microsoft最近(12-29-2011)发布了一个更新,以解决.NET Framework中的几个严重安全漏洞.MS11-100引入的修复之一暂时缓解了涉及哈希表冲突的潜在DoS攻击.看来此修复程序会破坏包含大量POST数据的页面.在我们的例子中,在具有非常大的复选框列表的页面上.为什么会这样呢?
一些非官方消息来源似乎表明MS11-100对回发项目的限制为500.我找不到确认这一点的Microsoft源代码.我知道View State和其他框架功能会占用这个限制.是否有任何配置设置来控制此新限制?我们可以不使用复选框,但它对我们的特定情况很有效.我们也想应用补丁,因为它可以防止其他一些令人讨厌的事情.
该公告通过限制可以为单个HTTP POST请求提交的变量数来修复DOS攻击向量.默认限制为500,对于正常的Web应用程序来说应该足够了,但仍然足够低以抵消德国安全研究人员所描述的攻击.
编辑:带有限制示例的源代码(看起来是1,000,而不是500)创建标准MVC应用程序并将以下代码添加到主索引视图:
@using (Html.BeginForm())
{
<fieldset class="fields">
<p class="submit">
<input type="submit" value="Submit" />
</p>
@for (var i = 0; i < 1000; i++)
{
<div> @Html.CheckBox("cb" + i.ToString(), true) </div>
}
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
此代码在补丁之前有效.以后它不起作用.错误是:
[InvalidOperationException:由于对象的当前状态,操作无效.]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()+82 System.Web.HttpValueCollection.FillFromEncodedBytes(Byte [] bytes,Encoding encoding)+111
System.Web. HttpRequest.FillInFormCollection()+307
我正在尝试向预先存在的应用程序添加功能,我遇到了类似这样的MySQL视图:
SELECT
AVG(table_name.col1),
AVG(table_name.col2),
AVG(table_name.col3),
table_name.personID,
table_name.col4
FROM table_name
GROUP BY table_name.personID;
Run Code Online (Sandbox Code Playgroud)
好的,所以有一些聚合函数.您可以选择personID,因为您正在对其进行分组.但它也是选择一个不在聚合函数中的列,而不是GROUP BY子句的一部分.这怎么可能???它只是选择一个随机值,因为每个组的值绝对不是唯一的吗?
我来自哪里(MSSQL Server),这是一个错误.有人可以向我解释这种行为以及为什么它在MySQL中被允许?
是否可以将用户定义的对象存储在Android的SQLite数据库中?例如:我正在创建一个类,我想将该类对象存储在数据库中.可能吗?如果是,怎么办?在Blackberry平台上,我能够将对象直接存储在持久对象中.是否可以使用SQLite和Android执行此操作?
我已经看到了关于从资产提供WebView页面的问题的各种讨论,其中没有一个看起来是确定的.
我希望能够使用webview显示存储在项目资产中的html(和包含的css)文件.
我发现wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html")显示该文件没问题,但是demo_welcome.html中的链接,无论是本地(没有url前缀文件名)还是绝对 - 相同form for fed to loadUrl - 不起作用.他们在视图上显示"网页不可用"错误.
WebView wv = (WebView)this.findViewById(R.id.splashWebView);
wv.loadUrl("file:///android_asset/html_no_copy/test.html"); // Works
Run Code Online (Sandbox Code Playgroud)
要么
wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); // Works
Run Code Online (Sandbox Code Playgroud)
但是demo_welcome.html中的以下链接都不起作用:
<a href="test.html">CLICK HERE</a><p>
<a href="file:///android_asset/html_no_copy/test.html">OR HERE</a>
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过编写内容提供商来解决这个问题,但这看起来很极端.
我希望这可以从SDK 1.6(4)开始工作.
有没有人知道这是否可以用HTML完成,还是需要克隆一些代码来加载数据?
我的问题最好用一个例子说明.
假设我有枚举:
public enum ArrowDirection
{
North,
South,
East,
West
}
Run Code Online (Sandbox Code Playgroud)
我想将对应于每个方向的单位向量与该方向相关联.例如,我想要为North返回(0,1),在West上返回(-1,0)等等.我知道在Java中你可以在枚举中声明一个可以提供该功能的方法.
我目前的解决方案是使用一个静态方法 - 在定义枚举的类中 - 返回一个对应于传入的ArrowDirection的向量(该方法使用HashTable来完成查找,但这并不重要).这似乎......不洁净.
问题:
是否存在一种最佳实践解决方案,用于存储与.NET中的枚举相对应的附加信息?
不使用很多javascript/jquery是不错的做法?我们应该尽可能地避免它(为了获得良好的可访问性)吗?
什么时候可以使用JavaScript,何时不在网页设计和开发中?在什么情况下和在什么条件下?
更新:
我问有关公共网站的问题.
我对多线程有点熟悉,因为我已经读过它,但从未在实践中使用它.
我有一个项目使用第三方库,通过引发事件来共享输入设备的状态.问题是,编写库的方式这些事件是从不同的线程引发的.
我的应用程序不需要是多线程的,我遇到了很多经典的线程问题(UI控件抱怨从不同的线程进行交互,集合会被修改为一段代码迭代它,等等).
我只想将第三方库的事件返回给我的UI线程.具体我认为应该发生的是:
我的类接收事件,处理程序正在与UI不同的线程上运行.我想检测这种情况(比如使用InvokeRequired),然后执行BeginInvoke的等效操作以将控制权交还给UI线程.然后可以在类层次结构上发送正确的通知,并且只有一个线程触及我的所有数据.
问题是,接收这些输入事件的类不是从Control派生的,因此没有InvokeRequired或BeginInvoke.原因是我试图干净地分离UI和底层逻辑.该类仍然在UI线程上运行,它在类本身内部没有任何UI.
现在我通过破坏这种分离来解决问题.我传入一个引用控件,该控件将显示来自我的类并使用其 Invoke方法的数据.这似乎违背了分离它们的整个目的,因为现在底层类直接依赖于我的特定UI类.
也许有一种方法可以保存对运行构造函数的线程的引用,然后在Threading命名空间中会有一些执行Invoke命令的东西?
有没有解决的办法?我的方法完全错了吗?
看似随机,Android Studio安装的apk已损坏.它通常以lambdas为中心(但每次都是不同的).我正在使用Jack编译和所有内容的最新版本(最后列出).问题一直存在,直到我做了一个干净的构建(然后一切都很好).间歇性故障是一种新现象.Jack和Java 8功能暂时保持稳定.不幸的是,我无法确定在片状失败开始之前发生了什么变化.
示例代码:
private static final Ordering<Foo> ORDER_BY_FOO =
Ordering.natural().onResultOf(Foo::getId);
Run Code Online (Sandbox Code Playgroud)
实际问题分配(在Guava代码中):
ByFunctionOrdering(Function<F, ? extends T> function, Ordering<T> ordering) {
this.function = checkNotNull(function); // <-- Fails
[...]
class ByFunctionOrdering<F, T> extends Ordering<F> {
final Function<F, ? extends T> function;
Run Code Online (Sandbox Code Playgroud)
示例运行时异常:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mypackage, PID: 32222
java.lang.ExceptionInInitializerError
at com.mypackage.MyFragment.myOtherMethod(MyFragment.java)
at com.mypackage.MainActivity.myMethod(MainActivity.java:144)
at com.mypackage.MainActivity.onActivityResult(MainActivity.java:107)
at android.app.Activity.dispatchActivityResult(Activity.java:6932)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: …Run Code Online (Sandbox Code Playgroud)