主頁 > 軟體設計 > JavaScript之全域函式詳解

JavaScript之全域函式詳解

2021-09-01 14:58:52 軟體設計

JavaScript全域函式

  • 前言
  • 一、JavaScript全域函式有哪些?
  • 二、JavaScript全域函式詳解?
    • 2.1.Eval()
      • 2.1.1.例子一
      • 2.1.2.例子二
      • 2.1.3.例子三(決議JSON字串)
        • 2.1.3.1.eval決議函式:
        • 2.1.3.2.JSON字串轉換為物件的兩種方法
        • 2.1.3.3.對于服務器回傳的JSON字串,如果jquery異步請求將 type(一般為這個配置屬性)設為"json",或者利 用`$.getJSON()`方法獲得服務器回傳,那么就不需要`eval()`方法了,因為這時候得到的結果已經是json物件了,只需直接呼叫該物件即可,這里以`$.getJSON`方法為例說明資料處理方法:
        • 2.1.3.4.補充:eval()決議的JSON的key可以不帶""
    • 2.2.decodeURI()與 decodeURIComponent() -- 解碼函式
    • 2.3.encodeURI()與encodeURIComponent() --- 編碼函式
    • 2.4.escape()
    • 2.5.isFinite()
    • 2.6.isNaN()
      • 2.6.1.isNaN檢測的機制:首先驗證當前要檢測的值是否為數字型別的,如果不是,瀏覽器會默認的把值轉換為數字型別
      • 2.6.2.當前檢測的值已經是數字型別,是有效數字回傳false,不是回傳true(數字型別中只有NaN不是有效數字,其余都是有效數字)
    • 2.7.Number()
    • 2.8.parseInt()與parseFloat()
    • 2.9.string() --- 與toString()同
    • 2.10.unescape()


前言

今天在搬磚的時候頁面上有個根據傳過來的演算法通過js全域函式eval()進行計算的js需求 屬實有被惡心到 今天博主就整理下JavaScript的全域函式 防止以后再被這種問題使絆子 也希望對大家有所幫助

一、JavaScript全域函式有哪些?

函式描述
decodeURI()解碼某個編碼的 URI,
decodeURIComponent()解碼一個編碼的 URI 組件,
encodeURI()把字串編碼為 URI,
encodeURIComponent()把字串編碼為 URI 組件,
escape()對字串進行編碼,
eval()計算 JavaScript 字串,并把它作為腳本代碼來執行,
isFinite()檢查某個值是否為有窮大的數,
isNaN()檢查某個值是否是數字,
Number()把物件的值轉換為數字,
parseFloat()決議一個字串并回傳一個浮點數,
parseInt()決議一個字串并回傳一個整數,
String()把物件的值轉換為字串,
unescape()對由 escape() 編碼的字串進行解碼,

二、JavaScript全域函式詳解?

2.1.Eval()

2.1.1.例子一

首先看示例:

eval("x=10;y=20;document.write(x*y)");
document.write("<br>" + eval("2+2"));
document.write("<br>" + eval(x+17));

結果:

200
4
27

特殊用法{}:

document.write("<br>" + eval{3+3}));

這時回傳結果為:6 我們發現{}這樣使用和()其實是一樣的 不同在于:

//{}/2 這種寫法是不支持的
document.write("<br>" + eval{3+3}/2));
//()是可以的
document.write("<br>" + eval(3+3)/2));
//若是{}也想進行此類計算也可以 如下:
document.write("<br>" + eval{(3+3)/2}));

2.1.2.例子二

看一下在其他情況中,eval() 回傳的結果:

eval("2+3")    // 回傳 5
var myeval = eval;    // 可能會拋出 EvalError 例外
myeval("2+3");    // 可能會拋出 EvalError 例外

可以使用下面這段代碼來檢測 eval() 的引數是否合法:

try  {
  alert("Result:" + eval(prompt("Enter an expression:","")));
}catch(exception) {
  alert(exception);
}

2.1.3.例子三(決議JSON字串)

2.1.3.1.eval決議函式:

JSON 不允許包含函式,但你可以將函式作為字串存盤,之后再將字串轉換為函式,

var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.alexa = eval("(" + obj.alexa + ")");
 
document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();

