百科问答小站 logo
百科问答小站 font logo



室友想抄我的代码,给还是不给? 第1页

     

user avatar   bei-ji-85 网友的相关建议: 
      

如果是我的话,给,然后自己再写一份。

我大学里曾经一个人写了二十几份不同的代码,班级里真正自己完成的人不超过十个(小班)。能写出完全不同的课程设计,对自己的编码能力是会有很大的提升的,如果有能力,建议多写几份。

BTW:我毕业论文写了5篇,两篇优秀,如果算上大三的时候帮别人写的,一共是7篇。


user avatar   chenlong365 网友的相关建议: 
      

给,但是换一种方式,别微信传,也别U盘。

Github上创建一个Repository,先空着。让他Star你。当然他一个人还不够,让他想办法发动更多人去Star。

超过10 Star,你就把代码Push上去,然后让他Fork。

超过100 Star,都不用他修改变量名,服务到家,你帮他改。然后用他的Github账号Pull Request。

这个Repository留着,以后学弟学妹们都用的到。平时Private,有人找你要代码,就把他加为Collaborator。这就是Github允许私有仓库人数无限制的福利。

这么多Star不仅仅是数字,而是你毕业找工作时简历上最亮的那颗Star。记得找工作期间Make Public。

不是开玩笑,如果我是大学老师,我就要求学生这样交代码作业。这是程序员的必备技能。我会给每一个班创建一个Organization,他们交作业我都知道,代码有问题就发Issue。全专业的学生互相Follow,谁的代码写得好,大家就Star。下次上课,我可以打开Github,讲评一下比较好的代码,也可以让同学们互相学习和评价别人的代码。

大一新生入学,先学习Github的基本用法,然后一项练习就是Star学长们的Repository,为他们找工作贡献一份自己的力量,这个优良传统一届一届传承下去...

软件程序的一个根本特征就是可复制性,这是其他行业没有的特质。开放源代码也是目前软件产业发展的一个主要驱动力。应该让即将从事这个行业的新人们更早更深刻的认识到软件可复制可分享的本质特点。



关于如何最方便的浏览GitHub上的源代码,我之前专门写过文章。这里只给一个最简单最酷的办法,看这个视频:

浏览Github源代码 https://www.zhihu.com/video/1239951077770514432

演示的是浏览LInux一个C程序代码。

只需要把github.com换成github.githistory.xyz就可以浏览当前源代码文件以及它的历史变更。


user avatar   mai-wen-xue-67 网友的相关建议: 
      

友情提示:本文文字内容 COPYLEFT, 转载可用“佚名”替换作者名字, 万勿客气。 正文阅读时间预计5 秒。 散文很散,请多包涵。

俺没啥文化, 初中毕业, 大伙都知道。俺不懂代码, 面试除了 HELLO WORLD 就没了。

但是俺有个例子:


那是 1998 年的一个夏天。

俺有个朋友, 他把一堆数以千计的文件从目录 A 里面误粘贴进了 windowssystem32。俺见到他的时候, 他正在一个一个地辨识和删除。 那时候尽管双屏显示已经出来, 但是太奢侈还没有普及。

俺想起了美容院给女士除腿毛和耻毛的办法(WAXING)。

于是俺就说, 您不如这样, 回到目录 A, 重新按一次 CTRL-A 和 CTRL-C, 再转到 SYSTEM32 里面重新粘贴一次。 趁着蓝色没有消失之前, 按 DEL 再按一次确认 ALL。

他沉吟了 10 多秒钟, 突然跳起来拍了俺一掌, 说:

“真有你的, 你真踏嘛地是天才。”

然后他就照做了。

一个星期之后, 同样的场景发生在财务科某美女的办公室, 只不过主角换成了俺朋友。

美女一脸仰慕地看着俺朋友:

“你真厉害, 真是天才!”

俺朋友说, “这是我发明的绝招。”


俺在隔壁喝茶, 差点给吓到吸入茶叶,呛咳不已。



友情提示:

本文文字内容 COPYLEFT, 转载可用“佚名”替换作者名字, 万勿客气。


user avatar    网友的相关建议: 
      

要搞好关系,你舍友要是抄不到代码会很烦躁的,为了寝室关系我们也要给他抄。

