html5固定的进度条怎么做 如何系统的学习JAVA?

[更新]
·
·
分类:互联网
3499 阅读

html5固定的进度条怎么做

如何系统的学习JAVA?

如何系统的学习JAVA?

java的整体生态和积累实在是太大了。95年至今20多年的积累,几乎涉及到计算机软硬件的方方面面。我暂且就认为,提主所说的精通,是指jdk本身和一些必要的数据结构以及常用框架和面向对象的基本思想吧。
从11年初至今,一直在学习java相关的知识。其中也走了不少弯路。按自己的积累,给出提主一个自认为合理且有一定深度的学习路线。大致分下面几个阶段吧。
1.首先应尽可能的打牢基础的数据结构和简单的算法基础。
可以去快速的学习一些简单的小型系统,来满足软件学习的兴趣和初期成就感。但,一定要回过头,仔细的巩固数据结构基础和简单算法。类似于这种书就可以。
2.熟练使用Java类库和java第三方工具框架。
学习使用java的语法,尝试理解Java语法设计的逻辑。熟练掌握jdk类库本身,以及各种第三方类库工具包和第三方框架的简单使用。这里学习的同时,推荐看看《设计模式》,《代码整洁之道》,《spring源码解读》,《Spring揭秘》等这一类的书集。
3.理解学习jdk类库本身的应用源码实现和主流第三方框架的源码和架构设计。
比如jdk本身的数据结构二叉树,红黑树,treemap,以及异步包的unsafe,同步阻塞队列,call-future等等包源码,以及线程基础类的实现,各个类库设计的结构和设计模式。吃透第三方框架的设计思想,理解学习第三方框架的核心源码。
当然,这里面可能会涉及到其他的事务,分布式协议等,这里不再展开。这个过程并非一朝一夕,可能需要大量的时间和技术感悟。当然,《设计模式》,《代码整洁之道》,《spring源码解读与设计详析》,《Spring揭秘》等等这一大类书,在这个过程可以理解大差不差了。
4.理解jdk,jre即jvm原理和实现。
这里我推荐看下葛老师的《实战java虚拟机》,里面讲解比较偏实操。容易上手理解。
首先,可以从jdk自带的工具学习来入手。
比如:jstat,jmap,jstack,jps,jdb.......甚至还有直接可以窥视运行期间实际内存数据的HSDB。当然,作为学习初步,我们只需要理解常用的几个命令,并知道其代表的意义即可。毕竟,第三方监控工具,包括jdk本身也提供了3个可视化的监控。
其次,理解jvm的运行加载原理,搞懂class文件结构。
这个过程我们可以借助之前会用的监控工具,理解jvm加载的基本原理。可以参考官方各个版本的jvm标准,学习看懂class文件。在此基础上可以使用如classpy等工具,方便我们直接阅读class文件。也可以试试支持class字节码级别的单步调试工具。甚至,可以尝试用用jvm汇编编码工具。
接下来,理解jvm的垃圾回收机制发展历史和各个主流垃圾回收器的工作原理。
这个过程其实非常复杂。垃圾回收器有各种串行,并行,新声代/swap和老年代,以及回收警戒线,full触发条件,各种个样的基本参数和不怎么用的超参数,以及G1的H区,ZGC等等。。。还好的是,GC并不属于jvm官方规范的一部分。
然后,动手做一些jvm的实践和实战,
比如,jvm常见的故障排查和故障总结,性能调优,热加载,class字节码的动态操作,asm等。
最后,可以尝试实现自己的jvm。(当然这个步骤,对很多同学来说不是必须了)
这里我推荐几本书,也是彻底搞懂jvm规范的学习路径。最好自己实现垃圾回收器。
周老师的《深入理解Java虚拟机》。
接下来是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码只有1M多。目前在oracle的官网上,仍然可以下载。是一个设计非常精简的jvm实现。
接下来,可以去阅读《自己动手写java 虚拟机》。这本书的jvm实现是采用go语言编写。当然其中也有很多设计并不是非常合理。但基本都遵循了jvm规范。
这个时候就可以去看看github上各种jvm的开源实现了。有go,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个不同的jvm实现。
当然,这些实现都只是基本原理。
后面推荐你去看《实战hotspot》豹子书,关注高级语言虚拟机的圈子。
当然,垃圾回收的书籍比较少,这里还是推荐给你垃圾回收的经典书《The Garbage Collection Cookbook》。实际上对新的垃圾回收算法有兴趣,可以去知乎搜索相关的论文和GC算法开源实现的demo。
5.当然,我的建议只是针对Java本身。
真正要达到完全学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些都是做互联网应用,避无可避的。
只能建议,通用知识熟练,钻研方向精通,相关生态了解。
由于提问是针对java本身。我就不再展开说其他具体方向了。描述的是大的技术方向,并没有其他答主那样,具体去讨论语法糖这种级别。希望对提主有所帮助。
有任何问题,欢迎关注回复,与我讨论。谢谢。

