我正在学习ASP.NET MVC的框架,从像一些文章这样,似乎MvcHandler只执行()来实现,还没有实现异步API.实际上,我认为Controller也没有异步API.
那么,ASP.NET MVC不支持异步编程吗?如果网页需要I/O操作,这可能是可扩展性的一大障碍.
在Visual Studio 2008中创建新的ASP.NET MVC项目时,默认情况下会有一个Default.aspx页面.它有一条线
在其Page_Load函数中,它只是重定向到"/"以完成路由过程.
public void Page_Load(object sender, System.EventArgs e)
{
HttpContext.Current.RewritePath(Request.ApplicationPath);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
}
Run Code Online (Sandbox Code Playgroud)
我试图删除Default.aspx,结果是仍然可以访问默认URI" http:// localhost:2574 / ".那么,为什么还要有这样的Default.aspx呢?
我有一个页面的div元素由JavaScript对齐.JavaScript只检查一组div元素以找到max offsetWidth,然后将所有div元素的宽度设置为max offsetWidth.它在大多数浏览器和语言环境中都很完美,但在Mac上的Firefox中法语 - 法语失败了.在这种情况下,div的内容包装.
<div id="divFoo">
Heure de début :
</div>
Run Code Online (Sandbox Code Playgroud)
对于上面的HTML,下面的代码报告"79".
javascript:alert(document.getElementById('divFoo').offsetWidth);
Run Code Online (Sandbox Code Playgroud)
但在代码报告"79.1333px"下面.
javascript:alert(window.getComputedStyle(document.getElementById('divFoo'),null).width))
Run Code Online (Sandbox Code Playgroud)
79.1333和79之间的差距使得不正确的宽度设置为内联样式.
我以前认为offsetWidth和width应该总是整数.有没有办法让offsetWidth正确圆?
使用GWT,我们可以用Java编写代码并将其转换为JavaScript代码.使用Script#,我们可以用C#编写代码并将其转换为JavaScript代码.听起来GWT和Script#将使网络开发人员免受痛苦的痛苦.那么,为什么这些工具没有占主导地位?为什么还有人专门写javascript代码?
我正在获得一些基本的知识电子邮件协议.似乎IMAP比POP3更强大.那么,为什么POP3协议存活下来?它仍然受到GMail等流行电子邮件服务的支持?
谢谢.
我需要做一个关于数据库的设计决策.要求是一个数据库表具有名为id的AUTO_INCREMENT PRIMARY KEY字段.默认情况下,每行显示给用户(在Web中)按ID排序.例如,如果表中有4条记录.UI将按0,1,2,3的顺序显示行.
现在,要求用户可以在UI中拖放行来改变顺序.说,用户拖动ROM 3和befow 0,所以,显示序列变为是砸3,0,1,2.该序列应该持久存储在数据库中.
我想知道如何设计数据库表来使其持久和可扩展.我的第一个想法是每行都有一个" 序列 "字段,表示显示顺序.默认情况下,该值应与id相同.从数据库中选择要显示的数据时,行按顺序而不是id按升序排序.
如果更改了序列,则会将其更新为新值.结果是它可能涉及其他行的很多变化.以上为例,最初表格如下:
|id | sequence |
|0 | 0 |
|1 | 1 |
|2 | 2 |
|3 | 3 |
Run Code Online (Sandbox Code Playgroud)
现在,在将id为3的拖动行放到第一个之后.其序列更新为0.同时,还应更新ID为0,1,2的行.
|id | sequence |
|0 | 1 |
|1 | 2 |
|2 | 3 |
|3 | 0 |
Run Code Online (Sandbox Code Playgroud)
我担心这种方法会使重新序列成本耗费大量资源而且不具备可扩展性.所以,我想可以通过将id乘以K(比如10)来对序列进行假设.这留下了用于插入的序列值之间的间隙.但是,如果将K + 1行移动到此间隙,则间隙仍然会消耗.
|id …Run Code Online (Sandbox Code Playgroud) 我正在阅读一篇关于Twitter最近发布的Gizzard分片框架的文章(http://engineering.twitter.com/2010/04/introducing-gizzard-framework-for.html).它提到所有写操作必须是幂等的,以确保高可靠性.
根据维基百科的说法,"幂等操作是可以多次应用而不改变结果的操作." 但是,恕我直言,在Gizzard案例中,幂等写操作应该是顺序无关紧要的操作.
现在,我的问题是:如何使写入操作具有幂等性?
我唯一可以想象的是每个写入都附加一个版本号.例如,在博客系统中,每个博客必须具有$ blog_id和$ content.在应用程序级别,我们总是编写像这样写的博客内容($ blog_id,$ content,$ version).在$版本被确定为在应用程序级别唯一的.所以,如果一个应用程序首次尝试设置一个博客在"Hello world"和第二想的它是"再见",然后写是幂等.我们有两个写操作:
write($blog_id, "Hello world", 1);
write($blog_id, "Goodbye", 2);
Run Code Online (Sandbox Code Playgroud)
这两个操作应该改变DB中的两个不同记录.因此,无论执行这两个操作的次数和次序,结果都是相同的.
这只是我的理解.如果我错了,请纠正我.
如何设计大型标签系统的数据存储(如digg或美味)?
已经讨论过它,但它是关于集中式数据库的.由于数据应该增长,我们需要很快或稍后将数据分区为多个分片.因此,问题变成:如何为分区标记系统设计数据存储?
标记系统基本上有3个表:
Item (item_id, item_content)
Tag (tag_id, tag_title)
TagMapping(map_id, tag_id, item_id)
Run Code Online (Sandbox Code Playgroud)
如果表存储在一个数据库实例中,那么找到给定标记的所有项并找到给定项的所有标记都可以.如果我们需要将数据分区为多个数据库实例,那就不那么容易了.
对于表项,我们可以使用其键item_id对其内容进行分区.对于表Tag,我们可以使用其key_id对其内容进行分区.例如,我们希望将表Tag分区为K个数据库.我们可以简单地选择数字(tag_id%K)数据库来存储给定的标签.
但是,如何分区表TagMapping?
该TagMapping表代表了许多一对多的关系.我只能想象有重复.也就是说,TagMappping的相同内容有两个副本.一个用tag_id分区,另一个用item_id分区.在为给定项找到标签的场景中,我们使用带有tag_id的分区.如果要查找给定标记的项目,我们使用带有item_id的分区.
结果,存在数据冗余.并且,应用程序级别应该保持所有表的一致性.看起来很难.
有没有更好的解决方案来解决这个多对多的分区问题?
我知道PHP仍然是世界上最流行的Web编程语言.这个问题只是想提出一些关于PHP的问题.
PHP自然会受到C10K问题的束缚.由于PHP(通常在Apache中运行)不能是事件驱动的或异步的,因此每个HTTP请求将占用至少一个线程或进程.这使得它更具可扩展性.
目前,许多具有高性能和可扩展性的网站(如Facebook和Yahoo!)仍然依赖于前端服务器中的PHP.我想这是遗留原因造成的.是否有可能用更适合C10K的语言替换PHP?
HTTP协议中的Keep-Alive连接功能旨在减少到Web服务器的TCP连接命中.它应该能够提高Web服务器性能.但是,我发现一些Web服务器故意从服务器端禁用KeepAlive功能.
根据我的理解,一些反向代理,即HAProxy,禁用HTTP keep-alive以减少内存使用,这在某些情况下比CPU使用更为关键.
是否还有其他原因导致Web服务器禁用Keep-Alive?
asp.net-mvc ×2
database ×2
javascript ×2
performance ×2
scalability ×2
asp.net ×1
asynchronous ×1
c10k ×1
dom ×1
email ×1
firefox ×1
gwt ×1
http ×1
idempotent ×1
imap ×1
keep-alive ×1
offsetwidth ×1
partitioning ×1
php ×1
pop3 ×1
protocols ×1
routing ×1
script# ×1
sequence ×1
sorting ×1
tagging ×1
tags ×1
webserver ×1
width ×1