#本次主要以动力电池测试的充放电数据为例,在未和python相遇的时候还手动进行数据处理,有时候项目进度紧急需要找好几个同事帮忙处理,效率缓慢,而且容易出现错误;使用python:pandas、matplotlib之后实现了数据处理的自动化,大大提升了效率与准确度:

数据链接(数据是测试版数据):
测试数据

1.实例1:电池模组循环寿命数据处理:
a.处理目标:
①.需要从原始数据里面筛选出如下表数据,放入表格里面(充放电末端的信息),对于表格内没有的最高最低电压及最高最低温度进行计算后插入表格:

b.原始数据格式:
①.文件夹(命名有规律,有利于数据处理,只拿一部分数据用于测试):

②.文件夹内部数据(excle数据):

③.数据格式(根据列标签对应的值和sheet的名字进行数据筛选):

c.数据处理:
①.数据读取:

#coding = gb2312
'''
#Exxx   Module循环测试数据整理
'''
import pandas as pd
import os
import numpy as np#定义数据存储空间:
dfs = []   #存储读取到的数据(原始数据);
result_data = [] #存储数据处理后,得到得数据(结果数据);
dir = {}   #存储文件夹名字:因为os.listdir读取到的目录名字是没顺序的,所以分割后存入字典,可以有序的使用,形成新的路径;#打开文件and读取数据,处理数据,保存数据:
class data_processing:#初始化函数,里面可以定义一些属性(就是常说得变量)def __init__(self):self.path = "D:\\python\\data_processing\\python\\E442循环寿命数据\\"#1.读取path目录下面的文件夹个数:def data_read(self):#目录名称存入字典,为了构造读取数据路径(如果存储文件夹规范一点,可以直接sort排序解决,但是这个路径不可以,因此采用字典):#不知道结果的,可以打印一下瞅一瞅;for i in range(len(os.listdir(self.path))):a,b = os.listdir(self.path)[i].split(".")dir[a] = b# print(frame['4'])# print(len(frame))#读取文件夹里面的数据for i in range(1,len(dir)+1,1):self.path1 = self.path+str(i)+"."+dir[str(i)]  #构造的路径# print(path1)for frame in os.listdir(self.path1):# 因为里面还有.xlsx结尾但是我们不需要的数据,所以加了个startswith限制一下;if frame.endswith(".xlsx") and frame.startswith("ExportData"): self.path2 = self.path1+'\\'+frameprint(self.path2)#读取数据,并存入我们列表里面:self.df = pd.read_excel(self.path2,sheet_name="TestData")dfs.append(self.df)print(self.df)print("第"+str(i)+"个文件夹读取成功")print("数据读取完成")if __name__ == "__main__":#实例化我们的类:data = data_processing()#调用数据读取方法:data.data_read()

查看一下效果(数据很大读取较慢,我选取了其中两个数据):看到下面图片,读取数据成功,进行下一步,数据处理:


②.数据处理:就是使用各种方法实现我们的需求,代码我已经注释的很详细了,自己先看看,不懂的再沟通:

#coding = gb2312
'''
#Exxx   Module循环测试数据整理
'''
import pandas as pd
import os
import numpy as np#定义数据存储空间:
dfs = []   #存储读取到的数据(原始数据);
result_data = [] #存储数据处理后,得到得数据(结果数据);
dir = {}   #存储文件夹名字:因为os.listdir读取到的目录名字是没顺序的,所以分割后存入字典,可以有序的使用,形成新的路径;#打开文件and读取数据,处理数据,保存数据:
class data_processing:#初始化函数,里面可以定义一些属性(就是常说得变量)def __init__(self):self.path = "D:\\python\\data_processing\\python\\E442循环寿命数据\\"#1.读取path目录下面的文件夹个数:def data_read(self):#目录名称存入字典,为了构造读取数据路径(如果存储文件夹规范一点,可以直接sort排序解决,但是这个路径不可以,因此采用字典):#不知道结果的,可以打印一下瞅一瞅;for i in range(len(os.listdir(self.path))):a,b = os.listdir(self.path)[i].split(".")dir[a] = b# print(frame['4'])# print(len(frame))#读取文件夹里面的数据for i in range(1,len(dir)+1,1):self.path1 = self.path+str(i)+"."+dir[str(i)]  #构造的路径# print(path1)for frame in os.listdir(self.path1):# 因为里面还有.xlsx结尾但是我们不需要的数据,所以加了个startswith限制一下;if frame.endswith(".xlsx") and frame.startswith("ExportData"):self.path2 = self.path1+'\\'+frameprint(self.path2)#读取数据,并存入我们列表里面:self.df = pd.read_excel(self.path2,sheet_name="TestData")dfs.append(self.df)print(self.df)print("第"+str(i)+"个文件夹读取成功")print("数据读取完成")#2.处理数据:def data_process(self):#计算处表格中最高最低电压及温度信息:for self.df in dfs:self.df.loc[:, "Tmax"] = self.df.loc[:, "Channel1_T01":"Channel1_T15"].max(axis=1)self.df.loc[:, "Tmin"] = self.df.loc[:, "Channel1_T01":"Channel1_T15"].min(axis=1)self.df.loc[:, "Vmax"] = self.df.loc[:, "Channel1_V01":"Channel1_V15"].max(axis=1)self.df.loc[:, "Vmin"] = self.df.loc[:, "Channel1_V01":"Channel1_V15"].min(axis=1)#将我们需要的信息过滤出来:按列名选取;self.df = self.df[["循环号", "工步名称", "功率(kW)", "工步充电容量(Ah)", "工步充电能量(kWh)", "工步放电容量(Ah)", "工步放电能量(kWh)", "Tmax", "Tmin", "Vmax", "Vmin"]]# df.set_index("循环号",inplace=True,drop=False) #inplace = True:不创建新的对象,直接对原始对象进行修改;inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果#充电数据选取:#这里就是筛选出我们的数据,按照电压进行排序,因为充放电的电压末端都是数据里面的极大和极小,利用这个可以很方便的选取出数据;#这步骤往往是最难的,需要我们根据数据的特点进行数据选取;每个文件20圈,所以取前20行的数据;self.cc_data = self.df.sort_values(by=["Vmax"], ascending=False, axis=0)  # ascending=True升序,axis=0纵向排列;注意self.cc_data = self.cc_data.iloc[0:20, :]#根据循环号把数据顺序按升序排列:self.cc_data = self.cc_data.sort_values(by=["循环号"], ascending=True)self.cc_data = self.cc_data[["循环号", "工步名称", "工步充电容量(Ah)", "工步充电能量(kWh)", "Tmax", "Tmin", "Vmax", "Vmin"]]#放电数据选取:和充电思路一致:我们要去数据中验证我们的想法,不能自己想啥就是啥:self.dc_data = self.df.sort_values(by=["Vmin"], ascending=True, axis=0)self.dc_data = self.dc_data.iloc[0:20, :]self.dc_data = self.dc_data.sort_values(by=["循环号"], ascending=True)self.dc_data = self.dc_data[["循环号", "工步名称", "工步放电容量(Ah)", "工步放电能量(kWh)", "Tmax", "Tmin", "Vmax", "Vmin"]]#数据处理完毕后,我们对充放电数据进行合并:self.result = pd.merge(left=self.cc_data, right=self.dc_data, left_on="循环号", right_on="循环号")#数据加入新的列表:便于保存数据:result_data.append(self.result)print(self.result)print("数据处理完成")if __name__ == "__main__":data = data_processing()data.data_read()data.data_process()

查看一下效果,数据处理比数据读取还是要快的,读取到的数据已经基本很规整了,接下来就要储存数据了:

③.保存数据(完整代码):
保存数据有两种,一种是所有数据合并保存到一个sheet里面,一种是保存到多个sheet里面,看需求,我们这次采用的是第一种:

