1.你在写复杂web界面的时候遇到的最大困难是哪些方面
我答:对齐问题.
2..NET里面的datagrid翻页大多是先把数据读全部取到dataset里面,但是遇到10W条数据以上,这样的翻页事件开销会很大,页面执行起来反映很慢,你有什么好方法解决?
3.权限控制方面问题:
在同一个页面编辑数据的时候有的用户能有权限有的不能编辑.
我答:保存登陆session变量判断.
他说:用权限的组和角色来做.
因为过了几天了,基本题目意思就是这样,尤其对于3题大家有源程序的希望借来参考,谢谢
[email protected]我的邮箱....
我答:对齐问题.
2..NET里面的datagrid翻页大多是先把数据读全部取到dataset里面,但是遇到10W条数据以上,这样的翻页事件开销会很大,页面执行起来反映很慢,你有什么好方法解决?
3.权限控制方面问题:
在同一个页面编辑数据的时候有的用户能有权限有的不能编辑.
我答:保存登陆session变量判断.
他说:用权限的组和角色来做.
因为过了几天了,基本题目意思就是这样,尤其对于3题大家有源程序的希望借来参考,谢谢
[email protected]我的邮箱....
这是基于角色的身份验证的 http://www.cnblogs.com/gwazy/archive/2005/05/18/158242.html
http://www.cnblogs.com/gwazy/archive/2005/05/19/158993.htmlhttp://www.cnblogs.com/gwazy/archive/2005/06/02/166497.html
http://blog.csdn.net/goody9807/archive/2004/12/03/203670.aspx
不过第三个问题 我觉得2种答案都可以
如果整个项目就2个权限级别 那就用SESSION 或者COOKIE 就可以
如果是复杂的权限 才用基于角色的身份验证
DataSet
如果更复杂的话就用分组与角色来区分你在写复杂web界面的时候遇到的最大困难是哪些方面
没有好的平面构思
这些都是很基本的却不得不考虑的问题。
答一下第二题:我用存储过程分页,一次只传送一页的数据,大大减少了网络传送量。百万级数据都没问题,更别说10W.
答一下第二题:我用存储过程分页,一次只传送一页的数据,大大减少了网络传送量。百万级数据都没问题,更别说10W.
每次只取十万条吗?可是网络传输也慢呀,十万条应该要花费很多时间。还是你用的是别的什么方法?如果是能给我看看吗?谢谢。
ASP.NET Portal Starter Kit程序!!它是一个很经典的程序。。你一定会喜欢它的
我们角色也是组- 权限..首先是读取组-然后权限.-保存Session
有必要对10w笔资料分页么?
给他控制查询条件,top 100 :)
不过都是现实在要用的的。第二个在稍微复杂一点的系统中都要用到组和角色就像NT/2K中 域的设置一样。
第一个是考察你的实践经验的,不同的答案可以反映出你的实践范围,不谈,最后一个是考察项目经验的,谈论很多,也不谈.
就说说第二个.
要回答这个问题,仅仅说怎么写存储过程,怎么一次返回多少条是毫无意义的(有谁会笨到拿着几十、几百甚至几千万的数据放到网上传呢?),回答这个问题需要先明确数据库背景,毕竟对查询来说,真正对其效率影响最大的是数据库的设计和查询的算法设计,而不是什么数据怎么传。第二个问题可以说是考究你实际水平的问题。但是,我的疑惑是,招聘.net程序员需要对这个问题做如此深究吗?又不是招DBA。所以,估计楼上的答案应该可以让考官满意了。(注:但是所谓top 100的说法需要数据库前提的,这个好像不是SQL 99规范)
贴上来先,还有个地方搞不懂,希望达人给解释下
Figure 2 示范了一个用 Northwind 数据库中 Orders 表通过存储过程分页的例子。Figure 2 Paging Through the Orders Table
CREATE PROCEDURE northwind_OrdersPaged
(
@PageIndex int,
@PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @RowsToReturn int-- First set the rowcount --这段有什么作用?想不通??
SET @RowsToReturn = @PageSize * (@PageIndex + 1)
SET ROWCOUNT @RowsToReturn-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1-- Create a temp table to store the select results
CREATE TABLE #PageIndex
(
IndexId int IDENTITY (1, 1) NOT NULL,
OrderID int
)-- Insert into the temp table
INSERT INTO #PageIndex (OrderID)
SELECT
OrderID
FROM
Orders
ORDER BY
OrderID DESC-- Return total count
SELECT COUNT(OrderID) FROM Orders-- Return paged results
SELECT
O.*
FROM
Orders O,
#PageIndex PageIndex
WHERE
O.OrderID = PageIndex.OrderID AND
PageIndex.IndexID > @PageLowerBound AND
PageIndex.IndexID < @PageUpperBound
ORDER BY
PageIndex.IndexIDEND
我们角色也是组- 权限..首先是读取组-然后权限.-保存Session
------------
好好看一下asp.net的角色,如果只停留在asp时代,还是放弃学.net吧
其实,复杂页面最大的困难并非如何画出此界面,而是如何让此界面清晰有条理.我们做页面,并非仅显示数据,而是要准确/清晰地显示数据,想想看,如果用户要在此页面中查找一个数据,却杂乱无章,难以查看,你说用户会满意吗?2.NET里面的datagrid翻页大多是先把数据读全部取到dataset里面,但是遇到10W条数据以上,这样的翻页事件开销会很大,页面执行起来反映很慢,你有什么好方法解决?
在数据量大的时候,有两个解决办法
1.使用存储过程.并且,并非因为存储过程比较快的原因.由于在数据库内部的存储过程,能够实现一些特殊的功能,比如说,可以直接根据当前的排序结果,仅仅取需要的几条数据,如此,无论数据是多少,它仅仅取需要的几条.
2.在实际的操作中,取出的数据,并非你有10万条,它就会把10万条全部取出来,而是受限于服务器的缓存,其实一次一般仅取1000条左右的记录,无论你数据多少,它仅会一次取这么多出来.所以,配合分页控件,再配合.NET提供的加载N条数据的方法,数据量大的情况下,不见得就会慢.
据我测试,真正慢的,是在取数据总共多少条这个步骤上.此操作在数据少时,没有影响,但在百万条记录以上时,求取数据总数,耗时就会大量增加.所以,大数据量条件下,即不应再显示"共几条/当前第几条"这样的信息.3.权限控制方面问题:
从面向对象的角度讲,如果一个程序中,没有应用角色及角色组的话,那么这个程序是不合格的.一般来说,权限是由权限及流程角色组合而来的,如果仅有权限而没有角色,那么这个控制不灵活;如果仅有角色没有权限,那么这个控制不细致.
当然,用SESSION肯定是要的,但这个SESSION,应当只记录当前用户的个人信息,比如他的用户名.在需要判断的时候,根据他的用户名(唯一),至数据库中去取他的权限,或在类中编写权限/角色,根据此用户的用户号及当前模块号,计算当前用户是否对当前页面有操作权限.不过,如果把用户的权限也取出来放在SESSION中的话,这种做法一般仅在很小的网站中使用,稍大一点的系统,基本不允许这么做,而且也做不到.
给大家说的这么详细大家心底里感谢!无私的共享知识
这么基础的问题也拿出来问?好笑..上.NET版块看看吧.这些问题都老的掉渣了..----------
为什么你不回答看看?不晓得这几颗星是怎么得来的?
第2题:我觉得第2题的正解应该是用Cache将数据集缓存起来,毕竟现在哪台电脑没有512MB以上的内存?然后将DataSet分批量绑定,这样速度将是非常快~~其实数据在数据库的搜索时间并不是很长,主要的时间都花在DataGrid的绑定上了,用小批量的数据来绑定,速度上要快得多
第3题:我是用权限表,就是将用户的权限存在表上,进到不同的页面就读不同的数据行来判定用户的权限,不过我一般是将用户名保存到Cookie上,不喜欢Session,容易丢数据。深圳富士康我去过,感觉还是不错的,不过由于工资不太高,试用期5K左右,而且大公司晋升比较难,我也不太愿意放弃现在这个位子,有点可惜了
不过现在内存不贵,哈哈
对控件进行分批邦定吧
一次多少条由你定,这样会快很多
再者就是及时的clear dataset的东西
。