邻近度(Proximity)描述了地理空间中两个地物距离相近的程度,是空间分析的一个重要手段。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ToolTitle</title> <script language="javascript" src="ToolsCommon65.js"></script> <link rel="StyleSheet" href="Style.css" type="text/css">
<style>
.MenuButton
{
height: 78px;
width: 65px;
margin: 5px;
white-space: normal;
}
.MenuButtonHighlight
{
color: Red;
font-weight: bold;
}
</style>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="border: 0;
overflow: auto; background-color: #ffffff" id="Body" onload="Init()" onunload="Reset(0,0);DeleteTarget();">
<!--oncontextmenu="return false;" onclick="bHide=true;HideOptionsNow()" > -->
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td id="TopAreaTD" height="50px" width="100%" valign="middle" style="background-color: #CAD8E2">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="12px"></td>
<td width="55px"><img src="data:images/ProximityIcon.gif" align="absmiddle" /></td>
<td id="TitleTD" align="center" class="s12b i18n">ToolName</td>
<!--<td valign="top" align="right" id="CloseHelpTd"><img src="../CommonImg/help.gif" border="0" class="i18n" alt="help" title="help" onclick="DisplayHelpPopup6 (SGLang.i18nFile('help.html'),SGLang.i18n('help'))" style="cursor: pointer;"></td>-->
</tr>
</table>
</td>
</tr>
<tr height="1px">
<td style="background-repeat: repeat-x;" background="../CommonImg/separator.gif">
</td>
</tr>
<tr>
<td>
<br />
</td>
</tr>
</table>
<table border="0" cellspacing="1" cellpadding="3" bgcolor="#ffffff" class="s8" width="100%">
<tr >
<td class="s8b">
<label for="createAs" class="i18n">Text30</label>
</td>
<td align="left">
<input id="targetID" type="text" value="" style="width:100px" readonly="readonly"/>
<!-- &nbsp;&nbsp;<button id="SetTargetFromSelected" type="button" onclick="SetTargetFromSelectedPress()"><span id="Span1" class="i18n">Text31</span></button>
&nbsp;&nbsp;<button id="CreateTarget" type="button" onclick="CreateTargetPress()"><span id="Span3" class="i18n">Text43</span></button>-->
<br />
<a id="SetTargetFromSelected" class="link i18n" onclick="SetTargetFromSelectedPress();">Text31</a> |
<a id="CreateTarget" class="link i18n" class="link" onclick="CreateTargetPress();">Text43</a></div>
</td>
</tr>
<tr class='TableOtherLine'>
<td class="s8b">
<label for="createAs" class="i18n">Text32</label>
</td>
<td align="left">
<input id="trackedGroupID" type="text" value="" style="width:100px" readonly="readonly"/>
<!--&nbsp;&nbsp;<button id="SetGroupFromSelected" type="button" onclick="SetGroupFromSelectedPress()"><span id="Span2" class="i18n">Text31</span></button>-->
<br />
<a id="SetGroupFromSelected" class="link i18n" onclick="SetGroupFromSelectedPress();">Text31</a> <span id="Span1" >
</td>
</tr>
<tr >
<td align="top" class="s8b i18n">
<label for="createAs" class="i18n">Text33</label>
</td>
<td align="left">
<input id="warningRadiusID" type="text" value="700" style="width:100px; background-color:#FFD7C1"/><label for="createAs" class="i18n">Text35</label>
</td>
</tr>
<tr class='TableOtherLine'>
<td class="s8b">
<label for="createAs" class="i18n">Text34</label>
</td>
<td align="left">
<input id="dangerRadiusID" type="text" value="300" style="width:100px; background-color:#FFD7D7;"/><label for="createAs" class="i18n">Text35</label>
</td>
</tr>
<tr >
<td class="s8b">
<label for="createAs" class="i18n">Text42</label>
</td>
<td align="left">
<input id="chkTint" type="checkbox" style="width:20px;" onclick="bTint = document.getElementById('chkTint').checked;" checked="checked"/>
</td>
</tr>
<tr>
<td colspan="2" valign="top" class="s8b i18n" align="center"> <button id="startStopButton" class="MenuButton" onclick="StartStop()"><img src="data:images/startCursor.gif" /><br /> <span id="startstopSpan" class="i18n">Text36</span></button> </td>
</tr>
</table> <object id="SGWorld" classid="CLSID:3a4f9197-65a8-11d5-85c1-0001023952c1"> </object> <script language="JavaScript">
function DetectTEMode()
{
var vMode = document.documentMode;
var rMode = 'IE5 Quirks Mode';
if(vMode == 8){
rMode = 'IE8 Standards Mode';
} else if(vMode == 7){
rMode = 'IE7 Strict Mode';
} else if(vMode == 9){
rMode = 'IE9 Strict Mode';
}
//alert('Rendering in: ' + rMode);
}
DetectTEMode(); //***delete the uneeded ones at the end
var gDisplayHeadingSlope ;
var gDisplayMinMaxSlope ;
var gDisplayCoordinateInfo;
var gLastClickMouseX;
var gLastClickMouseY;
///var popupMsg;
var timeoutID;
var measureDistance;
var warningSlope;
var alertSlope;
var arrowMaxPositive;
var arrowMaxNegative;
var arrowHeading;
var labelMaxPositive;
var labelMaxNegative;
var labelHeading;
var labelCoordinateInfo;
var groupID;
var colorNormalPositive ;
var colorNormalNegative;
var colorHeading;
var colorLinewarning ;
var colorLineAlert;
var colorLabel;
var colorTextNormal;
var colorTextWarning;
var colorTextAlert;
var gNameIndex = 1; var cameraClickPos;
var rootId; //Proximity globals
var isStart = false;
var warningRadius;
var dangerRadius;
var targetObj;
var trackedObjArray = [];
var colorLineWarning;
var colorLineDanger;
var bTint = true;
var tmpGroup;
var bInPlaceTarget = false;
var manualTargetLabel; //--------------
// Init
function Init() { targetObj = null;
manualTargetLabel = null; SGWorld.AttachEvent("onFrame", onFrame); colorLineWarning = SGWorld.Creator.CreateColor(238, 173, 23, 255);
colorLineDanger = SGWorld.Creator.CreateColor(255, 117, 117, 255); Reset(true, false); TargetPathNameParam = GetParamValue("TargetPathName", "");
if (TargetPathNameParam != "")
SetTargetFromPathName(TargetPathNameParam);
else {
if (SGWorld.ProjectTree.FindItem("Target") != 0)
SetTargetFromPathName("Target");
} TrackedGroupPathNameParam = GetParamValue("TrackedGroupPathName", "");
if (TrackedGroupPathNameParam != "")
SetTrackedGroupFromPathName(TrackedGroupPathNameParam);
else {
if (SGWorld.ProjectTree.FindItem("Tracked Group") != 0)
SetTrackedGroupFromPathName("Tracked Group");
} if (document.getElementById("targetID").value != "" && document.getElementById("trackedGroupID").value != "")
StartStop(); } //------------
//onFrame
function onFrame() {
if (isStart == false || targetObj == null)
return; displayProximityInfo(); } //--------------
// SetTargetFromSelectedPress
function SetTargetFromSelectedPress() {
var node = SGWorld.ProjectTree.GetNextItem("", 10);
if (node == 0 || SGWorld.ProjectTree.IsGroup(node)) {
alert(SGLang.i18n("Text38"));
return;
}
SetTarget(node);
} //--------------
// SetTargetFromPathName
function SetTargetFromPathName(pathName) {
var node = SGWorld.ProjectTree.FindItem(pathName);
if (node == 0 || SGWorld.ProjectTree.IsGroup(node)) {
alert(SGLang.i18n("Text38"));
return;
}
SetTarget(node);
} //--------------
// SetTarget
function SetTarget(node) { try {
var object = SGWorld.ProjectTree.GetObject(node);
var targetPosition = object.Position;
if (!targetPosition) {
alert(SGLang.i18n("Text38"));
return;
}
document.getElementById("targetID").value = object.TreeItem.Name;
DeleteTarget();
targetObj = object;
}
catch (err) {
alert(SGLang.i18n("Text38"));
return;
}
} //--------------
// CreateTargetPress
function CreateTargetPress() {
if (!bInPlaceTarget) {
bInPlaceTarget = true;
SGWorld.AttachEvent("OnLButtonUp", CreateTarget);
SGWorld.AttachEvent("OnRButtonUp", CreateTargetRButtonUp);
SGWorld.AttachEvent("OnInputModeChanged", ResetCreateTarget); document.getElementById("CreateTarget").innerText = SGLang.i18n("Text46"); SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur");
SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text44"));
}
else {
ResetCreateTarget();
}
} //--------------
// CreateTargetRButtonUp
function CreateTargetRButtonUp(Flags, X, Y) {
ResetCreateTarget();
} //--------------
// ResetCreateTarget
function ResetCreateTarget() {
document.getElementById("CreateTarget").innerText = SGLang.i18n("Text43"); SGWorld.DetachEvent("OnLButtonUp", CreateTarget);
SGWorld.DetachEvent("OnInputModeChanged", ResetCreateTarget);
bInPlaceTarget = false;
SGWorld.Window.SetInputMode(0);
} //--------------
// CreateTarget
function CreateTarget(Flags, X, Y) {
var CursorCoord = SGWorld.Window.pixelToWorld(X, Y);
if (CursorCoord == null)
ResetCreateTarget(); var imageLabelStyle = SGWorld.Creator.CreateLabelStyle(0);
imageLabelStyle.Scale = 1.0; DeleteTarget(); manualTargetLabel = SGWorld.Creator.CreateImageLabel(CursorCoord.Position, abspath() + "/Images/icon.png", imageLabelStyle, SGWorld.ProjectTree.HiddenGroupID, SGLang.i18n("Text45"));
manualTargetLabel.SaveInFlyFile = false;
document.getElementById("targetID").value = manualTargetLabel.TreeItem.Name;
targetObj = manualTargetLabel;
ResetCreateTarget();
} //--------------
// DeleteTarget
function DeleteTarget() {
if (manualTargetLabel != null) {
SGWorld.Creator.DeleteObject(manualTargetLabel.ID);
manualTargetLabel = null;
}
} //--------------
// SetGroupFromSelectedPress
function SetGroupFromSelectedPress() {
var node = SGWorld.ProjectTree.GetNextItem("", 10);
SetTargetGroup(node);
} //--------------
// SetTrackedGroupFromPathName
function SetTrackedGroupFromPathName(pathName) {
var node = SGWorld.ProjectTree.FindItem(pathName);
SetTargetGroup(node);
} //--------------
// SetGroupFromSelectedPress
function SetTargetGroup(nodeID) {
var node = nodeID;
/*To allow layers as well ViewshedQuery tool uses: if (node == 0 || !(SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))) { */
if (node == 0 || SGWorld.ProjectTree.IsLayer(node)) {
alert(SGLang.i18n("Text39"));
return;
}
if (SGWorld.ProjectTree.IsGroup(node)) {//group
EmptytrackedObjArray();
searchObjects2(node, AddObjectToArray);
document.getElementById("trackedGroupID").value = SGWorld.ProjectTree.GetItemName(node);
}
else {//object
var object = SGWorld.ProjectTree.GetObject(node);
var trackedPosition = object.Position;
if (!trackedPosition) {
alert(SGLang.i18n("Text38"));
return;
} EmptytrackedObjArray();
PushtrackedObj2Array(object);
document.getElementById("trackedGroupID").value = object.TreeItem.Name;
} } //--------------
// StartStop
function StartStop() {
if (!isStart) {
isStart = true;
document.getElementById("targetID").disabled = true;
document.getElementById("SetTargetFromSelected").disabled = true;
document.getElementById("CreateTarget").disabled = true;
document.getElementById("trackedGroupID").disabled = true;
document.getElementById("SetGroupFromSelected").disabled = true;
document.getElementById("warningRadiusID").disabled = true;
document.getElementById("dangerRadiusID").disabled = true;
document.getElementById("chkTint").disabled = true; startstopSpan.innerHTML = SGLang.i18n("Text37"); warningRadius = document.getElementById("warningRadiusID").value;
dangerRadius = document.getElementById("dangerRadiusID").value; }
else {
Reset(false, false);
} } //------------------
// Reset
//------------------
function Reset(FirstTime, FromMouseInputMode) { try {
startstopSpan.innerHTML = SGLang.i18n("Text36");
if (isStart && SGWorld.Project.Name != "") {
isStart = false;
deleteObjs();
}
isStart = false; document.getElementById("targetID").disabled = false;
document.getElementById("SetTargetFromSelected").disabled = false;
document.getElementById("trackedGroupID").disabled = false;
document.getElementById("SetGroupFromSelected").disabled = false;
document.getElementById("warningRadiusID").disabled = false;
document.getElementById("dangerRadiusID").disabled = false;
document.getElementById("chkTint").disabled = false;
document.getElementById("CreateTarget").disabled = false;
}
catch (err) { isStart = false; }
} //-------------
// AddObjectToArray
function AddObjectToArray(object, type, altitudeType) { SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text40"));
SGWorld.ProjectTree.EnableRedraw(0); if (type == 1) {
//In the future may want to work on the pivot of the polyline. was: if (!DrawOnPolyline(geometry, type, altitudeType))
return false;
}
else if (type == 2)
{
//In the future may want to work on the pivot of the polyline. was: if (!DrawOnPolygon(geometry, type, altitudeType))
return false;
}
else // Selected points
{
PushtrackedObj2Array(object);
}
return true;
} //-------------------
//searchObjects2 - modified from ToolsCommon65 searchGeometries
function searchObjects2(parentNode, callbackFunc) {
SGWorld.ProjectTree.EnableRedraw(0);
searchObjectsLeaf2(parentNode, callbackFunc);
SGWorld.ProjectTree.EnableRedraw(1);
}
//-------------------
// searchObjectsLeaf2 - modified from ToolsCommon65 searchGeometriesLeaf2
function searchObjectsLeaf2(parentNode, callbackFunc) { if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer
{
var layer = SGWorld.ProjectTree.GetLayer(parentNode);
var featureGroups = layer.FeatureGroups;
for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
{
var featureGroup = featureGroups.Item(i);
var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
var features = featureGroup.Features;
for (var j = 0; j < features.Count; j++) {
var ret;
if (featureGroup.GeometryType != 0)
ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
else {
if (features.Item(j).Geometry.GeometryType == 0) // Point
{
var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
}
}
if (!ret)
return;
}
}
}
else {
var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
while (node != "") {
if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
searchObjectsLeaf2(node, callbackFunc);
else {
var Object = SGWorld.Creator.GetObject(node);
if (Object != null) {
var altitudeType = Object.Position.AltitudeType;
var ret;
if (Object.ObjectType == 1 || Object.ObjectType == 2)
ret = callbackFunc(Object/*.Geometry*/, Object.ObjectType, altitudeType);
else
ret = callbackFunc(Object/*.Position*/, Object.ObjectType, altitudeType); if (!ret)
return;
}
} node = SGWorld.ProjectTree.GetNextItem(node, 13);
}
}
} //--------------
// EmptytrackedObjArray
function EmptytrackedObjArray() {
while (trackedObjArray.length > 0) {
trackedObjArray.pop();
}
} //--------------
// PushtrackedObj2Array
function PushtrackedObj2Array(object) {
trackedObjArray.push({
"object": object,
"lineObj": null,
"distLabelObj": null,
"level": "undefined"
});
} //------------
//deleteObjs
function deleteObjs() {//In the future move logic to deleteObj that can be called from here and from other places.
try {
//while (trackedObjArray.length > 0)
for (var i = 0; i < trackedObjArray.length; i++) {
//var item = trackedObjArray.pop();
var item = trackedObjArray[i];
if (item.lineObj != null) {
SGWorld.Creator.DeleteObject(item.lineObj.ID);
item.lineObj = null;
}
if (item.distLabelObj != null) {
SGWorld.Creator.DeleteObject(item.distLabelObj.ID);
item.distLabelObj = null;
}
item.level = "undefined";
if (bTint) item.object.Terrain.Tint = SGWorld.Creator.CreateColor(0, 0, 0, 0); }
}
catch (err) { alert(SGLang.i18n("Text41") + err); Reset(0, 0); }
} //------------
//displayProximityInfo
function displayProximityInfo() {
//debugger;
if (!isStart || targetObj == null ) {
return false;
}
try {
for (var i = 0; i < trackedObjArray.length; i++) { //calculate distance
var dist = SGWorld.CoordServices.GetDistance3D(targetObj.Position, trackedObjArray[i].object.Position);
if (dist <= warningRadius) {
//Create/Update polygon
if (trackedObjArray[i].lineObj == null) {
var absoluteTargetObj = targetObj.Position.ToAbsolute(0);
var absoluteTrackedObj = trackedObjArray[i].object.Position.ToAbsolute(0);
var pointsArray = [absoluteTargetObj.X, absoluteTargetObj.Y, absoluteTargetObj.Altitude, absoluteTrackedObj.X, absoluteTrackedObj.Y, absoluteTrackedObj.Altitude];
trackedObjArray[i].lineObj = SGWorld.Creator.CreatePolylineFromArray(pointsArray, colorLineDanger, 3, SGWorld.ProjectTree.HiddenGroupID); //leave this comment: ATC_TERRAIN_ABSOLUTE = 3
trackedObjArray[i].lineObj.SaveInFlyFile = false;
trackedObjArray[i].lineObj.SetParam(5440, 1);
trackedObjArray[i].lineObj.LineStyle.Width = -2
}
else {
trackedObjArray[i].lineObj.Geometry.StartEdit()
//update second point
var absolutePosition = trackedObjArray[i].object.Position.ToAbsolute(0);
trackedObjArray[i].lineObj.Geometry.Points.Item(1).X = absolutePosition.X;
trackedObjArray[i].lineObj.Geometry.Points.Item(1).Y = absolutePosition.Y;
trackedObjArray[i].lineObj.Geometry.Points.Item(1).Z = absolutePosition.Altitude;
trackedObjArray[i].lineObj.Geometry.EndEdit()
}
//Create/Update Text ***arik: Does it look good? what to do when below ground
if (trackedObjArray[i].distLabelObj == null) {
var absoluteTargetObj = targetObj.Position.ToAbsolute(0);
var absoluteTrackedObj = trackedObjArray[i].object.Position.ToAbsolute(0);
var middlePosition = absoluteTargetObj.MoveToward(absoluteTrackedObj, dist / 2);
middlePosition.Altitude = middlePosition.Altitude + warningRadius / 40; var labelStyle = SGWorld.Creator.CreateLabelStyle(0);
labelStyle.Bold = true;
//labelStyle.LineToGround = false;
labelStyle.Scale = warningRadius / 20;
labelStyle.FontSize = 10; trackedObjArray[i].distLabelObj = SGWorld.Creator.CreateTextLabel(middlePosition, dist.toFixed(2), labelStyle, SGWorld.ProjectTree.HiddenGroupID);
trackedObjArray[i].distLabelObj.SaveInFlyFile = false; }
else {
var absoluteTargetObj = targetObj.Position.ToAbsolute(0);
var absoluteTrackedObj = trackedObjArray[i].object.Position.ToAbsolute(0);
var middlePosition = absoluteTargetObj.MoveToward(absoluteTrackedObj, dist / 2);
middlePosition.Altitude = middlePosition.Altitude + warningRadius / 40;
trackedObjArray[i].distLabelObj.Position = middlePosition;
trackedObjArray[i].distLabelObj.Text = dist.toFixed(2);
} //Color objects
var newLevel = (dist > dangerRadius) ? "warning" : "danger";
if (trackedObjArray[i].level != newLevel) {
trackedObjArray[i].lineObj.LineStyle.Color = (newLevel == "danger") ? colorLineDanger : colorLineWarning;
trackedObjArray[i].distLabelObj.Style.TextColor = (newLevel == "danger") ? colorLineDanger : colorLineWarning;
if (bTint) {
trackedObjArray[i].object.Terrain.Tint = (newLevel == "danger") ? colorLineDanger : colorLineWarning;
trackedObjArray[i].object.Terrain.Tint.SetAlpha(0.5);
}
} }
else {
if (trackedObjArray[i].lineObj != null) {
SGWorld.Creator.DeleteObject(trackedObjArray[i].lineObj.ID);
trackedObjArray[i].lineObj = null;
}
if (trackedObjArray[i].distLabelObj != null) {
SGWorld.Creator.DeleteObject(trackedObjArray[i].distLabelObj.ID);
trackedObjArray[i].distLabelObj = null;
}
trackedObjArray[i].object.Terrain.Tint = SGWorld.Creator.CreateColor(0, 0, 0, 0);
} } }
catch (err) { alert(SGLang.i18n("Text41") + err); Reset(0, 0); }
} </script> </body>
</html>

