千赢娱乐手机登录_ qy8com千赢手机版_千赢网页手机版
做最好的网站

千赢娱乐手机登录

当前位置:千赢娱乐手机登录 > 千赢娱乐手机登录 > Tomcat性能优化,二进制文件概述

Tomcat性能优化,二进制文件概述

来源:http://www.modeLspro.net 作者:千赢娱乐手机登录 时间:2019-11-30 08:36

CHECKER1程序将客户区划分成25个矩形,构成一个5*5的数组。如果在其中一个矩形内单击鼠标,就用X形填充该矩形。再次单击,则X形消失。

首先当然得安装APR,过程可以参考:http://www.cnblogs.com/hackyo/p/6792349.html

注意:如果使用nginx负载均衡的话,请关闭nginx或tomcat其中一个的gzip功能,否则报错
tomcat关闭gzip去掉配置中的下面三行即可。

compression="on" compressionMinSize="1024"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"


//在tomcat/bin/catalina.sh中加入,如果是windows系统将export改为set并去掉后面值的双引号
export JAVA_OPTS="-server -Xms1000M -Xmx1000M -Xss512k -XX: AggressiveOpts -XX: UseBiasedLocking -XX: DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX: UseConcMarkSweepGC -XX: UseParNewGC -XX: CMSParallelRemarkEnabled -XX: UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX: UseFastAccessorMethods -XX: UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

//在tomcat/conf/server.xml配置端口,如果没有配置APR则将protocol设置为HTTP/1.1
    <Connector port="80" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxHttpHeaderSize="8192" maxThreads="1000"
               minSpareThreads="100" maxSpareThreads="1000"
               minProcessors="100" maxProcessors="1000"
               enableLookups="false"
               compression="on" compressionMinSize="1024"
               noCompressionUserAgents="gozilla, traviata"
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               connectionTimeout="25000" URIEncoding="UTF-8"
               acceptCount="1000" redirectPort="443"
               disableUploadTimeout="true" />

//SSL端口配置(使用APR的情况下)
    <Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxHttpHeaderSize="8192" maxThreads="1000"
               minSpareThreads="100" maxSpareThreads="1000"
               minProcessors="100" maxProcessors="1000"
               enableLookups="false"
               compression="on" compressionMinSize="1024"
               noCompressionUserAgents="gozilla, traviata"
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               connectionTimeout="25000" URIEncoding="UTF-8"
               acceptCount="1000" disableUploadTimeout="true"
               SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/cert.key"
                         certificateFile="conf/cert.crt"
                         certificateChainFile="conf/root.crt"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

//SSL端口配置(不使用APR的情况下)
    <Connector port="443" protocol="HTTP/1.1"
               maxHttpHeaderSize="8192" maxThreads="1000"
               minSpareThreads="100" maxSpareThreads="1000"
               minProcessors="100" maxProcessors="1000"
               enableLookups="false"
               compression="on" compressionMinSize="1024"
               noCompressionUserAgents="gozilla, traviata"
               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
               connectionTimeout="25000" URIEncoding="UTF-8"
               acceptCount="1000" disableUploadTimeout="true"
               SSLEnabled="true" >
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/cert.jks"
                         certificateKeystorePassword="证书密码"
                         certificateKeyAlias="证书别名"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

《软件漏洞分析技术》笔记

图片 1图片 2

 