#coding = gb2312
'''
#Exxx   Module循环测试数据整理
'''
import pandas as pd
import os
import numpy as np
from pandas.core.frame import DataFrame
from openpyxl import load_workbook#定义数据存储空间:
dfs = []   #存储读取到的数据(原始数据);
result_data = [] #存储数据处理后,得到得数据(结果数据);
dir = {}   #存储文件夹名字:因为os.listdir读取到的目录名字是没顺序的,所以分割后存入字典,可以有序的使用,形成新的路径;#打开文件and读取数据,处理数据,保存数据:
class data_processing:#初始化函数,里面可以定义一些属性(就是常说得变量)def __init__(self):self.path = "D:\\python\\data_processing\\python\\E442循环寿命数据\\"#1.读取path目录下面的文件夹个数:def data_read(self):#目录名称存入字典,为了构造读取数据路径(如果存储文件夹规范一点,可以直接sort排序解决,但是这个路径不可以,因此采用字典):#不知道结果的,可以打印一下瞅一瞅;for i in range(len(os.listdir(self.path))):a,b = os.listdir(self.path)[i].split(".")dir[a] = b# print(frame['4'])# print(len(frame))#读取文件夹里面的数据for i in range(1,len(dir)+1,1):self.path1 = self.path+str(i)+"."+dir[str(i)]  #构造的路径# print(path1)for frame in os.listdir(self.path1):# 因为里面还有.xlsx结尾但是我们不需要的数据,所以加了个startswith限制一下;if frame.endswith(".xlsx") and frame.startswith("ExportData"):self.path2 = self.path1+'\\'+frameprint(self.path2)#读取数据,并存入我们列表里面:self.df = pd.read_excel(self.path2,sheet_name="TestData")dfs.append(self.df)print(self.df)print("第"+str(i)+"个文件夹读取成功")print("数据读取完成")#2.处理数据:def data_process(self):#计算处表格中最高最低电压及温度信息:for self.df in dfs:self.df.loc[:, "Tmax"] = self.df.loc[:, "Channel1_T01":"Channel1_T15"].max(axis=1)self.df.loc[:, "Tmin"] = self.df.loc[:, "Channel1_T01":"Channel1_T15"].min(axis=1)self.df.loc[:, "Vmax"] = self.df.loc[:, "Channel1_V01":"Channel1_V15"].max(axis=1)self.df.loc[:, "Vmin"] = self.df.loc[:, "Channel1_V01":"Channel1_V15"].min(axis=1)#将我们需要的信息过滤出来:按列名选取;self.df = self.df[["循环号", "工步名称", "功率(kW)", "工步充电容量(Ah)", "工步充电能量(kWh)", "工步放电容量(Ah)", "工步放电能量(kWh)", "Tmax", "Tmin", "Vmax", "Vmin"]]# df.set_index("循环号",inplace=True,drop=False) #inplace = True:不创建新的对象,直接对原始对象进行修改;inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果#充电数据选取:#这里就是筛选出我们的数据,按照电压进行排序,因为充放电的电压末端都是数据里面的极大和极小,利用这个可以很方便的选取出数据;#这步骤往往是最难的,需要我们根据数据的特点进行数据选取;每个文件20圈,所以取前20行的数据;self.cc_data = self.df.sort_values(by=["Vmax"], ascending=False, axis=0)  # ascending=True升序,axis=0纵向排列;注意self.cc_data = self.cc_data.iloc[0:20, :]#根据循环号把数据顺序按升序排列:self.cc_data = self.cc_data.sort_values(by=["循环号"], ascending=True)self.cc_data = self.cc_data[["循环号", "工步名称", "工步充电容量(Ah)", "工步充电能量(kWh)", "Tmax", "Tmin", "Vmax", "Vmin"]]#放电数据选取:和充电思路一致:我们要去数据中验证我们的想法,不能自己想啥就是啥:self.dc_data = self.df.sort_values(by=["Vmin"], ascending=True, axis=0)self.dc_data = self.dc_data.iloc[0:20, :]self.dc_data = self.dc_data.sort_values(by=["循环号"], ascending=True)self.dc_data = self.dc_data[["循环号", "工步名称", "工步放电容量(Ah)", "工步放电能量(kWh)", "Tmax", "Tmin", "Vmax", "Vmin"]]#数据处理完毕后,我们对充放电数据进行合并:self.result = pd.merge(left=self.cc_data, right=self.dc_data, left_on="循环号", right_on="循环号")#数据加入新的列表:便于保存数据:result_data.append(self.result)print(result_data[0],result_data[0].shape,type(result_data[0]))print("数据处理完成")# 3.保存数据;def data_save1(self):with pd.ExcelWriter("./ff.xlsx") as writer:# self.a = pd.concat([result_data[0],result_data[1]],ignore_index=True)self.a = pd.concat(result_data,ignore_index=True)self.a.loc[:,"循环号"] = self.a.index+1self.a.to_excel(writer, index=False)writer.save()print("存储完成")writer.close()# def data_save(self):#     self.c = 1#     with pd.ExcelWriter("./ff.xlsx") as writer:#         self.a = 1#         for self.df in self.result:#             self.name = str(self.a) + "圈"#             self.df.to_excel(writer, index=False, sheet_name=self.name)#             self.a = self.a + 1#             print("保存第", self.c, "圈")#             self.c = self.c + 1##     writer.save()#     print("存储完成")#     writer.close()if __name__ == "__main__":data = data_processing()data.data_read()data.data_process()data.data_save1()

查看保存的数据:

④.数据可视化(查看充放电容量随时间的变化):

from matplotlib import pyplot as plt
import matplotlib#1.读取数据:
data = pd.read_excel("./ff.xlsx")#汉字显示:
font = {"family":"MicroSoft YaHei","weight":"bold","size":8}
matplotlib.rc("font",**font)#创建一个画布,画布上面有一行两列:
fig,(ax1,ax2) = plt.subplots(1,2)
#画布尺寸:
fig.set_size_inches(18,7)#绘制充电曲线:##############################################图1
ax1.plot(range(1,len(data["工步充电容量(Ah)"])+1,1),data["工步充电容量(Ah)"],color="#F08080",label="充电容量")
#为图1设置标题,横坐标,纵坐标标题:
a = list(data["循环号"])[-1]
ax1.set_xticks(range(10,a+10,10))xtick_lables = ["{}圈".format(i) for i in range(10,a+10,10)]
ax1.set_xticklabels(xtick_lables,rotation=45)ax1.set_ylim([225,231])
ax1.set_yticks(range(225,231,1))ax1.set_title("充电容量变化曲线")
ax1.set_xlabel("圈数")
ax1.set_ylabel("充电容量")
#添加图例:
ax1.legend(loc = "upper left")#绘制网格:
ax1.grid(alpha=0.4)
##################################################################图2
#绘制放电曲线:
ax2.plot(range(1,len(data["工步放电容量(Ah)"])+1,1),data["工步放电容量(Ah)"],color="#F08080",label="放电容量")
#为图2设置标题,横坐标,纵坐标标题:
b = list(data["循环号"])[-1]
ax2.set_xticks(range(10,b+10,10))xtick_lables = ["{}圈".format(i) for i in range(10,b+10,10)]
ax2.set_xticklabels(xtick_lables,rotation=45)ax2.set_ylim([225,231])
ax2.set_yticks(range(225,231,1))ax2.set_title("放电容量变化曲线")
ax2.set_xlabel("圈数")
ax2.set_ylabel("放电容量")
#添加图例:
ax2.legend(loc = "upper left")#绘制网格:
ax2.grid(alpha=0.4)
#为整个图设置标题:
plt.suptitle("充放电容量随圈循环数变化曲线",fontsize=14,fontweight="bold")# 1.保存图形:
plt.savefig("foo.png")
#2.保存为透明图像
plt.savefig("foo1.png", transparent=True)plt.show()

