接下来的三个月里,慢慢来

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,双非大四,Java实习中…”);
📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正!共同进步,共同成长✊”);
🌟System.out.println(“💡如果文章对您有所帮助,希望您可以三连支持一下博主噢🔥”);

文章目录

  • 过往总结
    • 2023年3月~2023年4月
    • 2023年5月~2023年7月
    • 2023年8月~2023年11月
    • 总结
  • 未来展望
    • 春招思考
    • 2023.11~2024.2计划
    • 最后

过往总结

2023年3月~2023年4月

说实话这段时间里没发生什么事情,3月份刚开学拿着自己的第一版简历去面试,只是意识到自己的技术不足。然后就沉下心学习原理、八股。
现在看看自己的第一版简历是觉得自己像是去过家家的。

四月份面试多了起来,也收到了几个公司的实习offer。当时准备是5月1号过后去实习。但不幸的是,生病了,然后直接背包从学校回家养病了

2023年5月~2023年7月

回家治疗这件事是一件错误的选择,可能是环境太舒适了,这2个月真的是在家”养病“,因为这2个月我学到的东西几乎是2天就可以完成的。

每天从早上打针到下午,这完全是我意料之外。不过没有坚持学习还是要归结于自己的懒惰。

之后去上海给我叔叔帮忙干活,干活的这段时间确实学习不了一点

2023年8月~2023年11月

当然,秋招的结果大家应该也能猜到了。

干活是真的抽不出时间学习啊!用了几天早上和晚上半夜的时间看了八股,在我犹豫是要全力备战秋招还是先找一份实习,我选择了我觉得稳妥的办法:先找了一份实习苟着。没想到的是这份实习找的很顺利。

之后的9月份投递简历也是石沉大海,面试也少的可怜。到了9月末,又收到了一份实习的offer,可能是之前海投的原因,有些投成了实习。和当前实习情况对比考虑了一下,实习offer也接了。在入职新公司实习之后的一两个周,快10月底了,秋招的offer也收到了2个,一个6.5k,一个北京9k。因为没有保底的offer、学历也一般,所以很犹豫。但考虑了一下,还是都拒了,又回到了原点。

总结

  1. 身体健康很重要,不能因为没生病而不重视。
  2. 面试过程中自己的Java基础并不扎实而且没有体系,需要继续学习并看书成体系。
  3. 全力春招吧!!

未来展望

春招思考

  1. 春招的竞争会比秋招小吗?
    我觉的并不会。考研阶段已经过了,春招竞争的人可能会更多而且hc很少。
  2. 面临激烈的竞争,我怎么才能有优势?
    虽然应届生基础是最重要的,但没有优势就是一种劣势吧。
    在现有的基础上,重构自己的Java知识体系,学习源码。对比之下,可能简历上唯一的亮点是源码理解了吧。

2023.11~2024.2计划

今天是11月15号,已经过半了。如果到2024.2.15号,共有3个月的时间准备。去掉上班时间,一天大概可以准备3小时时间学习。所以我并不能想到什么就学什么,只能抓重点。

目前计划:

  1. 学习并熟悉spring源码部分(IOC、AOP、事务、循环依赖问题)
  2. 并发编程常见集合源码部分
  3. 力扣hot100
  4. 基础部分总结成自己的知识体系
  5. 简历项目理解

2024.01.16 0:47 2个月时间的总结

硬编码能力直线上升、源码看了一部分、力扣没有刷、知识体系完善了一部分、从0开始撸毕设完成1/5

🚀🚀如果有大佬能给一些建议,特别特别特别感谢!

最后

慢慢的来,别着急!学会有质量的走过每一步


我是代码不会敲的小符,希望认识更多有经验的大佬,也在努力摸索出自己的道路
欢迎添加小符微信:A13781678921,一起加油