SkylineGlobe 邻近度(Proximity)分析JavaScript源代码的更多相关文章

  1. 分析setting源代码获取sd卡大小

    分析setting源代码获取sd卡大小 android系统有一个特点,即开源,我们可以得到任何一个应用的源代码,比如我们不知道这样的android代码怎么写,我们可以打开模拟器里面的设置(settin ...

  2. 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现

    本文转载自http://www.ibm.com/developerworks/cn/java/j-lo-tree/ 目录: TreeSet 和 TreeMap 的关系 TreeMap 的添加节点 Tr ...

  3. C#/vbscript/JS如何加密保护HTML/javascript源代码

    原文地址:http://www.coding123.net/article/20121008/encrypt-javascript-by-charp-vbscript.aspx 本文通过将源代码进行u ...

  4. Memcached源代码分析 - Memcached源代码分析之消息回应(3)

    文章列表: <Memcached源代码分析 - Memcached源代码分析之基于Libevent的网络模型(1)> <Memcached源代码分析 - Memcached源代码分析 ...

  5. 如何捕获和分析 JavaScript Error

    前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...

  6. JS高级调试技巧:捕获和分析 JavaScript Error详解

    前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...

  7. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  8. 从一道面试题分析javascript闭包

    据说是一不注意就会做错的五道javascript面试题之一,我们来看看这道题长什么样 function Container( properties ) { var objthis = this; fo ...

  9. Java提高篇——通过分析 JDK 源代码研究 Hash 存储机制

    HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实 ...

随机推荐

  1. spring boot 随手记

    1.当加入security 起步依赖后,如果不做任何手动配置的话,默认会跳转到一个登录页面,不管你喜不喜欢,所有的请求都必须登录,用户名和密码是保存在内存中的, 默认用户名是user  密码在控制台里 ...

  2. STOMP

    STOMP: 说明:STOMP is a simple text-orientated messaging protocol. 面向文本消息协议 spring 之stomp https://www.c ...

  3. JavaSE 软件工程师 认证考试试卷2

    JavaSE 软件工程师 认证考试试卷   笔试   考试时间150分钟 总分 100分   姓    名_______________________ 身份证号___________________ ...

  4. 你的BI应用处于什么阶段?解读Gartner BI成熟度模型

    文 | 帆软数据应用研究院 水手哥 本文出自:知乎专栏<帆软数据应用研究院>——数据干货&资讯集中地   无论国内还是国外,多数企业的BI和分析平台建设之路并不平坦:一是对自身的环 ...

  5. 一个Web页面的问题分析

    几个月之前我接到一个新的开发任务,要在一个旧的Web页面上面增添一些新的功能.在开发的过程中发现旧的代码中有很多常见的不合适的写法,结合这些问题,如何写出更好的,更规范的,更可维护的代码,就是这篇文章 ...

  6. [Spark] Spark 安装配置

    原文地址:https://www.cnblogs.com/memento/p/9148732.html Windows 上的单机版安装 下载地址:http://spark.apache.org/dow ...

  7. jmeter利用自身代理录制脚本

    在利用代理录制脚本时一定要安装java jdk,不然不能录制的. 没有安装过java jdk安装jmeter后打开时会提示安装jdk,但是mac系统中直接打开提示安装jdk页面后下载的java并不是j ...

  8. mybatis学习--缓存(一级和二级缓存)

    声明:学习摘要! MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级) ...

  9. [转]js版的md5()

    转自:http://blog.163.com/a_hc/blog/static/1623434200831832441896/ <script language=javascript>/* ...

  10. win10怎么查看进程

    1.在任务栏右击-任务管理器 2.