Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
制约查询速度的有两方面,一是找到,二是取出,分别对应的是扫描数据与IO吞吐,扫描数据的提升通过建立合适的索引解决,而提升IO可以考虑将大表进行分区,分到多个物理磁盘上,通过并行方式提升IO能力。
制约查询速度的有两方面,一是找到,二是取出,分别对应的是扫描数据与IO吞吐,扫描数据的提升通过建立合适的索引解决,而提升IO可以考虑将大表进行分区,分到多个物理磁盘上,通过并行方式提升IO能力。
网站访问速度由:WEB服务器、网站程序及数据库、服务器带宽及性能决定。
1,WEB服务器设置:
gzip压缩
1) 打开Internet信息服务(IIS)管理器,右击”网站”->”属性”,选择”服务”。在”HTTP压缩”框中选中”压缩应用程序文件”和”压缩静态文件”,按需要设置”临时目录”和”临时目录的最大限制”;
2) 在Internet信息服务(IIS)管理器,右击”Web服务扩展”->”增加一个新的Web服务扩展…”,在”新建Web服务扩展”框中输 入扩展名”HTTP Compression”,添加”要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目 录根据安装可能有所不同,选中”设置扩展状态为允许”;
3) 使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),找到Location =”/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,Location =”/LM/W3SVC/Filters/Compression/deflate”用于设置deflate压缩.设置的属性相同.在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等; HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数字越小压缩率越低,这两个属性值一般推荐设置为9, 具有最佳性价比.
4) 编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开”开始”->”管理工具”->”服务”,停止”IIS Admin Service”后,即可保存;
5) 最后,重新启动IIS。可以到http://www.port80software.com/tools/compresscheck.asp?url=nxgao.com验证结果。
gzip说明:
HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或 CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。
HTTP压缩工作原理
Web服务器处理HTTP压缩的工作原理如下:
1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中, 带有”Accept-Encoding: gzip, deflate”参数则表明支持gzip和deflate两种压缩算法.
2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
静态文件和动态文件后缀启动要所都需要在MetaBase.xml中设置.
静态文件需要设置: HcFileExtensions Metabase Property (单击跳转到MSDN说明)
动态文件需要设置: HcScriptFileExtensions Metabase Property (单击跳转到MSDN说明)
3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
6.如果请求文件是ASPX等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
2,网站程序及数据库:
1)文件压缩,js,css等。
2)代码调优
3)数据库sql优化
3,服务器带宽及性能
主要是用organid字段 ,在数据表中表示好树形结构。
1,数据形式:
category organid
保健家居用品类 01
内衣 0101
其他 0102
保健器械类 02
丰胸美乳 0201
减肥瘦身 0202
身体保健 0203
其他 0204
保健食品类 03
品牌 0301
贝力美 030101
高颗丽挺 030102
零点1号 030103
零点2号 030104
2,取数据:
SELECT STUFF(a.Category,1,0,REPLICATE(‘-‘,LEN(a.OrganID)-2))
FROM mdCategory a(NOLOCK)
ORDER BY a.OrganID
效果:
保健家居用品类
–内衣
–其他
保健器械类
–丰胸美乳
–减肥瘦身
–身体保健
–其他
保健食品类
–品牌
—-贝力美
—-高颗丽挺
1,tasklist /m 将显示每个任务加载的所有的DLL模块
2, tasklist /svc 显示每个进程中活动服务的列表
3,强制结束进程:TASKKILL /F /IM 进程名 taskkill /pid PID号
更强:ntsd -c q -p PID 利用NTSD命令,除了System、SMSS.EXE和CSRSS.EXE等极少核心进程不能杀外,其它进程都可以强行结束。
4,文件比较:fc 可以在安装软件前备份一次注册表(存储为REG文件,如1.reg),安装后再导出注册表文件(2.reg)然后再在Windows XP的命令提示行下执行下列命令:D:\>fc /u 1.reg 2.reg>changes.txt
1,IE自带的打印方法繁琐,利用控件,
目前有:QWPrint、Lodop,JaTools。
Lodop:功能最强大,可拖曳式布局打印界面,免费版直接打印时带有版权信息。
JaToos:功能一般,不过价格比较贵一些。
QWPrint:功能简单一些,不过是完全免费,封装一下也能解决目前的打印问题。
2,QWPrint打印的是当前页面,若想打印指定内容,需要进行封装一下,思路:在指定的内容传到一新窗口中打印,然后关闭窗口。
方法:
//vinfo:指定要打印的元素名称,model:默认为预览,为1时为直接打印
function OutTo(vinfo,model){
var content = document.getElementById(vinfo);
if ( content == undefined )
{
alert(‘请指定打印的内容!’);
return;
}
var wprint = window.open();
wprint.moveTo(-500,-500); //隐藏窗口
//指定打印内容
wprint.document.writeln(content.innerHTML);
wprint.document.body.style.cssText=”margin:0px;”;
//打印控件
wprint.document.writeln(“
解决方法:在<head>内加入:? <base target=”_self”/> 此为链接指定默认的打开方式,当不显示指定时即用此默认。
<base> 标签为页面上的所有链接规定默认地址或默认目标,可应用于包括 <a>、<img>、<link>、<form> 标签中的 URL。
注:利用<base href=”http://enjoyasp.net”/>可为页面所有img指定位置,这样对于图片与页面分离,存放到另一图片服务器来说,很有 利,可通过头文件的控制输出<base href=”http://enjoyasp.net”/>来控制页面所有图片的链接来源,方便进行链接的更改。
一个新的SQL Server 2005安装总是包括四个数据库:master、model、tempdb和msdb。还包含第五个“隐藏的”数据库Resource
1,model 数据库是 Microsoft SQL Server 创建其他数据库(包括 tempdb 数据库和用户数据库)时使用的模板。创建数据库时,model 数据库的全部内容(包括数据库选项)都会被复制到新数据库中。
2,tempdb 系统数据库是连接到 SQL Server 实例的所有用户都可用的全局资源,它保存所有临时表和临时存储过程。
3,master:账号、服务器信息,在 SQL Server 2005 中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中
4,Resource:Resource数据库的物理文件名为 Mssqlsystemresource.mdf,默认情况下,此文件位于 x:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Mssqlsystemresource.mdf。
SQL Server 系统对象(例如 sys.objects)在物理上持续存在于 Resource 数据库中,但在逻辑上,它们出现在每个数据库的 sys 架构中。Resource 数据库不包含用户数据或用户元数据。
SQL Server 不能备份 Resource 数据库。Resource 数据库依赖于 master 数据库的位置。如果移动了 master 数据库,则必须也将 Resource 数据库移动到相同的位置。
5,msdb,包括计划信息、备份与还原历史记录信息、邮件信息
backupmediafamily --备份文件地址
backupset --备份操作历史
restorefile --还原文件地址 --
restorehistory --还原操作历史
--备份详细
SELECT b.database_name,b.backup_start_date,b.backup_finish_date,b2.physical_device_name
FROM backupset b
JOIN backupmediafamily b2 ON b.media_set_id = b2.media_set_id
ORDER BY b.backup_start_date DESC
sysjobs --job
sysjobhistory --job执行历史
SELECT * FROM sysjobs
SELECT * FROM sysjobschedules
SELECT * FROM sysjobsteps
--job详细
SELECT a.job_id,a.name,s.next_run_date, s.next_run_time,
s2.step_name,s2.command
FROM sysjobs a
JOIN sysjobschedules s ON a.job_id = s.job_id
JOIN sysjobsteps s2 ON a.job_id = s2.job_id
--job状态
--取出在执行的job
exec msdb.dbo.sp_help_job @Category_Name = N'REPL-Merge',@execution_status = 1
execution_status:
1 正在执行。
2 正在等待线程。
3 在两次重试之间。
4 空闲。
5 挂起。
7 正在执行完成操作
--不过,若想将存储过程执行的结果放到一临时表中,上述存储过程将报嵌套错误,此时,应用master.dbo.xp_sqlagent_enum_jobs
exec master.dbo.xp_sqlagent_enum_jobs 1,hello
/*p_sqlagent_enum_jobs <is sysadmin (0 or 1)>,
<job owner name>
[, <job id>]
The first parameter identifies whether you want to return information about all jobs on the server,
or just jobs owned by a particular job owner. If you specify "0" for this first parameter,
it means you want to return job information for a particular job owner. If you specify a "1,"
it means you want information for all jobs. The second parameter identifies the job owner.
This parameter is required on all calls to this XP but is only used when you specify "0" for the
first parameter. The third and last parameter only needs to be provided if you want to return
information about a particular job_id.
*/
参考:http://www.databasejournal.com/features/mssql/article.php/10894_3491201_2/Detecting-The-State-of-a-SQL-Server-Agent-Job.htm
--开关job
msdb.dbo.sp_stop_job @job_id = 'adfsdfs-sdfsdf'
msdb.dbo.sp_start_job @job_id ='adfsdfs-sdfsdf'
sysmail_mailitems --邮件明细
在Windows 的TEMP 目录下把Network Services(2003用)加到目录安全性下,注意:除了读取和运行权还不够,要加修改和写入的权限,否则还是会出”拒绝访问”的错误.
DECLARE @TempTable table(UserID int , UserName nvarchar(50));
insert into @TempTable (UserID,UserName) values (1,'a')
insert into @TempTable (UserID,UserName) values (1,'b')
insert into @TempTable (UserID,UserName) values (1,'c')
insert into @TempTable (UserID,UserName) values (2,'d')
insert into @TempTable (UserID,UserName) values (2,'e')
insert into @TempTable (UserID,UserName) values (2,'f')
--以XML节点式一行存数据,节点名即是列名
select UserID,UserName from @TempTable FOR XML PATH
--PATH中的内容指定根结点名称,若无,则默认为root
select UserID,UserName from @TempTable FOR XML PATH('lzy')
--指定顶级根结点名称
select UserID,UserName from @TempTable FOR XML PATH('lzy'), root ('Root')
--若结果集中无列名,那么节点名也就没有,数据就显示到了一行
select convert(varchar(50),UserName) +','? from @TempTable s WHERE s.UserID = 1
--stuff用来去掉多余的逗号
SELECT DISTINCT t.UserID,
STUFF((select ',' + convert(varchar(50),UserName)? from @TempTable s WHERE s.UserID = t.UserID FOR XML PATH('')),1,1,'')
FROM @TempTable t
1,内嵌样式 > 内部样式表 > 外联样式表,即:当样式相同时,以最近的为主。
2,id选择器的权重是大于类选择器的权重。即:#mystyle 大于.mystyle
任务管理器,查看FTP的运行账号如xlight为System,则FTP的权限由此运行账号赋予。
对于在FTP上开的账号权限,若运行账号system没有此权限,则FTP账号也运行不了
1,C盘windows保留user权限,以使应用程序池的用户network service发挥作用,
删除除C盘外所有的用户权限只给于administrators、system、createowner用户的完全控制权限,
2,www目录分别给予账号权限,匿名访问用户属于Guest组
3,对于IIS网站来说,需要两个账号,一个是匿名访问权限访问页面这些,别一个是执行asp.net的权限即应用程序池标识,只要这两个账号开起来就可保证运行。
匿名账号负责静态页面、asp等
应用程序池标识负责aspx
http://hi.baidu.com/xinsikao/blog/item/ab37960aca60ba35b0351d1e.html
操作系统需要使用一些资源,这些资源是需要有权限的,它内定了一些组及账号来做这些事
组:
1,Administrators组:管理配置计算机
2,powerusers的权限仅次于administrators组的限制,这个组的成员可以管理共享资源,可以管理其他组的成员,该组的成员修改计算机的 大部分设置。但是不能管理administrtors组的成员,不能更改ip,不能格式化硬盘
3,Users 组 “Users” 组是最安全的组,因为分配给该组的默认权限不允许成员修改操作系统的设置或其他用户资料。用户不能修改系统注册表设置,操作系统文件或程序文件。
4,guest,guest账号同样 也是Windows 2000/XP系统内建的用户,和users(受限用户)组中的账号拥有同样的访问能力,但是受到的限制更多。
5,authenticated users:包括在计算机上或活动目录中的所有通过身份验证的账户。用该组代替everyone组可以防止匿名访问。
authenticated users + guest + 匿名账号 = evenyone
6,creator owner:包括创建资源的账户。
Interactive(交互)用户组:一般是直接登录到计算机进行操作的用户,比如通过远程桌面,终端进行连接
账号:
1,System权限是比Administrator权限还高的系统最高权限,负责用户验证的Winlogon、Lsass等进程都是以SYSTEM身份运行的
2,Network Service ,专用于为应用程序提供访问网络的足够权限,IIS应用程序池的默认用户是内置的Network Service账号。Network Service账号对本地计算机和网络资源只拥有最小访问权限。
《注:NetworkService属于Users组,而应用程序池用的账号是NetWorkSerice,既:网站的权限既是User组的权限》
3,Local Service账号 内置的Local Service账号无法像Network Service账号那样访问网络资源,但是具有与Network Service账号类似的本地资源访问权限
4,Local System 账号是内置的系统账号,所有系统进程都在 Local System 的安全环境中运行,Local System 账号是用于启动服务的默认账号,它继承了服务控制管理器的安全环境,Local System 账号运行的进程不能访问网络资源,如网络共享。
1)CRUD操作:
using (ISession session = NHibernateHelper.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.Update(product); //session.Save(product);session.Delete(product); 或者_session.SaveOrUpdate(c);
transaction.Commit();
}
在NHibernate中提供了三种查询方式给我们选择:NHibernate查询语言(HQL,NHibernate Query Language)、条件查询(Criteria API,Criteria Query)、(根据示例查询(QBE,Query By Example)是条件查询的一种特殊情况)、原生SQL(Literal SQL,T-SQL、PL/SQL)。
2)简单查询–条件查询Criteria Query
3)SQL语句–HQL查询
select 子句 :
return _session.CreateQuery("select c.Firstname, count(c.Firstname) from Customer c group by c.Firstname").List<object[]>();
order by子句:return _session.CreateQuery("from Customer c order by c.Firstname asc,c.Lastname desc").List<Customer>();
return _session.CreateQuery("select c.Firstname, count(c.Firstname) from Customer c group by c.Firstname").List<object[]>();
return _session.CreateQuery("from Customer c where c.Firstname=:fn").SetString("fn", firstname).List<Customer>();
已将hbm.xml改成嵌入的资源还是不行,后来发现:
<hibernate-mapping xmlns=”urn:nhibernate-mapping-2.0” assembly=”MyLib” namespace=”MyLib”>
更改为<hibernate-mapping xmlns=”urn:nhibernate-mapping-2.2” assembly=”MyLib” namespace=”MyLib”> 解决!
为结果集构造行号,实际上是为结果集指定顺序,要排序的话就要知道排序规则:Order By
如:SELECT ROW_NUMBER() OVER(ORDER BY id DESC)AS rownum,
departname FROM mdDepartment md
应用:mysql的limit即可使用:
SELECT * FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY id DESC)AS rownum,departname
FROM mdDepartment md
) AS a
WHERE a.rownum>=3 AND a.rownum<=5 --返回3到5行
CTE: Common Table Express 指定临时命名的结果集
1, 当sql语句比较大时,可以用CTE将小结果集拆分,以便阅读
WITH mycre(id,name) AS ( select id ,name from mddepartment )
SELECT * FROM frmuser JOIN mycre ON frmuser.DepartmentID= mycre.id
注:1)CTE 之后必须直接使用,间隔sql语句就会失效
2)在用with时并不会执行查询,只是凑sql语句,只有当with后面的select *引用cte时才会执行
2,递归使用,依次引用自身。递归 CTE 定义至少必须包含两个 CTE 查询定义(一个定位点成员和一个递归成员)
WITH departments(id,Departname,depth) as(
SELECT id,Departname,1 depth FROM mdDepartment md
WHERE md.ParentID = 2 --找到广告商务部的直接子部门 定位点成员,depth指定深度
UNION ALL
SELECT md.id,md.Departname,depth+1 FROM mdDepartment md --找到子部门的子部门 递归成员
JOIN departments d ON md.ParentID = d.id
)
SELECT * FROM departments
注:1)定位点成员之间必须使用UNION ALL、UNION、INTERSECT、EXCEPT集合运算符,最后一个定位点成员与递归成员之间必须使用UNION ALL,递归成员之间也必须使用UNION ALL连接,定位点成员和递归成员中的字段数量和类型必须完全一致,递归成员的FROM子句只能引用一次CTE对象。
2)递归成员中不允许出现下列项
SELECT DISTINCT
GROUP BY
HAVING
标量聚合
TOP
LEFT、RIGHT、OUTER JOIN(允许出现 INNER JOIN)
子查询
解决方法:不使用土豆的转换器,找到下载的源文件*.f4v, 直接更改后缀即可,如:flv,mp4
解析步骤:
1,得到中文域名的转码
2,将其添加到IIS的主机头即可。
注:1)因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域名解析,所有中文域名的解析都需要转成punycode码,然后由DNS解析punycode码
2)目前,IE6.0以下不支持,以IE7.0、IE8.0、Firefox, Opera, Google Chrome, Safari等为代表的全球主流浏览器,已经实现对以“.CN”、“.中国”、“.公司”、“.网络”为结尾的中文域名的直接支持。