【课程设计】基于python的一款简单的计算器


我们是大二本科生团队,主力两人耗时3天完成了这款计算器的制作。希望大家给我们多多引流!!!!!!
欢迎各位优秀的高考学子报考长安大学,报考长安大学电子信息工程专业。
欢迎有志于就读信息与通信工程和计算机科学与技术的准研究生报考长安大学!

注意:文件我已经打包好了!

长安大学直属国家教育部,是国家首批“211工程”重点建设大学、国家“985优势学科创新平台”建设高校、国家“双一流”建设高校。

学校创建于新中国百业待兴之时,壮大于改革浪潮迭起之际,兴盛于高等教育强国大势之中,与共和国同向同行七十余载。自1951年起,学校前身西安公路交通大学、西安工程学院、西北建筑工程学院相继成立。1956年开始招收来华留学生。1978年开始招收硕士研究生。1983年开始招收博士研究生。1997年成为首批“211工程”重点建设大学。2000年三校合并,组建长安大学,掀开学校跨越式发展新篇章。2005年以来,教育部先后与交通部(现交通运输部)、陕西省人民政府、国土资源部(现自然资源部)、住房和城乡建设部签署共建长安大学协议,“四部一省”共建长安大学的办学格局正式形成。2011年入选国家“985优势学科创新平台”建设高校。2017年入选国家首轮“双一流”建设高校。2021年正式成为交通强国建设试点单位。2022年入选国家第二轮“双一流”建设高校,开启事业高质量发展新征程。

学校位居历史文化名城西安,坐拥南北两大校区,南倚大雁塔,北邻渭水滨,建有太白山、梁山、渭水三个教学实习基地,校园面积3745亩。学校着力塑造人文、创新、智慧、绿色和平安的魅力校园,校内绿树成荫,景色优美,设施完备,来自全国31个省市自治区及港澳台地区、40多个民族,全球100多个国家的莘莘学子,在多样性、国际化的校园里,潜心求学、读书问道。

学校坚持社会主义办学方向,紧扣立德树人根本任务,秉承“工科登峰、理科振兴、文科繁荣、交叉突破”的学科发展理念,担当“人才培养的摇篮、科学研究的殿堂、社会服务的基地、文化传承创新的高地、国际交流合作的前沿”的崇高使命,坚持“特色鲜明、国际知名的高水平研究型大学”的目标愿景,成为我国交通运输、国土资源、城乡建设三大行业领域高层次人才培养、高水平科学研究、高质量社会服务的重要基地。

欢迎报考!!!!!!

一 基本功能描述

请看vcr:【计算机高级编程技术课设【软件使用指南】-哔哩哔哩】计算机高级编程技术课设【软件使用指南】_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV14u3meaEFy/?buvid=XUB49CCB61F2E320441ACAADD1A9142E5C00D&from_spmid=main.space.0.0&is_story_h5=false&mid=DSX55daStgGmf6Qi%2FZwRDw%3D%3D&p=1&plat_id=116&share_from=ugc&share_medium=android&share_plat=android&share_session_id=73839433-708a-41a5-9013-0ed81895fa0e&share_source=COPY&share_tag=s_i&spmid=united.player-video-detail.0.0×tamp=1719537869&unique_k=uEJ8wki&up_id=432186946&vd_source=a27cca1e8e2535b680496ae3bc86dc08

二 代码

计算器基本功能