学习webgl怎样快速入门,有什么好的建议和书籍推荐?

WebGL只不过是一个3D绘图协议,只不过是将JavaScript和OpenGL进行了一个结合,本质上讲是基于Html5的Canvas提供硬件加速进行3D渲染,支持用于开发具有复杂3D结构或者3D效果的页面。
从这个角度来说,你要学习的依然是基础的内容:
首先,你要玩儿转JavaScript,语言是基础嘛。
其次,你最好还是学习一下OpenGL库以及一些WebGL常用的类库。
第三,算法其实还是核心,不管是你用什么语言,最终呈现还是依靠算法来实现的。
相比其他前端技术,WebGL最大的特点的就是学习曲线异常之陡,入门感觉比较难。另外在这方面的资料也非常少,一部分因为该技术出现的时间还比较晚,另外它和OpenGL这样成熟的技术类似,很多人认为熟悉了OpenGL之后并不再需要单独介绍WebGL。其实这是对新手非常不友好的。
学习路径
找一本入门书籍开始阅读,作者最好是该行业从业多年或该领域的专家,其代码会比较规范,基础概念也会讲得很清楚。针对每个知识点做小demo进行学习,尝试修改参数并查看结果。了解一些图形渲染、GPU方面的知识,加深对WebGL渲染流水线的认知。什么时候都不该忽略性能,WebGL也如此,看一些性能相关的最佳实践,从源头避免写出性能很差的3D程序。在OpenGL ES、OpenGL方向扩展。如果你只是想利用WebGL技术快速做出一些效果,可以选择目前较为成熟的库,例如Three.js。
学习资源Learning WebGL。一个专门介绍WebGL技术、进展的网站,里面提供了一系列的基础课程,这个课程就目前来说是比较经典的,推荐学习。了解基本的WebGL程序写法和风格。该网站的作者也是《WebGL: Up and Running》一书的作者。WebGL规范。目前浏览器应用的规范标准。
WebGL Techniques and Performance(Youtube,需要翻):Google I/O 2011年的一个分享,推荐。可以了解WebGL性能优化的基本思想和方法。分享人是Gregg Travares,在Chrome GPU团队,主要推动了Chrome的GPU渲染以及WebGL在Chrome上的实现,在Stackoverflow上非常活跃,经常回答WebGL相关问题。WebGL Fundamentals还是Gregg Travares写的,在HTML5Rocks上。HTML5Rocks上关于WebGL的资源。可以自行搜索。
WebGL课程中文翻译版
性能
Debugging and Optimizing WebGL Applications。Google的两位工程师介绍WebGL性能相关的议题。
Thinking in WebGL: Reducing Memory Usage。关于内存方面的考虑。
工具
WebGL Debugging and Profiling Tools。一篇介绍WebGL调试工具的文章。
书籍
这里列出了一些读过的WebGL书籍,并附有简短的说明供大家参考,其他书籍信息可自行在amazon、china-pub上查找。
WebGL Beginners Guide入门书籍,强烈推荐。
Beginning WebGL for HTML5另一本入门,推荐。
Professional WebGL Programming: Developing 3D Graphics for the Web 比较深入的一本书,适合进阶阅读,强烈推荐。LBS图书馆有英文版。
WebGL: Up and Running 入门书籍,有比较多的three.js部分介绍,对于想从底层掌握WebGL同学不太适合。该书作者也同时维护一个学习WebGL的网站:Learning WebGL。上面的课程非常不错。
WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL (OpenGL)基础知识比较全面。推荐看这本书的高阶部分,介绍的内容也比较丰富。
Graphics ShadersTheory and Practice专门介绍图形着色器的书,有翻译版(吐槽一下清华大学出版社的翻译版本,排版差,翻译更差,可见就是糊弄出来的一本书)。[G
PU编程与CG语言之阳春白雪下里巴人]16好奇怪的书名,这是国内一位作者所写,开篇痛诉国内科研之现状,作者对待做学问的态度还是很不错的。少有的优秀中文资料,推荐。