管理驾驶舱 之仪表盘的设计

2024-01-15 09:20

本文主要是介绍管理驾驶舱 之仪表盘的设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     就上次的研究得到很多园友的支持表示感谢。这篇是我最近的新研究。

   我先解释一下

管理驾驶舱是基于ERP的高层决策支持系统。通过详尽的指标体系,实时反映企业的运行 状态,将采集的数据形象化、直观化、具体化。“管理驾驶舱”充分融合了人脑科学、管理科学和信息科学的精华,以人为产品的核心,从管理者的决策环境、企业 管理综合指标的定义以及信息的表述,都围绕着激发人的智能、有利于思维连贯和有效思维判断为目的。将企业管理决策提升到一个新的高度。最大化地发挥高层经 理了解、领导和控制公司业务的管理室(即驾驶舱),实际上是一个为高层管理层提供的“一站式”(One-Stop)决策支持的管理信息中心系统。它以驾驶 舱的形式,通过各种常见的图表(速度表、音量柱、预警雷达、雷达球)形象标示企业运行的关键指标(KPI),直观的监测企业运营情况,并可以对异常关键指 标预警,和

挖掘分析。

框架脚本

js脚本

ExpandedBlockStart.gif 代码
/* 廖强 */

var  jg_ok, jg_ie, jg_fast, jg_dom, jg_moz;


function  _chkDHTM(x, i) {
    x 
=  document.body  ||   null ;
    jg_ie 
=  x  &&   typeof  x.insertAdjacentHTML  !=   " undefined "   &&  document.createElement;
    jg_dom 
=  (x  &&   ! jg_ie  &&
        
typeof  x.appendChild  !=   " undefined "   &&
        
typeof  document.createRange  !=   " undefined "   &&
        
typeof  (i  =  document.createRange()).setStartBefore  !=   " undefined "   &&
        
typeof  i.createContextualFragment  !=   " undefined " );
    jg_fast 
=  jg_ie  &&  document.all  &&   ! window.opera;
    jg_moz 
=  jg_dom  &&   typeof  x.style.MozOpacity  !=   " undefined " ;
    jg_ok 
=   !! (jg_ie  ||  jg_dom);
}

function  _pntCnvDom() {
    
var  x  =   this .wnd.document.createRange();
    x.setStartBefore(
this .cnv);
    x 
=  x.createContextualFragment(jg_fast  ?   this ._htmRpc() :  this .htm);
    
if  ( this .cnv)  this .cnv.appendChild(x);
    
this .htm  =   "" ;
}

function  _pntCnvIe() {
    
if  ( this .cnv)  this .cnv.insertAdjacentHTML( " BeforeEnd " , jg_fast  ?   this ._htmRpc() :  this .htm);
    
this .htm  =   "" ;
}

function  _pntDoc() {
    
this .wnd.document.write(jg_fast  ?   this ._htmRpc() :  this .htm);
    
this .htm  =   '' ;
}

function  _pntN() {
    ;
}

function  _mkDiv(x, y, w, h) {
    
this .htm  +=   ' <div style="position:absolute; '   +
        
' left: '   +  x  +   ' px; '   +
        
' top: '   +  y  +   ' px; '   +
        
' width: '   +  w  +   ' px; '   +
        
' height: '   +  h  +   ' px; '   +
        
' clip:rect(0, '   +  w  +   ' px, '   +  h  +   ' px,0); '   +
        
' background-color: '   +   this .color  +
        (
! jg_moz  ?   ' ;overflow:hidden '  :  '' +
        
' ;"><\/div> ' ;
}

function  _mkDivIe(x, y, w, h) {
    
this .htm  +=   ' %% '   +   this .color  +   ' ; '   +  x  +   ' ; '   +  y  +   ' ; '   +  w  +   ' ; '   +  h  +   ' ; ' ;
}

function  _mkDivPrt(x, y, w, h) {
    
this .htm  +=   ' <div style="position:absolute; '   +
        
' border-left: '   +  w  +   ' px solid  '   +   this .color  +   ' ; '   +
        
' left: '   +  x  +   ' px; '   +
        
' top: '   +  y  +   ' px; '   +
        
' width:0px; '   +
        
' height: '   +  h  +   ' px; '   +
        
' clip:rect(0, '   +  w  +   ' px, '   +  h  +   ' px,0); '   +
        
' background-color: '   +   this .color  +
        (
! jg_moz  ?   ' ;overflow:hidden '  :  '' +
        
' ;"><\/div> ' ;
}

var  _regex  =   / %%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+); / g;
function  _htmRpc() {
    
return   this .htm.replace(
        _regex,
        
' <div style="overflow:hidden;position:absolute;background-color: '   +
        
' $1;left:$2;top:$3;width:$4;height:$5"></div>\n ' );
}

function  _htmPrtRpc() {
    
return   this .htm.replace(
        _regex,
        
' <div style="overflow:hidden;position:absolute;background-color: '   +
        
' $1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n ' );
}

function  _mkLin(x1, y1, x2, y2) {
    
if  (x1  >  x2) {
        
var  _x2  =  x2;
        
var  _y2  =  y2;
        x2 
=  x1;
        y2 
=  y1;
        x1 
=  _x2;
        y1 
=  _y2;
    }
    
var  dx  =  x2  -  x1, dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ;

    
if  (dx  >=  dy) {
        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 ),
        p 
=  pr  -  dx,
        ox 
=  x;
        
while  (dx  >   0 ) {
            
-- dx;
            
++ x;
            
if  (p  >   0 ) {
                
this ._mkDiv(ox, y, x  -  ox,  1 );
                y 
+=  yIncr;
                p 
+=  pru;
                ox 
=  x;
            }
            
else  p  +=  pr;
        }
        
this ._mkDiv(ox, y, x2  -  ox  +   1 1 );
    }

    
else  {
        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 ),
        p 
=  pr  -  dy,
        oy 
=  y;
        
if  (y2  <=  y1) {
            
while  (dy  >   0 ) {
                
-- dy;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , y,  1 , oy  -  y  +   1 );
                    y 
+=  yIncr;
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  {
                    y 
+=  yIncr;
                    p 
+=  pr;
                }
            }
            
this ._mkDiv(x2, y2,  1 , oy  -  y2  +   1 );
        }
        