要有开源精神,你想想你的编程技术不也是一次次的抄别人的代码到时候成长起来的吗,就算你同学完全不动脑子直接复制黏贴那是他的事,我们不用管。

但是,一定要加上署名和license上传到github上再把叫你同学自己去搜,而不是直接把源码给他。如果老师查水表的话就把你在github上的项目给老师看,证明不是你给同学抄的,保自己全身。


user avatar   haozhi-yang-41 网友的相关建议: 
      

我的话,看人吧。

如果是那种混日子,只为混个学分混个文凭了,抄了也就抄了。他们从你这抄不到,也最终会在其他人那里抄到的,从最终效果来说,你阻止不了他们的,还不如给个顺水人情。

但如果是为了拿高分,拿奖学金、各种荣誉之类的,那就坚决不给。因为他们这种目的再找你抄,肯定是因为他们自己做的不如你做的,你拒绝了,他们未必能找到别人的替代。


user avatar   na-luo-yan-67 网友的相关建议: 
      

前面可以直接跳过,直接从最后三大段看起!


你们老师做的什么事儿啊。。。凭什么不能抄代码?代码界宣传了那么多年的开源开源开源,都喂了狗了吗?以前微软吵吵着要干死开源的,现在不也成了GitHub的大股东了吗?还带着头的搞开源。。。

你同学要问你抄代码,你让他们抄(其实说让他们抄不太合适,应该说让他们参考。。。),首先这肯定不是你的错,因为本着开源的精神,你的做法是值得赞扬的!你同学自己不做作业,被查重查出来了,倒霉也是他自己的事儿,因为这本质上是一个作业,评分标准确实是老师说了算。。。

但是,保险起见,我给你出个招儿吧,绝对不会有问题。

去类似GitHub这种开源网站开个账号,把你的代码传上去,然后挂个GPL3或者MIT什么的license,然后让你同学随便抄好了,查到你头上,就把网站扔给你老师看。

  1. 首先,GitHub上的代码说明这是你写的,你是作者,绝对没问题,如果你同学也有GitHub,也把代码传上去了,就看时间戳呗。。。代码是谁的简单明了。
  2. 其次,你有了license,这就说明,谁抄都和你没关系,校规还能比版权大啊?后者是有法律效力,受法律保护的。。。copyleft保护你的代码随便被人抄的权利神圣不可侵犯,还反了天了不成?

如果这都找你麻烦,那就是你老师的问题了。


有同学问,抄作业虽然不违法,但是违反校规呀?我同意

but!抄代码和抄作业还是有很大区别的!如果按照我上面说的做,那么你就会有三个优势

1. 你是被抄,不是抄别人的!你把自己的代码发在github不违反校规吧?(那些把“作业禁止上传到github”写进校规的大学就别往下读了,老师考试前明确表示禁止把作业上传到github的也别往下读了。。。)

2. 别人抄你github的代码,那肯定是别人的错呀……和你没关系!退一万步说,请拿出证据证明是你主动给别人抄的!这种确凿的证据,除非抄你代码的同学想坑你提前给你录音,否则根本不存在!既然拿不出证据证明我是主动给别人抄的,别人抄我的github我又没办法控制的……就奇了怪了,明明我是被抄袭的对象,为什么惩罚我?

3. 不要问我为什么要发github,发github好处太多了,我必须要快点发,早发就可以宣誓主权这点道理不知道吗?


有的同学问,严格地说,在课程结束之前把代码公开发布就已经违背了学业诚信了

这我完全不同意哦!这种事情不能一概而论的,至少代码不行,因为个人写的代码其实是一种知识产权,并不是普通的考试答案。

我自己本人就很喜欢在GitHub上公开自己的代码,不管是考试的还是paper所属的,从来没听说过有学术诚信问题。谁抄袭了,出了问题自己担着,我肯定是免责的。

核心问题还是在于,你要证明我是故意给别人抄袭。如果是公开自己的作业和笔试考试答案,那肯定逃不了干系的。但是在GitHub上公开代码恰恰不能算做是故意给别人抄袭。因为这和申请专利一样,申请某些专利意味着你要公开你的设计的,这不是给别人抄袭,而是告诉别人,这是我的,不准抄!GitHub是要挂license的,一个道理,告诉别人,这是我的知识产权,你们不可以偷,license确保我可以分享的权利,你们抄了做什么用处和我无关,但是出了问题我是不管的,包括挂科!