2.实例2:电池系统循环寿命数据整理:
a.处理目标:
数据处理:需要将每一圈的充放电数据筛选出来, 并计算出每秒中充放电的容量 “累计AH”:数据包含:[“记录时间”, “Current”, “Tmax(℃)”, “Tmin(℃)”, “累计AH”, “温度”];使用公式计算出每个温度点充放电的总容量:数据包含:[“充电累计容量Tmax计算”, “充电累计容量Tmin计算”, “放电累计容量Tmax计算”,“放电累计容量Tmin计算”] 这样做的好处就是可以看出实际工作过程,每个温度点容量能量的消耗,对电池的实际使用有很大的指导意义:

b.原始数据格式:
①.文件夹格式:

②.文件夹内部数据:

③.文件内部数据格式:

c.数据处理:以下程序没有用类的方式进行书写,因为代码也不是很长;看到这觉得代码不够美观,可以使用函数或者类重新写一下,留作提升的部分吧;这个程序相对于第一个代码多了个分组聚合而已,不懂可以把函数复制到百度中,有很详细的讲解:

#coding = gb2312
import pandas as pd
import os
import numpy as np
'''
标准箱循环数据处理;
挑选出:记录时间,Current,Tmax(℃),Tmin(℃)
计算出每个温度下的充放电容量,然后根据Tmax(℃),Tmin(℃)分组,进行总容量的计算;'''#1.设置数据在底部窗口全部显示,便于观察:
pd.set_option("display.max_rows",500)
pd.set_option("display.max_columns",100)
pd.set_option("display.width",1000)dfs = []
dfs1 = [] #存储最终数据#2.打开文件:
for i in range(1,22,1):   #os.listdir()path = "D:\\python\data_processing\\python\\标准箱数据处理\\11.低温工况循环\\第"+str(i)+"圈\\"for frame in os.listdir(path):if frame.endswith(".xlsx"):df = pd.read_excel(path + frame, sheet_name="TestData")# print(path + frame)df = df[["记录时间", "电流(A)", "CAN_2\DBC\BMS_message_3_battery_high_temperature","CAN_2\DBC\BMS_message_3_battery_low_temperature"]]dfs.append(df)print("读取第",i,"圈")
print("读取完成")#3.数据处理:
#a.更新数据的列名:
b = 1
for df in dfs:df.columns=["记录时间","Current","Tmax(℃)","Tmin(℃)"]#b.添加"累计AH":for i in range(len(df["Current"])-1):df.loc[i, "累计AH"] = 1/ 3600 * df.loc[i, "Current"]#c.根据Tmax(℃),Tmin(℃)分组,然后对"累计AH"求和:# 创建温度列:T = pd.DataFrame({"温度": range(-20, 56, 1)})#计算容量的总和:CC_Tmax = df.loc[df["累计AH"] >= 0].groupby("Tmax(℃)")["累计AH"].sum().to_frame().reset_index()CC_Tmin = df.loc[df["累计AH"] >= 0].groupby("Tmin(℃)")["累计AH"].sum().to_frame().reset_index()DC_Tmax = df.loc[df["累计AH"] < 0].groupby("Tmax(℃)")["累计AH"].sum().to_frame().reset_index()DC_Tmin = df.loc[df["累计AH"] < 0].groupby("Tmin(℃)")["累计AH"].sum().to_frame().reset_index()#对温度及容量总和合并,并与温度点对应:# print(CC_Tmax,CC_Tmin,DC_Tmax,DC_Tmin)t1 = pd.merge(T, CC_Tmax, left_on="温度", right_on="Tmax(℃)", how="left")t2 = pd.merge(t1, CC_Tmin, left_on="温度", right_on="Tmin(℃)", how="left")t3 = pd.merge(t2, DC_Tmax, left_on="温度", right_on="Tmax(℃)", how="left")t4 = pd.merge(t3, DC_Tmin, left_on="温度", right_on="Tmin(℃)", how="left")df = pd.concat([df, t4], axis=1)# df = df.drop("Tmax(℃)_x",axis=1, inplace=True)#不要这样写,报错了#删除不需要的列:df.drop(['Tmax(℃)_x','Tmin(℃)_x','Tmax(℃)_y','Tmin(℃)_y'], axis=1, inplace=True)#更新列名:df.columns = ["记录时间", "Current", "Tmax(℃)", "Tmin(℃)", "累计AH", "温度", "充电累计容量Tmax计算", "充电累计容量Tmin计算", "放电累计容量Tmax计算","放电累计容量Tmin计算"]# df.fillna(0, inplace=True) #以下两个命令都是把nan替换为0,看着美观一点,合理一点:df = df.replace(np.nan, 0)
#d.数据存储进列表:dfs1.append(df)print("处理第", b, "圈")b = b+1
print("处理完成")# 3.保存数据;
c = 1
with pd.ExcelWriter("./xunhuan.xlsx") as writer:a = 1for df in dfs1:name = str(a) + "圈"df.to_excel(writer, index=False, sheet_name=name)a = a + 1print("保存第", c, "圈")c = c + 1writer.save()
print("存储完成")
writer.close()