else  {
            
while  (dy  >   0 ) {
                
-- dy;
                y 
+=  yIncr;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , oy,  1 , y  -  oy);
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  p  +=  pr;
            }
            
this ._mkDiv(x2, oy,  1 , y2  -  oy  +   1 );
        }
    }
}

function  _mkLin2D(x1, y1, x2, y2) {
    
if  (x1  >  x2) {
        
var  _x2  =  x2;
        
var  _y2  =  y2;
        x2 
=  x1;
        y2 
=  y1;
        x1 
=  _x2;
        y1 
=  _y2;
    }
    
var  dx  =  x2  -  x1, dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ;

    
var  s  =   this .stroke;
    
if  (dx  >=  dy) {
        
if  (dx  >   0   &&  s  -   3   >   0 ) {
            
var  _s  =  (s  *  dx  *  Math.sqrt( 1   +  dy  *  dy  /  (dx  *  dx))  -  dx  -  (s  >>   1 *  dy)  /  dx;
            _s 
=  ( ! (s  -   4 ?  Math.ceil(_s) : Math.round(_s))  +   1 ;
        }
        
else   var  _s  =  s;
        
var  ad  =  Math.ceil(s  /   2 );

        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 ),
        p 
=  pr  -  dx,
        ox 
=  x;
        
while  (dx  >   0 ) {
            
-- dx;
            
++ x;
            
if  (p  >   0 ) {
                
this ._mkDiv(ox, y, x  -  ox  +  ad, _s);
                y 
+=  yIncr;
                p 
+=  pru;
                ox 
=  x;
            }
            
else  p  +=  pr;
        }
        
this ._mkDiv(ox, y, x2  -  ox  +  ad  +   1 , _s);
    }

    
else  {
        
if  (s  -   3   >   0 ) {
            
var  _s  =  (s  *  dy  *  Math.sqrt( 1   +  dx  *  dx  /  (dy  *  dy))  -  (s  >>   1 *  dx  -  dy)  /  dy;
            _s 
=  ( ! (s  -   4 ?  Math.ceil(_s) : Math.round(_s))  +   1 ;
        }
        
else   var  _s  =  s;
        
var  ad  =  Math.round(s  /   2 );

        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 ),
        p 
=  pr  -  dy,
        oy 
=  y;
        
if  (y2  <=  y1) {
            
++ ad;
            
while  (dy  >   0 ) {
                
-- dy;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , y, _s, oy  -  y  +  ad);
                    y 
+=  yIncr;
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  {
                    y 
+=  yIncr;
                    p 
+=  pr;
                }
            }
            
this ._mkDiv(x2, y2, _s, oy  -  y2  +  ad);
        }
        
else  {
            
while  (dy  >   0 ) {
                
-- dy;
                y 
+=  yIncr;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , oy, _s, y  -  oy  +  ad);
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  p  +=  pr;
            }
            
this ._mkDiv(x2, oy, _s, y2  -  oy  +  ad  +   1 );
        }
    }
}

function  _mkLinDott(x1, y1, x2, y2) {
    
if  (x1  >  x2) {
        
var  _x2  =  x2;
        
var  _y2  =  y2;
        x2 
=  x1;
        y2 
=  y1;
        x1 
=  _x2;
        y1 
=  _y2;
    }
    
var  dx  =  x2  -  x1, dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ,
    drw 
=   true ;
    
if  (dx  >=  dy) {
        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 ),
        p 
=  pr  -  dx;
        
while  (dx  >   0 ) {
            
-- dx;
            
if  (drw)  this ._mkDiv(x, y,  1 1 );
            drw 
=   ! drw;
            
if  (p  >   0 ) {
                y 
+=  yIncr;
                p 
+=  pru;
            }
            
else  p  +=  pr;
            
++ x;
        }
    }
    
