自学java有什么书比较好?
《阿里巴巴Java开发手册(正式版)》(V1.2.0版)更新(V1.2.0版)《阿里巴巴JAVA开发手册(正式版)》 - 知乎专栏
这篇最新版本不只是规范汇聚了阿里,更有广大知乎程序猿、工程师、研发网友的智慧结晶。
更偏爱那些能用简短流畅的话,把少壮不努力的程序员所需的基础补回来的薄书,而有些教课书可能很著名,但干涩枯燥,喋喋不休的把你带回到大学课堂上昏昏欲睡,不录。
操作系统与网络的书
《Linux内核与实现 第3版》Robert Love用最薄的篇幅,顺畅的文字将Linux内核主要的算法讲清楚了,《深入理解Linux内核》,《深入Linux内核架构》之类厚厚的全是代码,不是专门的内核程序员看这本足够了。
《Linux系统编程 第2版》继续是Robert Love,比起APUE也是以薄见长,专门针对重要的系统调用讲解。
《性能之巅》操作系统的性能调优、监控、工具和方法论,看这本就够了,已经足够厚,可能是书单里最厚的一本。
为什么阿里巴巴J***a开发手册里要求禁止使用存储过程?
存储过程不好移植,如果数据库换了,肯定需要爱重写。单纯的SQL语句一般不用
存储过程不好维护。现在业务逻辑复杂,如果逻辑分散在存储过程和后台程序里先,得关注两部分
存储过程不利于移植,受数据库限制,而且阿里巴巴都是大型分布式集群存储过程更是劣势巨大!越是大型的分布式系统越是追求编码业务而不是绑死在数据库上,因为你不知道那一天就要换数据库了
存储过程,最早的概念据我推断是来自于oracle,最早oracle是只有函数的概念,依稀记得是oracle8还是9才加的存储过程package的概念,用于解决函数过于碎片化、不具备复杂的多逻辑功能,同时便于文件管理加入的概念。到后期基本所有数据库也都有了存储过程,如:mysql,sybase等。
存储过程是基于数据库底层的语法,与数据库是相互依存的,且各个类型数据库语法都不一样。
J***a语言在很大一部分的优势就是为了解耦合和可移植性,所以也有经典的dao模式,目的也就是把数据库和业务层分开。如果直接调用存储过程,混淆了业务和数据库分层,打破了J***a模式设计的初衷。而且,如果用存储过程写,比如原来用Oracle数据库,现在客户要求改成免费的Mysql数据库,意味着基本所有的存储过程全部要重写,基本不具备可移植性。
当然,万事没有绝对。阿里的整套体系庞大,数据库的能力强大,中间件的主机也足够横向扩展。像我们一般的项目没那么多的主机和算力可搭配,有时碰上复杂的报表或复杂的逻辑,也不得不借用数据库存储过程来实现。
一般来说,项目上数据库主机的配置比web主机相对强大得多,且存储过程在数据库操作逻辑上天然的快,在web主机不能横向扩展的情况下,也只能借用存储过程来实现。当然,用存储过程来处理也是占比很少,逼不得已情况下才使用。
j***a程序员刚进公司,接手一个业务复杂的项目后,该怎么快速融入开发?
首先你要阅读公司项目经理给你下发的文档,要了解[_a***_]项目是做什么的,了解业务流程。关于开发代码的话,应该要清楚项目里用了哪些框架技术,以及公司的开发规范,还有就是以前公司人员留下来的代码审阅。其次就是同事之间,你要清楚你们项目组之间每个人负责什么角色,以后在开发过程中遇到问题了应该寻求谁的帮助,跟同事相处很好有助于大家一起共事开发,共同进步。希望***纳