我想以类似于CodeProject上讨论的方式包装Session变量.
public static class WebSession
{
private const string CurrentUserKey = "CurrentUser";
private static HttpSessionState Session
{
get { return HttpContext.Current.Session; }
}
public static bool Exists
{
get { return Session != null; }
}
public static User CurrentUser
{
get { return Session[CurrentUserKey] as User; }
set { Session[CurrentUserKey] = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:如果我必须CurrentUser在同一页面中多次访问,是否可以通过将其分配给本地变量而不是访问包装属性来提高性能?或者HttpSessionState确保每个请求只对对象进行一次反序列化,以便在同一个http请求中的后续调用不再需要花费多少钱?
谢谢你,亚伦
我有按键事件处理程序,我需要确定按下哪种键:修饰符与否?
它不在event.state中,因为这个字段只有在用其他东西按下修改器时才有效,但我需要这个用于单个键(即只需按下control或alt,......).
我在Windows服务中运行以下代码:
WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential("me", "12345", "evilcorp.com");
webClient.DownloadFile(downloadUrl, filePath);
Run Code Online (Sandbox Code Playgroud)
每次,我都会得到以下异常
{"The remote server returned an error: (401) Unauthorized."}
Run Code Online (Sandbox Code Playgroud)
具有以下内部异常:
{"The function requested is not supported"}
Run Code Online (Sandbox Code Playgroud)
我知道凭证是有效的,事实上,如果我在我的网络浏览器中下载urrl并输入我的凭据evilcorp.com\me,密码为12345,则下载正常.
但奇怪的是,如果我将我的凭证指定为me@evilcorp.com并且12345,则它似乎失败了.
有没有办法格式化凭据?
我创建了以下代码来验证一系列"元组"的唯一性:
struct MyTuple
{
public MyTuple(string a, string b, string c)
{
ValA = a; ValB = b; ValC = c;
}
private string ValA;
private string ValB;
private string ValC;
}
...
HashSet<MyTuple> tupleList = new HashSet<MyTuple>();
Run Code Online (Sandbox Code Playgroud)
如果我是正确的,我将不会得到两个具有相同值的元组,HashSet这要归功于我正在使用一个结构.如果没有实现类IEquatable或类似的东西我就不能有相同的行为(我没有太多挖掘如何做到这一点).
我想知道是否有一些关于我做什么的问题.性能方面,考虑到里面的字符串是引用类型,我不希望结构的使用成为问题.
编辑:我希望我的HashSet永远不会包含两个具有相同值的字符串的元组.换句话说,我希望字符串的行为类似于值类型.
我们假设我有商店,商店货架和货架上的产品.因此,为了获得商店货架上的产品列表,我将使用以下请求:
GET http://server/stores/123/shelves/456/products
Run Code Online (Sandbox Code Playgroud)
从这里,我如何获得个别产品?我应该使用:
GET http://server/products/789
Run Code Online (Sandbox Code Playgroud)
要么:
GET http://server/stores/123/shelves/456/products/789
Run Code Online (Sandbox Code Playgroud)
第一种方法更简洁,因为一旦获得产品列表,如果您只想查看特定产品的详细信息,则不关心它属于哪个商店.但是,第二种方法更符合逻辑,因为您正在查看特定商店中特定货架的产品.
同样,PUT/DELETE操作怎么样?
DELETE http://server/stores/123/shelves/456/products/789
Run Code Online (Sandbox Code Playgroud)
要么:
DELETE http://server/products/789
Run Code Online (Sandbox Code Playgroud)
为这样的树层次结构设计模式的正确方法是什么?
PS如果我误解了有关REST架构的一些内容,请提供有关如何使其更好的示例.有太多人喜欢说"REST不是CRUD"和"REST不是RPC",然后绝对没有提供良好RESTful设计的澄清或示例.
我想知道是否有人知道你是否可以在iPad上运行iPhone SDK.尝试浏览apple.com,但没有找到任何有用的东西......
我希望能够开发 - 从头到尾 - iPad上的iPhone应用程序,并想知道这是否可能......
我听说使用IN子句会影响性能,因为它没有正确使用索引.见下面的例子:
SELECT ID, Name, Address
FROM people
WHERE id IN (SELECT ParsedValue FROM UDF_ParseListToTable(@IDList))
Run Code Online (Sandbox Code Playgroud)
使用下面的表格获得这些结果会更好吗?
SELECT ID,Name,Address
FROM People as p
INNER JOIN UDF_ParseListToTable(@IDList) as ids
ON p.ID = ids.ParsedValue
Run Code Online (Sandbox Code Playgroud)
这取决于您使用的SQL Server版本吗?如果是这样哪些受影响?
我正在实现一个具有STL类接口的自定义容器.我必须提供一个常规迭代器和一个const迭代器.两个版本的迭代器的大多数代码都是相同的.我怎样才能避免这种重复?
例如,我的容器类是Foo,我正在实现FooIterator和FooConstIterator.两个迭代器都必须提供operator++()相同的方法.
我的问题类似于如何删除类似的const和非const成员函数之间的代码重复?但是那个问题的答案特定于const和非const方法,尤其是访问器.我没有看到这可能会如何推广到迭代器问题.
我应该FooIterator从FooConstIterator其他非const方法派生并扩展它吗?这要么导致虚拟方法或方法隐藏,这在这里似乎不合适.
也许FooIterator应该包含一个FooConstIterator.虽然这种方法确实减少了实现重复,但它似乎重新引入了许多样板方法定义.
是否有聪明的模板技术从单个定义生成两个迭代器?或许有一种方法 - 颤抖 - 使用预处理器来消除这些几乎相同的类.
我已经尝试查看我的本地STL实现,看看它是如何处理它的.有很多辅助类,我在设计中遇到了麻烦,但看起来功能很简单.
在以前的项目中,我的自定义容器是在标准STL容器之上构建的,所以我不必提供自己的迭代器.在这种情况下,这不是一个选项.
我如何下载远程图像(http协议,url在image_remote_url属性中)并通过Paperclip将其保存为S3的附件?
class Product < ActiveRecord::Base
require 'open-uri'
attr_accessor :image_remote_url
has_attached_file :photo,
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":class/:id/:style.:extension",
:bucket => "my_bucket",
:styles => {
:icon => "32x32#",
}
def fetch_image
# how should this method look ?
end
end
Run Code Online (Sandbox Code Playgroud)
"fetch_image"方法应该怎么样?