创新实训6.20
python调用再处理
今天上午我主要测试了Java调用python并传参,其中有一个很大的bug困惑了我半天,一直没解决。直到最后我才发现我哪里做错了。
// String[]args1=new String[]{“python”,“C:\Users\一口纯甄\Desktop\python_pycharm\firstpython.py”,stocknor,datesy,dates,jiange};
这就是Java调用python的方法,我在后面传入了几个参数。
stock=sys.argv[1]
start=sys.argv[2]
end=sys.argv[3]
time=sys.argv[4]
这个就是在python中接收参数的方法,但是我一开始写的是从argv[0]开始的,这就出现bug了,一直报错说不对,后来测试了很久才发现应该是从1开始计数的,要不然会有bug。然后这样就解决了分时图数据的问题,还有一个k线图和前一天的收盘价就可以了,明天打算把这个完成之后基本就做完搜索功能了。
关于csv文件
我的python将数据存储到csv文件中了,但是要用Java再从csv文件拿的话其实还是要做很多工作的,我在做的时候下载了javacsv专门处理csv文件的读取,然后在我测试的时候又出问题了,主要问题就是我的python写入csv文件的时候不能覆盖原有的csv文件,然后我做了很长时间的测试,发现确实是不行,然后我只能在发送完数据之后把csv文件直接删除了。然后这个问题我就这么处理了。
前后端接口问题
这个逻辑比较麻烦的,我只能花费一下午的时间处理这个问题了,其实主要还是我们这个搜索功能还连着一些其他的功能,所以这个功能是关键,我们需要凭借用户的搜索进行一些分析和推荐。所以这个接口问题我处理了很久。
一个很大的BUG
我在做完这些基础之后就开始进行测试了,但是却发现了一个很大的BUG,这是vuex存在的问题,vuex里面存储的相当于全局变量,在vue的所有组件都可以使用他,但是如果在vuex的数据改变的话,别的组件中如果有这个变量的话这个组件中的值并不改变,这就很难受了,我就没见过有人这么做框架的,简直是神人。因为我用axios进行异步请求,因此他总会先把组件渲染好然后再请求数据,这样的话就没办法把数据传给我的图表组件了,然后我想了好久,终于想到了,既然axios是异步操作我在axios请求中进行操作就行了,这样就可以了,然后我做了一个一个测试之后确实是可以的。
axios({
url: ‘/api/TimeData’,
params: {
//用登录状态,id,stock传参
islog:islog,
id: id,
stock:stock
}
}).then(res => {
if (res.data[0] == true) {
store.commit(“stock_code”,stock)//暂存股票用户当前搜索的股票代码
store.commit(“shifendata”,res.data[1])
//alert(boo)
//alert(res.data[1])
router.push('shifentu')
这样其实就可以了,但是其实还是不太妥的,只不过我没办法,找不到其他的办法,只能暂时这样了。
然后我又出了一个bug,主要原因是我当重新搜索一个股票代码的时候虽然vuex中
的数据改变了,但是其实在组件中的数据是没有改变的,我于是找这个bug找了一
晚上,最后我找到了一个很有效的方法,那就是使用watch方法,这样我测试了就
可以了。
computed:{
getdata(){
return this.$store.state.shifendata
}
},
首先需要在computed里面绑定这个数据,要不然还是没用的。
watch:{
getdata(oldgetdata,newgetdata){
然后这样监督就可以了,我测试了一下发现确实可以呀,所以我就用了一晚上的时间终于找到这样一个解决方案了 ,真的特别有用。