基于机器学习的心脏病数据分析与可视化(百度智能云千帆AI+DeepSeek人工智能+机器学习)健康预测、风险评估与数据可视化 健康管理平台 数据分析与处理
博主介绍:
✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。技术范围:
我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方面的设计与开发。如果你有任何技术难题,我都乐意与你分享解决方案。主要内容:
我的服务内容包括:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文撰写与辅导、论文降重、长期答辩答疑辅导。我还提供腾讯会议一对一的专业讲解和模拟答辩演练,帮助你全面掌握答辩技巧与代码逻辑。🍅获取源码请在文末联系我🍅
温馨提示:文末有 CSDN 平台官方提供的阿龙联系方式的名片!
温馨提示:文末有 CSDN 平台官方提供的阿龙联系方式的名片!
温馨提示:文末有 CSDN 平台官方提供的阿龙联系方式的名片!
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
目录
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
目录:
一、详细操作演示视频 在文章的尾声,您会发现一张电子名片👤,欢迎通过名片上的联系方式与我取得联系,以获取更多关于项目演示的详尽视频内容。视频将帮助您全面理解项目的关键点和操作流程。期待与您的进一步交流!
2.1 mysql技术介绍
2.2 Python语言介绍
2.3 Django框架简介
2.4 B/S架构
2.5 Scrapy简介
系统实现!
预测核心代码:
1-项目均为博主学习开发自研,适合新手入门和学习使用
2-所有源码均一手开发,不是模版!不容易跟班里人重复!
源码获取文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻精彩专栏推荐订阅:在下方专栏
一、详细操作演示视频
在文章的尾声,您会发现一张电子名片👤,欢迎通过名片上的联系方式与我取得联系,以获取更多关于项目演示的详尽视频内容。视频将帮助您全面理解项目的关键点和操作流程。期待与您的进一步交流!
2.1 mysql技术介绍
MySQL是一种开源的关系型数据库管理系统,它广泛应用于大规模数据存储与管理。作为一个成熟的数据库系统,MySQL具有高效、可靠、易于管理和扩展的优点,尤其在处理大量数据时表现出色。对于心脏病数据分析与可视化项目,MySQL被用于存储和管理患者的基本信息、病历数据、实验室检测结果、临床诊断记录等。通过使用MySQL,研究人员可以高效地查询和处理大量数据,同时确保数据的一致性和完整性。
MySQL支持SQL语言,具有强大的数据操作功能,如数据插入、查询、更新和删除等。此外,MySQL还支持事务管理、数据备份、恢复及安全访问控制,这些功能确保了医疗数据的安全性和可靠性。在本研究中,MySQL用于构建心脏病数据存储系统,并为后续的数据分析和可视化提供了稳定的数据库支持。
2.2 Python语言介绍
Python是一种解释型的高级编程语言,以其简洁、可读性强的语法和丰富的库支持而广泛应用于数据科学、机器学习、人工智能等领域。在心脏病数据分析与可视化中,Python发挥了至关重要的作用,主要用于数据的采集、清洗、处理、分析及结果可视化。
Python生态系统中有众多强大的库,如NumPy、Pandas、Matplotlib、Seaborn等,它们帮助研究人员高效地处理和分析心脏病相关的多维数据。NumPy和Pandas提供了强大的数据结构和数据处理功能,支持对大规模数据的高效操作。Matplotlib和Seaborn则提供了多样化的可视化工具,帮助将分析结果通过图表呈现,便于医生和医疗人员理解与决策。
此外,Python还具有丰富的机器学习库(如scikit-learn、TensorFlow、Keras等),为心脏病的预测与风险评估提供了强大的算法支持。在本研究中,Python被广泛应用于数据预处理、特征提取、建模以及结果可视化等多个方面,是实现心脏病数据分析和可视化的核心技术。
2.3 Django框架简介
Django是一个基于Python的开源Web框架,遵循“不要重复自己”(DRY)和“模型-视图-控制器”(MVC)设计模式。Django框架提供了一个高效、便捷的Web开发环境,特别适合快速开发高性能的Web应用。在心脏病数据分析与可视化项目中,Django主要用于构建系统的Web后台,使得数据的展示、管理和交互更加便捷。
Django的强大之处在于它的内置功能,包括身份认证、数据库管理、会话管理等,能够极大地减少开发的复杂度。Django还提供了一个强大的对象关系映射(ORM)系统,可以将Python对象与数据库中的数据表进行映射,使得数据操作更加直观和安全。通过Django框架,系统能够将心脏病数据进行存储、查询、处理,并将分析结果通过Web界面展示给用户,提供一个交互式的数据分析平台。
2.4 B/S架构
B/S架构(浏览器/服务器架构)是一种常见的Web应用架构模式。在B/S架构中,前端界面运行在用户的浏览器中,而后端的业务逻辑和数据存储则由服务器端处理。与传统的C/S(客户端/服务器)架构相比,B/S架构不需要用户安装额外的客户端软件,用户只需通过浏览器访问应用即可。
在本研究的心脏病数据分析与可视化系统中,B/S架构用于构建Web应用,用户可以通过浏览器访问系统,进行数据查询、分析和可视化展示。B/S架构的优势在于它能够简化系统的维护和升级过程,前端和后端可以独立开发和更新,不会互相干扰。同时,B/S架构使得系统的部署更加灵活,支持跨平台使用,能够方便地为多用户提供服务。
2.5 Scrapy简介
Scrapy是一个用于爬取网站数据的开源框架,主要用于抓取和提取网页中的信息。在心脏病数据分析与可视化项目中,Scrapy被用于收集心脏病相关的公共数据,如医学研究论文、患者案例、心脏病的最新治疗方法等。这些数据可以用于扩充分析数据集,帮助研究人员更全面地理解心脏病的发病机制和治疗效果。
Scrapy框架的优势在于其高效、灵活、可扩展,支持并发请求和异步处理,能够大幅提高数据抓取的效率。此外,Scrapy还具备强大的数据清洗和存储功能,可以将抓取到的数据保存到数据库中,方便后续的处理和分析。在本研究中,Scrapy不仅用于数据采集,还能将数据整理成结构化格式,便于进一步分析和可视化。
系统实现!
预测核心代码:
'user':user,'password': passwd,'database': dbName,'port':port
}
# 定义函数创建时间序列数据集
def create_dataset(data, time_step=1):X, Y = [], []for i in range(len(data) - time_step - 1):a = data[i:(i + time_step), :]X.append(a)Y.append(data[i + time_step, :])return np.array(X), np.array(Y)
def heartdiseasedataforecast_forecast(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}#1.获取数据集connection = pymysql.connect(**mysql_config)query = "SELECT admissiondate, systolicpressure,heartrate,cardiovasculardisease FROM heartdiseasedata ORDER BY admissiondate ASC"#2.处理缺失值data = pd.read_sql(query, connection).dropna()# 转换日期格式为datetimedate_format = data['admissiondate'].iloc[0]if isinstance(date_format, (datetime.date, datetime.datetime)):date_format=''elif "年" in date_format and "月" in date_format and "日" in date_format:date_format='%Y年%m月%d日'elif "年" in date_format and "月" in date_format:date_format='%Y年%m月'elif "年" in date_format:date_format='%Y年'else:date_format=''if date_format=="" or date_format==None:data['admissiondate'] = pd.to_datetime(data['admissiondate'])else:data['admissiondate'] = pd.to_datetime(data['admissiondate'], format=date_format)data.set_index('admissiondate', inplace=True)cardiovasculardisease_encoder = LabelEncoder()data['cardiovasculardisease'] = cardiovasculardisease_encoder.fit_transform(data['cardiovasculardisease'])#只选择需要的列data = data[['systolicpressure','heartrate','cardiovasculardisease',]]# 归一化处理(为了LSTM的训练)scaler = MinMaxScaler(feature_range=(0, 1))scaled_data = scaler.fit_transform(data)#设置时间步长time_step = int(len(data)/10)# 使用过去30的数据if time_step>30:time_step=30if time_step<=0:time_step=1X, y = create_dataset(scaled_data, time_step)#划分训练集和测试集train_size = int(len(X) * 0.8) # 80%的数据用于训练X_train, X_test = X[:train_size], X[train_size:]y_train, y_test = y[:train_size], y[train_size:]# 查看训练数据集的形状print(f'X_train shape: {X_train.shape}, y_train shape: {y_train.shape}')# 创建 LSTM 模型model = Sequential()model.add(LSTM(50, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2])))model.add(Dropout(0.2)) # 防止过拟合model.add(LSTM(50, return_sequences=False))model.add(Dropout(0.2))model.add(Dense(len(data.columns), activation='relu')) # 输出层,预测#编译模型model.compile(optimizer='adam', loss='mean_squared_error')#训练模型model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=1)#进行预测train_predict = model.predict(X_train)test_predict = model.predict(X_test)#将预测结果反归一化train_predict = scaler.inverse_transform(train_predict)test_predict = scaler.inverse_transform(test_predict)#绘制预测结果plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体 SimHeiplt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题plt.figure(figsize=(12, 6),dpi=80)plt.plot(data.index[:len(train_predict)], train_predict[:, 1 -1], label='训练systolicpressure预测',color='blue')plt.plot(data.index[len(train_predict) + time_step + 1:], test_predict[:, 1 -1],label='测试systolicpressure预测', color='red')plt.plot(data.index, data['systolicpressure'], label='实际systolicpressure', color='green')plt.title('systolicpressure预测')plt.xlabel('Date')plt.ylabel('systolicpressure')plt.legend()plt.savefig('systolicpressure_prediction.png')plt.clf()plt.figure(figsize=(12, 6),dpi=80)plt.plot(data.index[:len(train_predict)], train_predict[:, 2 -1], label='训练heartrate预测',color='blue')plt.plot(data.index[len(train_predict) + time_step + 1:], test_predict[:, 2 -1],label='测试heartrate预测', color='red')plt.plot(data.index, data['heartrate'], label='实际heartrate', color='green')plt.title('heartrate预测')plt.xlabel('Date')plt.ylabel('heartrate')plt.legend()plt.savefig('heartrate_prediction.png')plt.clf()plt.figure(figsize=(12, 6),dpi=80)plt.plot(data.index[:len(train_predict)], train_predict[:, 3 -1], label='训练cardiovasculardisease预测',color='blue')plt.plot(data.index[len(train_predict) + time_step + 1:], test_predict[:, 3 -1],label='测试cardiovasculardisease预测', color='red')plt.plot(data.index, data['cardiovasculardisease'], label='实际cardiovasculardisease', color='green')plt.title('cardiovasculardisease预测')plt.xlabel('Date')plt.ylabel('cardiovasculardisease')plt.legend()plt.savefig('cardiovasculardisease_prediction.png')plt.clf()#准备未来7的输入数据last_data_days = scaled_data[-time_step:] #取最后time_step的数据future_predictions = []for _ in range(7): # 预测未来7last_data_days = last_data_days.reshape((1, time_step, len(data.columns))) # 重塑数据prediction = model.predict(last_data_days)future_predictions.append(prediction[0])last_data_days = np.append(last_data_days[:, 1:, :], [prediction], axis=1) # 更新输入数据#转换为原始数据future_predictions = scaler.inverse_transform(future_predictions)#获取当前日期last_date = data.index[-1] # 数据集中最后一个日期future_dates = [last_date + datetime.timedelta(days=366*i) for i in range(1, 7+1)] # 生成未来7年的日期df = pd.DataFrame(columns=['admissiondate','systolicpressure','heartrate','cardiovasculardisease',])df['admissiondate'] = [str(date.year) for date in future_dates]df['systolicpressure'] = future_predictions[:, 1 -1]df['heartrate'] = future_predictions[:, 2 -1]df['cardiovasculardisease'] = future_predictions[:, 3 -1]df['systolicpressure']=df['systolicpressure'].astype(int)df['heartrate']=df['heartrate'].astype(int)df['cardiovasculardisease']=df['cardiovasculardisease'].astype(int)df['cardiovasculardisease'] = cardiovasculardisease_encoder.inverse_transform(df['cardiovasculardisease'])#9.创建数据库连接,将DataFrame 插入数据库connection_string = f"mysql+pymysql://{mysql_config['user']}:{mysql_config['password']}@{mysql_config['host']}:{mysql_config['port']}/{mysql_config['database']}"engine = create_engine(connection_string)try:df.to_sql('heartdiseasedataforecast', con=engine, if_exists='append', index=False)print("数据更新成功!")except Exception as e:print(f"发生错误: {e}")finally:engine.dispose() # 关闭数据库连接return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_register(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")error = heartdiseasedataforecast.createbyreq(heartdiseasedataforecast, heartdiseasedataforecast, req_dict)if error is Exception:msg['code'] = crud_error_codemsg['msg'] = "用户已存在,请勿重复注册!"else:msg['data'] = errorreturn JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_login(request):if request.method in ["POST", "GET"]:msg = {'code': normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")datas = heartdiseasedataforecast.getbyparams(heartdiseasedataforecast, heartdiseasedataforecast, req_dict)if not datas:msg['code'] = password_error_codemsg['msg'] = mes.password_error_codereturn JsonResponse(msg, encoder=CustomJsonEncoder)try:__sfsh__= heartdiseasedataforecast.__sfsh__except:__sfsh__=Noneif __sfsh__=='是':if datas[0].get('sfsh')!='是':msg['code']=other_codemsg['msg'] = "账号已锁定,请联系管理员审核!"return JsonResponse(msg, encoder=CustomJsonEncoder)req_dict['id'] = datas[0].get('id')return Auth.authenticate(Auth, heartdiseasedataforecast, req_dict)def heartdiseasedataforecast_logout(request):if request.method in ["POST", "GET"]:msg = {"msg": "登出成功","code": 0}return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_resetPass(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code}req_dict = request.session.get("req_dict")columns= heartdiseasedataforecast.getallcolumn( heartdiseasedataforecast, heartdiseasedataforecast)try:__loginUserColumn__= heartdiseasedataforecast.__loginUserColumn__except:__loginUserColumn__=Noneusername=req_dict.get(list(req_dict.keys())[0])if __loginUserColumn__:username_str=__loginUserColumn__else:username_str=usernameif 'mima' in columns:password_str='mima'else:password_str='password'init_pwd = '123456'recordsParam = {}recordsParam[username_str] = req_dict.get("username")records=heartdiseasedataforecast.getbyparams(heartdiseasedataforecast, heartdiseasedataforecast, recordsParam)if len(records)<1:msg['code'] = 400msg['msg'] = '用户不存在'return JsonResponse(msg, encoder=CustomJsonEncoder)eval('''heartdiseasedataforecast.objects.filter({}='{}').update({}='{}')'''.format(username_str,username,password_str,init_pwd))return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_session(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code,"msg": mes.normal_code, "data": {}}req_dict={"id":request.session.get('params').get("id")}msg['data'] = heartdiseasedataforecast.getbyparams(heartdiseasedataforecast, heartdiseasedataforecast, req_dict)[0]return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_default(request):if request.method in ["POST", "GET"]:msg = {"code": normal_code,"msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")req_dict.update({"isdefault":"是"})data=heartdiseasedataforecast.getbyparams(heartdiseasedataforecast, heartdiseasedataforecast, req_dict)if len(data)>0:msg['data'] = data[0]else:msg['data'] = {}return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_page(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}req_dict = request.session.get("req_dict")global heartdiseasedataforecast#获取全部列名columns= heartdiseasedataforecast.getallcolumn( heartdiseasedataforecast, heartdiseasedataforecast)if "vipread" in req_dict and "vipread" not in columns:del req_dict["vipread"]#当前登录用户所在表tablename = request.session.get("tablename")'''__authSeparate__此属性为真,params添加userid,后台只查询个人数据'''try:__authSeparate__=heartdiseasedataforecast.__authSeparate__except:__authSeparate__=Noneif __authSeparate__=="是":tablename=request.session.get("tablename")if tablename!="users" and 'userid' in columns and 'userid' not in req_dict:try:req_dict['userid']=request.session.get("params").get("id")except:pass#当项目属性hasMessage为”是”,生成系统自动生成留言板的表messages,同时该表的表属性hasMessage也被设置为”是”,字段包括userid(用户id),username(用户名),content(留言内容),reply(回复)#接口page需要区分权限,普通用户查看自己的留言和回复记录,管理员查看所有的留言和回复记录try:__hasMessage__=heartdiseasedataforecast.__hasMessage__except:__hasMessage__=Noneif __hasMessage__=="是":tablename=request.session.get("tablename")if tablename!="users":req_dict["userid"]=request.session.get("params").get("id")# 判断当前表的表属性isAdmin,为真则是管理员表# 当表属性isAdmin=”是”,刷出来的用户表也是管理员,即page和list可以查看所有人的考试记录(同时应用于其他表)__isAdmin__ = NoneallModels = apps.get_app_config('main').get_models()for m in allModels:if m.__tablename__==tablename:try:__isAdmin__ = m.__isAdmin__except:__isAdmin__ = Nonebreak# 当前表也是有管理员权限的表if __isAdmin__ == "是" and 'heartdiseasedataforecast' != 'forum' :if req_dict.get("userid") and 'heartdiseasedataforecast' != 'chat' and 'heartdiseasedataforecast' != 'examrecord':del req_dict["userid"]else:if tablename!="users" and tablename!="jdfnl" and 'heartdiseasedataforecast'[:7]!='discuss' and "userid" in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast):req_dict["userid"] = request.session.get("params").get("id")#当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的try:__authTables__=heartdiseasedataforecast.__authTables__except:__authTables__=Noneif __authTables__!=None and __authTables__!={} and __isAdmin__ == "是":for authColumn,authTable in __authTables__.items():if authTable==tablename:params = request.session.get("params")req_dict[authColumn]=params.get(authColumn)username=params.get(authColumn)breakq = Q()msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] =heartdiseasedataforecast.page(heartdiseasedataforecast, heartdiseasedataforecast, req_dict, request, q)return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_autoSort(request):'''.智能推荐功能(表属性:[intelRecom(是/否)],新增clicktime[前端不显示该字段]字段(调用info/detail接口的时候更新),按clicktime排序查询)
主要信息列表(如商品列表,新闻列表)中使用,显示最近点击的或最新添加的5条记录就行'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}req_dict = request.session.get("req_dict")if "clicknum" in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast):req_dict['sort']='clicknum'elif "browseduration" in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast):req_dict['sort']='browseduration'else:req_dict['sort']='clicktime'req_dict['order']='desc'msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] = heartdiseasedataforecast.page(heartdiseasedataforecast,heartdiseasedataforecast, req_dict)return JsonResponse(msg, encoder=CustomJsonEncoder)#分类列表
def heartdiseasedataforecast_lists(request):if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data":[]}msg['data'],_,_,_,_ = heartdiseasedataforecast.page(heartdiseasedataforecast, heartdiseasedataforecast, {})return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_query(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}try:query_result = heartdiseasedataforecast.objects.filter(**request.session.get("req_dict")).values()msg['data'] = query_result[0]except Exception as e:msg['code'] = crud_error_codemsg['msg'] = f"发生错误:{e}"return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_list(request):'''前台分页'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}req_dict = request.session.get("req_dict")#获取全部列名columns= heartdiseasedataforecast.getallcolumn( heartdiseasedataforecast, heartdiseasedataforecast)if "vipread" in req_dict and "vipread" not in columns:del req_dict["vipread"]#表属性[foreEndList]前台list:和后台默认的list列表页相似,只是摆在前台,否:指没有此页,是:表示有此页(不需要登陆即可查看),前要登:表示有此页且需要登陆后才能查看try:__foreEndList__=heartdiseasedataforecast.__foreEndList__except:__foreEndList__=Nonetry:__foreEndListAuth__=heartdiseasedataforecast.__foreEndListAuth__except:__foreEndListAuth__=None#authSeparatetry:__authSeparate__=heartdiseasedataforecast.__authSeparate__except:__authSeparate__=Noneif __foreEndListAuth__ =="是" and __authSeparate__=="是":tablename=request.session.get("tablename")if tablename!="users" and request.session.get("params") is not None:req_dict['userid']=request.session.get("params").get("id")tablename = request.session.get("tablename")if tablename == "users" and req_dict.get("userid") != None:#判断是否存在userid列名del req_dict["userid"]else:__isAdmin__ = NoneallModels = apps.get_app_config('main').get_models()for m in allModels:if m.__tablename__==tablename:try:__isAdmin__ = m.__isAdmin__except:__isAdmin__ = Nonebreakif __isAdmin__ == "是":if req_dict.get("userid"):# del req_dict["userid"]passelse:#非管理员权限的表,判断当前表字段名是否有useridif "userid" in columns:try:passexcept:pass#当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的try:__authTables__=heartdiseasedataforecast.__authTables__except:__authTables__=Noneif __authTables__!=None and __authTables__!={} and __foreEndListAuth__=="是":for authColumn,authTable in __authTables__.items():if authTable==tablename:try:del req_dict['userid']except:passparams = request.session.get("params")req_dict[authColumn]=params.get(authColumn)username=params.get(authColumn)breakif heartdiseasedataforecast.__tablename__[:7]=="discuss":try:del req_dict['userid']except:passq = Q()msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \msg['data']['pageSize'] = heartdiseasedataforecast.page(heartdiseasedataforecast, heartdiseasedataforecast, req_dict, request, q)return JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_save(request):'''后台新增'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")if 'clicktime' in req_dict.keys():del req_dict['clicktime']tablename=request.session.get("tablename")__isAdmin__ = NoneallModels = apps.get_app_config('main').get_models()for m in allModels:if m.__tablename__==tablename:try:__isAdmin__ = m.__isAdmin__except:__isAdmin__ = Nonebreak#获取全部列名columns= heartdiseasedataforecast.getallcolumn( heartdiseasedataforecast, heartdiseasedataforecast)if tablename!='users' and req_dict.get("userid")!=None and 'userid' in columns and __isAdmin__!='是':params=request.session.get("params")req_dict['userid']=params.get('id')if 'addtime' in req_dict.keys():del req_dict['addtime']idOrErr= heartdiseasedataforecast.createbyreq(heartdiseasedataforecast,heartdiseasedataforecast, req_dict)if idOrErr is Exception:msg['code'] = crud_error_codemsg['msg'] = idOrErrelse:msg['data'] = idOrErrreturn JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_add(request):'''前台新增'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")tablename=request.session.get("tablename")#获取全部列名columns= heartdiseasedataforecast.getallcolumn( heartdiseasedataforecast, heartdiseasedataforecast)try:__authSeparate__=heartdiseasedataforecast.__authSeparate__except:__authSeparate__=Noneif __authSeparate__=="是":tablename=request.session.get("tablename")if tablename!="users" and 'userid' in columns:try:req_dict['userid']=request.session.get("params").get("id")except:passtry:__foreEndListAuth__=heartdiseasedataforecast.__foreEndListAuth__except:__foreEndListAuth__=Noneif __foreEndListAuth__ and __foreEndListAuth__!="否":tablename=request.session.get("tablename")if tablename!="users":req_dict['userid']=request.session.get("params").get("id")if 'addtime' in req_dict.keys():del req_dict['addtime']error= heartdiseasedataforecast.createbyreq(heartdiseasedataforecast,heartdiseasedataforecast, req_dict)if error is Exception:msg['code'] = crud_error_codemsg['msg'] = errorelse:msg['data'] = errorreturn JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_thumbsup(request,id_):'''点赞:表属性thumbsUp[是/否],刷表新增thumbsupnum赞和crazilynum踩字段,'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")id_=int(id_)type_=int(req_dict.get("type",0))rets=heartdiseasedataforecast.getbyid(heartdiseasedataforecast,heartdiseasedataforecast,id_)update_dict={"id":id_,}if type_==1:#赞update_dict["thumbsupnum"]=int(rets[0].get('thumbsupnum'))+1elif type_==2:#踩update_dict["crazilynum"]=int(rets[0].get('crazilynum'))+1error = heartdiseasedataforecast.updatebyparams(heartdiseasedataforecast,heartdiseasedataforecast, update_dict)if error!=None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_info(request,id_):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}data = heartdiseasedataforecast.getbyid(heartdiseasedataforecast,heartdiseasedataforecast, int(id_))if len(data)>0:msg['data']=data[0]if msg['data'].__contains__("reversetime"):if isinstance(msg['data']['reversetime'], datetime.datetime):msg['data']['reversetime'] = msg['data']['reversetime'].strftime("%Y-%m-%d %H:%M:%S")else:if msg['data']['reversetime'] != None:reversetime = datetime.datetime.strptime(msg['data']['reversetime'], '%Y-%m-%d %H:%M:%S')msg['data']['reversetime'] = reversetime.strftime("%Y-%m-%d %H:%M:%S")#浏览点击次数try:__browseClick__= heartdiseasedataforecast.__browseClick__except:__browseClick__=Noneif __browseClick__=="是" and "clicknum" in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast):try:clicknum=int(data[0].get("clicknum",0))+1except:clicknum=0+1click_dict={"id":int(id_),"clicknum":clicknum,"clicktime":datetime.datetime.now()}ret=heartdiseasedataforecast.updatebyparams(heartdiseasedataforecast,heartdiseasedataforecast,click_dict)if ret!=None:msg['code'] = crud_error_codemsg['msg'] = retreturn JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_detail(request,id_):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}data =heartdiseasedataforecast.getbyid(heartdiseasedataforecast,heartdiseasedataforecast, int(id_))if len(data)>0:msg['data']=data[0]if msg['data'].__contains__("reversetime"):if isinstance(msg['data']['reversetime'], datetime.datetime):msg['data']['reversetime'] = msg['data']['reversetime'].strftime("%Y-%m-%d %H:%M:%S")else:if msg['data']['reversetime'] != None:reversetime = datetime.datetime.strptime(msg['data']['reversetime'], '%Y-%m-%d %H:%M:%S')msg['data']['reversetime'] = reversetime.strftime("%Y-%m-%d %H:%M:%S")#浏览点击次数try:__browseClick__= heartdiseasedataforecast.__browseClick__except:__browseClick__=Noneif __browseClick__=="是" and "clicknum" in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast):try:clicknum=int(data[0].get("clicknum",0))+1except:clicknum=0+1click_dict={"id":int(id_),"clicknum":clicknum,"clicktime":datetime.datetime.now()}ret=heartdiseasedataforecast.updatebyparams(heartdiseasedataforecast,heartdiseasedataforecast,click_dict)if ret!=None:msg['code'] = crud_error_codemsg['msg'] = retreturn JsonResponse(msg, encoder=CustomJsonEncoder)def heartdiseasedataforecast_update(request):''''''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")if 'clicktime' in req_dict.keys() and req_dict['clicktime']=="None":del req_dict['clicktime']if req_dict.get("mima") and "mima" not in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast) :del req_dict["mima"]if req_dict.get("password") and "password" not in heartdiseasedataforecast.getallcolumn(heartdiseasedataforecast,heartdiseasedataforecast) :del req_dict["password"]try:del req_dict["clicknum"]except:passerror = heartdiseasedataforecast.updatebyparams(heartdiseasedataforecast, heartdiseasedataforecast, req_dict)if error!=None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def heartdiseasedataforecast_delete(request):'''批量删除'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}req_dict = request.session.get("req_dict")error=heartdiseasedataforecast.deletes(heartdiseasedataforecast,heartdiseasedataforecast,req_dict.get("ids"))if error!=None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def heartdiseasedataforecast_vote(request,id_):'''浏览点击次数(表属性[browseClick:是/否],点击字段(clicknum),调用info/detail接口的时候后端自动+1)、投票功能(表属性[vote:是/否],投票字段(votenum),调用vote接口后端votenum+1)
统计商品或新闻的点击次数;提供新闻的投票功能'''if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": mes.normal_code}data= heartdiseasedataforecast.getbyid(heartdiseasedataforecast, heartdiseasedataforecast, int(id_))for i in data:votenum=i.get('votenum')if votenum!=None:params={"id":int(id_),"votenum":votenum+1}error=heartdiseasedataforecast.updatebyparams(heartdiseasedataforecast,heartdiseasedataforecast,params)if error!=None:msg['code'] = crud_error_codemsg['msg'] = errorreturn JsonResponse(msg)def heartdiseasedataforecast_importExcel(request):if request.method in ["POST", "GET"]:msg = {"code": normal_code, "msg": "成功", "data": {}}excel_file = request.FILES.get("file", "")file_type = excel_file.name.split('.')[1]if file_type in ['xlsx', 'xls']:data = xlrd.open_workbook(filename=None, file_contents=excel_file.read())table = data.sheets()[0]rows = table.nrowstry:for row in range(1, rows):row_values = table.row_values(row)req_dict = {}heartdiseasedataforecast.createbyreq(heartdiseasedataforecast, heartdiseasedataforecast, req_dict)except:passelse:msg = {"msg": "文件类型错误","code": 500}return JsonResponse(msg)def heartdiseasedataforecast_autoSort2(request):return JsonResponse({"code": 0, "msg": '', "data":{}})
1-项目均为博主学习开发自研,适合新手入门和学习使用
2-所有源码均一手开发,不是模版!不容易跟班里人重复!
源码获取
文章下方名片联系我即可~
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏
相关文章:
基于机器学习的心脏病数据分析与可视化(百度智能云千帆AI+DeepSeek人工智能+机器学习)健康预测、风险评估与数据可视化 健康管理平台 数据分析与处理
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
Kubernetes(k8s)学习笔记(四)--入门基本操作
本文通过kubernetes部署tomcat集群,来学习和掌握kubernetes的一些入门基本操作 前提条件 1.各个节点处于Ready状态; 2.配置好docker镜像库(否则会出现ImagePullBackOff等一些问题); 3.网络配置正常(否则即使应用发布没问题,浏…...
在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务
引言 随着语音交互技术的发展,如何高效地处理用户的语音输入成为许多应用的重要课题。本文将详细介绍如何在一个Java项目中同时实现: 基于Vosk的本地语音识别:无需调用云端API即可完成语音到文本的转换。本地热点语音内容识别:对…...
C++八股--5--设计模式--适配器模式,代理模式,观察者模式
3. 观察者模式(也叫做观察者-监听者模式,发布-订阅模式) 主要关注对象的一对多关系,也就是多个对象都依赖于一个对象,当该对象状态改变时,其余对象都能得到对应的通知 如:一组数据(数…...
Ubuntu下安装Node.js
一、引言 Ubuntu下安装Node.js主要有两种方式:通过apt安装和通过源码安装。本文主要讲解通过apt安装Node.js的方法。 二、通过apt安装Node.js 安装Node.js: apt install nodejs 我之前已经安装过了,所以提示:“nodejs 已经是最…...
用单目相机和apriltag二维码aruco实现单目定位
目录 一、核心流程与代码框架 1. 环境准备 2. ArUco定位实现 3. AprilTag定位实现(需额外安装Apriltag库) 二、关键优化点 1.亚像素角点优化 2 多标签联合定位 三、性能指标(实测) 四、常见问题 检测失败…...
AIGC算力消耗白皮书:Stable Diffusion vs Midjourney的架构成本差异
引言:文生图模型的算力经济学悖论 当Midjourney单日处理超过4000万张图像请求时,其云服务算力成本却低于Stable Diffusion开源方案的37%。这揭示了一个核心矛盾:开源模型的架构自由度与闭源系统的商业优化之间存在根本性博弈。本文基于H800 …...
介绍 PHP-FPM 和 Python WSGI
我来详细介绍 PHP-FPM 和 Python WSGI,它们是现代Web开发中替代传统CGI的高性能解决方案,分别针对PHP和Python优化。 1. PHP-FPM(FastCGI Process Manager) 是什么? PHP-FPM 是PHP的 FastCGI 进程管理器,…...
赛季7靶场 -- Checker --User flag
本系列仅说明靶场的攻击思路,不会给出任何的详细代码执行步骤,因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。root要逆向,没做了,但是user flag也有借鉴意义,关于2FA的绕过我们有必要了解 1.首先Nmap扫描…...
【c语言】数据在内存中的存储
一、 大小端字节序 大端字节序:数据的低字节内容存放在内存的高地址处,数据的高字节内容存放在内存的低地址处,对于0x11223344 小端字节序:数据的低字节内容存放在内存的低地址处,数据的高字节内容存放在内存的高地…...
【Unity】XLua访问C#文件
创建NPC.cs: public class NPC { public string name; public int age; public void Say() { Debug.Log("Say:我是未被修改的"); } public static void Say() { Debug.Log("Static Say:我是未被修改的"); } public void Say2(int a) { Debug.Lo…...
Python实例题:Python获取房天下数据
目录 Python实例题 题目 实现思路 代码实现 代码解释 get_fangtianxia_data 函数: 主程序: 运行思路 注意事项 Python实例题 题目 Python获取房天下数据 实现思路 请求网页:使用 requests 库向房天下二手房页面发送请求…...
Milvus(12):分析器
1 分析器概述 在文本处理中,分析器是将原始文本转换为结构化可搜索格式的关键组件。每个分析器通常由两个核心部件组成:标记器和过滤器。它们共同将输入文本转换为标记,完善这些标记,并为高效索引和检索做好准备。 在 Milvus 中&a…...
小程序滚动条隐藏(uniapp版本)
单独指定页面隐藏(找到对应的scroll-view) <style> /* 全局隐藏滚动条样式 */ ::-webkit-scrollbar { display: none; width: 0; height: 0; color: transparent; background: transparent; } /* 确保scroll-view组件也隐藏滚动条 */ …...
在 Trae CN IDE 中配置 Python 3.11的指南
在 Trae CN IDE 中配置 Python 3.11的指南 下载 python 3.11 安装 Python 3.11 首先,我们需要确保安装了 Python 3.11。可以从Python 官方网站下载适合你操作系统的版本。 链接 如果你已经安装了 Python 3.11,可以通过以下命令确认: 文…...
AI 大模型常见面试题(及内容解析)
大模型领域包含许多专业术语,以下是一些关键术语的解释: 人工智能(AI):是指使计算机系统能够模拟人类智能行为,以执行任务、解决问题和学习的科学和技术。 大型语言模型(LLM)&#…...
QT —— QWidget(1)
QT —— QWidget(1) QWidget是啥通俗解释:QWidget 是什么?1. QWidget 能干什么?2. 举个栗子 🌰3. QWidget 的特点4. 和“控件”是什么关系?5. 什么时候用 QWidget?6. 总结 QWidget 核…...
with的用法
Python SQLite 操作详解 本文档详细解释了使用 Python 操作 SQLite 数据库时涉及的关键概念和代码实践,包括 with 语句、事务处理、批量插入以及相关的优化建议。 一、with 语句的作用(自动关门的保险库) with sqlite3.connect(city_1301.d…...
Go反射-通过反射调用结构体的方法(带入参)
使用反射前,我们需要提前做好映射配置 papckage_struct_relationship.go package reflectcommonimport (api "template/api" )// 包名到包对象的映射 var structMap map[string]func() interface{}{"template/api": func() interface{} { re…...
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 19)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 二…...
使用 Selenium 爬取动态网页数据 —— 实战与坑点详解
本文记录了笔者在爬取网页数据过程中遇到的各种技术挑战,包括页面动态渲染、JavaScript 注入等问题,并最终给出一个可运行的完整方案。 文章目录 网页获取不到数据🚀 尝试用 Selenium 渲染页面 网页获取不到数据 某网页数据依赖大量 JavaSc…...
强化学习--2.数学
强化学习--数学 1、概率统计知识1.1 随机变量与观测值1.2 概率密度函数(PDF)1.3 期望1.4 随机抽样 2、数据期望E3、正态分布4、条件概率1. **与多个条件相关**(依赖所有前置条件)2. **仅与上一个条件相关**(马尔可夫性…...
rails 8 CSS不起效问题解决
很久没用rails了,最近打算重新复习一下。在配置好环境后,创建了项目,通过脚手架创建了数据库表,和相关的文件。但我发现却没有生成相应的CSS文件,可能是rails8 取消了吧。于是自己手动创建了相应的css文件。但是刷新页…...
双指针算法详解(含力扣和蓝桥杯例题)
目录 一、双指针算法核心概念 二、常用的双指针类型: 2.1 对撞指针 例题1:盛最多水的容器 例题2:神奇的数组 2.2 快慢指针: 例题1:移动零 例题2:美丽的区间(蓝桥OJ1372) 3.总…...
C 语言字符输入:掌握 getchar 和 scanf 的用法与陷阱
各类资料学习下载合集 https://pan.quark.cn/s/8c91ccb5a474 C 语言字符输入:掌握 getchar 和 scanf 的用法与陷阱 你好!在 C 语言编程中,与用户进行交互最基本的方式就是通过标准输入和标准输出。我们之前探讨了如何使用 printf 和 putchar 进行…...
算法笔记。质数筛算法
题目: 给定一个正整数 n,请你求出 1∼n 中质数的个数。 输入格式 共一行,包含整数 n。 输出格式 共一行,包含一个整数,表示 1∼n 中质数的个数。 数据范围 1≤n≤106 输入样例: 8输出样例…...
C语言中memmove和memcpy
1、memmove()函数 void *memmove(void *str1, const void *str2, size_t n); 将str2所指向的存储区的前n个字节复制到str1所指向的存储区。 memmove()允许“str1和str2所指向的存储区重叠”。通过检查地址关系,自动选择复制方向(从前往后或从后往前&a…...
GESP2024年6月认证C++八级( 第三部分编程题(2)空间跳跃)
参考程序: #include <cstdio> #include <vector> #include <queue> #include <utility> #include <cstring> using namespace std;// 定义一个结构体,用于 Dijkstra 优先队列中的节点 struct Node {int v, w; // v 表示图…...
使用DeepSeek定制Python小游戏——以“俄罗斯方块”为例
前言 本来想再发几个小游戏后在整理一下流程的,但是今天试了一下这个俄罗斯方块的游戏结果发现本来修改的好好的的,结果后面越改越乱,前面的版本也没保存,根据AI修改他是在几个版本改来改去,想着要求还是不能这么高。…...
Linux中安装mysql8,转载及注意事项
一、先前往官网下载mysql8 下载地址: https://dev.mysql.com/downloads/选择Linux 二、删除Linux中的mysql(如果有的话),上传安装包 1、先查看mysql是否存在,命令如下: rpm -qa|grep -i mysql如果使用这…...
网站即时备份,网站即时备份的方法有哪些
网站数据的安全性与业务连续性直接关系到企业的核心竞争力。无论是因硬件故障、人为误操作、网络攻击还是自然灾害,数据丢失或服务中断都可能带来难以估量的损失。因此,网站即时备份成为保障业务稳定性的关键技术手段。 一、核心即时备份技术方案 云服…...
LVM扩容小计
文章目录 [toc]当前磁盘使用问题分析关键问题定位推荐解决方案方案一:扩展根分区(LVM 动态扩容)方案二:清理磁盘空间(紧急临时处理) 当前磁盘使用问题分析 根据你的磁盘信息,根文件系统 (/) 已…...
【2025软考高级架构师】——案例分析总结(13)
摘要 本文对2025年软考高级架构师的考纲及案例分析进行了总结。内容涵盖系统规划、架构设计、系统建模、安全架构、可靠性分析、大数据架构等多方面知识点,还涉及软件质量特性、系统流程图与数据流图、嵌入式系统架构、分布式系统设计等考查内容,详细列…...
Redis ⑨-Jedis | Spring Redis
Jedis 通过 Jedis 可以连接 Redis 服务器。 通过 Maven 引入 Jedis 依赖。 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><versi…...
aidermacs开源程序使用 Aider 在 Emacs 中进行 AI 配对编程
一、软件介绍 文末提供程序和源码下载 Aidermacs 通过集成 Aider(最强大的开源 AI 配对编程工具之一)为 Emacs 带来了 AI 驱动的开发。如果您缺少 Cursor,但更喜欢生活在 Emacs 中,Aidermacs 提供了类似的 AI 功能,同…...
HarmonyOS NEXT——DevEco Studio的使用(还没写完)
一、IDE环境的搭建 Windows环境 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置满足如下要求: 操作系统:Windows10 64位、Windows11 64位 内存:16GB及以上 硬盘:100GB及以上 分辨率:1280*8…...
使用PageHelper实现分页查询(详细)
一:需求分析与设计 1.1 产品原型 (1)分页展示,每页展示10条数据,根据员工姓名进行搜索 (2)业务规则 1.2 接口设计 (1)操作:查询,请求方式…...
神经网络基础-从零开始搭建一个神经网络
一、什么是神经网络 人工神经网络(Articial Neural Network,简写为ANN)也称为神经网络(NN),是一种模仿生物神经网络和功能的计算模型,人脑可以看做是一个生物神经网络,由众多的神经元连接而成,…...
数据库原理与应用实验二 题目七
利用sql建立教材数据库,并定义以下基本表: 学生(学号,年龄,性别,系名) 教材(编号,书名,出版社编号,价格) 订购(学号,书号,数量) 出版社(编号,名称,地址) 1定义主码、外码、和价格、数量的取值范围。 2 在三个表中输入若干记录,注意如果输入违反完整…...
如何在 CentOS 7 命令行连接 Wi-Fi?如何在 Linux 命令行连接 Wi-Fi?
如何在 CentOS 7 命令行连接 Wi-Fi?如何在 Linux 命令行连接 Wi-Fi? 摘要 本教程覆盖如何在多种 Linux 发行版下通过命令行连接 Wi-Fi,包括: CentOS 7、Ubuntu、Debian、Arch Linux、Fedora、Alpine Linux、Kali Linux、OpenSU…...
【学习笔记】 强化学习:实用方法论
作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 之前的文章参考下面的链接…...
ElasticSearch深入解析(十):字段膨胀(Mapping 爆炸)问题的解决思路
文章目录 一、核心原理:动态映射的双刃剑1. 动态映射的工作机制2. 映射爆炸的触发条件3. 底层性能损耗 二、典型场景与案例分析1. 日志系统:动态标签引发的灾难2. 物联网数据:设备属性的无序扩展 三、系统性解决方案1. 架构层优化2. 配置层控…...
react18基础速成
1、项目搭建 npx create-react-app my-react-app(项目名) cd 项目名进入项目目录 终端输入 npm start 启动项目 浏览器查看 项目搭建成功 2、JSX JavaScript语法和HTML语法写在一起就是JSX语法 jsx只能返回一个根元素,即最外层的div&a…...
18、状态库:中央魔法仓库——React 19 Zustand集成
一、量子熔炉的诞生 "Zustand是记忆水晶的量子纠缠体,让状态流无需魔杖驱动即可自洽!"霍格沃茨炼金术研究院的工程师挥动魔杖,Zustand 的原子化状态流在空中交织成星轨矩阵。 ——基于《魔法国会》第2025号协议,Zustan…...
PyCharm中全局搜索无效
发现是因为与搜狗快捷键冲突了,把框选的那个勾选去掉或设置为其他键就好了...
【Hive入门】Hive与Spark SQL深度集成:执行引擎性能全面对比与调优分析
目录 引言 1 Hive执行引擎架构演进 1.1 Hive执行引擎发展历程 1.2 执行引擎架构对比 1.2.1 MapReduce引擎架构 1.2.2 Tez引擎架构 1.2.3 Spark引擎架构 2 执行引擎切换与配置指南 2.1 引擎切换配置方法 2.1.1 全局配置 2.1.2 会话级配置 2.2 资源管理配置 2.2.1 T…...
【算法基础】快速排序算法 - JAVA
一、算法基础 1.1 什么是快速排序 快速排序(Quick Sort)是一种高效的分治排序算法,由英国计算机科学家Tony Hoare于1960年提出。它的核心思想是: 选择一个基准元素(pivot)将数组分成两部分:小…...
Ubuntu 24.04 通过 update-alternatives 切换GCC版本
在 Ubuntu 中编译项目, 会遇到项目依赖于某个特定版本 GCC 的情况, 例如 Ubuntu 24.04 的默认 GCC 版本是 13, 但是有一些项目需要 GCC11才能正常编译, 在 Ubuntu 24.04 默认的环境下编译会报错. 这时候可以通过 update-alternatives 切换GCC版本. all 展示全部 用--all参数会…...
Linux中的时间同步
一、时间同步服务扩展总结 1. 时间同步的重要性 多主机协作需求:在分布式系统、集群、微服务架构中,时间一致性是日志排序、事务顺序、数据一致性的基础。 安全协议依赖:TLS/SSL证书、Kerberos认证等依赖时间有效性,时间偏差可能…...
数据赋能(209)——质量管理——时效性原则
概述 数据时效性原则在数据收集、处理、分析和应用的过程中确保数据在特定时间范围内保持其有效性和相关性,为决策提供准确、及时的依据。在快速变化的市场环境中,数据时效性对于企业的竞争力和决策效率具有决定性的影响。 原则定义 数据时效性原则&a…...