推荐java零基础的入门书籍有哪些
一。入门级:就是有一定的基础(比如最常见的HTML标签及其属性、事件、方法;最常见的CSS属性;基础的JavaScript编程能力),能够完成一些简单的WEB前端需求。推荐:《JavaScriptdom编程艺术》理由:此书绝对是入门的好书,本人也是在接触JS一段时间后才看的这本书。此书从JS的历史-JS基础语法知识-DOM介绍和简单的使用。现在这本书已经出了第二版,需要的朋友直接第二版就行。评价:简洁,实用,详细,易懂,书不厚,相信很快就能看完。当然,作为入门书的话《JavaScript权威指南》也非常强大(这名字可不是白起),其实说起来也惭愧,本人至今都没有买过这本书,最开始是因为这个书实在是小贵,只好借朋友的看,不过也就看了个周末。网上关于此书的评价很多,意思大概都是说这书就是一个JS的文档手册,如果你有闲钱,并且习惯翻书查询,那么就来一本吧。顺便提醒一句,这本书的第六版英文版已经出来了。二。初级开发:本人以前的DEVleader兼恩师这么说过:“初级开发人员的标志就是需要在中级和高级开发的指导下完成工作”。首先不要苛责代码的对错严谨,毕竟每个程序员都有这样的一个过程,就是这个级别的特征。推荐:《javascript高级程序设计》(第二版)理由:这本书的作者是NicholasC.Zakas,博客地址是#/,大家可以去多关注,雅虎的前端工程师,是YUI的代码贡献者,可想而知这本书得含金量,他出的书都广受好评。这本书已经出了第二版,而且与第一版相比内容更新很大,直接第二版就行。不要被书名的“高级”唬住,只要有JS基础语法知识和DOM基础知识就行,而且本书开始阶段还是介绍JS和DOM的语法知识。评论:重点推荐一下第五章(类型),第六章(OOP),第七章(匿名),多看几遍,至少要完全看明白,能为以后进阶打好基础,个人感觉这几章是本书的精华所在。这本书在入门的时候看节奏会快了一些,所以不建议初学者看,可是相对于我一会要介绍的书又算基础一点,所以建议先阅读完这本书,对浏览器兼容和语法知识有一定了解之后再往下阅读。推荐:《高性能JavaScript》《JavaScript语言精髓》理由:本人先看的是《高性能JS》,这本书还是NicholasC.Zakas所著,经典之作,书中大量举例了各种不同写法的JavaScript在浏览器中的性能情况,对规范JavaScript代码和提升性能有很好的帮助,最后提到了很多工具和性能测试的方法,都是灰常灰常有实际作用的,看得出作者很厚道(好吧,偶承认了,偶是他的粉丝)^_^,记忆最深的一句话:“如果JavaScript执行了几秒钟,那么很可能是你做错了什么”;;《语言精髓》和《高性能》有少部分关键知识都重复提到了,可是为什么要推荐这本书,因为本书对JS语言本质的描述太棒了,这是一本介绍JavaScript语言本质的权威书籍,从“对象”,“函数”,“继承”,“数组”等等多个重要知识着手。我补一句话-本书需要反复阅读。评论:都是好书,都很薄,而且所说的内容只要有基础都不难。相信读完之后会对JS又有新的认识,且对以后的代码规范和浏览器差异性等高级问题有了新的认识,如果读完之后会有种被灌顶的感觉,那么恭喜你,你离中级不远了。三。中级开发:还是本人以前的DEVleader兼恩师这么说过:“中级开发人员的标志就是在高级开发或架构师较少的指导下高质量的完成工作,并对产品或项目有自己的想法与理解”。强烈推荐:《JavaScriptDOM高级程序设计》理由:此书灰常犀利,本人一共看了近半年的时间,已反复阅读多次。说实话,这本书的翻译一般,代码也有少许错误,可是这不影响这本书的强大,通过学习本书,可以理解一个JS的库如何产生,自己动手写一个简单的自己的JS库,如果你打算研究其他的JS库或者正在研究其他的JS库,那么这本书会使你的理解达到新的高度,进阶高级必读,写库必读。评论:异常强大的一本JS巨作,此书不薄,强烈推荐。现在已经买不到正版了,我这里有电子版,有需要的朋友留下邮箱,晚上发给你们。强烈推荐:《JavaScript设计模式》理由:异常生猛的一本书,看书名带“设计模式”就知道,这本书想要读明白有点困难,本人自己感觉,只要某书一带“模式”这两字,反正就简单不了。本书对JS的“模仿接口”,“封装”,“继承”,“链式调用”,“工厂模式”等各种具体的设计模式及其在JavaScript语言中的应用进行了详细的介绍,运用设计模式使代码更模块化、更高效并且更易维护。评论:书不厚,可真的是内容丰富且高深,强烈建议购买。推荐:《高性能网站建设指南》《高性能网站建设进阶指南》理由:在读完前几本书之后我们对前端的性能和自己的代码的效率已经达到相当的高度了,然后我们在接触一些前端工程师的一些精髓。本书对HTTP请求,CDN,内容缓存和一些web开发中常见问题进行讲解。评论:书都不厚,可是说的都是比较实用的东西,可是用不用的上还得看个人和项目需要了。以上就是本人一路走来看的JS相关书籍,朋友会问,为什么就只介绍的中级的,那么高级看的书在哪?有木有高级的书?进阶高级程序员之路又在哪?说下我自己的看法和对年轻朋友的建议吧,说的不好或不对请原谅,其实我也才真正工作两年多:1.主要是工作经验问题。达到一定程度以后真的合适的书很难找了,更多只有在工作中总结和积累。工作的越久碰到过的问题也就越多,^_^。所以一般说高级程序员一般都是至少都3年以上的工作经验,没办法,实践才出真理。2.我觉得高级web前端灰常有必要总结一个自己的JS库,不管大小,总归有一套自己的东西(嘿嘿,如果认真的实践过《JSDOM高级》的内容,估计有一套JS库的原型了)。3.前端有必要懂得和熟悉一本服务端语言,其实计算机语言很多语法大致都差不多,不同的就是内置的方法和属性,所以去熟悉一门语言并不难。为什么有必要,因为精通一门语言还是不够的,多学一门语言的好处我就不_嗦了,大家可以看看这篇文章-《门门通还是精一门》4.许多年轻人都有眼高手低的毛病,我也一样,例如,有的人认为自己编起程序来很顺手,不用查手册,说写就写,很熟练,几乎什么程序都能编出来,就认为自己对这种语言很精通了。其实对于一门语言的掌握程度是不可深测的,对于语言掌握其实是一个无止尽的过程,没有终点。编写时间的长短和编写熟练程度,仅仅是精通语言表现的一个方面。更重要的是程序员要掌握这个语言的适用范围,整体构架,语法规则、功能分类等基础理论方面的知识,并能利用这方面的知识,用最科学的方法去解决现实中各种项目的各个问题。
想学习Java语言。求高手推荐几本基础书籍。初学人员
想学习Java语言。。求高手推荐几本基础书籍。。初学人员 > > 前者比较简单,后者比较细. 我也是刚开始接触JAVA, 这2本书都不错的 请java高手推荐几部java基础书籍,我想学好java Thinking In Java,搜一下很多的,公认的最好的java基础书籍,希望可以帮助您。 想学习PS,请大家推荐一本基础学习书籍! 《精通photoshop》,这本书不赖 我想学JAVA,给推荐几本基础书, 先看《java编程思想》这本书吧。一直看一本书很累,所以找本j2ee的书,翻一翻,对看java编程思想是有点帮助的,触类旁通吧。 想学习JAVA框架的搭建,推荐几本基础的书! java设计模式一本就行了,框架无非是设计模式+设计模式+设计模式混合、交叉运用。好好挖挖这本书。 本人想学习C语言,大家能推荐基本基础书吗 对java的书籍很多,有一些垃圾书,买了这本书,是非常有害的(除非你看不到)。 书不买那种几天精通几天想象的语言,是智慧的结晶,有多少人,你怎么可以掌握几天。这是不现实的。 模仿,不觉得很无聊,其实,发展的人从模仿到创作过程! 现在不知道多少,所以很多人不理解,不介意,等你的知识积累到一定的时候,有一天,你会突然发现,“哦,是这样的!”所以不否认自己的早产儿! 阅读是一种潜入深部地质过程,我给你推荐阅读顺序有: 1,孙卫琴的“java面向对象编程,这本书是适合初学者,流行ETS。非常适合作为一个初学者的书籍。 2,“Java编程思想”,这是一个经典,学习Java,这是一个重要的书籍,手不夸张,个人建议仔细阅读,至少在多线程每一个章节。 3,“java核心卷1和卷2”,先进的阅读材料,他可以让你更理性的认识,Java的许多疑难杂症,从这里可以找到答案,否则,我们有一个经典中的经典第8版。 4,“有效的Java做了这样的评价,对Java之父的James Gosling:”我非常希望,这本书在10年前,有些人可能认为我不需要任何Java书籍,但我需要这本书。“ 这是不是一本教科书,但有学习笔记。他多年的发展,有益和有效的建议,如何正确使用Java的经验。他不只是要告诉你怎么样,告诉你为什么。这本书是不适合初学者,但你已经拥有了以前的学习,阅读这不应该是困难的。 5,“Java模式”在发展过程中,我们可能会遇到很多困难的问题,但这些问题可能??是祖先所受到的待遇,并处理好,图案是祖先总结经验的肩膀上的地位他们的祖先,让我们看得更远。 如果你想学习Java的,它会来此命令,尽管它可能不是最好的,但我认为这是最适合循序渐进的原则。 积分,你必须在这个方向做。 JAVA SE,Java EE,Java ME。书籍非常多,基础是很重要的,开??始是远离学习框架不能太心急,那就是太浮躁,不利于未来的发展! 我想学习C++请高手推荐几本好的基础书本! 可以实话和你说,不要去找其它人的,中国用的最多的就是谭浩强老师的,通俗易懂 想学C语言,请给推荐几本基础教材 C程序设计语言》、.《C语言接口与实现》、《C Primer Plus》中文版、《数据结构(C语言版)》等等书籍都很不错啊,再给你推荐一个网站,里面有很多资料可以免费提供下载的,也有免费的专题练习,这里不能给链接,你去上学吧这个网看看咯,里面的在线考试中心、资料分享肯定有你想要的东西,我以前学计算机的时候也是在这里找的资料,现在都过了三级了呢 求教零基础学习C++语言....推荐几本C++书籍...注意是零基础! 初学---谭浩强C++程序设计,很好的书啊,但是要认认真真的看 然后看C++PRIMER,中文版的先看看吧,我是在网上买的,还不错, 我也是自学的C++,0基础,趁着放假买了C++primer 看着效果挺好,很系统,反正对我帮助很大还有,学习的时候一定要做题,上杭电acm或者是poj,不知道你学的怎么样,poj的比杭电的难,你自己掌握做那个,看书要认认真看,加油了 学Java语言,推荐书籍,指点学习 head first系列(市面上的译本名很花花) 这个是一套图文并茂的书,非常适合新手学习用,很多抽象的概念会用非常明了简洁的故事图甚至可以说是漫画来进行讲解,基本看过就能理解那些很抽象的概念.至于买的时候,你打开书,感觉象是一本小学的图画课本,那么就是他了. 另外 thinking in java也是个不错的书,如果你对文字的理解非常好的话,可以用这个书,但是这书中涉及面很广,而且深浅不一,不建议你入门用,不过入门之后你可以用到差不多退休.可以做工具书用. 最后JAVA学习的话,主要还是要学习面向对象的思想.把这个学明白了,剩下的就是代码了,你如果C语言学的非常好的话,编码不是什么问题.不过,在各种环境的搭建和使用方面可能需要多下点工夫(譬如当前流行的 S(Struts)S(Spring)H(Hibernate)).
hibernate的缓存机制是用什么方法实现的
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。
Hibernate的缓存包括Session的缓存和SessionFactory的缓存,其中SessionFactory的缓存又可以分为两类:内置缓存和外置缓存。Session的缓存是内置的,不能被卸载,也被称为Hibernate的第一级缓存。SessionFactory的内置缓存和Session的缓存在实现方式上比较相似,前者是SessionFactory对象的一些集合属性包含的数据,后者是指Session的一些集合属性包含的数据。SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的拷贝,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来,SessionFactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义SQL语句,因此SessionFactory不需要进行内置缓存与映射文件的同步。SessionFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置缓存的数据是数据库数据的拷贝,外置缓存的介质可以是内存或者硬盘。SessionFactory的外置缓存也被称为Hibernate的第二级缓存。
Hibernate的这两级缓存都位于持久化层,存放的都是数据库数据的拷贝,那么它们之间的区别是什么呢?为了理解二者的区别,需要深入理解持久化层的缓存的两个特性:缓存的范围和缓存的并发访问策略。
持久化层的缓存的范围
缓存的范围决定了缓存的生命周期以及可以被谁访问。缓存的范围分为三类。
1 事务范围:缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存也就结束生命周期。在此范围下,缓存的介质是内存。事务可以是数据库事务或者应用事务,每个事务都有独自的缓存,缓存内的数据通常采用相互关联的的对象形式。
2 进程范围:缓存被进程内的所有事务共享。这些事务有可能是并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周期,进程结束时,缓存也就结束了生命周期。进程范围的缓存可能会存放大量的数据,所以存放的介质可以是内存或硬盘。缓存内的数据既可以是相互关联的对象形式也可以是对象的松散数据形式。松散的对象数据形式有点类似于对象的序列化数据,但是对象分解为松散的算法比对象序列化的算法要求更快。
3 集群范围:在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,缓存中的数据通常采用对象的松散数据形式。
对大多数应用来说,应该慎重地考虑是否需要使用集群范围的缓存,因为访问的速度不一定会比直接访问数据库数据的速度快多少。
持久化层可以提供多种范围的缓存。如果在事务范围的缓存中没有查到相应的数据,还可以到进程范围或集群范围的缓存内查询,如果还是没有查到,那么只有到数据库中查询。事务范围的缓存是持久化层的第一级缓存,通常它是必需的;进程范围或集群范围的缓存是持久化层的第二级缓存,通常是可选的。
持久化层的缓存的并发访问策略
当多个并发的事务同时访问持久化层的缓存的相同数据时,会引起并发问题,必须采用必要的事务隔离措施。
在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题。因此可以设定以下四种类型的并发访问策略,每一种策略对应一种事务隔离级别。
事务型:仅仅在受管理环境中适用。它提供了Repeatable Read事务隔离级别。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发问题。
读写型:提供了Read Committed事务隔离级别。仅仅在非集群的环境中适用。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。
非严格读写型:不保证缓存与数据库中数据的一致性。如果存在两个事务同时访问缓存中相同数据的可能,必须为该数据配置一个很短的数据过期时间,从而尽量避免脏读。对于极少被修改,并且允许偶尔脏读的数据,可以采用这种并发访问策略。
只读型:对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。
事务型并发访问策略是事务隔离级别最高,只读型的隔离级别最低。事务隔离级别越高,并发性能就越低。
什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 参考数据
不适合存放到第二级缓存的数据?
1 经常被修改的数据
2 财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
Hibernate的二级缓存
如前所述,Hibernate提供了两级缓存,第一级是Session的缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法比卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
第二级缓存是一个可插拔的的缓存插件,它是由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此第二级缓存是进程范围或者集群范围的缓存。这个缓存中存放的对象的松散数据。第二级对象有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。缓存适配器用于把具体的缓存实现软件与Hibernate集成。第二级缓存是可选的,可以在每个类或每个集合的粒度上配置第二级缓存。
Hibernate的二级缓存策略的一般过程如下:
1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2) 把获得的所有数据对象根据ID放入到第二级缓存中。
3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
4) 删除、更新、增加数据的时候,同时更新缓存。
Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query缓存。
Hibernate的Query缓存策略的过程如下:
1) Hibernate首先根据这些信息组成一个Query Key,Query Key包括条件查询的请求一般信息:SQL, SQL需要的参数,记录范围(起始位置rowStart,最大记录个数maxRows),等。
2) Hibernate根据这个Query Key到Query缓存中查找对应的结果列表。如果存在,那么返回这个结果列表;如果不存在,查询数据库,获取结果列表,把整个结果列表根据Query Key放入到Query缓存中。
3) Query Key中的SQL涉及到一些表名,如果这些表的任何数据发生修改、删除、增加等操作,这些相关的Query Key都要从缓存中清空。
描述一下hibernate的工作机制,常用的类和方法
Hibernate是(1)中间件,介于应用程序和数据库的软件
(2)持久化工具,封装了和数据库访问的细节,可以让程序开发人员更加关注于业务逻辑的处理
(3)ORM工具,将面向对象的java同关系型数据库进行映射,可以实现内存中的数据和数据库中的数据双向同步更新
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
hibernate是如何查询数据库的.
1)先是创建pojo类(javaBean) (2)再是创建映射文件(.hbm.xml) (3)创建配置文件(hibernate.hbm.xml) (4)最后调用Hibernate API对数据库进行CRUD操作.
hibernate
工作原理:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
工作流程:
(1)先是创建pojo类(javaBean)
(2)再是创建映射文件(.hbm.xml)
(3)创建配置文件(hibernate.hbm.xml)
(4)最后调用Hibernate API对数据库进行CRUD操作.
hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。
看到网上有回答过,简单了一下说:
load方法,hibernate认为该id对应的对象记录在数据库中是存在的,可以使用代理来延迟加载该对象。如果没有会抛异常ObjectNotFoundException,所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。
对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。
myeclipse 中struts,hibernate如何结合使用
层次结构如下:
jsp->action->biz->dao
view层 可用到struts标签(自动封装表单数据)
control层 struts的action代替了.(action里做的事就是接收自动封装的表单数据再传给biz去处理)
实体bean和业务层biz还是和以前一样.
(biz层获取封装好的表单数据放到一个实体bean里,再传给dao)
dao层调用hibernate的内置持久化方法实现
insert,update,delete,select的操作.
怎样在MyEclipse中配置Hibernate,Spring和Struts开发环境?
本人初学JAVA,最头疼的就是关于开发环境的配置问题了,相信很多初学者都遇到过这种头疼的问题吧.现在在学Hibernate,Spring,Struts.想就关于在MyEclipse中配置这三个开发环境的事情向各位高手请教一下.谢谢了.另外,用MyEclipse怎样做JSP和Servlets程序呢?谢谢!很着急. 满意答案 网友回答 来自电脑之家 - 第一互动时尚科技门户2013-08-19最好去买本书吧。myeclipse开发Hibernate,Spring,Struts.基本不用配置什么。nbsp;HTML,JSP,Servlets,JavaScript.学完这些的话出来找工作怎么样? 查看原帖>>