所以GitHub的license是一份具有法律效力的免责申明!既然免责,为什么要惩罚我?法盲吗?

另外我要提醒大家!在GitHub上发代码,都会挂一些GPL3、MIT什么的协议,我推荐GPL3,这也是我一直用的,为什么?因为想抄GPL3要满足四个条件

  • License and copyright notice
  • State changes (标明你在哪里更改过)
  • Disclose source (必须要把我的源代码也附上)
  • Same license (你要使用同样的协议)

其中第二点和第三点就是我的免责理由!因为第二点和第三点其实是在说,如果你想抄我的代码完成作业或者考试,就请自觉去找老师自首。。。要么就别抄!

任何人想要抄你GitHub上的代码,为了完成第二点和第三点,他就有义务自己向老师报告说,“我抄了某某某的代码,哪里哪里哪里是我自己改动的”,所以说,说你违背学业诚信是不正确的。

如果你的同学在你的GitHub上搬走了你的代码,并且他想作业或者考试作弊,必然不会做到第二点和第三点,你的同学不单单是作弊,而且是违反了GPL,所以你也是受害者,更不应该受到惩罚。

注意到这背后微妙的逻辑了吗?你在GitHub上公开了代码,挂了license,这些license是要求抄你的人必须自觉的把你的源代码附上,并告知全世界,他是抄你的,所以你也是在帮着老师奋斗在反对考试作弊的第一线知道吗?

So,你把代码发GitHub的行为,意味着你做到了诚信,你也要求借鉴你代码的人也必须诚信!简直不能太正义了。。。

然后谈谈你的同学,想抄你的代码,既不想让老师知道,又不想违反GPL,那只能学你的思路自己从头写呗。。。


还有知友问,这是有道德问题的。。。

这没有道德问题,放心。。。为这种事情较真的老师不单单是法盲,其实连是非都有点分不清的。。。应该去参加一些pedagogical的课好好进修一下。。。

我自己本人也是老师,我不反对学生在GitHub上放代码,相反,我还鼓励!通过这样做,我很容易搞清楚,这代码到底是谁写的。我只想知道真相(谁抄谁的),并不以惩罚学生为乐。。。

但是,谁考试抄袭别人,我就挂谁,就这么简单粗暴。。。其实应该鼓励学生们把代码放在GitHub上公开,比偷偷摸摸的好不知道多少倍,一方面是教会学生如何保护自己的知识产权,另一方面,对老师的查重也带来了极大便利(我挺腹黑的)。

所以从老师的立场来说,这到底是为了什么?是为了杜绝作弊呢?还是为了享受惩罚学生的乐趣?如果是为了杜绝作弊,真的应该鼓励GitHub,让一切真相(代码谁写的)都大白于天下,查重也变得很简单。。。

开源的目的也是这个,让一切放在阳光下,想抄?抄吧,公开的抄比偷偷摸摸的抄更容易监控,你抄了别人的代码,被我发现了,这科挂掉你可别怨我。。。至于把代码发GitHub的那位同学,谢谢你的合作,不然我还真搞不清谁抄谁呢。。。

不要问我,万一被人偷了代码抢先发了github怎么办?。。。这是你自己的问题。。。


我明显本意是在反作弊,你们要看成是鼓励作弊我也没办法……

上传github并使用license,本质上就是在保护自己的代码。特别是GPL的第二点和第三点,这就是让抄袭的人自己去自首的意思不是吗?

另外我不支持和老师对杠的做法,只是指出这样做是正确的。至于有些老师会因此给你零分,只能自求多福,人无完人,老师也一样……(有些老师就是不明白GPL的第二点和第三点就是让抄袭的人自己去自首的意思,也不明白鼓励大家使用github其实是对反作弊有利,既然你都上课教人写代码了,自己开个github账号和学生互加好友就那么难吗?还可以长点粉丝啥的。。。一切都很公开透明,查重也变得很容易。。。)


有知友提出这样的观点

