前端-處理數據的函數

判斷數據是否為空,對象是否存在某屬性,屬性值是否為空,對大數據進行換算,對單位進行轉換.

目錄

?1.格式化數據

?2.判斷值是否為空(包括對象、數組、字符串、數值類型)

(1)值是0不表示空

?(2)值是0表示空

3.?檢查對象是否具有指定名稱的非空屬性

4.判斷值是否為空(包括字符串、數值類型)?

?5.格式化數據-返回(值/1000)的值

?6.數值轉換用萬、億、做后綴

(1)保留兩位小數

(2)不保留小數部分

?7.涉及三位數值以及單位轉換

8.根據傳入type類型,數據直接轉換。?

9.input輸入框值的類型限制?


?1.格式化數據


/*** 格式化數據函數* 該函數用于將給定的數據根據特定規則進行格式化,以確保數據以一致的方式展示* @param {Object|number|string|array} data - 待格式化的數據,可以是對象、數字、字符串或對象數組* @param {string} fieldName - 可選參數,指定對象中的字段名,如果未提供或字段不存在,則直接使用data* @param {boolean} flag - 可選參數,指定對象中的字段名,表示是否保留兩位小數* @returns {string} - 格式化后的數據字符串,如果數據為空則返回'--',如果數據是數字則保留兩位小數*/
export  function formatData(data, fieldName = null,flag = true) {// 獲取實際需要處理的數據let value;if (Array.isArray(data)) {// 如果 data 是一個數組,檢查數組是否為空if (data.length === 0) {return '--';}// 假設我們需要處理數組的第一個元素const firstItem = data[0];if (firstItem && typeof firstItem === 'object') {value = fieldName ? (firstItem[fieldName] !== undefined ? firstItem[fieldName] : null) : firstItem;} else {value = firstItem;}} else {value = fieldName ? (data && data[fieldName] !== undefined ? data[fieldName] : null) : data;}// 判斷數據是否為空if (value === null ||value === undefined ||value === '' || // 添加對空字符串的檢查(typeof value === 'object' && Object.keys(value).length === 0) // 添加對空對象的檢查) {return '--';}// 將數值字符串轉換為數字if (typeof value === 'string' && !isNaN(value)) {value = parseFloat(value);}// 如果數據是數字,保留兩位小數if (typeof value === 'number') {if(flag){return value.toFixed(2);}else{return value.toFixed(0);}}// 其他情況,直接返回數據return value;}

以下是對formatData函數的各種輸入情況進行示例和結果展示:

  1. 數組為空

    • 輸入formatData([])
    • 結果--
  2. 數組包含空對象

    • 輸入formatData([{}])
    • 結果--
  3. 數組包含有效對象

    • 輸入formatData([{name: 'John Doe', age: 30}])
    • 結果{name: 'John Doe', age: 30}
  4. 數組包含單個非對象值

    • 輸入formatData([42])
    • 結果42.00
  5. 數組包含多個對象,處理第一個對象

    • 輸入formatData([{name: 'John Doe'}, {name: 'Jane Doe'}])
    • 結果:{ name: 'John Doe' }
  6. 傳入單個對象,指定字段名

    • 輸入formatData({name: 'John Doe', age: 30}, 'name')
    • 結果John Doe
  7. 傳入單個對象,未指定字段名

    • 輸入formatData({name: 'John Doe', age: 30})
    • 結果{name: 'John Doe', age: 30}
  8. 傳入單個對象,指定字段名但字段不存在

    • 輸入formatData({name: 'John Doe', age: 30}, 'email')
    • 結果:--
  9. 傳入單個空對象

    • 輸入formatData({})
    • 結果--
  10. 傳入單個字符串

    • 輸入formatData('Hello World')
    • 結果Hello World
  11. 傳入空字符串

    • 輸入formatData('')
    • 結果--
  12. 傳入數值字符串

    • 輸入:formatData('123.456',null,false)
    • 結果??123
    • 輸入:formatData('123.456')
    • 結果??123.46
  13. 傳入空數組對象

    • 輸入formatData([{}, {}])
    • 結果--

?2.判斷值是否為空(包括對象、數組、字符串、數值類型)

(1)值是0不表示空

/**
* 判斷給定值是否為空
*
* @param value 要判斷的值
* @returns 如果值為空,返回 true;否則返回 false
*/export function isEmpty(value) {return (value == null || // null 或 undefined(typeof value === 'string' && value.trim() === '') || // 空字符串(包括空格的情況)(Array.isArray(value) && value.length === 0) || // 空數組(typeof value === 'object' && Object.keys(value).length === 0) // 空對象);}

以下是對isEmpty函數的各種輸入情況進行示例和結果展示:

  1. 輸入為null

    • 輸入isEmpty(null)
    • 結果true
  2. 輸入為undefined

    • 輸入isEmpty(undefined)
    • 結果true
  3. 輸入為空字符串

    • 輸入isEmpty('')
    • 結果true
  4. 輸入為僅包含空格的字符串

    • 輸入isEmpty(' ')
    • 結果true
  5. 輸入為非空字符串

    • 輸入isEmpty('Hello World')
    • 結果false
  6. 輸入為空數組

    • 輸入isEmpty([])
    • 結果true
  7. 輸入為非空數組

    • 輸入isEmpty([1, 2, 3])
    • 結果false
  8. 輸入為空對象

    • 輸入isEmpty({})
    • 結果true
  9. 輸入為非空對象

    • 輸入isEmpty({name: 'John Doe', age: 30})
    • 結果false
  10. 輸入為包含空對象的數組

    • 輸入isEmpty([{}, {}])
    • 結果false
  11. 輸入為包含空字符串的對象

    • 輸入isEmpty({name: '', age: 30})
    • 結果false
  12. 輸入為數值0

    • 輸入isEmpty(0)
    • 結果true
  13. 輸入為數值為0的字符串
    • 輸入isEmpty('0')
    • 結果:false

?(2)值是0表示空

 /**
* 判斷給定值是否為空
*
* @param value 要判斷的值
* @returns 如果值為空或為0,返回 true;否則返回 false
*/export function isEmpty2(value) {return (value == null || // null 或 undefined(typeof value === 'number' && value === 0) || // 數值為0(typeof value === 'string' && (value.trim() === '' || (parseFloat(value) === 0 && !isNaN(parseFloat(value)))) || // 空字符串或數值為0的字符串(包括"0.000")(Array.isArray(value) && value.length === 0) || // 空數組(typeof value === 'object' && Object.keys(value).length === 0) // 空對象));
}

以下是對isEmpty2函數的各種輸入情況進行示例和結果展示:

  1. 輸入為null

    • 輸入isEmpty2(null)
    • 結果true
  2. 輸入為undefined

    • 輸入isEmpty2(undefined)
    • 結果true
  3. 輸入為數值0

    • 輸入isEmpty2(0)
    • 結果true
  4. 輸入為空字符串

    • 輸入isEmpty2('')
    • 結果true
  5. 輸入為僅包含空格的字符串

    • 輸入isEmpty2(' ')
    • 結果true
  6. 輸入為數值為0的字符串

    • 輸入isEmpty2('0')
    • 結果true
  7. 輸入為非空字符串

    • 輸入isEmpty2('Hello World')
    • 結果false
  8. 輸入為空數組

    • 輸入isEmpty2([])
    • 結果true
  9. 輸入為非空數組

    • 輸入isEmpty2([1, 2, 3])
    • 結果false
  10. 輸入為空對象

    • 輸入isEmpty2({})
    • 結果true
  11. 輸入為非空對象

    • 輸入isEmpty2({name: 'John Doe', age: 30})
    • 結果false
  12. 輸入為包含空對象的數組

    • 輸入isEmpty2([{}, {}])
    • 結果false
  13. 輸入為包含0的數組

    • 輸入isEmpty2([0])
    • 結果:false
  14. 輸入為包含數值為0的字符串的對象

    • 輸入isEmpty2({value: '0'})
    • 結果:false

3.?檢查對象是否具有指定名稱的非空屬性

/*** 檢查對象是否具有指定名稱的非空屬性** @param obj 對象,用于檢查屬性* @param propName 屬性名稱* @returns 如果對象具有指定名稱的非空屬性,則返回true;否則返回false*/export function hasNonEmptyProperty(obj, propName) {// 檢查對象是否具有該屬性if (obj.hasOwnProperty(propName)) {// 獲取屬性值const propValue = obj[propName];// 檢查屬性值是否不為空// 這里我們考慮了幾種“空”的情況:null, undefined, 空字符串// 如果你還想考慮其他情況(如0,false等),請根據需要修改條件if (propValue !== null && propValue !== undefined && propValue !== '') {return true;}}// 如果對象沒有該屬性,或者屬性值為空,返回falsereturn false;}
  1. 對象具有指定名稱的非空屬性

    • 輸入hasNonEmptyProperty({name: 'John Doe'}, 'name')
    • 結果true
  2. 對象具有指定名稱但屬性值為空字符串

    • 輸入hasNonEmptyProperty({name: ''}, 'name')
    • 結果false
  3. 對象具有指定名稱但屬性值為null

    • 輸入hasNonEmptyProperty({name: null}, 'name')
    • 結果false
  4. 對象具有指定名稱但屬性值為undefined

    • 輸入hasNonEmptyProperty({name: undefined}, 'name')
    • 結果false
  5. 對象沒有指定名稱的屬性

    • 輸入hasNonEmptyProperty({age: 30}, 'name')
    • 結果false
  6. 對象具有指定名稱且屬性值為非空字符串,但屬性名稱不匹配

    • 輸入hasNonEmptyProperty({name: 'John Doe'}, 'username')
    • 結果false
  7. 對象具有指定名稱且屬性值為0(根據函數當前邏輯,0被視為非空)

    • 輸入hasNonEmptyProperty({count: 0}, 'count')
    • 結果true
  8. 對象具有指定名稱且屬性值為false(根據函數當前邏輯,false被視為非空)

    • 輸入hasNonEmptyProperty({isActive: false}, 'isActive')
    • 結果true

4.判斷值是否為空(包括字符串、數值類型)?

//導出公共函數 判斷是否為空
export  function isNullorEmpty (str) {return (str === '' || str == '--'|| str === null || str === undefined || isNaN(str));
}

以下是對isNullorEmpty函數的各種輸入情況進行示例和結果展示:

  1. 輸入為空字符串

    • 輸入isNullorEmpty('')
    • 結果true
  2. 輸入為字符串'--'

    • 輸入isNullorEmpty('--')
    • 結果true
  3. 輸入為null

    • 輸入isNullorEmpty(null)
    • 結果true
  4. 輸入為undefined

    • 輸入isNullorEmpty(undefined)
    • 結果true
  5. 輸入為數字0

    • 輸入isNullorEmpty(0)
    • 結果:false
  6. 輸入為布爾值false

    • 輸入isNullorEmpty(false)
    • 結果:false
  7. 輸入為字符串'0'

    • 輸入isNullorEmpty('0')
    • 結果false
  8. 輸入為有效數字字符串

    • 輸入isNullorEmpty('123')
    • 結果false
  9. 輸入為NaN

    • 輸入isNullorEmpty(NaN)
    • 結果true(因為isNaN(NaN)返回true
  10. 輸入為有效數字

    • 輸入isNullorEmpty(123)
    • 結果false(因為123是一個有效的數字,且isNaN(123)返回false

?5.格式化數據-返回(值/1000)的值

//公共函數 判斷是否為空
function isNullorEmpty (str) {return (str === '' || str == '--'|| str === null || str === undefined || isNaN(str));
}
//公共函數 普通數據數值轉換  保留兩位小數 /1000
export  function TransNumber (value) {if (isNullorEmpty(value)) return '--';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (t === '-') {return '-' + Number(floatNum/1000).toFixed(2)} else {return Number(floatNum/1000).toFixed(2)}}

?對TransNumber函數的各種可能性進行示例和結果展示

  1. 輸入為空字符串

    • 輸入TransNumber('')
    • 結果'--'
  2. 輸入為特定標記字符串'--'

    • 輸入TransNumber('--')
    • 結果'--'
  3. 輸入為null

    • 輸入TransNumber(null)
    • 結果'--'
  4. 輸入為undefined

    • 輸入TransNumber(undefined)
    • 結果'--'
  5. 輸入為NaN

    • 輸入TransNumber(NaN)
    • 結果'--'
  6. 輸入為正整數字符串'1000'

    • 輸入TransNumber('1000')
    • 結果'1.00'
  7. 輸入為負整數字符串'-1000'

    • 輸入TransNumber('-1000')
    • 結果'-1.00'
  8. 輸入為浮點數字符串'1234.56'

    • 輸入TransNumber('1234.56')
    • 結果'1.23'
  9. 輸入為包含非數字字符的字符串'abc123'

    • 輸入TransNumber('abc123')
    • 結果'--'
  10. 輸入為數字0

    • 輸入TransNumber(0)
    • 結果'0.00'
  11. 輸入為負數-1234

    • 輸入TransNumber(-1234)
    • 結果'-1.23'

?6.數值轉換用萬、億、做后綴

(1)保留兩位小數

//公共函數 判斷是否為空
function isNullorEmpty (str) {return (str === '' || str == '--'|| str === null || str === undefined || isNaN(str));
}
//公共函數 普通數據數值轉換  保留兩位小數 /10000
export default function formatNumber (value) {if (isNullorEmpty(value)) return '--';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (floatNum < 10000) {if (t === '-') {return '-' + Number(floatNum).toFixed(2)} else {return Number(floatNum).toFixed(2)}} else if (floatNum < 100000000) {if (t === '-') {return '-' + (Number(floatNum) / 10000).toFixed(2) + '萬'} else {return (Number(floatNum) / 10000).toFixed(2) + '萬'}} else {if (t === '-') {return '-' + (Number(floatNum) / 100000000).toFixed(2) + '億'} else {return (Number(floatNum) / 100000000).toFixed(2) + '億'}}
}

formatNumber函數的各種可能性進行示例和結果展示

  1. 輸入為空字符串

    • 輸入formatNumber('')
    • 結果'--'
  2. 輸入為特定標記字符串'--'

    • 假設isNullorEmpty('--')返回true(注意:這個函數的實際實現并未給出,因此這里基于假設)
    • 輸入formatNumber('--')
    • 結果'--'
  3. 輸入為null

    • 輸入formatNumber(null)
    • 結果'--'
  4. 輸入為undefined

    • 輸入formatNumber(undefined)
    • 結果'--'
  5. 輸入為正整數1234

    • 輸入formatNumber(1234)
    • 結果'1234.00'
  6. 輸入為負整數-12345

    • 輸入formatNumber(-12345)
    • 結果'-1.23萬'
  7. 輸入為浮點數1234567.89

    • 輸入formatNumber(1234567.89)
    • 結果'123.46萬'
  8. 輸入為極大整數987654321

    • 輸入formatNumber(987654321)
    • 結果'9.88億'
  9. 輸入為極小負數-9876543210

    • 輸入formatNumber(-9876543210)
    • 結果'-98.77億'

(2)不保留小數部分

//公共函數 判斷是否為空
function isNullorEmpty (str) {return (str === '' || str == '--'|| str === null || str === undefined || isNaN(str));
}//公共函數 普通數據數值轉換不保留小數 /10000
export function formatNumber2 (value) {if (isNullorEmpty(value)) return '--';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (floatNum < 10000) {if (t === '-') {return '-' + Number(floatNum).toFixed(0)} else {return Number(floatNum).toFixed(0)}} else if (floatNum < 100000000) {if (t === '-') {return '-' + (Number(floatNum) / 10000).toFixed(0)+ '萬'} else {return (Number(floatNum) / 10000).toFixed(0)+ '萬'}} else {if (t === '-') {return '-' + (Number(floatNum) / 100000000).toFixed(0) + '億'} else {return (Number(floatNum) / 100000000).toFixed(0) + '億'}}
}

formatNumber2函數,并列出所有可能性的示例和結果。

  1. 輸入為空字符串

    • 輸入formatNumber2('')
    • 結果'--'
  2. 輸入為特定標記字符串'--'

    • 輸入formatNumber2('--')
    • 結果'--'
  3. 輸入為null

    • 輸入formatNumber2(null)
    • 結果'--'
  4. 輸入為undefined

    • 輸入formatNumber2(undefined)
    • 結果'--'
  5. 輸入為正整數小于10000

    • 輸入formatNumber2(5000)
    • 結果5000
  6. 輸入為負整數小于10000

    • 輸入formatNumber2(-5000)
    • 結果-5000
  7. 輸入為正整數大于等于10000且小于100000000

    • 輸入formatNumber2(50000000)
    • 結果5000萬
  8. 輸入為負整數大于等于10000且小于100000000

    • 輸入formatNumber2(-50000000)
    • 結果-5000萬
  9. 輸入為正整數大于等于100000000

    • 輸入formatNumber2(1234567890)
    • 結果12億
  10. 輸入為負整數大于等于100000000

    • 輸入formatNumber2(-1234567890)
    • 結果-12億?

?7.涉及三位數值以及單位轉換

例如1t=1000kg? ?1MWh=1000kWh??

//公共函數 判斷是否為空
function isNullorEmpty (str) {return (str === '' || str == '--'|| str === null || str === undefined || isNaN(str));
}//公共函數 涉及電的數值轉換  /1000
export  function formatElectNumber (value) {if (isNullorEmpty(value)) return '--';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (floatNum < 1000) {if (t === '-') {return '-' + Number(floatNum).toFixed(2)} else {return Number(floatNum).toFixed(2)}} else if (floatNum < 1000000) {if (t === '-') {return '-' + (Number(floatNum) / 1000).toFixed(2) } else {return (Number(floatNum) / 1000).toFixed(2) }} else {if (t === '-') {return '-' + (Number(floatNum) / 1000000).toFixed(2) } else {return (Number(floatNum) / 1000000).toFixed(2) }}
}
//公共函數 涉及電的單位轉換 /1000
export  function formatElectUnit (value) {if (isNullorEmpty(value)) return 'kW';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (floatNum < 1000) {return 'kW'} else if (floatNum < 1000000) {return 'MW'} else {return 'GW'}
}
//公共函數  涉及電的單位轉換 /1000
export  function formatElect2Unit (value) {if (isNullorEmpty(value)) return 'kWh';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (floatNum < 1000) {return 'kWh'} else if (floatNum < 1000000) {return 'MWh'} else {return 'GWh'}
}
//公共函數  涉及裝機容量的單位轉換 /1000
export  function formatElect3Unit (value) {if (isNullorEmpty(value)) return 'kWp';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if (floatNum < 1000) {return 'kWp'} else if (floatNum < 1000000) {return 'MWp'} else {return 'GWp'}
}

formatElectNumber?函數

示例 1: 空值

  • 輸入formatElectNumber('')

  • 結果'--'

示例 2: 特定值

  • 輸入formatElectNumber(2777664.7235)

  • 結果:2.78

示例 3: 小于1000的正數

  • 輸入formatElectNumber(500)

  • 結果500.00

示例 4: 小于1000的負數

  • 輸入formatElectNumber(-500)

  • 結果-500.00

示例 5: 大于等于1000且小于1000000的正數

  • 輸入formatElectNumber(123456)

  • 結果:123.46

示例 6: 大于等于1000000的數

  • 輸入formatElectNumber(1234567890)

  • 結果1234.57

formatElectUnit?函數

示例 1: 空值

  • 輸入formatElectUnit('')

  • 結果'kW'

示例 2: 小于1000的數

  • 輸入formatElectUnit(500)

  • 結果'kW'

示例 3: 大于等于1000且小于1000000的數

  • 輸入formatElectUnit(123456)

  • 結果'MW'

示例 4: 大于等于1000000的數

  • 輸入formatElectUnit(1234567890)

  • 結果'GW'

formatElect2Unit?函數

示例 1: 空值

  • 輸入formatElect2Unit('')

  • 結果'kWh'

示例 2: 小于1000的數

  • 輸入formatElect2Unit(500)

  • 結果'kWh'

示例 3: 大于等于1000且小于1000000的數

  • 輸入formatElect2Unit(123456)

  • 結果'MWh'

示例 4: 大于等于1000000的數

  • 輸入formatElect2Unit(1234567890)

  • 結果'GWh'

formatElect3Unit?函數

示例 1: 空值

  • 輸入formatElect3Unit('')

  • 結果'kWp'

示例 2: 小于1000的數

  • 輸入formatElect3Unit(500)

  • 結果'kWp'

示例 3: 大于等于1000且小于1000000的數

  • 輸入formatElect3Unit(123456)

  • 結果'MWp'

示例 4: 大于等于1000000的數

  • 輸入formatElect3Unit(1234567890)

  • 結果'GWp'

8.根據傳入type類型,數據直接轉換。?

//公共函數 判斷是否為空
function isNullorEmpty (str) {return (str === '' || str == '--'|| str === null || str === undefined || isNaN(str));
}
//公共函數 涉及電的數值轉換  根據類型直接轉換  /1000
export  function formatMyElectNumber (value,type) {if (isNullorEmpty(value)) return '--';const t = String(value).charAt(0);let floatNum = value;if (t === '-') {floatNum = Math.abs(floatNum)}if(type){if(type=='1'){if (t === '-') {return '-' + Number(floatNum).toFixed(2)} else {return Number(floatNum).toFixed(2)}}else if(type=='2'){if (t === '-') {return '-' + (Number(floatNum) / 1000).toFixed(2) } else {return (Number(floatNum) / 1000).toFixed(2) }}else if(type=='3'){if (t === '-') {return '-' + (Number(floatNum) / 1000000).toFixed(2) } else {return (Number(floatNum) / 1000000).toFixed(2) }}}else{if (floatNum < 1000) {if (t === '-') {return '-' + Number(floatNum).toFixed(2)} else {return Number(floatNum).toFixed(2)}} else if (floatNum < 1000000) {if (t === '-') {return '-' + (Number(floatNum) / 1000).toFixed(2) } else {return (Number(floatNum) / 1000).toFixed(2) }} else {if (t === '-') {return '-' + (Number(floatNum) / 1000000).toFixed(2) } else {return (Number(floatNum) / 1000000).toFixed(2) }}}}

formatMyElectNumber

  1. type?為?'1'

    • formatMyElectNumber(1234, '1')?返回?'1234.00'
    • formatMyElectNumber(-5678, '1')?返回?'-5678.00'
    • formatMyElectNumber('123.45', '1')?返回?'123.45'
    • formatMyElectNumber(null, '1')?返回?'--'
  2. type?為?'2'

    • formatMyElectNumber(1234, '2')?返回?'1.23'
    • formatMyElectNumber(-5678, '2')?返回?'-5.68'
    • formatMyElectNumber('678.90', '2')?返回?'0.68'
  3. type?為?'3'

    • formatMyElectNumber(1234567, '3')?返回?'1.23'
    • formatMyElectNumber(-8901234, '3')?返回?'-8.90'
    • formatMyElectNumber('987654.32', '3')?返回?'0.99'
  4. type?為?'undefined'

? ?1. formatMyElectNumber(1234)?返回?'1.23'

? ?2. formatMyElectNumber(-5678)?返回?'-5.68'

? ?3. formatMyElectNumber('123.45')?返回?'123.45'

? ?4.formatMyElectNumber(null)?返回?'--'

9.input輸入框值的類型限制?


/*只輸入數字 包括小數點和負數*/
function inputFilter (value) {let data = value.target.value;const t = value.target.value.charAt(0);//判斷輸入是否以負號開始。data = data.replace(/[^\d.]/g, '');//移除了所有非數字和非小數點的字符。data = data.replace(/^\./g, ''); //驗證第一個字符是數字而不是字符data = data.replace(/\.{2,}/g, '.'); //只保留第一個.清除多余的data = data.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); //保證.只出現一次if (t === '-'){data = '-' + data;}return data;
}
<a-inputv-model="inputValue"@input="event => inputValue = inputFilter(event)"placeholder="請輸入數字(包括小數點和負數)"/>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63513.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基礎入門-Web應用蜜罐系統堡壘機運維API內外接口第三方拓展架構部署影響

知識點&#xff1a; 1、基礎入門-Web應用-蜜罐系統 2、基礎入門-Web應用-堡壘機運維 3、基礎入門-Web應用-內外API接口 4、基礎入門-Web應用-第三方拓展架構 一、演示案例-Web-拓展應用-蜜罐-釣魚誘使 蜜罐&#xff1a;https://hfish.net/ 測試系統&#xff1a;Ubuntu 20.04 …

Android運行低版本項目可能遇到的問題

Android運行低版本項目可能遇到的問題 低版本項目總是遇到各種問題的&#xff0c;耐心點 一、gradle-xxx.xxx.xxx.zip一直下載不下來 在gradle-wrapper.properties可以試下 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists zipStoreBaseGRADLE_USER_HOME …

springboot中Controller內文件上傳到本地以及阿里云

上傳文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登錄</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年齡&#xf…

智慧城市工程:相關學點、優勢、未來發展

目錄 相關學點&#xff1a; 智慧城市的優勢 挑戰與未來發展 智慧城市工程是利用現代信息技術和數據分析手段&#xff0c;提升城市管理和服務水平&#xff0c;實現城市運行的智能化、便捷化和高效化的一種新型城市發展模式。智慧城市通過整合物聯網&#xff08;IoT&#xff0…

授權模型MAC

MAC&#xff08;Mandatory Access Control&#xff09;是一種授權模型&#xff0c;用于實現對系統資源訪問的強制控制。在MAC模型中&#xff0c;授權是基于預先定義的安全策略&#xff0c;且該策略由系統管理員來配置和管理。 在MAC模型中&#xff0c;每個用戶和每個資源都被賦…

看板工具助力餐飲與酒店行業實現數字化轉型,提升管理與運營效率

在餐飲與酒店行業&#xff0c;服務質量和客戶體驗是衡量企業成功的關鍵因素。隨著客戶需求的不斷多樣化以及市場競爭的加劇&#xff0c;傳統的管理模式逐漸難以滿足高效運營的需求。尤其在高峰期&#xff0c;如何優化內部流程、提高服務效率和響應速度&#xff0c;成為了許多餐…

2024年CCF 非專業級軟件能力認證CSP-J/S 第二輪( 提高組) 染色(color)

完整題目內容可前往下方鏈接&#xff1a; 染色&#xff08;color&#xff09;_C_嗨信奧-玩嗨信息奧林匹克競賽-少兒編程題庫學習中心https://www.hixinao.com/tiku/cpp/show-4118.html 若需更多真題&#xff0c;可前往題庫中心查找&#xff0c;題庫中心涵蓋白名單賽事真題&am…

OpenIPC開源FPV之Adaptive-Link天空端代碼解析

OpenIPC開源FPV之Adaptive-Link天空端代碼解析 1. 源由2. 框架代碼2.1 消息機制2.2 超時機制 3. 報文處理3.1 special報文3.2 普通報文 4. 工作流程4.1 Profile 競選4.2 Profile 研判4.2.1 回退策略4.2.2 保持策略 4.3 Profile 應用 5. 總結6. 參考資料7. 補充資料7.1 RSSI 和 …

labelme標簽批量轉換數據集json_to_dataset

文章目錄 labelme標簽批量轉換數據集json_to_dataset轉換原理單張圖片轉換多張圖片批量轉換bat腳本循環法 標注圖片提取標注圖片轉單通道 labelme標簽批量轉換數據集json_to_dataset 轉自labelme批量制作數據集教程。 轉換原理 在安裝了labelme的虛擬環境中有一個labelme_js…

Apache Kylin最簡單的解析、了解

官網&#xff1a;Overview | Apache Kylin 一、Apache Kylin是什么&#xff1f; 由中國團隊研發具有濃厚的中國韻味&#xff0c;使用神獸麒麟&#xff08;kylin&#xff09;為名 的一個OLAP多維數據分析引擎:&#xff08;據官方給出的數據&#xff09; 亞秒級響應&#xff…

01云計算HCIA學習筆記

筆者今年7月底考取了華為云計算方向的HCIE認證&#xff0c;回顧從IA到IE的學習和項目實戰&#xff0c;想整合和分享自己的學習歷程&#xff0c;歡迎志同道合的朋友們一起討論&#xff01; 第一章 云計算概述 ICT&#xff1a;ICT是世界電信協會在2001年的全球會議中提出的一個綜…

php生成圖片

前提 開啟dg2庫 去掉前面的;注釋&#xff0c;有的可能會帶.dll后綴影響不大 extensiongd2代碼 <?php $file imagecreate(100,50); //先生成圖片資源$color imagecolorallocate($file,255,255,255); //白色$c imagecolorallocate($file,0,100,255);imagefill($file,0…

免費GIS工具箱:輕松將glb文件轉換成3DTiles文件

在GIS地理信息系統領域&#xff0c;GLB文件作為GLTF文件的二進制版本&#xff0c;主要用于3D模型數據的存儲和展示。然而&#xff0c;GLB文件的使用頻率相對較低&#xff0c;這是因為GIS系統主要處理的是地理空間數據&#xff0c;如地圖、地形、地貌、植被、水系等&#xff0c;…

為何VisualRules更適合技術人員使用

什么是規則引擎 規則引擎是一種軟件組件&#xff0c;它允許將業務規則從應用程序的核心代碼中分離出來&#xff0c;以一種更加靈活、易于管理和維護的方式來定義、存儲和執行這些規則。簡單來說&#xff0c;它就像是一個專門處理規則的 “大腦”&#xff0c;可以根據預先設定的…

prometheus 搭建監控

prometheus 下載 prometheus-3.0.0.linux-amd64.tar.gztar -zxvf prometheus-3.0.0.linux-amd64.tar.gzmv prometheus-3.0.0.linux-amd64 prometheus-3vim /etc/systemd/system/prometheus.serviceprometheus.service [Unit] DescriptionPrometheus Wantsnetwork-online.t…

游戲何如防抓包

游戲抓包是指在游戲中&#xff0c;通過抓包工具捕獲和分析游戲客戶端與服務器之間傳輸的封包數據的過程。抓包工具可實現攔截、篡改、重發、丟棄游戲的上下行數據包&#xff0c;市面上常見的抓包工具有WPE、Fiddler和Charles Proxy等。 抓包工具有兩種實現方式&#xff0c;一類…

RestTemplate實時接收Chunked編碼傳輸的HTTP Response

學習調用AI接口的時候&#xff0c;流式響應都是使用的 Transfer-Encoding: chunked&#xff0c;圖方便想用RestTemplate&#xff0c;但是平時用到的都是直接返回響應對象的類型。使用bing搜索到一種方式&#xff0c;使用下面的代碼來讀取&#xff0c;于是掉這個坑里了&#xff…

request.setAttribute()和session.setAttribute()的區別

request.setAttribute() 作用&#xff1a;request.setAttribute()是在一次請求內共享數據 解釋&#xff1a;例如將一個數據保存request域中&#xff0c;然后請求轉發至前端頁面&#xff0c;則數據轉發至前端頁面后會被自動銷毀。簡單點說就是&#xff0c;數據只能用一次就不能…

Java中的Consumer接口應該如何使用(通俗易懂圖解)

應用場景&#xff1a; 第一次程序員A寫好了個基礎的遍歷方法&#xff1a; public class Demo1 {public static void main(String[] args) {//假設main方法為程序員B寫的,此時需要去調用A寫好的一個遍歷方法//1.如果此時B突然發現想將字符串以小寫的形式打印出來&#xff0c;則…

【常微分方程講義1.1】方程的種類發展與完備

方程在數學歷史中不斷發展&#xff0c;逐步趨于完備。從最初的簡單代數方程到包含函數、算子甚至泛函的更復雜方程&#xff0c;數學家通過不斷的擴展和深化&#xff0c;逐漸建立起更為豐富和多元的方程類型體系。方程的種類之所以不斷演變&#xff0c;部分是因為解決實際問題的…