作业要求:

目的:学习用地面站点实测降雨数据校正卫星遥感降雨数据。
原始数据:
2007-2013年的TRMM卫星3B43产品(2013年12个月的月降雨数据,覆盖范围精度-180180、纬度-5050,0.25x0.25度分辨率,像素值单位:mm/hour);
华北8个省市的气象站2007-2013年的年降雨量文件,以及气象站的SHAPE文件;
数据处理要求:
(1)实验区1(华北8个省市)
对覆盖范围(经度:111.25-121.25,纬度:36-43)内的卫星年降雨数据,用地面数据进行校正,并存为TIF文件。
校正的卫星年降雨数据可以是一年的,如:2010年或2013年,也可以是2007-2013年时间序列数据。

详细过程

1、总体思路

选取2009-2013年的年降水数据,对京津冀及周边地区的大概范围(经度:111.25-121.25,纬度:36-43)进行影像降水数据的校正。前提假设站点获得的降水数据为真值。另外,增加了全国dem数据,提高校正精度。总体思路如下:
(1) 读取2009-2013年,研究区内各站点的年降水量、经度、纬度、DEM、站点所处位置对应的遥感数据TRMM3B43观测得到的降水量。
(2) 利用2009-2012年的数据,分析站点的年降水量和经度、纬度、DEM、遥感数据TRMM3B43观测得到的降水量之间的相关性,同时,建立多元回归函数。
(3) 利用2013年的遥感数据TRMM3B43观测得到的降水量,经度、纬度、DEM计算校正后的降水量,该降水量与2013年站点降水数据比较,进行误差分析,评估校正效果。
图1 总体技术路线
图1 总体技术路线

2、代码详解


主函数,将整个过程分为5步完成,包含五个函数来实现。

import os
from osgeo import gdal
import numpy as np
import sympy as sp
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegressionif __name__ == '__main__':# 第一步:prec_p = r"D:\prec_corr_2021\input\prec"surf_p = r"D:\prec_corr_2021\input\SURF_CLI_CHN_MUL_YER_STATION.xls"S_prec200912_ch, S_prec2013_ch,S_cor = sta_pre(prec_p, surf_p)#第二步:TRMM_p = "D:\\prec_corr_2021\\input\\RS\\"T_prec200912_ch, T_prec2013_ch= TRMM_pre(TRMM_p,S_cor)#需要遥感提取数据和站点一一对应ST_prec200912,ST_prec2013=[],[]for T_name, T_time, T_prec in T_prec200912_ch:for s_time, s_name, s_prec, s_x, s_y, s_z in S_prec200912_ch:if T_name == s_name and T_time==s_time:ST_prec200912.append((s_time, s_name, s_prec, T_prec,s_x, s_y, s_z))for s_time, s_name, s_prec, s_x, s_y, s_z in S_prec2013_ch:for T_name, T_time, T_prec in T_prec2013_ch:if T_name == s_name and T_time == s_time:ST_prec2013.append((s_time, s_name, s_prec, T_prec, s_x, s_y, s_z))#第三步:a,b = f_cor(ST_prec200912)print('多元回归函数为:')print('y=',a,'+',b[0],'*','T_prec','+',b[1],'*','lon',b[2],'*','lat','+',b[3],'*','dem')#第四步:MAE1, R1,RMSE1,MAE2, R2,RMSE2 = S_val(ST_prec2013,a,b)print('2013年站点数据与校正后遥感数据的误差分析:')print('校正前:平均绝对误差',MAE1,'均方根误差',RMSE1,'相关系数',R1)print('校正后:平均绝对误差',MAE2,'均方根误差',RMSE2,'相关系数',R2)#第五步:TRMM_p = "D:\\prec_corr_2021\\input\\RS\\"DEM_p = "D:\\prec_corr_2021\\input"T_val(DEM_p, TRMM_p,a,b)print("最终结果查看:D:\prec_corr_2021\code")print('-----Complete!-----')

