这两天为了解决Service Unavailable 的问题,进行了程序调优总结有以下几点:
一、页面执行时间,这一步是非常关键的,能帮助你了解哪些页面没有达到性能要求。
二、用好VS.NET 2005的性能调优功能,此功能能将你程序中的运行状态进行非常有效的分析,能很方便的找到程序的问题所在,看出哪里运行次数最多,执行时间最长
三、数据库方面可以使用Sqlserver自带的事件探查器或Read80Trace
另外尽量少用反射,这东东太耗时间了,同样的功能用Repeater控件DataBind据耗的时间比asp风格式的输出慢几十ms
posted @
2006-12-09 17:26 四海 阅读(383) |
评论 (1) |
编辑 收藏
回头看看自己犯了不少错误正确的解决步骤应该是:
一、看看页面执行时间是否合理,有没有执行时间特别长的页面。确认程序是正确的
二、看看服务器资源是否够用,是否有非常耗资源的程序在服务器运行
基本解决这两个问题就能解决了
偶就是因为太自信,老觉得自己的程序没问题把重点放在了第二点上,导致走了不少弯路,谨记!
posted @
2006-12-08 17:04 四海 阅读(591) |
评论 (1) |
编辑 收藏
这年头想做的偏不让你做
不想做的却偏偏让你做
一切随缘????
缘为何物
万事有定数
是该随波逐流抑或奋起抗争?????
怒!!!
人生不如意十之八九
就让我把失败转换为前进的动力吧
人生掌握在自己手里
让那些鼠目寸光的人看看他们自己是多么的弱智
让他们后悔去吧
posted @
2006-12-06 18:24 四海 阅读(319) |
评论 (1) |
编辑 收藏
点此下载源文件
/*
MainApp.hpp
*/
#ifndef MAINAPP_HPP
#define MAINAPP_HPP
#include <GL/gl.h>
#include <SDL/SDL.h>
#define ImageWidth 64
#define ImageHeight 64
class MainApp
{
public:
MainApp();
~MainApp();
void loop();
void quit();
private:
void initGL();
void initTexture();
void makeImage();
void destroyGL();
void onKeyDown(const SDL_Event &event);
void draw();
bool running;
GLubyte Image[ImageWidth][ImageHeight][3];
};
#endif
/*
MainApp.cpp
*/
#include <GL/gl.h>
#include <SDL/SDL.h>
#include "MainApp.hpp"
MainApp::MainApp():running(true)
{
initGL();
}
MainApp::~MainApp()
{
destroyGL();
}
void MainApp::initGL()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_SetVideoMode(600,300,16,SDL_OPENGL);
glClearColor(0,0,0,0);
initTexture();
}
/* 创建纹理 */
void MainApp::makeImage(void)
{
int i, j, r,g,b;
for (i = 0; i < ImageWidth; i++)
{
for (j = 0; j < ImageHeight; j++)
{
r=(i*j)%255;
g=(4*i)%255;
b=(4*j)%255;
Image[i][j][0] = (GLubyte) r;
Image[i][j][1] = (GLubyte) g;
Image[i][j][2] = (GLubyte) b;
}
}
}
void MainApp::initTexture()
{
makeImage();
/* 定义纹理 */
glTexImage2D(GL_TEXTURE_2D, 0, 3, ImageWidth,
ImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
&Image[0][0][0]);
/* 控制滤波 */
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
/* 说明映射方式*/
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
/* 启动纹理映射 */
glEnable(GL_TEXTURE_2D);
}
void MainApp::destroyGL()
{
SDL_Quit();
}
void MainApp::loop()
{
SDL_Event event;
while(running)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_KEYDOWN:
onKeyDown(event);
break;
}
}
SDL_Delay(50);
draw();
}
}
void MainApp::quit()
{
running=false;
}
void MainApp::onKeyDown(const SDL_Event &event)
{
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
quit();
}
}
void MainApp::draw()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);
glColor3f(1,1,1);
glTexCoord2f(0,0);glVertex3f(-0.5,-0.5,-0.5);
glTexCoord2f(0,1);glVertex3f(-0.5,0.5,-0.5);
glTexCoord2f(1,1);glVertex3f(0.5,0.5,0.5);
glTexCoord2f(1,0);glVertex3f(0.5,-0.5,0.5);
glEnd();
SDL_GL_SwapBuffers();
}
int main(int argc,char* argv[])
{
MainApp app;
app.loop();
}
posted @
2006-10-17 18:42 四海 阅读(1389) |
评论 (0) |
编辑 收藏
http://www.cppblog.com/Files/giant35/Baihe.Tools.PatchCreator.rar
点此下载v0.01源程序点此下载v0.02源程序开发动机:
因web开发更新极为频繁,
且每次都不是整站更新而是修改了什么更新什么
每次挑选出需要更新的文件且按目录结构组织好颇费一翻事
未曾找到类似的工作
所以产生了开发此程序的动机
目标:
补丁打包机
实现人工干预+智能规则推导找出所有需要更新的文件
并能以多种形式发布(复制/FTP上传/打包……)
使用说明:
先选择要更新的文件再使用菜单“补丁”->"发布" 发布
有没有人使呢?
posted @
2006-10-17 16:46 四海 阅读(254) |
评论 (0) |
编辑 收藏
点击下载源文件
/*
坐标观察程序,
ESC:退出
F5:复位
LEFT/RIGHT:以绿色Y为轴心旋转
UP/DOWN:以红色X为轴心旋转
PAGEUP/PAGEDOWN:以蓝色z为轴心旋转
*/
#include <GL/gl.h>
#include <SDL/SDL.h>
bool running=true;
float x=0.0,y=0.0,z=0.0;
enum Target{modelview,projection};
Target target=modelview;
void initGL()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_DEFAULT_REPEAT_INTERVAL);
SDL_SetVideoMode(600,300,16,SDL_OPENGL);
}
void destroyGL()
{
SDL_Quit();
}
void drawCoordinate()
{
glBegin(GL_LINES);
glLineWidth(10.0f);
glColor3f(1,0,0);
glVertex3f(0,0,0);
glVertex3f(1,0,0);
glColor3f(0,1,0);
glVertex3f(0,0,0);
glVertex3f(0,1,0);
glColor3f(0,0,1);
glVertex3f(0,0,0);
glVertex3f(0,0,1);
glEnd();
}
void draw()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
if(target==modelview)
{
glMatrixMode(GL_MODELVIEW);
}
else
{
glMatrixMode(GL_PROJECTION);
}
glLoadIdentity();
glRotatef(x,1,0,0);
glRotatef(y,0,1,0);
glRotatef(z,0,0,1);
glMatrixMode(GL_MODELVIEW);
drawCoordinate();
SDL_GL_SwapBuffers();
}
void switchTarget()
{
if(((int)target+1)>((int)projection))
{
target=modelview;
}else
{
target=(Target)((int)target+1);
}
}
void reset()
{
x=0;
y=0;
z=0;
}
void quit()
{
running=false;
}
void onKeyDown(const SDL_Event& event)
{
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
quit();
break;
case SDLK_TAB:
switchTarget();
break;
case SDLK_F5:
reset();
break;
case SDLK_LEFT:
y+=1;
break;
case SDLK_RIGHT:
y-=1;
break;
case SDLK_UP:
x+=1;
break;
case SDLK_DOWN:
x-=1;
break;
case SDLK_PAGEUP:
z+=1;
break;
case SDLK_PAGEDOWN:
z-=1;
break;
}
}
void loop()
{
SDL_Event event;
while(running)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
quit();
break;
case SDL_KEYDOWN:
onKeyDown(event);
break;
}
}
draw();
SDL_Delay(50);
}
}
int main(int argc,char* argv[])
{
initGL();
loop();
destroyGL();
return 0;
}
posted @
2006-09-28 16:52 四海 阅读(1156) |
评论 (0) |
编辑 收藏
上一篇中我们绘制了一个彩色的三角型
这次我们让它动起来
#include <GL/gl.h>
#include <SDL/SDL.h>
bool running=true;
float y=0.0;
void initGL()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_SetVideoMode(600,300,16,SDL_OPENGL);
}
void destroyGL()
{
SDL_Quit();
}
void draw()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glRotatef(y,0,1,0);
glBegin(GL_TRIANGLES);
glColor3f(1,0,0);
glVertex3f(0,0,0);
glColor3f(0,1,0);
glVertex3f(1,0,0);
glColor3f(0,0,1);
glVertex3f(0,1,0);
glEnd();
SDL_GL_SwapBuffers();
}
void quit()
{
running=false;
}
void onKeyDown(const SDL_Event& event)
{
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
quit();
break;
case SDLK_LEFT:
y+=0.1;
break;
case SDLK_RIGHT:
y-=0.1;
break;
}
}
void loop()
{
SDL_Event event;
while(running)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
quit();
break;
case SDL_KEYDOWN:
onKeyDown(event);
break;
}
}
draw();
SDL_Delay(50);
}
}
int main(int argc,char* argv[])
{
initGL();
loop();
destroyGL();
return 0;
}
#include <GL/gl.h>
#include <SDL/SDL.h>
bool running=true;
float y=0.0;
void initGL()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_SetVideoMode(600,300,16,SDL_OPENGL);
}
void destroyGL()
{
SDL_Quit();
}
void draw()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glRotatef(y,0,1,0);
glBegin(GL_TRIANGLES);
glColor3f(1,0,0);
glVertex3f(0,0,0);
glColor3f(0,1,0);
glVertex3f(1,0,0);
glColor3f(0,0,1);
glVertex3f(0,1,0);
glEnd();
SDL_GL_SwapBuffers();
}
void quit()
{
running=false;
}
void onKeyDown(const SDL_Event& event)
{
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
quit();
break;
case SDLK_LEFT:
y+=0.1;
break;
case SDLK_RIGHT:
y-=0.1;
break;
}
}
void loop()
{
SDL_Event event;
while(running)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
quit();
break;
case SDL_KEYDOWN:
onKeyDown(event);
break;
}
}
draw();
SDL_Delay(50);
}
}
int main(int argc,char* argv[])
{
initGL();
loop();
destroyGL();
return 0;
}
posted @
2006-09-28 16:46 四海 阅读(532) |
评论 (0) |
编辑 收藏