编码过程中,我们会遇到各种问题。
借助搜索引擎,可以解决大部分问题,但总会遇到没法解决的坑,也许它会困扰几天或者更长时间。
要解决各种疑难杂症,成为高手,就要学会查一手资料。
什么是一手资料?
- 最直接的一手资料就是源代码,看懂了源码,一切问题迎刃而解
- 官方文档与译文(大部分官方文档都是英文的,需要我们培养良好的英文阅读能力)
- 优秀源码的注释也可能找到想要的答案
- 官方社区里的问题交流(关注官网与社区,能让我们保持对产品特性的把握和未来发展的一些预判,提高职业素养。遇到问题顺着思路就可以猜想到根源大概在哪)
优秀的源码的设计一般都很复杂,需要根据官方文档和一些专门的书籍,鸟瞰各功能模块的作用、设计思路和代码实现。
一开始读源码,都会云里雾里,但是坚持每梳理一遍,就会 "对为什么这样使用类库有更深刻地体会"。
掌握了优秀的源码的设计模式,能提高自己代码的质量和扩展性。
阅读源码要我们有一定的代码基础、对源码的设计思路有一定了解。Java 方面,可以了解一下
- 如何阅读JDK的源码?
- 如何用 IDE + maven 阅读框架和各种类库的源码?
搜索引擎,建议使用 google。
个人感觉,google 搜索引擎更懂编程人员,总体来看它提供的结果更精准,更接近我想要的。
附一些 Java 方面常用的官网:
- Java www.oracle.com/technetwork/java/index.html
- OpenJDK openjdk.java.net
- w3c(万维网联盟) www.w3.org
- apache(开源项目非盈利组织) www.apache.org
- Oracle www.oracle.com/index.html
- MySQL www.mysql.com
- mongoDB(分布式文件存储的数据库) www.mongodb.com
- redis(key-value数据库) redis.io
- zookeeper(分布式应用程序协调服务) zookeeper.apache.org
- spring spring.io
- hibernate(对象关系映射框架) hibernate.org
- mybatis(数据持久层框架) mybatis.org/mybatis-3
- nacos(动态服务发现、配置和服务管理组件) nacos.io
- apollo(携程框架部门研发的分布式配置组件) github.com/ctripcorp/apollo
- Disconf(分布式系统配置管理组件) disconf.readthedocs.io
- kafka(构建实时数据管道和数据流组件) kafka.apache.org
- ELK(elasticsearch、logstash、kibana,实时日志系统) www.elastic.co
- elasticjob(分布式调度解决方案) elasticjob.io
- XXL-JOB(轻量级分布式任务调度平) github.com/xuxueli/xxl-job
- RabbitMQ(消息队列) www.rabbitmq.com
- ActiveMQ(消息队列) activemq.apache.org
- RocketMQ(消息队列) rocketmq.apache.org
- Dubbo(服务框架) dubbo.apache.org
- Docker(应用容器引擎) www.docker.com
- tomcat(Web 应用服务器) tomcat.apache.org
- WebLogic(JavaEE 应用服务器) www.oracle.com/middleware/technologies/weblogic.html
- jboss(JavaEE 应用服务器) www.jboss.org
- jetty(servlet 容器) www.eclipse.org/jetty
- netty(高性能网络框架) netty.io
- nginx(高性能 HTTP 和反向代理 web 服务器) nginx.org
- intellij idea(当前最火 Java IDE) www.jetbrains.com/idea
- eclipse(Java IDE) www.eclipse.org
- git(分布式版本控制系统) git-scm.com
- svn(版本控制系统) tortoisesvn.net
- guava(google 开源的工具类库) guava.dev
- joda(高质量的底层 Java 类库,如时间、钱等相关) www.joda.org
- Javassist(分析、编辑、创建 Java 字节码的类库) www.javassist.org
- ASM(Java 字节码操纵框架) asm.ow2.io
- HikariCP(高性能数据库连接池) github.com/brettwooldridge/HikariCP
- Druid(阿里的数据库连接池) druid.apache.org
- DBCP(数据库连接池) commons.apache.org/proper/commons-dbcp
- PDFBox(读取和创建 PDF 文档类库) pdfbox.apache.org
- itext(PDF 文档处理库) itextpdf.com
- Xpdf(PDF 文档处理库) www.xpdfreader.com
- FOP(基于XSL:FO的打印格式处理) xmlgraphics.apache.org/fop
- JDOM(XML 文档处理类库) www.jdom.org
- dom4j(XML 文档处理类库) dom4j.github.io
- xerces(XML 文档解析器) xerces.apache.org
- jaxp(解析和验证 XML 文档器) docs.oracle.com/javase/8/docs/technotes/guides/xml/jaxp
- httpclient(Java http 客户端) hc.apache.org/httpcomponents-client-ga
- Apache Commons Email commons.apache.org/proper/commons-email
- jsoup(HTML 解析器) jsoup.org
- Jackson(json 解析与生成类库) github.com/FasterXML/jackson-core
- Gson(json解析与生成类库) sites.google.com/site/gson/Home
- fastjson(阿里的 json 解析与生成类库) github.com/alibaba/fastjson
- poi(Office 组件的解析、生成器) poi.apache.org
- docx4j(docx 文档处理类库) www.docx4java.org/trac/docx4j
- thumbnailator(图片处理库) github.com/coobird/thumbnailator
- simpleimage github.com/alibaba/simpleimage
- image4j github.com/imcdonagh/image4j
- zxing(google 的二维码处理库) zxing.github.io/zxing
- FreeMarker(模版引擎) freemarker.apache.org
- velocity(模版引擎) velocity.apache.org
- Thymeleaf(模版引擎) www.thymeleaf.org
- JFreeChart(Java图标类库) www.jfree.org/jfreechart