前提是你有时间讲道理,并且愿意承担讲道理不成功的风险

我觉得说有道理,这是非常现实的考量,但从另一个角度可以看出悲观情绪。老师都不愿意被学生们当“傻瓜”,可是很遗憾,大多数老师都被学生当成了很容易就是非不分的“傻瓜”不是吗?


我发现很多人都没有仔细阅读这个答案就已经开喷了……

我不支持跟老师对杠!

我不支持跟老师对杠!

我不支持跟老师对杠!

重要的事情说三遍……吃不准,你可以课上问老师啊~问个老师成本有那么高吗?

另外,我开了两个专栏,发了一些干货满满的技术型文章,关注度居然没有这个答案高……个人感觉挺讽刺的……


可以直接从这里开始阅读

我发现很多人就是看不懂我到底在写什么。。。我这里总结一下我到底是在说什么。

我的建议适合这样的你

  1. 你不想给同学抄袭
  2. 又真心想帮助同学理清思路,能够自己写代码
  3. 还不想浪费时间亲自教(自己不好好学习,凭什么让我来给你上课啊?对象除外。。。)

你的情况符合以上三点,并且做到以下两点:

  1. 确认不违反任何校规和课程规定。
  2. 并且在和老师沟通过之后(把上述三点也告诉老师,如果老师不明白GPL,那就简明扼要介绍一下,老师不愿意接受新鲜事物就算了。。。)。

那么,上传github挂GPL是最安全最正确的做法!

为什么?你的同学面临以下两个选择

  1. 你的同学如果想抄,就必须尊重GPL,也就是向老师自首
  2. 如果不想这么做,那就借鉴你的代码,然后自己写。。。

两者必居其一!如果违反GPL抄袭,那是明显违反你的主观意愿的!说白了,挂GPL就是给人参考但委婉的不让别人抄!

所以我就不明白了,一个明理的老师为什么要惩罚你这样的好同学。。。这叫什么知道吗?这叫

"You are playing the game! Nothing goes wrong!"

PS、还有人说我一开始就嚷嚷着要抄要抄的。。。喂喂?开门见山也可以是假山好吗?请读下去。。。


关于学生作业的版权归属问题,因为这和雇佣关系有巨大区别,所以学生的代码的版权不应该属于学校,除非例外情况。其实在stackoverflow上早有这样的讨论,请阅读

第一高赞回答的第一句就足够说明问题了:

"If nothing is stated by the school that you signed and agreed to...copyright defaults to you, the author."

所以沟通很重要。我知道有些学校会事先让你签合同的,真的动笔签哦!。。。这种就别想了。但是这样恰恰说明,默认版权是你的,不然干嘛脱裤子放屁呢?

另外有些学校会控告你misconduct,因为你发布的作业让低年级学生作弊。。。这种情况并不是每个学校都普遍存在的。这些学校会控告,究其根本原因,他们不但允许而且支持老师们可以重复利用课件特别是试题和考题,哪怕换个老师也用一样的。。。

我表示理解!但是我们这儿是不行的,课件可以重复,但是考试绝对不可以重复,因为想想就知道,你以为GitHub是唯一的渠道嘛?私底下就不能问啊?所以我们大学是不允许老师考题重复的!

但。。。我只想说,事先沟通很重要!

既然版权默认是你的,你有选择GPL的自由。大家要讲道理嘛。。。

我还要声明一下,我也没有鼓励大家去和学校怼。。。但是有一点是肯定的(也没什么好藏着掖着的),大多数学校的学生都是弱势群体(北欧大学除外),也就是说,被不公正对待且放弃了上诉权。。。而看多了这些的人觉得这世界就应该这样,所以跑过来笑我naive。。。

实际上,绝大多数事情,你是可以做到有理有利有节的,并且在动干戈之前就可以化玉帛的(事先沟通好,事后就不用互怼了不是吗?而缺乏沟通到最后搞不定的,纯属一手好牌自己打坏了。。。)。


最后,我想留一个问题给大家思考,习题和考试让学生写代码,特别是take home这种,意义到底在哪里?可以互相参考吗?我们是真的想把平时不好好学习的学生们拍死在考试的路上吗?还是希望他们每一个人都能最终能学到东西并写出自己的代码呢?