<think>好的,我现在要帮用户解答如何自己编写一个操作系统。这个问题听起来挺复杂的,但让我慢慢理清思路。首先,用户可能是个编程爱好者,对底层系统感兴趣,或者想深入学习计算机科学。他们可能已经有了一些编程经验,比如C语言或者汇编,但不确定如何将这些知识应用到操作系统开发上。 接下来,我需要考虑编写操作系统的基本步骤。根据我之前的知识,开发操作系统通常需要了解计算机的启动过程、硬件交互、内存管理、进程调度等等。不过,用户可能对这些概念不太熟悉,所以我需要一步步分解,用简单易懂的语言来解释。 第一步,确定目标。用户可能没有明确的目标,比如是做一个简单的引导程序还是完整的操作系统。这时候需要建议他们从简单的开始,比如实模式下的引导扇区开发,再逐步扩展功能。 然后,需要准备开发环境。这可能包括安装交叉编译器、模拟器如QEMU,以及调试工具。用户可能不知道这些工具的存在,所以得推荐一些常用的,比如GCC交叉编译工具链,Bochs或QEMU模拟器,还有NASM汇编器。 接下来是学习必要的基础知识。这部分可能包括x86汇编语言、计算机组成原理、操作系统的核心概念,如中断处理、内存分页、多任务等。用户可能对汇编不太熟悉,所以需要强调学习汇编的重要性,特别是实模式和保护模式的区别。 然后,分阶段开发。引导加载程序是关键的第一步,用户需要了解主引导记录(MBR)的结构,以及如何用汇编编写一个简单的引导程序,比如显示一个字符然后挂起。这部分可能需要示例代码,但用户可能不会直接看到代码,所以用文字描述过程。 进入保护模式可能是一个难点,用户可能需要了解如何设置全局描述符表(GDT),如何切换CPU模式。这部分需要详细说明步骤,但也要注意不要过于复杂,避免用户被吓到。 实现基本功能时,比如内存管理和进程调度,用户可能需要了解不同的算法和数据结构。这需要简要介绍这些概念,并提供参考资料或书籍推荐,比如《操作系统:设计与实现》或《Orange'S:一个操作系统的实现》。 调试和测试部分,用户可能遇到很多问题,尤其是在没有物理机测试的情况下。推荐使用QEMU和GDB进行调试,这样可以逐步执行代码,查看寄存器状态,帮助定位问题。 最后,持续学习和优化。操作系统开发是一个长期的过程,用户可能需要不断扩展功能,比如文件系统、网络支持等。建议他们参考现有的开源项目,如xv6或Linux内核,学习实际代码的结构和实现。 在整个过程中,用户可能会遇到的挑战包括对硬件的直接操作、汇编语言的理解、以及复杂概念如内存分页和多任务处理的实现。需要鼓励用户分阶段完成,每个阶段都进行充分测试,并利用社区资源解决问题。 总结一下,我需要将整个过程分解为明确步骤,从基础准备到逐步实现,强调每个阶段的关键点和学习资源,帮助用户建立信心,同时提供实用的工具和参考资料,确保他们能够逐步推进项目。</think>实现自己编写操作系统是计算机科学领域的深度实践项目,需分阶段完成。以下是关键步骤和技术要点: 一、基础准备阶段 1. 开发环境搭建 - 安装Linux系统(推荐Ubuntu) - 配置交叉编译工具链:`gcc-i686-elf`或`x86_64-elf` - 使用QEMU虚拟机:`sudo apt-get install qemu-system-x86` - 汇编器:NASM(Netwide Assembler) 2. 必备知识储备 - 精通C语言(推荐《C程序设计语言》) - x86汇编基础(重点学习实模式与保护模式) - 理解计算机组成原理(内存管理、中断机制、I/O操作) - 操作系统理论(进程调度、文件系统、内存分页) 二、开发路线图(分阶段实现) 1. 引导加载程序(Bootloader) ```asm ; 示例:MBR引导程序(NASM语法) org 0x7C00 bits 16 start: mov ax, 0xB800 mov es, ax mov byte [es:0], 'O' mov byte [es:1], 0x0F ; 白底黑字 jmp $ ; 无限循环 times 510-($-$$) db 0 dw 0xAA55 ; MBR签名 ``` 使用命令编译测试: ```bash nasm -f bin boot.asm -o boot.bin qemu-system-x86_64 -hda boot.bin ``` 2. 进入32位保护模式 关键步骤: - 禁用中断(CLI) - 加载GDT(全局描述符表) - 设置CR0寄存器PE位 - 长跳转刷新流水线 3. 核心功能实现 ① 内存管理: - 物理内存检测(通过BIOS中断0x15) - 实现分页机制(设置CR3寄存器) - 动态内存分配算法(伙伴系统/slab分配器) ② 中断处理: - 编程8259A PIC芯片 - 设置IDT(中断描述符表) - 处理时钟中断(0x20)和键盘中断(0x21) ③ 进程调度: - 任务状态段(TSS)结构 - 上下文切换机制 - 调度算法实现(轮转/优先级) 三、进阶开发建议 1. 文件系统开发 - 实现FAT32或ext2基础功能 - 块设备驱动(IDE/AHCI) - 缓存机制(Buffer Cache) 2. 图形界面 - VESA BIOS扩展获取显示模式 - 实现帧缓冲(Framebuffer) - 基本GUI组件(窗口/按钮) 四、调试与测试策略 1. 使用QEMU+GDB调试 启动命令: ```bash qemu-system-x86_64 -s -S -kernel myos.bin gdb -ex "target remote localhost:1234" ``` 2. 关键调试技巧 - 检查CR0-CR4寄存器状态 - 观察IDTR和GDTR寄存器值 - 使用BOCHS内置调试器 五、学习资源推荐 1. 经典书籍 - 《操作系统设计与实现》(MINIX作者著) - 《Orange'S:一个操作系统的实现》(中文实践指南) - 《x86汇编语言:从实模式到保护模式》 2. 开源项目参考 - MIT xv6(教学用Unix-like系统) - Linux 0.11源码(早期内核版本) - SerenityOS(现代C++实现) 开发建议: 1. 从最小可运行系统开始,逐步添加功能 2. 每个模块独立测试验证 3. 使用版本控制(Git)管理代码 4. 参与OSDev社区讨论(forum.osdev.org) 完成基础操作系统约需6-12个(业余时间),关键是要保持持续迭代。首个程碑建议设定为:实现保护模式下的命令行交互、支持基础内存管理和任务切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码不会敲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值