signature今日头条php实现,今日头条_signature 值解析算法,另带DEMO_精易论坛

2023-11-19

navigator = {

// WT-JS_DEBUG v1.7.5 - NLiger2018

appCodeName: "Mozilla",

appMinorVersion: "0",

appName: "Netscape",

appVersion: "5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",

browserLanguage: "zh-CN",

cookieEnabled: true,

cpuClass: "x86",

language: "zh-CN",

maxTouchPoints: 0,

msManipulationViewsEnabled: true,

msMaxTouchPoints: 0,

msPointerEnabled: true,

onLine: true,

platform: "Win32",

pointerEnabled: true,

product: "Gecko",

systemLanguage: "zh-CN",

userAgent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",

userLanguage: "zh-CN",

vendor: "",

vendorSub: "",

webdriver: false

}, window = this, window.navigator = navigator;

if (typeof JSON !== "object") {

JSON = {};

}(function () {

"use strict";

var rx_one = /^[\],:{}\s]*$/;

var rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;

var rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g;

var rx_four = /(?:^|:|,)(?:\s*\[)+/g;

var rx_escapable = /[\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;

var rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;

function f(n) {

return n < 10 ? "0" + n : n;

}

function this_value() {

return this.valueOf();

}

if (typeof Date.prototype.toJSON !== "function") {

Date.prototype.toJSON = function () {

return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + f(this.getUTCMonth() + 1) + "-" + f(this.getUTCDate()) + "T" + f(this.getUTCHours()) + ":" + f(this.getUTCMinutes()) + ":" + f(this.getUTCSeconds()) + "Z" : null;

};

Boolean.prototype.toJSON = this_value;

Number.prototype.toJSON = this_value;

String.prototype.toJSON = this_value;

}

var gap;

var indent;

var meta;

var rep;

function quote(string) {

rx_escapable.lastIndex = 0;

return rx_escapable.test(string) ? """ + string.replace(rx_escapable, function (a) {

var c = meta[a];

return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);

}) + """ : """ + string + """;

}

function str(key, holder) {

var i;

var k;

var v;

var length;

var mind = gap;

var partial;

var value = holder[key];

if (value && typeof value === "object" && typeof value.toJSON === "function") {

value = value.toJSON(key);

}

if (typeof rep === "function") {

value = rep.call(holder, key, value);

}

switch (typeof value) {

case "string":

return quote(value);

case "number":

return isFinite(value) ? String(value) : "null";

case "boolean":

case "null":

return String(value);

case "object":

if (!value) {

return "null";

}

gap += indent;

partial = [];

if (Object.prototype.toString.apply(value) === "[object Array]") {

length = value.length;

for (i = 0; i < length; i += 1) {

partial[i] = str(i, value) || "null";

}

v = partial.length === 0 ? "[]" : gap ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" : "[" + partial.join(",") + "]";

gap = mind;

return v;

}

if (rep && typeof rep === "object") {

length = rep.length;

for (i = 0; i < length; i += 1) {

if (typeof rep[i] === "string") {

k = rep[i];

v = str(k, value);

if (v) {

partial.push(quote(k) + (gap ? ": " : ":") + v);

}

}

}

} else {

for (k in value) {

if (Object.prototype.hasOwnProperty.call(value, k)) {

v = str(k, value);

if (v) {

partial.push(quote(k) + (gap ? ": " : ":") + v);

}

}

}

}

v = partial.length === 0 ? "{}" : gap ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}" : "{" + partial.join(",") + "}";

gap = mind;

return v;

}

}

if (typeof JSON.stringify !== "function") {

meta = {

"\b": "\\b",

"\t": "\\t",

"\n": "\\n",

"\f": "\\f",

"\r": "\\r",

""": "\\"",

"\": "\\\"

};

JSON.stringify = function (value, replacer, space) {

var i;

gap = "";

indent = "";

if (typeof space === "number") {

for (i = 0; i < space; i += 1) {

indent += " ";

}

} else if (typeof space === "string") {

indent = space;

}

rep = replacer;

if (replacer && typeof replacer !== "function" && (typeof replacer !== "object" || typeof replacer.length !== "number")) {

throw new Error("JSON.stringify");

}

return str("", {

"": value

});

};

}

if (typeof JSON.parse !== "function") {

JSON.parse = function (text, reviver) {

var j;

function walk(holder, key) {

var k;

var v;

var value = holder[key];

if (value && typeof value === "object") {

for (k in value) {

if (Object.prototype.hasOwnProperty.call(value, k)) {

v = walk(value, k);

if (v !== undefined) {

value[k] = v;

} else {

delete value[k];

}

}

}

}

return reviver.call(holder, key, value);

}

text = String(text);

rx_dangerous.lastIndex = 0;

if (rx_dangerous.test(text)) {

text = text.replace(rx_dangerous, function (a) {

return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);

});

}

if (rx_one.test(text.replace(rx_two, "@").replace(rx_three, "]").replace(rx_four, ""))) {

j = eval("(" + text + ")");

return (typeof reviver === "function") ? walk({

"": j

}, "") : j;

}

throw new SyntaxError("JSON.parse");

};

}

}());

var CryptoJS = CryptoJS || (function (Math, undefined) {

var C = {};

var C_lib = C.lib = {};

var Base = C_lib.Base = (function () {

function F() {};

return {

extend: function (overrides) {

F.prototype = this;

var subtype = new F();

if (overrides) {

subtype.mixIn(overrides);

}

if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {

subtype.init = function () {

subtype.$super.init.apply(this, arguments);

};

}

subtype.init.prototype = subtype;

subtype.$super = this;

return subtype;

}, create: function () {

var instance = this.extend();

instance.init.apply(instance, arguments);

return instance;

}, init: function () {}, mixIn: function (properties) {

for (var propertyName in properties) {

if (properties.hasOwnProperty(propertyName)) {

this[propertyName] = properties[propertyName];

}

}

if (properties.hasOwnProperty('toString')) {

this.toString = properties.toString;

}

}, clone: function () {

return this.init.prototype.extend(this);

}

};

}());

var WordArray = C_lib.WordArray = Base.extend({

init: function (words, sigBytes) {

words = this.words = words || [];

if (sigBytes != undefined) {

this.sigBytes = sigBytes;

} else {

this.sigBytes = words.length * 4;

}

}, toString: function (encoder) {

return (encoder || Hex).stringify(this);

}, concat: function (wordArray) {

var thisWords = this.words;

var thatWords = wordArray.words;

var thisSigBytes = this.sigBytes;

var thatSigBytes = wordArray.sigBytes;

this.clamp();

if (thisSigBytes % 4) {

for (var i = 0; i < thatSigBytes; i++) {

var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;

thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);

}

} else if (thatWords.length > 0xffff) {

for (var i = 0; i < thatSigBytes; i += 4) {

thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];

}

} else {

thisWords.push.apply(thisWords, thatWords);

}

this.sigBytes += thatSigBytes;

return this;

}, clamp: function () {

var words = this.words;

var sigBytes = this.sigBytes;

words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);

words.length = Math.ceil(sigBytes / 4);

}, clone: function () {

var clone = Base.clone.call(this);

clone.words = this.words.slice(0);

return clone;

}, random: function (nBytes) {

var words = [];

var r = (function (m_w) {

var m_w = m_w;

var m_z = 0x3ade68b1;

var mask = 0xffffffff;

return function () {

m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;

m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;

var result = ((m_z << 0x10) + m_w) & mask;

result /= 0x100000000;

result += 0.5;

return result * (Math.random() > .5 ? 1 : -1);

}

});

for (var i = 0, rcache; i < nBytes; i += 4) {

var _r = r((rcache || Math.random()) * 0x100000000);

rcache = _r() * 0x3ade67b7;

words.push((_r() * 0x100000000) | 0);

}

return new WordArray.init(words, nBytes);

}

});

var C_enc = C.enc = {};

var Hex = C_enc.Hex = {

stringify: function (wordArray) {

var words = wordArray.words;

var sigBytes = wordArray.sigBytes;

var hexChars = [];

for (var i = 0; i < sigBytes; i++) {

var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;

hexChars.push((bite >>> 4).toString(16));

hexChars.push((bite & 0x0f).toString(16));

}

return hexChars.join('');

}, parse: function (hexStr) {

var hexStrLength = hexStr.length;

var words = [];

for (var i = 0; i < hexStrLength; i += 2) {

words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);

}

return new WordArray.init(words, hexStrLength / 2);

}

};

var Latin1 = C_enc.Latin1 = {

stringify: function (wordArray) {

var words = wordArray.words;

var sigBytes = wordArray.sigBytes;

var latin1Chars = [];

for (var i = 0; i < sigBytes; i++) {

var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;

latin1Chars.push(String.fromCharCode(bite));

}

return latin1Chars.join('');

}, parse: function (latin1Str) {

var latin1StrLength = latin1Str.length;

var words = [];

for (var i = 0; i < latin1StrLength; i++) {

words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);

}

return new WordArray.init(words, latin1StrLength);

}

};

var Utf8 = C_enc.Utf8 = {

stringify: function (wordArray) {

try {

return decodeURIComponent(escape(Latin1.stringify(wordArray)));

} catch (e) {

throw new Error('Malformed UTF-8 data');

}

}, parse: function (utf8Str) {

return Latin1.parse(unescape(encodeURIComponent(utf8Str)));

}

};

var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({

reset: function () {

this._data = new WordArray.init();

this._nDataBytes = 0;

}, _append: function (data) {

if (typeof data == 'string') {

data = Utf8.parse(data);

}

this._data.concat(data);

this._nDataBytes += data.sigBytes;

}, _process: function (doFlush) {

var data = this._data;

var dataWords = data.words;

var dataSigBytes = data.sigBytes;

var blockSize = this.blockSize;

var blockSizeBytes = blockSize * 4;

var nBlocksReady = dataSigBytes / blockSizeBytes;

if (doFlush) {

nBlocksReady = Math.ceil(nBlocksReady);

} else {

nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);

}

var nWordsReady = nBlocksReady * blockSize;

var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);

if (nWordsReady) {

for (var offset = 0; offset < nWordsReady; offset += blockSize) {

this._doProcessBlock(dataWords, offset);

}

var processedWords = dataWords.splice(0, nWordsReady);

data.sigBytes -= nBytesReady;

}

return new WordArray.init(processedWords, nBytesReady);

}, clone: function () {

var clone = Base.clone.call(this);

clone._data = this._data.clone();

return clone;

}, _minBufferSize: 0

});

var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({

cfg: Base.extend(),

init: function (cfg) {

this.cfg = this.cfg.extend(cfg);

this.reset();

}, reset: function () {

BufferedBlockAlgorithm.reset.call(this);

this._doReset();

}, update: function (messageUpdate) {

this._append(messageUpdate);

this._process();

return this;

}, finalize: function (messageUpdate) {

if (messageUpdate) {

this._append(messageUpdate);

}

var hash = this._doFinalize();

return hash;

}, blockSize: 512 / 32,

_createHelper: function (hasher) {

return function (message, cfg) {

return new hasher.init(cfg).finalize(message);

};

}, _createHmacHelper: function (hasher) {

return function (message, key) {

return new C_algo.HMAC.init(hasher, key).finalize(message);

};

}

});

var C_algo = C.algo = {};

return C;

}(Math));

(function (Math) {

var C = CryptoJS;

var C_lib = C.lib;

var WordArray = C_lib.WordArray;

var Hasher = C_lib.Hasher;

var C_algo = C.algo;

var T = [];

(function () {

for (var i = 0; i < 64; i++) {

T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;

}

}());

var MD5 = C_algo.MD5 = Hasher.extend({

_doReset: function () {

this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);

}, _doProcessBlock: function (M, offset) {

for (var i = 0; i < 16; i++) {

var offset_i = offset + i;

var M_offset_i = M[offset_i];

M[offset_i] = ((((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00));

}

var H = this._hash.words;

var M_offset_0 = M[offset + 0];

var M_offset_1 = M[offset + 1];

var M_offset_2 = M[offset + 2];

var M_offset_3 = M[offset + 3];

var M_offset_4 = M[offset + 4];

var M_offset_5 = M[offset + 5];

var M_offset_6 = M[offset + 6];

var M_offset_7 = M[offset + 7];

var M_offset_8 = M[offset + 8];

var M_offset_9 = M[offset + 9];

var M_offset_10 = M[offset + 10];

var M_offset_11 = M[offset + 11];

var M_offset_12 = M[offset + 12];

var M_offset_13 = M[offset + 13];

var M_offset_14 = M[offset + 14];

var M_offset_15 = M[offset + 15];

var a = H[0];

var b = H[1];

var c = H[2];

var d = H[3];

a = FF(a, b, c, d, M_offset_0, 7, T[0]);

d = FF(d, a, b, c, M_offset_1, 12, T[1]);

c = FF(c, d, a, b, M_offset_2, 17, T[2]);

b = FF(b, c, d, a, M_offset_3, 22, T[3]);

a = FF(a, b, c, d, M_offset_4, 7, T[4]);

d = FF(d, a, b, c, M_offset_5, 12, T[5]);

c = FF(c, d, a, b, M_offset_6, 17, T[6]);

b = FF(b, c, d, a, M_offset_7, 22, T[7]);

a = FF(a, b, c, d, M_offset_8, 7, T[8]);

d = FF(d, a, b, c, M_offset_9, 12, T[9]);

c = FF(c, d, a, b, M_offset_10, 17, T[10]);

b = FF(b, c, d, a, M_offset_11, 22, T[11]);

a = FF(a, b, c, d, M_offset_12, 7, T[12]);

d = FF(d, a, b, c, M_offset_13, 12, T[13]);

c = FF(c, d, a, b, M_offset_14, 17, T[14]);

b = FF(b, c, d, a, M_offset_15, 22, T[15]);

a = GG(a, b, c, d, M_offset_1, 5, T[16]);

d = GG(d, a, b, c, M_offset_6, 9, T[17]);

c = GG(c, d, a, b, M_offset_11, 14, T[18]);

b = GG(b, c, d, a, M_offset_0, 20, T[19]);

a = GG(a, b, c, d, M_offset_5, 5, T[20]);

d = GG(d, a, b, c, M_offset_10, 9, T[21]);

c = GG(c, d, a, b, M_offset_15, 14, T[22]);

b = GG(b, c, d, a, M_offset_4, 20, T[23]);

a = GG(a, b, c, d, M_offset_9, 5, T[24]);

d = GG(d, a, b, c, M_offset_14, 9, T[25]);

c = GG(c, d, a, b, M_offset_3, 14, T[26]);

b = GG(b, c, d, a, M_offset_8, 20, T[27]);

a = GG(a, b, c, d, M_offset_13, 5, T[28]);

d = GG(d, a, b, c, M_offset_2, 9, T[29]);

c = GG(c, d, a, b, M_offset_7, 14, T[30]);

b = GG(b, c, d, a, M_offset_12, 20, T[31]);

a = HH(a, b, c, d, M_offset_5, 4, T[32]);

d = HH(d, a, b, c, M_offset_8, 11, T[33]);

c = HH(c, d, a, b, M_offset_11, 16, T[34]);

b = HH(b, c, d, a, M_offset_14, 23, T[35]);

a = HH(a, b, c, d, M_offset_1, 4, T[36]);

d = HH(d, a, b, c, M_offset_4, 11, T[37]);

c = HH(c, d, a, b, M_offset_7, 16, T[38]);

b = HH(b, c, d, a, M_offset_10, 23, T[39]);

a = HH(a, b, c, d, M_offset_13, 4, T[40]);

d = HH(d, a, b, c, M_offset_0, 11, T[41]);

c = HH(c, d, a, b, M_offset_3, 16, T[42]);

b = HH(b, c, d, a, M_offset_6, 23, T[43]);

a = HH(a, b, c, d, M_offset_9, 4, T[44]);

d = HH(d, a, b, c, M_offset_12, 11, T[45]);

c = HH(c, d, a, b, M_offset_15, 16, T[46]);

b = HH(b, c, d, a, M_offset_2, 23, T[47]);

a = II(a, b, c, d, M_offset_0, 6, T[48]);

d = II(d, a, b, c, M_offset_7, 10, T[49]);

c = II(c, d, a, b, M_offset_14, 15, T[50]);

b = II(b, c, d, a, M_offset_5, 21, T[51]);

a = II(a, b, c, d, M_offset_12, 6, T[52]);

d = II(d, a, b, c, M_offset_3, 10, T[53]);

c = II(c, d, a, b, M_offset_10, 15, T[54]);

b = II(b, c, d, a, M_offset_1, 21, T[55]);

a = II(a, b, c, d, M_offset_8, 6, T[56]);

d = II(d, a, b, c, M_offset_15, 10, T[57]);

c = II(c, d, a, b, M_offset_6, 15, T[58]);

b = II(b, c, d, a, M_offset_13, 21, T[59]);

a = II(a, b, c, d, M_offset_4, 6, T[60]);

d = II(d, a, b, c, M_offset_11, 10, T[61]);

c = II(c, d, a, b, M_offset_2, 15, T[62]);

b = II(b, c, d, a, M_offset_9, 21, T[63]);

H[0] = (H[0] + a) | 0;

H[1] = (H[1] + b) | 0;

H[2] = (H[2] + c) | 0;

H[3] = (H[3] + d) | 0;

}, _doFinalize: function () {

var data = this._data;

var dataWords = data.words;

var nBitsTotal = this._nDataBytes * 8;

var nBitsLeft = data.sigBytes * 8;

dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);

var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);

var nBitsTotalL = nBitsTotal;

dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ((((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00));

dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ((((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00));

data.sigBytes = (dataWords.length + 1) * 4;

this._process();

var hash = this._hash;

var H = hash.words;

for (var i = 0; i < 4; i++) {

var H_i = H[i];

H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);

}

return hash;

}, clone: function () {

var clone = Hasher.clone.call(this);

clone._hash = this._hash.clone();

return clone;

}

});

function FF(a, b, c, d, x, s, t) {

var n = a + ((b & c) | (~b & d)) + x + t;

return ((n << s) | (n >>> (32 - s))) + b;

}

function GG(a, b, c, d, x, s, t) {

var n = a + ((b & d) | (c & ~d)) + x + t;

return ((n << s) | (n >>> (32 - s))) + b;

}

function HH(a, b, c, d, x, s, t) {

var n = a + (b ^ c ^ d) + x + t;

return ((n << s) | (n >>> (32 - s))) + b;

}

function II(a, b, c, d, x, s, t) {

var n = a + (c ^ (b | ~d)) + x + t;

return ((n << s) | (n >>> (32 - s))) + b;

}

C.MD5 = Hasher._createHelper(MD5);

C.HmacMD5 = Hasher._createHmacHelper(MD5);

}(Math));

function GetSignPar(PAR1) {

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

signature今日头条php实现,今日头条_signature 值解析算法,另带DEMO_精易论坛 的相关文章

  • Odoo免费开源ERP订单锁货的应用实施技巧分享

    Odoo是世界排名第一的免费开源ERP 其应用市场上有3万多个功能插件可供下载使用 几乎涵盖各行各业的企业业务管理流程 包括库存管理 销售管理 采购管理 制造管理 维修保养 网站电商 市场营销 项目管理 HR 财务 PLM等等 并且源码交付
  • 服务器备案的网站名称怎么填写,公安备案网站名称怎么写?

    最近很多新老用户接到西安网警打来电话让进行公安网安备案 要求通过全国互联网安全管理服务平台进行公安联网备案 客户俗称 公安备案网站名称怎么写 依据 计算机信息网络国际联网安全保护管理办法 相关规定 各网站在工信部备案成功后 需在网站开通之日
  • 迪杰斯特拉算法(Dijkstra)-Java实现

    迪杰斯特拉算法也是求两点之间最短路径的算法 它的思想和普利姆算法有点相似 不断通过已找到点集合和未找到点之间的集合之间的最短路径 这个算法需要用到三个数组 一个是存储结点是否已经访问 一个是结点到起始点的最短距离 还有一个是结点到起始点第一
  • Java实现简单版SVM

    Java实现简单版SVM 最近的图像分类工作要用到latent svm 为了更加深入了解svm 自己动手实现一个简单版的 之所以说是简单版 因为没有用到拉格朗日 对偶 核函数等等 而是用最简单的梯度下降法求解 其中的数学原理我参考了http
  • 解决Adobe Flash Player已不再受支持的问题

    1 问题展示 我们在访问某些网站时 可能会出现Adobe Flash Player已不再受支持的问题 具体如下图所示 这会对我们的日常生活需求产生极大的不便 因此迫切需要一个能够解决此问题的方法 其实很简单 具体操作请看下面的步骤 2 下载
  • 移动端+PC端图片预览+手势缩放等功能合集

    话不多说 直接上代码 大家可按需求功能复制使用 window onload function 点击图片进入预览 var Dom document querySelector preview Dom onclick function var
  • 接口如何实现多态

    抽象类是用来继承的 不能被实例化 抽象类里可以有成员变量 接口中没有 1 抽象类里的抽象方法 只有在子类实现了才能使用 2 抽象类里的普通方法 可被子类调用 3 接口里的方法 都被默认修饰为public abstract类型 4 接口里的变
  • 记录1年免费亚马逊AWS云服务器申请方法过程及使用技巧

    转载 http www itbulu com free aws html 早年我们才开始学习网站建设的时候 会看到且也会寻找免费主机商 主要原因是那时候提供免费主机的商家还是比较靠谱的 而且那时候主机商并不是很多且成本也比较大 我们深知听到
  • linux上层app调用驱动底层的过程详解

    APP应用程序 gt 应用框架层 gt 硬件抽象层 gt 硬件驱动程序 一 硬件驱动层 进入kernel drivers文件夹中 创建一文件夹 放入驱动程序 包括头文件 C文件 Makefile Kconfig 同时对drivers下的Ma
  • 滚动屏幕或缩放屏幕,使用节流

    场景 滚动屏幕 onScroll 缩放屏幕 resize 如果需要统计用户滚动屏幕或缩放屏幕的行为作出相应的网页反应 容易导致网络的阻塞 mounted window addEventListener resize this throttl
  • 基于聚类的异常值检测算法依据及python实现

    假设数据集D被聚类算法划分到k个类C C1 C2 CK 对象p 的离群因子of3 p 定义为 与所有类间距的加权平均值 其中 D 为样本数量 Cj 为第j个聚类群体样本数量 d p cj 为样本p与第j个聚类中心的距离 其中cj表示第j个聚
  • LeetCode·每日一题·1851. 包含每个查询的最小区间·优先队列(小顶堆)

    题目 示例 思路 离线查询 输入的结果数组queries 是无序的 如果我们按照输入的queries 本身的顺序逐个查看 时间复杂度会比较高 于是 我们将queries 数组按照数值大小 由小到大逐个查询 这种方法称之为离线查询 位运算 离
  • ExtJS之 Proxy数据代理

    ExtJS之 Proxy数据代理 代理种类截图 ExtJS提供的数据代理主要分为两大类 1 客户端代理 Ext data proxy Client 2 服务器代理 Ext data proxy Server 这两个类 都继承自 Ext da
  • Ansible的简介及部署

    1 ansible简介 1 1 什么是ansible ansible是一款开源自动化平台 是一个配置管理工具 自动化运维工具 1 2 ansible的优点 跨平台支持 人类可读自动化 ansible提供linux Windows unix和
  • 类的一些内置方法

    一 slots 用来取代 dict 优势是省内存 附加功能是只能创建slots 定义好的key 注意 不要乱用 用了就没有 dic 方法了 class Foo slots name age 这里可以是列表或者单个字符串 定义key值 f1
  • 解决matplotlib画图中文乱码

    一 下载字体 以SimHei字体为例 下载SimHei ttf文件 在python环境下输入 import matplotlib print matplotlib path 输出matplotlib的安装环境 放在该路径下的mpl data
  • 彻底删除SVN版本库某一文件夹或文件

    基础描述 要彻底删除SVN版本库某一文件夹或文件 可采取这种方法 举例说明 例 假设SVN库路径为E svn project 库中的目录结构为 Trunk Software test exe 删除Software 目录下的test exe文
  • 赫尔德不等式详细证明

    赫尔德不等式详细证明 k 1n akbk k 1n ak p 1 p k 1n bk q 1 q 1 sum k 1 n left a k b k right leqslant sum k 1 n left a k right p 1 p

随机推荐

  • FPGA实战--等精度频率测量

    首先放置效果图 本次试验中采用的是等精度测频率 等精度测频的原理是产生一个1s的高电平 在高电平中对被测方波进行计数 所测得数字即该波形频率 具体等精度测量原理请参考 http www elecfans com d 591858 html
  • 若依框架前后端分离版本自动生成代码的详细步骤

    1 若依框架的下载和本地运行这里就不介绍了主要讲代码自动生成 只是单表的增删改成 复杂的多表业务逻辑还是需要自己手写的 话不多说直接上图 一 新建模块 本地运行起来后右键新建Module 注意这里的Name 可以和若依类似 也可以自己定义新
  • 基于Axure 8课程设计-前端页面设计-漫画APP界面/UI设计(免费分享.rp文件学习)

    这次的课程设计主要是UI设计 基于Axure我设计了一个类似动漫之家的一个设计界面 以下是效果图 UI首页 点击夜魔侠 点击更新按钮 点击分类按钮 排行 点击专题按钮之后 点击搜索按钮之后 点击 新闻 按钮 点击 轻小说 按钮 点击 我的
  • 关于Qt/C++和QML获取屏幕大小方法的总结

    在桌面应用程序的开发过程中 获取屏幕 桌面 的大小来定位桌面应用所显示的位置 是桌面开发中经常用到的 手段 在Qt开发和QML开发中也不例外 本篇着重介绍Qt获取桌面屏幕大小的两种方法 以及对应的QML中获取桌面屏幕 大小的两种方法 首先上
  • 将onnx的静态batch改为动态batch及修改输入输出层的名称

    文章目录 背景 操作 修改输入输出层 修改输入输出层名称 完整代码 背景 在模型的部署中 为了高效利用硬件算力 常常会需要将多个输入组成一个batch同时输入网络进行推理 这个batch的大小根据系统的负载或者摄像头的路数时刻在变化 因此网
  • 《Python进阶系列》十七:详解Python中的猴子补丁——允许在运行时更改对象的行为

    猴子补丁是一项允许在运行时更改对象行为的技术 它是一个非常有用的功能 但它也可能使你的代码更难以理解和调试 因此 在实现猴子补丁程序时必须谨慎 猴子补丁的用法 猴子补丁与Python中的灵活性紧密相关 自定义对象是可变的 因此可以替换其属性
  • laravel-admin grid中使用switch操作一对一关联属性(源码探究到功能实现)

    我的个人博客 逐步前行STEP 项目中有一个商品表 production 有一个库存表 repertory 两者一对一关系 production有发布字段 release 需求是在repertory的grid中 有一个switch开关 用于
  • 【面试题】宏任务和微任务

    1 宏任务和微任务 宏任务 macroTask 和微任务 microTask 都是异步中API的分类 宏任务 setTimeout setInterval Ajax DOM事件 微任务 Promise async await 微任务执行时机
  • C语言经典100例题(25)--求1+2!+3!+...+20!的和

    目录 题目 问题分析 代码 运行结果 题目 求1 2 3 20 的和 问题分析 1 1 2 1 2 3 1 2 3 不难发现 1 2 3 20 每个阶乘都比前一个多乘了一个 i 代码 include
  • 使用antd pro初始化项目时出现报错:

    npm i ant design pro cli g出现报错 解决 使用sudo tnpm i ant design pro cli g 接着pro create myapp 一切都很顺利 但是在tnpm install时出现报错 这个问题
  • C51简介及Keil的使用

    前言 此文档主要是针对有一定C C 编程基础 并打算用Keil从事C51开发的开发人员 C51涉及的知识比较多 但是入门基本的开发 还是容易的 C51简介 1 C51概念 C51继承于C语言 主要运行于51内核的单片机平台 单片机 单片微型
  • Linux环境搭建----VMware安装虚拟机

    一 VMare虚拟机安装与使用 1 1 VMware简介 1 VMware是一个虚拟PC的软件 可以在现有的操作系统上虚拟出一个新的额硬件环境 相当于模拟出一个新的PC 2 WMware官方网站 http www vmware com 3
  • python重复执行命令_怎样能重复执行一条命令直到运行成功

    在我们的日常工作中 需要我们重复做的工作简直不能太多 比如 我们想要确认网络是否是连通的 传统的做法就是使用 ping 命令不停去测试某个地址 比如百度 网络比较好还好说 但如果网络很差 那么就需要一直去运行 ping 命令 作为程序员 重
  • 双链表嵌套的简单学生信息管理系统

    参考 实现双链表嵌套的简单学生信息管理 作者 三速何时sub20 发布时间 2020 07 20 10 44 40 网址 https blog csdn net weixin 44234294 article details 1074581
  • C++内联函数

    C 内联函数 1 什么是函数 函数是一个可以重复使用的代码块 CPU 会一条一条地挨着执行其中的代码 CPU 在执行主调函数代码时如果遇到了被调函数 主调函数就会暂停 CPU 转而执行被调函数的代码 被调函数执行完毕后再返回到主调函数 主调
  • PCL 基于迭代双边滤波的点云平滑

    目录 一 算法原理 1 原理概述 2 主要函数 3 参考文献 二 代码实现 三 结果展示 一 算法原理 1 原理概述 点云双边滤波的算法原理和详细实现过程见 PCL 基于法线的双边滤波 具体实现效果如下图所示 绿色为平滑前的点云 红色为平滑
  • 区块链产业生态发展情况-中国区块链产业生态发展

    2019以来中国区块链产业处于蓬勃发展期 从中央到地方有关区块链发展的指导意见和扶持政策不断发布 据不完全统计 今年上半年全国共有超过23个省市发布了112条涉及区块链的政策信息 多省市把区块链纳入发展数字经济的规划中 大力推进区块链应用落
  • 2023电赛E题:OpenMV4的矩形识别与中心判断

    增加识别率 使用OpenMV4官方的矩形识别案例 发现识别率很低 经常乱识别 为了增加识别率 加入最大矩形块的判断 让其只识别最大的矩形块 发现识别率高了很多 矩形起点识别与中心判断 接着是矩形起点和矩形中心判断 通过矩形类自带的矩形4元素
  • 数据降维

    数据降维 MATLAB实现基于LFDA基于局部费歇尔判别的分类数据降维可视化 目录 数据降维 MATLAB实现基于LFDA基于局部费歇尔判别的分类数据降维可视化 基本介绍 模型描述 程序设计 学习小结 基本介绍 MATLAB实现基于LFDA
  • signature今日头条php实现,今日头条_signature 值解析算法,另带DEMO_精易论坛

    navigator WT JS DEBUG v1 7 5 NLiger2018 appCodeName Mozilla appMinorVersion 0 appName Netscape appVersion 5 0 Windows NT