教育的目的究竟是什么?教育的目的是育人,不是毁人。。。这就是我所说的政治正确,然鹅还是有人嗤之以鼻!

我相信,答案一定是,可以互相帮助互相参考,毕竟老师都让你带回家做了,可以谷歌可以百度不是吗?看谁不是看呢?但是请write your own code from scratch!

所以我个人倾向于鼓励学生互相帮助,因为GitHub可以挂GPL这种优秀license,所以非常适合让学生互相之间公开代码互相借鉴,并保护自己的代码,但是必须要严惩抄袭的学生!

另外,作为一个多年写代码的人,我可以告诉大家,不论你是菜鸟还是代码高手,当你写代码没思路的时候,最好的办法就是去读别人的代码并从中借鉴。。。只要你还在写代码,你一定会一直不停的阅读别人的代码。。。

"Shut up and show me your code!"

开源的出现不是没有原因的。

再这么添加下去,文章要越来越长了。。。我个人不喜欢修改已经写过的东西(除非是错别字这种),会造成上下文缺失。希望这是最后一次添加。。。


user avatar   shuo-shu-44-10 网友的相关建议: 
      

我出国留学,发现只有中国人这个团体,有抄作业的现象。别的国家的同学来问作业,是口头问。我告诉他,老师讲的二段模型没用,哪本参考书上有三段模型,可以解决你碰到的问题。人家就谢谢我,自己去做了。

但是碰到中国同学:喂,你做好的作业借给我看一下,还有,这是我的U盘,你作业里用的模型也给我copy一下。(那是我七天,每天16小时的劳动成果,别不相信,我只睡5个小时,还可能因为跑不同校区的图书馆,把饭也免了。)

如果我不给呢?就会到中国人群体里去制造舆论,试图孤立我:“哎吆,这个人真小气,作业都不肯借,他最好别人成绩都比他差,别人都fail,中国人就他一个毕业。他大概不想理中国人,只想混到白人圈子里......”

外国人不是没有剽窃,但中国人这种堂而皇之,不以为耻,在各国留学生中也是叹为观止。


user avatar   doraemon_2112 网友的相关建议: 
      

当然可以给,但是建议你在代码里做点手脚。

最初级的方法是在代码头部加入版权声明的注释,像下面这样子(以 C++ 程序为例)。但这种方法只能针对看都不看,直接原封不动地复制粘贴交作业的室友。

       /*  * 作业:***  * 作者:哆啦A梦  * 时间:2019-6-17 11:30  * 版权所有,盗版必究  */  #include <iostream>  #define ___AUTHOR___IS___DORAEMON___ // 这里也是在说明作者是谁  // 再下面写程序代码就好了      

对于那种稍微警觉一点的,会复查源代码的室友,会把以上注释去掉,甚至换成自己的注释,到头你反而解释不清楚了。这时候就需要将版权声明放在稍微隐蔽一点的地方。比如,使用 ASCII 码来代替纯粹的英文字符,将版权声明隐蔽到运行结果里。

       #include <iostream>  int main(void) {     // 下面这段字符串的值是 FROM: DORAEMON,就是各个字母的 ASCII 码。     // 这句注释只是我来向大家解释这段代码是什么意思的,实际操作时千万别写     char a[] = {70, 82, 79, 77, 58, 32, 68, 79, 82, 65, 69, 77, 79, 78, 0};     std::cout << a << std::endl; // 打印版权信息      // 在下面写程序代码 } // main()      

这样的话,室友即使复查你的代码,肯定也看不懂那串数字是什么意思(这都看懂了那还会找你抄代码吗!),越是看不懂的就越不敢乱改,等把作业交上去以后,老师一运行,自然知晓真相。

但是这样还不保险,万一室友运行了一遍程序,发现了你隐藏在代码里的版权信息怎么办?没关系,我们可以用条件触发器,超过指定的时间才显示版权信息!

       #include <iostream> #include <ctime>  int main(void) {     char a[] = {70, 82, 79, 77, 58, 32, 68, 79, 82, 65, 69, 77, 79, 78, 0};     // 1560816000 是北京时间 2019 年 6 月 18 日 8 时的 Unix 时间戳,以下代码的作用是     // 仅当系统时间在 2019 年 6 月 18 日 8 时之后才打印版权信息。     if (std::time(0) > 1560816000) {         std::cout << a << std::endl;     } // if (std::time(0) > 1560816000)      // 在下面写程序代码 } // main()      

