Ext原码学习之Ext-more.js
// JavaScript Document
Ext.apply(Ext,{
userAgent:navigator.userAgent.toLowerCase(),
cache:{},
isSeed:1000, windowId:'ext-window',
documentId:'ext-document', isReady:false, enableGarbageCollector:true, enableListenerCollection:true, rootHierarchyState:{}, addCacheEntry:function(id,el,dom)
{
dom = dom || el.dom; if(!dom)
{
Ext.Error.raise('Cannot add an entry to element cache without the dom node');
} var cache = Ext.cache,
key = id ||(el && el.id) ||dom.id,
entry = cache[key]||(cache[key] = {
data:{},
event:{},
dom:dom,
skipGarbageCollection:!!(document.getElementById||dom.navigator) }); if(el)
{
el.$cache = entry;
entry.el = el;
} return entry;
},
//update cache entry
updateCacheEntry:function(cacheItem,dom)
{
cacheItem.dom = dom;
if(cacheItem.el)
{
cacheItem.el.dom = dom;
} return cacheItem;
},
//generates unique ids
id:function(el,prefix)
{
var me = this,sandboxPrefix = ''; el = Ext.getDom(el,true) || {};
if(el === document)
{
el.id = me.documentId;
}
else if(el === window)
{
el.id = me.windowId;
} if(!el.id)
{
if(me.isSandboxed)
{
sandboxPrefix = Ext.sandboxName.toLowerCase()+'-';
}
el.id = sandboxPrefix +(prefix||'ext-gen')+(Ext.isSeed);
}
return el.id;
},
escapeId:(function(){
var validIdRe = /^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,
escapeRx =/([\W]{1})/g,
leadingNumRx = /^(\d)/g,
escapeFn = function(match,capture)
{
return "\\" +capture;
},
numEscapeFn=function(match,capture)
{
return "\\00"+capture.charCodeAt(0).toString(16)+' ';
}; return function(id){
return validIdRe.test(id) ? id :id.replace(escapeRx,escapeFn).replace(leadingNumRx,numEscapeFn);
}
}()),
// return current document body
getBody:(function(){
var body ;
return function(){
return body || (body = Ext.get(document.body));
}
}()),
// return current document head
getHead:(function(){
//load once
var head;
return function(){
return head ||(head = Ext.get(document.getElementByTagName('head')[0]));
}
}()),
// return current document as an Ext.Element
getDoc:(function(){
var doc;
return function(){
return doc ||(doc = Ext.get(document));
}
}()),
// return the current orientation of the mobile device
getOrientation:function(){
return window.innerHeight > window.innerWidth ? 'portrait':'landscape';
},
// destory any objects passed to is by removeing all event listeners
destory:function(){
var ln = arguments.length,i,arg;
for(i = 0;i<ln ;i++)
{
arg = arguments[i];
if(arg)
{
if(Ext.isArray(arg))
{
this.destory.apply(this,arg);
}
else if(arg.isStore)
{
arg.destoryStore();
}
else if(Ext.isFunction(arg.destory))
{
arg.destory();
}else
{
arg.remove();
}
} }
},
callback:function(callback,scope,args,delay)
{
var fn ,ret;
if(Ext.isFunction(callback))
{
fn = callback;
}
else
{
fn = scope[callback];
if(!fn)
{
Ext.Error.raise('No method named ' + callback );
}
} if(fn)
{
args = args || {};
scope = scope || window;
if(delay)
{
Ext.defer(fn,delay,scope,args);
}
else
{
ret = fn.apply(scope,args);
}
} return ret; },
//private method
resolveMethod:function(fn,scope)
{
if(Ext.isFunction(fn))
{
return fn;
} if(!Ext.isObject(scope) || !Ext.isFunction(scope[fn]))
{
Ext.Error.raise('No method named' + fn);
} return scope[fn];
}, htmlEncode:function(value)
{
return Ext.String.htmlEncode(value);
},
htmlDecode:function(value)
{
return Ext.String.htmlDecode(value);
},
urlAppend:function(url,s)
{
return Ext.String.urlAppend(url,s);
}
}); Ext.ns = Ext.namespace; window.undefined = window.undefined; //check browser type
(function(){
var check = function(regex){
return regex.test(Ext.userAgent);
} isStrict = document.compatMode == 'CSS1Compat',
version = function(is,regex)
{
var m ;
return (is && ( m = regex.test(Ext.userAgent))) ? parseFloat(m[1]):0;
},
docMode = document.documentMode,
isOpera = check(/opera/),
isOpera10_5 = isOpera && check(/version\/10\.5/),
isChrome = check(/\bchrome\b/),
isWebKit = check(/webkit/),
isSafari = !isChrome && check(/safari/),
isSafari2 = isSafari && check(/applewebkit\/4/),
isSafari3 = isSafari && check(/version\/3/),
isSafari4 = isSafari && check(/version\/4/),
isSafari5_0 = isSafari && check(/version\/5.0/),
isSafari5 = isSafari && check(/version\/5/),
isIE = !isOpera && check(/msie/),
isIE7 = isIE && ((check(/msie 7/) && docMode !=8 && docMode !=9 && docMode !=10 ) || docMode ==7),
isIE8 = isIE && ((check(/msie 8/) && docMode !=7 && docMode !=9 && docMode !=10 ) || docMode ==8),
isIE9 = isIE && ((check(/msie 9/) && docMode !=8 && docMode !=7 && docMode !=10 ) || docMode ==9),
isIE10 = isIE && ((check(/msie 9/) && docMode !=8 && docMode !=7 && docMode !=9 ) || docMode ==10),
isIE6 = isIE && ( check(/msie 6/) ),
isGecko = !isWebKit && check(/gecko/),
isGecko3 = isGecko && check(/rv:1\.9/),
isGecko4 = isGecko && check(/rv:2\.0/),
isGecko5 = isGecko && check(/rv:5\./),
isGecko10 = isGecko && check(/rv:10\./),
isFF3_0 = isGecko3 && check(/rv:1\.9\.0/),
isFF3_5 = isGecko3 && check(/rv:1\.9\.1/),
isFF3_6 = isGecko3 && check(/rv:1\.9\.2/),
isWindows = check(/window|win32/),
isMac = check(/macintosh|mac os x/),
isLinux = check(/linux/),
scrollbarSize = null,
chromeVersion = version(true,/\bchrome\/(\d+\.\d+)/),
firefoxVersion = version(true,/\bfirefox\/(\d+\.\d+)/),
ieVersion = version(isIE,/msie (\d+\.\d+)/),
operaVersion = version(isOpera, /version\/(\d+\.\d+)/),
safariVersion = version(isSafari, /version\/(\d+\.\d+)/),
webKitVersion = version(isWebKit, /webkit\/(\d+\.\d+)/),
isSecure = /^https/i.test(window.location.protocal),
nullLog=null; try{
document.execCommand('BackgroundImageCache',false,true);
}catch(e){} var primitiveRe = /string|number|boolean/; function dumpObject(object)
{
var member,type,value,name,numbers=[]; for(name in object)
{
if(object.hasOwnProperty(name))
{
value = object[name]; type = typeof value; if(type=='function')
{
continue;
}
if(type=='undefined')
{
member = type;
}
else if(value===null || primitiveRe.test(type) || Ext.isDate(value))
{
member = Ext.decode(value);
}
else if(Ext.isArray(value))
{
member = '[ ]';
}else if(Ext.isObject(value))
{
member = '{ }';
}
else
{
member = type;
} members.push(Ext.encode(name) + ": " + member); } }
if(members.length)
{
return '\n Data:{\n '+members.join(',\n ') + '\n}';
}
}
//console.log(dumpObject({a:2,b:4,d:5,f:new Date()})); function log(message)
{
var options,dump,con=Ext.global.console,
level = 'log',
indent = log.indent || 0,statck,out,max; log.indent = indent; if(Ext.type(message) !='string')
{
options = message;
message = options.msg || '';
level = options.level || level;
dump = options.dump;
stack = options.stack; if(options.indent)
{
++ log.indent;
}
else if(options.outdent)
{
log.indent = indent = Math.max(indent - 1,0);
} if(dump && (con && con .dir))
{
message += dumpObject(dump);
dump = null;
} if(arguments.length >1)
{
message += Array.prototype.slice.call(arguments,1).join('');
} message = indent ? Ext.String.repeat(' ', log.indextSize * indent)+message : message; if(level !='log')
{
message = '[' + level.charAt(0).toUpperCase() + ']' + message;
} if(con)
{
if(con[level])
{
con[level](message);
}
else
{
con.log(message);
} if(dump)
{
con.dir(dump);
} if(stack && con.trace)
{
if(!con.firebug || level !='error')
{
con.trace();
}
}
}else
{
if(Ext.isOpera)
{
opera.postError(message);
}
else
{
out = log.out;
max = log.max; if(out.length >= max)
{
Ext.Array.erase(out,0,out.length -3 & Math.floor(max/4));
}
out.push(message);
}
}
}
++log.count;
++log.counters[level];
} function logx(level,args)
{
if(typeof args[0] == 'string')
{
args.unshift({});
} args[0].level = level;
log.apply(this,args);
} log.error = function()
{
logx('error',Array.prototype.slice.call(arguments));
} log.info = function()
{
logx('info',Array.prototype.slice.call(arguments));
} log.warn = function()
{
logx('warn',Array.prototype.slice.call(arguments));
} log.count = 0; log.counters = {error :0,warn:0,info:0,log:0}; log.identSize = 2; log.out = []; log.max = 750; log.show = function () {
window.open('','extlog').document.write([
'<html><head><script type="text/javascript">',
'var lastCount = 0;',
'function update () {',
'var ext = window.opener.Ext,',
'extlog = ext && ext.log;',
'if (extlog && extlog.out && lastCount != extlog.count) {',
'lastCount = extlog.count;',
'var s = "<tt>" + extlog.out.join("~~~").replace(/[&]/g, "&").replace(/[<]/g, "<").replace(/[ ]/g, " ").replace(/\\~\\~\\~/g, "<br/>") + "</tt>";',
'document.body.innerHTML = s;',
'}',
'setTimeout(update, 1000);',
'}',
'setTimeout(update, 1000);',
'</script></head><body></body></html>'].join(''));
}; nullLog = function(){};
nullLog.info = nullLog.warn = nullLog.error = Ext.emptyFn;
//update ext version
//Ext.setVersion('extjs','4.2.1.883'); Ext.apply(Ext,{
SSL_SECURE_URL : isSecure && isIE ? 'javascript:\'\'':'about:blank', plainTableCls:Ext.buildSettings.baseCSSPrefix +'table-plain', plainListCls:Ext.buildSettings.baseCSSPrefix +'list-plain', enableNestedListenerRemoval:false, USE_NATIVE_JSON:false, getDom:function(el,strict)
{
if(!el || !document)
{
return null;
} if(el.dom)
{
return el.dom;
}
else
{
if(Ext.type(el) == 'string')
{
var e = Ext.getElementById(el); if(e && isIE && strict)
{
if(el == e.getAttribute('id'))
{
return e;
}
else
{
return null;
}
} return e;
}
else
{
return el;
}
}
}, removeNode:isIE6 || isIE7 || isIE8 ?
(function(){
var d ;
return function(n){
if(n && n.tagName.toUpperCase() != 'BODY')
{
(Eet.enableNestedListerRemoval )?Ext.EventManager.purgeElement(n):Ext.EventManager.removeAll(n); var cache = Ext.cache,id = n.id; if(cache[id])
{
delete cache[id].dom;
delete cache[id];
} if(isIE8 && n.parentNode)
{
n.parentNode.removeChild(n);
}
d = d|| document.createElement('div');
d.appendChild(n);
d.innerHTML = '';
}
}
})() :function(n){ if(n && n.parentNode && n.tagName.toUpperCase() !='BODY')
{
(Ext.enableNestedListenerRemoval) ? Ext.EventManager.purgeElement(n):Ext.EventManager.removeAll(n); var cahce = Ext.cache,id = n.id; if(cache[id])
{
delete cache[id].dom;
delete cache[id];
} n.parentNode.removeChild(n);
}
},
isStrict:isStrict, isIEQuirks :isIE && (!isStrict && (isIE6 || isIE7 || isIE8 || isIE9)), isOpera:isOpera, isOPera10_5:isOpera10_5, /**
* True if the detected browser uses WebKit.
* @type Boolean
*/
isWebKit : isWebKit, /**
* True if the detected browser is Chrome.
* @type Boolean
*/
isChrome : isChrome, /**
* True if the detected browser is Safari.
* @type Boolean
*/
isSafari : isSafari, /**
* True if the detected browser is Safari 3.x.
* @type Boolean
*/
isSafari3 : isSafari3, /**
* True if the detected browser is Safari 4.x.
* @type Boolean
*/
isSafari4 : isSafari4, /**
* True if the detected browser is Safari 5.x.
* @type Boolean
*/
isSafari5 : isSafari5, /**
* True if the detected browser is Safari 5.0.x.
* @type Boolean
*/
isSafari5_0 : isSafari5_0, /**
* True if the detected browser is Safari 2.x.
* @type Boolean
*/
isSafari2 : isSafari2, /**
* True if the detected browser is Internet Explorer.
* @type Boolean
*/
isIE : isIE, /**
* True if the detected browser is Internet Explorer 6.x.
* @type Boolean
*/
isIE6 : isIE6, /**
* True if the detected browser is Internet Explorer 7.x.
* @type Boolean
*/
isIE7 : isIE7, /**
* True if the detected browser is Internet Explorer 7.x or lower.
* @type Boolean
*/
isIE7m : isIE6 || isIE7, /**
* True if the detected browser is Internet Explorer 7.x or higher.
* @type Boolean
*/
isIE7p : isIE && !isIE6, /**
* True if the detected browser is Internet Explorer 8.x.
* @type Boolean
*/
isIE8 : isIE8, /**
* True if the detected browser is Internet Explorer 8.x or lower.
* @type Boolean
*/
isIE8m : isIE6 || isIE7 || isIE8, /**
* True if the detected browser is Internet Explorer 8.x or higher.
* @type Boolean
*/
isIE8p : isIE && !(isIE6 || isIE7), /**
* True if the detected browser is Internet Explorer 9.x.
* @type Boolean
*/
isIE9 : isIE9, /**
* True if the detected browser is Internet Explorer 9.x or lower.
* @type Boolean
*/
isIE9m : isIE6 || isIE7 || isIE8 || isIE9, /**
* True if the detected browser is Internet Explorer 9.x or higher.
* @type Boolean
*/
isIE9p : isIE && !(isIE6 || isIE7 || isIE8), /**
* True if the detected browser is Internet Explorer 10.x.
* @type Boolean
*/
isIE10 : isIE10, /**
* True if the detected browser is Internet Explorer 10.x or lower.
* @type Boolean
*/
isIE10m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10, /**
* True if the detected browser is Internet Explorer 10.x or higher.
* @type Boolean
*/
isIE10p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9), /**
* True if the detected browser uses the Gecko layout engine (e.g. Mozilla, Firefox).
* @type Boolean
*/
isGecko : isGecko, /**
* True if the detected browser uses a Gecko 1.9+ layout engine (e.g. Firefox 3.x).
* @type Boolean
*/
isGecko3 : isGecko3, /**
* True if the detected browser uses a Gecko 2.0+ layout engine (e.g. Firefox 4.x).
* @type Boolean
*/
isGecko4 : isGecko4, /**
* True if the detected browser uses a Gecko 5.0+ layout engine (e.g. Firefox 5.x).
* @type Boolean
*/
isGecko5 : isGecko5, /**
* True if the detected browser uses a Gecko 5.0+ layout engine (e.g. Firefox 5.x).
* @type Boolean
*/
isGecko10 : isGecko10, /**
* True if the detected browser uses FireFox 3.0
* @type Boolean
*/
isFF3_0 : isFF3_0, /**
* True if the detected browser uses FireFox 3.5
* @type Boolean
*/
isFF3_5 : isFF3_5, /**
* True if the detected browser uses FireFox 3.6
* @type Boolean
*/
isFF3_6 : isFF3_6, /**
* True if the detected browser uses FireFox 4
* @type Boolean
*/
isFF4 : 4 <= firefoxVersion && firefoxVersion < 5, /**
* True if the detected browser uses FireFox 5
* @type Boolean
*/
isFF5 : 5 <= firefoxVersion && firefoxVersion < 6, /**
* True if the detected browser uses FireFox 10
* @type Boolean
*/
isFF10 : 10 <= firefoxVersion && firefoxVersion < 11, /**
* True if the detected platform is Linux.
* @type Boolean
*/
isLinux : isLinux, /**
* True if the detected platform is Windows.
* @type Boolean
*/
isWindows : isWindows, /**
* True if the detected platform is Mac OS.
* @type Boolean
*/
isMac : isMac, /**
* The current version of Chrome (0 if the browser is not Chrome).
* @type Number
*/
chromeVersion: chromeVersion, /**
* The current version of Firefox (0 if the browser is not Firefox).
* @type Number
*/
firefoxVersion: firefoxVersion, /**
* The current version of IE (0 if the browser is not IE). This does not account
* for the documentMode of the current page, which is factored into {@link #isIE7},
* {@link #isIE8} and {@link #isIE9}. Thus this is not always true:
*
* Ext.isIE8 == (Ext.ieVersion == 8)
*
* @type Number
*/
ieVersion: ieVersion, /**
* The current version of Opera (0 if the browser is not Opera).
* @type Number
*/
operaVersion: operaVersion, /**
* The current version of Safari (0 if the browser is not Safari).
* @type Number
*/
safariVersion: safariVersion, /**
* The current version of WebKit (0 if the browser does not use WebKit).
* @type Number
*/
webKitVersion: webKitVersion, /**
* True if the page is running over SSL
* @type Boolean
*/
isSecure: isSecure, BLANK_IMAGE_URL:(isIE6 || isIE7) ? '/' +'www.sencha.com/s.gif' : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
value:function(v,defaultValue,allowBlank)
{
return Ext.isEmpty(v,allowBlank) ?defaultValue:v;
},
// escape regular expression
escapeRe:function(s)
{
return s.replace(/([-.*+?\^${}()|\[\]\/\\])/g, "\\$1");
},
addBehaviors:function(o)
{
if(!Ext.isReady)
{
Ext.onReady(function(){
Ext.addBehaviors(o);
});
}
else
{
var cache = {}, parts,b,s;
for(b in o)
{
if((parts = b.split('@'))[1])
{
s = parts[0];
if(!cache[s])
{
cache[s] = Ext.select(s);
} cache[s].on(parts[1],o[b]);
}
} cache = null;
}
}, getScrollbarSize:function(force)
{
if(!Ext.isReady)
{
return {};
} if(force || !scorllbarSize)
{
var db = document.body,div = document.createElement('div'); div.style.width = div.style.height = '100px';
div.style.overflow = 'scroll';
div.style.position = 'absolute'; db.appendChild(div); scrollbarSize = {
width :div.offsetWidth - div.clientWidth,
height:div.offsetHeight - div.clientHeight
}; db.removeChild(div);
} return scrollbarSize;
}, getScrollBarWidth:function(force)
{
var size = Ext.getScrollbarSize(force);
return size.width +2;
},
copyTo:function(dest,source,names,usePrototypeKeys)
{
if(Ext.type(names)=='string')
{
names = names.split(/[,;\s]/);
} var n,nLen = names ? names.length :0,name;
for(n =0 ;n<nLen;n++)
{
if(userPrototypeKeys || score.hasOwnProperty(name))
{
dest[name]=source[name];
}
} return dest;
},
destoryMembers:function(o)
{
for(var i=1,a=arguemnts,len = a.length;i<len;i++)
{
Ext.destory(a[i]);
delete o[a[i]];
}
},
log:log || nullLog,
partition:function(arr,truth)
{
var ret = [[],[]],a,v,aLen = arr.length; for(a = 0;a<aLen;a++)
{
v =arr[a];
ret[(truth && truth(v,a,arr)) || (!truth && v) ? 0 :1].push(v);
}
},
invoke:function(arr,methodName)
{
var ret = [],args = Array.prototype.slice.call(arguments,2),
a,v,aLen = arr.length;
for(a = 0;a<aLen;a++)
{
v = arr[a];
if(v && typeof v[methodName]=='function')
{
ret.push(v[methodName].apply(v,args));
}
else
{
ret.push(undefined);
}
} return ret; },
zip:function()
{
var parts = Ext.partition(arguments,function(val){return typeof val!='function';}),
arrs = parts[0],
fn=parts[1][0],
len=Ext.max(Ext.pluck(arrs,'length')),
ret = [],i,j,aLen; for(i=0;i<len;i++)
{
ret[i] = [];
if(fn)
{
ret[i]=fn.apply(fn,Ext.pluck(arrs,i));
}
else
{
for(j=0,aLen = arrs.length;j<aLen;j++)
{
ret[i].push(arrs[j][i]);
}
}
} return ret;
},
toSentence:function(items,connector)
{
var length = items.length,head,tail;
if(length<1)
{
return items[0];
}
else
{
head = item.slice(0,length-1);
tail = item[length-1];
return Ext.util.Format.format("{0} {1} {2}",head.join(", "),eonnector || 'and' ,tail);
}
},
seteGlyhpFontFamily:function(fontFamily)
{
Ext._glyphFontFamily = ontFamily;
},
useShims:isIE6 });//end Ext.apply(Ext,{}); }());
Ext.application = function(config)
{
var App,paths,ns; if(typeof config === 'string')
{
Ext.require(config,function(){
App = Ext.ClassManager.get(config);
});
}
else
{
Ext.loader.setPath(config.name,config.appFolder |'app'); if(paths = config.paths)
{
for(ns in paths)
{
if(paths.hasOwnPropety(ns))
{
Ext.Loader.setPath(ns,paths[ns]);
}
}
} config['paths processed'] = true; Ext.define(config.name + '.$application',Ext.apply({extend:'Ext.app.Application'},config),function(){App = this});
} Ext.onReady(function(){
Ext.app.Application.instance = new App();
});
}
Ext原码学习之Ext-more.js的更多相关文章
- Ext原码学习之Ext.js
1 // JavaScript Document 2 //定义全局Ext变量 3 var Ext = Ext ||{}; 4 Ext._startTime = new Date().getTime() ...
- Ext原码学习之lang-Object.js
// JavaScript Document (function(){ var TemplateClass = function(){}, ExtObject = Ext.Object = { cha ...
- Ext原码学习之lang-Array.js
// JavaScript Document //Array 方法 (function(){ var arrayPrototype = Array.prototype, slice = arrayPr ...
- Ext JS学习第六天 Ext自定义类(一)
此文来记录学习笔记 •我们在之前的学习,已经对ExtJS有了一个初步的认识,那么如果要学好ExtJS,对于javascript是必须的,也就是说,对于理解ExtJS底层基础架构的理解也是必须的.那么我 ...
- 【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局
Ext.Net用法概览 Ext.Net还是很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,原文博主推荐书籍:<Ext.Net Web 应用程序开发教程>,是英文的 ...
- ExtJS学习(一)Ext自定义类实现
工作中项目需要extjs,所以学习一下,做个笔记防止遗忘了.以后回忆起来也方便. 首先下载extjs官网地址:http://extjs.org.cn/ 下载以后的目录结构: 先写一个入门的程序吧自定义 ...
- Underscore.js 源码学习笔记(上)
版本 Underscore.js 1.9.1 一共 1693 行.注释我就删了,太长了… 整体是一个 (function() {...}()); 这样的东西,我们应该知道这是一个 IIFE(立即执行 ...
- Extjs 学习总结-Ext.define自定义类
本教程整理了extjs的一些基本概念及其使用,包括自定义类(Ext.define).数据模型.代理等.本节介绍使用Ext.define自定义类 使用Ext.define自定义类 1. 首先看看js中自 ...
- ExtJS4.2学习(二)Ext统一组件模型——Panel
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-06/171.html --------------- ...
随机推荐
- springboot的build.gradle增加阿里仓库地址以及eclipse增加lombok
该随笔仅限自己记录,请谨慎参考!! 为什么把这2块内容放一个标题里? 发现lombok和eclipse结合的一些问题 关于lombok如何与eclipse结合,网上应该有很多教程,我这块已经做过了,但 ...
- VMware客户端vSphere Web Client新建虚拟机
1.说明 vSphere Web Client是为管理员提供的一款通用的. 基于浏览器的VMware管理工具, 能够监控并管理VMware基础设施. 由于需要登录的宿主机安装的是ESXi-6.5.0, ...
- 更便捷的Mybatis增强插件——EasyMybatis
easy-mybatis是一个对Mybatis的增强框架(插件).在Spring集成Mybatis的基础上,将项目开发中对数据库的常用操作统一化.使用本框架可以很便捷的对数据库进行操作,提高开发效率, ...
- MATLAB/SIMULINK生成代码错误之change the default character encoding setting
SIMULINK点击生成C代码报错 错误提示: Error encountered while executing PostCodeGenCommand for model 'RTW_sc3': Cl ...
- Count Sequences
\(考虑问题的转换,即把用n个球,分为r-l+2个部分,其中第1部分表示该区域的球值为l,第二部分表示该区域的球值为l+1\) \(......第r-l+2部分为不选该区域的球\) \(该问题等价于在 ...
- Python web框架开发 - WSGI协议
浏览器进行http请求的时候,不单单会请求静态资源,还可能需要请求动态页面. 那么什么是静态资源,什么是动态页面呢? 静态资源 : 例如html文件.图片文件.css.js文件等,都可以算是静态资源 ...
- JS 判断上传文件类型
var video_src_file = $("#video_src_file").val(); var fileTypes = new Array("flv" ...
- 上传自己的pip模块
对于模块开发者本质上需要做3件事: 编写模块 将模块进行打包 上传到PyPI(需要先注册PyPI账号) 注册PyPI账号 安装上传工具 基于工具进行上传 对于模块的使用者来说,只需要做2件事: 通过p ...
- 强化学习实战 | 自定义gym环境之显示字符串
如果想用强化学习去实现扫雷.2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来.上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符串的信息,反而是通过 ...
- Echart可视化学习(二)
文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 正文: 页面主体部分 设置测试样式 ...