上傳成功之后在回調(diào)方法內(nèi)置空數(shù)據(jù)
python3, 直接改成list1_name.append(elements[0])就可以了:
ftele1=open('a.txt', 'r', encoding='utf-8')
ftele2=open('b.txt', 'r', encoding='utf-8')
ftele1.readline() #跳過第一行
ftele2.readline()
lines1 = ftele1.readlines()
lines2 = ftele2.readlines()
list1_name = []
list1_tele = []
list2_name = []
list2_email = []
for line in lines1: #獲取第一個文本中的姓名和電話信息
elements = line.split()
print(elements[0])
list1_name.append(elements[0])
list1_tele.append(elements[1])
for line in lines2: #獲取第二個文本中的姓名和郵箱信息
elements = line.split()
list2_name.append(elements[0])
list2_email.append(elements[1])
#開始處理
lines = []
lines.append('姓名\t 電話\t 郵箱\n')
#按索引方式遍歷姓名列表1
for i in range(len(list1_name)):
s=''
if list1_name[i] in list2_name:
j = list2_name.index(list1_name[i]) #找到姓名列表1對應(yīng)列表2中國年的姓名索引位置
s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])
s += '\n'
else:
s = '\t'.join([list1_name[i], list1_tele[i], str(' ----- ')])
s += '\n'
lines.append(s)
#處理姓名列表2中剩余的姓名
for i in range(len(list2_name)):
s=''
if list2_name[i] not in list1_name:
s = '\t'.join([list2_name[i], str(' ----- '), list2_email[i]])
s += '\n'
lines.append(s)
ftele3 = open('AddrBook.txt', 'w')
ftele3.writelines(lines)
ftele3.close()
ftele1.close()
ftele2.close()
print('The AddressBooks are merged!')
python2 類似,但是頭上加個# encoding=utf-8:
# encoding=utf-8
ftele1=open('a.txt', 'rb')
ftele2=open('b.txt', 'rb')
ftele1.readline()
ftele2.readline()
lines1 = ftele1.readlines()
lines2 = ftele2.readlines()
list1_name = []
list1_tele = []
list2_name = []
list2_email = []
for line in lines1:
elements = line.split()
print(elements[0])
list1_name.append(elements[0])
list1_tele.append(elements[1])
for line in lines2:
elements = line.split()
#print(elements)
list2_name.append(elements[0])
list2_email.append(elements[1])
lines = []
lines.append('姓名\t 電話\t 郵箱\n')
for i in range(len(list1_name)):
s=''
if list1_name[i] in list2_name:
j = list2_name.index(list1_name[i])
s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])
s += '\n'
else:
s = '\t'.join([list1_name[i], list1_tele[i], str(' ----- ')])
s += '\n'
lines.append(s)
for i in range(len(list2_name)):
s=''
if list2_name[i] not in list1_name:
s = '\t'.join([list2_name[i], str(' ----- '), list2_email[i]])
s += '\n'
lines.append(s)
ftele3 = open('AddrBook.txt', 'w')
ftele3.writelines(lines)
ftele3.close()
ftele1.close()
ftele2.close()
print('The AddressBooks are merged!')webpack 3.0以上的版本,熱更新中要去掉hot:true選項并且命令啟動要取消--hot參數(shù)。
你可以試試,雖然你的版本不是3.0以上。
{
test: /\.css$/,
include: /node_modules\/antd/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
modules:false
},
},
]
},
{
test: /\.css$/,
exclude: /node_modules\/antd/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
modules:true,
localIdentName:'[name]-[local]-[hash:base64:8]',
},
},
]
},MDN :
如果對象中不存在指定的屬性,Object.defineProperty()就創(chuàng)建這個屬性。當(dāng)描述符中省略某些字段時,這些字段將使用它們的默認(rèn)值。擁有布爾值的字段的默認(rèn)值都是false。
意思是,如果你通過Object.defineProperty()創(chuàng)建新屬性,省略描述符的某些字段,如果值為布爾型,則為 false;
Reflect.getOwnPropertyDescriptor(Object.defineProperty({}, 'key', {value:1}),'key')//{value: 1, writable: false, enumerable: false, configurable: false}
如果你不通過 Object.defineProperty() 創(chuàng)建新的屬性,而是通過對象字面量創(chuàng)建屬性,默認(rèn)值為 true ,高程說的沒問題;
Reflect.getOwnPropertyDescriptor({key:1},'key')//{value: 1, writable: true, enumerable: true, configurable: true}
let o={};
o.key=1;
Reflect.getOwnPropertyDescriptor(o,'key')//同上
另外,底層操作現(xiàn)在可以轉(zhuǎn)移到 Reflect 對象上來操作;
for(int i = 0; i < n; i++) {
if(a[i] == x) {
cout << i << endl;
break; // 這里break了,下面的flag=true不會被執(zhí)行到
flag = true;
}
}個人理解空間復(fù)雜度為O(1)的歸并排序是指內(nèi)存方面的空間復(fù)雜度,而忽略了堆棧里的O(logN)的空間復(fù)雜度(畢竟不在同一個空間)
//空間復(fù)雜度為O(1)的歸并排序
#include <iostream>
using namespace std;
void reverse_array(int a[], int n) {
int i = 0;
int j = n - 1;
while (i < j) {
swap(a[i], a[j]);
++i;
--j;
}
}
void exchange(int a[], int length, int length_left) {
reverse_array(a, length_left);
reverse_array(a + length_left, length - length_left);
reverse_array(a, length);
}
void Merge(int a[], int begin, int mid, int end) {
while (begin < mid && mid <= end) {
int step = 0;
while (begin < mid && a[begin] <= a[mid])
++begin;
while (mid <= end && a[mid] <= a[begin]) {
++mid;
++step;
}
exchange(a + begin, mid - begin, mid - begin - step);
}
}
void MergeCore(int a[], int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
MergeCore(a, left, mid);
MergeCore(a, mid + 1, right);
Merge(a, left, mid + 1, right);
}
}
void MergeSort(int a[], int length) {
if (a == NULL || length < 1)
return;
MergeCore(a, 0, length - 1);
}
int main() {
int a[] = {1,0,2,9,3,8,4,7,6,5,11,99,22,88,11};
int length = sizeof(a) / sizeof(int);
MergeSort(a, length);
for (int i = 0; i < length; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}我的做法是使用promise來處理多個上傳請求,然后每個上傳請求完成后返回地址。
全部上傳完成后在請求一次,保存這幾條地址到數(shù)據(jù)庫。
promisify.js:
module.exports = (api) => {
return (options, ...params) => {
return new Promise((resolve, reject) => {
api(Object.assign({}, options, { success: resolve, fail: reject }), ...params);
});
}
}
我封裝的上傳函數(shù)upload,放在network.js中:
function upload(options) {
var url = options.url,
path = options.path,
name = options.name,
// data = options.data,
extra = options.extra,
success = options.success,
progress = options.progress,
fail = options.fail
console.log("upload url:" + url)
const uploadTask = wx.uploadFile({
url: url,
filePath: path,
name: name,
formData: extra,
success: function (res) {
console.log(res);
var data = res.data
try {
data = JSON.parse(res.data)
console.log(data)
}
catch (e) {
console.log(data)
throw(e)
}
if (res.statusCode == 200 && data.code == 1000) {
if (success) {
success(data)
}
}
else {
if (fail) {
fail(data)
}
}
},
fail: function (res) {
console.log(res)
if (fail) {
fail(res)
}
}
})
uploadTask.onProgressUpdate((res) => {
console.log('上傳進(jìn)度', res.progress)
console.log('已經(jīng)上傳的數(shù)據(jù)長度', res.totalBytesSent)
console.log('預(yù)期需要上傳的數(shù)據(jù)總長度', res.totalBytesExpectedToSend)
if (progress) (
progress(res)
)
})
}
module.exports = {
upload: upload
}
上傳:
const network = require("../../utils/network.js")
const promisify = require("../../utils/promisify.js")
//轉(zhuǎn)為promise對象
const upload = promisify(network.upload)
//上傳函數(shù)
uploadMultiImage: function (paths) {
let z = this
let url = '...'
const promises = paths.map(function (path) {
return upload({
url: url,
path: path,
name: 'file',
extra: {},
})
})
wx.showLoading({
title: '正在上傳...',
})
Promise.all(promises).then(function (datas) {
//所有上傳完成后
wx.hideLoading()
// 服務(wù)器返回的路徑
let paths = datas.map(data => {
return data.data
})
// 保存,這里可以選擇發(fā)送一個請求,保存這幾條路徑
images = images.concat(paths)
z.setData({
images: images
})
}).catch(function (res) {
wx.hideLoading()
util.handleFail(res)
})
}不要用自帶的$http,用原生的或者jq的
ie控制臺會有報錯提示的你不妨看下,我建議把import 'babel-polyfill' 這一行移到最上面
沒用過iview
可以嘗試使用 jsx,然后在 render哪里寫jsx
怎么配置 vue 的jsx 相關(guān)插件,出門右轉(zhuǎn)vue官網(wǎng),很詳細(xì)。
slice是JavaScript方法沒錯,但是你寫的地方不是在script標(biāo)簽內(nèi)呀,怎么能使用呢?如果要對數(shù)據(jù)進(jìn)行處理,可以在返回數(shù)據(jù)的時候就把數(shù)據(jù)處理后再賦值到list中去。
是裝完mysql就有這個嗎?
安裝方法推薦使用yum方式安裝.mysql穩(wěn)定性較好
肯定會報錯的啊,你json文件里面有多個對象,是無法解析的。要不你就自己把這些對象分開,然后再json.loads() 要不就存在不同的json文件里面
示例:
import json
d1 = {'1':2, '2':3, '3':4}
d2 = {'1':3, '2':4, '3':5}
with open('data.json', 'w') as f:
f.write(json.dumps(d1) + '\n' + json.dumps(d2)) # 用換行分開
# 讀取時自己分開
with open('data.json', 'r') as f:
print(json.loads(f.readline()))
print(json.loads(f.readline()))折騰python推薦用conda環(huán)境
1、可以從下圖中看到,如果是null的話,每一條記錄開始時都會在最前面有額外的字節(jié)標(biāo)識,如第12列是null,就需要用額外的兩字節(jié) 0800來標(biāo)識
2、同時如果索引中有null會導(dǎo)致索引不生效
3、做比較是 可能會出現(xiàn) null == 0的不正確結(jié)果
參照樓上的修改了一下,嘻嘻
var deep = 0;
function getMaxDepthByKey(str, data) {
for (var i = 0; i < data.length; ++i) {
if (str === data[i].key) {
deep = getDeep(data[i]);
break;
} else {
if (data[i].hasOwnProperty('children')) {
getMaxDepthByKey(str, data[i].children);
}
}
}
return deep;
}
var maxLen = [];
function getDeep(data) {
if (data.hasOwnProperty('children')) {
maxLen[data.key] = 0;
for (let item of data.children)
maxLen[data.key] = Math.max(maxLen[data.key], getDeep(item) + 1);
return maxLen[data.key];
} else {
return 0;
}
}
console.log(getMaxDepthByKey('tree1', treeData));//3
console.log(getMaxDepthByKey('tree2', treeData));//2
console.log(getMaxDepthByKey('tree3', treeData));//1
console.log(getMaxDepthByKey('tree4', treeData));//0
console.log(getMaxDepthByKey('tree5', treeData));//0
console.log(getMaxDepthByKey('tree6', treeData));//0
console.log(getMaxDepthByKey('tree7', treeData));//0<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="layui/css/modules/layer/default/layer.css"/>
<link rel="stylesheet" type="text/css" href="layui/css/layui.css"/>
<script src="https://cdn.bootcss.com/jquery/2.1.0/jquery.js"></script>
<script src="layui/lay/modules/layer.js">
</script>
</head>
<style type="text/css">
#our{
width: 200px;
height: 50px;
background: red;
}
#you{
width: 200px;
height: 50px;
background: blue;
}
</style>
<body>
<div id="our">
我們
</div>
<div id="you">
你們
</div>
</body>
</html>
<script type="text/javascript">
$("#our").on("click",function(){
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上邊框
area: ['1000px', '700px'], //寬高
title: '帖子詳情',
content: "加油"
});
})
$("#you").on("click",function(){
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上邊框
area: ['1000px', '700px'], //寬高
title: '帖子詳情',
content: "必勝"
});
})
</script>
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。