如此,就既不丢人情,也不怕被卷入抄袭风波了。


更新:补充 cout 和 endl 前漏写的 std 命名空间。


user avatar   w3cschool-54 网友的相关建议: 
      

女王:求求题主放过我,我可不敢有什么政绩。。。


user avatar   fu-yu-cheng-li-xiao-lao-er 网友的相关建议: 
      

从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用。

因为是在工作中培训,就必然有两个约束:实用、时间紧,因此就不能像大学那样,把所有的知识点都面面俱到的讲到。而只能挑基础的,实用的,难理解的讲。至于其他边边角角的知识,就一笔带过。一则没有时间,二则不常用,再则既使讲了,学生印象也不深刻。总之一句话:“好钢用在刀刃上”。

下面,就根据我的实践,具体谈下学习过程:

1.基础知识

我学习java的时候,先是通读了《Java编程思想》,然后是《Java核心技术》。当时这两本书还不像现在这么厚,而刚才我把案头的《Java核心技术》第9版翻了翻,上下两册已经1700多页了,可想而知,如果要把它通读一遍,且不说把所有的代码都调通,就是当小说读,估计也需要些时间。

但我现在教学依然首推《Java核心技术》,主要是体系完整,实例多,可操作性强。但对初学者,我一般是只讲前6章,也就是下面的内容:

  1. Java程序设计概述
  2. Java程序设计环境
  3. Java的基础程序设计结构
  4. 对象与类
  5. 继承
  6. 接口与内部类

就《Java核心技术》第9版来说,也就是到250页为止,加把劲,1个月拿下完全没问题。

因为你是自学,所以建议你一定要把其中的代码都调通,课后的作业尽量去做。除此之外,还有两点特别重要:

#.学习笔记

因为你是自学,不像在企业中学了就能够实践,印象自然特别深刻。而自学因为没有实践的及时反馈,所以记笔记就显得特别重要。因为记笔记就像写作一样,是整理思路的绝佳方法。同时学习笔记也是你以后开发,面试的绝好资料。

学习编程,人跟人是不一样的,别人觉得难理解的东西,对你却不一定;而你觉得难理解的东西,别人可能又会觉得特简单。而学习笔记就是自己专有的“难点手册”,有点像高考时的“错题本”,以后无论是在面试前,还是在日常工作中,随时都可以翻出来看看,自是获益匪浅。

#.分门别类保存demo

学习笔记是很好的文字资料,但编程界有句话说的特别好,所谓“no code, no text”,意思就是说:千言万语都没有一段代码来的实在。

以我的经验,在你在学习的过程中,就某个知识点,无论当时理解的多透彻,调试的多棒,只要时间一长,等到了实用的时候,肯定会碰到各种各样的问题,一些看似简单的东西,此时死活就是调不通,正所谓人到事中迷。这个时候,如果你手头恰有运行良好的demo,打开参考一下(甚至直接拷贝过来),问题自然迎刃而解。而且因为这些demo都是你亲手调试出来,印象自然特别深刻,一碰到问题,在脑子中自会立刻涌现。

所以说,在学习的过程,一定要善待你调通的demo,千万不要用完了就扔,等后来碰到困难,想要用时却找不到,追愧莫及。正确的做法就是把所有调通的demo,分门别类的保存起来,到时候查起来自是得心应手。

人都说“书到用时方恨少”,其实代码也是这样,所谓“demo用时方恨少”。

2.Spring

目前在Java EE开发中,Spring已经成为和Java核心库一样的基础设施,所以说如果想成为一个合格的Java程序员,Spring肯定绕不开。另一方面,如果掌握了Spring体系,Java基本上就算入门了,就有能力进行一些实用级的开发了。

但Spring本身也是日渐复杂,衍生项目越来越多,但最最核心的概念依旧是IOC和AOP,掌握了这两个概念,再把Spring MVC学会,再学习其他的衍生项目就会平滑很多。

