主頁 > 軟體設計 > 云開發---uniapp云開發(四)---本機手機號一鍵登錄以及第三方登陸

云開發---uniapp云開發(四)---本機手機號一鍵登錄以及第三方登陸

2021-02-23 12:47:15 軟體設計

我們來實作一鍵登錄以及第三方登陸
一鍵登錄手登陸機號使用
大學之道亦在自身,努力學習,熱血青春
如果對編程感興趣可以加入我們的qq群一起交流:974178910
在這里插入圖片描述

未經本人允許,禁止轉載

在這里插入圖片描述

非常方便的一個東西
在這里插入圖片描述

uni一鍵登陸

  • 主要以本機號碼為例演示 下面也有其它(微信/qq)
  • 開通一鍵登錄
  • 一鍵登陸
    • 獲取可用服務商
    • 預登陸
      • 小案例
    • 登陸
      • 一鍵登錄拿到access_token
      • access_token換取手機號
        • 在云函式中
        • 客戶端傳送access_token
  • 本機號碼一鍵登錄案例
    • 邏輯和效果
    • 云函式
    • 頁面代碼
  • 微信登陸
    • 效果
    • 登陸
    • 獲取用戶資訊
    • 檢測登陸是否過期
    • 演示代碼
  • QQ登陸
    • 效果
    • 登陸
    • 獲取用戶資訊
    • 檢測登陸是否過期
    • 演示代碼

主要以本機號碼為例演示 下面也有其它(微信/qq)

預登陸只有app支持

開通一鍵登錄

登陸開發者后臺 https://dev.dcloud.net.cn/

在這里插入圖片描述
在這里開通即可 可以先充值一塊錢測驗

一鍵登陸

獲取可用服務商

uni.getProvider({
    service: 'oauth',
    success: function (res) {
        console.log(res.provider)
    }
});

我的手機測驗 如下
在這里插入圖片描述
微信小程式開發工具內
在這里插入圖片描述

預登陸

可以判斷當前設備環境是否支持一鍵登錄

uni.preLogin({
	provider: 'univerify',
	success() { //預登錄成功
		// 顯示一鍵登錄選項
		console.log("預登陸成功")
	},
	fail(res) { // 預登錄失敗
		// 不顯示一鍵登錄選項(或置灰)
		// 根據錯誤資訊判斷失敗原因,如有需要可將錯誤提交給統計服務器
		console.log(res.errCode)
		console.log(res.errMsg)
	}
})

小案例

如果支持一鍵登陸 就顯示一鍵登錄 否則就顯示普通賬號密碼登陸