第一个函数主要来实现TXT数据的批量读取以及excel数据的读取,可以有更简单的读取方式,可以自己改进。

#------------------1、read the station data by --------------------
'''
说明:读取气象站降水数据及预处理
输入:降雨数据所在地址(D:\prec_corr_2021\input\prec),气象站综合信息表(SURF_CLI_CHN_MUL_YER_STATION)
输出:站点数组(站点S_name,经度S_x,纬度S_y,海拔S_z);2009-2012站点降水数据(时间S_time,站点S_name,降水S_prec);2013站点降水(同上)
'''
def sta_pre(prec_path, surf_path):S_cor, S_prec200912, S_prec2013 = [], [], []if not os.path.exists(prec_path) or not os.path.exists(prec_path):print("prec_path or surf_path is not exist.")return [], [], []if not os.path.isdir(prec_path):print("prec_path is not folder.")return [], [], []# 读取全部的站点数据try:df = pd.read_excel(surf_path,sheet_name="Sheet1",usecols=[0, 11, 12, 13])  # 指定读取第1/12/13/14列except Exception:print("read excel failed")return [], [], []# print(df)# 获取{站点S_name:(站点S_name,经度S_x,纬度S_y,海拔S_z)}df = np.array(df)dic_df = {}for item in df:s_name_ex, s_x, s_y, s_z = item.tolist()# 只有站点名称是浮点数字才认为是正确的if isinstance(s_name_ex, float):s_name_ex = str(int(s_name_ex))dic_df[s_name_ex] = (s_name_ex, s_x, s_y, s_z)# print(len(dic_df))# 读取站点降水数据file_names = os.listdir(prec_path)file_content = []for filename in file_names:file_path = os.path.join(prec_path, filename)with open(file_path, "r") as f:file_content = file_content + f.readlines()def get_info(l_line, years):stime, sname, sprec = l_linestime = stime.strip()if stime in years:try:# 做一个判断,剔除降水值为负的值i_prec = int(sprec.strip())if i_prec > 0:return stime.strip(), sname.strip(), i_precexcept Exception:return "", "", 0return "", "", 0# print(file_content)for line in file_content:list_line = line.strip().split(" ")if len(list_line) == 3:s_time, s_name, i_prec = get_info(list_line, ["2009", "2010", "2011", "2012"])if s_time != "" or s_name != "":S_prec200912.append((s_time, s_name, i_prec))s_time, s_name, i_prec = get_info(list_line, ["2013"])if s_time != "" or s_name != "":S_prec2013.append((s_time, s_name, i_prec))# 剔除站点数据中,不在S_prec200912 和 S_prec2013中的数据for s_time, s_name, s_prec in S_prec200912:if s_name in dic_df:S_cor.append(dic_df.get(s_name))for s_time, s_name, s_prec in S_prec2013:if s_name in dic_df:S_cor.append(dic_df.get(s_name))# 去重S_cor = list(set(S_cor))#将经纬度坐标的赋值给站点数据S_prec200912_ch, S_prec2013_ch = [], []for s_name_ex, s_x, s_y, s_z in S_cor:for s_time_1, s_name_1, s_prec_1 in S_prec200912:if s_name_1 == s_name_ex:s_prec_1=s_prec_1*0.1s_prec_1=round(s_prec_1, 2)s_z=round(s_z, 2)s_y=round(s_y, 2)s_z=round(s_z, 2)S_prec200912_ch.append((s_time_1,s_name_1,s_prec_1,s_x, s_y, s_z))for s_time_2, s_name_2, s_prec_2 in S_prec2013:if s_name_2 == s_name_ex:s_prec_2 = s_prec_2 * 0.1s_prec_2=round(s_prec_2, 2)s_z=round(s_z, 2)s_y=round(s_y, 2)s_z=round(s_z, 2)S_prec2013_ch.append((s_time_2, s_name_2, s_prec_2, s_x, s_y, s_z))return S_prec200912_ch, S_prec2013_ch,S_cor