import tkinter as tk
import math
from sympy import symbols, Eq, solve
import webview
import time
from PIL import Image, ImageTkdef qidong(t):root1 = tk.Tk()root1.title("启动动画")root1.geometry("400x400")# 创建画布canvas = tk.Canvas(root1, width=400, height=400)canvas.place(x=0, y=0)# 打开gif并把所有帧放到frame这个列表里frames = []gif = Image.open(r"8.jfif")for frame in range(0, gif.n_frames):gif.seek(frame)frames.append(ImageTk.PhotoImage(gif))#第一帧image_item = canvas.create_image(200, 200, image=frames[0])# 递归来实现轮播def animate_gif(frame=0):canvas.itemconfig(image_item, image=frames[frame])root1.after(50, animate_gif, (frame + 1)%len(frames) )#作用是50毫秒后把animate_gif里的参数改成frame+1# Start the animation loopanimate_gif()var6 = tk.StringVar()def qh(a=''):var6.set(a)var6.set("正在加载")l = tk.Button(root1, textvariable=var6, command=lambda: destory(), font=("宋体", 14))l.place(x=150, y=320)root1.after(t,qh,"进入系统")def destory():root1.destroy()root1.mainloop()qidong(3000)#_____________界面设计——————————————
root = tk.Tk()
root.title("计算器")
root.geometry("440x550")#————————————输入输出框——————————————————————————————————————
var1 = tk.StringVar()
var1.set("")
var2 = tk.StringVar()
Output=""
var2.set(Output)
e1= tk.Entry(root, textvariable=var1,width=30,font=("宋体",15))
e1.place(x=90,y=10)
e2= tk.Entry(root, textvariable=var2,width=30,font=("宋体",15))
e2.place(x=90,y=40)#——————————————————右下角图片————————————————————————image1 = tk.PhotoImage(file='m_3.png')
li = tk.Label(root, image=image1)
li.place(x=280, y=300)#————————————————————左上角显示模式————————————————————————————varm=tk.StringVar()
varm.set("")
lm=tk.Label(root,textvariable=varm,font=("黑体",10),fg="red")
lm.place(x=2,y=2)def m1():varm.set("普通模式")global ModelModel=1e1.delete(0, tk.END)
bpt=tk.Button(root,text="普通模式",width=7,height=1,command=m1)
bpt.place(x=10,y=40)def m2():varm.set("方程模式")Model=2e1.delete(0,tk.END)
bfc=tk.Button(root,text="方程模式",width=7,height=1,command=m2)
bfc.place(x=10,y=320)def m5():varm.set("位运算模式")global ModelModel=5e1.delete(0,tk.END)
bw=tk.Button(root,text="位运算模式",width=10,height=1,command=m5)
bw.place(x=10,y=450)#按钮们————————————————————————————————————————————————————————————————————————————————————————————————def clickx():e1.insert(tk.END,"X")
bx=tk.Button(root,text="X",width=7,height=1,command=clickx)
bx.place(x=80,y=320)
def clickxd():e1.insert(tk.END,"=")
bxd=tk.Button(root,text="=",width=7,height=1,command=clickxd)
bxd.place(x=150,y=320)def click1():e1.insert("end","1")
b1=tk.Button(root,text="1",width=5,height=1,command=click1)
b1.place(x=40,y=100)
def click2():e1.insert("end","2")
b2=tk.Button(root,text="2",width=5,height=1,command=click2)
b2.place(x=100,y=100)def click3():e1.insert("end","3")
b3=tk.Button(root,text="3",width=5,height=1,command=click3)
b3.place(x=160,y=100)def clickj():e1.insert("end","+")
bj=tk.Button(root,text="+",width=5,height=1,command=clickj)
bj.place(x=220,y=100)
def clicksin():e1.insert("end","sin")
bsin=tk.Button(root,text="sin",width=5,height=1,command=clicksin)
bsin.place(x=300,y=100)def click4():e1.insert("end","4")
b4=tk.Button(root,text="4",width=5,height=1,command=click4)
b4.place(x=40,y=140)
def click5():e1.insert("end","5")
b5=tk.Button(root,text="5",width=5,height=1,command=click5)
b5.place(x=100,y=140)def click6():e1.insert("end","6")
b6=tk.Button(root,text="6",width=5,height=1,command=click6)
b6.place(x=160,y=140)def clickjj():e1.insert("end","-")
bjj=tk.Button(root,text="-",width=5,height=1,command=clickjj)
bjj.place(x=220,y=140)def clickcos():e1.insert("end","cos")
bcos=tk.Button(root,text="cos",width=5,height=1,command=clickcos)
bcos.place(x=300,y=140)def click7():e1.insert("end","7")
b7=tk.Button(root,text="7",width=5,height=1,command=click7)
b7.place(x=40,y=180)
def click8():e1.insert("end","8")
b8=tk.Button(root,text="8",width=5,height=1,command=click8)
b8.place(x=100,y=180)def click9():e1.insert("end","9")
b9=tk.Button(root,text="9",width=5,height=1,command=click9)
b9.place(x=160,y=180)
def clickc():e1.insert("end","*")
bc=tk.Button(root,text="*",width=5,height=1,command=clickc)
bc.place(x=220,y=180)
def clicktan():e1.insert("end","tan")
btan=tk.Button(root,text="tan",width=5,height=1,command=clicktan)
btan.place(x=300,y=180)def click0():e1.insert("end","0")
b0=tk.Button(root,text="0",width=5,height=1,command=click0)
b0.place(x=40,y=220)
def clickz():e1.insert("end","(")
bz=tk.Button(root,text="(",width=5,height=1,command=clickz)
bz.place(x=100,y=220)def clicky():e1.insert("end",")")
by=tk.Button(root,text=")",width=5,height=1,command=clicky)
by.place(x=160,y=220)def clickcc():e1.insert("end","/")
bcc=tk.Button(root,text="/",width=5,height=1,command=clickcc)
bcc.place(x=220,y=220)def clickp():e1.insert("end","^")
bp=tk.Button(root,text="^",width=5,height=1,command=clickp)
bp.place(x=220,y=260)def clickxsd():e1.insert("end",".")
bxsd=tk.Button(root,text=".",width=5,height=1,command=clickxsd)
bxsd.place(x=160,y=260)def clickg():e1.insert("end","fac")
bp=tk.Button(root,text="fac",width=5,height=1,command=clickg)
bp.place(x=300,y=260)def clickwy():e1.insert("end","&")
bwy=tk.Button(root,text="&",width=5,height=1,command=clickwy)
bwy.place(x=40,y=500)
def clickwh():e1.insert("end","|")
bwh=tk.Button(root,text="|",width=5,height=1,command=clickwh)
bwh.place(x=100,y=500)def clickwyh():e1.insert("end","^")
bwyh=tk.Button(root,text="^",width=5,height=1,command=clickwyh)
bwyh.place(x=160,y=500)def clickwf():e1.insert("end","~")
bwf=tk.Button(root,text="~",width=5,height=1,command=clickwf)
bwf.place(x=220,y=500)#--------特殊按钮-------------------------------------------------def clicktq():#清空显示屏e1.delete(0,"end")e2.delete(0,"end")
bq=tk.Button(root,text="C",width=5,height=3,command=clicktq)
bq.place(x=360,y=180)
def clicks():#实现删除最后一个字符的操作text=var1.get()text=text[:-1]e1.delete(0,"end")e1.insert(0,text)bs=tk.Button(root,text="Back",width=5,height=1,command=clicks)
bs.place(x=360,y=260)#——————————————————————————————————————————核心按钮——————————————————————————————————————————————————
def clickqj():global ModelModel=2Input = var1.get()print(Input)print(Model)Output=js(Input,Model)var2.set(Output)history(Input, Output, Model)bqj=tk.Button(root,text="求解",width=7,height=1,command=clickqj)
bqj.place(x=220,y=320)def clickd():global InputInput=var1.get()print(Input)print(Model)Output=js(Input,Model)history(Input, Output, Model)var2.set(Output)
bd=tk.Button(root,text="=",width=5,height=3,command=clickd)
bd.place(x=360,y=100)def m3():global ModelModel=3Input=var1.get()print(Input)print(Model)Output=js(Input,Model)history(Input, Output, Model)var2.set(Output)b10z2=tk.Button(root,text="10→2",command=m3)
b10z2.place(x=80,y=400)
def m4():global ModelModel=4Input=var1.get()print(Input)print(Model)Output = js(Input, Model)history(Input, Output, Model)var2.set(Output)
b10z2=tk.Button(root,text="2→10",command=m4)
b10z2.place(x=160,y=400)
l=tk.Label(root,text="进制转化")
l.place(x=10,y=400)#------------------计算------------------def js(Input,Model):if Model ==1:Input=Input.replace("sin","math.sin")Input = Input.replace("cos", "math.cos")Input = Input.replace("tan", "math.tan")Input = Input.replace("fac", "math.factorial")Input = Input.replace("^", "**")try:Output = eval(Input)except ZeroDivisionError:Output = 'error'else:return Outputfinally:return Outputelif Model == 2:#引入sympy库实现# 定义变量X = symbols('X')flag = Input.index("=")before = Input[0:flag]after =Input[flag+1::]# 定义方程equation = Eq(eval(before), eval(after))#解方程Output = solve(equation, X)if "I" in str(Output):Output = "error!"return Outputelse:return Outputelif Model == 3:Output = bin(eval(Input))[2::]return Outputelif Model == 4:#十进制转二进制try:Output = str(int(Input,2))except ValueError:Output = '请检查输入!'return  Outputelse:return Outputelif Model == 5:i, data, datas = 0, '', []while i < len(Input):#字符串拆成列表if Input[i] == '0':data = data + Input[i]i += 1elif Input[i] == '1':data = data + Input[i]i += 1else:datas.append(data)data = Input[i]datas.append(data)data = ''i += 1datas.append(data)while '~' in datas:#把取反运算转换为相同位数全为1的与自身取异或flag1 = datas.index('~')#找出~的位置j = '0'for i in datas[flag1 + 1]:if i == '0':j = j + '1'else:j = j + '0'datas[flag1] = j[1::]del datas[flag1 + 1]datasnew = []for item in datas:#把二进制转换为十进制if item == '':del itemelif item.isnumeric():item = item[::-1]j, num = 0, 0for i in item:# 转化为十进制字符串num = 2 ** j * int(i) + numj += 1item = str(num)datasnew.append(item)continueelse:datasnew.append(item)continueOutput = bin(eval(''.join(datasnew)))#运算flag2 = Output.index('b')#适合形式输出Output = Output[flag2+1::]return Output#__________使用说明------------------------------
def ck():#窗口# 创建GUI窗口以查看HTML内容webview.create_window('使用说明', 'source\import.html')webview.start()bck=tk.Button(root,text="使用说明",width=7,height=1,command=ck)
bck.place(x=10,y=280)#————————————————————历史日志————————————————————————
def history(In,Out,M):f=open("history.txt",'a',encoding="utf-8")f.write(time.strftime("%Y.%m.%d %H:%M:%S") + "\n")f.writelines("输入: "+In+"\n")f.writelines("输出: "+str(Out)+"\n")if M==1:m="普通模式"elif M==2:m = "方程模式"elif M == 3:m = "十进制转二进制"elif M == 4:m = "二进制转十进制"else:m="位运算模式"f.writelines(m+"\n\n\n")f.close()root.mainloop()