2.1.3.2.JSON字串轉換為物件的兩種方法

  //將JSON字串轉為JS物件的方法一
    var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
    document.write(obj.name + "<br/>");
    //將JSON字串轉為JS物件的方法二
    //JSON格式的字串
    var test1 = '{"name":"qlq","age":25}';
    var obj2 = eval("(" + test1 + ")"); //必須帶圓括號
    document.write(obj2.name + "<br/>" + obj2.age);

結果:

runoob
qlq
25

為什么要 eval這里要添加 eval("(" + test1 + “)”)//”呢?

原因在于:eval本身的問題, 由于json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個陳述句塊來處理,所以必須強制性的將它轉換成一種運算式,

加上圓括號的目的是迫使eval函式在處理JavaScript代碼的時候強制將 括號內的運算式(expression)轉化為物件,而不是作為語 句(statement)來執行,舉一個例子,例如物件字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始 和結束標記,那么{}將會被認為是執行了一句空陳述句,所以下面兩個執行結果是不同的:

alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

對于這種寫法,在JS中,可以到處看到,

如: (function()) {}(); 做閉包操作時等,

alert(dataObj.root.length);//輸出root的子物件數量
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}
//輸出每個root子物件的名稱和值
alert("name:"+item.name+",value:"+item.value);
})

注:對于一般的js生成json物件,只需要將$.each()方法替換為for陳述句即可,其他不變,

2.1.3.3.對于服務器回傳的JSON字串,如果jquery異步請求將 type(一般為這個配置屬性)設為"json",或者利 用$.getJSON()方法獲得服務器回傳,那么就不需要eval()方法了,因為這時候得到的結果已經是json物件了,只需直接呼叫該物件即可,這里以$.getJSON方法為例說明資料處理方法:

$.getJSON("http://www.phpzixue.cn/",{param:"gaoyusi"},function(data){
//此處回傳的data已經是json物件
//以下其他操作同第一種情況
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,回傳false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});

這里特別需要注意的是方式1中的eval()方法是動態執行其中字串(可能是js腳本)的,這樣很容易會造成系統的安全問題,所以可以采用一些規避了eval()的第三方客戶端腳本庫,比如JSON in JavaScript就提供了一個不超過3k的腳本庫,

2.1.3.4.補充:eval()決議的JSON的key可以不帶""

一般的JSON的key必須帶雙引號,也就是類似于{"key":"vslue"}的形式,但是如果用eval("("+json+")")的形式決議字串為JSON的時候,json可以寫為{key:"value"}

2.2.decodeURI()與 decodeURIComponent() – 解碼函式

decodeURI() 可對 encodeURI() 函式編碼過的 URI 進行解碼

如:

 const aaa = '#$ ¥%23ccc/'
  
  console.log(encodeURI(aaa));	// #$%20%EF%BF%A5%2523ccc/
  console.log(decodeURI(aaa));	// #$ ¥%23ccc/
  console.log(encodeURIComponent(aaa));	// %23%24%20%EF%BF%A5%2523ccc%2F
  console.log(decodeURIComponent(aaa));	// #$ ¥#ccc/

我們在獲取地址欄引數是通常封裝成如下函式:

export function getQueryObject(url) {
  url = url || window.location.href
  const search = url.substring(url.lastIndexOf('?') + 1)
  const obj = {}
  const reg = /([^?&=]+)=([^?&=]*)/g
  search.replace(reg, (rs, $1, $2) => {
    const name = decodeURIComponent($1)
    let val = decodeURIComponent($2)
    val = String(val)
    obj[name] = val
    return rs
  })
  return obj
}

2.3.encodeURI()與encodeURIComponent() — 編碼函式

encodeURI():
語法

encodeURI(URIstring)
引數 描述
URIstring 必需,一個字串,含有 URI 或其他要編碼的文本,
回傳值
URIstring 的副本,其中的某些字符將被十六進制的轉義序列進行替換,
說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ’ ( ) ,
該方法的目的是對 URI 進行完整的編碼,因此對以下在 URI 中具有特殊含義的 ASCII 標點符號,encodeURI() 函式是不會進行轉義的:;/?: @&=+$,#

encodeURIComponent() :

