文章转自:http://jinnianshilongnian.iteye.com/blog/1709268(转载)
我的学习方法
目的
目的就是这个技术完成什么功能,解决哪类问题。拿JSON举个例子:
http://www.json.org/ 写道
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
即
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
从定义我们可以总结出几个关键点:
轻量级
数据交换格式
易于编写和阅读
基于JavaScript的一个子集
纯文本独立于语言和平台
重点是它以纯文本存储,可以独立于任何语言和平台,且主要用于数据交换。
再比如Spring:
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
Spring 中包含的关键特性:
……请前往
http://www.oschina.net/p/spring/浏览
Spring Framework官网 http://www.springsource.org/spring-framework
从定义我们可以总结几个关键点:
Java/JavaEE一站式解决方案(即不管是开发普通Java应用还是JavaEE企业应用都能提供解决方案)
框架基于 Expert One-on-One Java EE Design and Development(告诉我们需要去读这本书 这本书介绍了Spring设计思想)
IoC容器(此时我们需要问什么是IoC容器)
数据库事务的一般化抽象层(此时需要问自己怎么个一般化抽象)
JDBC 抽象层(怎么个抽象法,比普通JDBC调用有哪些好处)
等等……
再比如Jsoup:
http://jsoup.org/ 写道
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
从定义上可以总结几个关键点:
Java版的HTML解析器
提供了类似于DOM、CSS及类似于Jquery的操作方法来取出和操作数据(重点是DOM、CSS、Jquery我们都有所了解,再学这个应该不难)
从一个技术的定义上,找关键词,我们能总结出它的核心目的。而且能提出一系列问题,有了这一系列问题我们能知道我们接下来要学习什么,只有了解了这些功能才能真正理解设计的目的和是什么。
适用场景
就是我们这个技术的适应的环境,可以在哪些场景中使用。
比如JSON适用于:
数据交换,尤其跨平台的数据交换
表示JavaScript对象
比如Spring:
在Java/JavaEE开发的整个过程中都有帮助。此时需要问有哪些帮助?为什么?
比如Jsoup:
只要我们想在Java里解析HTML就可以考虑使用它。
如何使用
到这一步其实是最简单的,可以按照如下步骤学习:
1、根据官网的hello world进行简单入门,了解最基本的使用,到此我们入门了;
2、如果官网提供了单元测试用例,最好的学习方式就是跟着单元测试挨着试,到此该技术的所有特性就有所了解了;
3、写自己的功能,根据之前学的知识开始开发自己需要的功能;
4、如果需要经常使用/涉及项目核心技术,一定要读读官方文档,有时间读读API做到心中有数。
此处就不给例子了。
类似的技术
每当我们学习完一个新技术的时候,都要留一手,防止一个技术有bug/性能问题造成后续无替代方案。
比如Jsoup类似的技术有:
HTMLParser
NekoHTML
这两个解析工具功能十分强大,但是使用上没有Jsoup简单。
比如我要实现论坛内容过滤功能:
过滤掉所有的事件注册,如<a onclick="……"> 需要删除onclick
删除form相关的表单元素,防止恶意用户注入表单窃取用户数据
这个功能我使用Jsoup实现的。
比如我要抓取iteye的论坛内容(主题、内容、发布人、发布时间)等,使用Jsoup十分方便,因为它的选择器语法类似于Jquery语法,十分方便,而且学习成本很低,基本上只要会Jquery,10几分钟就能上手。
优缺点
我们应该对我们经常使用的核心技术做到心中有数,即了解优缺点,对于普通的技术只要基本会用即可(有时间可以做对比)。
比如hibernate和ibatis,springMVC和struts2等等,做个对比,总结不出来几点说明自己对这个玩意还是了解不深,需要继续学习和研究。
为什么
对于一些项目中使用的核心技术,需要掌握:
做好了解为什么,即为什么有这个东西,即了解发展历史和产生的背景
如何实现的,读源码,知其所以然
重复发明个轮子,这样可以更好的了解原理,而且学习效果更佳,这样比读N遍源码效果更好
有朋友会说我看不到咋办?不会写啊!
告诉你个笨办法:
之前我学习CGLIB,是照着人家单元测试挨着敲和试的;
还有学习源码建议从低版本开始,因为功能少都是核心,好研究。
在此学习过程中一定要把握度:
有些东西只需了解目的和怎么如何即可;
有些需要理解到为什么,像spring、junit、slf4j/logback、ehcache、proxool、tomcat、ibatis等等,有时间多读点源代码或者自己造个轮子;尽量做到每一个方面都有涉及(出问题我不怕),但要专一,如spring。
我的学习历程
写自己的代码
代码量非常重要,前期要写足一定量代码,再看一些书籍/读一些源码才有感觉。我是如何写代码的:
1、项目代码,这个没得说,在写的过程中思考我们在读书时遇到的一些问题;
2、在写项目的时候我们可能发现我们经常重复做一些事情,此时就需要考虑建立自己的代码工具库,如通用代码库、代码生成工具、常用工具类等; 不要重复自己,遇到重复的就考虑往自己工具箱添加可复用的组件;
3、按照自己兴趣发展一个方向,此时可以考虑写一些相关的轮子;通过轮子再反过来深入学习其他相关的技术。
4、如果有能力就考虑构建自己的平台,简化重复劳动,提升开发效率。
发明轮子我觉得是很有必要的,光看不练没什么多大效果,发明个轮子可以帮助我们更好的理解,轮子不一定非得用到我们的项目,此时的轮子是帮助我们学习的。
阅经典的书籍
读大师经典著作,如
《国外程序员推荐:每个程序员都应读的书》
《一些经典的计算机书籍》
或者关注如iteye等网站,推荐的一些好书。 我经常到 互动 itpub 图灵社区 等看一些新书。
读书不是到用的时候再读,而是按照自己的方向和兴趣选择相关的书籍进行阅读,学习前人经验和思想,开阔自己思路。
读书不是只读一遍,有些好书如《Effective Java》、《设计模式——可复用面向对象软件的基础》、《企业应用架构模式》、《敏捷软件开发:原则、模式与实践》、《面向对象软件构造》等需要重复读,因为时间段不同积累的经验不同,理解会产生改变,每次读都有不同的收获。
读书读不懂没关系,先放一放,过一段时间再来看,经验到了自然就明白,不要刻意去背,刻意去记,一定要理解着记,记住要理论指导实践,实践检验理论,不可脱节。
不能心急,一下子啃N页,像看小说似的,这样什么都学不到,记不住,即使今天记住了过了几天就忘了,所以要温故而知新。
读书要思考自己之前遇到过类似的场景吗?对比着记更容易,而且记忆的成本会很低。
不要光看自己使用的技术相关的,其他方面的如产品,测试,数据库等相关书籍也建议阅读。在此推荐一本产品入门书:
《Don't Make Me Think》
尤其在学习Java技术时,建议大家有时间把JDK的核心API(如java.lang/java.util等这些我们经常用的)读一下/还有相关的规范(规范是最权威的指南)。
读优秀的代码
阅读优秀的源代码可以帮助我们消化书籍中学到的理论,更好的去使用它,而且能开阔我们的思路,完善我们的思想。
读源代码思路:
1、从使用进行阅读,按照调用关系深入到源代码中,不要一口吃胖子;
2、跟着单元测试走;
3、只需读最核心部分即可,无需读所有代码;
4、从简单的源码入手,刚开始放低难度,如阅读junit、slf4j、ehcache等相对简单的源码,再深入阅读如spring等源代码;
5、阅读源代码要分而治之,一次读一块,不要混读,不要杂读。
记自己的博客
记博客可以思维缜密,完善知识体系,扎实技术;而且可以分享自己的经验想法,如果有错误会有朋友指正,非常好的学习方式。
记博客思路:
1、记录自己工作中遇到的问题及解决方案;自己既然遇到了别人也可能遇到;
2、不要怕写的简单,没面子,我觉得要厚脸皮 ;
3、任何东西都可以记,留作回忆。
向同事的学习
既然能作为同事,说明大家水平差不多,学习同事的优点。
向同事学习思路:
1、没事聊聊技术,听听它的想法;
2、看他的源代码,从中学习;
3、如果你的老大/同事都不上进,你又是很上进的,建议物以类聚,人以群分,换个环境好好发展自己。
善于观察细节
善于观察细节,比如从最基本的同事怎么操作的那么快(观察他是如何进行操作的,如发现自己不会的快捷键)?
观察细节思路:
1、眼要尖,善于发现自己不会的;
2、嘴要勤,善于问自己不了解的(此处不是没事就去问,而是自己思考过,实在不会的,不要憋在肚子里,问一下又不会怀孕);
3、没事读同事的源代码,这个可是免费的,从中能学到好的编码习惯和好的解决问题思路。
学习没有捷径,我不聪明,但我刻苦;刻苦还是不够,得善于思考和总结。
学习不要怕丢人,学到手是自己的,学会厚脸皮。
希望对需要的人有所帮助,每个人都有自己的学习方法,可以借鉴学习,但不要临摹,适合自己的才是最好的。
分享到:
相关推荐
只需要用一张图片素材文档选择器.zip
浙江大学842真题09-24 不含答案 信号与系统和数字电路
无标题baci和jbaci
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
实体商品销售源码最新优化.zip
内容概要:本文档详细介绍了戴尔存储MD1400机柜的安全注意事项、电源指示灯解释、故障排除方法以及硬件维护步骤,包括卸下和安装直流电源设备、硬盘驱动器和背板的具体操作流程。 适用人群:IT运维人员、数据中心管理员和技术支持工程师。 使用场景及目标:在维护和管理戴尔存储MD1400机柜时作为参考指南,确保正确安装和故障排查,避免安全隐患和设备损坏。 其他说明:文档提供了丰富的图文指导,帮助使用者更好地理解和执行相关操作。
PyClass 课程计划Noisebridge Python 课程每周一晚上 7 点至 9 点(太平洋时间)在旧金山 Noisebridge 二楼电子室举行。自 2024 年 8 月起,该课程目前暂停。请参阅 wiki 页面了解更多信息。本课程免费!如果您希望捐款,请捐赠给 Noisebridge。建议捐款15 美元、50 美元、200 美元以上建议每月捐款每月 10 美元、20 美元、40 美元、80 美元以上所有 Python 课程均遵循Noisebridge 反骚扰政策、 Noisebridge 冲突解决指南和 recurse.org 社交规则课后,我们欢迎您提供反馈! 在此提交表格内容课程课程描述新生阅读迭代次数Noisebridge Python 课程至少早在 2015 年就已经存在,拥有许多不同的讲师和版本。从 2017 年到 2018 年,该课程似乎由Jared Garst负责。(?)。从 2023 年到 2024 年,该课程由Travis Briggs负责。如果您有其他关于此类历史的信息想要分享,请在此处创建 PR、
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
万达广场作为城市综合体的代表,在中国各地的地理分布数据集覆盖了2006至2021年。这些数据详细记录了万达广场的多个关键指标,包括项目名称、项目信息、具体地点、开业时间、商业面积以及精确的经度和纬度。万达广场不仅是商业地产开发的先行者,还以其成熟的商业模式、完善的产业链和丰富的商业资源,在全国范围内形成了独立的大型商圈。这些综合体集购物、餐饮、文化、娱乐等多种功能于一体,对提升城市商业档次、增加就业岗位、创造税收以及丰富群众消费需求等方面产生了显著的社会效益。数据集提供了420条样本,为研究中国区域经济发展特征及其未来趋势提供了宝贵的信息资源。
正在月下弹琴的古装美女flash场景动画.zip
理光 MP C8003 是一款彩色激光多功能数码复合机。 【基础性能】 打印复印速度:黑白和彩色打印 / 复印速度均可达 80 页每分钟,能够快速高效地完成大量文档的输出任务,有效提高工作效率 分辨率:拥有 1200x4800dpi 的高分辨率,可输出色彩鲜艳、细节丰富、图像清晰的文档和图像,满足专业级的打印和复印需求,尤其适合对色彩精度要求较高的设计图纸、宣传资料等文件的输出 首张输出时间:黑白首张复印时间为 4.7 秒,彩色首张复印时间为 6.3 秒,在启动打印或复印任务时无需长时间等待,可迅速响应,进一步提升工作效率 纸张容量:标准配置的纸张容量为单 2500 页抽屉和双 550 页抽屉,还可通过扩展将纸张容量从 3700 页提升至 8100 页,能够满足不同规模的打印任务需求,减少纸张添加的频率 【功能多样性】 多功能一体:集复印、打印、扫描、传真功能于一身,可满足办公室多样化的文档处理需求,一台设备即可替代多台单一功能的设备,节省空间和成本 扫描功能:具备高速扫描能力,可通过多种扫描至选项将原件扫描并以电子形式分发,支持将扫描后的文件直接发送至个人移动设备
《The Annotated Transformer》环境配置
深度学习大作业基于resnet50和vgg16卷积神经网络的汉字书法识别项目源码+训练集+测试集 操作步骤 将下载的训练集和测试集,解压到工程中 运行对应的data.py文件,进行转录,将原始数据集转录为numpy矩阵,生成data.npy及label.npy 运行对应的train.py进行训练 运行test.py使用训练完成的网络测试。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
代码
图表效果及代码实现讲解链接:https://blog.csdn.net/zhangjiujiu/article/details/143996614
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
营销策划 -魔術絲-黑松露香蕉莓果饮品-新品发布会产品介绍-终版.pptx
成都市数据条例.docx