java
文章平均质量分 76
Howard_14
这个作者很懒,什么都没留下…
展开
-
深入分析Java ClassLoader原理
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,转载 2017-02-20 15:28:36 · 337 阅读 · 0 评论 -
Java基础之- 强引用、弱引用、软引用、虚引用
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:[java] view plain copy print?Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryErr转载 2017-07-16 22:38:28 · 308 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
哈夫曼树哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。在这个二叉树中,只有叶子节点才是有效的数据节点,其他只是作为路径而构造的。带权路径长度又称WPL,树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度,即树中所有叶节点的带权路径长度之和。WPL= (W1*L1+W2*L2+W3*L3+...+Wn*Ln), N个权值Wi(i=1,2,...n)构成一原创 2017-09-22 22:15:47 · 1841 阅读 · 0 评论 -
浅谈Java泛型中的<? extends E>和<? super E>的区别
引入再说这个之前,先来看一段代码:假设有这么几个类及其继承关系,后面的例子也用这几个类作为基础示范class People { //人}class Man extends People { //男人}class Woman extends People { //女人}class Boy extends Man { //男孩}原创 2017-09-23 21:50:30 · 4081 阅读 · 4 评论 -
优雅的点
package com.howard.algorithm;import java.util.Scanner;/** * 优雅的点 * 时间限制:1秒 * 空间限制:32768K * 小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。 * 例如:半径的平方如果为25 *原创 2017-08-31 21:07:49 · 297 阅读 · 0 评论 -
数字翻转
package com.howard.algorithm;import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * [编程题] * 时间限制:1秒 * 空间限制:32768K * 对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如: * 如果 X原创 2017-08-31 21:11:05 · 367 阅读 · 0 评论 -
交错01串
package com.howard.algorithm.test;import java.util.Scanner;/** * [编程题] 交错01串 * 时间限制:1秒 * 空间限制:32768K * 如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。 * 小易现在有一个01串s,原创 2017-08-31 21:26:32 · 488 阅读 · 0 评论 -
java中创建对象的几种方法
这是前段时间在某本书上看到的文章,具体是什么书名我也忘了。只记得当时做了记录。最常见的就是通过new的方式来创建对象,这种方式通过调用构造方法来完成。除此之外,还有以下三种方式可以创建对象。方法1:通过调用对象的clone方法package com.howard.demo.constructobject;/** * 不通过new方式创建对象 方法1: * 调用对象的clone原创 2017-08-31 21:42:17 · 604 阅读 · 0 评论 -
最大奇约数
package com.howard.algorithm.test;import java.util.Scanner;/** * 小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. * 现在给出一个N,需要求出 f(1) + f(2) + f(3).......f(N) *原创 2017-08-31 22:05:48 · 374 阅读 · 0 评论 -
java中非静态内部类可以有常量但不能有staic修饰的属性
先看下面的代码:package com.howard.test;/** * java中非静态内部类不能有staic修饰的属性,但可以有常量 * 2017年9月12日 * @author hongwu */public class Test2 { public static void main(String[] args) { int a;原创 2017-09-20 23:24:02 · 679 阅读 · 0 评论 -
浅谈ArrayList动态扩容
环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList 性能相对Vector 会好些),它实现了Serializable接口,因此它支持序列化,能够通过序列化传输原创 2017-10-23 22:54:24 · 65868 阅读 · 25 评论 -
java中的fail-fast(快速失败)机制
引入在前面介绍ArrayList的扩容问题时对于modCount的操作没有详细说明,该变量的操作在add,remove等操作中都会发生改变。那么该变量到底有什么作用呢?简介fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentMo原创 2017-10-30 16:38:06 · 45962 阅读 · 18 评论 -
java中的代理模式(Proxy)
代理模式介绍什么是代理模式代理模式:为其他对象提供一种代理以控制对这个对象的访问; 代理模式的好处:在目标对象的基础上,去添加额外的功能操作,而不修改原先的业务方法。让业务方法去专注于自己的业务逻辑。代理模式让我们可以去扩展目标对象的功能。 通俗点,就是有个代理人去帮我们处理琐碎的事情。 代理模式的分类代理模式主要分为: 1、静态代理:由工具或者开发者手动生成代理源代码原创 2018-01-11 16:49:35 · 667 阅读 · 0 评论 -
继承和组合的区别
什么是继承继承是面向对象三大基本特征之一(继承,封装,多态),继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。在java中通过关键字extends实现继承,java中所有类默认都是java.lang.Object的子类。继承强调的是is-a关系。 直接通过例子来了解继承:/** * 动物 */pub...原创 2018-03-18 23:03:32 · 30552 阅读 · 10 评论 -
抽象类与接口的区别
什么是抽象类在java中,使用abstract修饰的类就是一个抽象类。如下就是一个抽象类:/** * 抽象类 */public abstract class A { /** * 抽象类中可以有成员变量,可以有常量 */ private int a; public int b; int c; String str; ...原创 2018-03-18 23:08:21 · 436 阅读 · 0 评论 -
mybatis执行insert实体后返回主键
有时候在使用mybatis进行插入数据时,希望可以在插入数据后返回该新插入数据的主键,可以通过如下两种方式实现:1、在insert标签里添加如下标签: SELECT LAST_INSERT_ID() AS id其中:keyProperty的值必须在实体里提供setter方法,这样返回的主键会自动赋值。2、通过为insert添加属性: us原创 2017-05-30 22:02:45 · 2363 阅读 · 0 评论 -
二叉树常见概念、性质、问题以及操作
参考书籍:数据结构C语言-严蔚敏、吴伟民 Java程序员面试宝典-何昊等参考链接:http://www.cnblogs.com/bmrs/archive/2010/08/19/SloveTree.html二叉树的基本概念度:结点所拥有的子树的数目称为该结点的度。叶结点:度为0的结点称为叶结点。分支结点:度不为0的结点称为分支结点。一个树除叶结点外,其余都是分支结点。原创 2017-04-22 21:24:41 · 868 阅读 · 0 评论 -
java注解简单讲解以及自定义注解例子
注解(Annotation)jdk5定义了4个标准的元注解。除了元注解,还有其它帮我们定义好的注解如@SuppressWarnings 当然我们也可以自定义注解@Target,@Retention,@Documented,@Inherited@Retention@Retention定义了该Annotation被保留的时间长短. 如:@Retention(Ret原创 2017-02-19 23:22:51 · 4770 阅读 · 0 评论 -
String、StringBuffer与StringBuilder的区别与联系
java编程中经常使用String,StringBuffer和StringBuilder或许仅常用其中一个,其实StringBuffer与StringBuilder的方法都差不多, 傻傻的并不能区分这两个有什么区别。最近偶遇到顺便查阅资料总结下。String、StringBuffer与StringBuilder1、可变与不可变String是不可变的。看下String的源码即可知。原创 2017-02-19 21:51:15 · 1509 阅读 · 0 评论 -
java的反射机制
什么是反射反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。套用别人的一句话说,反射就是将java类中的各种成分映射成相应的java类。反射的作用 判断一个对象的类 取出类的modifiers,数据成员,方法,构造器,和超类原创 2017-02-20 16:15:32 · 393 阅读 · 0 评论 -
java中的重写(override)与重载(overload)
重写(override)1、重写一般用于子类继承父类时,重写(重新实现)父类中的方法。2、重写方法的参数列表必须完全与被重写方法相同,否则则是重载(overload)3、重写方法的访问修饰符必须大于被重写的方法的修饰符。其中:public>protected>default>private (具体各修饰符的访问权限见下表)作用域当前类同包原创 2017-02-11 23:42:54 · 618 阅读 · 0 评论 -
java中的8种基本数据类型占的位数以及取值范围
java中有8种基本数据类型:byte、int、short、long、boolean、char、float、double对应的类为:Byte、Int、Short、Long、Boolean、Charecter、Float、Double其中:boolean是逻辑型,char是文本型,byte、short、int、long是整数型,float、double是浮点型byte:1字节 -128~原创 2017-02-24 17:10:20 · 7831 阅读 · 0 评论 -
java的equals和hashcode方法的区别和联系
List和Set都是集合Collection的两个类,但是它们又有不同,最主要的一点就是List允许加入两个相同的元素,而Set不允许加入两个相同的元素。那么它们内部究竟是怎么判断元素不同的呢?说到这,就有必要先了解java中Object的equals和hashcode方法了。由于Object是所有类的父类,所以java类默认都有这两个方法。一般我们在定义类的时候都不会覆盖它们,当然这没什原创 2017-02-24 21:29:06 · 550 阅读 · 0 评论 -
java异常处理机制
最近在复习java异常机制的时候,看到了网上的这篇博文,写得很好挺异常指全的,就懒得自己总结了1.Java异常 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,转载 2017-02-24 16:16:10 · 452 阅读 · 0 评论 -
java常用算法之排序算法
本篇介绍常用排序算法的java实现借用网上一幅图,排序算法分类如下:对于各个算法的时间复杂度和空间复杂度,借用网上的图如下:其中:选择排序算法本身是稳定的,用顺序结构实现时是不稳定的,用链表实现时是稳定的。 快速排序是平均速度最快的排序算法。 归并排序需要的辅助空间最多。堆排序需要的辅助空间最少。所谓不稳定,简单举个例子就是,原创 2017-02-26 15:44:46 · 411 阅读 · 0 评论 -
数据库事务、特性以及隔离级别
数据库的事务事务的基本概念所谓事务,是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分隔的工作单位。事务通常以bigin transaction开始,以commit或rollback结束。commit表示提交开启事务后的所有操作,即将事务中的所有对数据库的更新操作写回到物理磁盘中去,事务正常结束。rollback表示回滚,即在事务过程中发生了某些错误或原创 2017-03-24 22:22:17 · 317 阅读 · 0 评论 -
java8新特性之函数式接口、lambda表达式、接口的默认方法、方法和构造函数的引用
函数式接口 当接口里只有一个抽象方法的时候,就是函数式接口,可以使用注解(@FunctionalInterface)强制限定接口是函数式接口,即只能有一个抽象方法。例如:public interface Integerface1 { void test();}上面的接口只有一个抽象方法,则默认是函数式接口。interface Integerfa原创 2017-04-14 20:51:23 · 12979 阅读 · 2 评论 -
链表的常用操作(java实现)
参考书籍:数据结构c语言-严蔚敏、吴伟民 Java程序员面试宝典-何昊等结点:package com.Howard.test11.LinkedList;/** * 链表结点 * @author Howard * 2017年4月9日 */public class Node { Node next = null; int data; public Node(int da原创 2017-04-20 20:55:07 · 791 阅读 · 0 评论 -
给定一个整数,输出这个整数二进制表示中1的个数
参考书籍:计算机组成原理-蒋本珊 java程序员面试宝典-何昊等问题:给定一个数,输出这个数二进制表示中1的个数。package com.Howard.test11;/** * 给定一个整数 输出这个整数二进制表示中1的个数 * 例如:7二进制111 则输出3 * @author Howard * 2017年4月5日 */public class CountOne { /*原创 2017-04-09 00:04:01 · 1754 阅读 · 0 评论 -
求数组中两两相加等于某个数的组合种数
参考书籍:算法设计与分析基础 Java程序员面试宝典-何昊等package com.Howard.test11;import java.util.Arrays;/** * 求int数组中两两相加等于某个数的组合种数 * @author Howard * 2017年4月15日 */public class FindSumInArray { /** * 方法1: *原创 2017-04-20 21:01:29 · 5551 阅读 · 0 评论 -
判断一个数是否为2的n次方
参考书籍:算法设计与分析基础 Java程序员面试宝典-何昊等package com.Howard.test11;/** * 判断一个数是否为2的n次方 * @author Howard * 2017年4月15日 */public class IsPower { /** * 利用移位 这里的左移相当于乘以2 * 时间复杂度O(logn) * @param n原创 2017-04-20 21:06:49 · 2043 阅读 · 0 评论 -
浅谈HashMap
版本jdk1.7.0_06引入 HashMap是java中常用的集合类之一,几乎每个程序员都知道它,也会在不经意间使用到它。HashMap常会被用来与Hashtable和ConcurrentHashMap作比较。在弄清它们的区别前,首先应该了解下各个类底层究竟是怎么实现的。本文就来谈谈HashMap的实现原理。 HashMap在jdk1.7和jdk1.8的实现上有较大...原创 2019-05-19 16:02:19 · 513 阅读 · 0 评论