闲逛集美

厦门作为旅游城市,很多人第一印象估计是鼓浪屿,随着宣传和各种小资文章的出现,作为厦门旅游必到的景点,高峰几十万人集中在个小岛上,哪里还有那份惬意。具有百年文化底蕴的集美更值得推荐了,特别是那东南角的学村。 

“集美学村”是集美各类学校及各种文化机构的总称,它由著名爱国华侨领袖陈嘉庚先生于1913年始倾资创办,享誉海内外。学村总建筑面积已达十万多平方米,拥有在校师生一万余人,形成了由学前教育至高等专科教育的完整教育体系。

原集美学村包括:厦门水产学院、集美航海学院、集美师范专科学校、福建体育学院、集美财经专科学校、集美归国侨学生补习学校(华侨大学华文学院)、中国语言文化学校、集美中学、集美小学、集美幼儿园等学校,

还包括福南大会堂、图书馆、体育馆、音乐厅、龙舟池、航海俱乐部等设施。

 

1994年10月,由原国家教委批准,原集美航海学院、厦门水产学院、福建体育学院、集美财经高等专科学校和集美师范高等专科学校等五所高校合并组建为“集美大学”。 银江路上的是新校区,各个建筑基本由校友或校友会捐款建造,保持着闽南建筑的风格。

 

 


 

 

 

校园里最有特色的就是一处白鹭保护区了

 

 

提到集美,就不得不提到华侨领袖陈嘉庚先生,从1913年开始创办集美小学,之后一生都奉献给了教育办学事业,整个集美学村的创建都离不开他,厦大和集大的“校主”。

 

集美中学

 

归来园

 

归来堂

 

陈嘉庚先生故居

 

过去集美的学校

 

 

陈嘉庚纪念馆

 

 

 

学村概貌

 

鳌园,里面是集美解放纪念碑和陈嘉庚墓

 


 

嘉庚公园,鳌园在嘉庚公园内,嘉庚公园和陈嘉庚纪念馆是连在一起的

 

 

龙舟池,有人在为端午比赛练习着

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现中断的模拟需要考虑到多个方面,包括中断的种类、中断的触发方式、中断的处理流程等。以下是一些可能的实现思路和代码示例: 1. 中断种类和触发方式 在模拟中断时,可以考虑三种不同的中断类型:程序结束中断、I/O 中断和时钟中断。其中,程序结束中断是软中断,需要在程序执结束时显式触发;I/O 中断可以通过设置阻塞进程的等待时间来触发;时钟中断则可以通过设定时间片来触发。 在 CPU() 函数中,可以在每次执指令之前都检查 PSW 寄存器,确认是否有中断需要处理。如果有,就进相应的中断处理;否则,继续解释指令。 2. 中断处理流程 中断处理流程需要根据不同类型的中断来定制。例如,程序结束中断需要撤销当前进程并进进程调度;I/O 中断需要唤醒阻塞的进程,让它们重新进入就绪队列;时钟中断则需要将当前进程转入就绪状态,并进进程调度。 以下是一个示例代码,展示了如何在 Java 中实现基于相对时钟的进程调度和中断模拟。在这个示例中,使用了一个简单的进程控制块 PCB 类,用于描述进程的状态和属性。另外,定义了一个全局的进程列表 procList,用于存储所有的进程。 ```java // 进程控制块类 class PCB { public int pid; // 进程 ID public int pc; // 程序计数器 public int timeLeft; // 剩余时间片 public int state; // 进程状态(0:就绪,1:运,2:阻塞,3:结束) public PCB(int pid, int pc, int timeLeft, int state) { this.pid = pid; this.pc = pc; this.timeLeft = timeLeft; this.state = state; } } // 进程列表 List<PCB> procList = new ArrayList<>(); // 初始化进程列表 procList.add(new PCB(0, 0, 5, 1)); // 进程0:运状态,时间片为5 procList.add(new PCB(1, 0, 0, 0)); // 进程1:就绪状态,无时间片 procList.add(new PCB(2, 0, 0, 0)); // 进程2:就绪状态,无时间片 procList.add(new PCB(3, 0, 0, 0)); // 进程3:就绪状态,无时间片 // 中断处理函数 public static void handleInterrupt(int type) { switch (type) { case 0: // 程序结束中断 PCB curProc = procList.get(0); curProc.state = 3; // 结束状态 procList.remove(0); // 从进程列表中移除 schedule(); // 进程调度 break; case 1: // I/O 中断 // 唤醒阻塞的进程 for (PCB pcb : procList) { if (pcb.state == 2 && pcb.timeLeft == 0) { pcb.state = 0; // 就绪状态 } } break; case 2: // 时钟中断 PCB curProc = procList.get(0); curProc.timeLeft--; // 时间片减一 if (curProc.timeLeft == 0) { // 时间片用完,进程转为就绪状态 curProc.state = 0; schedule(); // 进程调度 } break; default: break; } } // 进程调度函数 public static void schedule() { // 判断当前进程是否为 idle 进程 if (procList.get(0).pid == -1) { // 如果是,直接选择就绪队列中的第一个进程 procList.remove(0); procList.get(0).state = 1; // 运状态 procList.get(0).timeLeft = 5; // 时间片重置 return; } // 选择一个就绪进程 PCB nextProc = null; for (PCB pcb : procList) { if (pcb.state == 0) { nextProc = pcb; break; } } if (nextProc == null) { // 就绪队列为空,选择 idle 进程 nextProc = procList.get(0); nextProc.timeLeft = 5; // 时间片重置 } // 将当前运进程转为就绪状态 procList.get(0).state = 0; // 将就绪进程移动到队首,并设置为运状态 procList.remove(nextProc); procList.add(0, nextProc); nextProc.state = 1; } // CPU 函数 public static void CPU() { PCB curProc = procList.get(0); int opcode = getOpcode(curProc.pc); switch (opcode) { case 0: // end 指令 handleInterrupt(0); // 触发程序结束中断 break; case 1: // I/O 指令 curProc.timeLeft = 3; // 设置 I/O 时间 curProc.state = 2; // 阻塞状态 handleInterrupt(1); // 触发 I/O 中断 schedule(); // 进程调度 break; default: // 其他指令 curProc.pc++; // 程序计数器加一 curProc.timeLeft--; // 时间片减一 if (curProc.timeLeft == 0) { // 时间片用完,进程转为就绪状态 curProc.state = 0; schedule(); // 进程调度 } break; } } // 主函数 public static void main(String[] args) { // 初始化 idle 进程 procList.add(new PCB(-1, 0, 5, 1)); // 模拟 CPU 循环 while (true) { CPU(); } } ``` 在这个示例中,使用了一个相对时钟来实现时间片的中断。在每次 CPU() 函数执完一条指令后,都会检查当前进程的时间片是否用完。如果用完了,就将当前进程转为就绪状态,并进进程调度。同时,如果有其他类型的中断需要处理,也会在此时进处理。另外,进程调度函数 schedule() 会根据当前就绪进程的情况,选择一个进程进。如果就绪进程为空,就会选择一个 idle 进程来运
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值