java模拟进程调度
先来先服务+优先级调度+短作业优先调度+响应比优先调度
代码
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;class Main {static class tasks{int id;//序号char jinchengname;//进程名int jinchengId;//double arriveTime;//提交时间double runningTime;//运行时间int youxianshu;//优先数double jinrushuchujingshijian;//进入输出#时间double startRunningTime;//开始运行时间double shangxvyunxingshijian;//尚需运行时间double runningEndTime;//运行结束时间double zhouzhuanshijian;//周转时间double saiquanzhouzhuanshijian;//带权周转时间int order;//运行次序double xingyingbi;//响应比public int getId() {return id;}public void setId(int id) {this.id = id;}public char getJinchengname() {return jinchengname;}public void setJinchengname(char jinchengname) {this.jinchengname = jinchengname;}public int getJinchengId() {return jinchengId;}public void setJinchengId(int jinchengId) {this.jinchengId = jinchengId;}public double getArriveTime() {return arriveTime;}public void setArriveTime(double arriveTime) {this.arriveTime = arriveTime;}public double getRunningTime() {return runningTime;}public void setRunningTime(double runningTime) {this.runningTime = runningTime;}public int getYouxianshu() {return youxianshu;}public void setYouxianshu(int youxianshu) {this.youxianshu = youxianshu;}public double getJinrushuchujingshijian() {return jinrushuchujingshijian;}public void setJinrushuchujingshijian(double jinrushuchujingshijian) {this.jinrushuchujingshijian = jinrushuchujingshijian;}public double getStartRunningTime() {return startRunningTime;}public void setStartRunningTime(double startRunningTime) {this.startRunningTime = startRunningTime;}public double getShangxvyunxingshijian() {return shangxvyunxingshijian;}public void setShangxvyunxingshijian(double shangxvyunxingshijian) {this.shangxvyunxingshijian = shangxvyunxingshijian;}public double getRunningEndTime() {return runningEndTime;}public void setRunningEndTime(double runningEndTime) {this.runningEndTime = runningEndTime;}public double getZhouzhuanshijian() {return zhouzhuanshijian;}public void setZhouzhuanshijian(double zhouzhuanshijian) {this.zhouzhuanshijian = zhouzhuanshijian;}public double getSaiquanzhouzhuanshijian() {return saiquanzhouzhuanshijian;}public void setSaiquanzhouzhuanshijian(double saiquanzhouzhuanshijian) {this.saiquanzhouzhuanshijian = saiquanzhouzhuanshijian;}public int getOrder() {return order;}public void setOrder(int order) {this.order = order;}public tasks(int id, char jinchengname, int jinchengId, double arriveTime, double runningTime, int youxianshu) {this.id = id;this.jinchengname = jinchengname;this.jinchengId = jinchengId;this.arriveTime = arriveTime;this.runningTime = runningTime;this.youxianshu = youxianshu;}public double getXingyingbi() {return xingyingbi;}public void setXingyingbi(double xingyingbi) {this.xingyingbi = xingyingbi;}}public static void main(String[] args) {List<tasks> tasksList=new ArrayList<>();System.out.println("请输入task个数");Scanner sc=new Scanner(System.in);int n=sc.nextInt();for (int i = 0; i < n; i++) {System.out.println("请依次输入第"+(i+1)+"个进程的序号 进程名 进程号 到达时间 运行时间 优先数");int id=sc.nextInt();char jingchengname=sc.next().charAt(0);int jingchengid= sc.nextInt();double arrivetime= sc.nextDouble();double runningtime= sc.nextDouble();int youxianshu= sc.nextInt();tasksList.add(new tasks(id,jingchengname,jingchengid,arrivetime,runningtime,youxianshu));}//选择调度System.out.println("1.先来先服务");System.out.println("2.优先级调度");System.out.println("3.短作业优先调度");System.out.println("4.响应比高者优先调度");int ch=sc.nextInt();switch (ch){case 1:xianlaixianfuwu(tasksList);break;case 2:youxianjidiaodu(tasksList);break;case 3:duanzuoyeyouxian(tasksList);break;case 4:xiangyingbigaoyouxian(tasksList);break;}}public static void xianlaixianfuwu(List<tasks> tasksList) {//先来先服务Comparator<tasks> comparator=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator);int order=0;double time=tasksList.get(0).arriveTime;//此时时间点for (tasks tasks : tasksList) {order++;tasks.setOrder(order);if(time>= tasks.arriveTime){tasks.startRunningTime=time;}else {time=tasks.arriveTime;//这里少些一句这个else 才看到 补上了}time+= tasks.runningTime;tasks.runningEndTime=time;tasks.zhouzhuanshijian=tasks.runningEndTime-tasks.arriveTime;tasks.saiquanzhouzhuanshijian=tasks.zhouzhuanshijian / tasks.runningTime;System.out.println("序号\t"+"进程名\t"+"进程号\t"+"到达时间\t"+"运行时间\t"+"优先数\t"+"开始运行时间\t"+"运行结束时间\t"+"周转时间\t"+"带权周转时间(左->右)");System.out.println(tasks.id+" "+tasks.jinchengname+" "+tasks.jinchengId+" "+ tasks.arriveTime+" "+ tasks.runningTime+" "+ tasks.youxianshu+" "+tasks.startRunningTime+" "+ tasks.runningEndTime+" "+tasks.zhouzhuanshijian+" "+tasks.saiquanzhouzhuanshijian+" "+ tasks.getOrder());}}public static void youxianjidiaodu(List<tasks> tasksList) {List<tasks> tasksyiwanchengList=new ArrayList<>();//找最先的到达的作为时间time的开始,完成后更新time+=runningtimeComparator<tasks> comparator=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator);//tasksyiwanchangList.add(task001)tasksyiwanchengList.add(tasksList.get(0));double time=tasksList.get(0).arriveTime;//此时时间点tasksList.get(0).startRunningTime=time;time+=tasksList.get(0).runningTime;tasksList.get(0).runningEndTime=time;//tasksList.del(task001)删除最先的到达的tasktasksList.remove(0);//list.for执行下面这行的操作//在剩下的task里&&arrivetime<time也就是已经到达但还没开始的任务里,选执行优先级最高的执行,更新time+=runningtimeint n= tasksList.size();for (int i = 0; i < n; i++) {//每次for里都要完成且只完成一个任务//将未完成的tasks按优先数排序Comparator<tasks> comparator2=Comparator.comparing(tasks:: getYouxianshu);tasksList.sort(comparator2);int flag=0;for (tasks tasks : tasksList) {if(tasks.arriveTime<=time){tasks.startRunningTime=time;time+=tasks.runningTime;tasks.runningEndTime=time;tasksyiwanchengList.add(tasks);tasksList.remove(tasks);flag=1;break;}}if (flag==0){//如果全都没到达,直接移除接下来最早到达的Comparator<tasks> comparator3=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator3);tasksList.get(0).startRunningTime=tasksList.get(0).arriveTime;time+=tasksList.get(0).runningTime;tasksList.get(0).runningEndTime=time;tasksyiwanchengList.add(tasksList.get(0));tasksList.remove(0);}}//最后遍历出结果tasksyiwanchengListint order=0;for (tasks tasks : tasksyiwanchengList) {order++;tasks.setOrder(order);tasks.zhouzhuanshijian=tasks.runningEndTime-tasks.arriveTime;tasks.saiquanzhouzhuanshijian=tasks.zhouzhuanshijian / tasks.runningTime;System.out.println("序号\t"+"进程名\t"+"进程号\t"+"到达时间\t"+"运行时间\t"+"优先数\t"+"开始运行时间\t"+"运行结束时间\t"+"周转时间\t"+"带权周转时间(左->右)");System.out.println(tasks.id+" "+tasks.jinchengname+" "+tasks.jinchengId+" "+ tasks.arriveTime+" "+ tasks.runningTime+" "+ tasks.youxianshu+" "+tasks.startRunningTime+" "+ tasks.runningEndTime+" "+tasks.zhouzhuanshijian+" "+tasks.saiquanzhouzhuanshijian+" "+ tasks.getOrder());}}public static void duanzuoyeyouxian(List<tasks> tasksList) {List<tasks> tasksyiwanchengList=new ArrayList<>();//找最先的到达的作为时间time的开始,完成后更新time+=runningtimeComparator<tasks> comparator=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator);//tasksyiwanchangList.add(task001)tasksyiwanchengList.add(tasksList.get(0));double time=tasksList.get(0).arriveTime;//此时时间点tasksList.get(0).startRunningTime=time;time+=tasksList.get(0).runningTime;tasksList.get(0).runningEndTime=time;//tasksList.del(task001)删除最先的到达的tasktasksList.remove(0);//list.for执行下面这行的操作//在剩下的task里&&arrivetime<time也就是已经到达但还没开始的任务里,选作业runningtime最小的执行,更新time+=runningtimeint n= tasksList.size();for (int i = 0; i < n; i++) {//每次for里都要完成且只完成一个任务//将未完成的tasks按作业长短排序Comparator<tasks> comparator2=Comparator.comparing(tasks:: getRunningTime);//那这么的话和优先级相比只改了这一个单词tasksList.sort(comparator2);int flag=0;for (tasks tasks : tasksList) {if(tasks.arriveTime<=time){tasks.startRunningTime=time;time+=tasks.runningTime;tasks.runningEndTime=time;tasksyiwanchengList.add(tasks);tasksList.remove(tasks);flag=1;break;}}if (flag==0){//如果全都没到达,直接移除接下来最早到达的Comparator<tasks> comparator3=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator3);tasksList.get(0).startRunningTime=tasksList.get(0).arriveTime;time+=tasksList.get(0).runningTime;tasksList.get(0).runningEndTime=time;tasksyiwanchengList.add(tasksList.get(0));tasksList.remove(0);}}//最后遍历出结果tasksyiwanchengListint order=0;for (tasks tasks : tasksyiwanchengList) {order++;tasks.setOrder(order);tasks.zhouzhuanshijian=tasks.runningEndTime-tasks.arriveTime;tasks.saiquanzhouzhuanshijian=tasks.zhouzhuanshijian / tasks.runningTime;System.out.println("序号\t"+"进程名\t"+"进程号\t"+"到达时间\t"+"运行时间\t"+"优先数\t"+"开始运行时间\t"+"运行结束时间\t"+"周转时间\t"+"带权周转时间(左->右)");System.out.println(tasks.id+" "+tasks.jinchengname+" "+tasks.jinchengId+" "+ tasks.arriveTime+" "+ tasks.runningTime+" "+ tasks.youxianshu+" "+tasks.startRunningTime+" "+ tasks.runningEndTime+" "+tasks.zhouzhuanshijian+" "+tasks.saiquanzhouzhuanshijian+" "+ tasks.getOrder());}}public static void xiangyingbigaoyouxian(List<tasks> tasksList) {List<tasks> tasksyiwanchengList=new ArrayList<>();//响应比高优先 当每次进程被调度就要重新计算新的响应比//找最先的到达的作为时间time的开始,完成后更新time+=runningtimeComparator<tasks> comparator=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator);//tasksyiwanchangList.add(task001)tasksyiwanchengList.add(tasksList.get(0));double time=tasksList.get(0).arriveTime;//此时时间点tasksList.get(0).startRunningTime=time;time+=tasksList.get(0).runningTime;tasksList.get(0).runningEndTime=time;//tasksList.del(task001)删除最先的到达的tasktasksList.remove(0);//list.for执行下面这行的操作//在剩下的task里&&arrivetime<time也就是已经到达但还没开始的任务里,选执行响应比最高的执行,更新time+=runningtimeint n= tasksList.size();for (int i = 0; i < n; i++) {//每次for里都要完成且只完成一个任务 然后响应比改变 重新计算新的响应比//计算runningendtime 迭代每个任务是下一次就被调的情况得到的tasks.runningendtimefor (tasks tasks : tasksList) {//好像应该time和arrivetime比较 还没到的要不要算响应比去比较啊??//先按照还没来的就不参与响应比的计算tasks.xingyingbi=-1;//为了计算响应比才暂时赋值 后面每次for里都要完成一个任务时才是正式的赋值if (tasks.arriveTime<=time){//给来的任务计算响应比 不来的响应比默认-1tasks.runningEndTime+=(time+ tasks.runningTime);}}//每次重新计算响应比 所以没个任务的zhouzhuanshijian必须在下面的计算前就已经知道tasks.zhouzhuanshijian=tasks.runningEndTime-tasks.arriveTime;for (tasks tasks : tasksList) {tasks.zhouzhuanshijian=tasks.runningEndTime-tasks.arriveTime;//arrivetime已知不用管 runningendtime必须知道tasks.xingyingbi=1+(tasks.zhouzhuanshijian/ tasks.runningTime);}//将未完成的tasks按响应比排序Comparator<tasks> comparator2=Comparator.comparing(tasks:: getXingyingbi).reversed();//在这之前必须把响应比算出来tasksList.sort(comparator2);int flag=0;for (tasks tasks : tasksList) {if(tasks.arriveTime<=time){tasks.startRunningTime=time;time+=tasks.runningTime;tasks.runningEndTime=time;tasksyiwanchengList.add(tasks);tasksList.remove(tasks);flag=1;break;}}if (flag==0){//如果全都没到达,直接移除接下来最早到达的Comparator<tasks> comparator3=Comparator.comparing(tasks:: getArriveTime);tasksList.sort(comparator3);tasksList.get(0).startRunningTime=tasksList.get(0).arriveTime;time+=tasksList.get(0).runningTime;tasksList.get(0).runningEndTime=time;tasksyiwanchengList.add(tasksList.get(0));tasksList.remove(0);}}//最后遍历出结果tasksyiwanchengListint order=0;for (tasks tasks : tasksyiwanchengList) {order++;tasks.setOrder(order);tasks.zhouzhuanshijian=tasks.runningEndTime-tasks.arriveTime;//arrivetime已知不用管 runningendtime必须知道tasks.saiquanzhouzhuanshijian=tasks.zhouzhuanshijian / tasks.runningTime;System.out.println("序号\t"+"进程名\t"+"进程号\t"+"到达时间\t"+"运行时间\t"+"优先数\t"+"开始运行时间\t"+"运行结束时间\t"+"周转时间\t"+"带权周转时间(左->右)");System.out.println(tasks.id+" "+tasks.jinchengname+" "+tasks.jinchengId+" "+ tasks.arriveTime+" "+ tasks.runningTime+" "+ tasks.youxianshu+" "+tasks.startRunningTime+" "+ tasks.runningEndTime+" "+tasks.zhouzhuanshijian+" "+tasks.saiquanzhouzhuanshijian+" "+ tasks.getOrder());}}
}
运行结果

相关文章:
java模拟进程调度
先来先服务优先级调度短作业优先调度响应比优先调度 代码 import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner;class Main {static class tasks{int id;//序号char jinchengname;//进程名int jinchengId;//double a…...
大模型AI在教育领域有哪些创业机会?
大模型AI在教育领域有很多创业机会,尤其是在个性化学习、教学辅助、教育资源优化等方面。以下是一些潜在的创业机会: 个性化学习平台 学习路径定制:根据学生的学习数据与兴趣,为他们设计个性化的学习路径,提供适合的课…...
网页上视频没有提供下载权限怎么办?
以腾讯会议录屏没有提供下载权限为例,该怎么办呢? 最好的办法就是找到管理员,开启下载权限。如果找不到呢,那就用这个办法下载。 1.打开Microsoft Edge浏览器的扩展 2.搜索“视频下载”,选择“视频下载Pro” 3.点击“…...
【去哪里找开源商城项目】
有很多途径可以找到开源项目,以下是一些常用的方法: 开源代码托管平台:许多开源项目都托管在平台上,例如GitHub、GitLab和Bitbucket。你可以在这些平台上浏览项目,搜索关键词,查看项目的星级和贡献者数量等…...
ei会议检索:第二届网络、通信与智能计算国际会议(NCIC 2024)
第二届网络、通信与智能计算国际会议(NCIC 2024)将于2024年11月22-25日在北京信息科技大学召开,聚焦网络、通信与智能计算,欢迎国内外学者投稿交流,录用文章将在Springer出版,并提交EI等检索。 NCIC 2024&a…...
vue添加省市区
主要参考“element”框架:Element - The worlds most popular Vue UI framework <div class"block"><span class"demonstration">默认 click 触发子菜单</span><el-cascaderv-model"value":options"optio…...
运维监控丨16条常用的Kafka看板监控配置与告警规则
本期我们针对企业运维监控的场景,介绍一些监控配置和告警规则。可以根据Kafka集群和业务的具体要求,灵活调整和扩展这些监控配置及告警规则。在实际应用场景中,需要综合运用多种监控工具(例如Prometheus、Grafana、Zabbix等&#…...
ECharts饼图,配置标注示例
const color ["#00FFB4", "#5498FD", "#6F54FD", "#FD5454", "#FDA354",]const datas [{ value: 100, name: "一年级" },{ value: 70, name: "二年级" },{ value: 184, name: "三年级" },{…...
【大象数据集】大象图像识别 目标检测 机器视觉(含数据集)
一、背景意义 在信息时代,数据的收集和分析技术得到了飞速发展。深度学习算法的出现,为处理和分析这些复杂的鱼类数据集提供了强大的工具。深度学习具有强大的模式识别和特征提取能力,能够从海量的数据中自动学习和发现规律,为鱼…...
LN 在 LLMs 中的不同位置 有什么区别么
Layer Normalization(LN)是一种在深度学习中用于稳定和加速神经网络训练的归一化技术。它通过对单个样本的所有激活进行归一化来工作,与Batch Normalization(BN)不同,BN是对一个mini-batch中的所有样本的激…...
【代码随想录Day57】图论Part08
拓扑排序精讲 题目链接/文章讲解:代码随想录 import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 读取文件数量 n 和依赖关系数量 mint n scanner.nextInt();int m scanner.nextInt()…...
记录一次mmpretrain训练数据并转onnx推理
目录 1.前言 2.代码 3.数据形态【分类用】 4.配置文件 5.训练 6.测试-分析-混淆矩阵等等,测试图片效果等 7.导出onnx 8.onnx推理 9.docker环境简单补充 1.前言 好久没有做图像分类了,于是想用商汤的mmclassification快速搞一波,发现已…...
shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘
查找美国安全局漏洞 nww.nsa.gov(美国安全局官方网站) net参数使用 搜索指定的ip网段 shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 (老美国家安全局的一个网段)可能直接访问不太行,可以使用host参数,得到域名再去…...
telnet 密码模式 访问路由器
telnet 密码访问华为路由器 模拟被访问路由 sy [Huawei]int g0/0/0 //选中 g0/0/0端口 [Huawei-GigabitEthernet0/0/0]ip add 192.168.1.1 24 //设置端口ip [Huawei]user-interface vty 0 4 //配置vty [Huawei-ui-vty0-4]set authentication password cipher huawei123 //设置…...
文心一言 VS 讯飞星火 VS chatgpt (380)-- 算法导论24.4 12题
十二、给出一个有效算法来解决 A x ⩽ b Ax⩽b Ax⩽b 的差分约束系统,这里 b b b 的所有元素为实数,而变量 x i x_i xi 中某个给定的子集是整数。如果要写代码,请用go语言。 文心一言: 差分约束系统问题通常用于解决带有约…...
Unity自定义数组在Inspector窗口的显示方式
了解 单行高度:EditorGUIUtility.singleLineHeight获取 PropertyField 控件所需的高度:EditorGUI.GetPropertyHeight属性是否在Inspector窗口展开:SerializedProperty.isExpanded可重新排序列表类:ReorderableList绘制纯色矩形:EditorGUI.Dr…...
ERC论文阅读(03)--SPCL论文阅读笔记(2024-10-29)
SPCL论文阅读笔记 论文中心思想 这篇论文是研究ERC任务的论文,作者提出了监督原型对比学习的方法用于ERC任务。 论文 EMNLP2022 paper “Supervised Prototypical Contrastive Learning for Emotion Recognition in Conversation” 现存问题 现存的使用监督对…...
Straightforward Layer-wise Pruning for More Efficient Visual Adaptation
对于模型中冗余的参数,一个常见的方法是通过结构化剪枝方法减少参数容量。例如,基于幅度值和基于梯度的剪枝方法。尽管这些方法在传统训练上通用性,本文关注的PETL迁移有两个不可避免的问题: 显著增加了模型存储负担。由于不同的…...
喜讯 | 创邻科技杭州电子科技大学联合实验室揭牌成立!
近日,杭州电子科技大学图书情报专业硕士行业导师聘任仪式暨杭电-创邻图技术与数字化联合实验室(图书档案文物数字云联合研发中心)揭牌仪式在杭州电子科技大学隆重举行。杭州电子科技大学原副校长吕金海、研究生院副院长潘建江,科研…...
海外媒体发稿:如何打造媒体发稿策略
新闻媒体的发稿推广策略对于提升品牌知名度、吸引流量以及增加收入非常重要。本文将介绍一套在21天内打造爆款新闻媒体发稿推广策略的方法。 第一天至第七天:明确目标和定位 在这个阶段,你需要明确你的目标和定位,以便为你的新闻媒体建立一个…...
1564286-24-3,Cy5 DBCO SE,应用于生物分子标记、分子成像
一.名称英文名称:Cy5 DBCO NHS Ester,Cy5 DBCO SE,Cyanine5 DBCO NHS Ester,Cy5 Dibenzocyclooctyne NHS Ester中文名称:Cy5-二苯并环辛炔-NHS 酯,花菁染料Cy5-二苯并环辛炔-琥珀酰亚胺酯CAS 号:…...
益达App:5分钟打造你的个性化跨平台媒体中心
益达App:5分钟打造你的个性化跨平台媒体中心 【免费下载链接】yidaRule 益达规则仓库 项目地址: https://gitcode.com/gh_mirrors/yi/yidaRule 在信息爆炸的时代,我们每天都要面对海量的媒体内容——视频、音频、小说、漫画分散在各个平台和网站中…...
2026 年智慧工地排名榜单第一|山东建安物联科技有限公司
2026 年度智慧工地综合实力榜单正式揭晓,山东建安物联科技有限公司(大建安)凭借标准引领、技术实力与标杆项目,登顶全国榜首,成为行业公认的智慧工地领军企业。公司打造的中建八局烟台崆峒胜境项目,获评国家…...
Ostrakon-VL-8B零基础上手:无需代码,5分钟完成门店图片智能分析
Ostrakon-VL-8B零基础上手:无需代码,5分钟完成门店图片智能分析 1. 引言 想象一下,你是一家连锁便利店的区域经理,手下管着几十家门店。每周巡店检查,光是看照片、数货架、查价格标签,就要花掉大半天时间…...
5步构建智能医疗预约系统:91160-cli全流程实战指南
5步构建智能医疗预约系统:91160-cli全流程实战指南 【免费下载链接】91160-cli 健康160全自动挂号脚本 项目地址: https://gitcode.com/gh_mirrors/91/91160-cli 医疗资源紧张导致的挂号难题,让无数患者在凌晨守候却依然一号难求。如何突破人工抢…...
别再傻傻分不清!STM32定时器里Prescaler和ClockDivision到底谁管心跳谁管滤波?
STM32定时器双频分频机制深度解析:从心跳节拍到信号滤波 第一次接触STM32定时器配置时,看到Prescaler和ClockDivision这两个参数,很多开发者都会产生疑惑——它们看起来都是在做"分频"这件事,为什么需要两个参数&#x…...
EcomGPT-中英文-7B电商模型与数据库课程设计:构建智能电商问答知识库
EcomGPT-中英文-7B电商模型与数据库课程设计:构建智能电商问答知识库 电商平台每天要处理海量的用户咨询:“这件衣服有M码吗?”、“这个手机和昨天看的那个有什么区别?”、“帮我推荐几款适合送长辈的茶叶”。传统客服要么忙不过…...
这份榜单够用!AI论文网站深度测评与推荐
2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
Vue项目实战:集成Cesium加载天地图与高德地图的完整指南
1. 环境准备与项目初始化 在开始集成Cesium之前,我们需要先搭建好Vue的开发环境。这里我推荐使用Vue 3的组合式API,因为它的模块化特性与Cesium的集成更加契合。不过Vue 2的用户也不用担心,大部分代码都是兼容的。 首先创建一个新的Vue项目…...
医疗影像分析中的图像分割避坑指南:从Sobel到Canny的算法选型
医疗影像分析中的图像分割避坑指南:从Sobel到Canny的算法选型 在CT和MRI扫描成为临床诊断常规手段的今天,医疗影像分析正面临前所未有的数据洪流。某三甲医院的放射科主任曾向我展示过一组数据:单台256排CT日均产生超过200GB的DICOM影像&…...