计算器使用说明端(网页)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用介绍及反馈</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>* {box-sizing: border-box;}body {font-family: Arial;padding: 100px;background: rgb(40, 147, 223);}/* 头部标题 */.header {padding: 50px;text-align: center;background:rgb(167, 232, 89);}   /* 创建两列 *//* 左侧栏 */.leftcolumn {   float: left;width: 33.3%;background: white}/*右侧栏*/.rightcolumn {   float: left;width: 50%;background: white}/* 图像部分 */.fakeimg {background-color:white;width: 100%;padding: 50px;}/* 底部 */.footer {padding: 20px;text-align: center;background: #ddd;margin-top: 20px;}</style>
</head>
<body><div class="header"><div><h1> 欢迎访问使用说明!</h1><div class = "body"><p><i>注:建议将页面缩放比例减小到90%</i></p></div></div>
</div><div class ="body"><h1>指导老师介绍</h1><p><h2>刘立东</h2><br><br><i>长安大学电子信息工程系教授</i>  <a href="https://js.chd.edu.cn/xxgcxy/lld/list.htm">     点击此处了解更多   </a></p><br><div class = fakeimg><img src = "liu.png" alt=""></div><p><h2>高涛</h2><br><br><i>长安大学电子信息工程系教授</i>  <a href="https://js.chd.edu.cn/xxgcxy/gt100/list.htm">     点击此处了解更多   </a></p><br><div class = fakeimg><img src = "gaotao.png" alt=""></div><h1>成员分工介绍</h1><ul><li><b>苏荣康</b>:负责计算机交互界面构建,历史日志及启动动画模块制作</li><li><b>姜宇航</b>:负责编写运算功能,网页模块全程制作以及exe文件的打包</li><li><b>杨雨馨</b>:负责撰写报告中的排版设计与问题分析部分</li><li><b>李明凯</b>:负责撰写报告中的程序模块和算法分析部分</li><li><b>龙晨雨</b>:负责撰写报告中摘要,需求分析,算法分析以及引用文献部分</li><h1>意见收集<h1><b>您可以将您在使用本产品过程中产生的问题及建议反馈给开发人员</b><form action="#"><label for ='username'>意见栏:</label><input type="text" id = "username" placeholder = "请输入内容"><br><br><label for = "username">选择产生问题的模块</label><input type="radio" name = "question"> 普通模式<input type="radio" name = "question"> 方程模式<input type="radio" name = "question"> 进制转化<input type="radio" name = "question"> 位运算模式<input type="radio" name = "question"> 其他意见<input type="submit" value="上传"></form> 
</div>
<h1>功能简介</h1>
<p>您可以选择跳转至<a href="usage.html">图片教程</a>,也可以<a href="https://www.bilibili.com/video/BV14u3meaEFy/?buvid=XUB49CCB61F2E320441ACAADD1A9142E5C00D&from_spmid=main.space.0.0&is_story_h5=false&mid=DSX55daStgGmf6Qi%2FZwRDw%3D%3D&p=1&plat_id=116&share_from=ugc&share_medium=android&share_plat=android&share_session_id=73839433-708a-41a5-9013-0ed81895fa0e&share_source=COPY&share_tag=s_i&spmid=united.player-video-detail.0.0&timestamp=1719537869&unique_k=uEJ8wki&up_id=432186946&vd_source=a27cca1e8e2535b680496ae3bc86dc08">点击此处跳转至视频教程</a></p></div><div class = "footer"><p>禁止侵权,违者必究!<br>该项目仅作无偿使用之目的,项目权限归属本团队<br>@chd 电子信息工程系</p></div>
</body>
</html>

        

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>使用教程</title><style>/* 头部标题 */.header {padding: 50px;text-align: center;background:white;}   /* 创建两列 *//* 左侧栏 */.leftcolumn {   float: left;width: 50%;background: rgb(167, 232, 89)}/*右侧栏*/.rightcolumn {   float: left;width: 50%;background: rgb(167, 232, 89)}/* 图像部分 */.fakeimg {background-color:rgb(167, 232, 89);width: 100%;padding: 50px;justify-content: center;}/* 底部 */.footer {padding: 20px;text-align: center;background: #ddd;margin-top: 20px;}</style>
</head>
<body><div class="header"><div><h1> 欢迎访问图片教程!</h1><div class = "body"><p><i>注:建议将页面缩放比例减小到90%</i></p></div></div></div><div class = "leftcolumn"><div class = "fakeimg"><img src = "pic1.png" alt=""><img src = "pic3.png" alt=""><img src = "pic5.png" alt=""><img src = "pic7.png" alt=""></div></div><div class = "leftcolumn"><div class = "fakeimg"><img src = "pic2.png" alt=""><img src = "pic4.png" alt=""><img src = "pic6.png" alt=""><img src = "pic8.png" alt=""></div></div><div class = "footer"><p>禁止侵权,违者必究!<br>该项目仅作无偿使用之目的,项目权限归属本团队<br>@chd 电子信息工程系</p>      </div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39610.shtml

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

相关文章

游戏冻结工具 -- 雪藏HsFreezer v1.78

软件简介 HsFreezer是一款多功能游戏冻结工具&#xff0c;它允许用户随意暂停和继续游戏&#xff0c;同时具备系统优化和进程管理的功能。这款软件特别适合希望在游戏加载时间节省或在游戏与其他任务之间快速切换的用户。其主要特点包括快捷键操作、单锁模式的丝滑切换&#x…

音乐播放器小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;歌曲信息管理&#xff0c;会员优惠管理&#xff0c;用户管理&#xff0c;会员办理管理&#xff0c;歌曲分类管理&#xff0c;会员信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;歌曲信…

人工智能--图像语义分割

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a;专业知识 ​ 文章目录 &#x1f349;引言 &#x1f349;介绍 &#x1f348;工作原理 &#x1f34d;数据准备 &#x1f34d;特征提取 &#x1f34d;像素分…

【数智化人物展】法大大黄翔:从他山之石看中国企业数智化升级的机会点

黄翔 本文由法大大创始人兼CEO黄翔投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着AI、云计算、大数据等技术的飞速发展&#xff0c;数智化转型升级已是全球企业的共识…

css flex 子元素溢出时,父元素被撑开解决方案

当父元素使用flex: 1;自适应填满时&#xff0c;子元素内容溢出&#xff0c;父元素内容撑大&#xff0c;导致页面显示问题&#xff0c;或设置了overflow 为scroll 的元素没出现滚动条等问题 解决方案&#xff1a; 1.如果是横向排列&#xff0c;flex: 1;的元素加上width: 0; 此…

调整分区失败致盘无法访问:深度解析与数据恢复全攻略

调整分区失败盘打不开的困境 在计算机的日常维护与管理中&#xff0c;调整磁盘分区是常见的操作之一&#xff0c;旨在优化存储空间布局、提升系统性能或满足特定应用需求。然而&#xff0c;当这一操作未能如预期般顺利进行&#xff0c;反而导致分区调整失败&#xff0c;进而使…

模拟算法系列|替换所有的问号|提莫攻击|种花问题|Z字形变换|兼具大小写的英文字母|删除字符使频率相同

大家好,我是LvZi,今天带来模拟算法系列|替换所有的问号|提莫攻击|种花问题|Z字形变换|兼具大小写的英文字母|删除字符使频率相同 一.基本概念 模拟算法就是根据题意 模拟出代码的过程,模拟算法的题意往往都很简单,考验的是将思路转化为代码的能力,十分的锻炼代码能力,且能很好…

【日记】在街上跳舞被同事看见了(470 字)

正文 昨晚跳舞&#xff0c;照例在街上表演&#xff0c;被单位里的保洁阿姨撞见了…… 我以为这就完了&#xff0c;结果她还拍了视频发给做饭阿姨。晚上吃饭无意间聊起才知道有这回事。我竟一时间不知该哭还是该笑……. 今天非常非常闲。虽然不是没工作&#xff0c;只是我懒得去…

418天内第6次发布,科大讯飞星火大模型在跟谁赛跑?

常言道“一步慢&#xff0c;步步慢”&#xff0c;大模型市场瞬息万变&#xff0c;快人一步就是竞争的反转。 6月27日&#xff0c;科大讯飞如期公布星火大模型的最新进展&#xff1a;大模型底座七大核心能力得到全面提升&#xff0c;星火大模型V4.0可对标GPT-4 Turbo&#xff0…

软考系统架构师高效备考方法论

软考系统架构师高效备考方法论 本章总结的备考方法论也是希望能帮助更多的小伙伴高效的备考最终通过考试&#xff0c;这种考试个人感觉是尽量一次性考过&#xff0c; 要不然老拖着&#xff0c;虽然每年可以考两次&#xff0c;5月和11月&#xff0c;两次考试间隔5个月时间&#…

ELK日志实时监控

目录 一、ELK/EFK简介 1.1 什么是ELK/EFK? 1.2 常见架构 1、Elasticsearch Logstash Kibana 2、Elasticsearch Logstash Filebeat Kibana 3、Elasticsearch Logstash Filebeat Kibana Redis 4、Elasticsearch Fluentd Filebeat Kibana 1.3 基本流程 二、…

JVM专题之垃圾收集算法

标记清除算法 第一步:标记 (找出内存中需要回收的对象,并且把它们标记出来) 第二步:清除 (清除掉被标记需要回收的对象,释放出对应的内存空间) 缺点: 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需 要分配较大对象时,无法找到…

反射--通俗易懂

一、反射(Reflection) 反射就是:加载类&#xff0c;并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等) 动态语言&#xff0c;是一类在运行时可以改变其结构的语言&#xff1a;例如新的函数、对象、甚至代码可以被引进&#xff0c;已有的函数可以被删除或是其他…

多重奖励拿到手软,OPENAIGC开发者大赛燃爆这个夏天!

你是否渴望在AI领域一展身手&#xff1f; 你是否拥有开创性的技术和创意&#xff1f; 2024 OPENAIGC开发者大赛就是你的最佳舞台&#xff01; 不论你是经验丰富的开发者&#xff0c; 还是技术领域的创新者&#xff0c; 都有机会在这里大放异彩&#xff01; 由联想拯救者、…

每日一题 7月1日

1 设数组data[m]作为循环队列的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为____ 2 采用滑动窗口机制对两个相邻结点A(发送方)和B(接收方)的通信过程进行流量控制。假定帧的序号长度为3比特,发送窗口与接收窗口的大小均为7,当A发送了…

分析Profiler Timeline中的算子序列,通过寻找频繁项集的办法,得到TOPK可融合的算子序列

分析Profiler Timeline中的算子序列,通过寻找频繁项集的办法,得到TOPK可融合的算子序列 1.相关链接2.代码【仅分析带通信算子的Pattern】3.在实际工程中发现 [all_gather, matrix_mm_out]频率最高4.[Ascend MC2](https://gitee.com/ascend/MindSpeed/blob/master/docs/features…

1:25万基础电子地图(西藏版)

我们为你分享过四川版、云南版、江西版、贵州版、重庆版和青海版的1比25万基础电子地图&#xff0c;现在再为你分享西藏版的电子地图。 如果你需要西藏版的1比25万基础电子地图&#xff0c;你可以在文末查看该数据的领取方法。 基础电子地图西藏版 西藏版1:25万基础电子地图…

压缩pdf文件大小,压缩pdf文件大小软件哪个好

在数字化时代&#xff0c;PDF文件因其卓越的跨平台兼容性和稳定性而成为工作与学习的好帮手。然而&#xff0c;当PDF文件体积过大时&#xff0c;传输和存储便成了一项挑战。别担心&#xff0c;本文将为你揭秘如何快速压缩PDF文件&#xff0c;让你的文档轻装上路&#xff01; 压…

postman请求访问:认证失败,无法访问系统资源

1、使用postman时&#xff0c;没有传入相应的token&#xff0c;就会出现这种情况&#xff0c;此时需要把token放进去 发现问题: { "msg": "请求访问&#xff1a;/getInfo&#xff0c;认证失败&#xff0c;无法访问系统资源", "code": 401 } 1…

Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言1. Monorepo 和 MultiRepo 简介2. 为什么选择 Monorepo&#xff1f; 二、Monorepo 和 MultiRepo 的区别1. 定义和概述2. 各自的优点和缺点3. 适用场景 三、Monorepo 的开发策略1. 版本控制2. 依赖管理3. 构建和发布…