首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客822266614号
南京邮电大学 C++
发布于浙江
关注
已关注
取消关注
@Aerospike:
尝试写一个jvm吧
为啥要尝试写一个呢,自从工作后,感觉就很少接触github了,也没精力去玩啥开源了,但自己还是喜欢学习其他东西,可能多动症???尝试写一个jvm吧,本次选用语言是rust。其实我个人也是rust初学者,到现在,仍然只是会一些简单语法,对于其宏、多线程仍然是跨不过去的门槛,所以本次 只会用一些基础语法来进行开发,目前应该java coder和go coder比较多,我本人也是一个java coder,所以这篇文章,仍然是以java coder能够看懂的情况下来开发。墨滴链接:【https://mdnice.com/writing/60f896096b4a4f6aa55aee6ab8ce4f35】公众号:Azhs的技术小屋(https://mp.weixin.qq.com/s/PTxS_1nnKdYy1Pz6aB0Abg)目前准备分为这么几个部分:command line processingfind class fileparse class fileimplements runtime_datainstruction set and interpreterheap and objectmethod invokearray and stringnativeexception...大概这么几个步骤,可能没有看到GC,我这儿想说的是,选rust的原因就在于它是一门无GC语言,当然如果想模仿一下也是可以,无非就是自己实现一套buffer的申请和回收,这个可以考虑,简单实现难度不大,如果加入动态GC、安全点啥的就挺有难度了,后面再说趴~最后要说的就是我估计进度会很慢,毕竟公司是真滴挺卷的,基本只有周末时间来开发一点点~命令行处理预期效果我可以通过类似java -v 或者 xxx -help的方式看到一些命令, 我的二进制包叫azh, 所以命令如下./target/debug/azh -h./target/debug/azh -v一、环境准备主要是一些必备的tracing日志包、env环境等包的引入[package]name = "azh" # 放你自己想要的名字,build时二进制包的名字version = "0.1.0"edition = "2021"[dependencies]getopts = "0.2.21"tracing = "0.1.37"tracing-subscriber = "0.3.16"二、主要开发2.1 定义Command命令行结构体#[derive(Debug)]pub struct Command { pub help_flag: bool, pub version_flag: bool, pub info_flag: bool,}其中三个属性分别对应命令的help、version、info。2.2 实现command解析: parse_command()方法获取命令行参数let args: Vec<String> = env::args().collect();let program = args[0].clone();let mut opts = Options::new();定义参数的解析方式let opts = opts .parsing_style(ParsingStyle::StopAtFirstFree) .long_only(true);opts.optflag("h", "help", "Print help message");opts.optflag("v", "version", "Print version and exit");opts.optflag("", "info", "Print info about azh-jvm");rust是标准的函数式编程,可以在学习过程中慢慢发现它的美。上面代码中有两个点得注意下:ParsingStyle::StopAtFirstFree: 解析时剩余参数不作为标记参数的一部分long_only: 为true时允许使用 -xxx对参数进行匹配let matches = match opts.parse(&args[1..]) { Ok(m) => m, Err(err) => { print_introduction_message(&program, opts); panic!("{}", err.to_string()); } }; // 匹配help if matches.opt_present("help") { command.help_flag = true; } if matches.opt_present("version") { command.version_flag = true; } if matches.opt_present("info") { command.info_flag = true; }rust是门很严格的语言,上面的match代码段就是做一个判断,如果parse错误我们要选择什么处理方式,rust的特点就是任何代码,要么success,要么就err,所以当我们考虑了所有的场景后,如果你的代码build成功,基本就不会出现线上问题。相信java coder很容易遇到npe问题(NullPointerException, 我在公司线上遇到过,一个npe 1块钱,我们并发很高,记得那天还是没有直播带货的场景,1s就出现了300来个npe... 当时就请各位同事周会喝奶茶...)print_introduction_message() 方法fn print_introduction_message(program: &str, opts: &mut Options) { let brief = format!("Usage: {} [-options] class [args...]", program); info!("{}", opts.usage(&brief));}impl Command { pub fn print_introduction_message(&self) { let args: Vec<String> = env::args().collect(); info!( "------ Usage: {} [-options] class [args...] ------", args[0] ); }}上面就基本完成了,最后你只需要cargo build + cargofmt 后如果没有error就构建二进制包成功了,最好也不要有waring、一个好的开发者不应该有任何一个waring出现在屏幕上。然后通过你的二进制包,输入./xxx -h的方式就可以复现我们刚才的命令了~
点赞 23
评论 6
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-25 22:05
武汉大学 后端
27届小菜鸡求带
目前leetcode刷了1000多道题,八股背了一点点,项目都是网上找的,就是苍穹外卖,请问大佬们怎么包装一下项目,让外卖有点东西。还有如果面试官要是拷打项目,我该怎么回答
牛客62192524...:
1...1000?
点赞
评论
收藏
分享
07-25 11:40
门头沟学院 Java
科大讯飞笔试
总体感觉难度还是比较高的,但是不用开摄像头1.逻辑推理差不多10道题2.资料分析10道题左右,每道题会有柱状图,折线图等图标,需要结合数据完成计算3.图形推理10道题左右,题目以各类图形组合呈现4.性格测试80题,没有时间限制,跟mbti测试挺像的
投递科大讯飞等公司10个岗位
点赞
评论
收藏
分享
06-25 19:48
大连科技学院 Java
大佬们帮我看一下这两个公司是怎么回事呢?靠谱嘛
如果可以选,你最想去哪家...
点赞
评论
收藏
分享
06-03 11:31
四川轻化工大学 Java
大三找实习,大家可以给点意见吗,这个简历有什么问题
不想上班的芝士很想居...:
smm是什么技术
实习,投递多份简历没人回...
点赞
评论
收藏
分享
07-24 15:40
哈尔滨工业大学 算法工程师
国企策划编辑岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
1.3W
2
...
滴滴提前批
7917
3
...
实习都是CRUD怎么包装
7368
4
...
百度提前批一面(秋招第一场也估计是压力最大的)
5526
5
...
秋招首凉-腾讯TEG 云架构平台提前批
5526
6
...
【07.29更新】能救一个是一个!26届毁意向毁约裁员黑名单
4770
7
...
干活最少的实习生因为长得漂亮转正了
3382
8
...
团孝子启动ing!
3048
9
...
字节懂车帝 后端实习一面
2639
10
...
面试劫匪??????
2372
创作者周榜
更多
正在热议
更多
#
工作中哪个瞬间让你想离职
#
48378次浏览
423人参与
#
26届的你,投了哪些公司?
#
18805次浏览
222人参与
#
中兴秋招
#
195236次浏览
2179人参与
#
你遇到最难的面试题目是_
#
4718次浏览
90人参与
#
我对___祛魅了
#
29147次浏览
279人参与
#
如何快速融入团队?
#
10309次浏览
124人参与
#
简历上的经历如何包装
#
12299次浏览
401人参与
#
你跟室友的关系怎么样?
#
3337次浏览
63人参与
#
你最讨厌面试问你什么?
#
12622次浏览
182人参与
#
和同事相处最忌讳的是__
#
14061次浏览
142人参与
#
什么样的背景能拿SSP?
#
15900次浏览
124人参与
#
我和mentor的爱恨情仇
#
61885次浏览
379人参与
#
打工人的精神状态
#
67570次浏览
1107人参与
#
元戎启行求职进展汇总
#
36051次浏览
278人参与
#
牛友们的论文几号送审
#
48604次浏览
792人参与
#
实习生活中那些难忘的瞬间
#
164629次浏览
2444人参与
#
多益网络求职进展汇总
#
31122次浏览
138人参与
#
职场常用语录大全
#
6092次浏览
42人参与
#
哪些公司校招卡第一学历
#
96039次浏览
414人参与
#
职场人,说说你的烦心事
#
13496次浏览
113人参与
#
机械人,秋招第一次笔试的企业是哪家?
#
43167次浏览
344人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务