同时,因为Spring本身就应用了许多优雅的设计理念,所以学习Spring的过程,也是加强Java基础知识学习的过程。因此等你掌握了Spring,原来很多你理解不透彻的Java特性,此时就会恍然大悟,包括接口、抽象类等。

我学习Spring,读的第一本书是《Spring实战》,坦率的说,书很一般,但市面上比它好的书,我却没有遇到过。还有一本《Spring源码深度解析》也不错,对Spring的设计理念讲的尤其透彻,虽然整本书读起来有些艰涩,但前几章却生动有趣,也是整本书的精华。所以建议你在学习Spring之前,先把该书的前几章通读一下,然后再回过头来学习《Spring实战》会顺利很多。

以我经验,要学透Spring,终极的方法还是阅读源码(我当时就是这么干的),待把Spring的核心源码通读了,人就真的自由了(所谓无真相不自由),不仅是对Spring,而是对整个Java体系。以后再遇到其他框架,大概一眼就能看出其中的脉络,所谓到了“看山不是山”的境界。但这都是后话,可以作为以后你努力的方向。

和学习Java基础知识一样,学习Spring也一定要记笔记,一定要分门别类保存demo。

老实说,Spring对初学者不算简单,因此最好能有个好老师带一下,不用太长时间,2个课时即可,然后就是在你遇到大的困难时,能及时的点拨下。

以我的经验,要初步掌握Spring,大概需要1到1个半月的时间。

3.其他知识

Spring是Java编程的基础设施,但真要进入到实际项目的开发,还有些东西绕不过,包括 MySql,Mybatis,Redis,Servlet等,但如果你经过Spring的洗礼,这些东西相对就简单多了,以我的经验,1个月的时间足够了。

4.实践

学习Java,光学不练肯定是不行的。但因为是自学,所以就没有实际的产品让你练手,但也没有关系,谁大学还没有做过毕业设计呢?以我的经验,大家最爱的“学生管理系统”依旧是个很好的练手系统。

别看“学生管理系统”逻辑简单,但麻雀虽小五脏俱全,其中数据库设计、Mybatis,Spring、SpringMVC,Servlet、Tomcat一个都不缺,绝对的练手好伴侣。

还有,虽然你的学习重点在Java,因为要做一个完整的demo,前端的配合肯定少不了。因此就免少不了要学一些简单的JS、HTML知识,但因为前端本就是个很大的topic,所以一定要控制好边界,千万不要顾此失彼。就“学生管理系统”来说,在前端上,只要实现一个包含table、textbox、button,能发送REST请求到server,能实现学生的“增删改查”的简单页面即可。

作为一个练手项目,目标就是把Java的主要技能点串起来,所以自不求尽善尽美(也不可能),所以1个月时间足够了。

.最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

在日常的教学中,我常把下面这句话送给学员们,今天也把它送给你:

道路是曲折的,前途是光明的!”

祝你好运!

--- 上面是原答案 ---

我把上面的内容作了下整理,画了学习路线图,内容也有些升级,供参考。

因为有朋友,通过留言或私信方式问我:Java中有哪些知识已经过时,不需要再学习了

回答的多了,就感觉这是一个普遍的问题,因此统一整理了下,作为这篇文章的补充,希望对你有用。




     

相关话题

  编写基于机器学习的程序,有哪些编写和调试的经验和窍门? 
  如何评价 GitLab 疑似拒绝为中国/俄罗斯居住的程序员提供 offer? 
  无意弄坏了室友(2016年购买,2012年上市)的笔记本电脑( s230u),该怎么赔偿呢? 
  为什么程序员要使用三元运算符而不是显式写出 if 语句? 
  你什么时候开始觉得你的代码能力明显上升了一个档次? 
  windows10 界面是用什么语言编写的?.NET在最新的操作系统中有哪些应用 
  「href」、「xml」、「&」你们都是怎么读的? 
  计算机领域有哪些经典的典故或笑话? 
  男朋友的大脑是单线程的怎么办? 
  设计模式有何不妥,所谓的荼毒体现在哪? 

前一个讨论
为什么 USB 接口设计之初选择了不能正反插的方案?
下一个讨论
内存(DRAM)的连续读写速度和随机读写速度是一样的吗?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利