- 博客(47)
- 收藏
- 关注
转载 数据库中group by与order by
order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。什么是“聚合函数”?像sum()、count()、avg()等都是“聚合函数”使用group by 的目的就是要将数据分类汇总。
2017-04-09 14:58:17
843
转载 学习Java内部类
1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。(2)、在单个外围类中,
2017-03-26 16:14:34
285
原创 数据库中存储过程与函数的区别
1、存储过程一般是作为一个独立部分来执行的,函数作为查询语句的一个部分来调用;函数返回的是一个对象,在查询语句中位于Form关键字的后面。2、存储过程实现比较复杂,函数实现针对性较强3、函数需要用括号包住输入的参数,且只能返回一个值或者表对象,存储过程可以返回多个参数4、函数可以嵌入到SQl中使用,可以再select中调用,存储过程不能5、函数只能操作内建表6、存储过程在创建时
2017-03-25 11:20:42
1536
原创 数据库中truncate与delete的差别和联系?
联系:两者都可以删除一个表中的数据区别:是一个数据定义语言,会被隐式地提交,一旦执行不能够回滚。delete是每一次删除一行数据,同时将删除的操作以日志的形式进行保存,从而可以进行回滚操作。delete操作之后,被删除的数据占用的存储空间还在,可以恢复,而用truncate删除的数据后,被删除的数据立即释放占用的存储空间,被删除的数据不会再恢复。truncate的执行速度比dele
2017-03-25 10:51:02
718
原创 java虚拟机栈中何时存放对象的引用变量?
当在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或者对象的引用变量;引用变量就相当于为数组或对象起了一个名称,以后就可以再程序中使用栈中的引用变量来访问堆中的数组或对象。
2017-03-20 16:06:23
2815
原创 java中容易引起内存泄漏的原因
1、常见的静态集合类,比如HashMap和Vector。这些容器都是静态的,生命周期和程序是一致的,程序结束之前是不能够被释放的,从而会产生内存泄漏。2、各种连接,连接完成之后,不再使用的话需要调用close()方法来释放这些连接,只有连接关闭之后,垃圾回收器才会回收相应的对象。3、监听器,一个应用中会用到多个监听器,如果在释放对象的时候没有关闭相应的监听器,可能导致内存泄漏。4、变量
2017-03-20 15:32:57
379
原创 哪些情况需要使用序列化?
1、需要通过网络来发送对象,或对象的状态需要持久化到数据库中或者文件中。2、序列化能够实现深复制,即可以复制引用的对象。与序列化相反的是反序列化,将流转为对象。serialVersionUID,每个类都有一个特定的serialVersionUID,在反序列的过程中,使用的是servialVersion来判定类的兼容性。作为一个好的编程习惯,最好在被序列化的类中显式地声明
2017-03-18 11:06:21
2657
原创 序列化的认识
在分布式环境下,当进行远程通信的时候,无论是任何类型的数据,都会以二进制序列的形式在网上进行传输。序列化:是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操作时所引发的问题。序列化还可以将对象的状态写在流中进行网络传输,或者保存到文件、数据库等,需要时可以将流读取出来重新构造一个相同的对象。实现序列化就是要实现Serializable接口,这个接口中不存在任何的方法
2017-03-18 10:48:58
296
原创 异常处理的时候finally语句中return注意点
return返回时不是直接返回变量的值,而是复制一份,然后返回。对于基本类型的数据,在finally中改变return的值对与返回值是没有影响的;然而对于引用类型的数据会有影响。package fianllyreturn;public class Test { public static int testFinally(){ int result = 1
2017-03-16 10:29:52
780
原创 java中强制类型转换的注意
java中涉及byte、short、char类型的运算,首先这些类型的变量值会强制转换为int类型。然后对int类型进行计算,最终得到的也是int类型,常见的将两个short类型进行运算得到的结果也是int类型,将两个byte类型进行计算,得到的也是int类型。java编译器会对“+=”运算做特殊处理。
2017-03-14 10:00:54
487
原创 java中不可变类
不可变类与不可变量是有区别的,不可变类也是当创建了这个类的实例之后,就不允许改变其值了,也就是说一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能改变了在java中所有的基本类型的包装类都是不可变类,常见的Integer,Float等,同时String也是一个不可变类
2017-03-13 10:33:32
1157
原创 java中封装类型和原始类型存在的不同点
原始数据类型在传递参数时都是按照值进行传递,而封装类型是按照引用进行传递,并且封装类型和原始类型用作某个类的实例数据时,他们所指定的默认值不相同。对象引用的默认值为null,原始数据类型的默认值与他们的类型有关(常见的int的默认值为0)。null不是一个合法的Object实例,所以编译器并没有为其分配内存,只是表面该引用目前没有指向任何对象。变量声明为原始类型的,存储的是实际的值
2017-03-12 14:12:34
504
原创 对于switch使用的注意
由于byte、short和char类型的值能够被隐式地转为int类型,所以这些类型以及他们对应包装类类型都可以作为switch的表达式。但是long、float、double、String类型都不能隐式地转为int类型,因此他们不能被用作switch表达式。一定要用的话,必须将其强制转为int类型才能使用;switch可以支持final类型的变量(final变量必须是编译时的常量),不能是变量
2017-03-10 11:13:47
783
原创 java中assert的认识
assert叫做断言,是一种软件调试的方法,提供了一种在代码中进行正确性检查的机制,为了提高程序的运行效率,在软件发布之后,assert检查默认是被关闭的。常见的assert的作用范围是:1、检查控制流;2、检查输入参数是否有效;3、检查函数结果是否有效4、检查程序不变量;注意:assert只是一般在调试程序的时候使用;C++中assert是在编译时开启,而java中assert是在运行时
2017-03-09 17:14:55
810
原创 java中关于final、fianlly、finalize三者的认识
final主要是用来声明属性(属性不可变)、方法(方法不可覆盖)和类(类不可以继承),对于final修饰的变量,引用不可以变,对象不可以变,也就是final修饰的变量一开始就要进行赋值初始化,注意:静态final成员变量不可以再构造函数中被初始化;final修饰的类,这个类不允许其被继承,类中的所有方法不能被重写,但是并不意味这final修饰的类中的成员变量不可变,除非final修饰的类中的成员变
2017-03-09 16:48:14
603
原创 java中关于使用break跳出多层循环的问题
由于break智能跳出当前循环,可以再多重循环的外面界定一个标识,然后在循环体里面使用带有标识的break语句,这样可以跳出多重循环。public class Break{ public static void m按(String[] args){ out://此处为设置的一个标识 for(int i = 0;i for(int j =0;j
2017-03-09 16:45:29
549
原创 Decorator设计模式
包装类,可以用一个对象包装另外一个对象,常见的可以使用:BufferedReader包装一个FileReader,FileReader提供的是底层的读操作,比如Reader(char[] buffer).BufferedReader实现了更高层次上的操作,比如ReadLine.完成读取的是文件中的一行。这就是Decorator模式
2017-03-09 14:50:39
208
原创 关于java中的编码问题
java中的字符采用的是Unicode编码,每个字符都占用两个字节,我们直接将每个字符中的内容对应着的整数打印出来,显示的结果就是这个字符的Unicode码。String类中的getBytes方法,并不是简单地将字符串中的每个字节数据存放在一个字节数组中去,而是将Unicode码的字符串中的每个字符数字,转换成该字符在指定的字符集下的数字,最后将这些数字存放在一个字节数组中返回。将一个字符的Uni
2017-03-09 10:44:02
306
原创 java中ObjectInputStream与ObjectOutputStream的认识
上述两个类主要是完成保存和读取对象成员变量取值的过程,注意:读写或存储的对象必须实现Serializable接口,Seralizable接口中没有任何方法,仅仅作为一种标记,已被编译器做特殊处理。这两个类不会保存对象中的transient和static类型的成员变量,使用这两个读取对象的机制叫做序列化。注意:序列化的好处:可以将任何实现了Serializable接口的对象转换为连续的字
2017-03-09 09:32:36
332
转载 中间件
中间件就是伴随网络技术的产生、发展而兴起的,可以说没有网络就没有现代意义上的中间件。网络环境需要解决异构分布网络环境下软件系统的通信、互操作、协同、事务、安全等共性问题,提高异构分布网络环境下软件系统的互操作性、可移植性、适应性、可靠性等问题。JAVA提供了跨平台的通用的网络应用服务,成为今天中间件的核心技术。特别是J2EE发布以来,JAVA从一个编程语言,演变为网络应用架构,成为应用服务平台
2017-03-08 19:25:14
355
原创 java中的内部类
内部类有四种:静态内部类,成员内部类,局部内部类,匿名内部类class outerClass{ static class innerClass{}//静态内部类:不依赖于外部类实例而被实例化,与成员内部类的差别在于:通常的内部类需要在外部类实例化之后才能被实例化,(静态内部类不能和外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类的静态成员和静态方法(包括私有类型))
2017-03-08 13:49:46
197
原创 抽象类与接口的异同
相同:都不能被实例化;接口的实现类或抽象类的子类都只有实现了接口或者抽象类的方法后才能被实例化。不同:接口中只有方法的定义,不能有方法的实现;抽象类中既可以有方法的定义,也可以部分实现;一个类可以实现多个接口,但是只能继承一个抽象类;接口强调的是特定功能的实现,是一种“has a”关系;抽象类强调的是所属关系,是一种“is a”关系;接口中的成员变量默认的是“public static
2017-03-08 11:04:32
314
原创 java中重载和覆盖的区别
1、覆盖是子类与父类之间的关系,是一种垂直关系;重载是同一个类中方法之间的关系,是水平关系;2、覆盖只能由一个方法或者只能由一对方法产生关系;重载是多个方法之间的关系;3、覆盖要求参数列表要相同;重载要求参数列表不同4、覆盖关系中,调用方法体是根据对象的类型(对象对应存储空间类型)决定,重载是根据调用的时候实参表和形参表来选择方法
2017-03-08 10:05:21
4695
原创 java中方法的覆盖(多态实现的机制之一)
子类可以覆盖父类的方法,因此同样的方法会在父类与子类中有着不同的表现形式。java中,基类的引用变量不仅指向基类的实例对象,也可以指向其子类的实例对象。接口的引用变量可以指向其实现类的实例对象 。程序调用的方法在运行期才动态绑定(绑定指的是将一个方法调用和一个方法主体连接到一起),是指引用变量所指向的具体实例对象的方法,在内存里正在运行的那个对象的方法,不是引用变量的类型中定义的方法。
2017-03-07 14:33:36
1730
原创 java中组合与继承的区别和联系
组合是旨在新类中创建原有类的对象,重复利用已有类的功能;继承允许设计人员根据其他的类的实现来定义一个类的实现。继承和组合都允许在新的类中设置子对象,只不过组合是显式的,继承是隐式的。比如:存在三大类:交通工具、汽车car、轮子tire,汽车属于交通工具,之前是继承关系,汽车包含了多个轮子,是一种组合关系过多的继承也会破坏代码的可维护性,不要为了实现多态而使用继承,有时候也可以实现接口与组合
2017-03-07 11:15:07
395
原创 面向对象与面向过程的比较
面向对象是将数据以及对数据的操作方法放在一起,相互依存,称为对象。对同类对象抽象出共性,就是类。对象和对象之间是通过消息进行通信。面向过程是一种以事件为中心的开发方法,自顶向下顺序执行,程序结构是按功能划分为若干个基本模块,这些模块形成一个树形结构,功能上相对独立,每个模块都是由三种基本结构组成。面向对象和面向过程,前者是将事物进行对象化,后者是强调的过程,主要是过程的抽象化和模块化,
2017-03-07 10:59:44
430
原创 函数指针与回调函数
函数指针的功能是:实现回调函数;回调函数,主要是指函数先在某处注册,而它将在稍后的某个需要的时间被调用。什么是回调?开发人员想让系统动态链接库调用自己编写的一个方法,于是利用DLL当中回调函数的接口来编写程序,通过传递一个函数的指针来被调用。回调函数一般用于截获信息、获取系统信息或处理异步事件。函数的指针一般作为函数的参数来使用,在使用时可以根据自己的需求传递自定义的函数来实现指定的功
2017-03-07 10:45:32
232
原创 java中方法的重写的两同两小一大原则
方法名相同,参数类型相同子类返回类型小于等于父类方法返回类型,子类抛出异常小于等于父类方法抛出异常,子类访问权限大于等于父类方法访问权限。
2017-03-06 20:37:31
16535
原创 java中有关package的作用
1、提供多层的命名空间,解决命名冲突;(处于不同package中的类可以拥有相同的名字)2、对类按功能进行分类,使得项目的组织更加清楚当开发一个类非常多的项目的时候,如果不使用package对类进行分类,而是把所有的类都放在一个package下,代码的可读性比较差,维护性也比较差package主要是由一组类(class)和接口interface组成
2017-03-06 16:33:50
4724
原创 java中常见创建对象的方式有哪几种?
1、通过new语句实例化一个对象2、通过反射机制动态创建对象3、通过clone()创建对象4、通过反序列化的方式创建对象
2017-03-06 16:23:22
2640
原创 有关clone方法的使用注意
在C++语言中,当开发人员自定义复制构造函数时,会存在浅复制和深复制之分。java语言在重载clone()方法也是存在这个问题,当类中只有一些基本数据类型的时候,采用上述方法就可以,但是当类中包含一些对象时,就需要用到深复制了,实现的方法是:对对象调用clone()方法完成复制之后,接着对对象中的非基本数据类型的属性也调用clone()方法完成深复制。浅复制和深复制的区别?浅复
2017-03-06 15:49:55
810
原创 关于java中AWT和Swing之间的区别鱼联系?
AWT :是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。AWT 中的图形函数与 操作系统 所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT来构件图形用户界面的时候,我们实际上是在利用 操作系统 所提供的图形库。由于不同
2017-03-05 16:07:21
444
原创 java的反射机制说明
反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有方法和属性;对于任意一个对象,都能够调用它的任意方法和属性。
2017-03-05 16:06:32
160
原创 java中的构造器
java中的constructor是一种构造器,在创建对象时会被自动调用的特殊方法,目的就是为了初始化。构造器的名称应该与类的名称保持一致。当创建一个对象的时候,系统会为该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),将所有的引用类型设置为null构造器的作用可以改变默认的初始化。构造器的作用:就是创建java对象的重要途径,通过new关键字调
2017-03-04 14:30:18
263
原创 BufferInputStream与BufferOutputStream
对于I/O进行缓冲是一种常见的性能优化。缓冲流为I/O流增加了内存缓冲区。增加缓冲区的目的:(1)允许java的I/O一次不只操作一个字节,这样提高了整个系统的性能。(2)由于有了缓冲区,使得流上执行skip、mark和reset方法成为可能BufferInputStream类是可以对任何的InputStream进行带缓冲区的封装以达到性能的改善。通常缓冲区的大小是内存、磁盘扇区或
2017-03-04 14:11:04
1709
原创 二进制文件与文本文件的差别?
内存中的一个字节中数据可以是-128到127之间的任一值,实际上是以二进制形式存放的,文件就是一片内存的数据在硬盘上的另外一种形式,也就是二进制数据,所以每个文件都是二进制的。我们知道每个字符由一个或多个字节组成,每个字节都是用的-128到127之间的部分数值来表示的,也就是说,-128到127之间还有一些数据没有对应任何字符的任何字节。什么是文本文件?如果一个文件中的每个字节中的内容都是
2017-03-03 11:09:09
319
原创 为什么“-1”能作为判断文本文件结束的标志然而为什么不能作为二进制文件是否结束的标志?
在java中,由于没有编码为-1的字符,所以操作系统就使用-1作为硬盘上的每个文件的结束标志。这种使用“-1”作为判断文本文件的结束标志而不能作为判断二进制文件是否结束。尽管二进制文件的结尾标记也是-1,当程序读取到一个正好为-1的字节时,就难以偶按段是文件结尾还是文件中的有效数据。对于标准的二进制文件,在文件开始的部分,都有一个文件头指定文件的大小,程序就是凭借文件头中的
2017-03-03 10:51:03
1887
原创 在java开发过程中什么时候使用ByteArrayInputStream和ByteArrayOuitputStream?
这两个流的作用在于:用IO流的方式来完成对字节数组的读写。什么是内存虚拟文件或者内存映像文件?他们是将一块内存虚拟成一个硬盘上的文件,原来该写到硬盘文件上的内容会被写到这个内存中,原来改从一个硬盘文件上读取内容可以改为从内存中直接读取。(如果在程序运行过程中药产生过一些临时文件,就可以使用虚拟文件的方式来实现,不需要访问硬盘,而是直接访问内存)常见的应用:比如,我们的程序需要将
2017-03-03 10:04:06
3667
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人