第二个函数主要用来读取遥感数据以及提取站点所在地遥感数据对应的降水量,需要具有一定的GIS基础。但缺少批量读取遥感数据的步骤,可以参考函数1进行改进。

#------------------2、read the TRMM 3B43 data by--------------------
'''
说明:读取遥感卫星降水数据及预处理,获得站点所在遥感数据的值;同时读取对应DEM数据
输入:数据所在地址(D:\prec_corr_2021\input\RS),站点降水数据(时间S_time,站点S_name,降水S_prec)
输出:2009-2012遥感降水数据(T_prec,需和S_prec200912数组一一对应);2013遥感降水数据(T_prec2013)
'''
def TRMM_pre(TRMM_path,S_cor):if not os.path.exists(TRMM_path) or not os.path.exists(TRMM_path):print("TRMM_path or surf_path is not exist.")return [], [], []if not os.path.isdir(TRMM_path):print("TRMM_path is not folder.")return [], [], []#----------------------①读取TRMM卫星影像数据及DEM数据 - ---------dataset1 = gdal.Open(TRMM_path + '3B43_2009.TIF')dataset2 = gdal.Open(TRMM_path + '3B43_2010.TIF')dataset3 = gdal.Open(TRMM_path + '3B43_2011.TIF')dataset4 = gdal.Open(TRMM_path + '3B43_2012.TIF')dataset5 = gdal.Open(TRMM_path + '3B43_2013.TIF')samples = dataset1.RasterXSizelines = dataset1.RasterYSize# bands = dataset1.RasterCountimg_geotrans = dataset1.GetGeoTransform()# img_proj = dataset1.GetProjection()im_data1 = dataset1.ReadAsArray(0, 0, samples, lines)im_data2 = dataset2.ReadAsArray(0, 0, samples, lines)im_data3 = dataset3.ReadAsArray(0, 0, samples, lines)im_data4 = dataset4.ReadAsArray(0, 0, samples, lines)im_data5 = dataset5.ReadAsArray(0, 0, samples, lines)del dataset1del dataset2del dataset3del dataset4del dataset5# -----------------------②转换站点经纬度坐标到对应TRMM遥感图像上的行列号----------im_loc = [[], []]lon = [i[1] for i in S_cor]lat=[i[2] for i in S_cor]pnt_coordinates = [lon]+[lat]# 第一个列表放行号,存纬度换出来的值,后者为列号,存经度换出来的值for i in range(len(pnt_coordinates[0])):sample = sp.Symbol('sample')line = sp.Symbol('line')a = -pnt_coordinates[0][i] + img_geotrans[0] + sample*img_geotrans[1] + line*img_geotrans[2]b = -pnt_coordinates[1][i] + img_geotrans[3] + sample*img_geotrans[4] + line*img_geotrans[5]answer = sp.solve([a,b],[sample,line])#解二元一次方程组line = int(np.floor(answer[line]))sample = int(np.floor(answer[sample]))im_loc[0] += [line]im_loc[1] += [sample]#----------------------③读取2009_2013年站点对应的TRMM卫星影像数据-------------------------data_TRMM_stationpnt = [[],[],[],[],[]]for i in range(len(im_loc[0])):data_TRMM_stationpnt[0] += [im_data1[im_loc[0][i], im_loc[1][i]]]data_TRMM_stationpnt[1] += [im_data2[im_loc[0][i], im_loc[1][i]]]data_TRMM_stationpnt[2] += [im_data3[im_loc[0][i], im_loc[1][i]]]data_TRMM_stationpnt[3] += [im_data4[im_loc[0][i], im_loc[1][i]]]data_TRMM_stationpnt[4] += [im_data5[im_loc[0][i], im_loc[1][i]]]T_prec200912 = data_TRMM_stationpnt[0:4]T_prec2013 = data_TRMM_stationpnt[4]T_prec200912_ch,T_prec2013_ch=[], []time_y=['2009','2010','2011','2012','2013']for i,(s_name, s_x, s_y, s_z) in enumerate(S_cor):for j,t in enumerate (time_y):if t=='2013':T_prec2013_ch.append((s_name, t, T_prec2013[i]))else:T_prec200912_ch.append((s_name, t, T_prec200912[j][i]))return T_prec200912_ch, T_prec2013_ch

第三个函数主要构建校正函数,这里选择的多元一次函数,可以换成其他方法,如随机森林等。

#------------------3、built model between TRMM and station --------------------
'''
说明:建立2009-2012年,站点数据和TRMM数据T_prec,站点所在经度、纬度、高程的回归关系
输入:2009-2012年站点及遥感降水数据
输出:多元一次回归函数截距及回归系数
'''
def f_cor(S_prec200912):S_prec200912 = np.array(S_prec200912,dtype = float)y =  S_prec200912[:,2]                #实际降水即站点降水x =  S_prec200912.T[np.arange(3,7)]   #影响降水的因子x=x.Tall_data =  S_prec200912.T[np.arange(2,7)]all_data=all_data.Tall_data=pd.DataFrame(all_data,columns=['S_prec','T_prec','lon', 'lat', 'dem'])all_data.boxplot()plt.savefig("01影响因子分析.jpg",dpi=100)# plt.show()plt.clf()print('影响因子分析矩阵:')print(all_data.corr())model = LinearRegression()model.fit(x, y)a = model.intercept_  # 截距b = model.coef_  # 回归系数return a,b

第四个函数主要实现遥感数据的校正,对比在站点处,校正前和校正后的误差。

#------------------4、校正2013年遥感降水数据 by--------------------
'''
说明:利用建立的校正函数计算2013年遥感卫星降水数据,比较和2013年站点数据的差别
输入:站点降水数据S_prec2013,遥感降水数据T_prec2013
输出:误差(相关系数R2,平均绝对误差MAE);绘制降水数据对比图
'''
def S_val(ST_prec2013, a, b):ST_prec2013 = np.array(ST_prec2013, dtype=float)s_prec =  ST_prec2013[:,2]                #实际降水即站点降水T_prec =  ST_prec2013[:,3]                #校正前卫星降水x =  ST_prec2013.T[np.arange(3,7)]x=x.Tb=np.array(b)a = a * np.ones(len(ST_prec2013))a=a.T# print(x.shape,b.shape,a.shape)T_revise_2013 = a + np.dot(x,b)                 #校正后卫星降水#误差计算MAE_s = sum(s_prec) / (len(ST_prec2013))  #站点均值MAE_t = sum(T_prec) / (len(T_prec))        #校正前遥感均值MAE_t_revise = sum(T_revise_2013) / (len(T_revise_2013))#校正后遥感均值def val(MAE_s0,MAE_t0,T_revise0):MAE=0R1=0R2 = 0R3 = 0R4=0for i in range(len(ST_prec2013)):MAE = abs(s_prec[i] - T_revise0[i]) + MAER1 = (s_prec[i]-MAE_s0)*(T_revise0[i] - MAE_t0)+R1R2 = (s_prec[i]-MAE_s0)*(s_prec[i]-MAE_s0)+ R2R3 = (T_revise0[i] - MAE_t0) * (T_revise0[i] - MAE_t0) + R3R4 =(s_prec[i] - T_revise0[i])*(s_prec[i] - T_revise0[i])+R4R =R1/(pow(R1*R2,0.5))       #相关系数MAE=MAE/len(ST_prec2013)     #均值RMSE = pow(R4/len(ST_prec2013),0.5)                           #RMSEreturn R,MAE,RMSER1, MAE1,RMSE1 = val(MAE_s,MAE_t,T_prec)R2, MAE2,RMSE2 = val(MAE_s, MAE_t_revise,T_revise_2013)num=np.linspace(0,len(s_prec)-1,num=len(s_prec))ln1,=plt.plot(num, s_prec)ln2, = plt.plot(num, T_prec)ln3,=plt.plot(num, T_revise_2013)plt.title('校准前后降水量数据对比图')  # 折线图标题plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示汉字plt.xlabel('序号')  # x轴标题plt.ylabel('降水量(mm)')  # y轴标题plt.legend(handles=[ln1,ln2,ln3],labels=['s_prec_2013','T_prec_2013','T_revise_2013'],loc='upper right')# plt.show()plt.savefig("02校准前后降水量数据对比图.jpg", dpi=100)plt.clf()return MAE1,R1,RMSE1,MAE2,R2,RMSE2

第五个函数主要实现对空间上遥感数据的整个校正,因为是一定的区域,则需要进行研究区的裁剪和最终结果保存为tiff。该步骤与函数2具有一定的重合,其实可以尝试合并一部分内容,简化函数。

# ------------------5、校正后空间遥感降水数据可视化 by--------------------
'''
说明:利用建立的校正函数计算2013年遥感卫星降水数据
输入:校正前遥感降水数据T_prec2013
输出:校正后的遥感降水数据T_prec2013_corr,最终结果需保存为tiff格式
'''def T_val(DEM_path, T_prec2013_path,a,b):dataset1 = gdal.Open(DEM_path + '\dem_china.tif')dataset2 = gdal.Open(T_prec2013_path + '3B43_2013.TIF')img_geotrans1 = dataset1.GetGeoTransform()img_geotrans2 = dataset2.GetGeoTransform()img_proj2 = dataset2.GetProjection()samples1 = dataset1.RasterXSizelines1 = dataset1.RasterYSizesamples2 = dataset2.RasterXSizelines2 = dataset2.RasterYSizeim_data1 = dataset1.ReadAsArray(0, 0, samples1, lines1)im_data2 = dataset2.ReadAsArray(0, 0, samples2, lines2)del dataset1del dataset2#裁剪图像def clip(pnt_coordinates,img_geotrans):im_loc = [[], []]for i in range(len(pnt_coordinates[0])):sample = sp.Symbol('sample')line = sp.Symbol('line')a = -pnt_coordinates[0][i] + img_geotrans[0] + sample*img_geotrans[1] + line*img_geotrans[2]b = -pnt_coordinates[1][i] + img_geotrans[3] + sample*img_geotrans[4] + line*img_geotrans[5]answer = sp.solve([a,b],[sample,line])#解二元一次方程组line = int(np.floor(answer[line]))sample = int(np.floor(answer[sample]))im_loc[0] += [line]im_loc[1] += [sample]return im_locpnt_coordinates = [[111.25, 121.25], [43, 36]] #左上,右下经纬度im_loc1 = clip(pnt_coordinates, img_geotrans1)im_loc2=clip(pnt_coordinates,img_geotrans2)# print(im_loc1,im_loc2)start_line1 = im_loc1[0][0]end_line1 = im_loc1[0][1]start_sample1 = im_loc1[1][0]end_sample1 = im_loc1[1][1]start_line2 = im_loc2[0][0]end_line2 = im_loc2[0][1]start_sample2 = im_loc2[1][0]end_sample2 = im_loc2[1][1]data1 = im_data1[start_line1:end_line1, start_sample1:end_sample1]data1[data1==32767]=0  #将取值区域的dem去除data2 = im_data2[start_line2:end_line2, start_sample2:end_sample2]#根据校正函数进行校正data2_revise=np.zeros(data2.shape)lon=np.linspace(111.25,121.25,num=len(data2[0]))lat=np.linspace(43,36,num=len(data2))for i in range(len(data2)):for j in range(len(data2[0])):if data1[i,j]==0:data2_revise[i, j]=0else:data2_revise[i,j]=a+b[0]*data2[i,j]+b[3]*data1[i,j]+b[1]*lon[j]+b[2]*lat[i]im_data3=np.zeros([lines2,samples2])im_data3[start_line2:end_line2,start_sample2:end_sample2]=data2_revise #替换计算矩阵块#创建GEOTIFF文件im_width = samples2im_height = lines2im_bands = 1datatype = gdal.GDT_Float32driver = gdal.GetDriverByName("GTiff")dataset = driver.Create("3B43_2013_revise.TIF", im_width, im_height, im_bands, datatype)dataset.SetGeoTransform(img_geotrans2)  # 写入仿射变换参数dataset.SetProjection(img_proj2)  # 写入投影dataset.GetRasterBand(1).WriteArray(im_data3)  # 写入数组数据del  dataset

3、结果分析


(1)降水影响因子分析
在这里插入图片描述
图2 降水影响因子分析箱型图
在这里插入图片描述

从箱型图和影响因子分析矩阵中可以看出,站点降水S_prec和遥感提取的降水T_prec、经度lon、纬度lat、所在高程dem均有线性关系,而S_prec和T_prec线性关系属于强相关,符合常识。

(2)校正函数
在这里插入图片描述
获得的多元回归函数为:
y= -453.51 + 0.8996 * T_prec + 7.637 * lon-10.9 * lat + 0.04 * dem
其中,y为校正后降水量(mm),T_prec为遥感数据TRMM3B43获得的降水量(mm),lon为经度(度),lat为纬度(度),dem为高程(m)。

(3)误差分析
选取的误差分析评价指标如下。其中,平均绝对误差和均方根误差表示TRMM 3B43数据与实测数据之间的偏差,数值越小越好,相关系数用来衡量 TRMM3B43数据和实测数据之间的相关性,越接近于1表示相关性越好。
平均绝对误差:

在这里插入图片描述

均方根误差:
在这里插入图片描述

相关系数:
在这里插入图片描述
在这里插入图片描述
图3 2013遥感数据校正前(左)和校正后(右)对比图

计算2013年遥感数据校正前和校正后,效果如上图,其中,校正后数据,因DEM数据缺失(沿海区域),故右图有部分缺失(黑色圈处)。校正后的影像已保存为tiff格式,可利用ArcGIS直接打开查看效果。
在这里插入图片描述
图4 2013年站点位置校正前和校正后对比图

计算2013年站点位置校正前和校正后TRMM3B43数据和站点数据(真值)的误差,平均绝对误差降低,均方根误差降低,相关系数基本保持不变,说明该校正函数校正效果较好。通过与文献(石玉立,2015)结果对比,该方法基本满足校正需求。同时,因训练数据以及验证数据均较少,其实不具有较好的代表性,本方法需要更多的数据验证。

后记

因代码为多位同学共同完成,部分代码习惯未做统一,部分代码存在重复问题,另外,路径问题,本来可以写成相对路径,偷懒就没改,希望后续可以有人补充简化。