运行过程及结果:
读取:

处理:

保存:

结果展示:

以上就是两个实际的数据处理的实例,我们学习应该是学一个方法的,有些函数我们现在不会用没关系,因为编程需要接触的函数真的是多的记不住的,大部分函数我们需要了解他们的功能,等我们有问题的时候再去详细的了解一下是否可以解决;代码这个东西没有捷径,就是不断的使用,有想法的敲很多遍自然就会记得了;当然人的记忆也是有时限的,不要太相信自己的记忆,把学会的东西记录下来,作为自己的宝藏,后续用也会方便很多。

今天看到个动漫比较有意思记录一下,说的是一个修仙的故事,一群人来到一个远古大仙开辟的修炼场所,每个人都在吸收其中的灵气,但是有个天才少年也就是男主,资质简直了,灵气大部分被他给吸走了,于是其他人都要来灭杀他,他的同门为了救他基本牺牲殆尽,他修炼完成大杀四方,人们都说他被灵气摧毁了神智,但哪有人知道,他清醒的很,他只是在为同门报仇,故事到这里也就结束了;但是人们却又说了一句,他简直和800年前的逍遥子一模一样,一样失了神智,我们都明白了,从未有人在修炼之中失了神智,如果你失败了,你的模样还是你真实的模样吗?谁又会在乎真相呢。他们是天才,但有些事却也没得选;如果你还有的选,那你就是比大多数人幸福的。
持续更新,,,

