我虽一卒,但谁见我后退半步。

作者在大学生涯即将结束之际,分享了自己在新学期的学习计划和重点,包括深入学习Windows核心编程、商务英语提升、编译原理的学习策略,以及对未来职业路径的思考。同时提到通过理论学习与实践结合的重要性,以及对时间管理的反思。
 

开学一周了,一直都忙着学习,说要写点东西就是没空出时间。正好今晚闲得无聊,就随便写点为新学期做些打算。

这学期开了windows核心编程、编译原理和计算机网络。都是些比较重要的课。上完他们就都是选修课了。我的大学生涯也就快要结束了。

虽说才开学几天但是我感觉想好久的样子。每天无论有课没课,除了上编译原理和网络的课,其他时间我都在看核心编程。这本书难度很大,知识点既多又很抽象不下大功夫肯本不能吸收到精髓。才几天功夫,我就看到了第七章,当然不是走马观花式的阅读。每一个知识点每一句话都没有放过。基本上每章都看了两三遍。之所以往后赶是有原因的,因为好多知识点刚接触的时候不会有多么深刻的认识,即使你读了一遍又一遍也无法领悟个所以然来。往后走得远了对前面的东西认识就会不一样。后面的很多东西需要前面的知识,这时再回过来看的时候就会有更深层次的理解。这也是我一直强调的要站在一个足够的高度去理解问题。也是我在这么长时间自学的过程中总结出来的。下下周老师才会开始将这本书,那时候估计我已经把第二部分看完了,再跟着老师走一遍,查漏补缺,不知会比那些刚接触的人收获多多少倍。在windows核心编程上花这么多精力和时间也是有原因的,以后想从事游戏开发或是逆向工程。没有对windows有深刻的理解的话以后会很难往下发展的。看书其实收获并不是很大,好多都是概念性的东西,没有实际去写代码,就不会发现隐藏在代码中的问题。解决问题的过程就是深刻理解的过程。学windows核心编程更少不了练。第一遍先攻理论,第二遍就得好好练了。

 

昨天买了商务英语中级的教材。六级虽然过了,但是我对英语的学习或许才刚刚开始。无论是进外企或是国内的公司用英语交流的能力都是很重要的。不想以后仅仅做一个最底层的程序员,至少也得是项目经理或是部门经理吧。

编译原理很重要啊。很早就听一些前辈说过。只是我现在怎么也腾不出时间看他。我真的是把所有的时间都放在windows核心编程上了。这样其实不好。得改变策略,放慢windows核心编程的速度,腾出时间看编译原理。计算机网络大都是概念性的东西。偶尔看看就足够了。

 

越来越发现我每天只能把注意力集中到一件事情上,暑假看了深度探索C++对象模型,还有几章没有看完想着来学校看吧。可是我发现现在根本没心情在去看他了。姑且把它当做“闲书”吧,啥时候没事的时候就翻出来读读。

 

大三了,该为以后考虑了。想想还真是挺紧迫的。大四一开始估计就得出去实习了吧。真正学习的时间还有整整一年啊。而我现在还是个很菜很菜的菜鸟。感觉很有压力。。。。虽然我很菜,但我一直在进步。

我虽一卒,但谁见我后退半步。

 

<think>好的,用户想知道如何用JavaScript实现浏览器后退两步的功能。我需要仔细分析问题,确保解决方案正确且符合实际。 首先,用户提到了使用history.back(),但通常这个方法只能后退一步。要后退两步,可能需要调用两次history.back()。不过,直接连续调用可能有问题,因为JavaScript的执行是同步的,而页面导航可能需要时间。不过根据引用[2],history.back()的调用会立即改变历史记录的位置,但页面加载可能需要等待。所以可能需要等待第一个后退完成再执行第二个,但实际操作中可能不需要,因为浏览器会处理队列。 另一个方法是使用history.go(-2)。根据引用[5],history.go(n)可以加载历史列表中相对当前页面的第n个位置。所以go(-2)应该能直接后退两步。这可能是更简洁有效的方法。 还需要验证引用中的内容。引用[5]提到history.forward()相当于点击前进按钮,而history.back()相当于后退按钮。引用[3]指出history.go()可以跳转多个步骤,比如go(-2)。因此,使用history.go(-2)是正确的。 用户可能担心不同浏览器的兼容性,但根据MDN文档,history.go()支持良好。因此,推荐使用history.go(-2)来实现后退两步的功能。 总结,两种方法:连续两次调用history.back(),或者直接使用history.go(-2)。后者更高效,代码更简洁。需要提醒用户注意页面历史的存在,即必须有足够的后退步数,否则可能无效。</think>要实现JavaScript中浏览器历史记录后退两步的功能,可以通过以下两种方式实现: ### 一、直接使用history.go()方法 $$history.go(-2);$$ 该方法通过参数`-2`指定回退两步历史记录,这是最简洁的实现方式[^5][^3]。调用后会立即触发页面跳转,相当于连续点击两次浏览器后退按钮。 ### 二、分步调用history.back() ```javascript history.back(); // 后退一步 history.back(); // 后退第二步 ``` 这种方式通过连续两次调用`history.back()`实现,但需要注意这两个调用是同步执行的,实际页面跳转需要等待浏览器处理[^2][^4]。 ### 注意事项 1. **历史记录长度验证**:执行前应检查`window.history.length >= 2`,否则会触发安全限制 2. **页面状态保留**:可通过`window.history.state`获取当前页面状态对象,用于数据恢复 3. **异步执行问题**:连续调用时,建议添加延时确保导航完成 ```javascript history.back(); setTimeout(() => history.back(), 100); ``` ### 实现原理 浏览器History对象维护着一个访问历史堆栈,每次导航操作相当于移动指针位置。`go(-2)`相当于将指针向前移动两个位置,与连续两次`back()`调用具有相同效果,但前者性能更优。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值