部分代码参考:
https://blog.csdn.net/qq_37970770/article/details/103097974
思路参考文献:
石玉立,宋蕾.1998-2012年青藏高原TRMM 3B43降水数据的校准[J].干旱区地理,2015,38(05):900-911.

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 剑指 Offer 06. 从尾到头打印链表

    题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 使用入栈和出栈的方式,刚好从尾到头反过来...

    2024/4/30 18:12:44
  2. 【前端学习】gitee或github上clone代码准备条件

    目录一、git准备1.1 官网下载1.2 安装过程1.3 成功检测二、node.js准备2.1 官网下载2.2 安装过程2.3 成功检测三、vue准备3.1 安装vue3.2 安装vue工具3.3 运行操作一、git准备 为什么要用git? 使用git主要是方便团队合作,在进行团队合作的过程中不用太多…...

    2024/4/30 19:03:38
  3. 2022年计算机二级Java题库软件下载/重难点易错点总结

    一、java的体系结构: 1、Java程序首先由编译器转换为标准字节代码,然后由虚拟机来解释执行 Applet是java的一类特殊应用程序,它潜入HTML中,可以实现多媒体的用户界面或复杂的计算,可以在浏览器上运行; 2、…...

    2024/4/25 17:11:59
  4. 【报告分享】未来交通白皮书2.0-腾讯研究院(附下载)

    摘要:人们对交通的需求已经从“有没有”向更高层级的“好不好”转变,即在安全的基础上,更加追求多样化、个性化、品质化、绿色经济和便捷高效。同时,从交通供给来看,在不同的区域,新旧业态,各种运输模式&am…...

    2024/4/30 16:45:35
  5. spring使用junit进行测试时报错,出现空指针

    控制台抛出的错误 十一月 04, 2021 12:02:58 下午 org.junit.vintage.engine.discovery.TestClassRequestResolver determineRunnerTestDescriptor 警告: Runner org.junit.internal.runners.ErrorReportingRunner (used on com.briup.test.AOPXMLTest) does not support filt…...

    2024/4/28 5:19:08
  6. Ubuntu18.04系统安装

    一. 准备工作 1.下载 Ubuntu 镜像 打开Ubuntu下载地址,选择最新版Ubuntu 18.04 LTS进行下载。 2.制作U盘启动盘 1.安装制作工具:UltraISO(点我下载),下载完成后安装 2.插入用来做启动盘的U盘(最好是usb3…...

    2024/4/20 22:08:42
  7. esp8266模块(WIFI模块)刷固件

    esp8266模块(WIFI模块)刷固件 前言:本人上个月做的esp8266模块(用的stm32),关于刷固件这块当时卡了很久,一直显示等待上电同步,然后显示失败。 ESP8266模块有6个引脚VCC,BND,TXD,RXD…...

    2024/4/30 19:52:00
  8. 在连接服务器时遇到的问题

    1、sudo:未找到命令 重新设置环境变量PATH: export PATH"/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin:/bin:/sbin" sudo -i(小写),进入root 反复运行export那行命令。...

    2024/4/28 3:25:46
  9. mac快捷键整理

    dock栏设置:commandoptionD(显示和隐藏)...

    2024/4/29 13:10:31
  10. Spring @Configuration proxyBeanMethods=false

    开门见山,本文没有原理只有结果,要点如下: 1、proxyBeanMethodstrue,Full 全模式,如不指定则默认为 true,Bean 修饰的方法会被代理。 2、proxyBeanMethodsfalse,Lite 轻量级模式,B…...

    2024/4/28 6:31:59
  11. 我有一个想法(提升生活质量)(第二更)

    摘要:学习的心路历程是很累的,要从一个小白成就为一个大神,而且还是这么觉有先进科技感的AI人工智能,难度不可为不大,但做什么不难呢,去卖个早餐还有城管来管呢,所以相比之下,我觉得…...

    2024/4/28 0:08:55
  12. uniapp直接(打开/安装)apk/ipa包

    应用场景: 当你遇到了别人给你或者请求一个apk包或者ipa包时, 类似于:http://t123/TDJ/Clientdown/tdj_ob_official.apk 你通过plus.runtime.install去安装的时候报错:WGT安装包中manifest.json文件不存在 其实你直接打开这个包…...

    2024/4/28 14:42:37
  13. 51单片机实战教程(一 数据类型别名定义)

    前面已经讲了C语言基础,从此以后将进行编程实战。C数据类型名较长,编程输入不太方便。 下面编写一个定义数据类型别名的程序,并定义实现后面例程常用到的位操作及字符串操作函数。 1. 打开前面教程中创建的C51 Template.uvproj。新建两个文件…...

    2024/4/28 17:34:36
  14. Ansible 资产

    Ansible 资产 在快速入门的场景中,我们一共管理了两台服务器。但是在实际场景中,我们要管理的服务器往往要多得多。难道依然要在Ansible 的 -i 参数后面一个个追加IP指定吗? 这显然不合乎常理。因此这节我们主要去介绍下Ansible的资产。Ansible 的资产…...

    2024/4/28 6:55:58
  15. C语言--常用的文件属性获取API,stat、fstat、lstat

    1,常见的7种文件 (1)- 文本文件 : 文件中的内容由文本构成 (2)- 二进制文件 :存的数字不是文字编码数字,而是真正的数字 (3)d 目录文件 …...

    2024/4/28 18:39:00
  16. 计算机三级网络技术考过攻略+考试资料

    前言(必读) 本文档总大小 5MB 左右,请注意流量 若手机端浏览不便,请尝试使用电脑浏览器 这份指南写于我备考三级一周后,因为做了几套题之后感觉这个考试的知识点和题型很固定,而将这些知识点和做法概括总…...

    2024/4/29 0:17:00
  17. 【报告分享】2021Q3服饰行业季度洞察报告-巨量引擎(附下载)

    摘要:服饰行业是创造美好生活的基础性消费品产业和民生产业, 随着“新零售”升级,中国的服饰行业正在悄然发生着转变。95后、00后成为了新生消费主力军,生长环境优渥的他们,在消费观念、意识以及方式等方面都发生了变化。内容供给…...

    2024/4/28 21:46:55
  18. 367. 有效的完全平方数——记录(C++)

    class Solution { public:bool isPerfectSquare(int num) {int x0;int a1;while(num>0){num-a;aa2;}if(xnum){return true;}return false;} }; 原本要正着来的,结果溢出了,只能反着来了。 加油! (啥牛顿迭代法啊!&a…...

    2024/4/28 22:56:13
  19. android 判断Service是否在运行

    /*** 判断服务是否在运行* param mContext* param className  Service.class.getName();* return*/public static boolean isServiceRunning(Context mContext,String className){boolean isRunning false ;ActivityManager activityManager (ActivityManager) mContext.…...

    2024/4/28 23:12:21
  20. android开发环境配置流程

    Android Studio下载item2下载使用Oh My Zsh替换zsh官网 sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"安装brew教程 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"…...

    2024/4/28 8:07:26

最新文章

  1. 详解AI绘画的技术原理

    AI绘画的技术原理主要基于机器学习和神经网络模型。这些模型可以学习和识别图像中的特征,并自动生成新的图像。以下是AI绘画技术原理的详细解释: 首先,AI绘画需要大量的数据来学习和理解人类绘画的技巧和风格。这些数据可以来自于各种渠道&a…...

    2024/4/30 20:07:05
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【Android】【root remount】【2】如何判断设备是否remount

    前言 高版本的android设备,在remount之后,如果再进行ota升级,会产生异常,从而无法升级成功。 如何判断设备是否remount 当前已android 10 平台为例 当我们执行 adb remount 时,系统调用会调用到system/core/adb/dae…...

    2024/4/30 9:19:47
  4. 数据挖掘中的PCA和KMeans:Airbnb房源案例研究

    目录 一、PCA简介 二、数据集概览 三、数据预处理步骤 四、PCA申请 五、KMeans 聚类 六、PCA成分分析 七、逆变换 八、质心分析 九、结论 十、深入探究 10.1 第 1 步:确定 PCA 组件的最佳数量 10.2 第 2 步:使用 9 个组件重做 PCA 10.3 解释 PCA 加载和特…...

    2024/4/30 3:39:10
  5. Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的

    Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的 我有一个这样的变量值类型 一、在没用 ts 之前的 props 类型指定方式 我们都知道之前在没用 ts 之前的 props 变量值类型指定方式: 如下图,billFood 定义方式是这样的&…...

    2024/4/30 3:53:31
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57