else  {
        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 ),
        p 
=  pr  -  dy;
        
while  (dy  >   0 ) {
            
-- dy;
            
if  (drw)  this ._mkDiv(x, y,  1 1 );
            drw 
=   ! drw;
            y 
+=  yIncr;
            
if  (p  >   0 ) {
                
++ x;
                p 
+=  pru;
            }
            
else  p  +=  pr;
        }
    }
    
if  (drw)  this ._mkDiv(x, y,  1 1 );
}

function  _mkOv(left, top, width, height) {
    
var  a  =  ( ++ width)  >>   1 , b  =  ( ++ height)  >>   1 ,
    wod 
=  width  &   1 , hod  =  height  &   1 ,
    cx 
=  left  +  a, cy  =  top  +  b,
    x 
=   0 , y  =  b,
    ox 
=   0 , oy  =  b,
    aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
    st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
    tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
    w, h;
    
while  (y  >   0 ) {
        
if  (st  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 );
            tt 
+=  bb4  *  ( ++ x);
        }
        
else   if  (tt  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
            tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
            w 
=  x  -  ox;
            h 
=  oy  -  y;
            
if  ((w  &   2 &&  (h  &   2 )) {
                
this ._mkOvQds(cx, cy, x  -   2 , y  +   2 1 1 , wod, hod);
                
this ._mkOvQds(cx, cy, x  -   1 , y  +   1 1 1 , wod, hod);
            }
            
else   this ._mkOvQds(cx, cy, x  -   1 , oy, w, h, wod, hod);
            ox 
=  x;
            oy 
=  y;
        }
        
else  {
            tt 
-=  aa2  *  ((y  <<   1 -   3 );
            st 
-=  aa4  *  ( -- y);
        }
    }
    w 
=  a  -  ox  +   1 ;
    h 
=  (oy  <<   1 +  hod;
    y 
=  cy  -  oy;
    
this ._mkDiv(cx  -  a, y, w, h);
    
this ._mkDiv(cx  +  ox  +  wod  -   1 , y, w, h);
}

function  _mkOv2D(left, top, width, height) {
    
var  s  =   this .stroke;
    width 
+=  s  +   1 ;
    height 
+=  s  +   1 ;
    
var  a  =  width  >>   1 , b  =  height  >>   1 ,
    wod 
=  width  &   1 , hod  =  height  &   1 ,
    cx 
=  left  +  a, cy  =  top  +  b,
    x 
=   0 , y  =  b,
    aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
    st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
    tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 );

    
if  (s  -   4   <   0   &&  ( ! (s  -   2 ||  width  -   51   >   0   &&  height  -   51   >   0 )) {
        
var  ox  =   0 , oy  =  b,
        w, h,
        pxw;
        
while  (y  >   0 ) {
            
if  (st  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                w 
=  x  -  ox;
                h 
=  oy  -  y;

                
if  (w  -   1 ) {
                    pxw 
=  w  +   1   +  (s  &   1 );
                    h 
=  s;
                }
                
else   if  (h  -   1 ) {
                    pxw 
=  s;
                    h 
+=   1   +  (s  &   1 );
                }
                
else  pxw  =  h  =  s;
                
this ._mkOvQds(cx, cy, x  -   1 , oy, pxw, h, wod, hod);
                ox 
=  x;
                oy 
=  y;
            }
            
else  {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
            }
        }
        
this ._mkDiv(cx  -  a, cy  -  oy, s, (oy  <<   1 +  hod);
        
this ._mkDiv(cx  +  a  +  wod  -  s, cy  -  oy, s, (oy  <<   1 +  hod);
    }

    
else  {
        
var  _a  =  (width  -  (s  <<   1 ))  >>   1 ,
        _b 
=  (height  -  (s  <<   1 ))  >>   1 ,
        _x 
=   0 , _y  =  _b,
        _aa2 
=  (_a  *  _a)  <<   1 , _aa4  =  _aa2  <<   1 , _bb2  =  (_b  *  _b)  <<   1 , _bb4  =  _bb2  <<   1 ,
        _st 
=  (_aa2  >>   1 *  ( 1   -  (_b  <<   1 ))  +  _bb2,
        _tt 
=  (_bb2  >>   1 -  _aa2  *  ((_b  <<   1 -   1 ),

        pxl 
=   new  Array(),
        pxt 
=   new  Array(),
        _pxb 
=   new  Array();
        pxl[
0 =   0 ;
        pxt[
0 =  b;
        _pxb[
0 =  _b  -   1 ;
        
while  (y  >   0 ) {
            
if  (st  <   0 ) {
                pxl[pxl.length] 
=  x;
                pxt[pxt.length] 
=  y;
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 ) {
                pxl[pxl.length] 
=  x;
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                pxt[pxt.length] 
=  y;
            }
            
else  {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
            }

            
if  (_y  >   0 ) {
                
if  (_st  <   0 ) {
                    _st 
+=  _bb2  *  ((_x  <<   1 +   3 );
                    _tt 
+=  _bb4  *  ( ++ _x);
                    _pxb[_pxb.length] 
=  _y  -   1 ;
                }
                
else   if  (_tt  <   0 ) {
                    _st 
+=  _bb2  *  ((_x  <<   1 +   3 -  _aa4  *  (_y  -   1 );
                    _tt 
+=  _bb4  *  ( ++ _x)  -  _aa2  *  (((_y -- <<   1 -   3 );
                    _pxb[_pxb.length] 
=  _y  -   1 ;
                }
                
else  {
                    _tt 
-=  _aa2  *  ((_y  <<   1 -   3 );
                    _st 
-=  _aa4  *  ( -- _y);
                    _pxb[_pxb.length 
-   1 ] -- ;
                }
            }
        }

        
var  ox  =   - wod, oy  =  b,
        _oy 
=  _pxb[ 0 ],
        l 
=  pxl.length,
        w, h;
        
for  ( var  i  =   0 ; i  <  l; i ++ ) {
            
if  ( typeof  _pxb[i]  !=   " undefined " ) {
                
if  (_pxb[i]  <  _oy  ||  pxt[i]  <  oy) {
                    x 
=  pxl[i];
                    
this ._mkOvQds(cx, cy, x, oy, x  -  ox, oy  -  _oy, wod, hod);
                    ox 
=  x;
                    oy 
=  pxt[i];
                    _oy 
=  _pxb[i];
                }
            }
            
else  {
                x 
=  pxl[i];
                
this ._mkDiv(cx  -  x, cy  -  oy,  1 , (oy  <<   1 +  hod);
                
this ._mkDiv(cx  +  ox  +  wod, cy  -  oy,  1 , (oy  <<   1 +  hod);
                ox 
=  x;
                oy 
=  pxt[i];
            }
        }
        
this ._mkDiv(cx  -  a, cy  -  oy,  1 , (oy  <<   1 +  hod);
        
this ._mkDiv(cx  +  ox  +  wod, cy  -  oy,  1 , (oy  <<   1 +  hod);
    }
}

function  _mkOvDott(left, top, width, height) {
    
var  a  =  ( ++ width)  >>   1 , b  =  ( ++ height)  >>   1 ,
    wod 
=  width  &   1 , hod  =  height  &   1 , hodu  =  hod  ^   1 ,
    cx 
=  left  +  a, cy  =  top  +  b,
    x 
=   0 , y  =  b,
    aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
    st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
    tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
    drw 
=   true ;
    
while  (y  >   0 ) {
        
if  (st  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 );
            tt 
+=  bb4  *  ( ++ x);
        }
        
else   if  (tt  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
            tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
        }
        
else  {
            tt 
-=  aa2  *  ((y  <<   1 -   3 );
            st 
-=  aa4  *  ( -- y);
        }
        
if  (drw  &&  y  >=  hodu)  this ._mkOvQds(cx, cy, x, y,  1 1 , wod, hod);
        drw 
=   ! drw;
    }
}

function  _mkRect(x, y, w, h) {
    
var  s  =   this .stroke;
    
this ._mkDiv(x, y, w, s);
    
this ._mkDiv(x  +  w, y, s, h);
    
this ._mkDiv(x, y  +  h, w  +  s, s);
    
this ._mkDiv(x, y  +  s, s, h  -  s);
}

function  _mkRectDott(x, y, w, h) {
    
this .drawLine(x, y, x  +  w, y);
    
this .drawLine(x  +  w, y, x  +  w, y  +  h);
    
this .drawLine(x, y  +  h, x  +  w, y  +  h);
    
this .drawLine(x, y, x, y  +  h);
}

function  jsgFont() {
    
this .PLAIN  =   ' font-weight:normal; ' ;
    
this .BOLD  =   ' font-weight:bold; ' ;
    
this .ITALIC  =   ' font-style:italic; ' ;
    
this .ITALIC_BOLD  =   this .ITALIC  +   this .BOLD;
    
this .BOLD_ITALIC  =   this .ITALIC_BOLD;
}
var  Font  =   new  jsgFont();

function  jsgStroke() {
    
this .DOTTED  =   - 1 ;
}
var  Stroke  =   new  jsgStroke();

function  jsGraphics(cnv, wnd) {
    
this .setColor  =   function (x) {
        
this .color  =  x.toLowerCase();
    };

    
this .setStroke  =   function (x) {
        
this .stroke  =  x;
        
if  ( ! (x  +   1 )) {
            
this .drawLine  =  _mkLinDott;
            
this ._mkOv  =  _mkOvDott;
            
this .drawRect  =  _mkRectDott;
        }
        
else   if  (x  -   1   >   0 ) {
            
this .drawLine  =  _mkLin2D;
            
this ._mkOv  =  _mkOv2D;
            
this .drawRect  =  _mkRect;
        }
        
else  {
            
this .drawLine  =  _mkLin;
            
this ._mkOv  =  _mkOv;
            
this .drawRect  =  _mkRect;
        }
    };

    
this .setPrintable  =   function (arg) {
        
this .printable  =  arg;
        
if  (jg_fast) {
            
this ._mkDiv  =  _mkDivIe;
            
this ._htmRpc  =  arg  ?  _htmPrtRpc : _htmRpc;
        }
        
else   this ._mkDiv  =  arg  ?  _mkDivPrt : _mkDiv;
    };

    
this .setFont  =   function (fam, sz, sty) {
        
this .ftFam  =  fam;
        
this .ftSz  =  sz;
        
this .ftSty  =  sty  ||  Font.PLAIN;
    };

    
this .drawPolyline  =   this .drawPolyLine  =   function (x, y) {
        
for  ( var  i  =  x.length  -   1 ; i; ) {
            
-- i;
            
this .drawLine(x[i], y[i], x[i  +   1 ], y[i  +   1 ]);
        }
    };

    
this .fillRect  =   function (x, y, w, h) {
        
this ._mkDiv(x, y, w, h);
    };

    
this .drawPolygon  =   function (x, y) {
        
this .drawPolyline(x, y);
        
this .drawLine(x[x.length  -   1 ], y[x.length  -   1 ], x[ 0 ], y[ 0 ]);
    };

    
this .drawEllipse  =   this .drawOval  =   function (x, y, w, h) {
        
this ._mkOv(x, y, w, h);
    };

    
this .fillEllipse  =   this .fillOval  =   function (left, top, w, h) {
        
var  a  =  w  >>   1 , b  =  h  >>   1 ,
        wod 
=  w  &   1 , hod  =  h  &   1 ,
        cx 
=  left  +  a, cy  =  top  +  b,
        x 
=   0 , y  =  b, oy  =  b,
        aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
        st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
        tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
        xl, dw, dh;
        
if  (w)  while  (y  >   0 ) {
            
if  (st  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                xl 
=  cx  -  x;
                dw 
=  (x  <<   1 +  wod;
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                dh 
=  oy  -  y;
                
this ._mkDiv(xl, cy  -  oy, dw, dh);
                
this ._mkDiv(xl, cy  +  y  +  hod, dw, dh);
                oy 
=  y;
            }
            
else  {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
            }
        }
        
this ._mkDiv(cx  -  a, cy  -  oy, w, (oy  <<   1 +  hod);
    };

    
this .fillArc  =   function (iL, iT, iW, iH, fAngA, fAngZ) {
        
var  a  =  iW  >>   1 , b  =  iH  >>   1 ,
        iOdds 
=  (iW  &   1 |  ((iH  &   1 <<   16 ),
        cx 
=  iL  +  a, cy  =  iT  +  b,
        x 
=   0 , y  =  b, ox  =  x, oy  =  y,
        aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
        st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
        tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
        
//  Vars for radial boundary lines
        xEndA, yEndA, xEndZ, yEndZ,
        iSects 
=  ( 1   <<  (Math.floor((fAngA  %=   360.0 /   180.0 <<   3 ))
                
|  ( 2   <<  (Math.floor((fAngZ  %=   360.0 /   180.0 <<   3 ))
                
|  ((fAngA  >=  fAngZ)  <<   16 ),
        aBndA 
=   new  Array(b  +   1 ), aBndZ  =   new  Array(b  +   1 );

        
//  Set up radial boundary lines
        fAngA  *=  Math.PI  /   180.0 ;
        fAngZ 
*=  Math.PI  /   180.0 ;
        xEndA 
=  cx  +  Math.round(a  *  Math.cos(fAngA));
        yEndA 
=  cy  +  Math.round( - *  Math.sin(fAngA));
        _mkLinVirt(aBndA, cx, cy, xEndA, yEndA);
        xEndZ 
=  cx  +  Math.round(a  *  Math.cos(fAngZ));
        yEndZ 
=  cy  +  Math.round( - *  Math.sin(fAngZ));
        _mkLinVirt(aBndZ, cx, cy, xEndZ, yEndZ);

        
while  (y  >   0 ) {
            
if  (st  <   0 //  Advance x
            {
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 //  Advance x and y
            {
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                ox 
=  x;
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                
this ._mkArcDiv(ox, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
                oy 
=  y;
            }
            
else   //  Advance y
            {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
                
if  (y  &&  (aBndA[y]  !=  aBndA[y  -   1 ||  aBndZ[y]  !=  aBndZ[y  -   1 ])) {
                    
this ._mkArcDiv(x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
                    ox 
=  x;
                    oy 
=  y;
                }
            }
        }
        
this ._mkArcDiv(x,  0 , oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
        
if  (iOdds  >>   16 //  Odd height
        {
            
if  (iSects  >>   16 //  Start-angle > end-angle
            {
                
var  xl  =  (yEndA  <=  cy  ||  yEndZ  >  cy)  ?  (cx  -  x) : cx;
                
this ._mkDiv(xl, cy, x  +  cx  -  xl  +  (iOdds  &   0xffff ),  1 );
            }
            
else   if  ((iSects  &   0x01 &&  yEndZ  >  cy)
                
this ._mkDiv(cx  -  x, cy, x,  1 );
        }
    };

    
/*  fillPolygon method, implemented by Matthieu Haller.
    This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.
    C source of GD 1.8.4 found at http://www.boutell.com/gd/

THANKS to Kirsten Schulz for the polygon fixes!

The intersection finding technique of this code could be improved
    by remembering the previous intertersection, and by using the slope.
    That could help to adjust intersections to produce a nice
    interior_extrema. 
*/
    
this .fillPolygon  =   function (array_x, array_y) {
        
var  i;
        
var  y;
        
var  miny, maxy;
        
var  x1, y1;
        
var  x2, y2;
        
var  ind1, ind2;
        
var  ints;

        
var  n  =  array_x.length;
        
if  ( ! n)  return ;

        miny 
=  array_y[ 0 ];
        maxy 
=  array_y[ 0 ];
        
for  (i  =   1 ; i  <  n; i ++ ) {
            
if  (array_y[i]  <  miny)
                miny 
=  array_y[i];

            
if  (array_y[i]  >  maxy)
                maxy 
=  array_y[i];
        }
        
for  (y  =  miny; y  <=  maxy; y ++ ) {
            
var  polyInts  =   new  Array();
            ints 
=   0 ;
            
for  (i  =   0 ; i  <  n; i ++ ) {
                
if  ( ! i) {
                    ind1 
=  n  -   1 ;
                    ind2 
=   0 ;
                }
                
else  {
                    ind1 
=  i  -   1 ;
                    ind2 
=  i;
                }
                y1 
=  array_y[ind1];
                y2 
=  array_y[ind2];
                
if  (y1  <  y2) {
                    x1 
=  array_x[ind1];
                    x2 
=  array_x[ind2];
                }
                
else   if  (y1  >  y2) {
                    y2 
=  array_y[ind1];
                    y1 
=  array_y[ind2];
                    x2 
=  array_x[ind1];
                    x1 
=  array_x[ind2];
                }
                
else   continue ;

                
//   Modified 11. 2. 2004 Walter Zorn
                 if  ((y  >=  y1)  &&  (y  <  y2))
                    polyInts[ints
++ =  Math.round((y  -  y1)  *  (x2  -  x1)  /  (y2  -  y1)  +  x1);

                
else   if  ((y  ==  maxy)  &&  (y  >  y1)  &&  (y  <=  y2))
                    polyInts[ints
++ =  Math.round((y  -  y1)  *  (x2  -  x1)  /  (y2  -  y1)  +  x1);
            }
            polyInts.sort(_CompInt);
            
for  (i  =   0 ; i  <  ints; i  +=   2 )
                
this ._mkDiv(polyInts[i], y, polyInts[i  +   1 -  polyInts[i]  +   1 1 );
        }
    };

    
this .drawString  =   function (txt, x, y) {
        
this .htm  +=   ' <div style="position:absolute;white-space:nowrap; '   +
            
' left: '   +  x  +   ' px; '   +
            
' top: '   +  y  +   ' px; '   +
            
' font-family: '   +   this .ftFam  +   ' ; '   +
            
' font-size: '   +   this .ftSz  +   ' ; '   +
            
' color: '   +   this .color  +   ' ; '   +   this .ftSty  +   ' "> '   +
            txt 
+
            
' <\/div> ' ;
    };

    
/*  drawStringRect() added by Rick Blommers.
    Allows to specify the size of the text rectangle and to align the
    text both horizontally (e.g. right) and vertically within that rectangle 
*/
    
this .drawStringRect  =   function (txt, x, y, width, halign) {
        
this .htm  +=   ' <div style="position:absolute;overflow:hidden; '   +
            
' left: '   +  x  +   ' px; '   +
            
' top: '   +  y  +   ' px; '   +
            
' width: '   +  width  +   ' px; '   +
            
' text-align: '   +  halign  +   ' ; '   +
            
' font-family: '   +   this .ftFam  +   ' ; '   +
            
' font-size: '   +   this .ftSz  +   ' ; '   +
            
' color: '   +   this .color  +   ' ; '   +   this .ftSty  +   ' "> '   +
            txt 
+
            
' <\/div> ' ;
    };

    
this .drawImage  =   function (imgSrc, x, y, w, h, a) {
        
this .htm  +=   ' <div style="position:absolute; '   +
            
' left: '   +  x  +   ' px; '   +
            
' top: '   +  y  +   ' px; '   +
        
//  w (width) and h (height) arguments are now optional.
         //  Added by Mahmut Keygubatli, 14.1.2008
            (w  ?  ( ' width: '   +  w  +   ' px; ' ) :  '' +
            (h 
?  ( ' height: '   +  h  +   ' px; ' ) :  '' +   ' "> '   +
            
' <img src=" '   +  imgSrc  +   ' " '   +  (w  ?  ( '  width=" '   +  w  +   ' " ' ) :  '' +  (h  ?  ( '  height=" '   +  h  +   ' " ' ) :  '' +  (a  ?  ( '   '   +  a) :  '' +   ' > '   +
            
' <\/div> ' ;
    };

    
this .clear  =   function () {
        
this .htm  =   "" ;
        
if  ( this .cnv)  this .cnv.innerHTML  =   "" ;
    };

    
this ._mkOvQds  =   function (cx, cy, x, y, w, h, wod, hod) {
        
var  xl  =  cx  -  x, xr  =  cx  +  x  +  wod  -  w, yt  =  cy  -  y, yb  =  cy  +  y  +  hod  -  h;
        
if  (xr  >  xl  +  w) {
            
this ._mkDiv(xr, yt, w, h);
            
this ._mkDiv(xr, yb, w, h);
        }
        
else
            w 
=  xr  -  xl  +  w;
        
this ._mkDiv(xl, yt, w, h);
        
this ._mkDiv(xl, yb, w, h);
    };

    
this ._mkArcDiv  =   function (x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects) {
        
var  xrDef  =  cx  +  x  +  (iOdds  &   0xffff ), y2, h  =  oy  -  y, xl, xr, w;

        
if  ( ! h) h  =   1 ;
        x 
=  cx  -  x;

        
if  (iSects  &   0xff0000 //  Start-angle > end-angle
        {
            y2 
=  cy  -  y  -  h;
            
if  (iSects  &   0x00ff ) {
                
if  (iSects  &   0x02 ) {
                    xl 
=  Math.max(x, aBndZ[y]);
                    w 
=  xrDef  -  xl;
                    
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
                }
                
if  (iSects  &   0x01 ) {
                    xr 
=  Math.min(xrDef, aBndA[y]);
                    w 
=  xr  -  x;
                    
if  (w  >   0 this ._mkDiv(x, y2, w, h);
                }
            }
            
else
                
this ._mkDiv(x, y2, xrDef  -  x, h);
            y2 
=  cy  +  y  +  (iOdds  >>   16 );
            
if  (iSects  &   0xff00 ) {
                
if  (iSects  &   0x0100 ) {
                    xl 
=  Math.max(x, aBndA[y]);
                    w 
=  xrDef  -  xl;
                    
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
                }
                
if  (iSects  &   0x0200 ) {
                    xr 
=  Math.min(xrDef, aBndZ[y]);
                    w 
=  xr  -  x;
                    
if  (w  >   0 this ._mkDiv(x, y2, w, h);
                }
            }
            
else
                
this ._mkDiv(x, y2, xrDef  -  x, h);
        }
        
else  {
            
if  (iSects  &   0x00ff ) {
                
if  (iSects  &   0x02 )
                    xl 
=  Math.max(x, aBndZ[y]);
                
else
                    xl 
=  x;
                
if  (iSects  &   0x01 )
                    xr 
=  Math.min(xrDef, aBndA[y]);
                
else
                    xr 
=  xrDef;
                y2 
=  cy  -  y  -  h;
                w 
=  xr  -  xl;
                
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
            }
            
if  (iSects  &   0xff00 ) {
                
if  (iSects  &   0x0100 )
                    xl 
=  Math.max(x, aBndA[y]);
                
else
                    xl 
=  x;
                
if  (iSects  &   0x0200 )
                    xr 
=  Math.min(xrDef, aBndZ[y]);
                
else
                    xr 
=  xrDef;
                y2 
=  cy  +  y  +  (iOdds  >>   16 );
                w 
=  xr  -  xl;
                
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
            }
        }
    };

    
this .setStroke( 1 );
    
this .setFont( " verdana,geneva,helvetica,sans-serif " " 12px " , Font.PLAIN);
    
this .color  =   " #000000 " ;
    
this .htm  =   "" ;
    
this .wnd  =  wnd  ||  window;

    
if  ( ! jg_ok) _chkDHTM();
    
if  (jg_ok) {
        
if  (cnv) {
            
if  ( typeof  (cnv)  ==   " string " )
                
this .cont  =  document.all  ?  ( this .wnd.document.all[cnv]  ||   null )
                    : document.getElementById 
?  ( this .wnd.document.getElementById(cnv)  ||   null )
                    : 
null ;
            
else   if  (cnv  ==  window.document)
                
this .cont  =  document.getElementsByTagName( " body " )[ 0 ];
            
//  If cnv is a direct reference to a canvas DOM node
             //  (option suggested by Andreas Luleich)
             else   this .cont  =  cnv;
            
//  Create new canvas inside container DIV. Thus the drawing and clearing
             //  methods won't interfere with the container's inner html.
             //  Solution suggested by Vladimir.
             this .cnv  =   this .wnd.document.createElement( " div " );
            
this .cnv.style.fontSize  =   0 ;
            
this .cont.appendChild( this .cnv);
            
this .paint  =  jg_dom  ?  _pntCnvDom : _pntCnvIe;
        }
        
else
            
this .paint  =  _pntDoc;
    }
    
else
        
this .paint  =  _pntN;

    
this .setPrintable( false );
}

function  _mkLinVirt(aLin, x1, y1, x2, y2) {
    
var  dx  =  Math.abs(x2  -  x1), dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    xIncr 
=  (x1  >  x2)  ?   - 1  :  1 ,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ,
    p,
    i 
=   0 ;
    
if  (dx  >=  dy) {
        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 );
        p 
=  pr  -  dx;
        
while  (dx  >   0 ) {
            
-- dx;
            
if  (p  >   0 )     //   Increment y
            {
                aLin[i
++ =  x;
                y 
+=  yIncr;
                p 
+=  pru;
            }
            
else  p  +=  pr;
            x 
+=  xIncr;
        }
    }
    
else  {
        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 );
        p 
=  pr  -  dy;
        
while  (dy  >   0 ) {
            
-- dy;
            y 
+=  yIncr;
            aLin[i
++ =  x;
            
if  (p  >   0 )     //   Increment x
            {
                x 
+=  xIncr;
                p 
+=  pru;
            }
            
else  p  +=  pr;
        }
    }
    
for  ( var  len  =  aLin.length, i  =  len  -  i; i; )
        aLin[len 
-  (i -- )]  =  x;
};

function  _CompInt(x, y) {
    
return  (x  -  y);
}

 

 CSS样式 

 

ExpandedBlockStart.gif 代码
<style type="text/css">
        .mybox
        
{
            position
:  relative ;
            left
:  800px ;
            top
:  20px ;
        
}
        
        #header
{

 background-color 
: Red  ;
    width
: 955px ;
    height
: 223px ;
}
#content
{
    background-color 
: Green  ;
    width
: 955px ;
    height
: 223px ;
   background-repeat
: repeat-x ;
}



    </style>

JS脚本暂不公开

Html

ExpandedBlockStart.gif 代码
< body onload = " draw() " >
    
< center >
   

 
    
< div style  = " top:0px "  id = " header " >
        
< div id = " test "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 107px;
" >
            
<%-- 长高为300时 --%>
            
<%--    < div id = " div2 "  style = " position: absolute;  width: 40px;  top: 250px;  left=10px;  height: 150px;  z-index: 1;  background-color: " >
              
< input type = " text "  id = " nTxt "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>--%>
             <%-- 长高为200时 --%>
            
< div id = " div2 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px; z-index: 1; background-color:  " >
                
< input type = " text "  id = " nTxt "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>
        
        
        
< div id = " Div1 "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 307px;
" >
            
<%-- 长高为200时 --%>
            
< div id = " div3 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px;
                left: 104px;
" >
                
< input type = " text "  id = " Text1 "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>
        
        
        
< div id = " Div4 "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 507px;
" >
            
<%-- 长高为200时 --%>
            
< div id = " div5 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px;
                z-index: 1; background-color: 
" >
                
< input type = " text "  id = " Text2 "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>


 
< div id = " Div6 "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 707px;
" >
            
<%-- 长高为200时 --%>
            
< div id = " div7 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px;
                z-index: 1; background-color: 
" >
                
< input type = " text "  id = " Text3 "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>
         < / div> 
          < / center>
     < div style = " position: absolute; width: 40px; top: 500px; left=10px;   " >
    
< input name = " txt "  type = " text "  width = " 40 "  value = " 40 "   / >
     < input type = " button "  value = " 设置 "  onclick = " draw() "   / >
     < input type = " button "  value = " 清除 "  onclick = " clearLine() "   / >
    
    
< / div>
< / body>


效果图

 

 目前只完成了第一个。方法一次类推就可以了。由于各方面的原因暂不公开部分JS脚本。望大家谅解。

 

 

 

 


 

转载于:https://www.cnblogs.com/liaoqiang/archive/2011/01/08/1930758.html

这篇关于管理驾驶舱 之仪表盘的设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/608398

相关文章

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、