PE文件:

  1 /*--------------------------------------------
  2 CHECKER1.C -- Mouse Hit-Test Demo Program No.1
  3               (c) Charles Petzold, 1998
  4 --------------------------------------------*/
  5 
  6 #include <Windows.h>
  7 
  8 #define DIVISION 5
  9 
 10 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 11 
 12 int WINAPI WinMain( __in HINSTANCE hInstance
 13                     , __in_opt HINSTANCE hPrevInstance
 14                     , __in LPSTR lpCmdLine
 15                     , __in int nShowCmd )
 16 {
 17     static TCHAR szAppName[] = TEXT("Checker1");
 18     HWND hwnd;
 19     MSG msg;
 20     WNDCLASS wndclass;
 21 
 22     wndclass.style = CS_HREDRAW | CS_VREDRAW;
 23     wndclass.lpfnWndProc = WndProc;
 24     wndclass.cbClsExtra = 0;
 25     wndclass.cbWndExtra = 0;
 26     wndclass.hInstance = hInstance;
 27     wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 28     wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
 29     wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 30     wndclass.lpszMenuName = NULL;
 31     wndclass.lpszClassName = szAppName;
 32 
 33     if (!RegisterClass(&wndclass))
 34     {
 35         MessageBox(NULL, TEXT("Program requires Windows NT!")
 36             , szAppName, MB_ICONERROR);
 37         return 0;
 38     }
 39 
 40     hwnd = CreateWindow(szAppName, TEXT("Checker1 Mouse Hit-Test Demo")
 41         , WS_OVERLAPPEDWINDOW
 42         , CW_USEDEFAULT, CW_USEDEFAULT
 43         , CW_USEDEFAULT, CW_USEDEFAULT
 44         , NULL, NULL, hInstance, NULL);
 45 
 46     ShowWindow(hwnd, nShowCmd);
 47     UpdateWindow(hwnd);
 48 
 49     while (GetMessage(&msg, NULL, 0, 0))
 50     {
 51         TranslateMessage(&msg);
 52         DispatchMessage(&msg);
 53     }
 54 
 55     return msg.wParam;
 56 }
 57 
 58 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 59 {
 60     static BOOL fState[DIVISION][DIVISION];
 61     static int cxBlock, cyBlock;
 62     HDC hdc;
 63     int x, y;
 64     PAINTSTRUCT ps;
 65     RECT rect;
 66 
 67     switch (message)
 68     {
 69     case WM_SIZE:
 70         cxBlock = LOWORD(lParam) / DIVISION;
 71         cyBlock = HIWORD(lParam) / DIVISION;
 72         return 0;
 73 
 74     case WM_LBUTTONDOWN:
 75         x = LOWORD(lParam) / cxBlock;
 76         y = HIWORD(lParam) / cyBlock;
 77 
 78         if (x < DIVISION && y < DIVISION)
 79         {
 80             fState[x][y] ^= 1;
 81 
 82             rect.left = x * cxBlock;
 83             rect.top = y * cyBlock;
 84             rect.right = (x   1) * cxBlock;
 85             rect.bottom = (y   1) * cyBlock;
 86 
 87             InvalidateRect(hwnd, &rect, FALSE);
 88         }
 89         else
 90             MessageBeep(0);
 91         return 0;
 92 
 93     case WM_PAINT:
 94         hdc = BeginPaint(hwnd, &ps);
 95 
 96         for (x = 0; x < DIVISION;   x)
 97             for (y = 0; y < DIVISION;   y)
 98             {
 99                 Rectangle(hdc, x * cxBlock, y * cyBlock
100                     , (x   1) * cxBlock, (y   1) * cyBlock);
101 
102                 if (fState[x][y])
103                 {
104                     MoveToEx(hdc, x * cxBlock, y * cyBlock, NULL);
105                     LineTo(hdc, (x   1) * cxBlock, (y   1) * cyBlock);
106                     MoveToEx(hdc, x * cxBlock, (y   1) * cyBlock, NULL);
107                     LineTo(hdc, (x   1) * cxBlock, y * cyBlock);
108                 }
109             }
110 
111         EndPaint(hwnd, &ps);
112         return 0;
113 
114     case WM_DESTROY:
115         PostQuitMessage(0);
116         return 0;
117     }
118 
119     return DefWindowProc(hwnd, message, wParam, lParam);
120 }

  PE(Portable Executable)是win32平台下可执行遵守的数据格式。平时常见的比如*.exe和*.dll都是PE文件。

CHECKER1.C

  可执行文件:包含二进制代码,字符串,菜单,图标,位图字体等。

CHECKER1程序显示结果如图所示:

  运行时操作系统会按PE文件的约定定位资源并装载入内存。可执行文件 ——>拆分——>若干数据节<——不同的资源。

图片 3

  典型PE文件通常包含:.text(编译器产生,存放二进制代码, 反汇编和调试的对象)、.data(初始化数据块)、.idata(使用的外来函数如动态链接库与文件信息)、.rsrc(存放程序资源),还包括其他如.reloc、.edata、.tls、.rdata等。

所有25个矩形具有相同的宽度和高度,这些宽度和高度被保存在cxBlock、cyBlock中。无论何时改变客户区的大小,程序都将重新计算cxBlock、cyBlock。WM_LBUTTONDOWN处理逻辑利用鼠标的坐标来判断哪个矩形被单击,然后在fState数组中使用位运算符(按位异或^)计算那个矩形的新状态,最后强制使该矩形失效,从而产生WM_PAINT消息。

虚拟内存:

如果客户区的宽度和高度不能被5整除,客户区的左边或底部就会出现一个小长条区域,不被举行覆盖。在这片区域进行鼠标单击时,CHECKER1程序会调用MessageBeep函数进行响应。

  Windows内存:1.物理内存层面;2.虚拟内存层面。

当CHECKER1程序收到WM_PAINT消息时,它会重新绘制整个客户区,利用GDI中的Rectangle函数画出所有的矩形。若fState值为真,则CHECKER1程序调用函数MoveToEx和函数LineTo函数画出两条直线。

  物理内存通常内核级别ring0才能看到;通常用户模式下看见的为Windows用户态内存映射机制下的虚拟内存。

  内存管理器可以使进程在实际只有512MB物理内存的情况下使进程“认为”自己拥有4GB内存(其中包括代码, 栈空间,资源区,动态链接库等)。

图片 4

  这种情况和实际生活中银行相似,你需要用的钱其实并不等于你拥有的财富,银行实际存有的金额数小于所有储户的财富和。

  那万一有用户需要取出超出实际金额数怎么办,操作系统原理中有“虚拟内存”概念, 即在这种情况下有时会将“部分硬盘空间”暂时作为内存使用。(两者“虚拟内存“概念对象不一,不宜混淆)

本文由千赢娱乐手机登录发布于千赢娱乐手机登录,转载请注明出处:Tomcat性能优化,二进制文件概述

关键词:

上一篇:黑客给力,庆祝李小龙诞辰70周年

下一篇:没有了