<template>
	<view>
		<view v-if="isSupport" class="content">
			<image class="logo" src="/static/logo.png" @click="login()"></image>
			<view class="text-area">
				<text class="title">{{title}}</text>
			</view>
		</view>
		<view v-if="!isSupport">
			<input placeholder="賬號" />
			<input placeholder="密碼" />
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: '點擊圖片一鍵登錄',
				isSupport: true
			}
		},
		onLoad() {
			this.prelogin()
		},
		methods: {
			login(){
				uni.login({
				    provider: 'univerify',
				    univerifyStyle: { // 自定義登錄框樣式
				    //參考`univerifyStyle 資料結構`
				  },
				    success(res){ // 登錄成功
				        console.log(res.authResult);  // {openid:'登錄授權唯一標識',access_token:'介面回傳的 token'}
				    },
				    fail(res){  // 登錄失敗
				        console.log(res.errCode)
				        console.log(res.errMsg)
				    }
				})
			},
			prelogin() {
				let vm = this;
				uni.preLogin({
				    provider: 'univerify',
				    success(){  //預登錄成功
				        // 顯示一鍵登錄選項
						console.log("預登陸成功")
				    },
				    fail(res){  // 預登錄失敗
				        // 不顯示一鍵登錄選項(或置灰)
				    // 根據錯誤資訊判斷失敗原因,如有需要可將錯誤提交給統計服務器
						vm.isSupport = false;
				        console.log(res.errCode)
				        console.log(res.errMsg)
				    }
				})
				

			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

登陸

一鍵登錄拿到access_token

univerifyStyle 資料結構樣式 參考鏈接 https://uniapp.dcloud.io/univerify
在這里插入圖片描述

uni.login({
	provider: 'univerify',
	univerifyStyle: { // 自定義登錄框樣式
		//參考`univerifyStyle 資料結構`
	},
	success(res) { // 登錄成功
		console.log(res.authResult); // {openid:'登錄授權唯一標識',access_token:'介面回傳的 token'}
		uni.closeAuthView(); //關閉一鍵登陸視窗 
	},
	fail(res) { // 登錄失敗
		console.log(res.errCode)
		console.log(res.errMsg)
	}
})

如下
在這里插入圖片描述這里拿到 openid 和access_token
console.log(res.authResult)
在這里插入圖片描述
一鍵登陸成功后 記得關閉登陸視窗

uni.closeAuthView()

access_token換取手機號

拿到手機號就可以用手機號注冊什么的了 也可以通過手機號獲取資訊

在云函式中

如果不知道如何創建云函式 請參考 https://dmhsq.blog.csdn.net/article/details/113746528

在這里插入圖片描述在這里插入圖片描述

'use strict';
exports.main = async (event, context) => {
	//event為客戶端上傳的引數
	const res = await uniCloud.getPhoneNumber({),
		provider: 'univerify', //微信 weixin qq qq
		apiKey: 'xxx', // 在開發者中心開通服務并獲取apiKey
		apiSecret: 'xxx', // 在開發者中心開通服務并獲取apiSecret
		access_token: event.access_token,
		openid: event.openid
	})
	console.log(res);
	//回傳資料給客戶端
	return "登陸成功"
};

客戶端傳送access_token

uni.login({
	provider: 'univerify',
	univerifyStyle: { // 自定義登錄框樣式
		//參考`univerifyStyle 資料結構`
	},
	success(res) { // 登錄成功
		console.log(res.authResult); // {openid:'登錄授權唯一標識',access_token:'介面回傳的 token'}
		uniCloud.callFunction({ //換取手機號 但是不回傳手機號(回傳不安全)
			name: 'dologintest',
			data: {
				access_token: res.authResult.access_token,
				openid: res.authResult.openid
			},
			success:function(res){
				console.log(res)
			}
		})
		uni.closeAuthView()
	},
	fail(res) { // 登錄失敗
		console.log(res.errCode)
		console.log(res.errMsg)
	}
})

呼叫成功
在這里插入圖片描述

本機號碼一鍵登錄案例

邏輯和效果

一鍵登錄 獲取手機號 在資料查詢 如果沒有此賬號 就默認注冊
如果環境不支持號碼一鍵登錄 就顯示賬號密碼登陸

創建云資料庫 如果你不知道如何創建 請參考 https://dmhsq.blog.csdn.net/article/details/113855441
在這里插入圖片描述這里只用用戶名和手機號
在這里插入圖片描述
首先我們預登陸 如果成功 說明支持號碼一鍵登錄 如果不支持 就顯示 賬號密碼登陸
在這里插入圖片描述一鍵登陸
在這里插入圖片描述
如果沒有注冊 就默認注冊
在這里插入圖片描述如果注冊過 就回傳用戶名
在這里插入圖片描述
在這里插入圖片描述

云函式

'use strict';
exports.main = async (event, context) => {
	//event為客戶端上傳的引數
	const res = await uniCloud.getPhoneNumber({
	      provider: 'univerify',
	      apiKey: 'xxxxxx', // 在開發者中心開通服務并獲取apiKey
	      apiSecret: 'xxxxxxx', // 在開發者中心開通服務并獲取apiSecret
	      access_token: event.access_token,
	      openid: event.openid
	  })
	  
	 // console.log(res.phoneNumber);
	 if (res.success){
		 const db = uniCloud.database();
		 // 獲取 `usertest` 集合的參考
		 const collection = db.collection('usertest');
		 let resp = await collection.where({phone:res.phoneNumber}).get();
		 let msgs = {
			 code: 0,
			 msg: "成功"
		 }
		 if(resp.data.length==0){
			 let resps = await collection.add({username:"無名稱",phone:res.phoneNumber});
			 msgs.msg = "注冊成功,歡迎使用,親愛的用戶"
		 }else{
			 msgs.msg = "登陸成功,"+resp.data[0].username
		 }
		 return msgs;
	 }else{
		 return {
			 code: 4001,
			 msg: "獲取手機號失敗"
		 }
	 }
	 
	
};

頁面代碼

<template>
	<view>
		<view v-if="isSupport" class="content">
			<image class="logo" src="/static/logo.png" @click="login()"></image>
			<view class="text-area">
				<text class="title">{{title}}</text>
			</view>
		</view>
		<view v-if="!isSupport">
			<input placeholder="賬號" />
			<input placeholder="密碼" />
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: '點擊圖片一鍵登錄',
				isSupport: true
			}
		},
		onLoad() {
			this.prelogin()
		},
		methods: {
			login(){
				uni.login({
				    provider: 'univerify',
				    univerifyStyle: { // 自定義登錄框樣式
				    //參考`univerifyStyle 資料結構`
				  },
				    success(res){ // 登錄成功
				        console.log(res.authResult);  // {openid:'登錄授權唯一標識',access_token:'介面回傳的 token'}
						uniCloud.callFunction({
							name:'dologintest',
							data:{access_token:res.authResult.access_token,openid:res.authResult.openid},
							success:function(res){
								uni.showToast({
									icon:"none",
									title:res.result.msg
								})
							}
						})
						uni.closeAuthView()
				    },
				    fail(res){  // 登錄失敗
				        console.log(res.errCode)
				        console.log(res.errMsg)
				    }
				})
			},
			prelogin() {
				let vm = this;
				uni.preLogin({
				    provider: 'univerify',
				    success(){  //預登錄成功
				        // 顯示一鍵登錄選項
						console.log("預登陸成功")
						uni.showToast({
							icon:"none",
							title:"預登陸成功"
						})
				    },
				    fail(res){  // 預登錄失敗
				        // 不顯示一鍵登錄選項(或置灰)
				    // 根據錯誤資訊判斷失敗原因,如有需要可將錯誤提交給統計服務器
						vm.isSupport = false;
				        console.log(res.errCode)
				        console.log(res.errMsg)
				    }
				})
				

			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

微信登陸

效果

在這里插入圖片描述
在這里插入圖片描述

登陸

uni.login({
	provider: 'weixin',
	success(res) { // 登錄成功
		uni.showToast({
			icon: 'none',
			title: '登陸成功'
		})
	},
	fail(res) { // 登錄失敗
		uni.showToast({
			icon: 'none',
			title: '登陸失敗'
		})
	}
})

獲取用戶資訊

這里顯示 用戶名

uni.getUserInfo({
	success: function(res) {
		uni.showToast({
			icon: 'none',
			title: '用戶名為' + res.userInfo.nickName
		})
	}
})

在這里插入圖片描述回傳的資料格式為

{
	"errMsg": "getUserInfo:ok",
	"userInfo": {
		"openId": "xxxxx",
		"nickName": "xxxx",
		"gender": xxxx,
		"city": "xxx",
		"province": "xxx",
		"country": "xxxx",
		"avatarUrl": "xxxxxxxxxx",
		"unionId": "xxxx"
	}
}

參考上面的手機號碼登陸案例 一樣可以實作登陸注冊
在這里插入圖片描述

檢測登陸是否過期

在這里插入圖片描述

uni.checkSession({
	success: function(res) {
		console.log(res)
	}
})

演示代碼

<template>
	<view>
		<view class="content">
			<button type="primary" @click="login()">登陸</button>
			<button type="primary" @click="getUser()">獲取用戶資訊</button>
			<button type="primary" @click="check()">檢測登陸是否過期</button>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			}
		},
		onLoad() {

		},
		methods: {
			getUser(){
				uni.getUserInfo({
					success:function(res){
						uni.showToast({
							icon: 'none',
							title: '用戶名為'+res.userInfo.nickName
						})
					}
				})
			},
			check(){
				uni.checkSession({
					success:function(res){
						console.log(res)
					}
				})
			},
			login() {
				uni.login({
					provider: 'weixin',
					success(res) { // 登錄成功
						uni.showToast({
							icon: 'none',
							title: '登陸成功'
						})
					},
					fail(res) { // 登錄失敗
						uni.showToast({
							icon: 'none',
							title: '登陸失敗'
						})
					}
				})
			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

QQ登陸

相當于微信登陸 只改變了
在這里插入圖片描述

效果

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述在這里插入圖片描述

登陸

uni.login({
	provider: 'weixin',
	success(res) { // 登錄成功
		uni.showToast({
			icon: 'none',
			title: '登陸成功'
		})
	},
	fail(res) { // 登錄失敗
		uni.showToast({
			icon: 'none',
			title: '登陸失敗'
		})
	}
})

獲取用戶資訊

這里顯示 用戶名

uni.getUserInfo({
	success: function(res) {
		uni.showToast({
			icon: 'none',
			title: '用戶名為' + res.userInfo.nickName
		})
	}
})

如果獲取不到 就使用
<button @getuserinfo=“getUserInfo” open-type=“getUserInfo” type=“primary”>獲取資訊

getUserInfo(e) {
	console.log(e.detail.userInfo)
	uni.showToast({
		icon: 'none',
		title: "歡迎您" + e.detail.userInfo.nickName
	})
}

在這里插入圖片描述

回傳的資料格式為

userInfo:{
	avatarUrl: "xxxxxx"
	city: "xxxx
	country: "xxxx"
	gender: 1
	language: "zh_CN"
	nickName: "xxxx"
	province: "xxxxx"
}


參考上面的手機號碼登陸案例 一樣可以實作登陸注冊
在這里插入圖片描述

檢測登陸是否過期

在這里插入圖片描述

uni.checkSession({
	success: function(res) {
		console.log(res)
	}
})

在這里插入圖片描述

演示代碼

<template>
	<view>
		<view class="content">
			<button type="primary" @click="login()">登陸</button>
			<button @getuserinfo="getUserInfo" open-type="getUserInfo" type="primary">獲取資訊</button>
			<button type="primary" @click="check()">檢測登陸是否過期</button>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			}
		},
		onLoad() {

		},
		methods: {
			  getUserInfo(e) {
				  console.log(e.detail)
				  uni.showToast({
				  	icon:'none',
				  	title: "歡迎您"+e.detail.userInfo.nickName
				  })
			  },
			getUser(){
				uni.getUserInfo({
					withCredentials:true,
					success:function(res){
						console.log(res)
						uni.showToast({
							icon:'none',
							title:res.userInfo
						})
					},
					fail:function(res){
						console.log(res)
					}
				})
			},
			check(){
				uni.checkSession({
					success:function(res){
						console.log(res)
					}
				})
			},
			login() {
				uni.login({
					provider: 'qq',
					success(res) { // 登錄成功
						console.log(res)
						uni.showToast({
							icon:'none',
							title:"登陸成功"
						})
						
					},
					fail(res) { // 登錄失敗
						uni.showToast({
							icon: 'none',
							title: '登陸失敗'
						})
					}
				})
			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>


大學之道亦在自身,努力學習,熱血青春
如果對編程感興趣可以加入我們的qq群一起交流:974178910

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

標籤:其他

上一篇:Django 路由中使用引數路徑

下一篇:【C++】演算法集錦(6):快慢指標

標籤雲
其他(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