一本非常棒的书,不愧“headfirst”的称谓。清晰的条理,生动的图示,偶尔来点老外的幽默——其实中国人不太能理解,阅读体验非常舒畅。oreilly的这个系列应该都很熟悉了,优点多多估计大家都知道,就不提了,说点不优的吧。如果你熟悉一门类似的静态面向对象语言(例如C#)那就不要看这个了,你会觉得有些罗嗦,因为大部分语言特性你都很清楚,没有必要看那么多示例、提示和比较等等;如果你是想全面的了解java语言,估计你会很失望,这本书里面甚至没有讲“反射”;如果
系统 2019-08-29 22:48:24 2513
1.继承关系图2.概览此类提供Collection接口的骨干实现,以最大限度地减少了实现此接口所需的工作。3.方法构造方法摘要protectedAbstractCollection()唯一的构造方法。方法摘要booleanadd(Ee)确保此collection包含指定的元素(可选操作)。booleanaddAll(Collectionc)将指定collection中的所有元素都添加到此collection中(可选操作)。voidcl
系统 2019-08-29 22:26:18 2513
I/O问题可以说是当今互联网Web应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动。这个流动的过程中都涉及到I/O问题,可以说大部分Web应用系统的瓶颈都是I/O瓶颈。本文的目的正是分析I/O的内在工作机制,你将了解到:Java的I/O类库的基本架构;磁盘I/O工作机制;网络I/O的工作机制;其中以网络I/O为重点介绍JavaSocket的工作方式;你还将了解到NIO的工作方式,还有同步和异步以及阻塞与非阻塞的区别,最后我们将介
系统 2019-08-29 22:25:44 2513
先看看设计的报表样式:reportTitle是新添加的一个参数,而其他的id和name是通过数据源得到的Filed。IReport在设置参数的时候需要先在左边新建一个parameter,然后再把该parameter托到右边的设计栏中。生成的XML文件为:
系统 2019-08-29 22:12:14 2513
文章参考:http://www.java3z.com/cwbwebhome/article/article8/81145.html?id=2600JavaObject类提供了一个protected修饰的clone()方法,该方法用于帮助其他对象来实现“自我克隆”,所谓“自我克隆”就是得到一个当前对象的副本,而且两者之间完全隔离,该方法只能被子类重写或调用。自定义类实现“克隆”的步骤:1、自定义类实现Cloneable接口;(这是个标记性接口,实现该接口对象
系统 2019-08-29 22:10:22 2512
8.+=复合赋值问题x+=i与x=x+i等效吗,许多程序员都会认为第一个表达式x+=i只是第二个表达式x=x+i的简写方式,但这并不准确。Java语言规范中提到:复合赋值E1op=E2等价于简单赋值E1=(T)((E1)op(E2)),其中T是E1的类型。复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响,然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化
系统 2019-08-29 22:02:50 2512
《笔者带你剖析大规模分布式Java平台JVM性能调优基础》前言其实说到对JVM进行性能调优早已是一个老生常谈的话题,如果你所在的技术团队还暂时达不到淘宝团队那样的高度,无法满足在OpenJDK的基础之上根据自身业务进行针对性的二次开发和定制调优,那么对于你来说,唯一的选择就是尽可能的熟悉JVM的内存布局,以及熟练掌握与GC相关的那些选项配置,否则JVM的基础性能调优不是痴人说梦?目录一、性能调优的一些概念和目标;二、性能调优的基本原则;三、新生代的性能调优
系统 2019-08-12 09:30:36 2512
1.安装datax2.安装python并配置环境变量3.把mysql2odps.json文件放在datax安装目录的job文件夹下4.运行Test.java测试mysql2odps.json文件:{"job":{"content":[{"reader":{"name":"mysqlreader","parameter":{"username":"$username","password":"$password","where":"optime>='$sta
系统 2019-09-27 17:50:29 2511
由于java程序需要调用C或C++的代码,不得不使用JNI。C的代码在Win32和Linux下都有相同功能的不同实现,就像JDK分几种平台版本(win32,linux,solaris等)。首先,看一看首先,看一看win32下调用dll文件。1,新建HelloWorld.java1publicclassHelloWorld2{3static4{5try6{7//此处即为本地方法所在链接库名8System.loadLibrary("HelloWorld");9
系统 2019-08-29 23:39:19 2511
假设我们在函数中写了如下这个简单的语句:StringBufferstr=newStringBuffer("Helloworld");别看这个语句简单,其实包含了如下三个步骤:首先,newStringBuffer("Helloworld")在堆里申请了一坨内存,把创建好的StringBuffer对象放进去。其次,StringBufferstr声明了一个指针。这个指针本身是存储在栈上的(因为语句写在函数中),可以用来指向某个StringBuffer类型的对象。
系统 2019-08-29 22:52:29 2511
欢迎点击此处订阅本Blog
系统 2019-08-29 22:40:46 2511
之前坊间有传闻JavaEye已被CSDN收购,无法确定是否属实。不过,目前通过Whois查询JavaEye的域名,结果如下:DomainName.....................javaeye.comNameServer.....................ns1.mydnspod.comns2.mydnspod.comRegistrantID...................hc19114540-cnRegistrantName.....
系统 2019-08-29 22:16:53 2511
《加速Java应用开发速度》系列目录:加速Java应用开发速度1——加速spring/hibernate应用调试时启动速度加速Java应用开发速度2——加速项目调试启动速度加速Java应用开发速度3——单元/集成测试+CI加速Java应用开发速度4——使用模板技术加速项目开发速度加速Java应用开发速度5——使用脚本自动化日常操作大家可能对如下情景比较熟悉:如果开发过SSH的web项目,启动服务器可能会比较慢,有的项目甚至需要1分多钟,甚至更多,这个启动时
系统 2019-08-29 22:00:52 2511
JavaNIO开始支持scatter/gather,scatter/gather用于描述从Channel中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。聚集(gather)写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,因此,Channel将多
系统 2019-08-29 23:00:18 2510
Java线程:线程状态的转换SCJP5学习笔记一、线程状态线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:1、新状态:线程对象已经创建,还没有在其上调用start()方法。2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。3、运行状
系统 2019-08-12 09:30:26 2510