#7.生活小妙招-工业标准化数据简单处理(python数据处理)相关推荐

  1. 抖音生活小妙招类短视频创作技巧分享,几个方面带你了解整个流程

    想做抖音,又不想真人出镜,该选择什么项目做呢? (更多精彩干货请关注共众号:萤火宠,免费领取108个抖音小项目) 我们的学员中有宝妈.有大学生,也有不少职场人员,他们大多数都非常普通,没有什么很强的职 ...

  2. (生活小妙招系列二之:高血压篇)现在才明白,高血压的罪魁祸首不是盐,而是它!

    (生活小妙招系列二之:高血压篇)现在才明白,高血压的罪魁祸首不是盐,而是它! 参考链接:https://www.sohu.com/a/224760633_172726 你知道吗?诱发高血压的真正凶手不 ...

  3. (生活小妙招系列四之:便秘篇) 栀子茶的四大保健功效作用

    (生活小妙招系列四之:便秘篇) 栀子茶的四大保健功效作用 参考链接:http://www.haoshanpu.com/news/8933 栀子是一种常见的中药材,其不仅药用价值高,而且用于泡茶喝也具有 ...

  4. (生活小妙招系列一#口腔溃疡-手脚冰凉-过敏性鼻炎-手足皲裂)手脚冰凉,这招一用一个准,暖和一整冬

    (生活小妙招系列一#口腔溃疡-手脚冰凉-过敏性鼻炎-手足皲裂)手脚冰凉,这招一用一个准,暖和一整冬 参考链接: 1.https://www.sohu.com/a/427570684_679104 2. ...

  5. 充满创意的生活小妙招 --爱生活爱创意!

    2个长尾夹做的手机架子 易拉罐的拉环可以帮你多挂一个衣架 简易蓬头 龙头太低可以这样接水 便利贴可以清理键盘缝隙中的头发和灰尘 卷纸芯做成的小盆栽 废旧网球切个口子可以夹住很多东西 卷纸芯是收纳数据线 ...

  6. 如何恢复文件?看看我的生活小妙招

    在使用电脑过程中,我们会不断地对硬盘进行读写和删除操作.以完成我们各项工作任务.随着时间的积累,就会有大量的文档需要处理.删除文件是我们必不可少的操作,但在处理这些文档时,难免会遇到各种误删文档的情况 ...

  7. 生活小妙招-通马桶(这是一篇有味道的博客~)

    文章目录 马桶原理 一.详解 堵在哪里? 如何处理 气压阀 衣撑? 总结 马桶原理 马桶工作原理及内部构造,你了解多少?这是个有味道的科普视频 一.详解 堵在哪里? 一般会堵在U型管道的位置. 如何处 ...

  8. 生活小妙招---wifi遥控点火器

    马上就要过年了,回忆起以前还没有禁烟花的时候,每到过年,总会出现有人因为燃放烟花爆竹而受伤,炸伤手指或者眼睛,这种伤害对于大人来说都难以接受,更何况还有很多小孩子因此落下终身残疾. 于是就想到了做一个 ...

  9. 解决网页无法复制粘贴(生活小妙招)

    事情缘由 今天在写学习通的作业的时候,发现答案不能复制粘贴,这种有答案,而无法复制粘贴的痛,谁又能懂呢? 每当我们复制题目和粘贴答案的时候,就会跳出一个窗口 但是这种问题是难不倒一个学计算机的学生的. ...

最新文章

  1. 第一个MapReduce程序
  2. 在Ubuntu 14.04 64bit上安装python mongoDB模块
  3. 【Qt】Linux上设置自启动后qApp->applicationDirPath()的返回值问题
  4. 7个杀手级的开源监测工具
  5. 视窗宽高offset、client、scroll
  6. influxdb tsm文件_Influxdb中的Compaction操作
  7. 智能小车37:异常在ARM、JAVA、硬件里的实现
  8. Vue 项目调试总结
  9. 计算机应用与维修专业主修,计算机应用与维修专业个人简历制作
  10. php判断学生姓名,PHP基础案例三:判断学生星座
  11. ISP模块之RAW DATA去噪(一)
  12. 根据三个点的坐标计算三角形面积
  13. 仰望流年纯白世界那抹城光(二)
  14. 本人新书上市 《分布式系统与一致性》
  15. 计算机这一门在高考里占分吗,2018高考各科答题要点 从答题规范上“要分”
  16. 妈蛋,终于在TQ2440上点亮一个led了。。。
  17. 瑞幸咖啡的最终目标并不是做国内市场大哥
  18. easymock 图片_如何使用EasyMock?
  19. Leetcode3:最长不重复子串
  20. Linux Kernel运行时安全检测之LKRG-原理篇

热门文章

  1. c++11 总结-2
  2. 跳跳鱼视频处理大师Mac版,使用方法介绍
  3. linux的filesystem
  4. 【Java新人学习指南】Java基础知识点大梳理
  5. 自定义ViewPager实现轮播效果
  6. mysql 日期格式化 yyyymmdd_mysql中时间日期格式化
  7. ARM仿真器J-Link灯不亮的解决办法
  8. 保底利率和保证利率是什么意思呢?有什么区别呀?
  9. C++ typedef 以及 typedef struct 用法
  10. ArcGIS中利用模型构建器批量实现土地利用数据投影