Menu.item改成Menu.Item……
突然發(fā)現(xiàn)自己有點(diǎn)呆,docker中啟動(dòng)的mysql 端口鏡像指向服務(wù)器,所以只需要訪問(wèn)192.168.0.130這臺(tái)數(shù)據(jù)庫(kù)服務(wù)器的端口就可以了
*第一步:排序,時(shí)間從近到遠(yuǎn)
*第二步:分割,將數(shù)組分成5個(gè)一組,返回新數(shù)組
*第三步:抽離,將相同時(shí)間抽離出來(lái)組成要求上的數(shù)據(jù)格式
第一步:排序
var compare = function (prop) {
return function (obj1, obj2) {
var val1 = obj1[prop];
var val2 = obj2[prop];
if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
val1 = Number(val1);
val2 = Number(val2);
}
if (val1 < val2) {
return 1;
} else if (val1 > val2) {
return -1;
} else {
return 0;
}
}
}
//用法
arr.sort(compare("time"))
第二步:分割
//分割
Array.prototype.chunk = function(size) {
var array = this;
const length = array.length
if (!length || !size || size < 1) {
return []
}
let index = 0
let resIndex = 0
let result = new Array(Math.ceil(length / size))
while (index < length) {
result[resIndex++] = array.slice(index, (index += size))
}
return result
}
//用法
arr.chunk(5)
第三步:抽離
//抽離
function sortArr(arr, str) {
var _arr = [],
_t = [],
// 臨時(shí)的變量
_tmp;
// 按照特定的參數(shù)將數(shù)組排序?qū)⒕哂邢嗤档门旁谝黄? arr = arr.sort(function(a, b) {
var s = a[str],
t = b[str];
return s < t ? -1 : 1;
});
if ( arr.length ){
// _tmp = arr[0][str];
_tmp = new Date(arr[0][str]).getFullYear()
}
// 將相同類(lèi)別的對(duì)象添加到統(tǒng)一個(gè)數(shù)組
for (let i=0;i<arr.length;i++) {
if(new Date(arr[i][str]).getFullYear()===_tmp){
// if ( arr[i][str] === _tmp ){
_t.push( arr[i] );
} else {
_tmp = new Date(arr[i][str]).getFullYear();
_arr.push( _t );
_t = [arr[i]];
}
}
// 將最后的內(nèi)容推出新數(shù)組
_arr.push(_t);
return _arr;
}
//用法,這里僅對(duì)一維數(shù)組使用
sortArr( arr, 'time')
//我將數(shù)據(jù)一二步處理后開(kāi)始二叉數(shù)循環(huán)
var cc = arr.sort(compare("time")).chunk(5)
var _cc = []
for(let i=0;i<cc.length;i++){
//抽離
var _datas=sortArr( cc[i], 'time')
//根據(jù)所給數(shù)據(jù)結(jié)構(gòu)進(jìn)行賦值
_cc.push({section:i+1, sectionDatas:[]})
for(let o=0;o<_datas.length;o++){
_cc[i].sectionDatas.push({
data:new Date(_datas[o][0].time).getFullYear(),
datas:[]
})
}
for(let p=0;p<_cc[i].sectionDatas.length;p++){
_cc[i].sectionDatas[p].datas=sortArr(cc[i], 'time')[p]
}
}
功力不夠,謹(jǐn)慎使用
class Functor {
constructor(data){
this.data = data
}
map(data){
return new Functor(data)
}
//排序
compare(prop) {
var result = this.data.sort(function (obj1, obj2) {
var val1 = obj1[prop];
var val2 = obj2[prop];
if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
val1 = Number(val1);
val2 = Number(val2);
}
if (val1 < val2) {
return 1;
} else if (val1 > val2) {
return -1;
} else {
return 0;
}
})
return this.map(result)
}
//分割
chunk(size) {
var array = this.data;
//獲取數(shù)組的長(zhǎng)度,如果你傳入的不是數(shù)組,那么獲取到的就是undefined
const length = array.length
//判斷不是數(shù)組,或者size沒(méi)有設(shè)置,size小于1,就返回空數(shù)組
if (!length || !size || size < 1) {
return []
}
//核心部分
let index = 0 //用來(lái)表示切割元素的范圍start
let resIndex = 0 //用來(lái)遞增表示輸出數(shù)組的下標(biāo)
//根據(jù)length和size算出輸出數(shù)組的長(zhǎng)度,并且創(chuàng)建它。
let result = new Array(Math.ceil(length / size))
//進(jìn)行循環(huán)
while (index < length) {
//循環(huán)過(guò)程中設(shè)置result[0]和result[1]的值。該值根據(jù)array.slice切割得到。
result[resIndex++] = array.slice(index, (index += size))
}
//輸出新數(shù)組
// return result
return this.map(result)
}
//抽離
sortArr(arr, str) {
var _arr = [],
_t = [],
// 臨時(shí)的變量
_tmp;
// 按照特定的參數(shù)將數(shù)組排序?qū)⒕哂邢嗤档门旁谝黄? arr = arr.sort(function(a, b) {
var s = a[str],
t = b[str];
return s < t ? -1 : 1;
});
if ( arr.length ){
// _tmp = arr[0][str];
_tmp = new Date(arr[0][str]).getFullYear()
}
// 將相同類(lèi)別的對(duì)象添加到統(tǒng)一個(gè)數(shù)組
for (let i=0;i<arr.length;i++) {
if(new Date(arr[i][str]).getFullYear()===_tmp){
// if ( arr[i][str] === _tmp ){
_t.push( arr[i] );
} else {
_tmp = new Date(arr[i][str]).getFullYear();
_arr.push( _t );
_t = [arr[i]];
}
}
// 將最后的內(nèi)容推出新數(shù)組
_arr.push(_t);
return _arr;
}
//轉(zhuǎn)指定json格式
dataToJSON(){
var _json = []
var _this = this;
this.data.forEach(function(item,i){
var _datas=_this.sortArr( item, 'time')
_json.push({section:i+1, sectionDatas:[]})
for(let o=0;o<_datas.length;o++){
_json[i].sectionDatas.push({
data:new Date(_datas[o][0].time).getFullYear(),
datas:[]
})
}
for(let p=0;p<_json[i].sectionDatas.length;p++){
_json[i].sectionDatas[p].datas=_datas[p]
}
})
return _json
}
}
Functor.of = function(data){
return new Functor(data)
}
使用方法
Functor.of(a).compare("time").chunk(5).dataToJSON() //返回一個(gè)新的值,不改變?cè)瓉?lái)數(shù)據(jù)你先寫(xiě)一個(gè)DefaultConfig類(lèi),然后在各個(gè)項(xiàng)目里都@Import(xxpackage.DefaultConfig)就有了。
找到問(wèn)題所在了,是自己寫(xiě)的http請(qǐng)求工具有問(wèn)題,curl我設(shè)置 CURLOPT_FOLLOWLOCATION = true 導(dǎo)致。
CURLOPT_FOLLOWLOCATION 啟用時(shí)會(huì)將服務(wù)器服務(wù)器返回的"Location: "放在header中遞歸的返回給服務(wù)器,使用 CURLOPT_MAXREDIRS 可以限定遞歸返回的數(shù)量。
先說(shuō)說(shuō)請(qǐng)求攔截的情況:
在單頁(yè)應(yīng)用中,如果需要保存用戶信息基本上需要維護(hù)一個(gè) token (或者說(shuō)類(lèi)似的東西),這個(gè) token 是需要跟隨請(qǐng)求給到后端,這時(shí)候就會(huì)把請(qǐng)求攔截下來(lái),動(dòng)態(tài)的注入 token 。一些固定的請(qǐng)求頭信息,會(huì)用到這種情況。還有一種,就是你們公司有固定的請(qǐng)求參數(shù)接收方式(怪異的接收方式),但是你又想正常寫(xiě)成json的形式,那么請(qǐng)求攔截也會(huì)有用,用于轉(zhuǎn)化參數(shù)傳遞方式。
接著說(shuō)說(shuō)響應(yīng)攔截的情況:
restful api 是不會(huì)出現(xiàn)請(qǐng)求錯(cuò)誤重定向的問(wèn)題的,也就是說(shuō)即使請(qǐng)求出錯(cuò),后端也會(huì)是正常響應(yīng)的,只不錯(cuò)是會(huì)提供給你一個(gè)錯(cuò)誤碼,這時(shí)候,攔截響應(yīng)就能處理后端響應(yīng)回來(lái)的錯(cuò)誤碼,然后進(jìn)行對(duì)應(yīng)的操作,比如提示錯(cuò)誤信息等等。當(dāng)然同樣的也可以處理數(shù)據(jù),比如你們公司返回回來(lái)一種怪異的數(shù)據(jù)格式(不是json),就可以處理成前端友好的格式(json)。
問(wèn)題已解決;自己寫(xiě)了一個(gè)小三角定位在右面,由于不知道如何加background圖,所以改成了自己寫(xiě)的一個(gè)三角,完美解決。
.el-menu-item.is-active:after{content: "";position: absolute;right: 0;top:40%;border: 5px solid transparent;border-right-color: #ff6c00;border-radius: 0;font-size: 0;width: 0;height: 0;padding: 0;}
這個(gè)放在elementui 的index.css中
def SendEmail(strinfo, title="測(cè)試郵件", recipients="xxxxxxxxx@qq.com"):
"""
:param strinfo: 通知內(nèi)容字符串
:param recipients: 收件人,多個(gè)收件人用逗號(hào)分割
:return:發(fā)送成功返回0
用于發(fā)送通知到指定郵箱
"""
import smtplib # 用于發(fā)送郵件
from email.mime.text import MIMEText # 用于郵件內(nèi)容格式處理
try:
smtp_server = "smtp.yeah.net" # smtp服務(wù)器
smtp_port = 25 # smtp服務(wù)器端口
smtp_user = "username@yeah.net" # smtp用戶名
password = "password" # smtp密碼
msg = MIMEText(strinfo)#郵件內(nèi)容
msg["Subject"] = "%s" % title # 定義郵件主題
msg["From"] = smtp_user # 發(fā)件人
msg["To"] = recipients # 收件人
email = smtplib.SMTP(smtp_server, int(smtp_port)) # 定義服務(wù)器信息
email.login(user=smtp_user, password=password) # 登陸郵件服務(wù)器
email.sendmail(smtp_user, recipients.split(","), msg.as_string())
# 發(fā)送郵件,recipients以逗號(hào)分割可發(fā)送至多個(gè)收件人
email.quit() # 退出郵箱
return 0
except Exception as e:
pass
# writelog("發(fā)送郵件錯(cuò)誤%s" % e)
我是用smtplib庫(kù) 網(wǎng)易發(fā)送到QQ郵箱 不用刻意設(shè)置什么
看了下你貼的代碼,是你把此item和彼item理解混了
function remove(item){
var prevNode = this.findPrevious(item);
if(!(prevNode.next==null)){
prevNode.next = prevNode.next.next; //###########這一句是有疑惑的地方
}
}
這里的item其實(shí)應(yīng)該是itemName
function remove(itemName){
var prevNode = this.findPrevious(itemName);
if(!(prevNode.next==null)){
prevNode.next = prevNode.next.next; //###########這一句是有疑惑的地方
}
}
所以按你的方法應(yīng)該這樣寫(xiě)
function remove(itemName){
var item = this.find(itemName);
var prevNode = this.findPrevious(itemName);
if(!(prevNode.next==null)){
prevNode.next = item.next; //###########這一句是有疑惑的地方
}
}// # bash 命令行
webpack
// 打包默認(rèn)使用的配置文件就是 webpack.config.js
// 如果配置文件在build/webpack.prod.conf.js;
// 那package.json 寫(xiě)成這樣即可
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config build/webpack.prod.conf.js"
},提示給的是找不到bin里面配置的文件,你打包的時(shí)候,里面是不是沒(méi)有對(duì)應(yīng)的文件啊
let myChart = this.$echarts.init(document.getElementById('myChart'));
設(shè)置成全局看看
公司里面的mysql好像有問(wèn)題,我回家試了一下,沒(méi)有發(fā)生這種詭異的事件
<t-dropdown-item on-on-click={() => this.event()}>
this作用域的問(wèn)題,把_fetchMoreData改成箭頭函數(shù)
以上錯(cuò)誤信息,關(guān)鍵點(diǎn)有三句:
1、There are multiple modules with names that only differ in casing.有多個(gè)模塊同名僅大小寫(xiě)不同
2、This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.這可能導(dǎo)致在一些文件系統(tǒng)中產(chǎn)生不是預(yù)期的行為
Use equal casing.使用唯一的寫(xiě)法
linux和mac是嚴(yán)格區(qū)分大小寫(xiě)的,而windows不區(qū)分。
你好,我想請(qǐng)教一下,我的是在后臺(tái)用php請(qǐng)求的,請(qǐng)求之后,沒(méi)有報(bào)錯(cuò)也沒(méi)有給我返回任何數(shù)據(jù),
on: {
'on-ok': () => {
this.$Message.info('點(diǎn)擊了確定');
},
'on-cancel': () => {
}
}
這里不能綁定 on-ok事件 ,只能綁定 click事件這類(lèi)
你說(shuō)的應(yīng)該是vue-cli生成的配置文件上的proxytable吧
1.事實(shí)上在你運(yùn)行的時(shí)候,會(huì)配置啟動(dòng)一個(gè)node服務(wù),這個(gè)服務(wù)的作用1是靜態(tài)文件服務(wù),讓你可以訪問(wèn)到html/js等文件包括監(jiān)聽(tīng)文件變動(dòng)等,2是啟動(dòng)一個(gè)http代理,你js發(fā)送的請(qǐng)求會(huì)請(qǐng)求到這個(gè)服務(wù)A,由服務(wù)A代理到服務(wù)B,而服務(wù)A和靜態(tài)文件服務(wù)器是同源的,并不影響同源策略。
2.瀏覽器是沒(méi)有必要設(shè)置CORS的,服務(wù)器設(shè)置CORS就是為了告知瀏覽器允許訪問(wèn)我的源,不是跟我同源的,要在瀏覽器接受到響應(yīng)后拋出錯(cuò)誤。
微信的問(wèn)題吧,我的也一直改不了顏色
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。