語法
encodeURIComponent(URIstring)
引數 描述
URIstring 必需,一個字串,含有 URI 組件或其他要編碼的文本,
回傳值
URIstring 的副本,其中的某些字符將被十六進制的轉義序列進行替換,
說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ’ ( ) ,
其他字符(比如 :;/?😡&=+$,# 這些用于分隔 URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的,
提示和注釋
提示:請注意 encodeURIComponent() 函式 與 encodeURI() 函式的區別之處,前者假定它的引數是 URI 的一部分(比如協議、主機名、路徑或查詢字串),因此 encodeURIComponent() 函式將轉義用于分隔 URI 各個部分的標點符號,

enCodeURI示例:

<html>
<body>

<script type="text/javascript">

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />")
document.write(encodeURI("http://www.w3school.com.cn/My first/")+ "<br />")
document.write(encodeURI(",/?:@&=+$#"))

</script>

</body>
</html>

輸出結果:

http://www.w3school.com.cn
http://www.w3school.com.cn/My%20first/
,/?: @&=+$#

對整個URL進行編碼,而URL的特定識別符號不會被轉碼,

encodeURIComponent() 示例:

<script type="text/javascript">

document.write(encodeURIComponent("http://www.w3school.com.cn"))
document.write("<br />")
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write("<br />")
document.write(encodeURIComponent(",/?:@&=+$#"))

</script>

輸出結果:

http%3A%2F%2Fwww.w3school.com.cn
http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23

對URL中的引數進行編碼,因為引數也是一個URL,如果不編碼會影響整個URL的跳轉,

2.4.escape()

語法
escape(string)
引數 描述
string 必需,要被轉義或編碼的字串,
回傳值
已編碼的 string 的副本,其中某些字符被替換成了十六進制的轉義序列,

說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ - _ + . / ,其他所有的字符都會被轉義序列替換,
注意:ECMAScript v3 反對使用該方法,應用使用 decodeURI()decodeURIComponent() 替代它,

示例:

<script type="text/javascript">

document.write(escape("Visit W3School!") + "<br />")
document.write(escape("?!=()#%&"))

</script>

結果:

Visit%20W3School%21
%3F%21%3D%28%29%23%25%26

2.5.isFinite()

它的作用就是用來判斷引數是否位于最小值和最大值之間,如果位于之間就會回傳true,否則就會回傳false,
在ECMAScript中能夠表示的最小的數值保存在Number.MIN_VALUE中,在大多數瀏覽器中這個值是:5e-324;能夠表示的最大的數值保存在Number.MAX_VALUE中,在大多數瀏覽器中,這個值是1.7976931348623157e+308,如果數值超出了范圍,該值就會自動轉換為一個特殊值infinity,正數的話前面會是Infinity,如果是負數的話會轉換為-Infinity

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
		var num = 1123;
		alert(num);//1123
		var num1 = Number.MAX_VALUE+Number.MAX_VALUE;
		alert(num1);//Infinity
		alert(isFinite(num));//true
		alert(isFinite(num1));//false
		</script>
	</head>
	<body>
	</body>
</html>

可以用來判斷該值是否在正常的數值范圍內

2.6.isNaN()

定義和用法
isNaN() 函式用于檢查其引數是否是非數字值,

isNaN的用法:檢測當前值是否不是有效數字,回傳true代表不是有效數字,回傳false是有效數字

//=>語法:isNaN([value])
var num=12;
isNaN(num); //->檢測num變數存盤的值是否為非有效數字 false

isNaN('13') =>false
isNaN('你好呀') =>true
isNaN(true) =>false
isNaN(false) =>false
isNaN(null) =>false
isNaN(undefined) =>true
isNaN({age:9}) =>true
isNaN([12,23]) =>true
isNaN([12]) =>false
isNaN(/^$/) =>true
isNaN(function(){}) =>true

2.6.1.isNaN檢測的機制:首先驗證當前要檢測的值是否為數字型別的,如果不是,瀏覽器會默認的把值轉換為數字型別

[字串轉數字]
Number('13') ->13
Number('13px') ->NaN 如果當前字串中出現任意一個非有效數字字符,結果則為NaN
Number('13.5') ->13.5 可以識別小數
[布爾轉數字]
Number(true) ->1
Number(false) ->0
[其它]
Number(null) ->0
Number(undefined) ->NaN

把參考資料型別值轉換為數字:先把參考值調取toString轉換為字串,然后再把字串調取Number轉換為數字

2.6.2.當前檢測的值已經是數字型別,是有效數字回傳false,不是回傳true(數字型別中只有NaN不是有效數字,其余都是有效數字)

parseInt / parseFloat等同于Number,也是為了把其它型別的值轉換為數字型別
和Number的區別在于字串轉換分析上

Number:出現任意非有效數字字符,結果就是NaN
parseInt:把一個字串中的整數部分決議出來,parseFloat是把一個字串中小數(浮點數)部分決議出來

parseInt('13.5px') =>13
parseFloat('13.5px') =>13.5
parseInt('width:13.5px') =>NaN 

從字串最左邊字符開始查找有效數字字符,并且轉換為數字,但是一但遇到一個非有效數字字符,查找結束
因此,使用isNaN之前,最好判斷一下資料型別,

function myIsNaN(value) {
  return typeof value === 'number' && isNaN(value);
}

判斷NaN更可靠的方法是,利用NaN為唯一不等于自身的值的這個特點,進行判斷,

function myIsNaN(value) {
  return value !== value;
}

2.7.Number()

Number(obj)為全域函式,不依托于任何物件,用于將引數物件的值轉為數值
例如:

var test1= new Boolean(true);
var test2= new Boolean(false);
var test3= new Date();
var test4= new String("999");
var test5= new String("999 888");

document.write(Number(test1)); 輸出 1
document.write(Number(test2)); 輸出 0
document.write(Number(test3)); 輸出 1256657776588
document.write(Number(test4)); 輸出 999
document.write(Number(test5)); 輸出 NaN

1.引數為string

var a="3.14159";

var a2=Number(a);//結果為3.14159

2.引數為數值

var b=3.14159

var b2=Number(b);//結果為3.14159

2.8.parseInt()與parseFloat()

1.parseInt()

parseInt() 函式可決議一個字串,并回傳一個整數,開頭和結尾的空格是允許的,如果引數是一個數字,那么該方法將去掉小數部分,并且回傳整數部分,

例如:

parseInt(3.14159);//3  引數為數值
parseInt("3.14159");//3   引數為字串

2.parseFloat()

函式可決議一個字串,并回傳一個浮點數,引數可以為數字,如果引數為小數數字,回傳小數數字,如果為整數數字,回傳整數數字

例如:

parseFloat(3.14159)//3.14159
parseFloat("3.14159")//3.14159
parseFloat(5)//5
parseFloat("5");//5

2.9.string() — 與toString()同

把不同的物件轉換為字串:

<script>

var test1 = new Boolean(1);
var test2 = new Boolean(0);
var test3 = new Boolean(true);
var test4 = new Boolean(false);
var test5 = new Date();
var test6 = new String("999 888");
var test7 = 12345;

document.write(String(test1)+ "<br>");
document.write(String(test2)+ "<br>");
document.write(String(test3)+ "<br>");
document.write(String(test4)+ "<br>");
document.write(String(test5)+ "<br>");
document.write(String(test6)+ "<br>");
document.write(String(test7)+ "<br>");

</script>

以上實體輸出結果:

true
false
true
false
Fri Aug 27 2021 16:31:26 GMT+0800 (中國標準時間)
999 888
12345

2.10.unescape()

功能描述:可對通過 escape() 編碼的字串進行解碼,該函式的作業原理是這樣的:通過找到形式為 %xx 和 %uxxxx 的字符序列(x 表示十六進制的數字),
用 Unicode 字符 \u00xx 和 \uxxxx 替換這樣的字符序列進行解碼,
溫馨提示:ECMAScript v3 已從標準中洗掉了 unescape() 函式,并反對使用它,因此應該用 decodeURI() 和 decodeURIComponent() 取而代之,

示例:

var str="Need tips? Visit RUNOOB!";
var str_esc=escape(str);
document.write(str_esc + "<br>")
document.write(unescape(str_esc))

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/296651.html

標籤:其他

上一篇:分享9款“神器級”的網站,你值得擁有!不收藏簡直是巨大的損失

下一篇:qsort庫函式排序

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more