java 突击队注意事项:在路上
情绪:
- 灵活:让标准成为价格值。为了给你一个想法和标准,你可以有一个不同的使用。不是死扣定理。决这个问题。
- 看书:分两类,一类依据知识点进行罗列。并且结构清晰,能够看完一章有选择进行总结(不是笔记,总结是带有自己理解的),一类是零乱可是重要。须要边看边划出重要点(重要点是你还未遇到的坑或者知识点),然后看完一章进行总结。
- 千万不要坚定地觉得什么方式快。什么方式慢,一定要讲究场景。
(存在即合理)
- 一切在于场景与需求,十分须要。但也能够在某些情况下放弃。
(性能,优化)
- 变化都是使用简单的基础知识加以变通的结果,这样的变化是十分多的(万变不离其宗)
- 算法<-->生活,一一相应,如查找和排序想想学校里面排队,找人是怎么做的,把能想到的不同的手段联系到相应的方法(全部的算法来自于生活,并且没有生活那么复杂,即使是多线程技术也能在生活中找到活生生的样例)
- 算法:不管多么复杂,总能在实际生活中找到逻辑背景。
在这样的前提下,仅仅要深度挖掘业务背景,就能够在基础算法之上进行灵活扩展。
- 思维横向扩展。思维发散扩展。
- 不管去做基础程序还是去做优化。都须要深知它的细节,才干做到心中有数。
- 反复制造:在了解了底层后我们须要提升知识面。知道哪些是别人提供的,哪些是须要我们自己写的。(java第三方包及工具类:我们应当知道有很多别人写的工具包能够直接拿来使用。以及怎样寻找这些工具包,基础知识能够帮助我们高速学习新的工具包,以及掌握它的本质)
- 源代码:主要目的是看懂意思和知道它的坑。
- java:希望将一些复杂的逻辑细节封装在工具中。能让代码尽量干净,整洁,easy维护。
代码不干净在很多地方出现大量不干净的代码须要改动则要到很多地方改动,非常多时候我们不知道去哪里改动。这些代码会让我们不停在技术和业务之间切换。没法专心做好业务细节,更没法深度挖掘业务。技术本身是在业务驱动下才干发挥作用的。而人在业务驱动下去学习技术能得到最佳实践。
- 第三方包:大公司使用的工具包正确性和性能是经过非常多公司验证的,假设有问题大家都会知道。注重功底的基础上也须要大量的学习,铺开知识面。才干有选择。但:深知内在细节是我们量化选择的条件。
- 冗余:不是全部的工具包都能全然满足需求。这个工具包满足一部分需求,那个工具包满足一部分需求。而将这些工具包组合起来比自己写一个还蛮烦,还会有一大堆冗余,此时能够考虑扩展了。
- 个性化问题:每一个场景都会有一些变化,开源的工具包是提供一些通用的处理,同一时候提供一种Java封装思想。很多代码也值得我们去參考。因此当遇上个性化问题时,并不是没提供就不写了,须要深知所设计领域的业务和个性化,,这样才干对业务做出一个非常爽的架构体系。
- 算法的基础是建立在数字的基础之上,仅仅有数字才干真正完毕计算和对照操作(如对象的hashCode()方法)。
- 事实上数据库也离不开这些原理,大多数数据库的索引都会用换汤不换药的B+树(当然也有使用Hash算法),此思想是平衡二叉树的一种扩展。sql—》查找和排序算法
- 操作符:不同的运算有多种实现方式,越接近底层越快(| & ^)
- 为提升总体工作效率和节约资源,能提前做的事情就提前做(编译时优化)
- 懂得站在他人地角度和场景看待事物的不同側面,加以推导。结合别人的意见和建议,就有机会知道真相。(假设我是语言的作者,我会怎样设计?再结合提供验证。本质。文档,共同引导我们知道真相)
- 编译阶段能确定的内容仅仅能来自于常量池,new出来的对象是执行时决定的。
(intern()执行步骤流程,和equals()效率对照,intern()将对象保存在常量池中。使得==更高速,而不用equal()比較节约时间,原来new出来的对象和比較的对象不是同一个。所以不能用==比較,须要使用intern()将对象存入常量池,比較就能够用==。类比Integer int a = 10; Integer int b =10; a = b;a和b同为对象,但保存在常量池中就能够用==比較内存地址比equals()更快)
- String扩容的条件。与StringBuilder的差别,+操作符的优化。
- 知道什么时候会自己主动拆装箱。它简化了代码,可是并非让我们一无所知。(通过源代码学习)(怎样调节拆装箱參数。怎样避免自己写的代码频繁拆装箱)
- 古人云:心有灵犀一点通,深深地了解技术以及它的内在。
学习基础的武功,再学习不论什么武学都非常快,内在修为将会决定你在技术这条道路上能走多远。
- 知其然并知其所以然:由知识引导思维,由思维引导答案。由结果印证理论,不断迭代的过程。
在这个过程中对问题的认识会越来越清晰,自然在见解上越来越有道理。同一时候也会对自己所在的领域充满信心。
- 非常多技术源自生活。
- Bug:正所谓我们不怕犯错误,怕的是不知道什么是错,更怕的是我们一直坚信正确的事居然是错的。
- 測试:測试场景是不能作为真理来指导开发的。最多仅仅能指导相同的场景下的开发(測试能够帮助我们去理解本质。以及知道本质后它是一个印证的过程)。
- 本质:知道了内在,知道了常规算法,知道了生活中相应的方法,我们发现它并非那么难,关键是你是否愿意去看它的本质。
- 过于看中技术本身。过分仰望技术本身,学海无涯,你须要放下才干找到新的方向。
- 静心:功底并非天高。不论什么人仅仅要静心都能行。
- 总结:学习后一定要落实于根本,回想与总结,什么都想要去学习,结果学了就丢了,没有自己知识的凝固。没有自己的总结和笔记。(总结应该包括自己的理解和感受,应当能阐述学习和理解过程中的痛苦)
- 不是每天都要去总结(浪费时间,要不就是小总结)。假设非常忙不是必需(假设看到一篇比較好的文章。能够先初步看看内容,把它记录下来,写到总结中表示想要去学习的内容。等闲暇之余总结也许更好)
- 总结技术:技术领域你能够总结思路,总结所学所用,总结遇到的问题。总结为什么。总结解决这个问题的手段和方法,分析问题和定位问题的思路,总结在解决这个问题时所用的知识,总结技术点上是否还有相关的方案。以及对照相关知识的优缺点。
- 总结业务:业务上总结自己近期近期做过什么,那些是大事还是小事,自己所做的事情和几个月前比提高没有。效率上提升没有,时间安排怎样。假设加班太多能否不加班,自己的工作效率能否够进一步提升,以及怎样提升。通过技术完毕某些自己主动化还是基于时间管理来更合理地安排自己。未来几个月准备或希望去做什么样的事情,是否有能力去參与更重要的职责。
- 工作与学习:工作本身就是一种学习,更偏重于实践,基于工作学习一个新知识更快一些,大多在使用层面,当遇上一些稀奇古怪的问题,就要去看看内在的原理,此时去看看源代码。
这样碎片化的学习方式事实上也是积土成山的过程,达到一定程度自然是量变引起质变。此时去翻看牛人秘籍知识知识梳理的过程。
- 立足当下:须要立足于当下业务,尽自己所能去挖掘。通过业务细化驱动技术的发展,尽我们所能广泛联系知识。整个学习是一个迭代的过程,功底是逐步提升的。
- 自信:学会相信自己,有信心去面对困难。(拥有面对逆境的心态和战胜困难的决心)
- 面对别人提出质疑:第一反应是看你的内心世界是否足够强大。
也许在这个时候我们能够看看别人是怎样修身养性的。别人能做到,我们相同能够做到。
- 问题:代码有问题,我们就看原因,不论是不是自己的问题都要告诉真正的原因。
有问题没关系。我们不怕犯错误。而是怕错了不改,反重复复犯相同的错误。可能还是相同低级的错误。
假设反重复复有人提出相同的问题。并且绝大多数不是自己的问题,能够以文档的形式呈现出来。代码不是我们写的,使用者通常不知道全部的细节。
- 乱搞:结果就是东西越多,问题就越多,做一件事情来解决这个问题,可是带来了很多其它的问题。
- 冷静面对事情的真相:客观面对我们所面临的事情。加上业务本身的熟悉程度,技术功底的配合,冷静思考,量化的推断。全局性影响的分析,逐步突破层层技术和业务难关,能够非常酷解决绝大部分问题。
- 经验:仅仅要是代码。肯定就会存在Bug。仅仅有看到这类问题的本质,才干在遇到类似问题时去定位推断,而不是直接使用前人总结出来的经验解决这个问题。随着技术的发展。经验也会变得不靠谱。(经验能够用来借鉴和參考,但经验不能用来当饭吃。同一时候别人告诉你的是他的经验,也相同是一种參考和借鉴,我们要学会去看问题本质的方法和习惯)
- 框架:前一件东西还没掌握。新的又来了:须要方法,须要功底,懂得它的根本和发展的方向和模式,基本就知道它要做什么了。也基本知道会怎么做了,自己也能够实现。知识没有必要而已。开源软件常见的參数不会太多,当你知道它的根本:通过命令和文档查询时非常高速的,学习的代价不应该太大。
- 坑:我们应当”站在别人的肩膀上看问题。不仅仅是要沿用前人写好的东西。更须要看到他们所遇到的那些坑“。新一代的程序猿不必都经历上一代程序猿所经历的相同的坑。那样仅仅是延续,而没有不论什么发展。新一代程序猿即使要经历坑,也是经历一些更新的坑,去挖掘更新的东西,而不是走老路。
- 多看:
- 看什么?看别人怎样写代码。怎样分析和解决这个问题。用到了什么技术。怎样面对工作的压力,怎样为人处事,怎样协调资源等。
- 怎么看?周围都是你的同事,同事中肯定有高手。
网上有你的朋友,朋友中肯定有佼佼者。你会用到很多开源框架。当中肯定包括很多经典的代码和思想。
- 多练:
- 多练,应该练什么?
- 自己什么都想练什么都想学习,不管别人写出多么优秀的程序。干出多么大的事情并不是一朝一夕之事(立足当下)]
- 立足当下:找到自己的兴趣。而非别人的兴趣;找到自己的业务挖掘点,而非别人的业务(不是说不去关注别人所做的业务,而是一种经验的交流。不要老认为别人碗里的饭要香一些)
- 兴趣:建立在你对解决的问题的价值是否理解上。兴趣能够给你带来不错的收入。兴趣是你能够处理一些周围人处理不了的问题,星期是你擅长的点能否够得到发挥等。事实上兴趣是自己挖掘的。
- 刚開始学习的人一定要多练习。即使是练习代码,也是非常好的,达到一定程度再思考都能够。即使是水平非常高的人也会多练习,仅仅是练习的代码不一样罢了。练习能够让我们对问题有很多其它的感性认识,很多问题在练习后自然会逐步清晰起来。
在练习的基础上。才会进一步有理性认识
- 多思考。多练习:
- 经多多练习,非常多人走偏,进入技术控的死角,由于对技术的控制会成为一种乐趣。这个阶段我们要多思考。
- 这样的技术有什么缺点?我们用它能解决什么核心问题?相关的技术有什么?它们有什么差别?
- 串联:当我们深入地去学习一样东西地时候。会自然地须要学习另外一样东西。这就是知识之间的串联,碎片化的学习并不是全然碎片化,随着深入的学习,知识自然会串联在一起。
- 深入:在练习,思考的基础上要怎样深入?各类网络博客,官方文档,源码,书籍都是一个积累的关键因素,当资料非常多的时候须要挑选关键点。
- 关键点:我们关注的点就是关注点。事实上关键点就是你最想知道的一个点,这样的关键点对不同层次的人会有不同的划分概念,它能够新到一条代码怎么写,一个二进制位在程序内部怎样处理,也能够粗到整体架构是怎么回事,这全然和你的工作相关,同事也与你对工作的理解程度相关。这是一个积累的过程。知识和业务体系越通。想要找到的关键点就越easy,所以学习。思考。时间是不断迭代的。
- 思维:思维上我们要去放纵扩展。体系化扩展(但不要钻牛角尖),在扩展的过程中会迫使自己去学习相关的很多知识,并且这些知识会刻苦铭心,随着知识不断地串连化,也会逐步形成体系。
假设有一天你发自你内心地觉得“一切源于思想和生活方法”。这时你再看高手们地书,也许就是一种知识梳理地过程和经验的交流。
- 多总结
- 一个人不论学习多么努力,多么会思考,但假设他的知识没有沉淀,终究会丢掉一些东西。
- 何时沉淀?沉淀什么?
这是我们不断摸索的东西,没有定论,假设你觉得 它对你未来的发展是有帮助的,或者说你觉得它能够帮助你提高水平或扩展知识面,那么你就将它沉淀下来。 每天我们有了一个小沉淀,每周就会有点小总结,每月就有一些感悟,每季度就会发现几个月前的自己是那么的“幼稚”,那么自己就真的成长了。
经过 1 年、2 年的坚持,你 可能会比别人知道得很多其它,也深入了非常多。
- 也许有人说不管你怎么沉淀都没实用,始终在原地踏步,几年后还是一个样。那么你 就要想想:在总结的过程中是否考虑过方法有没有问题?也许自己始终在沉淀那些非常easy、 非常容易的东西,不过为了“记录”而缺乏自己的见解;也许在总结的过程中没有去考虑 怎样做得比曾经更好。当然怎样总结是个人的自由,每一种总结都有它的价值所在,即使是“面”上的扩展总结,只要是没有曲解主要的道理,仍能够“引导他人”
成长。 - 什么时候须要去沉淀知识呢?
当你攻克了问题时,当你学习到问题的本质时,当你看 到了曾经看不到的东西时,当你认为值得去总结时,长期坚持总结是厚积薄发的基础,这 是亘古不变的道理。从量变到质变取决于在总结的过程中你是否能从某个点去突破和深入, 或许就差那么一点点儿,当发生质变后在对待问题的态度和方法上会有一个更加广阔的空间,这就是我们通常所说的“茅塞顿开”。
- 什么沉淀?我们不仅要总结知识,同时总结方法、手段、心理,以及侧的深度可 采矿业务。
java 突击队注意事项:在路上的更多相关文章
- Java 异常注意事项
异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常, 那么子类的方法只能抛出父类的异常或者该异常的子类. 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集. ...
- widows和Linux java加密注意事项
/** * @Title: EncrypAES.java * @Package com.weidinghuo.payment.util * @Description: TODO(用一句话描述该文件做什 ...
- Java Calendar 注意事项
Java JDK 提供了java.util.Calendar来处理日期和时间.Calendar是一个抽象类,是所有日历的模板,因此我们可以继承Calendar来实现其他的历法(比如阴历). Java提 ...
- Java学习注意事项
一个Java文件中可以包含多个类. 如果有public类,则文件名必须和public类一样. 例如: class Pie { void f(){ System.out.println("Pi ...
- WebView注入Java对象注意事项
在android4.2以前,注入步骤如下: webview.getSetting().setJavaScriptEnable(true); class JsObject { public String ...
- 安装JAVA JDK注意事项
1 WIN8系统 安装JDK 我安装的是1.6版本, 64位的 : 2 安装好后 cmd 输入 java -version 正常 java 命令 正常 javac 命令不正常 提 ...
- Java 相关注意事项小结
程序是一系列有序指令的集合: Java主要用于开发两类程序: 1)桌面应用程序2)Internet应用程序1,Java程序:三步走,编写--编译--运行:2,使用记事本开发:1)以.java为后缀名保 ...
- JAVA 新手注意事项
1. System.exit(0); 强行关闭虚拟机 2. System.out.println("*") 输出一个*并换行 (没后面的ln表 ...
- 转义字符\(在hive+shell以及java中注意事项):正则表达式的转义字符为双斜线,split函数解析也是正则
转义字符 将后边字符转义,使特殊功能字符作为普通字符处理,或者普通字符转化为特殊功能字符. 各个语言中都用应用,如java.python.sql.hive.shell等等. 如sql中 "\ ...
随机推荐
- jspsmart(支持中文下载)
将excel文件从jsp页面导入到数据库,先将文件上传到server,然后读取,最后删除掉上传//要加encType="multipart/form-data"<form a ...
- 【安卓笔记】高速的发展设置界面-----PreferenceActivity
通常app都会有一个设置界面,例如以下: 通常做法是自定义布局,然后在代码里面加入响应函数,并将结果保存到Sharedpreferences中. android给我们提供了PreferenceActi ...
- Razor button
比起Web Form開發,在後端(.cs)寫法上大同小異,可選擇C#或VB.NET來撰寫:而在前端(.cshtml..vbhtml)則有比較大的差別,自 MVC3版本後,就以Razor為前端檢視引擎, ...
- 【转】Qt事件循环与线程 二
转自:http://blog.csdn.net/changsheng230/article/details/6153449 续上文:http://blog.csdn.net/changsheng230 ...
- PLSQL Developer 9.如何设置查询返回所有纪录(转)
默认PLSQL Developer查询出来的记录只能是满屏那么多行,一般也就是二三十行,比较不方便. 根据以下设置,可以将其结果都返回. 方法:Tools>Preferences>Wind ...
- unity3d插入Daikon Forge GUI 中国课程-7-高级控制slider采用
(游戏开始的牛市)大家好我是孙广东.官方网站提供的是专业的视频教程http://www.daikonforge.com/dfgui/tutorials/,只是是在youtube上,要观看是须要FQ的. ...
- FTP文件操作之下载文件
前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了.所以今天就跟大家一起学习学习使用ftp下载文件. 知道了怎么上传,那么下载也就变得很简单了,上传是把文 ...
- opengl微发展理解
1.什么是OpenGL? 一种程序,可以与界面和图形硬件交互作用.一个开放的标准 2.软件管道 请看上图 - Apllication层 表示你的程序(调用渲染命令.如opengl API) - ...
- Android开发技巧——PagerAdapter再简单的包
再次内容View的ViewPager该适配器PagerAdapter简包,支持List数据与SparseArray数据.随着更新的浏览功能. 首先,首先贴上顶部抽象类代码: /* * Date: 14 ...
- 【嵌入式开发】写入开发板Linux系统-模型S3C6410
笔者 : 万境绝尘 转载请著名出处 最终拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧 ...