mongodb设置用户名和密码 如何系统的学习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和老年代,这些回收警戒线,endless触发条件,各种个样的基本参数和不怎摸专用超参数,这些G1的H区,ZGC等等。。。而且的是,GC并不属于jvm官方规范的一部分。
然后,动手做一些jvm的实践和实战,
比如说,jvm比较普遍的故障排查和故障总结归纳,性能调优,热加载,class字节码的动态操作,asm等。
结果,也可以试图利用自己的jvm。(肯定这个步骤,对很多同学来说不是什么可以了)
这里我推荐推荐几本书,都是彻底地搞明白jvm规范标准的学习路径。最好是自己实现程序垃圾回收器。
周老师的《深入理解Java虚拟机》。
接下来是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码只有1M多。目前在oracle的官网上,仍然是可以直接下载。是一个设计相当精简的jvm实现方法。
下一步,可以去阅读《自己动手写java 虚拟机》。这本书的jvm基于是按结构go语言编写。肯定其中也有很多设计并并非的很合理。但基本都都按照了jvm规范。
此时此刻就是可以去看一下github上各种jvm的开源代码实现程序了。有play,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个完全不同的jvm实现程序。
当然,这些利用都仅仅基本原理。
后面推荐一下你自己去看《实战hotspot》豹子书,关注高级语言虚拟机的圈子。
不过,垃圾回收的书籍比较少,这里应该推荐一下给你垃圾回收的超经典书《The Garbage Collection Cookbook》。实际上对新的垃圾回收算法有兴趣,也可以去知乎搜索相关的论文和GC算法开源软件基于的demo。
5.不过,我的建议仅仅对于Java本身。
能够要提升到已经能学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些都是做互联网应用,躲无可躲的。
只有我建议你,通用知识熟练的掌握,钻研方向精通,咨询生态清楚。
的原因提问是对于java本身。我就继续发起说其他具体看方向了。请看的是大的技术方向,根本不会其他答主那样的,具体去再讨论语法糖这种级别。我希望对提主有不帮助。
有任何问题,欢迎您关注解除,与我继续讨论。谢谢啦。
如何做好WEB服务器的入侵检测和数据备份?
入侵检测是个很奇怪的问题,我简单说说看我的经验。
1、服务器不要可以使用root登陆,但是不准进入用户名密码登录,在用密钥登入,有条件的话使用堡垒机。
2、应用不使用普通用户正常运行,非必要千万不能建议使用root。
3、打开防火墙,只新区web端口,如果是集群,主机之间内网通讯,并且防火墙指定端口向或者的ip段开放,不向公网开放。
4、关了、删除不建议使用的服务。
5、mysql等服务不用不使用root帐户,肯定创建或者权限的帐户,密码要随机生成较长长度的复杂密码。
6、定时查看检查进程,一栏有无可疑人进程,检查登录日志,查看有无可疑迹象登陆。
7、千万不能向非相关人员被授权root权限。
8、要先进行代码检测,尽量减少会出现漏洞而被被侵入,尤其是php。
9、了解一些安全网站,及时处理给系统也可以应用打补丁(去年mongodb漏洞被人删了数据,所幸可以恢复了)
10、你的登录工具当然相对正规来源,避免被绑马(xshell漏洞、其它网站直接下载的数据库、登陆账号工具被恶意绑马)
11、github上有些安全扫描工具,学习完全掌握帮一下忙。
以上是安全方面的小经验,具体做法可以不搜查找教程。
数据库备份文件
1、定时系统备份,定时全量备份。(数据量小时),每月十五增量软件备份。跪求mysql增量系统备份、回滚、闪回等github上有很多晚熟的方案。
2、数据库有条件的话做不了主从。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。